diff options
| author | Yang Liu <numbksco@gmail.com> | 2024-05-21 00:12:38 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-20 18:12:38 +0200 |
| commit | 3fce669f6ef2d40a11127a7c5efb003d4a522aeb (patch) | |
| tree | a1317712fcbafa7d47a389ee1c41490f1b2bd56d /src | |
| parent | 8a701755d8679f2625a1f2c7ab153cab126b188e (diff) | |
| download | box64-3fce669f6ef2d40a11127a7c5efb003d4a522aeb.tar.gz box64-3fce669f6ef2d40a11127a7c5efb003d4a522aeb.zip | |
[LA64_DYNAREC] Fixed 66 0F 67 PACKUSWB opcode (#1508)
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_660f.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/dynarec/la64/dynarec_la64_660f.c b/src/dynarec/la64/dynarec_la64_660f.c index c9a55984..b25936bf 100644 --- a/src/dynarec/la64/dynarec_la64_660f.c +++ b/src/dynarec/la64/dynarec_la64_660f.c @@ -341,13 +341,18 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int nextop = F8; GETGX(v0, 1); GETEX(v1, 0, 0); + q0 = fpu_get_scratch(dyn); + VLDI(q0, 0b0010011111111); // broadcast 0xff as 16-bit elements to all lanes if (v0 == v1) { VMAXI_H(v0, v0, 0); + VMIN_H(v0, v0, q0); VPICKEV_B(v0, v0, v0); } else { q1 = fpu_get_scratch(dyn); VMAXI_H(v0, v0, 0); VMAXI_H(q1, v1, 0); + VMIN_H(v0, v0, q0); + VMIN_H(q1, q1, q0); VPICKEV_B(v0, q1, v0); } break; |