@@ -501,48 +501,48 @@ define i32 @tc4(ptr noundef readonly captures(none) %tmp) vscale_range(1,16) {
501501; CHECK: [[VECTOR_BODY]]:
502502; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
503503; 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]]
504+ ; CHECK-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP]], i64 [[INDEX]]
505505; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX1]], i32 0
506506; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <4 x i32>, ptr [[TMP2]], align 4
507507; CHECK-NEXT: [[TMP3]] = add <4 x i32> [[VEC_PHI]], [[WIDE_LOAD]]
508508; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
509509; CHECK-NEXT: br i1 true, label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP7:![0-9]+]]
510510; CHECK: [[MIDDLE_BLOCK]]:
511511; CHECK-NEXT: [[TMP4:%.*]] = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> [[TMP3]])
512- ; CHECK-NEXT: br i1 true, label %[[FOR_COND_CLEANUP :.*]], label %[[SCALAR_PH]]
512+ ; CHECK-NEXT: br i1 true, label %[[EXIT :.*]], label %[[SCALAR_PH]]
513513; CHECK: [[SCALAR_PH]]:
514514; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 4, %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
515515; CHECK-NEXT: [[BC_MERGE_RDX:%.*]] = phi i32 [ [[TMP4]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
516516; 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]]
520517; CHECK: [[FOR_BODY]]:
521518; 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]]
519+ ; CHECK-NEXT: [[SUM_0179:%.*]] = phi i32 [ [[BC_MERGE_RDX]], %[[SCALAR_PH]] ], [ [[ADD:%.* ]], %[[FOR_BODY]] ]
520+ ; CHECK-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP]], i64 [[INDVARS_IV]]
524521; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[ARRAYIDX2]], align 4
525522; CHECK-NEXT: [[ADD]] = add i32 [[SUM_0179]], [[TMP5]]
526523; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
527524; 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]+]]
525+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT]], label %[[FOR_BODY]], !llvm.loop [[LOOP8:![0-9]+]]
526+ ; CHECK: [[EXIT]]:
527+ ; CHECK-NEXT: [[ADD_LCSSA:%.*]] = phi i32 [ [[ADD]], %[[FOR_BODY]] ], [ [[TMP4]], %[[MIDDLE_BLOCK]] ]
528+ ; CHECK-NEXT: ret i32 [[ADD_LCSSA]]
529529;
530530entry:
531531 br label %for.body
532532
533- for.cond.cleanup: ; preds = %for.body
534- %add.lcssa = phi i32 [ %add , %for.body ]
535- ret i32 %add.lcssa
536-
537533for.body: ; preds = %entry, %for.body
538- %indvars. iv = phi i64 [ 0 , %entry ], [ %indvars. iv.next , %for.body ]
534+ %iv = phi i64 [ 0 , %entry ], [ %iv.next , %for.body ]
539535 %sum.0179 = phi i32 [ 0 , %entry ], [ %add , %for.body ]
540- %arrayidx1 = getelementptr inbounds nuw [ 4 x i32 ] , ptr %tmp , i64 0 , i64 %indvars. iv
536+ %arrayidx1 = getelementptr inbounds nuw i32 , ptr %tmp , i64 % iv
541537 %0 = load i32 , ptr %arrayidx1 , align 4
542538 %add = add i32 %sum.0179 , %0
543- %indvars.iv.next = add nuw nsw i64 %indvars.iv , 1
544- %exitcond.not = icmp eq i64 %indvars.iv.next , 4
545- br i1 %exitcond.not , label %for.cond.cleanup , label %for.body
539+ %iv.next = add nuw nsw i64 %iv , 1
540+ %exitcond.not = icmp eq i64 %iv.next , 4
541+ br i1 %exitcond.not , label %exit , label %for.body
542+
543+ exit: ; preds = %for.body
544+ %add.lcssa = phi i32 [ %add , %for.body ]
545+ ret i32 %add.lcssa
546546}
547547
548548; This has a trip-count of 4 from a profile.
@@ -551,35 +551,35 @@ define i32 @tc4_from_profile(ptr noundef readonly captures(none) %tmp, i64 %N) v
551551; CHECK-SAME: ptr noundef readonly captures(none) [[TMP:%.*]], i64 [[N:%.*]]) #[[ATTR1]] {
552552; CHECK-NEXT: [[ENTRY:.*]]:
553553; CHECK-NEXT: br label %[[FOR_BODY:.*]]
554- ; CHECK: [[FOR_COND_CLEANUP:.*]]:
555- ; CHECK-NEXT: [[TMP4:%.*]] = phi i32 [ [[ADD:%.*]], %[[FOR_BODY]] ]
556- ; CHECK-NEXT: ret i32 [[TMP4]]
557554; CHECK: [[FOR_BODY]]:
558555; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[INDVARS_IV_NEXT:%.*]], %[[FOR_BODY]] ]
559- ; CHECK-NEXT: [[SUM_0179:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[ADD]], %[[FOR_BODY]] ]
560- ; CHECK-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds nuw [4 x i32] , ptr [[TMP]], i64 0 , i64 [[INDVARS_IV]]
556+ ; CHECK-NEXT: [[SUM_0179:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[ADD:%.* ]], %[[FOR_BODY]] ]
557+ ; CHECK-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP]], i64 [[INDVARS_IV]]
561558; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[ARRAYIDX1]], align 4
562559; CHECK-NEXT: [[ADD]] = add i32 [[SUM_0179]], [[TMP0]]
563560; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
564561; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[INDVARS_IV_NEXT]], [[N]]
565- ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[FOR_COND_CLEANUP]], label %[[FOR_BODY]], !prof [[PROF9:![0-9]+]]
562+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT:.*]], label %[[FOR_BODY]], !prof [[PROF9:![0-9]+]]
563+ ; CHECK: [[EXIT]]:
564+ ; CHECK-NEXT: [[ADD_LCSSA:%.*]] = phi i32 [ [[ADD]], %[[FOR_BODY]] ]
565+ ; CHECK-NEXT: ret i32 [[ADD_LCSSA]]
566566;
567567entry:
568568 br label %for.body
569569
570- for.cond.cleanup: ; preds = %for.body
571- %add.lcssa = phi i32 [ %add , %for.body ]
572- ret i32 %add.lcssa
573-
574570for.body: ; preds = %entry, %for.body
575- %indvars. iv = phi i64 [ 0 , %entry ], [ %indvars. iv.next , %for.body ]
571+ %iv = phi i64 [ 0 , %entry ], [ %iv.next , %for.body ]
576572 %sum.0179 = phi i32 [ 0 , %entry ], [ %add , %for.body ]
577- %arrayidx1 = getelementptr inbounds nuw [ 4 x i32 ] , ptr %tmp , i64 0 , i64 %indvars. iv
573+ %arrayidx1 = getelementptr inbounds nuw i32 , ptr %tmp , i64 % iv
578574 %0 = load i32 , ptr %arrayidx1 , align 4
579575 %add = add i32 %sum.0179 , %0
580- %indvars.iv.next = add nuw nsw i64 %indvars.iv , 1
581- %exitcond.not = icmp eq i64 %indvars.iv.next , %N
582- br i1 %exitcond.not , label %for.cond.cleanup , label %for.body , !prof !2
576+ %iv.next = add nuw nsw i64 %iv , 1
577+ %exitcond.not = icmp eq i64 %iv.next , %N
578+ br i1 %exitcond.not , label %exit , label %for.body , !prof !2
579+
580+ exit: ; preds = %for.body
581+ %add.lcssa = phi i32 [ %add , %for.body ]
582+ ret i32 %add.lcssa
583583}
584584
585585
0 commit comments