diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-07-05 16:17:17 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-07-05 16:17:17 +0200 |
| commit | 28a2dba9f7abb2960497999e5a63e6f06c5786ab (patch) | |
| tree | 3cb7c0ab5a60f5fe092a2195ab03189634b52c32 /src | |
| parent | 4e7f86979da71ce851e3f2ad97e8052ede5270b1 (diff) | |
| download | box64-28a2dba9f7abb2960497999e5a63e6f06c5786ab.tar.gz box64-28a2dba9f7abb2960497999e5a63e6f06c5786ab.zip | |
Added F2 0F D0 opcode ([DYNAREC] too)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_f20f.c | 13 | ||||
| -rw-r--r-- | src/emu/x64runf20f.c | 10 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_f20f.c b/src/dynarec/dynarec_arm64_f20f.c index e2b01575..ef709d02 100755 --- a/src/dynarec/dynarec_arm64_f20f.c +++ b/src/dynarec/dynarec_arm64_f20f.c @@ -301,6 +301,19 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n VMOVQDfrom(v0, 0, x2); break; + case 0xD0: + INST_NAME("ADDSUBPS Gx, Ex"); + nextop = F8; + GETGX(v0); + GETEX(v1, 0); + q0 = fpu_get_scratch(dyn); + static float addsubps[4] = {-1.f, 1.f, -1.f, 1.f}; + MAYUSE(addsubps); + TABLE64(x2, (uintptr_t)&addsubps); + VLDR128_U12(q0, x2, 0); + VFMLAQS(v0, v1, q0); + break; + case 0xF0: INST_NAME("LDDQU Gx,Ex"); nextop = F8; diff --git a/src/emu/x64runf20f.c b/src/emu/x64runf20f.c index fafcce2c..766a69f8 100644 --- a/src/emu/x64runf20f.c +++ b/src/emu/x64runf20f.c @@ -229,6 +229,16 @@ int RunF20F(x64emu_t *emu, rex_t rex) GX->q[0]=(tmp8s)?0xffffffffffffffffLL:0LL; break; + case 0xD0: /* ADDSUBPS Gx, Ex */ + nextop = F8; + GETEX(0); + GETGX; + GX->f[0] -= EX->f[0]; + GX->f[1] += EX->f[1]; + GX->f[2] -= EX->f[2]; + GX->f[3] += EX->f[3]; + break; + case 0xD6: /* MOVDQ2Q Gm, Ex */ nextop = F8; GETEX(0); |