RISC-V: Fix wrong vsetvli fusion for vmv.s.x
authorJu-Zhe Zhong <juzhe.zhong@rivai.ai>
Thu, 16 Mar 2023 08:55:42 +0000 (16:55 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Thu, 23 Mar 2023 03:14:12 +0000 (11:14 +0800)
commita481eed8fd01837cdf011ea9a17853505080a888
tree4e71203997d0433943b7bdef096a8cf1d798adc6
parent0e2715176df3787d1470d7b9bde26b1b5e16e1e2
RISC-V: Fix wrong vsetvli fusion for vmv.s.x

gcc/ChangeLog:

* config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
(pass_vsetvl::compute_local_backward_infos): Fix bugs.
(pass_vsetvl::need_vsetvl): Fix bugs.
(pass_vsetvl::backward_demand_fusion): Fix bugs.
(pass_vsetvl::demand_fusion): Fix bugs.
(eliminate_insn): Fix bugs.
(insert_vsetvl): Ditto.
(pass_vsetvl::emit_local_forward_vsetvls): Ditto.
* config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
* config/riscv/vector.md: Ditto.

gcc/testsuite/ChangeLog:

* g++.target/riscv/rvv/base/bug-10.C: New test.
* g++.target/riscv/rvv/base/bug-11.C: New test.
* g++.target/riscv/rvv/base/bug-12.C: New test.
* g++.target/riscv/rvv/base/bug-13.C: New test.
* g++.target/riscv/rvv/base/bug-14.C: New test.
* g++.target/riscv/rvv/base/bug-15.C: New test.
* g++.target/riscv/rvv/base/bug-16.C: New test.
* g++.target/riscv/rvv/base/bug-17.C: New test.
* g++.target/riscv/rvv/base/bug-2.C: New test.
* g++.target/riscv/rvv/base/bug-3.C: New test.
* g++.target/riscv/rvv/base/bug-4.C: New test.
* g++.target/riscv/rvv/base/bug-5.C: New test.
* g++.target/riscv/rvv/base/bug-6.C: New test.
* g++.target/riscv/rvv/base/bug-7.C: New test.
* g++.target/riscv/rvv/base/bug-8.C: New test.
* g++.target/riscv/rvv/base/bug-9.C: New test.

Signed-off-by: Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
Co-authored-by: kito-cheng <kito.cheng@sifive.com>
19 files changed:
gcc/config/riscv/riscv-vsetvl.cc
gcc/config/riscv/riscv-vsetvl.h
gcc/config/riscv/vector.md
gcc/testsuite/g++.target/riscv/rvv/base/bug-10.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-11.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-12.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-13.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-14.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-15.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-16.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-17.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-2.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-3.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-4.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-5.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-6.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-7.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-8.C [new file with mode: 0644]
gcc/testsuite/g++.target/riscv/rvv/base/bug-9.C [new file with mode: 0644]