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