From 442d6a262be04c141fe7b0067fada77e5c0953f9 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Wed, 6 Aug 2025 16:41:22 +0800 Subject: [LA64_DYNAREC] Fixed 66 F3 0F B8 POPCNT opcode (#2905) --- src/dynarec/la64/dynarec_la64_66f30f.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/dynarec/la64/dynarec_la64_66f30f.c b/src/dynarec/la64/dynarec_la64_66f30f.c index f5446466..5ae96470 100644 --- a/src/dynarec/la64/dynarec_la64_66f30f.c +++ b/src/dynarec/la64/dynarec_la64_66f30f.c @@ -57,16 +57,17 @@ uintptr_t dynarec64_66F30F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, in v0 = fpu_get_scratch(dyn); VINSGR2VR_H(v0, ed, 0); VPCNT_H(v0, v0); - VPICKVE2GR_HU(gd, v0, 0); + VPICKVE2GR_HU(x2, v0, 0); + BSTRINS_D(gd, x2, 15, 0); IFX (X_ALL) { if (cpuext.lbt) { X64_SET_EFLAGS(xZR, X_ALL); - BNEZ_MARK(gd); + BNEZ_MARK(x2); ADDI_D(x5, xZR, 1 << F_ZF); X64_SET_EFLAGS(x5, X_ZF); } else { - CLEAR_FLAGS(x2); - BNEZ_MARK(gd); + CLEAR_FLAGS(x5); + BNEZ_MARK(x2); ORI(xFlags, xFlags, 1 << F_ZF); } MARK; -- cgit 1.4.1