Skip to content

Commit 4b6367c

Browse files
committed
[LV][EVL] Attach a new metadata on EVL vectorized loops
TBA...
1 parent ea2e66a commit 4b6367c

11 files changed

+260
-226
lines changed

llvm/lib/Transforms/Vectorize/VPlan.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,6 +1013,32 @@ 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+
}
10161042
}
10171043

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

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ define void @truncate_to_minimal_bitwidths_widen_cast_recipe(ptr %src) {
5353
; CHECK-NEXT: store i8 [[CONV36]], ptr null, align 1
5454
; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
5555
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV]], 1
56-
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP3:![0-9]+]]
56+
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP4:![0-9]+]]
5757
; CHECK: [[EXIT]]:
5858
; CHECK-NEXT: ret void
5959
;
@@ -77,8 +77,9 @@ exit: ; preds = %loop
7777
ret void
7878
}
7979
;.
80-
; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
81-
; CHECK: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
82-
; CHECK: [[META2]] = !{!"llvm.loop.unroll.runtime.disable"}
83-
; CHECK: [[LOOP3]] = distinct !{[[LOOP3]], [[META2]], [[META1]]}
80+
; 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}
83+
; CHECK: [[META3]] = !{!"llvm.loop.unroll.runtime.disable"}
84+
; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META3]], [[META2]]}
8485
;.

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ define void @type_info_cache_clobber(ptr %dstv, ptr %src, i64 %wide.trip.count)
8080
; CHECK-NEXT: store i16 [[CONV36]], ptr null, align 2
8181
; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
8282
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV]], [[WIDE_TRIP_COUNT]]
83-
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP8:![0-9]+]]
83+
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP9:![0-9]+]]
8484
; CHECK: [[EXIT]]:
8585
; CHECK-NEXT: ret void
8686
;
@@ -114,8 +114,9 @@ exit:
114114
; CHECK: [[META2]] = distinct !{[[META2]], !"LVerDomain"}
115115
; CHECK: [[META3]] = !{[[META4:![0-9]+]]}
116116
; CHECK: [[META4]] = distinct !{[[META4]], [[META2]]}
117-
; CHECK: [[LOOP5]] = distinct !{[[LOOP5]], [[META6:![0-9]+]], [[META7:![0-9]+]]}
118-
; CHECK: [[META6]] = !{!"llvm.loop.isvectorized", i32 1}
119-
; CHECK: [[META7]] = !{!"llvm.loop.unroll.runtime.disable"}
120-
; CHECK: [[LOOP8]] = distinct !{[[LOOP8]], [[META6]]}
117+
; 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}
120+
; CHECK: [[META8]] = !{!"llvm.loop.unroll.runtime.disable"}
121+
; CHECK: [[LOOP9]] = distinct !{[[LOOP9]], [[META7]]}
121122
;.

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

Lines changed: 74 additions & 73 deletions
Large diffs are not rendered by default.

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

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ define void @vp_smax(ptr %a, ptr %b, ptr %c, i64 %N) {
8080
; IF-EVL-NEXT: store i32 [[DOT]], ptr [[GEP11]], align 4
8181
; IF-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
8282
; IF-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
83-
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP3:![0-9]+]]
83+
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP4:![0-9]+]]
8484
; IF-EVL: [[EXIT]]:
8585
; IF-EVL-NEXT: ret void
8686
;
@@ -178,7 +178,7 @@ define void @vp_smin(ptr %a, ptr %b, ptr %c, i64 %N) {
178178
; IF-EVL-NEXT: [[INDEX_EVL_NEXT]] = add i64 [[TMP18]], [[EVL_BASED_IV]]
179179
; IF-EVL-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP8]]
180180
; IF-EVL-NEXT: [[TMP19:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
181-
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
181+
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP5:![0-9]+]]
182182
; IF-EVL: [[MIDDLE_BLOCK]]:
183183
; IF-EVL-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
184184
; IF-EVL: [[SCALAR_PH]]:
@@ -195,7 +195,7 @@ define void @vp_smin(ptr %a, ptr %b, ptr %c, i64 %N) {
195195
; IF-EVL-NEXT: store i32 [[DOT]], ptr [[GEP11]], align 4
196196
; IF-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
197197
; IF-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
198-
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP5:![0-9]+]]
198+
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP6:![0-9]+]]
199199
; IF-EVL: [[EXIT]]:
200200
; IF-EVL-NEXT: ret void
201201
;
@@ -293,7 +293,7 @@ define void @vp_umax(ptr %a, ptr %b, ptr %c, i64 %N) {
293293
; IF-EVL-NEXT: [[INDEX_EVL_NEXT]] = add i64 [[TMP18]], [[EVL_BASED_IV]]
294294
; IF-EVL-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP8]]
295295
; IF-EVL-NEXT: [[TMP19:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
296-
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
296+
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP7:![0-9]+]]
297297
; IF-EVL: [[MIDDLE_BLOCK]]:
298298
; IF-EVL-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
299299
; IF-EVL: [[SCALAR_PH]]:
@@ -310,7 +310,7 @@ define void @vp_umax(ptr %a, ptr %b, ptr %c, i64 %N) {
310310
; IF-EVL-NEXT: store i32 [[DOT]], ptr [[GEP11]], align 4
311311
; IF-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
312312
; IF-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
313-
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP7:![0-9]+]]
313+
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP8:![0-9]+]]
314314
; IF-EVL: [[EXIT]]:
315315
; IF-EVL-NEXT: ret void
316316
;
@@ -408,7 +408,7 @@ define void @vp_umin(ptr %a, ptr %b, ptr %c, i64 %N) {
408408
; IF-EVL-NEXT: [[INDEX_EVL_NEXT]] = add i64 [[TMP18]], [[EVL_BASED_IV]]
409409
; IF-EVL-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP8]]
410410
; IF-EVL-NEXT: [[TMP19:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
411-
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP8:![0-9]+]]
411+
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP9:![0-9]+]]
412412
; IF-EVL: [[MIDDLE_BLOCK]]:
413413
; IF-EVL-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
414414
; IF-EVL: [[SCALAR_PH]]:
@@ -425,7 +425,7 @@ define void @vp_umin(ptr %a, ptr %b, ptr %c, i64 %N) {
425425
; IF-EVL-NEXT: store i32 [[DOT]], ptr [[GEP11]], align 4
426426
; IF-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
427427
; IF-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
428-
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP9:![0-9]+]]
428+
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP10:![0-9]+]]
429429
; IF-EVL: [[EXIT]]:
430430
; IF-EVL-NEXT: ret void
431431
;
@@ -515,7 +515,7 @@ define void @vp_ctlz(ptr %a, ptr %b, i64 %N) {
515515
; IF-EVL-NEXT: [[INDEX_EVL_NEXT]] = add i64 [[TMP16]], [[EVL_BASED_IV]]
516516
; IF-EVL-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP8]]
517517
; IF-EVL-NEXT: [[TMP17:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
518-
; IF-EVL-NEXT: br i1 [[TMP17]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP10:![0-9]+]]
518+
; IF-EVL-NEXT: br i1 [[TMP17]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP11:![0-9]+]]
519519
; IF-EVL: [[MIDDLE_BLOCK]]:
520520
; IF-EVL-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
521521
; IF-EVL: [[SCALAR_PH]]:
@@ -530,7 +530,7 @@ define void @vp_ctlz(ptr %a, ptr %b, i64 %N) {
530530
; IF-EVL-NEXT: store i32 [[TMP19]], ptr [[GEP3]], align 4
531531
; IF-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
532532
; IF-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
533-
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP11:![0-9]+]]
533+
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP12:![0-9]+]]
534534
; IF-EVL: [[EXIT]]:
535535
; IF-EVL-NEXT: ret void
536536
;
@@ -615,7 +615,7 @@ define void @vp_cttz(ptr %a, ptr %b, i64 %N) {
615615
; IF-EVL-NEXT: [[INDEX_EVL_NEXT]] = add i64 [[TMP20]], [[EVL_BASED_IV]]
616616
; IF-EVL-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP12]]
617617
; IF-EVL-NEXT: [[TMP21:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
618-
; IF-EVL-NEXT: br i1 [[TMP21]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP12:![0-9]+]]
618+
; IF-EVL-NEXT: br i1 [[TMP21]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP13:![0-9]+]]
619619
; IF-EVL: [[MIDDLE_BLOCK]]:
620620
; IF-EVL-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
621621
; IF-EVL: [[SCALAR_PH]]:
@@ -630,7 +630,7 @@ define void @vp_cttz(ptr %a, ptr %b, i64 %N) {
630630
; IF-EVL-NEXT: store i32 [[TMP23]], ptr [[GEP3]], align 4
631631
; IF-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
632632
; IF-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
633-
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP13:![0-9]+]]
633+
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP14:![0-9]+]]
634634
; IF-EVL: [[EXIT]]:
635635
; IF-EVL-NEXT: ret void
636636
;
@@ -718,7 +718,7 @@ define void @vp_lrint(ptr %a, ptr %b, i64 %N) {
718718
; IF-EVL-NEXT: [[INDEX_EVL_NEXT]] = add i64 [[TMP18]], [[EVL_BASED_IV]]
719719
; IF-EVL-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP8]]
720720
; IF-EVL-NEXT: [[TMP19:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
721-
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP14:![0-9]+]]
721+
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP15:![0-9]+]]
722722
; IF-EVL: [[MIDDLE_BLOCK]]:
723723
; IF-EVL-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
724724
; IF-EVL: [[SCALAR_PH]]:
@@ -735,7 +735,7 @@ define void @vp_lrint(ptr %a, ptr %b, i64 %N) {
735735
; IF-EVL-NEXT: store i32 [[CONV3]], ptr [[GEP5]], align 4
736736
; IF-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
737737
; IF-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
738-
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP15:![0-9]+]]
738+
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP16:![0-9]+]]
739739
; IF-EVL: [[EXIT]]:
740740
; IF-EVL-NEXT: ret void
741741
;
@@ -827,7 +827,7 @@ define void @vp_llrint(ptr %a, ptr %b, i64 %N) {
827827
; IF-EVL-NEXT: [[INDEX_EVL_NEXT]] = add i64 [[TMP18]], [[EVL_BASED_IV]]
828828
; IF-EVL-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP8]]
829829
; IF-EVL-NEXT: [[TMP19:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
830-
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP16:![0-9]+]]
830+
; IF-EVL-NEXT: br i1 [[TMP19]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP17:![0-9]+]]
831831
; IF-EVL: [[MIDDLE_BLOCK]]:
832832
; IF-EVL-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
833833
; IF-EVL: [[SCALAR_PH]]:
@@ -844,7 +844,7 @@ define void @vp_llrint(ptr %a, ptr %b, i64 %N) {
844844
; IF-EVL-NEXT: store i32 [[CONV3]], ptr [[GEP5]], align 4
845845
; IF-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
846846
; IF-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
847-
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP17:![0-9]+]]
847+
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP18:![0-9]+]]
848848
; IF-EVL: [[EXIT]]:
849849
; IF-EVL-NEXT: ret void
850850
;
@@ -934,7 +934,7 @@ define void @vp_abs(ptr %a, ptr %b, i64 %N) {
934934
; IF-EVL-NEXT: [[INDEX_EVL_NEXT]] = add i64 [[TMP16]], [[EVL_BASED_IV]]
935935
; IF-EVL-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], [[TMP8]]
936936
; IF-EVL-NEXT: [[TMP17:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
937-
; IF-EVL-NEXT: br i1 [[TMP17]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP18:![0-9]+]]
937+
; IF-EVL-NEXT: br i1 [[TMP17]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP19:![0-9]+]]
938938
; IF-EVL: [[MIDDLE_BLOCK]]:
939939
; IF-EVL-NEXT: br i1 true, label %[[EXIT:.*]], label %[[SCALAR_PH]]
940940
; IF-EVL: [[SCALAR_PH]]:
@@ -949,7 +949,7 @@ define void @vp_abs(ptr %a, ptr %b, i64 %N) {
949949
; IF-EVL-NEXT: store i32 [[COND]], ptr [[GEP9]], align 4
950950
; IF-EVL-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
951951
; IF-EVL-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV_NEXT]], [[N]]
952-
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP19:![0-9]+]]
952+
; IF-EVL-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[LOOP]], !llvm.loop [[LOOP20:![0-9]+]]
953953
; IF-EVL: [[EXIT]]:
954954
; IF-EVL-NEXT: ret void
955955
;
@@ -1055,24 +1055,25 @@ declare i64 @llvm.lrint.i64.f64(double)
10551055
declare i64 @llvm.llrint.i64.f64(double)
10561056
declare i32 @llvm.abs.i32(i32, i1 immarg)
10571057
;.
1058-
; IF-EVL: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
1059-
; IF-EVL: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
1060-
; IF-EVL: [[META2]] = !{!"llvm.loop.unroll.runtime.disable"}
1061-
; IF-EVL: [[LOOP3]] = distinct !{[[LOOP3]], [[META1]]}
1062-
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]], [[META2]]}
1063-
; IF-EVL: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]]}
1064-
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META1]], [[META2]]}
1065-
; IF-EVL: [[LOOP7]] = distinct !{[[LOOP7]], [[META1]]}
1066-
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META1]], [[META2]]}
1067-
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META1]]}
1068-
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META1]], [[META2]]}
1069-
; IF-EVL: [[LOOP11]] = distinct !{[[LOOP11]], [[META1]]}
1070-
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META1]], [[META2]]}
1071-
; IF-EVL: [[LOOP13]] = distinct !{[[LOOP13]], [[META1]]}
1072-
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META1]], [[META2]]}
1073-
; IF-EVL: [[LOOP15]] = distinct !{[[LOOP15]], [[META1]]}
1074-
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META1]], [[META2]]}
1075-
; IF-EVL: [[LOOP17]] = distinct !{[[LOOP17]], [[META1]]}
1076-
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META1]], [[META2]]}
1077-
; IF-EVL: [[LOOP19]] = distinct !{[[LOOP19]], [[META1]]}
1058+
; 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}
1061+
; IF-EVL: [[META3]] = !{!"llvm.loop.unroll.runtime.disable"}
1062+
; IF-EVL: [[LOOP4]] = distinct !{[[LOOP4]], [[META2]]}
1063+
; IF-EVL: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]], [[META2]], [[META3]]}
1064+
; IF-EVL: [[LOOP6]] = distinct !{[[LOOP6]], [[META2]]}
1065+
; IF-EVL: [[LOOP7]] = distinct !{[[LOOP7]], [[META1]], [[META2]], [[META3]]}
1066+
; IF-EVL: [[LOOP8]] = distinct !{[[LOOP8]], [[META2]]}
1067+
; IF-EVL: [[LOOP9]] = distinct !{[[LOOP9]], [[META1]], [[META2]], [[META3]]}
1068+
; IF-EVL: [[LOOP10]] = distinct !{[[LOOP10]], [[META2]]}
1069+
; IF-EVL: [[LOOP11]] = distinct !{[[LOOP11]], [[META1]], [[META2]], [[META3]]}
1070+
; IF-EVL: [[LOOP12]] = distinct !{[[LOOP12]], [[META2]]}
1071+
; IF-EVL: [[LOOP13]] = distinct !{[[LOOP13]], [[META1]], [[META2]], [[META3]]}
1072+
; IF-EVL: [[LOOP14]] = distinct !{[[LOOP14]], [[META2]]}
1073+
; IF-EVL: [[LOOP15]] = distinct !{[[LOOP15]], [[META1]], [[META2]], [[META3]]}
1074+
; IF-EVL: [[LOOP16]] = distinct !{[[LOOP16]], [[META2]]}
1075+
; IF-EVL: [[LOOP17]] = distinct !{[[LOOP17]], [[META1]], [[META2]], [[META3]]}
1076+
; IF-EVL: [[LOOP18]] = distinct !{[[LOOP18]], [[META2]]}
1077+
; IF-EVL: [[LOOP19]] = distinct !{[[LOOP19]], [[META1]], [[META2]], [[META3]]}
1078+
; IF-EVL: [[LOOP20]] = distinct !{[[LOOP20]], [[META2]]}
10781079
;.

0 commit comments

Comments
 (0)