Skip to content

Commit 15120e6

Browse files
committed
fixup! Rename the metadata to llvm.loop.isvectorized.tailfoldingstyle
And set the metadata in LoopVectorizationHints.
1 parent 556c0a5 commit 15120e6

15 files changed

+194
-143
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
@@ -7828,6 +7828,18 @@ DenseMap<const SCEV *, Value *> LoopVectorizationPlanner::executePlan(
78287828

78297829
LoopVectorizeHints Hints(L, true, *ORE);
78307830
Hints.setAlreadyVectorized();
7831+
7832+
// Check if it's EVL-vectorized and mark the corresponding metadata.
7833+
// Note that we could have done this during the codegen of
7834+
// ExplictVectorLength, but the enclosing vector loop was not in a good
7835+
// shape for us to attach the metadata.
7836+
if (any_of(*HeaderVPBB, [](const VPRecipeBase &Recipe) {
7837+
// Looking for the ExplictVectorLength VPInstruction.
7838+
if (const auto *VI = dyn_cast<VPInstruction>(&Recipe))
7839+
return VI->getOpcode() == VPInstruction::ExplicitVectorLength;
7840+
return false;
7841+
}))
7842+
Hints.setEVLVectorized();
78317843
}
78327844
TargetTransformInfo::UnrollingPreferences UP;
78337845
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
@@ -1011,32 +1011,6 @@ void VPlan::execute(VPTransformState *State) {
10111011
Value *Val = State->get(PhiR->getOperand(1), NeedsScalar);
10121012
cast<PHINode>(Phi)->addIncoming(Val, VectorLatchBB);
10131013
}
1014-
1015-
// Check if it's EVL-vectorized and mark the corresponding metadata.
1016-
// Note that we could have done this during the codegen of
1017-
// ExplictVectorLength, but the enclosing vector loop was not in a good shape
1018-
// for us to attach the metadata.
1019-
bool IsEVLVectorized = llvm::any_of(*Header, [](const VPRecipeBase &Recipe) {
1020-
// Looking for the ExplictVectorLength VPInstruction.
1021-
if (const auto *VI = dyn_cast<VPInstruction>(&Recipe))
1022-
return VI->getOpcode() == VPInstruction::ExplicitVectorLength;
1023-
return false;
1024-
});
1025-
if (IsEVLVectorized) {
1026-
// VPTransformState::CurrentParentLoop has already been reset
1027-
// at this moment.
1028-
Loop *L = State->LI->getLoopFor(VectorLatchBB);
1029-
assert(L);
1030-
LLVMContext &Context = State->Builder.getContext();
1031-
MDNode *LoopID = L->getLoopID();
1032-
auto *IsEVLVectorizedMD = MDNode::get(
1033-
Context,
1034-
{MDString::get(Context, "llvm.loop.isvectorized.withevl"),
1035-
ConstantAsMetadata::get(ConstantInt::get(Context, APInt(32, 1)))});
1036-
MDNode *NewLoopID = makePostTransformationMetadata(Context, LoopID, {},
1037-
{IsEVLVectorizedMD});
1038-
L->setLoopID(NewLoopID);
1039-
}
10401014
}
10411015

10421016
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
@@ -79,8 +79,8 @@ exit: ; preds = %loop
7979
}
8080
;.
8181
; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]], [[META3:![0-9]+]]}
82-
; CHECK: [[META1]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
83-
; CHECK: [[META2]] = !{!"llvm.loop.isvectorized", i32 1}
82+
; CHECK: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
83+
; CHECK: [[META2]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
8484
; CHECK: [[META3]] = !{!"llvm.loop.unroll.runtime.disable"}
85-
; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META3]], [[META2]]}
85+
; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META3]], [[META1]]}
8686
;.

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
@@ -114,8 +114,8 @@ exit:
114114
; CHECK: [[META3]] = !{[[META4:![0-9]+]]}
115115
; CHECK: [[META4]] = distinct !{[[META4]], [[META2]]}
116116
; CHECK: [[LOOP5]] = distinct !{[[LOOP5]], [[META6:![0-9]+]], [[META7:![0-9]+]], [[META8:![0-9]+]]}
117-
; CHECK: [[META6]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
118-
; CHECK: [[META7]] = !{!"llvm.loop.isvectorized", i32 1}
117+
; CHECK: [[META6]] = !{!"llvm.loop.isvectorized", i32 1}
118+
; CHECK: [[META7]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
119119
; CHECK: [[META8]] = !{!"llvm.loop.unroll.runtime.disable"}
120-
; CHECK: [[LOOP9]] = distinct !{[[LOOP9]], [[META7]]}
120+
; CHECK: [[LOOP9]] = distinct !{[[LOOP9]], [[META6]]}
121121
;.

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
@@ -1745,42 +1745,42 @@ finish.loopexit:
17451745
}
17461746
;.
17471747
; IF-EVL: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]], [[META3:![0-9]+]]}
1748-
; IF-EVL: [[META1]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
1749-
; IF-EVL: [[META2]] = !{!"llvm.loop.isvectorized", i32 1}
1748+
; IF-EVL: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
1749+
; IF-EVL: [[META2]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
17501750
; IF-EVL: [[META3]] = !{!"llvm.loop.unroll.runtime.disable"}
1751-
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META2]]}
1751+
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]]}
17521752
; IF-EVL: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]], [[META2]], [[META3]]}
1753-
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META2]]}
1753+
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META1]]}
17541754
; IF-EVL: [[LOOP7]] = distinct !{[[LOOP7]], [[META1]], [[META2]], [[META3]]}
1755-
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META2]]}
1755+
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META1]]}
17561756
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META1]], [[META2]], [[META3]]}
1757-
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META2]]}
1757+
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META1]]}
17581758
; IF-EVL: [[LOOP11]] = distinct !{[[LOOP11]], [[META1]], [[META2]], [[META3]]}
1759-
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META2]]}
1759+
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META1]]}
17601760
; IF-EVL: [[LOOP13]] = distinct !{[[LOOP13]], [[META1]], [[META2]], [[META3]]}
1761-
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META2]]}
1761+
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META1]]}
17621762
; IF-EVL: [[LOOP15]] = distinct !{[[LOOP15]], [[META1]], [[META2]], [[META3]]}
1763-
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META2]]}
1763+
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META1]]}
17641764
; IF-EVL: [[LOOP17]] = distinct !{[[LOOP17]], [[META1]], [[META2]], [[META3]]}
1765-
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META2]]}
1765+
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META1]]}
17661766
; IF-EVL: [[LOOP19]] = distinct !{[[LOOP19]], [[META1]], [[META2]], [[META3]]}
1767-
; IF-EVL: [[LOOP20]] = distinct !{[[LOOP20]], [[META2]]}
1767+
; IF-EVL: [[LOOP20]] = distinct !{[[LOOP20]], [[META1]]}
17681768
; IF-EVL: [[LOOP21]] = distinct !{[[LOOP21]], [[META1]], [[META2]], [[META3]]}
1769-
; IF-EVL: [[LOOP22]] = distinct !{[[LOOP22]], [[META2]]}
1769+
; IF-EVL: [[LOOP22]] = distinct !{[[LOOP22]], [[META1]]}
17701770
; IF-EVL: [[LOOP23]] = distinct !{[[LOOP23]], [[META1]], [[META2]], [[META3]]}
1771-
; IF-EVL: [[LOOP24]] = distinct !{[[LOOP24]], [[META2]]}
1771+
; IF-EVL: [[LOOP24]] = distinct !{[[LOOP24]], [[META1]]}
17721772
; IF-EVL: [[LOOP25]] = distinct !{[[LOOP25]], [[META1]], [[META2]], [[META3]]}
1773-
; IF-EVL: [[LOOP26]] = distinct !{[[LOOP26]], [[META2]]}
1773+
; IF-EVL: [[LOOP26]] = distinct !{[[LOOP26]], [[META1]]}
17741774
; IF-EVL: [[LOOP27]] = distinct !{[[LOOP27]], [[META1]], [[META2]], [[META3]]}
1775-
; IF-EVL: [[LOOP28]] = distinct !{[[LOOP28]], [[META2]]}
1775+
; IF-EVL: [[LOOP28]] = distinct !{[[LOOP28]], [[META1]]}
17761776
; IF-EVL: [[LOOP29]] = distinct !{[[LOOP29]], [[META1]], [[META2]], [[META3]]}
1777-
; IF-EVL: [[LOOP30]] = distinct !{[[LOOP30]], [[META2]]}
1777+
; IF-EVL: [[LOOP30]] = distinct !{[[LOOP30]], [[META1]]}
17781778
; IF-EVL: [[LOOP31]] = distinct !{[[LOOP31]], [[META1]], [[META2]], [[META3]]}
1779-
; IF-EVL: [[LOOP32]] = distinct !{[[LOOP32]], [[META2]]}
1779+
; IF-EVL: [[LOOP32]] = distinct !{[[LOOP32]], [[META1]]}
17801780
; IF-EVL: [[LOOP33]] = distinct !{[[LOOP33]], [[META1]], [[META2]], [[META3]]}
1781-
; IF-EVL: [[LOOP34]] = distinct !{[[LOOP34]], [[META2]]}
1781+
; IF-EVL: [[LOOP34]] = distinct !{[[LOOP34]], [[META1]]}
17821782
; IF-EVL: [[LOOP35]] = distinct !{[[LOOP35]], [[META1]], [[META2]], [[META3]]}
1783-
; IF-EVL: [[LOOP36]] = distinct !{[[LOOP36]], [[META2]]}
1783+
; IF-EVL: [[LOOP36]] = distinct !{[[LOOP36]], [[META1]]}
17841784
; IF-EVL: [[LOOP37]] = distinct !{[[LOOP37]], [[META1]], [[META2]], [[META3]]}
1785-
; IF-EVL: [[LOOP38]] = distinct !{[[LOOP38]], [[META2]]}
1785+
; IF-EVL: [[LOOP38]] = distinct !{[[LOOP38]], [[META1]]}
17861786
;.

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
@@ -1047,24 +1047,24 @@ declare i64 @llvm.llrint.i64.f64(double)
10471047
declare i32 @llvm.abs.i32(i32, i1 immarg)
10481048
;.
10491049
; IF-EVL: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]], [[META3:![0-9]+]]}
1050-
; IF-EVL: [[META1]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
1051-
; IF-EVL: [[META2]] = !{!"llvm.loop.isvectorized", i32 1}
1050+
; IF-EVL: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
1051+
; IF-EVL: [[META2]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
10521052
; IF-EVL: [[META3]] = !{!"llvm.loop.unroll.runtime.disable"}
1053-
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META2]]}
1053+
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]]}
10541054
; IF-EVL: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]], [[META2]], [[META3]]}
1055-
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META2]]}
1055+
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META1]]}
10561056
; IF-EVL: [[LOOP7]] = distinct !{[[LOOP7]], [[META1]], [[META2]], [[META3]]}
1057-
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META2]]}
1057+
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META1]]}
10581058
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META1]], [[META2]], [[META3]]}
1059-
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META2]]}
1059+
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META1]]}
10601060
; IF-EVL: [[LOOP11]] = distinct !{[[LOOP11]], [[META1]], [[META2]], [[META3]]}
1061-
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META2]]}
1061+
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META1]]}
10621062
; IF-EVL: [[LOOP13]] = distinct !{[[LOOP13]], [[META1]], [[META2]], [[META3]]}
1063-
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META2]]}
1063+
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META1]]}
10641064
; IF-EVL: [[LOOP15]] = distinct !{[[LOOP15]], [[META1]], [[META2]], [[META3]]}
1065-
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META2]]}
1065+
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META1]]}
10661066
; IF-EVL: [[LOOP17]] = distinct !{[[LOOP17]], [[META1]], [[META2]], [[META3]]}
1067-
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META2]]}
1067+
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META1]]}
10681068
; IF-EVL: [[LOOP19]] = distinct !{[[LOOP19]], [[META1]], [[META2]], [[META3]]}
1069-
; IF-EVL: [[LOOP20]] = distinct !{[[LOOP20]], [[META2]]}
1069+
; IF-EVL: [[LOOP20]] = distinct !{[[LOOP20]], [[META1]]}
10701070
;.

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
@@ -1055,46 +1055,46 @@ exit:
10551055
; IF-EVL: [[META3]] = !{[[META4:![0-9]+]]}
10561056
; IF-EVL: [[META4]] = distinct !{[[META4]], [[META2]]}
10571057
; IF-EVL: [[LOOP5]] = distinct !{[[LOOP5]], [[META6:![0-9]+]], [[META7:![0-9]+]], [[META8:![0-9]+]]}
1058-
; IF-EVL: [[META6]] = !{!"llvm.loop.isvectorized.withevl", i32 1}
1059-
; IF-EVL: [[META7]] = !{!"llvm.loop.isvectorized", i32 1}
1058+
; IF-EVL: [[META6]] = !{!"llvm.loop.isvectorized", i32 1}
1059+
; IF-EVL: [[META7]] = !{!"llvm.loop.isvectorized.tailfoldingstyle", !"evl"}
10601060
; IF-EVL: [[META8]] = !{!"llvm.loop.unroll.runtime.disable"}
1061-
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META7]]}
1061+
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META6]]}
10621062
; IF-EVL: [[META10]] = !{[[META11:![0-9]+]]}
10631063
; IF-EVL: [[META11]] = distinct !{[[META11]], [[META12:![0-9]+]]}
10641064
; IF-EVL: [[META12]] = distinct !{[[META12]], !"LVerDomain"}
10651065
; IF-EVL: [[META13]] = !{[[META14:![0-9]+]]}
10661066
; IF-EVL: [[META14]] = distinct !{[[META14]], [[META12]]}
10671067
; IF-EVL: [[LOOP15]] = distinct !{[[LOOP15]], [[META6]], [[META7]], [[META8]]}
1068-
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META7]]}
1068+
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META6]]}
10691069
; IF-EVL: [[META17]] = !{[[META18:![0-9]+]]}
10701070
; IF-EVL: [[META18]] = distinct !{[[META18]], [[META19:![0-9]+]]}
10711071
; IF-EVL: [[META19]] = distinct !{[[META19]], !"LVerDomain"}
10721072
; IF-EVL: [[META20]] = !{[[META21:![0-9]+]]}
10731073
; IF-EVL: [[META21]] = distinct !{[[META21]], [[META19]]}
10741074
; IF-EVL: [[LOOP22]] = distinct !{[[LOOP22]], [[META6]], [[META7]], [[META8]]}
1075-
; IF-EVL: [[LOOP23]] = distinct !{[[LOOP23]], [[META7]]}
1075+
; IF-EVL: [[LOOP23]] = distinct !{[[LOOP23]], [[META6]]}
10761076
; IF-EVL: [[META24]] = !{[[META25:![0-9]+]]}
10771077
; IF-EVL: [[META25]] = distinct !{[[META25]], [[META26:![0-9]+]]}
10781078
; IF-EVL: [[META26]] = distinct !{[[META26]], !"LVerDomain"}
10791079
; IF-EVL: [[META27]] = !{[[META28:![0-9]+]]}
10801080
; IF-EVL: [[META28]] = distinct !{[[META28]], [[META26]]}
10811081
; IF-EVL: [[LOOP29]] = distinct !{[[LOOP29]], [[META6]], [[META7]], [[META8]]}
1082-
; IF-EVL: [[LOOP30]] = distinct !{[[LOOP30]], [[META7]]}
1082+
; IF-EVL: [[LOOP30]] = distinct !{[[LOOP30]], [[META6]]}
10831083
; IF-EVL: [[META31]] = !{[[META32:![0-9]+]]}
10841084
; IF-EVL: [[META32]] = distinct !{[[META32]], [[META33:![0-9]+]]}
10851085
; IF-EVL: [[META33]] = distinct !{[[META33]], !"LVerDomain"}
10861086
; IF-EVL: [[META34]] = !{[[META35:![0-9]+]]}
10871087
; IF-EVL: [[META35]] = distinct !{[[META35]], [[META33]]}
10881088
; IF-EVL: [[LOOP36]] = distinct !{[[LOOP36]], [[META6]], [[META7]], [[META8]]}
1089-
; IF-EVL: [[LOOP37]] = distinct !{[[LOOP37]], [[META7]]}
1089+
; IF-EVL: [[LOOP37]] = distinct !{[[LOOP37]], [[META6]]}
10901090
; IF-EVL: [[LOOP38]] = distinct !{[[LOOP38]], [[META6]], [[META7]], [[META8]]}
1091-
; IF-EVL: [[LOOP39]] = distinct !{[[LOOP39]], [[META7]]}
1091+
; IF-EVL: [[LOOP39]] = distinct !{[[LOOP39]], [[META6]]}
10921092
; IF-EVL: [[LOOP40]] = distinct !{[[LOOP40]], [[META6]], [[META7]], [[META8]]}
1093-
; IF-EVL: [[LOOP41]] = distinct !{[[LOOP41]], [[META7]]}
1093+
; IF-EVL: [[LOOP41]] = distinct !{[[LOOP41]], [[META6]]}
10941094
; IF-EVL: [[LOOP42]] = distinct !{[[LOOP42]], [[META6]], [[META7]], [[META8]]}
1095-
; IF-EVL: [[LOOP43]] = distinct !{[[LOOP43]], [[META7]]}
1095+
; IF-EVL: [[LOOP43]] = distinct !{[[LOOP43]], [[META6]]}
10961096
; IF-EVL: [[LOOP44]] = distinct !{[[LOOP44]], [[META6]], [[META7]], [[META8]]}
1097-
; IF-EVL: [[LOOP45]] = distinct !{[[LOOP45]], [[META7]]}
1097+
; IF-EVL: [[LOOP45]] = distinct !{[[LOOP45]], [[META6]]}
10981098
; IF-EVL: [[LOOP46]] = distinct !{[[LOOP46]], [[META6]], [[META7]], [[META8]]}
1099-
; IF-EVL: [[LOOP47]] = distinct !{[[LOOP47]], [[META7]]}
1099+
; IF-EVL: [[LOOP47]] = distinct !{[[LOOP47]], [[META6]]}
11001100
;.

0 commit comments

Comments
 (0)