v2 Changes:
* PATCH 01/13 vect: Relax known iteration number constraint - Reject
early break vectorization of nested loops in
`vect_analyze_loop_form' and avoid trying to treat ill-formed
counted loops as uncounted.
* PATCH 02/13 vect: Make all exit conditions early breaks for
uncounted loops - s/*_iv_exit/*_main_exit/.
* PATCH 03/13 vect: Correct analysis of nested loops - Dropped.
* PATCH 04/13 vect: Extend `vec_init_loop_exit_info' to handle
uncounted loops - Reject any early-break exit loops, counted or
uncounted andy exit fails to satisfy the
`get_loop_exit_condition (exit)' condition.
* PATCH 05/13 vect: Add default types & retvals for uncounted loops
Replace uses of `size_t' with `sizetype'.
* PATCH 06/13 vect: guard niters manipulation with
`LOOP_VINFO_NITERS_UNCOUNTED_P' - No change.
* PATCH 07/13 vect: Disable niters-based skipping of uncounted
vectorized loops - Reorganize order of tests in `if' statement for
more efficient use of short-circuit evaluation.
* PATCH 08/13 vect: Reclassify early break fold left reductions as
simple reductions - Dropped.
* PATCH 09/13 vect: Fix uncounted PHI handling of
`slpeel_tree_duplicate_loop_to_edge_cfg' - Minor formatting fix.
* PATCH 10/13 vect: Correct resetting of live out values on epilog
loop entry - Independent of the series, to be submitted
independently.
* PATCH 11/13 vect: Disable use of partial vectors for uncounted
loops - Add missing comment.
* PATCH 12/13 vect: Reject uncounted loop vectorization where alias
analysis may fail - Reorder statements, fix diagnostic message
formatting.
* PATCH 13/13 vect: Add uncounted loop unit tests - Prolog peeling
test added.
- PATCH Prolog peeling patch v2 merged onto to this series - A simple
dummy exit is added as main exit, as opposed to duplicating the last
existing exit unnecessarily.
Victor Do Nascimento (14):
vect: Relax known iteration number constraint
vect: Make all exit conditions early breaks for uncounted loops
vect: Correct analysis of nested loops
vect: Extend `vec_init_loop_exit_info' to handle uncounted loops
vect: Add default types & retvals for uncounted loops
vect: guard niters manipulation with `LOOP_VINFO_NITERS_UNCOUNTED_P'
vect: Disable niters-based skipping of uncounted vectorized loops
vect: Reclassify early break fold left reductions as simple reductions
vect: Fix uncounted PHI handling of
`slpeel_tree_duplicate_loop_to_edge_cfg'
vect: Correct resetting of live out values on epilog loop entry
vect: Disable use of partial vectors for uncounted loops
vect: Reject uncounted loop vectorization where alias analysis may
fail
vect: Enable prolog peeling for uncounted loops
vect: Add uncounted loop unit tests
.../gcc.dg/gomp/static-chunk-size-one.c | 2 +-
.../gcc.dg/vect/vect-early-break_40.c | 3 +-
gcc/testsuite/gcc.dg/vect/vect-uncounted-1.c | 18 ++
gcc/testsuite/gcc.dg/vect/vect-uncounted-2.c | 16 ++
gcc/testsuite/gcc.dg/vect/vect-uncounted-3.c | 26 +++
gcc/testsuite/gcc.dg/vect/vect-uncounted-4.c | 17 ++
.../vect/vect-uncounted-prolog-peel-1.c | 23 ++
.../gcc.dg/vect/vect-uncounted-run-1.c | 42 ++++
gcc/tree-vect-data-refs.cc | 13 +-
gcc/tree-vect-loop-manip.cc | 210 ++++++++++++------
gcc/tree-vect-loop.cc | 133 ++++++++---
gcc/tree-vectorizer.cc | 2 +-
gcc/tree-vectorizer.h | 32 +--
13 files changed, 413 insertions(+), 124 deletions(-)
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-uncounted-1.c
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-uncounted-2.c
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-uncounted-3.c
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-uncounted-4.c
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-uncounted-prolog-peel-1.c
create mode 100644 gcc/testsuite/gcc.dg/vect/vect-uncounted-run-1.c
--
2.43.0