Message ID | 20241030004146.935656-1-antonb@tenstorrent.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | target/riscv: Fix vcompress with rvv_ta_all_1s | expand |
On Wed, Oct 30, 2024 at 11:13 AM Anton Blanchard <antonb@tenstorrent.com> wrote: > > vcompress packs vl or less fields into vd, so the tail starts after the > last packed field. Is that right? It's different from every other vector command. Although the wording in the spec is very confusing Alistair
Hi Alistair, On Wed, Oct 30, 2024 at 2:39 PM Alistair Francis <alistair23@gmail.com> wrote: > > vcompress packs vl or less fields into vd, so the tail starts after the > > last packed field. > > Is that right? > > It's different from every other vector command. Although the wording > in the spec is very confusing It is confusing. This thread has some clarification, and we should probably follow up on the suggestion to improve the ISA wording: https://github.com/riscv/riscv-v-spec/issues/796 Thanks, Anton
On Wed, Oct 30, 2024 at 2:09 PM Anton Blanchard <antonb@tenstorrent.com> wrote: > > Hi Alistair, > > On Wed, Oct 30, 2024 at 2:39 PM Alistair Francis <alistair23@gmail.com> wrote: > > > vcompress packs vl or less fields into vd, so the tail starts after the > > > last packed field. > > > > Is that right? > > > > It's different from every other vector command. Although the wording > > in the spec is very confusing > > It is confusing. This thread has some clarification, and we should probably > follow up on the suggestion to improve the ISA wording: > > https://github.com/riscv/riscv-v-spec/issues/796 Ah, at least it isn't just me. It's worth pointing to that in the commit message, as the spec is not clear about this Alistair > > Thanks, > Anton
diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 072bd444b1..ccb32e6122 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -5132,7 +5132,7 @@ void HELPER(NAME)(void *vd, void *v0, void *vs1, void *vs2, \ } \ env->vstart = 0; \ /* set tail elements to 1s */ \ - vext_set_elems_1s(vd, vta, vl * esz, total_elems * esz); \ + vext_set_elems_1s(vd, vta, num * esz, total_elems * esz); \ } /* Compress into vd elements of vs2 where vs1 is enabled */
vcompress packs vl or less fields into vd, so the tail starts after the last packed field. Signed-off-by: Anton Blanchard <antonb@tenstorrent.com> --- target/riscv/vector_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)