https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126411

--- Comment #5 from Souradipto Das <souradiptodas6 at gmail dot com> ---
(In reply to Raphael M Zinsly from comment #3)
> (In reply to Souradipto Das from comment #2)
> > Created attachment 65147 [details]
> > [PATCH] RISC-V: Reject non-monotonic shuffle masks in slide patterns
> > 
> > Hi, I added checks so that intermediate elements conform to the expected
> > monotonic slide segments. I wasn't able to get a clean make check run
> > locally due to DejaGNU board-file configuration issues on my end (unrelated
> > to the patch itself) but i was able to verify that the patch holds its
> > effectiveness on this bug
> 
> This seems to work but I think you could do that without the loop as we
> already look for a monotonic sequence later, you could explicitly check if
> the beginning and end of the sequence corresponds to OP0 and OP1
> respectively (vlen - slideup_cnt and 2 * vlen - 1 - slideup_cnt). The
> current code assumes that but this is not guaranteed as this testcased
> caught. This could be checked in the same place as we look at the
> slideup_cnt positions.
> If you go this route you should also check for only one pivot by adding
> need_slideup_p in the second pivot check to be safe.

Thank you so much for the suggestions, I have updated the patch and re-verified
against the original reproducer with this revision: unpatched still reproduces
the bug (checksum 0x00 / abort) from the original testcase, patched gives the
correct result (checksum 0x46 / clean exit).

I'm running a fuller regression pass (full rvv.exp before/after diff via
qemu-user, plus a broader riscv.exp/vect.exp sweep) and will follow up with
those results too.

Reply via email to