@@ -47,14 +47,10 @@ define void @block_with_dead_inst_1(ptr %src, i64 %N) #0 {
4747; CHECK-NEXT: [[TMP21:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
4848; CHECK-NEXT: br i1 [[TMP21]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
4949; 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]]
5450; CHECK-NEXT: br label %[[SCALAR_PH]]
5551; CHECK: [[SCALAR_PH]]:
5652; 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]] ]
5854; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
5955; CHECK: [[LOOP_HEADER]]:
6056; 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 {
141137; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
142138; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
143139; 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]]
148140; CHECK-NEXT: br label %[[SCALAR_PH]]
149141; CHECK: [[SCALAR_PH]]:
150142; 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]] ]
152144; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
153145; CHECK: [[LOOP_HEADER]]:
154146; 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 {
235227; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
236228; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
237229; 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]]
242230; CHECK-NEXT: br label %[[SCALAR_PH]]
243231; CHECK: [[SCALAR_PH]]:
244232; 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]] ]
246234; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
247235; CHECK: [[LOOP_HEADER]]:
248236; 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 {
339327; CHECK-NEXT: [[TMP21:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
340328; CHECK-NEXT: br i1 [[TMP21]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP8:![0-9]+]]
341329; 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]]
346330; CHECK-NEXT: br label %[[SCALAR_PH]]
347331; CHECK: [[SCALAR_PH]]:
348332; 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]] ]
350334; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
351335; CHECK: [[LOOP_HEADER]]:
352336; 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 {
445429; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
446430; CHECK-NEXT: br i1 [[TMP18]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP10:![0-9]+]]
447431; 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]]
452432; CHECK-NEXT: br label %[[SCALAR_PH]]
453433; CHECK: [[SCALAR_PH]]:
454434; 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]] ]
456436; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
457437; CHECK: [[LOOP_HEADER]]:
458438; 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 %
559539; CHECK-NEXT: [[TMP21:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
560540; CHECK-NEXT: br i1 [[TMP21]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP12:![0-9]+]]
561541; 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]]
566542; CHECK-NEXT: br label %[[SCALAR_PH]]
567543; CHECK: [[SCALAR_PH]]:
568544; 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]] ]
570546; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
571547; CHECK: [[LOOP_HEADER]]:
572548; 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 {
663639; CHECK-NEXT: [[TMP13:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
664640; CHECK-NEXT: br i1 [[TMP13]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP14:![0-9]+]]
665641; 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]]
670642; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[N]], [[N_VEC]]
671643; CHECK-NEXT: br i1 [[CMP_N]], label %[[EXIT:.*]], label %[[SCALAR_PH]]
672644; CHECK: [[SCALAR_PH]]:
673645; 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]] ]
675647; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
676648; CHECK: [[LOOP_HEADER]]:
677649; 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 {
751723; CHECK-NEXT: [[TMP14:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
752724; CHECK-NEXT: br i1 [[TMP14]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP16:![0-9]+]]
753725; 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]]
758726; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[N]], [[N_VEC]]
759727; CHECK-NEXT: br i1 [[CMP_N]], label %[[EXIT:.*]], label %[[SCALAR_PH]]
760728; CHECK: [[SCALAR_PH]]:
761729; 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]] ]
763731; CHECK-NEXT: br label %[[LOOP_HEADER:.*]]
764732; CHECK: [[LOOP_HEADER]]:
765733; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP_LATCH:.*]] ]
0 commit comments