about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_660f.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c
index 006848d6..1e55437d 100755
--- a/src/dynarec/dynarec_arm64_660f.c
+++ b/src/dynarec/dynarec_arm64_660f.c
@@ -997,6 +997,26 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 LDRH_U12(gd, wback, u8*2);

             }

             break;

+        case 0xC6:

+            INST_NAME("SHUFPD Gx, Ex, Ib");

+            nextop = F8;

+            GETGX(v0);

+            GETEX(v1, 1);

+            u8 = F8;

+            if(v0==v1 && u8==0) {

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

+            } else {

+                if(v0==v1)

+                    q0 = fpu_get_scratch(dyn);

+                else

+                    q0 = v0;

+                VMOVeD(q0, 0, v0, (u8&1));

+                VMOVeD(q0, 1, v1, ((u8>>1)&1));

+                if(v0==v1) {

+                    VMOVQ(v0, q0);

+                }

+            }

+            break;

 

 

         case 0xD4: