about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2025-08-06 16:41:22 +0800
committerGitHub <noreply@github.com>2025-08-06 10:41:22 +0200
commit442d6a262be04c141fe7b0067fada77e5c0953f9 (patch)
treed4bb8ac6b454b82f935f847f5ab231266846ae27 /src
parent47dbadb4d4856b9391b224ee5989904450c6945a (diff)
downloadbox64-442d6a262be04c141fe7b0067fada77e5c0953f9.tar.gz
box64-442d6a262be04c141fe7b0067fada77e5c0953f9.zip
[LA64_DYNAREC] Fixed 66 F3 0F B8 POPCNT opcode (#2905)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/la64/dynarec_la64_66f30f.c9
1 files changed, 5 insertions, 4 deletions
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;