On Thu, Oct 31, 2024 at 3:55 AM Anton Blanchard via Gcc <gcc@gcc.gnu.org> wrote:
>
> Hi,
>
> I think gcc is relying on undefined behaviour with the vcompress instruction.
> Unfortunately my test case isn't reproducing on mainline, but gcc looks to
> use the fields between the last mask selected field and vl while setting
> tail agnostic.
>
> This thread explains how vcompress is different in that the tail starts after
> the last mask selected field:
>
> https://github.com/riscvarchive/riscv-v-spec/issues/796
>
> There was a bug in QEMU that I just fixed that prevented the all 1s tail
> agnostic option (rvv_ta_all_1s) from poisoning these bits:
>
> https://lists.nongnu.org/archive/html/qemu-riscv/2024-10/msg00561.html
>
> With that fix, I see problems until I modify the previous setvli from ta to
> tu. I think 9aabf81f40f0 ("RISC-V: Optimize permutation codegen with
> compress") is one place we need to set tail undisturbed, but my fail is
> from an earlier checkout so there must be another issue in the tree.
>
> I presume the fix is to force all these vcompress cases to set tail
> undisturbed.

Or to zero, matching the masked behavior?

Please file a bugreport so this issue doesn't get lost.

Richard.

> Thanks,
> Anton

Reply via email to