From: Anton Blanchard Date: Mon, 14 Apr 2025 21:30:06 +0000 (+0000) Subject: target/riscv: Fix vslidedown with rvv_ta_all_1s X-Git-Tag: v10.0.1~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=95c0e6e06516ec4bd552a272663f493c6faf5151;p=thirdparty%2Fqemu.git target/riscv: Fix vslidedown with rvv_ta_all_1s vslidedown always zeroes elements past vl, where it should use the tail policy. Signed-off-by: Anton Blanchard Reviewed-by: Alistair Francis Message-ID: <20250414213006.3509058-1-antonb@tenstorrent.com> Signed-off-by: Alistair Francis Cc: qemu-stable@nongnu.org (cherry picked from commit 2669b696e243b64f8ea1a6468dcee255de99f08d) Signed-off-by: Michael Tokarev --- diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 67b3bafebb..1012d38c8a 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -5113,9 +5113,11 @@ void HELPER(NAME)(void *vd, void *v0, target_ulong s1, void *vs2, \ } \ \ for (i = i_max; i < vl; ++i) { \ - if (vm || vext_elem_mask(v0, i)) { \ - *((ETYPE *)vd + H(i)) = 0; \ + if (!vm && !vext_elem_mask(v0, i)) { \ + vext_set_elems_1s(vd, vma, i * esz, (i + 1) * esz); \ + continue; \ } \ + *((ETYPE *)vd + H(i)) = 0; \ } \ \ env->vstart = 0; \