diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-04-08 13:53:21 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-04-08 13:53:21 +0200 |
| commit | d9e907535e2c39aface40c3b19b87c529ab24961 (patch) | |
| tree | 866c5ea31b0c5d7512911c87336cae82fa716916 /src | |
| parent | d1426e85b32557cbd609f0f2bfd5721787b84de1 (diff) | |
| download | box64-d9e907535e2c39aface40c3b19b87c529ab24961.tar.gz box64-d9e907535e2c39aface40c3b19b87c529ab24961.zip | |
Added 66 0F 38 2A opcode ([ARM64_DYNAREC] too)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/arm64/dynarec_arm64_660f.c | 23 | ||||
| -rw-r--r-- | src/emu/x64run660f.c | 8 |
2 files changed, 21 insertions, 10 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_660f.c b/src/dynarec/arm64/dynarec_arm64_660f.c index d756738e..29225c85 100755 --- a/src/dynarec/arm64/dynarec_arm64_660f.c +++ b/src/dynarec/arm64/dynarec_arm64_660f.c @@ -512,7 +512,20 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } VSMULL_32(q0, q0, v0); break; - + case 0x29: + INST_NAME("PCMPEQQ Gx, Ex"); // SSE4 opcode! + nextop = F8; + GETEX(q1, 0, 0); + GETGX_empty(q0); + VCMEQQ_64(q0, q0, q1); + break; + case 0x2A: + INST_NAME("MOVNTDQA Gx, Ex"); + nextop = F8; + GETEX(q1, 0, 0); + GETGX(q0, 1); + VMOVQ(q0, q1); + break; case 0x2B: INST_NAME("PACKUSDW Gx, Ex"); // SSE4 opcode! nextop = F8; @@ -531,14 +544,6 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n } break; - case 0x29: - INST_NAME("PCMPEQQ Gx, Ex"); // SSE4 opcode! - nextop = F8; - GETEX(q1, 0, 0); - GETGX_empty(q0); - VCMEQQ_64(q0, q0, q1); - break; - case 0x30: INST_NAME("PMOVZXBW Gx, Ex"); // SSE4 opcode! nextop = F8; diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 7011ab6f..a0f7f6ae 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -513,7 +513,13 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) for(int i=1; i>=0; --i) GX->sq[i] = (GX->sq[i]==EX->sq[i])?-1LL:0LL; break; - + case 0x2A: /* MOVNTDQA Gx, Ex */ + nextop = F8; + GETEX(0); + GETGX; + GX->q[0] = EX->q[0]; + GX->q[1] = EX->q[1]; + break; case 0x2B: /* PACKUSDW Gx, Ex */ nextop = F8; GETEX(0); |