Displaying 1 result from an estimated 1 matches for "isfirstorderrecurr".
2020 May 05
2
Missing vectorization of loop due to load late in the loop
...%conv7
%j.1 = add nuw nsw i16 %j.03, 1
%h.1 = load i32, i32* %hp.1, align 1, !tbaa !4
%cmp3 = icmp ult i16 %j.03, 99
br i1 %cmp3, label %inner.body, label %inner.end, !llvm.loop !8
And the vectorizer bails out since the load is placed "late" in the
loop, so
RecurrenceDescriptor::isFirstOrderRecurrence
returns false.
If we just move the load before the definition of %0 in the vectorizer
input, then we instead get
LV: We can vectorize this loop!
Originally the loop had two loads, and then one of them was actually
placed early in the loop block. That was done by instcombine, by
InstCombine...