From 06ff898fdc9e99fea609b58b2a943dcb1ee16b5e Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Wed, 8 Apr 2026 15:45:06 +0800 Subject: [PATCH] [INTERP] Fixed BEXTR opcode --- src/dynarec/la64/dynarec_la64_avx_0f38.c | 2 +- src/emu/x64runavx0f38.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/dynarec/la64/dynarec_la64_avx_0f38.c b/src/dynarec/la64/dynarec_la64_avx_0f38.c index 0ee3b9ee2..9323cd0e5 100644 --- a/src/dynarec/la64/dynarec_la64_avx_0f38.c +++ b/src/dynarec/la64/dynarec_la64_avx_0f38.c @@ -202,7 +202,7 @@ uintptr_t dynarec64_AVX_0F38(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, break; case 0xF7: - INST_NAME("BEXTR Gd, Vd, Ed"); + INST_NAME("BEXTR Gd, Ed, Vd"); nextop = F8; SETFLAGS(X_ALL, SF_SET, NAT_FLAGS_NOFUSION); GETGD; diff --git a/src/emu/x64runavx0f38.c b/src/emu/x64runavx0f38.c index 888cded32..202bcf05d 100644 --- a/src/emu/x64runavx0f38.c +++ b/src/emu/x64runavx0f38.c @@ -205,8 +205,7 @@ uintptr_t RunAVX_0F38(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) GD->dword[0] = (ED->dword[0]>>tmp32u)&tmp64u; else GD->dword[0] = 0; - if(MODREG) - GD->dword[1] = 0; + GD->dword[1] = 0; } ResetFlags(emu); CONDITIONAL_SET_FLAG(rex.w?(GD->q[0]==0):(GD->dword[0]==0), F_ZF);