From 3fce669f6ef2d40a11127a7c5efb003d4a522aeb Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Tue, 21 May 2024 00:12:38 +0800 Subject: [LA64_DYNAREC] Fixed 66 0F 67 PACKUSWB opcode (#1508) --- src/dynarec/la64/dynarec_la64_660f.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') 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; -- cgit 1.4.1