about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-24 16:58:26 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-24 16:58:26 +0100
commit0a02340e35370e6f08d32c85f09973412664ded4 (patch)
tree4ee5e45819ff647b66682c23a917126f200c56a5 /src
parent12ee624358632c25c6f891c5d4e7c9cf886d0798 (diff)
downloadbox64-0a02340e35370e6f08d32c85f09973412664ded4.tar.gz
box64-0a02340e35370e6f08d32c85f09973412664ded4.zip
[DYNAREC] Added 66 0F 12/13 opcodes
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_660f.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c
index b1e64b39..47b2e5a8 100755
--- a/src/dynarec/dynarec_arm64_660f.c
+++ b/src/dynarec/dynarec_arm64_660f.c
@@ -68,6 +68,30 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
     switch(opcode) {

 

 

+        case 0x12:

+            INST_NAME("MOVLPD Gx, Eq");

+            nextop = F8;

+            GETGX(v0);

+            if(MODREG) {

+                // access register instead of memory is bad opcode!

+                DEFAULT;

+                return addr;

+            }

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

+            VLD1_64(v0, 0, ed);

+            break;

+        case 0x13:

+            INST_NAME("MOVLPD Eq, Gx");

+            nextop = F8;

+            GETGX(v0);

+            if(MODREG) {

+                // access register instead of memory is bad opcode!

+                DEFAULT;

+                return addr;

+            }

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

+            VST1_64(v0, 0, ed);

+            break;

         case 0x14:

             INST_NAME("UNPCKLPD Gx, Ex");

             nextop = F8;