diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-03-14 18:30:40 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-03-14 18:30:50 +0100 |
| commit | 2fdf52afb83b2b09f152758e9ff84131bdaf6322 (patch) | |
| tree | e372c336c790787f01ac6c5e0b907611a891cbeb /src | |
| parent | a651cf33f4345dfda3a4e6071f5fcab978d5b6fb (diff) | |
| download | box64-2fdf52afb83b2b09f152758e9ff84131bdaf6322.tar.gz box64-2fdf52afb83b2b09f152758e9ff84131bdaf6322.zip | |
Added 66 0F 38 29 PCMPEQQ opcde ([ARM64_DYNAREC] too) (for #558)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/arm64/dynarec_arm64_660f.c | 8 | ||||
| -rw-r--r-- | src/emu/x64run660f.c | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_660f.c b/src/dynarec/arm64/dynarec_arm64_660f.c index 96fb223a..821d3ae0 100755 --- a/src/dynarec/arm64/dynarec_arm64_660f.c +++ b/src/dynarec/arm64/dynarec_arm64_660f.c @@ -412,6 +412,14 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n UQXTN2_16(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 0x30: INST_NAME("PMOVZXBW Gx, Ex"); // SSE4 opcode! nextop = F8; diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 91f54814..8bed5cbf 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -445,6 +445,14 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) GX->sq[i] = EX->sd[i]; break; + case 0x29: /* PCMPEQQ Gx, Ex */ + nextop = F8; + GETEX(0); + GETGX; + for(int i=1; i>=0; --i) + GX->sq[i] = (GX->sq[i]==EX->sq[i])?-1LL:0LL; + break; + case 0x2B: /* PACKUSDW Gx, Ex */ nextop = F8; GETEX(0); |