@@ -501,48 +501,48 @@ define i32 @tc4(ptr noundef readonly captures(none) %tmp) vscale_range(1,16) {
501
501
; CHECK: [[VECTOR_BODY]]:
502
502
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
503
503
; 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]]
505
505
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX1]], i32 0
506
506
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <4 x i32>, ptr [[TMP2]], align 4
507
507
; CHECK-NEXT: [[TMP3]] = add <4 x i32> [[VEC_PHI]], [[WIDE_LOAD]]
508
508
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
509
509
; CHECK-NEXT: br i1 true, label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP7:![0-9]+]]
510
510
; CHECK: [[MIDDLE_BLOCK]]:
511
511
; 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]]
513
513
; CHECK: [[SCALAR_PH]]:
514
514
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 4, %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
515
515
; CHECK-NEXT: [[BC_MERGE_RDX:%.*]] = phi i32 [ [[TMP4]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
516
516
; 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]]
520
517
; CHECK: [[FOR_BODY]]:
521
518
; 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]]
524
521
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[ARRAYIDX2]], align 4
525
522
; CHECK-NEXT: [[ADD]] = add i32 [[SUM_0179]], [[TMP5]]
526
523
; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
527
524
; 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]]
529
529
;
530
530
entry:
531
531
br label %for.body
532
532
533
- for.cond.cleanup: ; preds = %for.body
534
- %add.lcssa = phi i32 [ %add , %for.body ]
535
- ret i32 %add.lcssa
536
-
537
533
for.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 ]
539
535
%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
541
537
%0 = load i32 , ptr %arrayidx1 , align 4
542
538
%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
546
546
}
547
547
548
548
; 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
551
551
; CHECK-SAME: ptr noundef readonly captures(none) [[TMP:%.*]], i64 [[N:%.*]]) #[[ATTR1]] {
552
552
; CHECK-NEXT: [[ENTRY:.*]]:
553
553
; 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]]
557
554
; CHECK: [[FOR_BODY]]:
558
555
; 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]]
561
558
; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[ARRAYIDX1]], align 4
562
559
; CHECK-NEXT: [[ADD]] = add i32 [[SUM_0179]], [[TMP0]]
563
560
; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
564
561
; 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]]
566
566
;
567
567
entry:
568
568
br label %for.body
569
569
570
- for.cond.cleanup: ; preds = %for.body
571
- %add.lcssa = phi i32 [ %add , %for.body ]
572
- ret i32 %add.lcssa
573
-
574
570
for.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 ]
576
572
%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
578
574
%0 = load i32 , ptr %arrayidx1 , align 4
579
575
%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
583
583
}
584
584
585
585
0 commit comments