diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-06-23 12:04:42 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-06-23 12:04:42 +0200 |
| commit | b1ae5dc2b6335057305eb62b861c2eff166b8e0a (patch) | |
| tree | 93d8a1b249a242d32155b11465c9b9e563f04b36 /src | |
| parent | df228f88294361435c5bab26ef49c1bf8e33945e (diff) | |
| download | box64-b1ae5dc2b6335057305eb62b861c2eff166b8e0a.tar.gz box64-b1ae5dc2b6335057305eb62b861c2eff166b8e0a.zip | |
[ARM64_DYNAREC] Small optim on 0F BC/BD opcodes
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_0f.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index a3e86df2..3547b670 100644 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -2148,8 +2148,10 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin RBITxw(x1, ed); // reverse CLZxw(gd, x1); // x2 gets leading 0 == BSF MARK; - CSETw(x1, cEQ); //ZF not set - BFIw(xFlags, x1, F_ZF, 1); + IFX(X_ZF) { + CSETw(x1, cEQ); //ZF not set + BFIw(xFlags, x1, F_ZF, 1); + } break; case 0xBD: INST_NAME("BSR Gd, Ed"); @@ -2164,8 +2166,10 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin SUBxw_U12(gd, gd, rex.w?63:31); NEGxw_REG(gd, gd); // complement MARK; - CSETw(x1, cEQ); //ZF not set - BFIw(xFlags, x1, F_ZF, 1); + IFX(X_ZF) { + CSETw(x1, cEQ); //ZF not set + BFIw(xFlags, x1, F_ZF, 1); + } break; case 0xBE: INST_NAME("MOVSX Gd, Eb"); |