From c66be063aa30b8ec8e3366fa7767596ef2ecc8bb Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 23 Jun 2024 20:22:02 +0200 Subject: Small improvment to 0F BC/BD opcodes ([ARM64_DYNAREC] too) --- src/dynarec/arm64/dynarec_arm64_0f.c | 8 ++++---- src/emu/x64run0f.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index 3547b670..545a9554 100644 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -2138,7 +2138,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin break; case 0xBC: INST_NAME("BSF Gd, Ed"); - SETFLAGS(X_ZF, SF_SUBSET); + SETFLAGS(X_ZF, SF_SET_DF); SET_DFNONE(x1); nextop = F8; GETED(0); @@ -2149,13 +2149,13 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin CLZxw(gd, x1); // x2 gets leading 0 == BSF MARK; IFX(X_ZF) { - CSETw(x1, cEQ); //ZF not set + CSETw(x1, cEQ); //other flags are undefined BFIw(xFlags, x1, F_ZF, 1); } break; case 0xBD: INST_NAME("BSR Gd, Ed"); - SETFLAGS(X_ZF, SF_SUBSET); + SETFLAGS(X_ZF, SF_SET_DF); SET_DFNONE(x1); nextop = F8; GETED(0); @@ -2167,7 +2167,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin NEGxw_REG(gd, gd); // complement MARK; IFX(X_ZF) { - CSETw(x1, cEQ); //ZF not set + CSETw(x1, cEQ); //other flags are undefined BFIw(xFlags, x1, F_ZF, 1); } break; diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c index 2a2c78cb..8aa634ae 100644 --- a/src/emu/x64run0f.c +++ b/src/emu/x64run0f.c @@ -1543,7 +1543,7 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step) } break; case 0xBC: /* BSF Ed,Gd */ - CHECK_FLAGS(emu); + RESET_FLAGS(emu); nextop = F8; GETED(0); GETGD; @@ -1570,7 +1570,7 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step) } break; case 0xBD: /* BSR Ed,Gd */ - CHECK_FLAGS(emu); + RESET_FLAGS(emu); nextop = F8; GETED(0); GETGD; -- cgit 1.4.1