From 4a440b6f0ab7cf63ed8f19783579e037a9e5be5f Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Tue, 29 Oct 2024 15:19:38 +0100 Subject: [ARM64_DYNAREC] Make sure neg on 16bits is correctly computed --- src/dynarec/arm64/dynarec_arm64_emit_math.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_emit_math.c b/src/dynarec/arm64/dynarec_arm64_emit_math.c index 4478b1ab..b443c312 100644 --- a/src/dynarec/arm64/dynarec_arm64_emit_math.c +++ b/src/dynarec/arm64/dynarec_arm64_emit_math.c @@ -1726,10 +1726,11 @@ void emit_neg16(dynarec_arm_t* dyn, int ninst, int s1, int s3, int s4) IFX(X_AF|X_OF) { MOVw_REG(s3, s1); } + NEGw_REG(s1, s1); IFX(X_ZF) { - NEGSw_REG(s1, s1); + ANDSw_mask(s1, s1, 0, 15); //mask=0xffff } else { - NEGw_REG(s1, s1); + ANDw_mask(s1, s1, 0, 15); //mask=0xffff } IFX(X_PEND) { STRH_U12(s1, xEmu, offsetof(x64emu_t, res)); -- cgit 1.4.1