diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-08-06 16:41:22 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-06 10:41:22 +0200 |
| commit | 442d6a262be04c141fe7b0067fada77e5c0953f9 (patch) | |
| tree | d4bb8ac6b454b82f935f847f5ab231266846ae27 /src | |
| parent | 47dbadb4d4856b9391b224ee5989904450c6945a (diff) | |
| download | box64-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.c | 9 |
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; |