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_0f.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_0f.c b/src/dynarec/dynarec_arm64_0f.c
index 2704c1b3..0a204193 100755
--- a/src/dynarec/dynarec_arm64_0f.c
+++ b/src/dynarec/dynarec_arm64_0f.c
@@ -391,6 +391,30 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             }

             break;

 

+        case 0x3A:  // these are some more SSSE3 opcodes

+            opcode = F8;

+            switch(opcode) {

+                case 0x0F:

+                    INST_NAME("PALIGNR Gm, Em, Ib");

+                    nextop = F8;

+                    GETGM(q0);

+                    GETEM(q1, 1);

+                    u8 = F8;

+                    if(u8>15) {

+                        VEOR(q0, q0, q0);    

+                    } else if(u8>7) {

+                        d0 = fpu_get_scratch(dyn);

+                        VEOR(d0, d0, d0);

+                        VEXT_8(q0, q0, d0, u8-8);

+                    } else {

+                        VEXT_8(q0, q1, q0, u8);

+                    }

+                    break;

+                default:

+                    DEFAULT;

+            }

+            break;

+

         #define GO(GETFLAGS, NO, YES, F)            \

             READFLAGS(F);                           \

             GETFLAGS;                               \