]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Support RVV floating-point auto-vectorization
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>
Wed, 21 Jun 2023 15:53:14 +0000 (23:53 +0800)
committerPan Li <pan2.li@intel.com>
Sat, 24 Jun 2023 14:40:36 +0000 (22:40 +0800)
commit0a3b1a095d451427571299fc78f29dec94c6931c
treee6e56e84130c4f6e3e49a6cd916180b4c2ce1c30
parent31b7659995caccca626709ecb634339f75980ff2
RISC-V: Support RVV floating-point auto-vectorization

This patch adds RVV floating-point auto-vectorization.
Also, fix attribute bug of floating-point ternary operations in vector.md.

gcc/ChangeLog:

* config/riscv/autovec.md (fma<mode>4): New pattern.
(*fma<mode>): Ditto.
(fnma<mode>4): Ditto.
(*fnma<mode>): Ditto.
(fms<mode>4): Ditto.
(*fms<mode>): Ditto.
(fnms<mode>4): Ditto.
(*fnms<mode>): Ditto.
* config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
New function.
* config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
* config/riscv/vector.md: Fix attribute bug.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/ternop/ternop-1.c: Adjust tests.
* gcc.target/riscv/rvv/autovec/ternop/ternop-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop-3.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop-4.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop-5.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop-6.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-3.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-4.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-5.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-6.c: Ditto.
* gcc.target/riscv/rvv/autovec/ternop/ternop-10.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop-11.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop-12.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop-7.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop-8.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop-9.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-10.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-11.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-12.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-7.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-8.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run-9.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c: New test.
* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c: New test.
40 files changed:
gcc/config/riscv/autovec.md
gcc/config/riscv/riscv-protos.h
gcc/config/riscv/riscv-v.cc
gcc/config/riscv/vector.md
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-4.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-5.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-6.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop-9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-4.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-5.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-6.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run-9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c [new file with mode: 0644]