RISC-V: Postpone full available optimization [VSETVL PASS]
commitef21ae5c45f3b79a36fadc1cb5723c095e2965ad
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>
Wed, 13 Dec 2023 05:48:11 +0000 (13 13:48 +0800)
committerPan Li <pan2.li@intel.com>
Wed, 13 Dec 2023 12:01:31 +0000 (13 20:01 +0800)
treefa5c9553bb50ee52d653ccf987a03504dd80981e
parent90be333ad515b6126ce6dfe37aff6eb6b442b4ed
RISC-V: Postpone full available optimization [VSETVL PASS]

Fix VSETVL BUG that AVL is polluted

.L15:
        li      a3,9
        lui     a4,%hi(s)
        sw      a3,%lo(j)(t2)
        sh      a5,%lo(s)(a4) <--a4 is hold the address of s
        beq     t0,zero,.L42
        sw      t5,8(t4)
        vsetvli zero,a4,e8,m8,ta,ma  <<--- a4 as avl

Actually, this vsetvl is redundant.
The root cause we include full available optimization in LCM local data computation.

full available optimization should be after LCM computation.

PR target/112929
PR target/112988

gcc/ChangeLog:

* config/riscv/riscv-vsetvl.cc
(pre_vsetvl::compute_lcm_local_properties): Remove full available.
(pre_vsetvl::pre_global_vsetvl_info): Add full available optimization.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/vsetvl/pr112929.c: New test.
* gcc.target/riscv/rvv/vsetvl/pr112988.c: New test.
gcc/config/riscv/riscv-vsetvl.cc
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112929.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112988.c [new file with mode: 0644]