about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-21 18:56:50 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-21 18:56:50 +0100
commit0751aed1f040d5596d37966732bccccc7bef7b2f (patch)
tree74ad027b093afee89ccc836b9b334648c33fbba6
parent4f2ed9ba621ff0d479523d5dabedbd4ab332533f (diff)
downloadbox64-0751aed1f040d5596d37966732bccccc7bef7b2f.tar.gz
box64-0751aed1f040d5596d37966732bccccc7bef7b2f.zip
[DYNAREC] Small optim on MOVD type SSE opcodes
-rwxr-xr-xsrc/dynarec/dynarec_arm64_660f.c4
-rwxr-xr-xsrc/dynarec/dynarec_arm64_f20f.c3
2 files changed, 3 insertions, 4 deletions
diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c
index 4ecb8f1c..de463681 100755
--- a/src/dynarec/dynarec_arm64_660f.c
+++ b/src/dynarec/dynarec_arm64_660f.c
@@ -135,10 +135,10 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             gd = ((nextop&0x38)>>3)+(rex.r<<3);

             GETED(0);

             v0 = sse_get_reg_empty(dyn, ninst, x1, gd);

-            VEORQ(v0, v0, v0); // RAZ vector

             if(rex.w) {

-                VMOVQDfrom(v0, 0, ed);

+                FMOVDx(v0, ed);

             } else {

+                VEORQ(v0, v0, v0); // RAZ vector

                 VMOVQSfrom(v0, 0, ed);

             }

             break;

diff --git a/src/dynarec/dynarec_arm64_f20f.c b/src/dynarec/dynarec_arm64_f20f.c
index 23a23be4..906f8bc8 100755
--- a/src/dynarec/dynarec_arm64_f20f.c
+++ b/src/dynarec/dynarec_arm64_f20f.c
@@ -80,8 +80,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 v0 = sse_get_reg_empty(dyn, ninst, x1, gd);

                 addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff<<3, 7, rex, 0, 0);

                 LDRx_U12(x2, ed, fixedaddress);

-                VEORQ(v0, v0, v0);

-                VMOVQDfrom(v0, 0, x2);

+                FMOVDx(v0, x2); // upper part reseted

             }

             break;

         case 0x11: