@@ -47,14 +47,10 @@ define void @block_with_dead_inst_1(ptr %src, i64 %N) #0 {
47
47
; CHECK-NEXT: [[TMP21:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
48
48
; CHECK-NEXT: br i1 [[TMP21]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
49
49
; CHECK: [[MIDDLE_BLOCK]]:
50
- ; CHECK-NEXT: [[TMP22:%.*]] = call i32 @llvm.vscale.i32()
51
- ; CHECK-NEXT: [[TMP23:%.*]] = mul i32 [[TMP22]], 8
52
- ; CHECK-NEXT: [[TMP24:%.*]] = sub i32 [[TMP23]], 1
53
- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 8 x i16> zeroinitializer, i32 [[TMP24]]
54
50
; CHECK-NEXT: br label %[[SCALAR_PH]]
55
51
; CHECK: [[SCALAR_PH]]:
56
52
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
57
- ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ [[VECTOR_RECUR_EXTRACT]] , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
53
+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ 0 , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
58
54
; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
59
55
; CHECK: [[LOOP_HEADER]]:
60
56
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
@@ -141,14 +137,10 @@ define void @block_with_dead_inst_2(ptr %src) #0 {
141
137
; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
142
138
; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
143
139
; CHECK: [[MIDDLE_BLOCK]]:
144
- ; CHECK-NEXT: [[TMP19:%.*]] = call i32 @llvm.vscale.i32()
145
- ; CHECK-NEXT: [[TMP20:%.*]] = mul i32 [[TMP19]], 4
146
- ; CHECK-NEXT: [[TMP21:%.*]] = sub i32 [[TMP20]], 1
147
- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 4 x i16> zeroinitializer, i32 [[TMP21]]
148
140
; CHECK-NEXT: br label %[[SCALAR_PH]]
149
141
; CHECK: [[SCALAR_PH]]:
150
142
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
151
- ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ [[VECTOR_RECUR_EXTRACT]] , %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
143
+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ 0 , %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
152
144
; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
153
145
; CHECK: [[LOOP_HEADER]]:
154
146
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
@@ -235,14 +227,10 @@ define void @multiple_blocks_with_dead_insts_3(ptr %src) #0 {
235
227
; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
236
228
; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
237
229
; CHECK: [[MIDDLE_BLOCK]]:
238
- ; CHECK-NEXT: [[TMP19:%.*]] = call i32 @llvm.vscale.i32()
239
- ; CHECK-NEXT: [[TMP20:%.*]] = mul i32 [[TMP19]], 4
240
- ; CHECK-NEXT: [[TMP21:%.*]] = sub i32 [[TMP20]], 1
241
- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 4 x i16> zeroinitializer, i32 [[TMP21]]
242
230
; CHECK-NEXT: br label %[[SCALAR_PH]]
243
231
; CHECK: [[SCALAR_PH]]:
244
232
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
245
- ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ [[VECTOR_RECUR_EXTRACT]] , %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
233
+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ 0 , %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
246
234
; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
247
235
; CHECK: [[LOOP_HEADER]]:
248
236
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
@@ -339,14 +327,10 @@ define void @multiple_blocks_with_dead_insts_4(ptr %src, i64 %N) #0 {
339
327
; CHECK-NEXT: [[TMP21:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
340
328
; CHECK-NEXT: br i1 [[TMP21]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP8:![0-9]+]]
341
329
; CHECK: [[MIDDLE_BLOCK]]:
342
- ; CHECK-NEXT: [[TMP22:%.*]] = call i32 @llvm.vscale.i32()
343
- ; CHECK-NEXT: [[TMP23:%.*]] = mul i32 [[TMP22]], 8
344
- ; CHECK-NEXT: [[TMP24:%.*]] = sub i32 [[TMP23]], 1
345
- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 8 x i16> zeroinitializer, i32 [[TMP24]]
346
330
; CHECK-NEXT: br label %[[SCALAR_PH]]
347
331
; CHECK: [[SCALAR_PH]]:
348
332
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
349
- ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ [[VECTOR_RECUR_EXTRACT]] , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
333
+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ 0 , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
350
334
; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
351
335
; CHECK: [[LOOP_HEADER]]:
352
336
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
@@ -445,14 +429,10 @@ define void @multiple_blocks_with_dead_inst_multiple_successors_5(ptr %src) #0 {
445
429
; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
446
430
; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP10:![0-9]+]]
447
431
; CHECK: [[MIDDLE_BLOCK]]:
448
- ; CHECK-NEXT: [[TMP19:%.*]] = call i32 @llvm.vscale.i32()
449
- ; CHECK-NEXT: [[TMP20:%.*]] = mul i32 [[TMP19]], 4
450
- ; CHECK-NEXT: [[TMP21:%.*]] = sub i32 [[TMP20]], 1
451
- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 4 x i16> zeroinitializer, i32 [[TMP21]]
452
432
; CHECK-NEXT: br label %[[SCALAR_PH]]
453
433
; CHECK: [[SCALAR_PH]]:
454
434
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
455
- ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ [[VECTOR_RECUR_EXTRACT]] , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
435
+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ 0 , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
456
436
; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
457
437
; CHECK: [[LOOP_HEADER]]:
458
438
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
@@ -559,14 +539,10 @@ define void @multiple_blocks_with_dead_inst_multiple_successors_6(ptr %src, i1 %
559
539
; CHECK-NEXT: [[TMP21:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
560
540
; CHECK-NEXT: br i1 [[TMP21]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP12:![0-9]+]]
561
541
; CHECK: [[MIDDLE_BLOCK]]:
562
- ; CHECK-NEXT: [[TMP22:%.*]] = call i32 @llvm.vscale.i32()
563
- ; CHECK-NEXT: [[TMP23:%.*]] = mul i32 [[TMP22]], 8
564
- ; CHECK-NEXT: [[TMP24:%.*]] = sub i32 [[TMP23]], 1
565
- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 8 x i16> zeroinitializer, i32 [[TMP24]]
566
542
; CHECK-NEXT: br label %[[SCALAR_PH]]
567
543
; CHECK: [[SCALAR_PH]]:
568
544
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
569
- ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ [[VECTOR_RECUR_EXTRACT]] , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
545
+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i16 [ 0 , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
570
546
; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
571
547
; CHECK: [[LOOP_HEADER]]:
572
548
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
@@ -663,15 +639,11 @@ define void @empty_block_with_phi_1(ptr %src, i64 %N) #0 {
663
639
; CHECK-NEXT: [[TMP13:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
664
640
; CHECK-NEXT: br i1 [[TMP13]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP14:![0-9]+]]
665
641
; CHECK: [[MIDDLE_BLOCK]]:
666
- ; CHECK-NEXT: [[TMP14:%.*]] = call i32 @llvm.vscale.i32()
667
- ; CHECK-NEXT: [[TMP15:%.*]] = mul i32 [[TMP14]], 8
668
- ; CHECK-NEXT: [[TMP16:%.*]] = sub i32 [[TMP15]], 1
669
- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 8 x i32> zeroinitializer, i32 [[TMP16]]
670
642
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[N]], [[N_VEC]]
671
643
; CHECK-NEXT: br i1 [[CMP_N]], label %[[EXIT:.*]], label %[[SCALAR_PH]]
672
644
; CHECK: [[SCALAR_PH]]:
673
645
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
674
- ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT]] , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
646
+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i32 [ 0 , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
675
647
; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
676
648
; CHECK: [[LOOP_HEADER]]:
677
649
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
@@ -751,15 +723,11 @@ define void @empty_block_with_phi_2(ptr %src, i64 %N) #0 {
751
723
; CHECK-NEXT: [[TMP14:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
752
724
; CHECK-NEXT: br i1 [[TMP14]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP16:![0-9]+]]
753
725
; CHECK: [[MIDDLE_BLOCK]]:
754
- ; CHECK-NEXT: [[TMP15:%.*]] = call i32 @llvm.vscale.i32()
755
- ; CHECK-NEXT: [[TMP16:%.*]] = mul i32 [[TMP15]], 8
756
- ; CHECK-NEXT: [[TMP17:%.*]] = sub i32 [[TMP16]], 1
757
- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 8 x i32> zeroinitializer, i32 [[TMP17]]
758
726
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[N]], [[N_VEC]]
759
727
; CHECK-NEXT: br i1 [[CMP_N]], label %[[EXIT:.*]], label %[[SCALAR_PH]]
760
728
; CHECK: [[SCALAR_PH]]:
761
729
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
762
- ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT]] , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
730
+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i32 [ 0 , %[[MIDDLE_BLOCK]] ], [ 1, %[[ENTRY]] ]
763
731
; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
764
732
; CHECK: [[LOOP_HEADER]]:
765
733
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
0 commit comments