]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Fix double mode under RV32 not utilize vf
authordemin.han <demin.han@starfivetech.com>
Sun, 25 Aug 2024 21:53:58 +0000 (15:53 -0600)
committerJeff Law <jlaw@ventanamicro.com>
Sun, 25 Aug 2024 21:53:58 +0000 (15:53 -0600)
commit7f65c38ac1b18773d55c08d6ba920a798462b871
treec8e8c4bdcb993a10ecfd6b063757afc8171406f9
parentdba20679f1bf138ab5e61ad131b887db42083174
RISC-V: Fix double mode under RV32 not utilize vf

Currently, some binops of vector vs double scalar under RV32 can't
translated to vf but vfmv+vxx.vv.

The cause is that vec_duplicate is also expanded to broadcast for double mode
under RV32. last-combine can't process expanded broadcast.

gcc/ChangeLog:

* config/riscv/vector.md: Add !FLOAT_MODE_P constraint.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/binop/vadd-rv32gcv-nofm.c: Fix test.
* gcc.target/riscv/rvv/autovec/binop/vdiv-rv32gcv-nofm.c: Ditto.
* gcc.target/riscv/rvv/autovec/binop/vmul-rv32gcv-nofm.c: Ditto.
* gcc.target/riscv/rvv/autovec/binop/vsub-rv32gcv-nofm.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_copysign-rv32gcv.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fadd-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fadd-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fadd-3.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fadd-4.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-3.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-4.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-5.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-6.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmax-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmax-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmax-3.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmax-4.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmin-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmin-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmin-3.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmin-4.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-3.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-4.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-5.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-6.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmul-1.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmul-2.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmul-3.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmul-4.c: Ditto.
* gcc.target/riscv/rvv/autovec/cond/cond_fmul-5.c: Ditto.
33 files changed:
gcc/config/riscv/vector.md
gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vadd-rv32gcv-nofm.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vdiv-rv32gcv-nofm.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vmul-rv32gcv-nofm.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vsub-rv32gcv-nofm.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_copysign-rv32gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fadd-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fadd-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fadd-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fadd-4.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-4.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-5.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-6.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmax-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmax-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmax-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmax-4.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmin-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmin-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmin-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmin-4.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-4.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-5.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-6.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmul-1.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmul-2.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmul-3.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmul-4.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_fmul-5.c