On 7/31/24 9:55 AM, Robin Dapp wrote:
Hi,

in PR116149 we choose a wrong vector length which causes wrong values in
a reduction.  The problem happens in avlprop where we choose the
number of units in the instruction's mode as vector length.  For the
non-scalar variants the respective operand has the correct non-widened
mode.  For the scalar variants, however, the same operand has a scalar
mode which obviously only has one unit.  This makes us choose VL = 1
leaving three elements undisturbed (so potentially -1).  Those end up
in the reduction causing the wrong result.

This patch adjusts the mode_idx just for the scalar variants of the
affected instruction patterns.

Regards
  Robin

gcc/ChangeLog:

        PR target/116149

        * config/riscv/vector.md: Fix mode_idx attribute of scalar
        widen add/sub variants.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/rvv/autovec/pr116149.c: New test.
OK
jeff

Reply via email to