[llvm] [LV, VP]VP intrinsics support for the Loop Vectorizer (PR #76172)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 26 08:36:32 PST 2024
================
@@ -4690,6 +4712,39 @@ LoopVectorizationCostModel::computeMaxVF(ElementCount UserVF, unsigned UserIC) {
// FIXME: look for a smaller MaxVF that does divide TC rather than masking.
if (Legal->prepareToFoldTailByMasking()) {
CanFoldTailByMasking = true;
+ if (getTailFoldingStyle() == TailFoldingStyle::None)
+ return MaxFactors;
+
+ if (UserIC > 1) {
+ LLVM_DEBUG(dbgs() << "LV: Preference for VP intrinsics indicated. Will "
+ "not generate VP intrinsics since interleave count "
+ "specified is greater than 1.\n");
+ return MaxFactors;
+ }
+
+ if (MaxFactors.ScalableVF.isVector()) {
+ assert(MaxFactors.ScalableVF.isScalable() &&
+ "Expected scalable vector factor.");
+ // FIXME: use actual opcode/data type for analysis here.
+ PreferEVL = getTailFoldingStyle() == TailFoldingStyle::DataWithEVL &&
+ TTI.hasActiveVectorLength(0, nullptr, Align());
----------------
fhahn wrote:
As this introduces `hasActiveVectorLength`, would be better to adjust so it doesn't take any arguments initially, to be extended once needed.
https://github.com/llvm/llvm-project/pull/76172
More information about the llvm-commits
mailing list