Hi,
I just noticed today that (implicit) loops of the kind
xmin = minval(nodes(1,inductor_number(1:number_of_nodes)))
(lines 5057 to 5062 of the polyhedron test induct.f90) are no longer
vectorized (the change occurred between revisions 158215 and
158921). With -ftree-vectorizer-verbose=6, I got
induct.f90:5057: note: not vectorized: data ref analysis failed D.6088_872 =
(*D.4001_143)[D.6087_871];
induct.f90:5057: note: Alignment of access forced using peeling.
induct.f90:5057: note: Vectorizing an unaligned access.
induct.f90:5057: note: vect_model_load_cost: unaligned supported by hardware.
induct.f90:5057: note: vect_model_load_cost: inside_cost = 2, outside_cost = 0 .
induct.f90:5057: note: vect_model_simple_cost: inside_cost = 2, outside_cost =
0 .
induct.f90:5057: note: vect_model_store_cost: inside_cost = 2, outside_cost = 0
.
induct.f90:5057: note: cost model: prologue peel iters set to vf/2.
induct.f90:5057: note: cost model: epilogue peel iters set to vf/2 because
peeling for alignment is unknown .
induct.f90:5057: note: Cost model analysis:
Vector inside of loop cost: 6
Vector outside of loop cost: 20
Scalar iteration cost: 3
Scalar outside cost: 7
prologue iterations: 2
epilogue iterations: 2
Calculated minimum iters for profitability: 5
induct.f90:5057: note: Profitability threshold = 4
induct.f90:5057: note: Profitability threshold is 4 loop iterations.
induct.f90:5057: note: LOOP VECTORIZED.
and now:
induct.f90:5057: note: not vectorized: data ref analysis failed D.6017_848 =
(*D.4001_131)[D.6016_847];
Is this known/expected or should I open a new PR?
Cheers
Dominique