Hi Jeff,

Yes, there are some tests fails after the last_combine pass introduced.
I remember these tests still have vv format which not become vf after 
last_combine.

I’ll update the testcase based on my local branch after your push.

Regards,
Demin

From: Jeff Law <jeffreya...@gmail.com>
Sent: 2024年8月26日 5:59
To: Demin Han <demin....@starfivetech.com>; gcc-patches@gcc.gnu.org
Cc: juzhe.zh...@rivai.ai; kito.ch...@gmail.com; pan2...@intel.com; 
rdapp....@gmail.com
Subject: Re: [PATCH] RISC-V: Fix double mode under RV32 not utilize vf



On Fri, Jul 19, 2024 at 12:07 PM Jeff Law 
<jeffreya...@gmail.com<mailto: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

Reply via email to