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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2024-09-20
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=116583
                 CC|                            |rsandifo at gcc dot gnu.org
             Status|UNCONFIRMED                 |NEW

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
I'm quite sure we didn't use SLP before r15-812-gc71886f2ca2 but the dump scan
was changed from expecting 1 instead of 2 times "vectorizing stmts using SLP".

We do end up vectorizing gcc.dg/vect/pr97428.c with load/store-lanes but
somehow
fail to see that store-lanes is valid with SLP and the 16 lane store.

We're using vec_mask_len_load_lanes<RVVM1x8DF><RVVM1DF> for the loads when
not using SLP but as well fail to find an array mode for RVVM1DF[16] and
use classical pow2 store interleaving (it generates awkward code).  We
try with the same store interleaving scheme for SLP but fail to handle the

   node 0x5a92170 (max_nunits=1, refcnt=1) vector([2,2]) double
   op: VEC_PERM_EXPR
        { }
        lane permutation { 0[0] 1[0] }
        children 0x5a91168 0x5a90f08
   node 0x5a91168 (max_nunits=2, refcnt=3) vector([2,2]) double

permutes on the store side - see PR116583 for a similar issue on the load
side though this (interleave even/odd) should be possibly easier to handle?



Btw, the gcc.target/riscv/rvv/autovec/struct/struct_vect-?.c tests are
just very fragile because they have -funroll-all-loops.  Currently I see
the following for rv64gcv on linux:

FAIL: gcc.target/riscv/rvv/autovec/struct/struct_vect-1.c scan-assembler-times
vsseg4e8\\.v 4
FAIL: gcc.target/riscv/rvv/autovec/struct/struct_vect-2.c scan-assembler-times
vsseg4e16\\.v 4
FAIL: gcc.target/riscv/rvv/autovec/struct/struct_vect-2.c scan-assembler-times
vsseg7e16\\.v 2
FAIL: gcc.target/riscv/rvv/autovec/struct/struct_vect-3.c scan-assembler-times
vsseg4e32\\.v 4
FAIL: gcc.target/riscv/rvv/autovec/struct/struct_vect-4.c scan-assembler-times
vsseg3e64\\.v 8
FAIL: gcc.target/riscv/rvv/autovec/struct/struct_vect-4.c scan-assembler-times
vsseg4e64\\.v 4
FAIL: gcc.target/riscv/rvv/autovec/struct/struct_vect-4.c scan-assembler-times
vsseg5e64\\.v 4
FAIL: gcc.target/riscv/rvv/autovec/struct/struct_vect-4.c scan-assembler-times
vsseg7e64\\.v 4
FAIL: gcc.target/riscv/rvv/autovec/struct/struct_vect-5.c scan-assembler-times
vsseg4e32\\.v 4

Reply via email to