https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91033

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
What happens is that because of -march=knl we first try to vectorize with
vectorization factor 16 and that is ok, as scatter stores are supported, but
with simdlen we prefer vectorization with factor 4, so try next with
vectorization factor 8.  As AVX512VL is not enabled, there is no scatter store
support and vect_analyze_data_refs fails, but as it is still in the section
where fatal = true, we decide to abort the vectorization altogether.
Shall we treat all vect_analyze_data_refs failures as non-fatal (and perhaps
anything after that), as it clearly is dependent on the vf?  Or at least some
of them (pass fatal to that function too)?  The disadvantage is that more work
will be done during vectorization.  Advantage is that we'll be able to
vectorize even if say we start with vectorization factor of 32, say with
-mavx512f without -mprefer-vector-width=512 and e.g. using simd and not having
simdlen.

Another thing is, we should probably not try to parallelize loops that have
loop->force_vectorize or similar, if the user asked for vectorization,
parallelization of the loop might just make things worse.

Reply via email to