about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-22 20:44:57 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-22 20:44:57 +0100
commitfa039a1320ca895ef2ccdef9b9a795c01c5b440a (patch)
treeee8e1515228fa361988b511e437300a1e739a4f4 /src
parentcdaf19899e9760e225a53ddf67e446d671e2fc8b (diff)
downloadbox64-fa039a1320ca895ef2ccdef9b9a795c01c5b440a.tar.gz
box64-fa039a1320ca895ef2ccdef9b9a795c01c5b440a.zip
[DYNAREC] Added 66 0F 14/15 opcodes
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_660f.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c
index 5b230443..5d2c285d 100755
--- a/src/dynarec/dynarec_arm64_660f.c
+++ b/src/dynarec/dynarec_arm64_660f.c
@@ -65,6 +65,34 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
     switch(opcode) {

 

 

+        case 0x14:

+            INST_NAME("UNPCKLPD Gx, Ex");

+            nextop = F8;

+            GETGX(v0);

+            if(MODREG) {

+                v1 = sse_get_reg(dyn, ninst, x1, nextop&7);

+            } else {

+                addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff<<3, 7, rex, 0, 0);

+                v1 = fpu_get_scratch(dyn);

+                VLDR64_U12(v1, ed, fixedaddress);

+            }

+            VMOVeD(v0, 1, v1, 0);

+            break;

+        case 0x15:

+            INST_NAME("UNPCKHPD Gx, Ex");

+            nextop = F8;

+            GETGX(v0);

+            VMOVeD(v0, 0, v0, 1);

+            if(MODREG) {

+                v1 = sse_get_reg(dyn, ninst, x1, nextop&7);

+            } else {

+                addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff<<3, 7, rex, 0, 0);

+                v1 = fpu_get_scratch(dyn);

+                VLDR64_U12(v1, ed, fixedaddress);

+            }

+            VMOVeD(v0, 1, v1, 1);

+            break;

+

         case 0x1F:

             INST_NAME("NOP (multibyte)");

             nextop = F8;