aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/std
diff options
context:
space:
mode:
authorPaul-Antoine Arras <parras@baylibre.com>2025-06-04 14:51:17 +0200
committerPaul-Antoine Arras <parras@baylibre.com>2025-06-11 16:16:04 +0200
commit3ada458d344b13a49183278435d372fe9c7fef4b (patch)
tree69d52fb7c172a2ec42733fb234db3a9c617ef5e9 /libstdc++-v3/testsuite/std
parent9ae1af9fca4b354fe0b4d10eca3424a7471cf7b6 (diff)
downloadgcc-3ada458d344b13a49183278435d372fe9c7fef4b.zip
gcc-3ada458d344b13a49183278435d372fe9c7fef4b.tar.gz
gcc-3ada458d344b13a49183278435d372fe9c7fef4b.tar.bz2
RISC-V: Add patterns for vector-scalar negate-(multiply-add/sub) [PR119100]
This pattern enables the combine pass (or late-combine, depending on the case) to merge a vec_duplicate into a (possibly negated) minus-mult RTL instruction. Before this patch, we have two instructions, e.g.: vfmv.v.f v6,fa0 vfnmadd.vv v2,v6,v4 After, we get only one: vfnmadd.vf v2,fa0,v4 This also fixes a sign mistake in the handling of vfmsub. PR target/119100 gcc/ChangeLog: * config/riscv/autovec-opt.md (*<optab>_vf_<mode>): Only handle vfmadd and vfmsub. (*vfnmsub_<mode>): New pattern. (*vfnmadd_<mode>): New pattern. * config/riscv/riscv.cc (get_vector_binary_rtx_cost): Add cost model for NEG and VEC_DUPLICATE. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfnmadd and vfnmsub. * 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_mulop.h: Add support for neg variants. Fix sign for sub. * gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h: Add data for neg variants. Fix data for sub. * gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h: Rename x to f. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f16.c: Add neg argument. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f32.c: Likewise. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f64.c: Likewise. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f16.c: Likewise. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f32.c: Likewise. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f64.c: Likewise. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f16.c: New test. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f32.c: New test. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f64.c: New test. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f16.c: New test. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f32.c: New test. * gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f64.c: New test.
Diffstat (limited to 'libstdc++-v3/testsuite/std')
0 files changed, 0 insertions, 0 deletions