diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-20 21:46:15 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-20 21:46:15 +0100 |
| commit | 848390d9eb960175f4063cfe45a5fc2061116771 (patch) | |
| tree | 6b20199cd0f73faa2eaf16853d268bf6b0952eb3 /src | |
| parent | 2f89043b35a58afac2d731982cbb499cd4d06f5d (diff) | |
| download | box64-848390d9eb960175f4063cfe45a5fc2061116771.tar.gz box64-848390d9eb960175f4063cfe45a5fc2061116771.zip | |
[DYNAREC] Fixed and32 emitter and improved test32 emitter
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_emit_logic.c | 2 | ||||
| -rwxr-xr-x | src/dynarec/dynarec_arm64_emit_tests.c | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/dynarec/dynarec_arm64_emit_logic.c b/src/dynarec/dynarec_arm64_emit_logic.c index 141322db..d797a704 100755 --- a/src/dynarec/dynarec_arm64_emit_logic.c +++ b/src/dynarec/dynarec_arm64_emit_logic.c @@ -178,6 +178,8 @@ void emit_and32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3 BICw(xFlags, xFlags, s3); } IFX(X_ZF) { + CSETw(s3, cEQ); + BFIw(xFlags, s3, F_ZF, 1); } IFX(X_SF) { LSRxw(s3, s1, (rex.w)?63:31); diff --git a/src/dynarec/dynarec_arm64_emit_tests.c b/src/dynarec/dynarec_arm64_emit_tests.c index 4a6e62f8..7b981325 100755 --- a/src/dynarec/dynarec_arm64_emit_tests.c +++ b/src/dynarec/dynarec_arm64_emit_tests.c @@ -278,8 +278,8 @@ void emit_test32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s } else { SET_DFNONE(s4); } - IFX(X_ZF|X_CF|X_OF) { - MOV32w(s3, (1<<F_ZF)|(1<<F_CF)|(1<<F_OF)); + IFX(X_CF | X_AF | X_OF) { + MOV32w(s3, (1<<F_CF)|(1<<F_AF)|(1<<F_OF)); BICw(xFlags, xFlags, s3); } ANDSxw_REG(s3, s1, s2); // res = s1 & s2 @@ -287,8 +287,8 @@ void emit_test32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s STRxw_U12(s3, xEmu, offsetof(x64emu_t, res)); } IFX(X_ZF) { - Bcond(cNE, +8); - ORRw_mask(xFlags, xFlags, 0b011010, 0); // mask=0x40 + CSETw(s3, cEQ); + BFIw(xFlags, s3, F_ZF, 1); } IFX(X_SF) { LSRxw(s4, s3, rex.w?63:31); |