diff options
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; |