Add LOOP_VINFO_MAX_VECT_FACTOR
authorRichard Sandiford <richard.sandiford@linaro.org>
Thu, 14 Sep 2017 16:35:39 +0000 (16:35 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 14 Sep 2017 16:35:39 +0000 (16:35 +0000)
commita41a6142df74219f596e612d3a7775f68ca6e96f
tree55832f96a9e8fb31f553b1284c5fdc4d0dac5104
parentca09abcb399bcb8cddbda68c75e702cc8989a6ca
Add LOOP_VINFO_MAX_VECT_FACTOR

Epilogue vectorisation uses the vectorisation factor of the main loop
as the maximum vectorisation factor allowed for correctness.  That makes
sense as a conservatively correct value, since the chosen vectorisation
factor will be strictly less than that anyway.  However, once the VF
itself becomes variable, it's easier to carry across the original
maximum VF instead.

2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
(LOOP_VINFO_MAX_VECT_FACTOR): New macro.
(LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
(LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
* tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
accordingly.
* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
max_vectorization_factor.
(vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r252766
gcc/ChangeLog
gcc/tree-vect-data-refs.c
gcc/tree-vect-loop.c
gcc/tree-vectorizer.h