From 15a4be2db14420b30de25a7386b4dab39be00ac2 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Tue, 24 Sep 2024 14:31:59 +0200 Subject: [ARM64_DYNAREC] Added 66 0F BF opcode (and cosmetic fix on interpreter) --- src/dynarec/arm64/dynarec_arm64_660f.c | 14 ++++++++++++++ src/emu/x64run660f.c | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_660f.c b/src/dynarec/arm64/dynarec_arm64_660f.c index c967374d..8a385ca4 100644 --- a/src/dynarec/arm64/dynarec_arm64_660f.c +++ b/src/dynarec/arm64/dynarec_arm64_660f.c @@ -2635,6 +2635,20 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } BFIx(gd, x1, 0, 16); break; + case 0xBF: + INST_NAME("MOVSX Gw, Ew"); + nextop = F8; + GETGW(x1); + if(MODREG) { + ed = xRAX+(nextop&7)+(rex.b<<3); + SXTHxw(gd, ed); + } else { + SMREAD(); + addr = geted(dyn, addr, ninst, nextop, &ed, x3, &fixedaddress, &unscaled, 0xfff<<1, 1, rex, NULL, 0, 0); + LDSHxw(gd, ed, fixedaddress); + } + GWBACK; + break; case 0xC1: INST_NAME("XADD Gw, Ew"); diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 35fd6eab..cc7ef8a2 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -2123,9 +2123,9 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) GETEW(0); GETGW; if(rex.w) - GW->sq[0] = EB->sword[0]; + GW->sq[0] = EW->sword[0]; else - GW->sword[0] = EB->sword[0]; + GW->sword[0] = EW->sword[0]; break; case 0xC1: /* XADD Gw,Ew */ // Xchange and Add -- cgit 1.4.1