diff --git a/src/dynarec/dynarec_arm_0f.c b/src/dynarec/dynarec_arm_0f.c index d38c26408e..70c80250cd 100755 --- a/src/dynarec/dynarec_arm_0f.c +++ b/src/dynarec/dynarec_arm_0f.c @@ -2332,7 +2332,13 @@ uintptr_t dynarec0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, GETEM(v1); VSUB_32(v0, v0, v1); break; - + case 0xFB: + INST_NAME("PSUBQ Gm,Em"); + nextop = F8; + GETGM(v0); + GETEM(q0); + VSUB_64(v0, v0, q0); + break; case 0xFC: INST_NAME("PADDB Gm, Em"); nextop = F8; diff --git a/src/emu/run0f.h b/src/emu/run0f.h index 13a8a366b0..708a06de08 100755 --- a/src/emu/run0f.h +++ b/src/emu/run0f.h @@ -1379,7 +1379,11 @@ for(int i=0; i<2; ++i) GM.sd[i] -= EM->sd[i]; NEXT; - + _0f_0xFB: /* PSUBQ Gm,Em */ + nextop = F8; + GET_EM; + GM.sq -= EM->sq; + NEXT; _0f_0xFC: /* PADDB Gm, Em */ nextop = F8; GET_EM; diff --git a/src/emu/x86run.c b/src/emu/x86run.c index 0018824ab9..28d78e18d3 100755 --- a/src/emu/x86run.c +++ b/src/emu/x86run.c @@ -131,7 +131,7 @@ int Run(x86emu_t *emu, int step) &&_0f_0xE0, &&_0f_0xE1, &&_0f_0xE2, &&_0f_0xE3, &&_0f_0xE4 ,&&_0f_0xE5, &&_default, &&_0f_0xE7, //0xE0-0xE7 &&_0f_0xE8, &&_0f_0xE9, &&_0f_0xEA, &&_0f_0xEB, &&_0f_0xEC ,&&_0f_0xED, &&_0f_0xEE, &&_0f_0xEF, //0xE8-0xEF &&_default, &&_0f_0xF1, &&_0f_0xF2, &&_0f_0xF3, &&_0f_0xF4 ,&&_0f_0xF5, &&_0f_0xF6, &&_0f_0xF7, //0xF0-0xF7 - &&_0f_0xF8, &&_0f_0xF9, &&_0f_0xFA, &&_default, &&_0f_0xFC ,&&_0f_0xFD, &&_0f_0xFE, &&_default //0xF8-0xFF + &&_0f_0xF8, &&_0f_0xF9, &&_0f_0xFA, &&_0f_0xFB, &&_0f_0xFC ,&&_0f_0xFD, &&_0f_0xFE, &&_default //0xF8-0xFF }; static const void* opcodes66[256] = {