On 8/20/25 12:53 PM, Paul-Antoine Arras wrote:
This pattern enables the combine pass (or late-combine, depending on the case)
to merge a vec_duplicate into a mult RTL instruction.

Before this patch, we have two instructions, e.g.:
   vfmv.v.f       v2,fa0
   vfmul.vv       v1,v1,v2

After, we get only one:
   vfmul.vf       v2,v2,fa0

gcc/ChangeLog:

        * config/riscv/autovec-opt.md (*vfmul_vf_<mode>): Add new pattern to
        combine vec_duplicate + vfmul.vv into vfmul.vf.
        * config/riscv/vector.md (@pred_<optab><mode>_scalar): Allow VLS modes.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfmul.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c: Likewise.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h: New test.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h: New test.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_run.h: New test.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f16.c: New test.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f32.c: New test.
        * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f64.c: New test.
        * gcc.target/riscv/rvv/autovec/vls/floating-point-mul-2.c: Adjust scan
        dump.
        * gcc.target/riscv/rvv/autovec/vls/floating-point-mul-3.c: Likewise.
THanks.  I've pushed this to the trunk.

jeff

Reply via email to