diff options
Diffstat (limited to 'src/dynarec/arm64/dynarec_arm64_emit_math.c')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_emit_math.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_emit_math.c b/src/dynarec/arm64/dynarec_arm64_emit_math.c index d23dde0f..3a7cc285 100644 --- a/src/dynarec/arm64/dynarec_arm64_emit_math.c +++ b/src/dynarec/arm64/dynarec_arm64_emit_math.c @@ -363,7 +363,7 @@ void emit_add8c(dynarec_arm_t* dyn, int ninst, int s1, int c, int s3, int s4) SET_DFNONE(s3); } IFX(X_AF | X_OF) { - if(X_PEND) {} else {MOV32w(s4, c&0xff);} + IFX(X_PEND) {} else {MOV32w(s4, c&0xff);} ORRw_REG(s3, s1, s4); // s3 = op1 | op2 ANDw_REG(s4, s1, s4); // s4 = op1 & op2 } @@ -1766,10 +1766,9 @@ void emit_neg8(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); - } else { - NEGw_REG(s1, s1); + ANDSw_mask(s1, s1, 0, 7); // mask 0xff } IFX(X_PEND) { STRB_U12(s1, xEmu, offsetof(x64emu_t, res)); |