RISC-V: Refine Phase 3 of VSETVL PASS
authorJu-Zhe Zhong <juzhe.zhong@rivai.ai>
Wed, 4 Jan 2023 13:45:26 +0000 (21:45 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Thu, 26 Jan 2023 19:10:08 +0000 (03:10 +0800)
commit387cd9d37950a93225f19bc4054e45638dd7d29a
tree7605cff22c043f09e61c4ae7659bcc7af1944d1f
parentcca9c44eca42d71ef20fc00a261616ba66edd089
RISC-V: Refine Phase 3 of VSETVL PASS

gcc/ChangeLog:

* config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
(vector_insn_info::set_demand_info): New function.
(pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
(pass_vsetvl::merge_successors): Ditto.
(pass_vsetvl::compute_global_backward_infos): Ditto.
(pass_vsetvl::backward_demand_fusion): Ditto.
(pass_vsetvl::forward_demand_fusion): Ditto.
(pass_vsetvl::demand_fusion): New function.
(pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
* config/riscv/riscv-vsetvl.h: New function declaration.

gcc/testsuite/ChangeLog:
* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-27.c: Update
testcase.
* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-28.c: Ditto.
* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-45.c: Ditto.
* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-25.c: Ditto.
* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-26.c: Ditto.
* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-27.c: Ditto.
* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-28.c: Ditto.
* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-3.c: Ditto.
* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-7.c: Ditto.
* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-12.c: Ditto.
12 files changed:
gcc/config/riscv/riscv-vsetvl.cc
gcc/config/riscv/riscv-vsetvl.h
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-27.c
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-28.c
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-45.c
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-25.c
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-26.c
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-27.c
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-28.c
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-3.c
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-7.c
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-12.c