From: Andre Vieira <[email protected]>
Somewhat following richi's example of SLP cleanup, this patch series cleansup
SLP code for vectorizable_reduction and friends.
1) fold trivially true/false conditions based on the slp_node argument
without code block removal/reindent, etc.
2) do trivial dead code elimination
3) first steps in cleanup simple things - it's expected that the 'ncopies'
variable
vanishes (a vec_num one might remain), removed
'get_initial_def_for_reduction'. Not entirely sure what to do about
STMT_VINFO_VECTYPE.
4) folds loops that used ncopies and now no longer need to be loops
5) When trying to do 3, I could not remove the use of 'vec_stmt' for
vectorizable_lc_phi as that was needed to distinguish between 'analysis' and
'transformation', so in this step we split up vectorizable_lc_phi and create a
vect_transform_lc_phi, similar to other vectorizable_* and vect_transform_*.
6) Remove the gimple ** argument that is no longer needed from
vectorizable_lc_phi and vect_transform_lc_phi
The order of 5-6 relative to the rest could be changed, but I only noticed its
need after, happy to re-order and whether there are any objections to these all
being squashed together, there may be an argument for doing 5-6 as a separate
squashed patch.
I tested a version of these on x86_64-pc-linux-gnu, aarch64-none-linux-gnu and
arm-none-gnueabihf but made some minor changes since. I'll retest after
discussing some further changes around the STMT_VINFO_VECTYPE stuff.
Andre Vieira (6):
vect: Remove non-SLP path from vectorizable_reduction
vect: Remove non-SLP path from vectorizable_reduction
vect: Remove non-SLP path from vectorizable_reduction
vect: Remove non-SLP path from vectorizable_reduction
vect: Split vectorizable_lc_phi
vect: Split vectorizable_lc_phi
gcc/tree-vect-loop.cc | 728 ++++++++++++-----------------------------
gcc/tree-vect-stmts.cc | 10 +-
gcc/tree-vectorizer.h | 7 +-
3 files changed, 209 insertions(+), 536 deletions(-)
--
2.34.1