LGTM <pan2...@intel.com> 於 2025年6月14日 週六 22:38 寫道:
> From: Pan Li <pan2...@intel.com> > > This patch would like to introduce the combine of vec_dup + vmaxu.vv > into vmaxu.vx on the cost value of GR2VR. The late-combine will take > place if the cost of GR2VR is zero, or reject the combine if non-zero > like 1, 2, 15 in test. There will be two cases for the combine: > > Case 0: > | ... > | vmv.v.x > | L1: > | vmaxu.vv > | J L1 > | ... > > Case 1: > | ... > | L1: > | vmv.v.x > | vmaxu.vv > | J L1 > | ... > > Both will be combined to below if the cost of GR2VR is zero. > | ... > | L1: > | vmaxu.vx > | J L1 > | ... > > The below test suites are passed for this patch series. > * The rv64gcv fully regression test. > > Pan Li (3): > RISC-V: Combine vec_duplicate + vmaxu.vv to vmaxu.vx on GR2VR cost > RISC-V: Add test for vec_duplicate + vmaxu.vv combine case 0 with GR2VR > cost 0, 2 and 15 > RISC-V: Add test for vec_duplicate + vmaxu.vv combine case 1 with GR2VR > cost 0, 1 and 2 > > gcc/config/riscv/riscv-v.cc | 2 + > gcc/config/riscv/riscv.cc | 1 + > gcc/config/riscv/vector-iterators.md | 4 +- > .../riscv/rvv/autovec/vx_vf/vx-1-u16.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-1-u32.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-1-u64.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-1-u8.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-2-u16.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-2-u32.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-2-u64.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-2-u8.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-3-u16.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-3-u32.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-3-u64.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-3-u8.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-4-u16.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-4-u32.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-4-u64.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-4-u8.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-5-u16.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-5-u32.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-5-u64.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-5-u8.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-6-u16.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-6-u32.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-6-u64.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx-6-u8.c | 3 + > .../riscv/rvv/autovec/vx_vf/vx_binary.h | 10 + > .../riscv/rvv/autovec/vx_vf/vx_binary_data.h | 196 ++++++++++++++++++ > .../rvv/autovec/vx_vf/vx_vmax-run-1-u16.c | 17 ++ > .../rvv/autovec/vx_vf/vx_vmax-run-1-u32.c | 17 ++ > .../rvv/autovec/vx_vf/vx_vmax-run-1-u64.c | 17 ++ > .../rvv/autovec/vx_vf/vx_vmax-run-1-u8.c | 17 ++ > .../rvv/autovec/vx_vf/vx_vmax-run-2-u16.c | 17 ++ > .../rvv/autovec/vx_vf/vx_vmax-run-2-u32.c | 17 ++ > .../rvv/autovec/vx_vf/vx_vmax-run-2-u64.c | 17 ++ > .../rvv/autovec/vx_vf/vx_vmax-run-2-u8.c | 17 ++ > 37 files changed, 419 insertions(+), 2 deletions(-) > create mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u16.c > create mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u32.c > create mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u64.c > create mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u8.c > create mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u16.c > create mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u32.c > create mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u64.c > create mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u8.c > > -- > 2.43.0 > >