diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_0f.c | 32 | ||||
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_660f.c | 24 |
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); |