diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-10-29 15:19:38 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-10-29 15:19:38 +0100 |
| commit | 4a440b6f0ab7cf63ed8f19783579e037a9e5be5f (patch) | |
| tree | c614d6ae3e6b33111d2d3fa387b5c45f2a6ddbbe /src | |
| parent | fdfc5c4a419712953c1084fcdaf42af8895cd95b (diff) | |
| download | box64-4a440b6f0ab7cf63ed8f19783579e037a9e5be5f.tar.gz box64-4a440b6f0ab7cf63ed8f19783579e037a9e5be5f.zip | |
[ARM64_DYNAREC] Make sure neg on 16bits is correctly computed
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)); |