Skip to content

Commit 1bb72c3

Browse files
committed
fixup! Rename the metadata to llvm.loop.isvectorized.tailfoldingstyle
And set the metadata in LoopVectorizationHints.
1 parent 4b6367c commit 1bb72c3

16 files changed

+197
-146
lines changed

llvm/include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ class LoopVectorizeHints {
6464
HK_FORCE,
6565
HK_ISVECTORIZED,
6666
HK_PREDICATE,
67-
HK_SCALABLE
67+
HK_SCALABLE,
68+
HK_TAILFOLDING
6869
};
6970

7071
/// Hint - associates name and validation with the hint value.
@@ -91,6 +92,9 @@ class LoopVectorizeHints {
9192
/// Already Vectorized
9293
Hint IsVectorized;
9394

95+
/// Tail folding style of a vectorized loop.
96+
Hint TailFoldingStyle;
97+
9498
/// Vector Predicate
9599
Hint Predicate;
96100

@@ -121,6 +125,12 @@ class LoopVectorizeHints {
121125
SK_PreferScalable = 1
122126
};
123127

128+
enum TailFoldingKind {
129+
TFK_Unspecified = -1,
130+
/// Tail folding with explicit vector length intrinsics.
131+
TFK_EVL = 0
132+
};
133+
124134
LoopVectorizeHints(const Loop *L, bool InterleaveOnlyWhenForced,
125135
OptimizationRemarkEmitter &ORE,
126136
const TargetTransformInfo *TTI = nullptr);
@@ -131,6 +141,10 @@ class LoopVectorizeHints {
131141
bool allowVectorization(Function *F, Loop *L,
132142
bool VectorizeOnlyWhenForced) const;
133143

144+
/// Mark the loop as being vectorized with a specific tail folding style.
145+
void setVectorizedTailFoldingStyle(TailFoldingKind Kind);
146+
void setEVLVectorized() { setVectorizedTailFoldingStyle(TFK_EVL); }
147+
134148
/// Dumps all the hint information.
135149
void emitRemarkWithHints() const;
136150

@@ -162,6 +176,14 @@ class LoopVectorizeHints {
162176
return (ScalableForceKind)Scalable.Value == SK_FixedWidthOnly;
163177
}
164178

179+
/// \return the tail folding style of a vectorized loop.
180+
TailFoldingKind getVectorizedTailFoldingStyle() const {
181+
return (TailFoldingKind)TailFoldingStyle.Value;
182+
}
183+
bool isEVLVectorized() const {
184+
return getVectorizedTailFoldingStyle() == TFK_EVL;
185+
}
186+
165187
/// If hints are provided that force vectorization, use the AlwaysPrint
166188
/// pass name to force the frontend to print the diagnostic.
167189
const char *vectorizeAnalysisPassName() const;

llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ bool LoopVectorizeHints::Hint::validate(unsigned Val) {
9494
return isPowerOf2_32(Val) && Val <= MaxInterleaveFactor;
9595
case HK_FORCE:
9696
return (Val <= 1);
97+
case HK_TAILFOLDING:
98+
return Val == 0;
9799
case HK_ISVECTORIZED:
98100
case HK_PREDICATE:
99101
case HK_SCALABLE:
@@ -110,6 +112,8 @@ LoopVectorizeHints::LoopVectorizeHints(const Loop *L,
110112
Interleave("interleave.count", InterleaveOnlyWhenForced, HK_INTERLEAVE),
111113
Force("vectorize.enable", FK_Undefined, HK_FORCE),
112114
IsVectorized("isvectorized", 0, HK_ISVECTORIZED),
115+
TailFoldingStyle("isvectorized.tailfoldingstyle", TFK_Unspecified,
116+
HK_TAILFOLDING),
113117
Predicate("vectorize.predicate.enable", FK_Undefined, HK_PREDICATE),
114118
Scalable("vectorize.scalable.enable", SK_Unspecified, HK_SCALABLE),
115119
TheLoop(L), ORE(ORE) {
@@ -154,6 +158,14 @@ LoopVectorizeHints::LoopVectorizeHints(const Loop *L,
154158
// nothing more that we can do.
155159
IsVectorized.Value =
156160
getWidth() == ElementCount::getFixed(1) && getInterleave() == 1;
161+
162+
if ((LoopVectorizeHints::TailFoldingKind)TailFoldingStyle.Value !=
163+
TFK_Unspecified &&
164+
!IsVectorized.Value)
165+
// If the loop is not vectorized, do not attach the tail folding style
166+
// metadata.
167+
TailFoldingStyle.Value = TFK_Unspecified;
168+
157169
LLVM_DEBUG(if (InterleaveOnlyWhenForced && getInterleave() == 1) dbgs()
158170
<< "LV: Interleaving disabled by the pass manager\n");
159171
}
@@ -177,6 +189,31 @@ void LoopVectorizeHints::setAlreadyVectorized() {
177189
IsVectorized.Value = 1;
178190
}
179191

192+
void LoopVectorizeHints::setVectorizedTailFoldingStyle(TailFoldingKind Kind) {
193+
LLVMContext &Context = TheLoop->getHeader()->getContext();
194+
Metadata *ValueMD = nullptr;
195+
196+
switch (Kind) {
197+
case TFK_Unspecified:
198+
return;
199+
case TFK_EVL:
200+
ValueMD = MDString::get(Context, "evl");
201+
break;
202+
}
203+
204+
MDNode *TailFoldingMD = MDNode::get(
205+
Context,
206+
{MDString::get(Context, "llvm.loop.isvectorized.tailfoldingstyle"),
207+
ValueMD});
208+
MDNode *LoopID = TheLoop->getLoopID();
209+
MDNode *NewLoopID =
210+
makePostTransformationMetadata(Context, LoopID, {}, {TailFoldingMD});
211+
TheLoop->setLoopID(NewLoopID);
212+
213+
// Update internal cache.
214+
TailFoldingStyle.Value = Kind;
215+
}
216+
180217
bool LoopVectorizeHints::allowVectorization(
181218
Function *F, Loop *L, bool VectorizeOnlyWhenForced) const {
182219
if (getForce() == LoopVectorizeHints::FK_Disabled) {
@@ -300,8 +337,9 @@ void LoopVectorizeHints::setHint(StringRef Name, Metadata *Arg) {
300337
return;
301338
unsigned Val = C->getZExtValue();
302339

303-
Hint *Hints[] = {&Width, &Interleave, &Force,
304-
&IsVectorized, &Predicate, &Scalable};
340+
Hint *Hints[] = {&Width, &Interleave, &Force,
341+
&IsVectorized, &TailFoldingStyle, &Predicate,
342+
&Scalable};
305343
for (auto *H : Hints) {
306344
if (Name == H->Name) {
307345
if (H->validate(Val))

llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7815,6 +7815,18 @@ DenseMap<const SCEV *, Value *> LoopVectorizationPlanner::executePlan(
78157815

78167816
LoopVectorizeHints Hints(L, true, *ORE);
78177817
Hints.setAlreadyVectorized();
7818+
7819+
// Check if it's EVL-vectorized and mark the corresponding metadata.
7820+
// Note that we could have done this during the codegen of
7821+
// ExplictVectorLength, but the enclosing vector loop was not in a good
7822+
// shape for us to attach the metadata.
7823+
if (any_of(*HeaderVPBB, [](const VPRecipeBase &Recipe) {
7824+
// Looking for the ExplictVectorLength VPInstruction.
7825+
if (const auto *VI = dyn_cast<VPInstruction>(&Recipe))
7826+
return VI->getOpcode() == VPInstruction::ExplicitVectorLength;
7827+
return false;
7828+
}))
7829+
Hints.setEVLVectorized();
78187830
}
78197831
TargetTransformInfo::UnrollingPreferences UP;
78207832
TTI.getUnrollingPreferences(L, *PSE.getSE(), UP, ORE);

llvm/lib/Transforms/Vectorize/VPlan.cpp

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,32 +1013,6 @@ void VPlan::execute(VPTransformState *State) {
10131013
Value *Val = State->get(PhiR->getBackedgeValue(), NeedsScalar);
10141014
cast<PHINode>(Phi)->addIncoming(Val, VectorLatchBB);
10151015
}
1016-
1017-
// Check if it's EVL-vectorized and mark the corresponding metadata.
1018-
// Note that we could have done this during the codegen of
1019-
// ExplictVectorLength, but the enclosing vector loop was not in a good shape
1020-
// for us to attach the metadata.
1021-
bool IsEVLVectorized = llvm::any_of(*Header, [](const VPRecipeBase &Recipe) {
1022-
// Looking for the ExplictVectorLength VPInstruction.
1023-
if (const auto *VI = dyn_cast<VPInstruction>(&Recipe))
1024-
return VI->getOpcode() == VPInstruction::ExplicitVectorLength;
1025-
return false;
1026-
});
1027-
if (IsEVLVectorized) {
1028-
// VPTransformState::CurrentParentLoop has already been reset
1029-
// at this moment.
1030-
Loop *L = State->LI->getLoopFor(VectorLatchBB);
1031-
assert(L);
1032-
LLVMContext &Context = State->Builder.getContext();
1033-
MDNode *LoopID = L->getLoopID();
1034-
auto *IsEVLVectorizedMD = MDNode::get(
1035-
Context,
1036-
{MDString::get(Context, "llvm.loop.isvectorized.withevl"),
1037-
ConstantAsMetadata::get(ConstantInt::get(Context, APInt(32, 1)))});
1038-
MDNode *NewLoopID = makePostTransformationMetadata(Context, LoopID, {},
1039-
{IsEVLVectorizedMD});
1040-
L->setLoopID(NewLoopID);
1041-
}
10421016
}
10431017

10441018
InstructionCost VPlan::cost(ElementCount VF, VPCostContext &Ctx) {

llvm/test/Transforms/LoopVectorize/RISCV/truncate-to-minimal-bitwidth-evl-crash.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ exit: ; preds = %loop
7878
}
7979
;.
8080
; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]], [[META3:![0-9]+]]}
81-
; CHECK: [[META1]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
82-
; CHECK: [[META2]] = !{!"llvm.loop.isvectorized", i32 1}
81+
; CHECK: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
82+
; CHECK: [[META2]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
8383
; CHECK: [[META3]] = !{!"llvm.loop.unroll.runtime.disable"}
84-
; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META3]], [[META2]]}
84+
; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META3]], [[META1]]}
8585
;.

llvm/test/Transforms/LoopVectorize/RISCV/type-info-cache-evl-crash.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ exit:
115115
; CHECK: [[META3]] = !{[[META4:![0-9]+]]}
116116
; CHECK: [[META4]] = distinct !{[[META4]], [[META2]]}
117117
; CHECK: [[LOOP5]] = distinct !{[[LOOP5]], [[META6:![0-9]+]], [[META7:![0-9]+]], [[META8:![0-9]+]]}
118-
; CHECK: [[META6]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
119-
; CHECK: [[META7]] = !{!"llvm.loop.isvectorized", i32 1}
118+
; CHECK: [[META6]] = !{!"llvm.loop.isvectorized", i32 1}
119+
; CHECK: [[META7]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
120120
; CHECK: [[META8]] = !{!"llvm.loop.unroll.runtime.disable"}
121-
; CHECK: [[LOOP9]] = distinct !{[[LOOP9]], [[META7]]}
121+
; CHECK: [[LOOP9]] = distinct !{[[LOOP9]], [[META6]]}
122122
;.

llvm/test/Transforms/LoopVectorize/RISCV/vectorize-force-tail-with-evl-bin-unary-ops-args.ll

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,42 +1763,42 @@ finish.loopexit:
17631763
}
17641764
;.
17651765
; IF-EVL: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]], [[META3:![0-9]+]]}
1766-
; IF-EVL: [[META1]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
1767-
; IF-EVL: [[META2]] = !{!"llvm.loop.isvectorized", i32 1}
1766+
; IF-EVL: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
1767+
; IF-EVL: [[META2]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
17681768
; IF-EVL: [[META3]] = !{!"llvm.loop.unroll.runtime.disable"}
1769-
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META2]]}
1769+
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]]}
17701770
; IF-EVL: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]], [[META2]], [[META3]]}
1771-
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META2]]}
1771+
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META1]]}
17721772
; IF-EVL: [[LOOP7]] = distinct !{[[LOOP7]], [[META1]], [[META2]], [[META3]]}
1773-
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META2]]}
1773+
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META1]]}
17741774
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META1]], [[META2]], [[META3]]}
1775-
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META2]]}
1775+
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META1]]}
17761776
; IF-EVL: [[LOOP11]] = distinct !{[[LOOP11]], [[META1]], [[META2]], [[META3]]}
1777-
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META2]]}
1777+
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META1]]}
17781778
; IF-EVL: [[LOOP13]] = distinct !{[[LOOP13]], [[META1]], [[META2]], [[META3]]}
1779-
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META2]]}
1779+
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META1]]}
17801780
; IF-EVL: [[LOOP15]] = distinct !{[[LOOP15]], [[META1]], [[META2]], [[META3]]}
1781-
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META2]]}
1781+
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META1]]}
17821782
; IF-EVL: [[LOOP17]] = distinct !{[[LOOP17]], [[META1]], [[META2]], [[META3]]}
1783-
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META2]]}
1783+
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META1]]}
17841784
; IF-EVL: [[LOOP19]] = distinct !{[[LOOP19]], [[META1]], [[META2]], [[META3]]}
1785-
; IF-EVL: [[LOOP20]] = distinct !{[[LOOP20]], [[META2]]}
1785+
; IF-EVL: [[LOOP20]] = distinct !{[[LOOP20]], [[META1]]}
17861786
; IF-EVL: [[LOOP21]] = distinct !{[[LOOP21]], [[META1]], [[META2]], [[META3]]}
1787-
; IF-EVL: [[LOOP22]] = distinct !{[[LOOP22]], [[META2]]}
1787+
; IF-EVL: [[LOOP22]] = distinct !{[[LOOP22]], [[META1]]}
17881788
; IF-EVL: [[LOOP23]] = distinct !{[[LOOP23]], [[META1]], [[META2]], [[META3]]}
1789-
; IF-EVL: [[LOOP24]] = distinct !{[[LOOP24]], [[META2]]}
1789+
; IF-EVL: [[LOOP24]] = distinct !{[[LOOP24]], [[META1]]}
17901790
; IF-EVL: [[LOOP25]] = distinct !{[[LOOP25]], [[META1]], [[META2]], [[META3]]}
1791-
; IF-EVL: [[LOOP26]] = distinct !{[[LOOP26]], [[META2]]}
1791+
; IF-EVL: [[LOOP26]] = distinct !{[[LOOP26]], [[META1]]}
17921792
; IF-EVL: [[LOOP27]] = distinct !{[[LOOP27]], [[META1]], [[META2]], [[META3]]}
1793-
; IF-EVL: [[LOOP28]] = distinct !{[[LOOP28]], [[META2]]}
1793+
; IF-EVL: [[LOOP28]] = distinct !{[[LOOP28]], [[META1]]}
17941794
; IF-EVL: [[LOOP29]] = distinct !{[[LOOP29]], [[META1]], [[META2]], [[META3]]}
1795-
; IF-EVL: [[LOOP30]] = distinct !{[[LOOP30]], [[META2]]}
1795+
; IF-EVL: [[LOOP30]] = distinct !{[[LOOP30]], [[META1]]}
17961796
; IF-EVL: [[LOOP31]] = distinct !{[[LOOP31]], [[META1]], [[META2]], [[META3]]}
1797-
; IF-EVL: [[LOOP32]] = distinct !{[[LOOP32]], [[META2]]}
1797+
; IF-EVL: [[LOOP32]] = distinct !{[[LOOP32]], [[META1]]}
17981798
; IF-EVL: [[LOOP33]] = distinct !{[[LOOP33]], [[META1]], [[META2]], [[META3]]}
1799-
; IF-EVL: [[LOOP34]] = distinct !{[[LOOP34]], [[META2]]}
1799+
; IF-EVL: [[LOOP34]] = distinct !{[[LOOP34]], [[META1]]}
18001800
; IF-EVL: [[LOOP35]] = distinct !{[[LOOP35]], [[META1]], [[META2]], [[META3]]}
1801-
; IF-EVL: [[LOOP36]] = distinct !{[[LOOP36]], [[META2]]}
1801+
; IF-EVL: [[LOOP36]] = distinct !{[[LOOP36]], [[META1]]}
18021802
; IF-EVL: [[LOOP37]] = distinct !{[[LOOP37]], [[META1]], [[META2]], [[META3]]}
1803-
; IF-EVL: [[LOOP38]] = distinct !{[[LOOP38]], [[META2]]}
1803+
; IF-EVL: [[LOOP38]] = distinct !{[[LOOP38]], [[META1]]}
18041804
;.

llvm/test/Transforms/LoopVectorize/RISCV/vectorize-force-tail-with-evl-call-intrinsics.ll

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,24 +1056,24 @@ declare i64 @llvm.llrint.i64.f64(double)
10561056
declare i32 @llvm.abs.i32(i32, i1 immarg)
10571057
;.
10581058
; IF-EVL: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]], [[META3:![0-9]+]]}
1059-
; IF-EVL: [[META1]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
1060-
; IF-EVL: [[META2]] = !{!"llvm.loop.isvectorized", i32 1}
1059+
; IF-EVL: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
1060+
; IF-EVL: [[META2]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
10611061
; IF-EVL: [[META3]] = !{!"llvm.loop.unroll.runtime.disable"}
1062-
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META2]]}
1062+
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]]}
10631063
; IF-EVL: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]], [[META2]], [[META3]]}
1064-
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META2]]}
1064+
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META1]]}
10651065
; IF-EVL: [[LOOP7]] = distinct !{[[LOOP7]], [[META1]], [[META2]], [[META3]]}
1066-
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META2]]}
1066+
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META1]]}
10671067
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META1]], [[META2]], [[META3]]}
1068-
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META2]]}
1068+
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META1]]}
10691069
; IF-EVL: [[LOOP11]] = distinct !{[[LOOP11]], [[META1]], [[META2]], [[META3]]}
1070-
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META2]]}
1070+
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META1]]}
10711071
; IF-EVL: [[LOOP13]] = distinct !{[[LOOP13]], [[META1]], [[META2]], [[META3]]}
1072-
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META2]]}
1072+
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META1]]}
10731073
; IF-EVL: [[LOOP15]] = distinct !{[[LOOP15]], [[META1]], [[META2]], [[META3]]}
1074-
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META2]]}
1074+
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META1]]}
10751075
; IF-EVL: [[LOOP17]] = distinct !{[[LOOP17]], [[META1]], [[META2]], [[META3]]}
1076-
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META2]]}
1076+
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META1]]}
10771077
; IF-EVL: [[LOOP19]] = distinct !{[[LOOP19]], [[META1]], [[META2]], [[META3]]}
1078-
; IF-EVL: [[LOOP20]] = distinct !{[[LOOP20]], [[META2]]}
1078+
; IF-EVL: [[LOOP20]] = distinct !{[[LOOP20]], [[META1]]}
10791079
;.

llvm/test/Transforms/LoopVectorize/RISCV/vectorize-force-tail-with-evl-cast-intrinsics.ll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,46 +1065,46 @@ exit:
10651065
; IF-EVL: [[META3]] = !{[[META4:![0-9]+]]}
10661066
; IF-EVL: [[META4]] = distinct !{[[META4]], [[META2]]}
10671067
; IF-EVL: [[LOOP5]] = distinct !{[[LOOP5]], [[META6:![0-9]+]], [[META7:![0-9]+]], [[META8:![0-9]+]]}
1068-
; IF-EVL: [[META6]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
1069-
; IF-EVL: [[META7]] = !{!"llvm.loop.isvectorized", i32 1}
1068+
; IF-EVL: [[META6]] = !{!"llvm.loop.isvectorized", i32 1}
1069+
; IF-EVL: [[META7]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
10701070
; IF-EVL: [[META8]] = !{!"llvm.loop.unroll.runtime.disable"}
1071-
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META7]]}
1071+
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META6]]}
10721072
; IF-EVL: [[META10]] = !{[[META11:![0-9]+]]}
10731073
; IF-EVL: [[META11]] = distinct !{[[META11]], [[META12:![0-9]+]]}
10741074
; IF-EVL: [[META12]] = distinct !{[[META12]], !"LVerDomain"}
10751075
; IF-EVL: [[META13]] = !{[[META14:![0-9]+]]}
10761076
; IF-EVL: [[META14]] = distinct !{[[META14]], [[META12]]}
10771077
; IF-EVL: [[LOOP15]] = distinct !{[[LOOP15]], [[META6]], [[META7]], [[META8]]}
1078-
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META7]]}
1078+
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META6]]}
10791079
; IF-EVL: [[META17]] = !{[[META18:![0-9]+]]}
10801080
; IF-EVL: [[META18]] = distinct !{[[META18]], [[META19:![0-9]+]]}
10811081
; IF-EVL: [[META19]] = distinct !{[[META19]], !"LVerDomain"}
10821082
; IF-EVL: [[META20]] = !{[[META21:![0-9]+]]}
10831083
; IF-EVL: [[META21]] = distinct !{[[META21]], [[META19]]}
10841084
; IF-EVL: [[LOOP22]] = distinct !{[[LOOP22]], [[META6]], [[META7]], [[META8]]}
1085-
; IF-EVL: [[LOOP23]] = distinct !{[[LOOP23]], [[META7]]}
1085+
; IF-EVL: [[LOOP23]] = distinct !{[[LOOP23]], [[META6]]}
10861086
; IF-EVL: [[META24]] = !{[[META25:![0-9]+]]}
10871087
; IF-EVL: [[META25]] = distinct !{[[META25]], [[META26:![0-9]+]]}
10881088
; IF-EVL: [[META26]] = distinct !{[[META26]], !"LVerDomain"}
10891089
; IF-EVL: [[META27]] = !{[[META28:![0-9]+]]}
10901090
; IF-EVL: [[META28]] = distinct !{[[META28]], [[META26]]}
10911091
; IF-EVL: [[LOOP29]] = distinct !{[[LOOP29]], [[META6]], [[META7]], [[META8]]}
1092-
; IF-EVL: [[LOOP30]] = distinct !{[[LOOP30]], [[META7]]}
1092+
; IF-EVL: [[LOOP30]] = distinct !{[[LOOP30]], [[META6]]}
10931093
; IF-EVL: [[META31]] = !{[[META32:![0-9]+]]}
10941094
; IF-EVL: [[META32]] = distinct !{[[META32]], [[META33:![0-9]+]]}
10951095
; IF-EVL: [[META33]] = distinct !{[[META33]], !"LVerDomain"}
10961096
; IF-EVL: [[META34]] = !{[[META35:![0-9]+]]}
10971097
; IF-EVL: [[META35]] = distinct !{[[META35]], [[META33]]}
10981098
; IF-EVL: [[LOOP36]] = distinct !{[[LOOP36]], [[META6]], [[META7]], [[META8]]}
1099-
; IF-EVL: [[LOOP37]] = distinct !{[[LOOP37]], [[META7]]}
1099+
; IF-EVL: [[LOOP37]] = distinct !{[[LOOP37]], [[META6]]}
11001100
; IF-EVL: [[LOOP38]] = distinct !{[[LOOP38]], [[META6]], [[META7]], [[META8]]}
1101-
; IF-EVL: [[LOOP39]] = distinct !{[[LOOP39]], [[META7]]}
1101+
; IF-EVL: [[LOOP39]] = distinct !{[[LOOP39]], [[META6]]}
11021102
; IF-EVL: [[LOOP40]] = distinct !{[[LOOP40]], [[META6]], [[META7]], [[META8]]}
1103-
; IF-EVL: [[LOOP41]] = distinct !{[[LOOP41]], [[META7]]}
1103+
; IF-EVL: [[LOOP41]] = distinct !{[[LOOP41]], [[META6]]}
11041104
; IF-EVL: [[LOOP42]] = distinct !{[[LOOP42]], [[META6]], [[META7]], [[META8]]}
1105-
; IF-EVL: [[LOOP43]] = distinct !{[[LOOP43]], [[META7]]}
1105+
; IF-EVL: [[LOOP43]] = distinct !{[[LOOP43]], [[META6]]}
11061106
; IF-EVL: [[LOOP44]] = distinct !{[[LOOP44]], [[META6]], [[META7]], [[META8]]}
1107-
; IF-EVL: [[LOOP45]] = distinct !{[[LOOP45]], [[META7]]}
1107+
; IF-EVL: [[LOOP45]] = distinct !{[[LOOP45]], [[META6]]}
11081108
; IF-EVL: [[LOOP46]] = distinct !{[[LOOP46]], [[META6]], [[META7]], [[META8]]}
1109-
; IF-EVL: [[LOOP47]] = distinct !{[[LOOP47]], [[META7]]}
1109+
; IF-EVL: [[LOOP47]] = distinct !{[[LOOP47]], [[META6]]}
11101110
;.

0 commit comments

Comments
 (0)