about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_0f.c32
-rw-r--r--src/dynarec/arm64/dynarec_arm64_660f.c24
2 files changed, 12 insertions, 44 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c
index 400b7816..2754c1de 100644
--- a/src/dynarec/arm64/dynarec_arm64_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_0f.c
@@ -970,33 +970,17 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         VMOVeS(v0, 1, v1, 0);

                     }

                 } else if(u8==0x00) {

-                    // dumplicate lower 16bits to all spot

-                    if(v0!=v1) {

-                        VMOVeH(v0, 0, v1, 0);

-                    }

-                    VMOVeH(v0, 1, v1, 0);

-                    VMOVeS(v0, 1, v1, 0);

+                    // duplicate lower 16bits to all spot

+                    VDUP_16(v0, v1, 0);

                 } else if(u8==0x55) {

-                    // dumplicate 16bits slot 1 to all spot

-                    if(v0!=v1) {

-                        VMOVeH(v0, 1, v1, 1);

-                    }

-                    VMOVeH(v0, 0, v1, 1);

-                    VMOVeS(v0, 1, v1, 0);

+                    // duplicate 16bits slot 1 to all spot

+                    VDUP_16(v0, v1, 1);

                 } else if(u8==0xAA) {

-                    // dumplicate 16bits slot 2 to all spot

-                    if(v0!=v1) {

-                        VMOVeH(v0, 2, v1, 2);

-                    }

-                    VMOVeH(v0, 3, v1, 2);

-                    VMOVeS(v0, 0, v1, 1);

+                    // duplicate 16bits slot 2 to all spot

+                    VDUP_16(v0, v1, 2);

                 } else if(u8==0xFF) {

-                    // dumplicate 16bits slot 3 to all spot

-                    if(v0!=v1) {

-                        VMOVeH(v0, 3, v1, 3);

-                    }

-                    VMOVeH(v0, 2, v1, 3);

-                    VMOVeS(v0, 0, v1, 1);

+                    // duplicate 16bits slot 3 to all spot

+                    VDUP_16(v0, v1, 3);

                 } else if(v0!=v1) {

                     VMOVeH(v0, 0, v1, (u8>>(0*2))&3);

                     VMOVeH(v0, 1, v1, (u8>>(1*2))&3);

diff --git a/src/dynarec/arm64/dynarec_arm64_660f.c b/src/dynarec/arm64/dynarec_arm64_660f.c
index 20d71349..2d80e68d 100644
--- a/src/dynarec/arm64/dynarec_arm64_660f.c
+++ b/src/dynarec/arm64/dynarec_arm64_660f.c
@@ -1570,32 +1570,16 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                     }

                 } else if(u8==0x00) {

                     // duplicate lower 32bits to all spot

-                    if(v0!=v1) {

-                        VMOVeS(v0, 0, v1, 0);

-                    }

-                    VMOVeS(v0, 1, v1, 0);

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

+                    VDUPQ_32(v0, v1, 0);

                 } else if(u8==0x55) {

                     // duplicate slot 1 to all spot

-                    if(v0!=v1) {

-                        VMOVeS(v0, 1, v1, 1);

-                    }

-                    VMOVeS(v0, 0, v1, 1);

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

+                    VDUPQ_32(v0, v1, 1);

                 } else if(u8==0xAA) {

                     // duplicate slot 2 to all spot

-                    if(v0!=v1) {

-                        VMOVeS(v0, 2, v1, 2);

-                    }

-                    VMOVeS(v0, 3, v1, 2);

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

+                    VDUPQ_32(v0, v1, 2);

                 } else if(u8==0xFF) {

                     // duplicate slot 3 to all spot

-                    if(v0!=v1) {

-                        VMOVeS(v0, 3, v1, 3);

-                    }

-                    VMOVeS(v0, 2, v1, 3);

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

+                    VDUPQ_32(v0, v1, 3);

                 } else if(v0!=v1) {

                     VMOVeS(v0, 0, v1, (u8>>(0*2))&3);

                     VMOVeS(v0, 1, v1, (u8>>(1*2))&3);