about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/dynarec/arm64/dynarec_arm64_6664.c15
-rw-r--r--src/emu/x64run6664.c8
2 files changed, 23 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_6664.c b/src/dynarec/arm64/dynarec_arm64_6664.c
index 0fe59473..8a616db6 100644
--- a/src/dynarec/arm64/dynarec_arm64_6664.c
+++ b/src/dynarec/arm64/dynarec_arm64_6664.c
@@ -82,6 +82,21 @@ uintptr_t dynarec64_6664(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 }
                 break;
 
+            case 0x7F:
+                INST_NAME("MOVDQA Ex,Gx");
+                nextop = F8;
+                GETGX(v0, 0);
+                if(MODREG) {
+                    v1 = sse_get_reg(dyn, ninst, x1, (nextop&7)+(rex.b<<3), 1);
+                    VMOVQ(v1, v0);
+                } else {
+                    grab_segdata(dyn, addr, ninst, x4, seg);
+                    addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
+                    VSTR128_REG(v0, ed, x4);
+                    SMWRITE2();
+                }
+                break;
+
                 default:
                     DEFAULT;
             }
diff --git a/src/emu/x64run6664.c b/src/emu/x64run6664.c
index 0331e532..6d937743 100644
--- a/src/emu/x64run6664.c
+++ b/src/emu/x64run6664.c
@@ -87,6 +87,14 @@ uintptr_t Run6664(x64emu_t *emu, rex_t rex, int seg, uintptr_t addr)
                         EX->q[1] = 0;

                     break;

 

+                case 0x7F:  /* MOVDQA Ex,Gx */

+                    nextop = F8;

+                    GETEX_OFFS(0, tlsdata);

+                    GETGX;

+                    EX->q[0] = GX->q[0];

+                    EX->q[1] = GX->q[1];

+                    break;

+

                 default:

                     return 0;

             }