On Fri, Jul 19, 2024 at 12:07 PM Jeff Law <jeffreya...@gmail.com> wrote:
> > > On 7/19/24 2:55 AM, demin.han wrote: > > 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 constrain > > > > 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 > It looks like vadd-rv32gcv-nofm still isn't quite right according to the > pre-commit testing: > > > > > https://github.com/ewlu/gcc-precommit-ci/issues/1931#issuecomment-2238752679 > > > OK once that's fixed. No need to wait for another review cycle. > There's a reasonable chance late-combine was catching more cases that could be turned into .vf forms. That was pretty common when I first looked at the late-combine changes. Regardless, I adjusted the vadd/vsub tests and pushed this to the trunk. Thanks, jeff