about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2025-08-01 18:55:55 +0800
committerGitHub <noreply@github.com>2025-08-01 12:55:55 +0200
commitc2805b0f9bbf47642708a9d3e8d9aef472329470 (patch)
treefb4e3db4b6d371416a9c7cec47027f1ee0c59a16 /src
parent7e9775de9406dbae5dd43e2206a6a50655e16b8f (diff)
downloadbox64-c2805b0f9bbf47642708a9d3e8d9aef472329470.tar.gz
box64-c2805b0f9bbf47642708a9d3e8d9aef472329470.zip
[ARM64_DYNAREC] Fixed some edge cases for mmx PSRLQ (#2874)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_0f.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c
index a8779464..ecb48925 100644
--- a/src/dynarec/arm64/dynarec_arm64_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_0f.c
@@ -2721,8 +2721,10 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             GETGM(d0);

             GETEM(d1, 0);

             v0 = fpu_get_scratch(dyn, ninst);

+            v1 = fpu_get_scratch(dyn, ninst);

+            UQXTN_32(v1, d1);

             MOVI_32(v0, 64);

-            UMIN_32(v0, v0, d1);    // limit to 0 .. +64 values (will force 32bits upper part to 0)

+            UMIN_32(v0, v0, v1);    // limit to 0 .. +64 values

             NEG_32(v0, v0);

             UXTL_32(v0, v0);

             USHL_R_64(d0, d0, v0);