diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_emit_math.c | 5 |
1 files changed, 3 insertions, 2 deletions
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)); |