@@ -18,24 +18,23 @@ define i32 @foo(ptr %A, i32 %t) {
1818; CHECK-NEXT: entry:
1919; CHECK-NEXT: br label [[LOOP_32:%.*]]
2020; CHECK: loop.exit.loopexitsplitsplitsplit:
21- ; CHECK-NEXT: [[LSR_IV:%.*]] = phi i64 [ [[LSR_IV1:%.*]], [[IFMERGE_34:%.*]] ]
22- ; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[LSR_IV]], -1
21+ ; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[LSR_IV:%.*]], -1
2322; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXITSPLITSPLIT:%.*]]
2423; CHECK: ifmerge.38.loop.exit.loopexitsplitsplit_crit_edge:
25- ; CHECK-NEXT: [[LSR_IV_LCSSA10:%.*]] = phi i64 [ [[LSR_IV1 ]], [[IFMERGE_38:%.*]] ]
24+ ; CHECK-NEXT: [[LSR_IV_LCSSA10:%.*]] = phi i64 [ [[LSR_IV ]], [[IFMERGE_38:%.*]] ]
2625; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXITSPLITSPLIT]]
2726; CHECK: loop.exit.loopexitsplitsplit:
2827; CHECK-NEXT: [[INDVARS_IV_LCSSA_PH_PH_PH:%.*]] = phi i64 [ [[LSR_IV_LCSSA10]], [[IFMERGE_38_LOOP_EXIT_LOOPEXITSPLITSPLIT_CRIT_EDGE:%.*]] ], [ [[TMP0]], [[LOOP_EXIT_LOOPEXITSPLITSPLITSPLIT:%.*]] ]
2928; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXITSPLIT:%.*]]
3029; CHECK: ifmerge.42.loop.exit.loopexitsplit_crit_edge:
31- ; CHECK-NEXT: [[LSR_IV_LCSSA11:%.*]] = phi i64 [ [[LSR_IV1 ]], [[IFMERGE_42:%.*]] ]
30+ ; CHECK-NEXT: [[LSR_IV_LCSSA11:%.*]] = phi i64 [ [[LSR_IV ]], [[IFMERGE_42:%.*]] ]
3231; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[LSR_IV_LCSSA11]], 1
3332; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXITSPLIT]]
3433; CHECK: loop.exit.loopexitsplit:
3534; CHECK-NEXT: [[INDVARS_IV_LCSSA_PH_PH:%.*]] = phi i64 [ [[TMP1]], [[IFMERGE_42_LOOP_EXIT_LOOPEXITSPLIT_CRIT_EDGE:%.*]] ], [ [[INDVARS_IV_LCSSA_PH_PH_PH]], [[LOOP_EXIT_LOOPEXITSPLITSPLIT]] ]
3635; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXIT:%.*]]
3736; CHECK: then.34.loop.exit.loopexit_crit_edge:
38- ; CHECK-NEXT: [[LSR_IV_LCSSA:%.*]] = phi i64 [ [[LSR_IV1 ]], [[THEN_34:%.*]] ]
37+ ; CHECK-NEXT: [[LSR_IV_LCSSA:%.*]] = phi i64 [ [[LSR_IV ]], [[THEN_34:%.*]] ]
3938; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[LSR_IV_LCSSA]], -2
4039; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXIT]]
4140; CHECK: loop.exit.loopexit:
@@ -49,31 +48,31 @@ define i32 @foo(ptr %A, i32 %t) {
4948; CHECK-NEXT: [[I_0_LCSSA:%.*]] = phi i32 [ [[TMP]], [[LOOP_EXIT]] ], [ 50, [[THEN_8_1]] ], [ 50, [[IFMERGE_8:%.*]] ]
5049; CHECK-NEXT: ret i32 [[I_0_LCSSA]]
5150; CHECK: loop.32:
52- ; CHECK-NEXT: [[LSR_IV1 ]] = phi i64 [ [[LSR_IV_NEXT:%.*]], [[IFMERGE_46:%.*]] ], [ 2, [[ENTRY:%.*]] ]
51+ ; CHECK-NEXT: [[LSR_IV ]] = phi i64 [ [[LSR_IV_NEXT:%.*]], [[IFMERGE_46:%.*]] ], [ 2, [[ENTRY:%.*]] ]
5352; CHECK-NEXT: [[I1_I64_0:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[NEXTIVLOOP_32:%.*]], [[IFMERGE_46]] ]
54- ; CHECK-NEXT: [[TMP3:%.*]] = shl nuw nsw i64 [[LSR_IV1 ]], 2
53+ ; CHECK-NEXT: [[TMP3:%.*]] = shl nuw nsw i64 [[LSR_IV ]], 2
5554; CHECK-NEXT: [[SCEVGEP7:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP3]]
5655; CHECK-NEXT: [[SCEVGEP8:%.*]] = getelementptr i8, ptr [[SCEVGEP7]], i64 -4
5756; CHECK-NEXT: [[GEPLOAD:%.*]] = load i32, ptr [[SCEVGEP8]], align 4
5857; CHECK-NEXT: [[CMP_34:%.*]] = icmp sgt i32 [[GEPLOAD]], [[T]]
59- ; CHECK-NEXT: br i1 [[CMP_34]], label [[THEN_34]], label [[IFMERGE_34]]
58+ ; CHECK-NEXT: br i1 [[CMP_34]], label [[THEN_34]], label [[IFMERGE_34:%.* ]]
6059; CHECK: then.34:
61- ; CHECK-NEXT: [[TMP4:%.*]] = shl nuw nsw i64 [[LSR_IV1 ]], 2
60+ ; CHECK-NEXT: [[TMP4:%.*]] = shl nuw nsw i64 [[LSR_IV ]], 2
6261; CHECK-NEXT: [[SCEVGEP5:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP4]]
6362; CHECK-NEXT: [[SCEVGEP6:%.*]] = getelementptr i8, ptr [[SCEVGEP5]], i64 -8
6463; CHECK-NEXT: [[GEPLOAD18:%.*]] = load i32, ptr [[SCEVGEP6]], align 4
6564; CHECK-NEXT: [[CMP_35:%.*]] = icmp slt i32 [[GEPLOAD18]], [[T]]
6665; CHECK-NEXT: br i1 [[CMP_35]], label [[THEN_34_LOOP_EXIT_LOOPEXIT_CRIT_EDGE]], label [[IFMERGE_34]]
6766; CHECK: ifmerge.34:
68- ; CHECK-NEXT: [[TMP5:%.*]] = shl nuw nsw i64 [[LSR_IV1 ]], 2
67+ ; CHECK-NEXT: [[TMP5:%.*]] = shl nuw nsw i64 [[LSR_IV ]], 2
6968; CHECK-NEXT: [[SCEVGEP4:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP5]]
7069; CHECK-NEXT: [[GEPLOAD20:%.*]] = load i32, ptr [[SCEVGEP4]], align 4
7170; CHECK-NEXT: [[CMP_38:%.*]] = icmp sgt i32 [[GEPLOAD20]], [[T]]
7271; CHECK-NEXT: [[CMP_39:%.*]] = icmp slt i32 [[GEPLOAD]], [[T]]
7372; CHECK-NEXT: [[OR_COND:%.*]] = and i1 [[CMP_38]], [[CMP_39]]
7473; CHECK-NEXT: br i1 [[OR_COND]], label [[LOOP_EXIT_LOOPEXITSPLITSPLITSPLIT]], label [[IFMERGE_38]]
7574; CHECK: ifmerge.38:
76- ; CHECK-NEXT: [[TMP6:%.*]] = shl nuw nsw i64 [[LSR_IV1 ]], 2
75+ ; CHECK-NEXT: [[TMP6:%.*]] = shl nuw nsw i64 [[LSR_IV ]], 2
7776; CHECK-NEXT: [[SCEVGEP2:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP6]]
7877; CHECK-NEXT: [[SCEVGEP3:%.*]] = getelementptr i8, ptr [[SCEVGEP2]], i64 4
7978; CHECK-NEXT: [[GEPLOAD24:%.*]] = load i32, ptr [[SCEVGEP3]], align 4
@@ -82,7 +81,7 @@ define i32 @foo(ptr %A, i32 %t) {
8281; CHECK-NEXT: [[OR_COND55:%.*]] = and i1 [[CMP_42]], [[CMP_43]]
8382; CHECK-NEXT: br i1 [[OR_COND55]], label [[IFMERGE_38_LOOP_EXIT_LOOPEXITSPLITSPLIT_CRIT_EDGE]], label [[IFMERGE_42]]
8483; CHECK: ifmerge.42:
85- ; CHECK-NEXT: [[TMP7:%.*]] = shl nuw nsw i64 [[LSR_IV1 ]], 2
84+ ; CHECK-NEXT: [[TMP7:%.*]] = shl nuw nsw i64 [[LSR_IV ]], 2
8685; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP7]]
8786; CHECK-NEXT: [[SCEVGEP1:%.*]] = getelementptr i8, ptr [[SCEVGEP]], i64 8
8887; CHECK-NEXT: [[GEPLOAD28:%.*]] = load i32, ptr [[SCEVGEP1]], align 4
@@ -92,7 +91,7 @@ define i32 @foo(ptr %A, i32 %t) {
9291; CHECK-NEXT: br i1 [[OR_COND56]], label [[IFMERGE_42_LOOP_EXIT_LOOPEXITSPLIT_CRIT_EDGE]], label [[IFMERGE_46]]
9392; CHECK: ifmerge.46:
9493; CHECK-NEXT: [[NEXTIVLOOP_32]] = add nuw nsw i64 [[I1_I64_0]], 1
95- ; CHECK-NEXT: [[LSR_IV_NEXT]] = add nuw nsw i64 [[LSR_IV1 ]], 4
94+ ; CHECK-NEXT: [[LSR_IV_NEXT]] = add nuw nsw i64 [[LSR_IV ]], 4
9695; CHECK-NEXT: [[CONDLOOP_32:%.*]] = icmp ult i64 [[NEXTIVLOOP_32]], 12
9796; CHECK-NEXT: br i1 [[CONDLOOP_32]], label [[LOOP_32]], label [[LOOP_25:%.*]]
9897; CHECK: loop.25:
0 commit comments