@@ -86,7 +86,7 @@ define void @test_iv_cost(ptr %ptr.start, i8 %a, i64 %b) {
8686; CHECK-NEXT: [[IND_END2:%.*]] = getelementptr i8, ptr [[PTR_START]], i64 [[N_VEC]]
8787; CHECK-NEXT: [[N_VEC_REMAINING:%.*]] = sub i64 [[START]], [[N_VEC]]
8888; CHECK-NEXT: [[MIN_EPILOG_ITERS_CHECK:%.*]] = icmp ult i64 [[N_VEC_REMAINING]], 4
89- ; CHECK-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label %[[VEC_EPILOG_SCALAR_PH]], label %[[VEC_EPILOG_PH]]
89+ ; CHECK-NEXT: br i1 [[MIN_EPILOG_ITERS_CHECK]], label %[[VEC_EPILOG_SCALAR_PH]], label %[[VEC_EPILOG_PH]], !prof [[PROF5:![0-9]+]]
9090; CHECK: [[VEC_EPILOG_PH]]:
9191; CHECK-NEXT: [[VEC_EPILOG_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
9292; CHECK-NEXT: [[N_MOD_VF2:%.*]] = urem i64 [[START]], 4
@@ -100,7 +100,7 @@ define void @test_iv_cost(ptr %ptr.start, i8 %a, i64 %b) {
100100; CHECK-NEXT: store <4 x i8> zeroinitializer, ptr [[NEXT_GEP5]], align 1
101101; CHECK-NEXT: [[INDEX_NEXT6]] = add nuw i64 [[INDEX4]], 4
102102; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i64 [[INDEX_NEXT6]], [[N_VEC3]]
103- ; CHECK-NEXT: br i1 [[TMP5]], label %[[VEC_EPILOG_MIDDLE_BLOCK:.*]], label %[[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP5 :![0-9]+]]
103+ ; CHECK-NEXT: br i1 [[TMP5]], label %[[VEC_EPILOG_MIDDLE_BLOCK:.*]], label %[[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP6 :![0-9]+]]
104104; CHECK: [[VEC_EPILOG_MIDDLE_BLOCK]]:
105105; CHECK-NEXT: [[CMP_N7:%.*]] = icmp eq i64 [[START]], [[N_VEC3]]
106106; CHECK-NEXT: br i1 [[CMP_N7]], label %[[EXIT_LOOPEXIT]], label %[[VEC_EPILOG_SCALAR_PH]]
@@ -115,7 +115,7 @@ define void @test_iv_cost(ptr %ptr.start, i8 %a, i64 %b) {
115115; CHECK-NEXT: [[PTR_IV_NEXT]] = getelementptr i8, ptr [[PTR_IV]], i64 1
116116; CHECK-NEXT: store i8 0, ptr [[PTR_IV]], align 1
117117; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 0
118- ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT_LOOPEXIT]], label %[[LOOP]], !llvm.loop [[LOOP6 :![0-9]+]]
118+ ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT_LOOPEXIT]], label %[[LOOP]], !llvm.loop [[LOOP7 :![0-9]+]]
119119; CHECK: [[EXIT_LOOPEXIT]]:
120120; CHECK-NEXT: br label %[[EXIT]]
121121; CHECK: [[EXIT]]:
@@ -211,26 +211,26 @@ define void @test_exit_branch_cost(ptr %dst, ptr noalias %x.ptr, ptr noalias %y.
211211; CHECK-NEXT: [[TMP8:%.*]] = extractelement <2 x i1> [[TMP5]], i32 0
212212; CHECK-NEXT: br i1 [[TMP8]], label %[[PRED_STORE_IF:.*]], label %[[PRED_STORE_CONTINUE:.*]]
213213; CHECK: [[PRED_STORE_IF]]:
214- ; CHECK-NEXT: store i64 0, ptr [[DST_1]], align 8, !alias.scope [[META7 :![0-9]+]], !noalias [[META10 :![0-9]+]]
214+ ; CHECK-NEXT: store i64 0, ptr [[DST_1]], align 8, !alias.scope [[META8 :![0-9]+]], !noalias [[META11 :![0-9]+]]
215215; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE]]
216216; CHECK: [[PRED_STORE_CONTINUE]]:
217217; CHECK-NEXT: [[TMP9:%.*]] = extractelement <2 x i1> [[TMP5]], i32 1
218218; CHECK-NEXT: br i1 [[TMP9]], label %[[PRED_STORE_IF42:.*]], label %[[PRED_STORE_CONTINUE43:.*]]
219219; CHECK: [[PRED_STORE_IF42]]:
220- ; CHECK-NEXT: store i64 0, ptr [[DST_1]], align 8, !alias.scope [[META7 ]], !noalias [[META10 ]]
220+ ; CHECK-NEXT: store i64 0, ptr [[DST_1]], align 8, !alias.scope [[META8 ]], !noalias [[META11 ]]
221221; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE43]]
222222; CHECK: [[PRED_STORE_CONTINUE43]]:
223223; CHECK-NEXT: [[TMP13:%.*]] = select <2 x i1> [[TMP5]], <2 x i1> [[TMP11]], <2 x i1> zeroinitializer
224224; CHECK-NEXT: [[TMP16:%.*]] = extractelement <2 x i1> [[TMP13]], i32 0
225225; CHECK-NEXT: br i1 [[TMP16]], label %[[PRED_STORE_IF44:.*]], label %[[PRED_STORE_CONTINUE45:.*]]
226226; CHECK: [[PRED_STORE_IF44]]:
227- ; CHECK-NEXT: store i64 0, ptr [[DST_3]], align 8, !alias.scope [[META15 :![0-9]+]], !noalias [[META16 :![0-9]+]]
227+ ; CHECK-NEXT: store i64 0, ptr [[DST_3]], align 8, !alias.scope [[META16 :![0-9]+]], !noalias [[META17 :![0-9]+]]
228228; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE45]]
229229; CHECK: [[PRED_STORE_CONTINUE45]]:
230230; CHECK-NEXT: [[TMP17:%.*]] = extractelement <2 x i1> [[TMP13]], i32 1
231231; CHECK-NEXT: br i1 [[TMP17]], label %[[PRED_STORE_IF46:.*]], label %[[PRED_STORE_CONTINUE47:.*]]
232232; CHECK: [[PRED_STORE_IF46]]:
233- ; CHECK-NEXT: store i64 0, ptr [[DST_3]], align 8, !alias.scope [[META15 ]], !noalias [[META16 ]]
233+ ; CHECK-NEXT: store i64 0, ptr [[DST_3]], align 8, !alias.scope [[META16 ]], !noalias [[META17 ]]
234234; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE47]]
235235; CHECK: [[PRED_STORE_CONTINUE47]]:
236236; CHECK-NEXT: [[TMP21:%.*]] = select <2 x i1> [[TMP5]], <2 x i1> [[TMP2]], <2 x i1> zeroinitializer
@@ -240,35 +240,35 @@ define void @test_exit_branch_cost(ptr %dst, ptr noalias %x.ptr, ptr noalias %y.
240240; CHECK-NEXT: br i1 [[TMP28]], label %[[PRED_STORE_IF48:.*]], label %[[PRED_STORE_CONTINUE49:.*]]
241241; CHECK: [[PRED_STORE_IF48]]:
242242; CHECK-NEXT: [[TMP29:%.*]] = extractelement <2 x i64> [[PREDPHI58]], i32 0
243- ; CHECK-NEXT: store i64 [[TMP29]], ptr [[DST_2]], align 8, !alias.scope [[META17 :![0-9]+]], !noalias [[META18 :![0-9]+]]
243+ ; CHECK-NEXT: store i64 [[TMP29]], ptr [[DST_2]], align 8, !alias.scope [[META18 :![0-9]+]], !noalias [[META19 :![0-9]+]]
244244; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE49]]
245245; CHECK: [[PRED_STORE_CONTINUE49]]:
246246; CHECK-NEXT: [[TMP30:%.*]] = extractelement <2 x i1> [[TMP23]], i32 1
247247; CHECK-NEXT: br i1 [[TMP30]], label %[[PRED_STORE_IF50:.*]], label %[[PRED_STORE_CONTINUE51:.*]]
248248; CHECK: [[PRED_STORE_IF50]]:
249249; CHECK-NEXT: [[TMP31:%.*]] = extractelement <2 x i64> [[PREDPHI58]], i32 1
250- ; CHECK-NEXT: store i64 [[TMP31]], ptr [[DST_2]], align 8, !alias.scope [[META17 ]], !noalias [[META18 ]]
250+ ; CHECK-NEXT: store i64 [[TMP31]], ptr [[DST_2]], align 8, !alias.scope [[META18 ]], !noalias [[META19 ]]
251251; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE51]]
252252; CHECK: [[PRED_STORE_CONTINUE51]]:
253253; CHECK-NEXT: [[TMP35:%.*]] = select <2 x i1> [[TMP5]], <2 x i1> [[TMP6]], <2 x i1> zeroinitializer
254254; CHECK-NEXT: [[TMP37:%.*]] = or <2 x i1> [[TMP23]], [[TMP35]]
255255; CHECK-NEXT: [[TMP42:%.*]] = extractelement <2 x i1> [[TMP37]], i32 0
256256; CHECK-NEXT: br i1 [[TMP42]], label %[[PRED_STORE_IF52:.*]], label %[[PRED_STORE_CONTINUE53:.*]]
257257; CHECK: [[PRED_STORE_IF52]]:
258- ; CHECK-NEXT: [[TMP22:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META19 :![0-9]+]]
259- ; CHECK-NEXT: store i64 [[TMP22]], ptr [[DST]], align 8, !alias.scope [[META20 :![0-9]+]], !noalias [[META19 ]]
258+ ; CHECK-NEXT: [[TMP22:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META20 :![0-9]+]]
259+ ; CHECK-NEXT: store i64 [[TMP22]], ptr [[DST]], align 8, !alias.scope [[META21 :![0-9]+]], !noalias [[META20 ]]
260260; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE53]]
261261; CHECK: [[PRED_STORE_CONTINUE53]]:
262262; CHECK-NEXT: [[TMP44:%.*]] = extractelement <2 x i1> [[TMP37]], i32 1
263263; CHECK-NEXT: br i1 [[TMP44]], label %[[PRED_STORE_IF54:.*]], label %[[PRED_STORE_CONTINUE55]]
264264; CHECK: [[PRED_STORE_IF54]]:
265- ; CHECK-NEXT: [[TMP24:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META19 ]]
266- ; CHECK-NEXT: store i64 [[TMP24]], ptr [[DST]], align 8, !alias.scope [[META20 ]], !noalias [[META19 ]]
265+ ; CHECK-NEXT: [[TMP24:%.*]] = load i64, ptr [[SRC]], align 8, !alias.scope [[META20 ]]
266+ ; CHECK-NEXT: store i64 [[TMP24]], ptr [[DST]], align 8, !alias.scope [[META21 ]], !noalias [[META20 ]]
267267; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE55]]
268268; CHECK: [[PRED_STORE_CONTINUE55]]:
269269; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
270270; CHECK-NEXT: [[TMP46:%.*]] = icmp eq i64 [[INDEX_NEXT]], 64
271- ; CHECK-NEXT: br i1 [[TMP46]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP21 :![0-9]+]]
271+ ; CHECK-NEXT: br i1 [[TMP46]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP22 :![0-9]+]]
272272; CHECK: [[MIDDLE_BLOCK]]:
273273; CHECK-NEXT: br label %[[SCALAR_PH]]
274274; CHECK: [[SCALAR_PH]]:
@@ -309,7 +309,7 @@ define void @test_exit_branch_cost(ptr %dst, ptr noalias %x.ptr, ptr noalias %y.
309309; CHECK: [[LOOP_LATCH]]:
310310; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
311311; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV]], 64
312- ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT:.*]], label %[[LOOP_HEADER]], !llvm.loop [[LOOP22 :![0-9]+]]
312+ ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT:.*]], label %[[LOOP_HEADER]], !llvm.loop [[LOOP23 :![0-9]+]]
313313; CHECK: [[EXIT]]:
314314; CHECK-NEXT: ret void
315315;
@@ -385,7 +385,7 @@ define void @invalid_legacy_cost(i64 %N, ptr %x) #0 {
385385; CHECK-NEXT: store <2 x ptr> [[TMP8]], ptr [[TMP9]], align 8
386386; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
387387; CHECK-NEXT: [[TMP11:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
388- ; CHECK-NEXT: br i1 [[TMP11]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP23 :![0-9]+]]
388+ ; CHECK-NEXT: br i1 [[TMP11]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP24 :![0-9]+]]
389389; CHECK: [[MIDDLE_BLOCK]]:
390390; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[TMP0]], [[N_VEC]]
391391; CHECK-NEXT: br i1 [[CMP_N]], label %[[FOR_END:.*]], label %[[SCALAR_PH]]
@@ -399,7 +399,7 @@ define void @invalid_legacy_cost(i64 %N, ptr %x) #0 {
399399; CHECK-NEXT: store ptr [[TMP12]], ptr [[ARRAYIDX]], align 8
400400; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
401401; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[IV]], [[N]]
402- ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[FOR_END]], label %[[FOR_BODY]], !llvm.loop [[LOOP24 :![0-9]+]]
402+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[FOR_END]], label %[[FOR_BODY]], !llvm.loop [[LOOP25 :![0-9]+]]
403403; CHECK: [[FOR_END]]:
404404; CHECK-NEXT: ret void
405405;
@@ -429,24 +429,25 @@ declare i64 @llvm.umin.i64(i64, i64)
429429; CHECK: [[META2]] = !{!"llvm.loop.unroll.runtime.disable"}
430430; CHECK: [[LOOP3]] = distinct !{[[LOOP3]], [[META2]], [[META1]]}
431431; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]], [[META2]]}
432- ; CHECK: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]], [[META2]]}
433- ; CHECK: [[LOOP6]] = distinct !{[[LOOP6]], [[META2]], [[META1]]}
434- ; CHECK: [[META7]] = !{[[META8:![0-9]+]]}
435- ; CHECK: [[META8]] = distinct !{[[META8]], [[META9:![0-9]+]]}
436- ; CHECK: [[META9]] = distinct !{[[META9]], !"LVerDomain"}
437- ; CHECK: [[META10]] = !{[[META11:![0-9]+]], [[META12:![0-9]+]], [[META13:![0-9]+]], [[META14:![0-9]+]]}
438- ; CHECK: [[META11]] = distinct !{[[META11]], [[META9]]}
439- ; CHECK: [[META12]] = distinct !{[[META12]], [[META9]]}
440- ; CHECK: [[META13]] = distinct !{[[META13]], [[META9]]}
441- ; CHECK: [[META14]] = distinct !{[[META14]], [[META9]]}
442- ; CHECK: [[META15]] = !{[[META11]]}
443- ; CHECK: [[META16]] = !{[[META12]], [[META13]], [[META14]]}
444- ; CHECK: [[META17]] = !{[[META12]]}
445- ; CHECK: [[META18]] = !{[[META13]], [[META14]]}
446- ; CHECK: [[META19]] = !{[[META14]]}
447- ; CHECK: [[META20]] = !{[[META13]]}
448- ; CHECK: [[LOOP21]] = distinct !{[[LOOP21]], [[META1]], [[META2]]}
449- ; CHECK: [[LOOP22]] = distinct !{[[LOOP22]], [[META1]]}
450- ; CHECK: [[LOOP23]] = distinct !{[[LOOP23]], [[META1]], [[META2]]}
451- ; CHECK: [[LOOP24]] = distinct !{[[LOOP24]], [[META2]], [[META1]]}
432+ ; CHECK: [[PROF5]] = !{!"branch_weights", i32 4, i32 12}
433+ ; CHECK: [[LOOP6]] = distinct !{[[LOOP6]], [[META1]], [[META2]]}
434+ ; CHECK: [[LOOP7]] = distinct !{[[LOOP7]], [[META2]], [[META1]]}
435+ ; CHECK: [[META8]] = !{[[META9:![0-9]+]]}
436+ ; CHECK: [[META9]] = distinct !{[[META9]], [[META10:![0-9]+]]}
437+ ; CHECK: [[META10]] = distinct !{[[META10]], !"LVerDomain"}
438+ ; CHECK: [[META11]] = !{[[META12:![0-9]+]], [[META13:![0-9]+]], [[META14:![0-9]+]], [[META15:![0-9]+]]}
439+ ; CHECK: [[META12]] = distinct !{[[META12]], [[META10]]}
440+ ; CHECK: [[META13]] = distinct !{[[META13]], [[META10]]}
441+ ; CHECK: [[META14]] = distinct !{[[META14]], [[META10]]}
442+ ; CHECK: [[META15]] = distinct !{[[META15]], [[META10]]}
443+ ; CHECK: [[META16]] = !{[[META12]]}
444+ ; CHECK: [[META17]] = !{[[META13]], [[META14]], [[META15]]}
445+ ; CHECK: [[META18]] = !{[[META13]]}
446+ ; CHECK: [[META19]] = !{[[META14]], [[META15]]}
447+ ; CHECK: [[META20]] = !{[[META15]]}
448+ ; CHECK: [[META21]] = !{[[META14]]}
449+ ; CHECK: [[LOOP22]] = distinct !{[[LOOP22]], [[META1]], [[META2]]}
450+ ; CHECK: [[LOOP23]] = distinct !{[[LOOP23]], [[META1]]}
451+ ; CHECK: [[LOOP24]] = distinct !{[[LOOP24]], [[META1]], [[META2]]}
452+ ; CHECK: [[LOOP25]] = distinct !{[[LOOP25]], [[META2]], [[META1]]}
452453;.
0 commit comments