On 9/12/25 3:35 PM, Raphael Moreira Zinsly wrote:
Improve shuffle_slide_patterns to better recognize permutations that
can be constructed by a slideup or slidedown, covering more cases:
Slideup one vector into the middle the other like
   {0, 4, 5, 3}.
Slidedown one vector not ending in the last element like
   {5, 6, 2, 3}.
Slidedown one vector from the beginning like
   {4, 5, 2, 3}.

gcc/ChangeLog:

        * riscv/riscv-v.c
        (shuffle_slide_patterns): Cover more permutations.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/rvv/autovec/shuffle-slide-run.h:
        New test.
        * gcc.target/riscv/rvv/autovec/shuffle-slidedown-run.c:
        Likewise.
        * gcc.target/riscv/rvv/autovec/shuffle-slideup-run.c:
        Likewise.
        * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slide.h:
        Likewise.
        * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slidedown-1.c:
        Likewise.
        * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slidedown-2.c:
        Likewise.
        * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slidedown-perm.h:
        Likewise.
        * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slideup-1.c:
        Likewise.
        * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slideup-2.c:
        Likewise.
        * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slideup-perm.h:
        Likewise.
Not a review. I threw this into my tester overnight, one regression popped out:

unix//-march=rv32gcv: gcc: 
gcc.target/riscv/rvv/autovec/struct/struct_vect_noseg_run-11.c execution test
unix//-march=rv32gcv: gcc: 
gcc.target/riscv/rvv/autovec/struct/struct_vect_noseg_run-2.c execution test
unix//-march=rv32gcv: gcc: 
gcc.target/riscv/rvv/autovec/struct/struct_vect_noseg_run-3.c execution test
unix//-march=rv32gcv: gcc: 
gcc.target/riscv/rvv/autovec/struct/struct_vect_noseg_run-5.c execution test
unix//-march=rv32gcv: gcc: 
gcc.target/riscv/rvv/autovec/struct/struct_vect_noseg_run-6.c execution test
unix//-march=rv32gcv: gcc: 
gcc.target/riscv/rvv/autovec/struct/struct_vect_noseg_run-7.c execution test
unix//-march=rv32gcv: gcc: 
gcc.target/riscv/rvv/autovec/struct/struct_vect_noseg_run-8.c execution test

Note that without the unix/-march=rv32gcv the execution test will be skipped.

Jeff

Reply via email to