]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Support const vector expansion with step vector with base != 0
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>
Mon, 26 Jun 2023 12:18:04 +0000 (20:18 +0800)
committerPan Li <pan2.li@intel.com>
Tue, 27 Jun 2023 00:06:30 +0000 (08:06 +0800)
commit2d1a3629ba3034cc16599eafb530cdada426bab3
tree46e4c3b009739b4d9599ada2d5bcf7593b6c30ca
parent0aad1da62208078c04b373feb4cf90a0659eebc0
RISC-V: Support const vector expansion with step vector with base != 0

Currently, we are able to generate step vector with base == 0:
 { 0, 0, 2, 2, 4, 4, ... }

ASM:

vid
vand

However, we do wrong for step vector with base != 0:
{ 1, 1, 3, 3, 5, 5, ... }

Before this patch, such case will run fail.

After this patch, we are able to pass the testcase and generate the step vector with asm:

vid
vand
vadd

gcc/ChangeLog:

* config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
with base != 0.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/partial/slp-17.c: New test.
* gcc.target/riscv/rvv/autovec/partial/slp-18.c: New test.
* gcc.target/riscv/rvv/autovec/partial/slp-19.c: New test.
* gcc.target/riscv/rvv/autovec/partial/slp_run-17.c: New test.
* gcc.target/riscv/rvv/autovec/partial/slp_run-18.c: New test.
* gcc.target/riscv/rvv/autovec/partial/slp_run-19.c: New test.
gcc/config/riscv/riscv-v.cc
gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/slp-17.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/slp-18.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/slp-19.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/slp_run-17.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/slp_run-18.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/slp_run-19.c [new file with mode: 0644]