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

Reply via email to