about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2025-10-13 16:19:01 +0800
committerGitHub <noreply@github.com>2025-10-13 10:19:01 +0200
commit80610037cd41b1a613b08c74e17b43af9fd8d961 (patch)
tree39f9f976223d5b6868c38b1e9160696b59daeb9a
parentbbd22d76bed388be541dd160db15161300ea6306 (diff)
downloadbox64-80610037cd41b1a613b08c74e17b43af9fd8d961.tar.gz
box64-80610037cd41b1a613b08c74e17b43af9fd8d961.zip
[LA64_DYNAREC] Fixed some oversized load (#3065)
-rw-r--r--src/dynarec/la64/dynarec_la64_0f.c6
-rw-r--r--src/dynarec/la64/dynarec_la64_avx_66_0f38.c6
2 files changed, 8 insertions, 4 deletions
diff --git a/src/dynarec/la64/dynarec_la64_0f.c b/src/dynarec/la64/dynarec_la64_0f.c
index 39f1ac74..c0609dec 100644
--- a/src/dynarec/la64/dynarec_la64_0f.c
+++ b/src/dynarec/la64/dynarec_la64_0f.c
@@ -166,8 +166,10 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                 INST_NAME("MOVLPS Gx, Ex");
                 GETGX(v0, 1);
                 SMREAD();
-                GETEX(q1, 0, 0);
-                VEXTRINS_D(v0, q1, 0);
+                v1 = fpu_get_scratch(dyn);
+                addr = geted(dyn, addr, ninst, nextop, &ed, x2, x3, &fixedaddress, rex, NULL, 1, 0);
+                FLD_D(v1, ed, fixedaddress);
+                VEXTRINS_D(v0, v1, 0);
             }
             break;
         case 0x13:
diff --git a/src/dynarec/la64/dynarec_la64_avx_66_0f38.c b/src/dynarec/la64/dynarec_la64_avx_66_0f38.c
index 0a04c586..25fa1ca0 100644
--- a/src/dynarec/la64/dynarec_la64_avx_66_0f38.c
+++ b/src/dynarec/la64/dynarec_la64_avx_66_0f38.c
@@ -330,7 +330,8 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t i
         case 0x1A:
             INST_NAME("VBROADCASTF128 Gx, Ex");
             nextop = F8;
-            GETGY_empty_EY_xy(q0, q2, 0);
+            GETEYx(q2, 0, 0);
+            GETGYxy_empty(q0);
             XVREPLVE0_Q(q0, q2);
             break;
         case 0x1C:
@@ -787,7 +788,8 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t i
         case 0x5A:
             INST_NAME("VBROADCASTI128 Gx, Ex");
             nextop = F8;
-            GETGY_empty_EY_xy(q0, q2, 0);
+            GETEYx(q2, 0, 0);
+            GETGYxy_empty(q0);
             XVREPLVE0_Q(q0, q2);
             break;
         case 0x78: