258,260c258,280
< // A8-658
< // B6-27
< return new WarnUnimplemented("vmrs", machInst);
---
> const IntRegIndex rt =
> (IntRegIndex)(uint32_t)bits(machInst, 15, 12);
> uint32_t specReg = bits(machInst, 19, 16);
> switch (specReg) {
> case 0:
> specReg = MISCREG_FPSID;
> break;
> case 1:
> specReg = MISCREG_FPSCR;
> break;
> case 6:
> specReg = MISCREG_MVFR1;
> break;
> case 7:
> specReg = MISCREG_MVFR0;
> break;
> case 8:
> specReg = MISCREG_FPEXC;
> break;
> default:
> return new Unknown(machInst);
> }
> return new Vmrs(machInst, rt, (IntRegIndex)specReg);