diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-05-27 13:07:01 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-05-27 13:07:01 +0200 |
| commit | da1cb42f2ac441da03b74dc37897838852d0ceee (patch) | |
| tree | ef066d002c5b7b71df75a8fbc61cdb7d769b629d | |
| parent | 2c366ef4bdc0c50bab053c4679dadce5ffe90005 (diff) | |
| download | box64-da1cb42f2ac441da03b74dc37897838852d0ceee.tar.gz box64-da1cb42f2ac441da03b74dc37897838852d0ceee.zip | |
[ARM64_DYNAREC] Fixed some pcmp[ei]stri flags
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_660f.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_660f.c b/src/dynarec/arm64/dynarec_arm64_660f.c index ade88377..5348ed4d 100644 --- a/src/dynarec/arm64/dynarec_arm64_660f.c +++ b/src/dynarec/arm64/dynarec_arm64_660f.c @@ -1369,28 +1369,29 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n BFIw(xFlags, x4, F_CF, 1); } IFX(X_ZF|X_SF) { - MOV32w(x4, 8); + MOV32w(x4, (u8&1)?8:16); IFX(X_ZF) { CMPSw_REG(x3, x4); - CSETw(x4, cLT); - BFIw(xFlags, x4, F_ZF, 1); + CSETw(x5, cLT); + BFIw(xFlags, x5, F_ZF, 1); } IFX(F_SF) { CMPSw_REG(x2, x4); - CSETw(x4, cLT); - BFIw(xFlags, x4, F_SF, 1); + CSETw(x5, cLT); + BFIw(xFlags, x5, F_SF, 1); } } IFX(X_OF) { BFIw(xFlags, x1, F_OF, 1); } IFX(X_AF) { - CMPSw_U12(x1, 0); + BFCw(wFlags, F_AF, 1); + /*CMPSw_U12(x1, 0); CSETw(x4, cEQ); CMPSw_U12(x3, (u8&1)?8:16); CSETw(x5, cEQ); ANDw_REG(x4, x4, x5); - BFIw(xFlags, x4, F_AF, 1); + BFIw(xFlags, x4, F_AF, 1);*/ } IFX(X_PF) { BFCw(xFlags, F_PF, 1); |