The CI reported 2 failures but seems unrelated and passed locally, thus will commit this before the end of next Monday(6/30) if no more concerns.
> FAIL: gcc.dg/vect/pr115669.c -flto -ffat-lto-objects (test for excess errors) Executing on host: /home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/xgcc -B/home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/ /home/lipan/gnu-toolchain/gcc/gcc/testsuite/gcc.dg/vect/pr115669.c -fdiagnostics-plain-output -flto -ffat-lto-objects -mno-vector-strict-align -ftree-vectorize -fno-tree-loop-distribute-patterns -fno-vect-cost-model -fno-common -O2 -fdump-tree-vect-details -fwrapv -lm -o ./pr115669.exe (timeout = 600) spawn -ignore SIGHUP /home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/xgcc -B/home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/ /home/lipan/gnu-toolchain/gcc/gcc/testsuite/gcc.dg/vect/pr115669.c -fdiagnostics-plain-output -flto -ffat-lto-objects -mno-vector-strict-align -ftree-vectorize -fno-tree-loop-distribute-patterns -fno-vect-cost-model -fno-common -O2 -fdump-tree-vect-details -fwrapv -lm -o ./pr115669.exe PASS: gcc.dg/vect/pr115669.c -flto -ffat-lto-objects (test for excess errors) PASS: gcc.dg/vect/pr115669.c -flto -ffat-lto-objects execution test > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c -O0 (test for > excess errors) Executing on host: /home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/xgcc -B/home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/ /home/lipan/gnu-toolchain/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c -fdiagnostics-plain-output -O0 -mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o vlmax_complex_loop-1.s (timeout = 600) spawn -ignore SIGHUP /home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/xgcc -B/home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/ /home/lipan/gnu-toolchain/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c -fdiagnostics-plain-output -O0 -mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o vlmax_complex_loop-1.s PASS: gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c -O0 (test for excess errors) lipan@ibt-server-09:~/gnu-toolchain$ grep --color vlmax_complex_loop-1 build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/testsuite/gcc/gcc.log | grep "O0" --color Executing on host: /home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/xgcc -B/home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/ /home/lipan/gnu-toolchain/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c -fdiagnostics-plain-output -O0 -mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o vlmax_complex_loop-1.s (timeout = 600) spawn -ignore SIGHUP /home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/xgcc -B/home/lipan/gnu-toolchain/build/build-riscv64-unknown-elf-gcc-riscv64/build-gcc-stage2/gcc/ /home/lipan/gnu-toolchain/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c -fdiagnostics-plain-output -O0 -mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o vlmax_complex_loop-1.s PASS: gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c -O0 (test for excess errors) Pan -----Original Message----- From: Li, Pan2 <pan2...@intel.com> Sent: Friday, June 27, 2025 10:00 PM To: gcc-patches@gcc.gnu.org Cc: juzhe.zh...@rivai.ai; kito.ch...@gmail.com; jeffreya...@gmail.com; rdapp....@gmail.com; Chen, Ken <ken.c...@intel.com>; Liu, Hongtao <hongtao....@intel.com>; Li, Pan2 <pan2...@intel.com> Subject: [PATCH v3 0/4] RISC-V: Combine vec_duplicate + vssubu.vv to vssubu.vx on GR2VR cost From: Pan Li <pan2...@intel.com> This patch would like to introduce the combine of vec_dup + vssubu.vv into vssubu.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: | vssubu.vv | J L1 | ... Case 1: | ... | L1: | vmv.v.x | vssubu.vv | J L1 | ... Both will be combined to below if the cost of GR2VR is zero. | ... | L1: | vssubu.vx | J L1 | ... The below test suites are passed for this patch series. * The rv64gcv fully regression test. Pan Li (4): RISC-V: Combine vec_duplicate + vssubu.vv to vssubu.vx on GR2VR cost RISC-V: Reconcile the existing test due to cost model change RISC-V: Add test for vec_duplicate + vssubu.vv combine case 0 with GR2VR cost 0, 2 and 15 RISC-V: Add test for vec_duplicate + vssubu.vv combine case 1 with GR2VR cost 0, 1 and 2 gcc/config/riscv/riscv-v.cc | 1 + gcc/config/riscv/riscv.cc | 1 + gcc/config/riscv/vector-iterators.md | 2 +- .../autovec/sat/vec_sat_u_sub_trunc-1-u16.c | 2 +- .../autovec/sat/vec_sat_u_sub_trunc-1-u32.c | 2 +- .../autovec/sat/vec_sat_u_sub_trunc-1-u8.c | 2 +- .../riscv/rvv/autovec/vx_vf/vx-1-u16.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-1-u32.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-1-u64.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-1-u8.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-2-u16.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-2-u32.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-2-u64.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-2-u8.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-3-u16.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-3-u32.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-3-u64.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-3-u8.c | 1 + .../riscv/rvv/autovec/vx_vf/vx-4-u16.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-4-u32.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-4-u64.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-4-u8.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-5-u16.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-5-u32.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-5-u64.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-5-u8.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-6-u16.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-6-u32.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-6-u64.c | 2 + .../riscv/rvv/autovec/vx_vf/vx-6-u8.c | 2 + .../riscv/rvv/autovec/vx_vf/vx_binary.h | 18 +- .../riscv/rvv/autovec/vx_vf/vx_binary_data.h | 196 ++++++++++++++++++ .../rvv/autovec/vx_vf/vx_vssub-run-1-u16.c | 17 ++ .../rvv/autovec/vx_vf/vx_vssub-run-1-u32.c | 17 ++ .../rvv/autovec/vx_vf/vx_vssub-run-1-u64.c | 17 ++ .../rvv/autovec/vx_vf/vx_vssub-run-1-u8.c | 17 ++ 36 files changed, 323 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vssub-run-1-u16.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vssub-run-1-u32.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vssub-run-1-u64.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vssub-run-1-u8.c -- 2.43.0