]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
target/riscv: Fix vcompress with rvv_ta_all_1s
authorAnton Blanchard <antonb@tenstorrent.com>
Wed, 30 Oct 2024 04:35:38 +0000 (15:35 +1100)
committerMichael Tokarev <mjt@tls.msk.ru>
Tue, 5 Nov 2024 07:39:06 +0000 (10:39 +0300)
vcompress packs vl or less fields into vd, so the tail starts after the
last packed field. This could be more clearly expressed in the ISA,
but for now this thread helps to explain it:

https://github.com/riscv/riscv-v-spec/issues/796

Signed-off-by: Anton Blanchard <antonb@tenstorrent.com>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-ID: <20241030043538.939712-1-antonb@tenstorrent.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
(cherry picked from commit c128d39edeff337220fc536a3e935bcba01ecb49)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
target/riscv/vector_helper.c

index 10a52ceb5b182cfb2c00e7e24820a49b1bc77002..f32b1f86ee1aea79c74c8e248df4d7b80ccc69fe 100644 (file)
@@ -5130,7 +5130,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 */