]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Support floating-point vfwadd/vfwsub vv/wv combine lowering
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>
Wed, 28 Jun 2023 03:10:11 +0000 (11:10 +0800)
committerPan Li <pan2.li@intel.com>
Wed, 28 Jun 2023 03:15:21 +0000 (11:15 +0800)
commitd35702d90e559f20f6c17d55cb0276c4fc60766c
tree0fa424c279ecfb97ffe7cfa44615e6e0348365cf
parentc5703272e9e3d7dce0c45c52f1922daa77e436e8
RISC-V: Support floating-point vfwadd/vfwsub vv/wv combine lowering

Currently, vfwadd.wv is the pattern with (set (reg) (float_extend:(reg)) which makes
combine pass faile to combine.

change RTL format of vfwadd.wv ------> (set (float_extend:(reg) (reg)) so that combine
PASS can combine.

gcc/ChangeLog:

* config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
* config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
Remove.
(@pred_single_widen_add<mode>): New pattern.
(@pred_single_widen_sub<mode>): New pattern.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/widen/widen-1.c: Add floating-point.
* gcc.target/riscv/rvv/autovec/widen/widen-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/widen/widen-5.c: Ditto.
* gcc.target/riscv/rvv/autovec/widen/widen-6.c: Ditto.
* gcc.target/riscv/rvv/autovec/widen/widen-complicate-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/widen/widen-complicate-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/widen/widen_run-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/widen/widen_run-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/widen/widen_run-5.c: Ditto.
* gcc.target/riscv/rvv/autovec/widen/widen_run-6.c: Ditto.
* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-1.c: New test.
* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-2.c: New test.
* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-5.c: New test.
* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-6.c: New test.
16 files changed:
gcc/config/riscv/riscv-vector-builtins-bases.cc
gcc/config/riscv/vector.md
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-5.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-6.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run-5.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run-6.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-6.c [new file with mode: 0644]