[llvm] [LV][EVL] Attach a new metadata on EVL vectorized loops (PR #131000)
Pengcheng Wang via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 8 22:02:40 PDT 2025
================
@@ -7828,6 +7828,26 @@ DenseMap<const SCEV *, Value *> LoopVectorizationPlanner::executePlan(
LoopVectorizeHints Hints(L, true, *ORE);
Hints.setAlreadyVectorized();
+
+ // Check if it's EVL-vectorized and mark the corresponding metadata.
+ bool IsEVLVectorized =
+ llvm::any_of(*HeaderVPBB, [](const VPRecipeBase &Recipe) {
+ // Looking for the ExplictVectorLength VPInstruction.
+ if (const auto *VI = dyn_cast<VPInstruction>(&Recipe))
+ return VI->getOpcode() == VPInstruction::ExplicitVectorLength;
+ return false;
+ });
+ if (IsEVLVectorized) {
+ LLVMContext &Context = L->getHeader()->getContext();
+ MDNode *LoopID = L->getLoopID();
+ auto *IsEVLVectorizedMD = MDNode::get(
+ Context,
+ {MDString::get(Context, "llvm.loop.isvectorized.tailfoldingstyle"),
+ MDString::get(Context, "evl")});
+ MDNode *NewLoopID = makePostTransformationMetadata(Context, LoopID, {},
+ {IsEVLVectorizedMD});
+ L->setLoopID(NewLoopID);
----------------
wangpc-pp wrote:
Non-blocking: is it required to change the LoopID since we are just simply attaching a new metadata? This is not a transformation.
https://github.com/llvm/llvm-project/pull/131000
More information about the llvm-commits
mailing list