[PATCH] Fix epilogue vectorization niter more
Richard Biener
rguenther@suse.de
Mon Dec 3 15:36:00 GMT 2018
Previous patch exposes another issue with the code - LOOP_VINFO_INT_NITERS
is already adjusted for prologue peeling.
Bootstrap and regtest running on x86_64-unknown-linux-gnu.
Richard.
2018-12-03 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vect_transform_loop): Fix epilogue iterations
for epilogue vectorization.
Index: gcc/tree-vect-loop.c
===================================================================
--- gcc/tree-vect-loop.c (revision 266739)
+++ gcc/tree-vect-loop.c (working copy)
@@ -8542,13 +8500,13 @@ vect_transform_loop (loop_vec_info loop_
targetm.vectorize.autovectorize_vector_sizes (&vector_sizes);
unsigned int next_size = 0;
+ /* Note LOOP_VINFO_NITERS_KNOWN_P and LOOP_VINFO_INT_NITERS work
+ on niters already ajusted for the iterations of the prologue. */
if (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
- && LOOP_VINFO_PEELING_FOR_ALIGNMENT (loop_vinfo) >= 0
&& known_eq (vf, lowest_vf))
{
- unsigned int eiters
+ unsigned HOST_WIDE_INT eiters
= (LOOP_VINFO_INT_NITERS (loop_vinfo)
- - LOOP_VINFO_PEELING_FOR_ALIGNMENT (loop_vinfo)
- LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo));
eiters
= eiters % lowest_vf + LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo);
More information about the Gcc-patches
mailing list