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_avx_f3_0f.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c
index ccf8c5f7..1f753dc4 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c
@@ -209,8 +209,8 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             INST_NAME("VADDSS Gx, Vx, Ex");
             nextop = F8;
             d1 = fpu_get_scratch(dyn, ninst);
-            GETGX_empty_VX(v0, v2);
             GETEXSS(v1, 0, 0);
+            GETGX_empty_VX(v0, v2);
             if(v0!=v2) {
                 if(v0==v1)  {
                     VMOV(d1, v1);
@@ -226,8 +226,8 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             INST_NAME("VMULSS Gx, Vx, Ex");
             nextop = F8;
             d1 = fpu_get_scratch(dyn, ninst);
-            GETGX_empty_VX(v0, v2);
             GETEXSS(v1, 0, 0);
+            GETGX_empty_VX(v0, v2);
             if(v0!=v2) {
                 if(v0==v1)  {
                     VMOV(d1, v1);
@@ -243,8 +243,8 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             INST_NAME("VCVTSS2SD Gx, Vx, Ex");
             nextop = F8;
             d1 = fpu_get_scratch(dyn, ninst);
-            GETGX_empty_VX(v0, v2);
             GETEXSS(v1, 0, 0);
+            GETGX_empty_VX(v0, v2);
             if(v0!=v2) {
                 if(v0==v1)  {
                     VMOV(d1, v1);
@@ -289,16 +289,12 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             INST_NAME("VSUBSS Gx, Vx, Ex");
             nextop = F8;
             d1 = fpu_get_scratch(dyn, ninst);
-            GETGX_empty_VX(v0, v2);
             GETEXSS(v1, 0, 0);
+            GETGX_empty_VX(v0, v2);
+            FSUBS(d1, v2, v1);
             if(v0!=v2) {
-                if(v0==v1)  {
-                    VMOV(d1, v1);
-                    v1 = d1;
-                }
                 VMOVQ(v0, v2);
             }
-            FSUBS(d1, v0, v1);
             VMOVeS(v0, 0, d1, 0);
             YMM0(gd)
             break;
@@ -306,8 +302,8 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             INST_NAME("VMINSS Gx, Vx, Ex");
             nextop = F8;
             d1 = fpu_get_scratch(dyn, ninst);
-            GETGX_empty_VX(v0, v2);
             GETEXSS(v1, 0, 0);
+            GETGX_empty_VX(v0, v2);
             if(v0!=v2) {
                 if(v0==v1)  {
                     VMOV(d1, v1);
@@ -324,16 +320,12 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             INST_NAME("VDIVSS Gx, Vx, Ex");
             nextop = F8;
             d1 = fpu_get_scratch(dyn, ninst);
-            GETGX_empty_VX(v0, v2);
             GETEXSS(v1, 0, 0);
+            GETGX_empty_VX(v0, v2);
+            FDIVS(d1, v2, v1);
             if(v0!=v2) {
-                if(v0==v1)  {
-                    VMOV(d1, v1);
-                    v1 = d1;
-                }
                 VMOVQ(v0, v2);
             }
-            FDIVS(d1, v0, v1);
             VMOVeS(v0, 0, d1, 0);
             YMM0(gd)
             break;
@@ -341,8 +333,8 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             INST_NAME("VMAXSS Gx, Vx, Ex");
             nextop = F8;
             d1 = fpu_get_scratch(dyn, ninst);
-            GETGX_empty_VX(v0, v2);
             GETEXSS(v1, 0, 0);
+            GETGX_empty_VX(v0, v2);
             if(v0!=v2) {
                 if(v0==v1)  {
                     VMOV(d1, v1);