-
- Downloads
RISC-V: Support RVV permutation auto-vectorization
This patch supports vector permutation for VLS only by vec_perm pattern. We will support TARGET_VECTORIZE_VEC_PERM_CONST to support VLA permutation in the future. Fixed following comments from Robin. gcc/ChangeLog: * config/riscv/autovec.md (vec_perm<mode>): New pattern. * config/riscv/predicates.md (vector_perm_operand): New predicate. * config/riscv/riscv-protos.h (enum insn_type): New enum. (expand_vec_perm): New function. * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto. (gen_const_vector_dup): Ditto. (emit_vlmax_gather_insn): Ditto. (emit_vlmax_masked_gather_mu_insn): Ditto. (expand_vec_perm): Ditto. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-1.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-2.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-3.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-4.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-5.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-6.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm-7.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm.h: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-1.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-2.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-3.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-4.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-5.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-6.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-7.c: New test.
Showing
- gcc/config/riscv/autovec.md 18 additions, 0 deletionsgcc/config/riscv/autovec.md
- gcc/config/riscv/predicates.md 4 additions, 0 deletionsgcc/config/riscv/predicates.md
- gcc/config/riscv/riscv-protos.h 2 additions, 0 deletionsgcc/config/riscv/riscv-protos.h
- gcc/config/riscv/riscv-v.cc 153 additions, 0 deletionsgcc/config/riscv/riscv-v.cc
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-1.c 58 additions, 0 deletions...testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-1.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-2.c 33 additions, 0 deletions...testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-2.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-3.c 29 additions, 0 deletions...testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-3.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-4.c 58 additions, 0 deletions...testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-4.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-5.c 49 additions, 0 deletions...testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-5.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-6.c 58 additions, 0 deletions...testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-6.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-7.c 49 additions, 0 deletions...testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm-7.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm.h 70 additions, 0 deletionsgcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm.h
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-1.c 104 additions, 0 deletions...suite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-1.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-2.c 32 additions, 0 deletions...suite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-2.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-3.c 20 additions, 0 deletions...suite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-3.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-4.c 104 additions, 0 deletions...suite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-4.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-5.c 137 additions, 0 deletions...suite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-5.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-6.c 104 additions, 0 deletions...suite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-6.c
- gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-7.c 135 additions, 0 deletions...suite/gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-7.c
Loading
Please register or sign in to comment