about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_67.c22
-rw-r--r--src/emu/x64run670f.c13
2 files changed, 35 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c
index b1a657f1..04065e7a 100755
--- a/src/dynarec/arm64/dynarec_arm64_67.c
+++ b/src/dynarec/arm64/dynarec_arm64_67.c
@@ -166,6 +166,28 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             opcode=F8;

             switch(opcode) {

 

+                case 0x11:

+                    switch(rep) {

+                        case 0:

+                            INST_NAME("MOVUPS Ex,Gx");

+                            nextop = F8;

+                            GETG;

+                            v0 = sse_get_reg(dyn, ninst, x1, gd, 0);

+                            if(MODREG) {

+                                ed = (nextop&7)+(rex.b<<3);

+                                v1 = sse_get_reg_empty(dyn, ninst, x1, ed);

+                                VMOVQ(v1, v0);

+                            } else {

+                                addr = geted32(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<4, 15, rex, NULL, 0, 0);

+                                VST128(v0, ed, fixedaddress);

+                                SMWRITE2();

+                            }

+                            break;

+                        default:

+                            DEFAULT;

+                    }

+                    break;

+

                 case 0x2E:

                     // no special check...

                 case 0x2F:

diff --git a/src/emu/x64run670f.c b/src/emu/x64run670f.c
index 3627ed93..015b3712 100644
--- a/src/emu/x64run670f.c
+++ b/src/emu/x64run670f.c
@@ -51,6 +51,19 @@ uintptr_t Run670F(x64emu_t *emu, rex_t rex, int rep, uintptr_t addr)
 
     switch(opcode) {
 
+        case 0x11:
+            switch(rep) {
+                case 0:                      /* MOVUPS Ex,Gx */
+                    nextop = F8;
+                    GETEX32(0);
+                    GETGX;
+                    EX->u128 = GX->u128;
+                    break;
+                default:
+                    return 0;
+            }
+            break;
+
         case 0x2E:
             // same for now
         case 0x2F: