From 22b2f63917e0125567dd4a152c98a87ba27bd896 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Wed, 22 May 2024 23:51:54 +0200 Subject: [ARM64_DYNAREC] Small potential fix to D9 E5 opcode --- src/dynarec/arm64/dynarec_arm64_d9.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_d9.c b/src/dynarec/arm64/dynarec_arm64_d9.c index 8e3107b2..6c99871d 100644 --- a/src/dynarec/arm64/dynarec_arm64_d9.c +++ b/src/dynarec/arm64/dynarec_arm64_d9.c @@ -165,6 +165,12 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } // load tag LDRH_U12(x3, xEmu, offsetof(x64emu_t, fpu_tags)); + if(i2<0) { + LSLw_IMM(x3, x3, -i2*2); + } else if(i2>0) { + ORRw_mask(x3, x3, 0b010000, 0b001111); // 0xffff0000 + LSRw_IMM(x3, x3, i2*2); + } TSTw_mask(x3, 0, 1); // 0b11 B_MARK3(cNE); // empty: C3,C2,C0 = 101 // load x2 with ST0 anyway, for sign extraction -- cgit 1.4.1