diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-08-01 18:55:55 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-01 12:55:55 +0200 |
| commit | c2805b0f9bbf47642708a9d3e8d9aef472329470 (patch) | |
| tree | fb4e3db4b6d371416a9c7cec47027f1ee0c59a16 /src | |
| parent | 7e9775de9406dbae5dd43e2206a6a50655e16b8f (diff) | |
| download | box64-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.c | 4 |
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); |