@@ -86,7 +86,7 @@ define void @test_iv_cost(ptr %ptr.start, i8 %a, i64 %b) {
86
86
; CHECK-NEXT: [[IND_END2:%.*]] = getelementptr i8, ptr [[PTR_START]], i64 [[N_VEC]]
87
87
; CHECK-NEXT: [[N_VEC_REMAINING:%.*]] = sub i64 [[START]], [[N_VEC]]
88
88
; 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]+]]
90
90
; CHECK: [[VEC_EPILOG_PH]]:
91
91
; CHECK-NEXT: [[VEC_EPILOG_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
92
92
; 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) {
100
100
; CHECK-NEXT: store <4 x i8> zeroinitializer, ptr [[NEXT_GEP5]], align 1
101
101
; CHECK-NEXT: [[INDEX_NEXT6]] = add nuw i64 [[INDEX4]], 4
102
102
; 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]+]]
104
104
; CHECK: [[VEC_EPILOG_MIDDLE_BLOCK]]:
105
105
; CHECK-NEXT: [[CMP_N7:%.*]] = icmp eq i64 [[START]], [[N_VEC3]]
106
106
; 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) {
115
115
; CHECK-NEXT: [[PTR_IV_NEXT]] = getelementptr i8, ptr [[PTR_IV]], i64 1
116
116
; CHECK-NEXT: store i8 0, ptr [[PTR_IV]], align 1
117
117
; 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]+]]
119
119
; CHECK: [[EXIT_LOOPEXIT]]:
120
120
; CHECK-NEXT: br label %[[EXIT]]
121
121
; CHECK: [[EXIT]]:
@@ -211,26 +211,26 @@ define void @test_exit_branch_cost(ptr %dst, ptr noalias %x.ptr, ptr noalias %y.
211
211
; CHECK-NEXT: [[TMP8:%.*]] = extractelement <2 x i1> [[TMP5]], i32 0
212
212
; CHECK-NEXT: br i1 [[TMP8]], label %[[PRED_STORE_IF:.*]], label %[[PRED_STORE_CONTINUE:.*]]
213
213
; 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]+]]
215
215
; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE]]
216
216
; CHECK: [[PRED_STORE_CONTINUE]]:
217
217
; CHECK-NEXT: [[TMP9:%.*]] = extractelement <2 x i1> [[TMP5]], i32 1
218
218
; CHECK-NEXT: br i1 [[TMP9]], label %[[PRED_STORE_IF42:.*]], label %[[PRED_STORE_CONTINUE43:.*]]
219
219
; 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 ]]
221
221
; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE43]]
222
222
; CHECK: [[PRED_STORE_CONTINUE43]]:
223
223
; CHECK-NEXT: [[TMP13:%.*]] = select <2 x i1> [[TMP5]], <2 x i1> [[TMP11]], <2 x i1> zeroinitializer
224
224
; CHECK-NEXT: [[TMP16:%.*]] = extractelement <2 x i1> [[TMP13]], i32 0
225
225
; CHECK-NEXT: br i1 [[TMP16]], label %[[PRED_STORE_IF44:.*]], label %[[PRED_STORE_CONTINUE45:.*]]
226
226
; 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]+]]
228
228
; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE45]]
229
229
; CHECK: [[PRED_STORE_CONTINUE45]]:
230
230
; CHECK-NEXT: [[TMP17:%.*]] = extractelement <2 x i1> [[TMP13]], i32 1
231
231
; CHECK-NEXT: br i1 [[TMP17]], label %[[PRED_STORE_IF46:.*]], label %[[PRED_STORE_CONTINUE47:.*]]
232
232
; 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 ]]
234
234
; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE47]]
235
235
; CHECK: [[PRED_STORE_CONTINUE47]]:
236
236
; 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.
240
240
; CHECK-NEXT: br i1 [[TMP28]], label %[[PRED_STORE_IF48:.*]], label %[[PRED_STORE_CONTINUE49:.*]]
241
241
; CHECK: [[PRED_STORE_IF48]]:
242
242
; 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]+]]
244
244
; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE49]]
245
245
; CHECK: [[PRED_STORE_CONTINUE49]]:
246
246
; CHECK-NEXT: [[TMP30:%.*]] = extractelement <2 x i1> [[TMP23]], i32 1
247
247
; CHECK-NEXT: br i1 [[TMP30]], label %[[PRED_STORE_IF50:.*]], label %[[PRED_STORE_CONTINUE51:.*]]
248
248
; CHECK: [[PRED_STORE_IF50]]:
249
249
; 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 ]]
251
251
; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE51]]
252
252
; CHECK: [[PRED_STORE_CONTINUE51]]:
253
253
; CHECK-NEXT: [[TMP35:%.*]] = select <2 x i1> [[TMP5]], <2 x i1> [[TMP6]], <2 x i1> zeroinitializer
254
254
; CHECK-NEXT: [[TMP37:%.*]] = or <2 x i1> [[TMP23]], [[TMP35]]
255
255
; CHECK-NEXT: [[TMP42:%.*]] = extractelement <2 x i1> [[TMP37]], i32 0
256
256
; CHECK-NEXT: br i1 [[TMP42]], label %[[PRED_STORE_IF52:.*]], label %[[PRED_STORE_CONTINUE53:.*]]
257
257
; 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 ]]
260
260
; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE53]]
261
261
; CHECK: [[PRED_STORE_CONTINUE53]]:
262
262
; CHECK-NEXT: [[TMP44:%.*]] = extractelement <2 x i1> [[TMP37]], i32 1
263
263
; CHECK-NEXT: br i1 [[TMP44]], label %[[PRED_STORE_IF54:.*]], label %[[PRED_STORE_CONTINUE55]]
264
264
; 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 ]]
267
267
; CHECK-NEXT: br label %[[PRED_STORE_CONTINUE55]]
268
268
; CHECK: [[PRED_STORE_CONTINUE55]]:
269
269
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
270
270
; 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]+]]
272
272
; CHECK: [[MIDDLE_BLOCK]]:
273
273
; CHECK-NEXT: br label %[[SCALAR_PH]]
274
274
; CHECK: [[SCALAR_PH]]:
@@ -309,7 +309,7 @@ define void @test_exit_branch_cost(ptr %dst, ptr noalias %x.ptr, ptr noalias %y.
309
309
; CHECK: [[LOOP_LATCH]]:
310
310
; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
311
311
; 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]+]]
313
313
; CHECK: [[EXIT]]:
314
314
; CHECK-NEXT: ret void
315
315
;
@@ -385,7 +385,7 @@ define void @invalid_legacy_cost(i64 %N, ptr %x) #0 {
385
385
; CHECK-NEXT: store <2 x ptr> [[TMP8]], ptr [[TMP9]], align 8
386
386
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
387
387
; 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]+]]
389
389
; CHECK: [[MIDDLE_BLOCK]]:
390
390
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[TMP0]], [[N_VEC]]
391
391
; 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 {
399
399
; CHECK-NEXT: store ptr [[TMP12]], ptr [[ARRAYIDX]], align 8
400
400
; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
401
401
; 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]+]]
403
403
; CHECK: [[FOR_END]]:
404
404
; CHECK-NEXT: ret void
405
405
;
@@ -429,24 +429,25 @@ declare i64 @llvm.umin.i64(i64, i64)
429
429
; CHECK: [[META2]] = !{!"llvm.loop.unroll.runtime.disable"}
430
430
; CHECK: [[LOOP3]] = distinct !{[[LOOP3]], [[META2]], [[META1]]}
431
431
; 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]]}
452
453
;.
0 commit comments