99,112c99,117
< switch (bits(opcode, 1, 0)) {
< case 0x0:
< return new VLdmStm(machInst, rn, vd, single,
< true, false, false, offset);
< case 0x1:
< return new VLdmStm(machInst, rn, vd, single,
< true, false, true, offset);
< case 0x2:
< return new VLdmStm(machInst, rn, vd, single,
< true, true, false, offset);
< case 0x3:
< // If rn == sp, then this is called vpop.
< return new VLdmStm(machInst, rn, vd, single,
< true, true, true, offset);
---
> {
> if (offset == 0 || vd + offset > NumFloatArchRegs) {
> break;
> }
> switch (bits(opcode, 1, 0)) {
> case 0x0:
> return new VLdmStm(machInst, rn, vd, single,
> true, false, false, offset);
> case 0x1:
> return new VLdmStm(machInst, rn, vd, single,
> true, false, true, offset);
> case 0x2:
> return new VLdmStm(machInst, rn, vd, single,
> true, true, false, offset);
> case 0x3:
> // If rn == sp, then this is called vpop.
> return new VLdmStm(machInst, rn, vd, single,
> true, true, true, offset);
> }