aboutsummaryrefslogtreecommitdiff
path: root/libcpp/init.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-11-02 12:38:04 +0100
committerRichard Biener <rguenther@suse.de>2020-11-02 15:58:14 +0100
commite881774d0dda6d5127eb8f0642f6edc16dc0b1e7 (patch)
tree246429551c79f231c1b41f6cf035e478fdc00452 /libcpp/init.c
parent86deadf8d3ac55b3cd07e15d4e83e3b6ccd9ee81 (diff)
downloadgcc-e881774d0dda6d5127eb8f0642f6edc16dc0b1e7.zip
gcc-e881774d0dda6d5127eb8f0642f6edc16dc0b1e7.tar.gz
gcc-e881774d0dda6d5127eb8f0642f6edc16dc0b1e7.tar.bz2
Rewrite SLP induction vectorization
This rewrites SLP induction vectorization to handle different inductions in the different SLP lanes. It also changes SLP build to represent the initial value (but not the cycle) so it can be enhanced to handle outer loop vectorization later. Note this FAILs gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c because it removes one CSE optimization that no longer works with non-uniform initial value and step. I'll see to recover from this after outer loop vectorization of inductions works. It might be a bit friendlier to variable-size vectors now but then we're now building the step vector from scalars ... 2020-11-02 Richard Biener <rguenther@suse.de> * tree.h (build_real_from_wide): Declare. * tree.c (build_real_from_wide): New function. * tree-vect-slp.c (vect_build_slp_tree_2): Remove restriction on induction vectorization, represent the initial value. * tree-vect-loop.c (vect_model_induction_cost): Inline ... (vectorizable_induction): ... here. Rewrite SLP code generation. * gcc.dg/vect/slp-49.c: New testcase.
Diffstat (limited to 'libcpp/init.c')
0 files changed, 0 insertions, 0 deletions