diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-02-07 19:32:05 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-07 12:32:05 +0100 |
| commit | 2bf78ea18cf9985eecaebf9ddf5ac4aa4b53a015 (patch) | |
| tree | 9e358cf85339b03b9cd2ccd8b4101ece62953916 /src | |
| parent | fc6efb220b3de189e64c1d6e9f7e756d7783048e (diff) | |
| download | box64-2bf78ea18cf9985eecaebf9ddf5ac4aa4b53a015.tar.gz box64-2bf78ea18cf9985eecaebf9ddf5ac4aa4b53a015.zip | |
[LA64_DYNAREC] Added more 66 0F 38 opcodes (#2322)
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_660f.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/dynarec/la64/dynarec_la64_660f.c b/src/dynarec/la64/dynarec_la64_660f.c index 5b6055cc..ccb36ad6 100644 --- a/src/dynarec/la64/dynarec_la64_660f.c +++ b/src/dynarec/la64/dynarec_la64_660f.c @@ -381,6 +381,18 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int XVSRLNI_H_W(v0, v0, 1); XVPERMI_D(q0, v0, 0b1000); break; + case 0x14: + INST_NAME("BLENDVPS Gx,Ex"); + nextop = F8; + GETGX(q0, 1); + GETEX(q1, 0, 0); + v0 = sse_get_reg(dyn, ninst, x1, 0, 0); // XMM0 + v1 = fpu_get_scratch(dyn); + if (q0 != q1) { + VSRA_W(v1, v0, 31); + VBITSEL_V(q0, q0, q1, v1); + } + break; case 0x17: INST_NAME("PTEST Gx, Ex"); nextop = F8; @@ -437,6 +449,13 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int VXOR_V(v0, v0, v0); VABSD_H(q0, q1, v0); break; + case 0x1E: + INST_NAME("PABSD Gx,Ex"); + nextop = F8; + GETEX(q1, 0, 0); + GETGX_empty(q0); + VSIGNCOV_W(q0, q1, q1); + break; case 0x2B: INST_NAME("PACKUSDW Gx, Ex"); // SSE4 opcode! nextop = F8; |