11; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
22; REQUIRES: asserts
3- ; RUN: opt -S < %s -p " loop-vectorize,simplifycfg" -debug-only=loop-vectorize -mattr=+sve 2>%t | FileCheck %s --check-prefixes=CHECK,CHECK-VS1
3+ ; RUN: opt -S < %s -p loop-vectorize -debug-only=loop-vectorize -mattr=+sve 2>%t | FileCheck %s --check-prefixes=CHECK,CHECK-VS1
44; RUN: cat %t | FileCheck %s --check-prefixes=DEBUG,DEBUG-VS1
5- ; RUN: opt -S < %s -p " loop-vectorize,simplifycfg" -debug-only=loop-vectorize -mcpu=neoverse-v1 -sve-tail-folding=disabled 2>%t | FileCheck %s --check-prefixes=CHECK,CHECK-VS2
5+ ; RUN: opt -S < %s -p loop-vectorize -debug-only=loop-vectorize -mcpu=neoverse-v1 -sve-tail-folding=disabled 2>%t | FileCheck %s --check-prefixes=CHECK,CHECK-VS2
66; RUN: cat %t | FileCheck %s --check-prefixes=DEBUG,DEBUG-VS2
77
88target triple = "aarch64-unknown-linux-gnu"
@@ -90,7 +90,7 @@ define void @low_vf_ic_is_better(ptr nocapture noundef %p, i32 %tc, i16 noundef
9090; CHECK-VS1-NEXT: br i1 [[TMP25]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
9191; CHECK-VS1: [[MIDDLE_BLOCK]]:
9292; CHECK-VS1-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[TMP3]], [[N_VEC]]
93- ; CHECK-VS1-NEXT: br i1 [[CMP_N]], label %[[WHILE_END ]], label %[[VEC_EPILOG_ITER_CHECK:.*]]
93+ ; CHECK-VS1-NEXT: br i1 [[CMP_N]], label %[[WHILE_END_LOOPEXIT:.* ]], label %[[VEC_EPILOG_ITER_CHECK:.*]]
9494; CHECK-VS1: [[VEC_EPILOG_ITER_CHECK]]:
9595; CHECK-VS1-NEXT: [[IND_END4:%.*]] = add i64 [[TMP0]], [[N_VEC]]
9696; CHECK-VS1-NEXT: [[N_VEC_REMAINING:%.*]] = sub i64 [[TMP3]], [[N_VEC]]
@@ -123,7 +123,7 @@ define void @low_vf_ic_is_better(ptr nocapture noundef %p, i32 %tc, i16 noundef
123123; CHECK-VS1-NEXT: br i1 [[TMP36]], label %[[VEC_EPILOG_MIDDLE_BLOCK:.*]], label %[[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP3:![0-9]+]]
124124; CHECK-VS1: [[VEC_EPILOG_MIDDLE_BLOCK]]:
125125; CHECK-VS1-NEXT: [[CMP_N10:%.*]] = icmp eq i64 [[TMP3]], [[N_VEC3]]
126- ; CHECK-VS1-NEXT: br i1 [[CMP_N10]], label %[[WHILE_END ]], label %[[VEC_EPILOG_SCALAR_PH]]
126+ ; CHECK-VS1-NEXT: br i1 [[CMP_N10]], label %[[WHILE_END_LOOPEXIT ]], label %[[VEC_EPILOG_SCALAR_PH]]
127127; CHECK-VS1: [[VEC_EPILOG_SCALAR_PH]]:
128128; CHECK-VS1-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[TMP39]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END4]], %[[VEC_EPILOG_ITER_CHECK]] ], [ [[TMP0]], %[[VECTOR_SCEVCHECK]] ], [ [[TMP0]], %[[ITER_CHECK]] ]
129129; CHECK-VS1-NEXT: br label %[[WHILE_BODY:.*]]
@@ -136,7 +136,9 @@ define void @low_vf_ic_is_better(ptr nocapture noundef %p, i32 %tc, i16 noundef
136136; CHECK-VS1-NEXT: store i8 [[ADD]], ptr [[ARRAYIDX]], align 1
137137; CHECK-VS1-NEXT: [[TMP38:%.*]] = and i64 [[IV_NEXT]], 4294967295
138138; CHECK-VS1-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[TMP38]], 19
139- ; CHECK-VS1-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END]], label %[[WHILE_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
139+ ; CHECK-VS1-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END_LOOPEXIT]], label %[[WHILE_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
140+ ; CHECK-VS1: [[WHILE_END_LOOPEXIT]]:
141+ ; CHECK-VS1-NEXT: br label %[[WHILE_END]]
140142; CHECK-VS1: [[WHILE_END]]:
141143; CHECK-VS1-NEXT: ret void
142144;
@@ -194,7 +196,7 @@ define void @low_vf_ic_is_better(ptr nocapture noundef %p, i32 %tc, i16 noundef
194196; CHECK-VS2-NEXT: br i1 [[TMP25]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
195197; CHECK-VS2: [[MIDDLE_BLOCK]]:
196198; CHECK-VS2-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[TMP3]], [[N_VEC]]
197- ; CHECK-VS2-NEXT: br i1 [[CMP_N]], label %[[WHILE_END ]], label %[[VEC_EPILOG_ITER_CHECK:.*]]
199+ ; CHECK-VS2-NEXT: br i1 [[CMP_N]], label %[[WHILE_END_LOOPEXIT:.* ]], label %[[VEC_EPILOG_ITER_CHECK:.*]]
198200; CHECK-VS2: [[VEC_EPILOG_ITER_CHECK]]:
199201; CHECK-VS2-NEXT: [[IND_END4:%.*]] = add i64 [[TMP0]], [[N_VEC]]
200202; CHECK-VS2-NEXT: [[N_VEC_REMAINING:%.*]] = sub i64 [[TMP3]], [[N_VEC]]
@@ -227,7 +229,7 @@ define void @low_vf_ic_is_better(ptr nocapture noundef %p, i32 %tc, i16 noundef
227229; CHECK-VS2-NEXT: br i1 [[TMP36]], label %[[VEC_EPILOG_MIDDLE_BLOCK:.*]], label %[[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP3:![0-9]+]]
228230; CHECK-VS2: [[VEC_EPILOG_MIDDLE_BLOCK]]:
229231; CHECK-VS2-NEXT: [[CMP_N10:%.*]] = icmp eq i64 [[TMP3]], [[N_VEC3]]
230- ; CHECK-VS2-NEXT: br i1 [[CMP_N10]], label %[[WHILE_END ]], label %[[VEC_EPILOG_SCALAR_PH]]
232+ ; CHECK-VS2-NEXT: br i1 [[CMP_N10]], label %[[WHILE_END_LOOPEXIT ]], label %[[VEC_EPILOG_SCALAR_PH]]
231233; CHECK-VS2: [[VEC_EPILOG_SCALAR_PH]]:
232234; CHECK-VS2-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[TMP39]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END4]], %[[VEC_EPILOG_ITER_CHECK]] ], [ [[TMP0]], %[[VECTOR_SCEVCHECK]] ], [ [[TMP0]], %[[ITER_CHECK]] ]
233235; CHECK-VS2-NEXT: br label %[[WHILE_BODY:.*]]
@@ -240,7 +242,9 @@ define void @low_vf_ic_is_better(ptr nocapture noundef %p, i32 %tc, i16 noundef
240242; CHECK-VS2-NEXT: store i8 [[ADD]], ptr [[ARRAYIDX]], align 1
241243; CHECK-VS2-NEXT: [[TMP38:%.*]] = and i64 [[IV_NEXT]], 4294967295
242244; CHECK-VS2-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[TMP38]], 19
243- ; CHECK-VS2-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END]], label %[[WHILE_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
245+ ; CHECK-VS2-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END_LOOPEXIT]], label %[[WHILE_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
246+ ; CHECK-VS2: [[WHILE_END_LOOPEXIT]]:
247+ ; CHECK-VS2-NEXT: br label %[[WHILE_END]]
244248; CHECK-VS2: [[WHILE_END]]:
245249; CHECK-VS2-NEXT: ret void
246250;
@@ -289,7 +293,9 @@ define void @trip_count_too_small(ptr nocapture noundef %p, i32 noundef %tc, i16
289293; CHECK-NEXT: store i8 [[ADD]], ptr [[ARRAYIDX]], align 1
290294; CHECK-NEXT: [[TMP44:%.*]] = and i64 [[INDVARS_IV_NEXT]], 4294967295
291295; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[TMP44]], 3
292- ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END]], label %[[WHILE_BODY]]
296+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END_LOOPEXIT:.*]], label %[[WHILE_BODY]]
297+ ; CHECK: [[WHILE_END_LOOPEXIT]]:
298+ ; CHECK-NEXT: br label %[[WHILE_END]]
293299; CHECK: [[WHILE_END]]:
294300; CHECK-NEXT: ret void
295301;
@@ -347,7 +353,9 @@ define void @too_many_runtime_checks(ptr nocapture noundef %p, ptr nocapture nou
347353; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
348354; CHECK-NEXT: [[TMP64:%.*]] = and i64 [[INDVARS_IV_NEXT]], 4294967295
349355; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[TMP64]], 16
350- ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END]], label %[[WHILE_BODY]]
356+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END_LOOPEXIT:.*]], label %[[WHILE_BODY]]
357+ ; CHECK: [[WHILE_END_LOOPEXIT]]:
358+ ; CHECK-NEXT: br label %[[WHILE_END]]
351359; CHECK: [[WHILE_END]]:
352360; CHECK-NEXT: ret void
353361;
@@ -398,6 +406,8 @@ define void @overflow_indvar_known_false(ptr nocapture noundef %p, i32 noundef %
398406; CHECK-NEXT: [[TMP19:%.*]] = add i32 [[TC]], 1
399407; CHECK-NEXT: [[TMP20:%.*]] = zext i32 [[TMP19]] to i64
400408; CHECK-NEXT: [[TMP1:%.*]] = sub i64 1028, [[TMP20]]
409+ ; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_SCEVCHECK:.*]]
410+ ; CHECK: [[VECTOR_SCEVCHECK]]:
401411; CHECK-NEXT: [[TMP21:%.*]] = add i32 [[TC]], 1
402412; CHECK-NEXT: [[TMP22:%.*]] = zext i32 [[TMP21]] to i64
403413; CHECK-NEXT: [[TMP23:%.*]] = sub i64 1027, [[TMP22]]
@@ -406,7 +416,7 @@ define void @overflow_indvar_known_false(ptr nocapture noundef %p, i32 noundef %
406416; CHECK-NEXT: [[TMP26:%.*]] = icmp ult i32 [[TMP25]], [[TMP21]]
407417; CHECK-NEXT: [[TMP27:%.*]] = icmp ugt i64 [[TMP23]], 4294967295
408418; CHECK-NEXT: [[TMP28:%.*]] = or i1 [[TMP26]], [[TMP27]]
409- ; CHECK-NEXT: br i1 [[TMP28]], label %[[WHILE_BODY:.* ]], label %[[VECTOR_PH:.*]]
419+ ; CHECK-NEXT: br i1 [[TMP28]], label %[[SCALAR_PH ]], label %[[VECTOR_PH:.*]]
410420; CHECK: [[VECTOR_PH]]:
411421; CHECK-NEXT: [[TMP2:%.*]] = call i64 @llvm.vscale.i64()
412422; CHECK-NEXT: [[TMP3:%.*]] = mul i64 [[TMP2]], 16
@@ -434,17 +444,24 @@ define void @overflow_indvar_known_false(ptr nocapture noundef %p, i32 noundef %
434444; CHECK-NEXT: [[ACTIVE_LANE_MASK_NEXT]] = call <vscale x 16 x i1> @llvm.get.active.lane.mask.nxv16i1.i64(i64 [[INDEX_NEXT]], i64 [[TMP1]])
435445; CHECK-NEXT: [[TMP16:%.*]] = xor <vscale x 16 x i1> [[ACTIVE_LANE_MASK_NEXT]], splat (i1 true)
436446; CHECK-NEXT: [[TMP17:%.*]] = extractelement <vscale x 16 x i1> [[TMP16]], i32 0
437- ; CHECK-NEXT: br i1 [[TMP17]], label %[[WHILE_END]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP5:![0-9]+]]
447+ ; CHECK-NEXT: br i1 [[TMP17]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP5:![0-9]+]]
448+ ; CHECK: [[MIDDLE_BLOCK]]:
449+ ; CHECK-NEXT: br i1 true, label %[[WHILE_END_LOOPEXIT:.*]], label %[[SCALAR_PH]]
450+ ; CHECK: [[SCALAR_PH]]:
451+ ; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], %[[MIDDLE_BLOCK]] ], [ [[TMP0]], %[[WHILE_PREHEADER]] ], [ [[TMP0]], %[[VECTOR_SCEVCHECK]] ]
452+ ; CHECK-NEXT: br label %[[WHILE_BODY:.*]]
438453; CHECK: [[WHILE_BODY]]:
439- ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.* ]], %[[WHILE_BODY ]] ], [ [[TMP0 ]], %[[WHILE_PREHEADER ]] ]
454+ ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[BC_RESUME_VAL ]], %[[SCALAR_PH ]] ], [ [[INDVARS_IV_NEXT:%.* ]], %[[WHILE_BODY ]] ]
440455; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
441456; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i8, ptr [[V]], i64 [[INDVARS_IV]]
442457; CHECK-NEXT: [[TMP18:%.*]] = load i8, ptr [[ARRAYIDX]], align 1
443458; CHECK-NEXT: [[ADD:%.*]] = add i8 [[TMP18]], [[CONV]]
444459; CHECK-NEXT: store i8 [[ADD]], ptr [[ARRAYIDX]], align 1
445460; CHECK-NEXT: [[TMP29:%.*]] = and i64 [[INDVARS_IV_NEXT]], 4294967295
446461; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[TMP29]], 1027
447- ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END]], label %[[WHILE_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
462+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[WHILE_END_LOOPEXIT]], label %[[WHILE_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
463+ ; CHECK: [[WHILE_END_LOOPEXIT]]:
464+ ; CHECK-NEXT: br label %[[WHILE_END]]
448465; CHECK: [[WHILE_END]]:
449466; CHECK-NEXT: ret void
450467;
@@ -477,15 +494,38 @@ while.end:
477494define i32 @tc4 (ptr noundef readonly captures(none) %tmp ) vscale_range(1 ,16 ) {
478495; CHECK-LABEL: define i32 @tc4(
479496; CHECK-SAME: ptr noundef readonly captures(none) [[TMP:%.*]]) #[[ATTR1]] {
480- ; CHECK-NEXT: [[ENTRY:.*:]]
481- ; CHECK-NEXT: [[INDVARS_IV:%.*]] = add i64 0, 0
482- ; CHECK-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds nuw [4 x i32], ptr [[TMP]], i64 0, i64 [[INDVARS_IV]]
497+ ; CHECK-NEXT: [[ENTRY:.*]]:
498+ ; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
499+ ; CHECK: [[VECTOR_PH]]:
500+ ; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
501+ ; CHECK: [[VECTOR_BODY]]:
502+ ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
503+ ; CHECK-NEXT: [[VEC_PHI:%.*]] = phi <4 x i32> [ zeroinitializer, %[[VECTOR_PH]] ], [ [[TMP3:%.*]], %[[VECTOR_BODY]] ]
504+ ; CHECK-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds nuw [4 x i32], ptr [[TMP]], i64 0, i64 [[INDEX]]
483505; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX1]], i32 0
484506; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <4 x i32>, ptr [[TMP2]], align 4
485- ; CHECK-NEXT: [[TMP3:%.*]] = add <4 x i32> zeroinitializer, [[WIDE_LOAD]]
486- ; CHECK-NEXT: [[INDEX_NEXT:%.*]] = add nuw i64 0, 4
507+ ; CHECK-NEXT: [[TMP3]] = add <4 x i32> [[VEC_PHI]], [[WIDE_LOAD]]
508+ ; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
509+ ; CHECK-NEXT: br i1 true, label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP7:![0-9]+]]
510+ ; CHECK: [[MIDDLE_BLOCK]]:
487511; CHECK-NEXT: [[TMP4:%.*]] = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> [[TMP3]])
488- ; CHECK-NEXT: ret i32 [[TMP4]]
512+ ; CHECK-NEXT: br i1 true, label %[[FOR_COND_CLEANUP:.*]], label %[[SCALAR_PH]]
513+ ; CHECK: [[SCALAR_PH]]:
514+ ; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 4, %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
515+ ; CHECK-NEXT: [[BC_MERGE_RDX:%.*]] = phi i32 [ [[TMP4]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
516+ ; CHECK-NEXT: br label %[[FOR_BODY:.*]]
517+ ; CHECK: [[FOR_COND_CLEANUP]]:
518+ ; CHECK-NEXT: [[ADD_LCSSA:%.*]] = phi i32 [ [[ADD:%.*]], %[[FOR_BODY]] ], [ [[TMP4]], %[[MIDDLE_BLOCK]] ]
519+ ; CHECK-NEXT: ret i32 [[ADD_LCSSA]]
520+ ; CHECK: [[FOR_BODY]]:
521+ ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[INDVARS_IV_NEXT:%.*]], %[[FOR_BODY]] ]
522+ ; CHECK-NEXT: [[SUM_0179:%.*]] = phi i32 [ [[BC_MERGE_RDX]], %[[SCALAR_PH]] ], [ [[ADD]], %[[FOR_BODY]] ]
523+ ; CHECK-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds nuw [4 x i32], ptr [[TMP]], i64 0, i64 [[INDVARS_IV]]
524+ ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[ARRAYIDX2]], align 4
525+ ; CHECK-NEXT: [[ADD]] = add i32 [[SUM_0179]], [[TMP5]]
526+ ; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
527+ ; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[INDVARS_IV_NEXT]], 4
528+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[FOR_COND_CLEANUP]], label %[[FOR_BODY]], !llvm.loop [[LOOP8:![0-9]+]]
489529;
490530entry:
491531 br label %for.body
@@ -522,7 +562,7 @@ define i32 @tc4_from_profile(ptr noundef readonly captures(none) %tmp, i64 %N) v
522562; CHECK-NEXT: [[ADD]] = add i32 [[SUM_0179]], [[TMP0]]
523563; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
524564; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[INDVARS_IV_NEXT]], [[N]]
525- ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[FOR_COND_CLEANUP]], label %[[FOR_BODY]], !prof [[PROF7 :![0-9]+]]
565+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[FOR_COND_CLEANUP]], label %[[FOR_BODY]], !prof [[PROF9 :![0-9]+]]
526566;
527567entry:
528568 br label %for.body
@@ -555,7 +595,9 @@ for.body: ; preds = %entry, %for.body
555595; CHECK-VS1: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]]}
556596; CHECK-VS1: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]], [[META2]]}
557597; CHECK-VS1: [[LOOP6]] = distinct !{[[LOOP6]], [[META1]]}
558- ; CHECK-VS1: [[PROF7]] = !{!"branch_weights", i32 10, i32 30}
598+ ; CHECK-VS1: [[LOOP7]] = distinct !{[[LOOP7]], [[META1]], [[META2]]}
599+ ; CHECK-VS1: [[LOOP8]] = distinct !{[[LOOP8]], [[META2]], [[META1]]}
600+ ; CHECK-VS1: [[PROF9]] = !{!"branch_weights", i32 10, i32 30}
559601;.
560602; CHECK-VS2: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
561603; CHECK-VS2: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
@@ -564,5 +606,7 @@ for.body: ; preds = %entry, %for.body
564606; CHECK-VS2: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]]}
565607; CHECK-VS2: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]], [[META2]]}
566608; CHECK-VS2: [[LOOP6]] = distinct !{[[LOOP6]], [[META1]]}
567- ; CHECK-VS2: [[PROF7]] = !{!"branch_weights", i32 10, i32 30}
609+ ; CHECK-VS2: [[LOOP7]] = distinct !{[[LOOP7]], [[META1]], [[META2]]}
610+ ; CHECK-VS2: [[LOOP8]] = distinct !{[[LOOP8]], [[META2]], [[META1]]}
611+ ; CHECK-VS2: [[PROF9]] = !{!"branch_weights", i32 10, i32 30}
568612;.
0 commit comments