[polly] [Polly] Add vectorize metadata to loops identified as vectorizable by polly (PR #113994)
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 10 02:25:50 PST 2025
================
@@ -233,6 +238,30 @@ static bool generateCode(Scop &S, IslAstInfo &AI, LoopInfo &LI,
NodeBuilder.allocateNewArrays(StartExitBlocks);
Annotator.buildAliasScopes(S);
+ // The code below annotates the "llvm.loop.vectorize.enable" to false
+ // for the code flow taken when RTCs fail. Because we don't want the
+ // Loop Vectorizer to come in later and vectorize the original fall back
+ // loop when 'polly-annotate-metadata-vectorize' is passed.
+ if (PollyVectorizeMetadata) {
+ LLVMContext &Ctx = S.getFunction().getContext();
+ for (Loop *L : LI.getLoopsInPreorder()) {
+ if (!L || !S.contains(L))
+ continue;
+ MDNode *LoopID = L->getLoopID();
+ SmallVector<Metadata *, 3> Args;
+ if (LoopID)
+ for (unsigned i = 0, e = LoopID->getNumOperands(); i != e; ++i)
+ Args.push_back(LoopID->getOperand(i));
+ else
+ Args.push_back(nullptr);
+
+ Annotator.addVectorizeMetadata(Ctx, &Args, false);
+ MDNode *NewLoopID = MDNode::get(Ctx, Args);
+ NewLoopID->replaceOperandWith(0, NewLoopID);
+ L->setLoopID(NewLoopID);
+ }
----------------
Meinersbur wrote:
It does not make a difference:
https://github.com/llvm/llvm-project/blob/854cbbf4a8e7e98b7461eae2c2a37cfa767f791c/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp#L303
https://github.com/llvm/llvm-project/pull/113994
More information about the llvm-commits
mailing list