about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-04-30 17:50:44 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-04-30 17:50:44 +0200
commit56982e4c057f86825052ffb1db14209d800193d1 (patch)
treeeb2b8ab5cb9fce41eaa644d0240e8ddd8c26a8ab /src
parentf5e93a14a2a9a7af56ad3685000c0f4d6df04a88 (diff)
downloadbox64-56982e4c057f86825052ffb1db14209d800193d1.tar.gz
box64-56982e4c057f86825052ffb1db14209d800193d1.zip
[ARM64_DYNAREC] Small rework on VFMAD*S[S/D] opcodes
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c b/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c
index 05732a8b..c660e243 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c
@@ -1547,12 +1547,13 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip
             nextop = F8;
             GETGX(v0, 1);
             GETVX(v2, 0);
-            if(rex.w) {GETEXSD(v1, 0, 0);} else {GETEXSS(v1, 0, 0);}
             q0 = fpu_get_scratch(dyn, ninst);
             if(rex.w) {
+                GETEXSD(v1, 0, 0);
                 FMADD_64(q0, v2, v1, v0);
                 VMOVeD(v0, 0, q0, 0);
             } else {
+                GETEXSS(v1, 0, 0);
                 FMADD_32(q0, v2, v1, v0);
                 VMOVeS(v0, 0, q0, 0);
             }
@@ -1670,12 +1671,13 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip
             nextop = F8;
             GETGX(v0, 1);
             GETVX(v2, 0);
-            if(rex.w) {GETEXSD(v1, 0, 0);} else {GETEXSS(v1, 0, 0);}
             q0 = fpu_get_scratch(dyn, ninst);
             if(rex.w) {
+                GETEXSD(v1, 0, 0);
                 FMADD_64(q0, v1, v0, v2);
                 VMOVeD(v0, 0, q0, 0);
             } else {
+                GETEXSS(v1, 0, 0);
                 FMADD_32(q0, v1, v0, v2);
                 VMOVeS(v0, 0, q0, 0);
             }
@@ -1842,12 +1844,13 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip
             nextop = F8;
             GETGX(v0, 1);
             GETVX(v2, 0);
-            if(rex.w) {GETEXSD(v1, 0, 0);} else {GETEXSS(v1, 0, 0);}
             q0 = fpu_get_scratch(dyn, ninst);
             if(rex.w) {
+                GETEXSD(v1, 0, 0);
                 FMADD_64(q0, v0, v1, v2);
                 VMOVeD(v0, 0, q0, 0);
             } else {
+                GETEXSS(v1, 0, 0);
                 FMADD_32(q0, v0, v1, v2);
                 VMOVeS(v0, 0, q0, 0);
             }