@@ -18,24 +18,23 @@ define i32 @foo(ptr %A, i32 %t) {
18
18
; CHECK-NEXT: entry:
19
19
; CHECK-NEXT: br label [[LOOP_32:%.*]]
20
20
; 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
23
22
; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXITSPLITSPLIT:%.*]]
24
23
; 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:%.*]] ]
26
25
; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXITSPLITSPLIT]]
27
26
; CHECK: loop.exit.loopexitsplitsplit:
28
27
; CHECK-NEXT: [[INDVARS_IV_LCSSA_PH_PH_PH:%.*]] = phi i64 [ [[LSR_IV_LCSSA10]], [[IFMERGE_38_LOOP_EXIT_LOOPEXITSPLITSPLIT_CRIT_EDGE:%.*]] ], [ [[TMP0]], [[LOOP_EXIT_LOOPEXITSPLITSPLITSPLIT:%.*]] ]
29
28
; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXITSPLIT:%.*]]
30
29
; 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:%.*]] ]
32
31
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[LSR_IV_LCSSA11]], 1
33
32
; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXITSPLIT]]
34
33
; CHECK: loop.exit.loopexitsplit:
35
34
; 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]] ]
36
35
; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXIT:%.*]]
37
36
; 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:%.*]] ]
39
38
; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[LSR_IV_LCSSA]], -2
40
39
; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXIT]]
41
40
; CHECK: loop.exit.loopexit:
@@ -49,31 +48,31 @@ define i32 @foo(ptr %A, i32 %t) {
49
48
; CHECK-NEXT: [[I_0_LCSSA:%.*]] = phi i32 [ [[TMP]], [[LOOP_EXIT]] ], [ 50, [[THEN_8_1]] ], [ 50, [[IFMERGE_8:%.*]] ]
50
49
; CHECK-NEXT: ret i32 [[I_0_LCSSA]]
51
50
; 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:%.*]] ]
53
52
; 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
55
54
; CHECK-NEXT: [[SCEVGEP7:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP3]]
56
55
; CHECK-NEXT: [[SCEVGEP8:%.*]] = getelementptr i8, ptr [[SCEVGEP7]], i64 -4
57
56
; CHECK-NEXT: [[GEPLOAD:%.*]] = load i32, ptr [[SCEVGEP8]], align 4
58
57
; 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:%.* ]]
60
59
; 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
62
61
; CHECK-NEXT: [[SCEVGEP5:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP4]]
63
62
; CHECK-NEXT: [[SCEVGEP6:%.*]] = getelementptr i8, ptr [[SCEVGEP5]], i64 -8
64
63
; CHECK-NEXT: [[GEPLOAD18:%.*]] = load i32, ptr [[SCEVGEP6]], align 4
65
64
; CHECK-NEXT: [[CMP_35:%.*]] = icmp slt i32 [[GEPLOAD18]], [[T]]
66
65
; CHECK-NEXT: br i1 [[CMP_35]], label [[THEN_34_LOOP_EXIT_LOOPEXIT_CRIT_EDGE]], label [[IFMERGE_34]]
67
66
; 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
69
68
; CHECK-NEXT: [[SCEVGEP4:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP5]]
70
69
; CHECK-NEXT: [[GEPLOAD20:%.*]] = load i32, ptr [[SCEVGEP4]], align 4
71
70
; CHECK-NEXT: [[CMP_38:%.*]] = icmp sgt i32 [[GEPLOAD20]], [[T]]
72
71
; CHECK-NEXT: [[CMP_39:%.*]] = icmp slt i32 [[GEPLOAD]], [[T]]
73
72
; CHECK-NEXT: [[OR_COND:%.*]] = and i1 [[CMP_38]], [[CMP_39]]
74
73
; CHECK-NEXT: br i1 [[OR_COND]], label [[LOOP_EXIT_LOOPEXITSPLITSPLITSPLIT]], label [[IFMERGE_38]]
75
74
; 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
77
76
; CHECK-NEXT: [[SCEVGEP2:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP6]]
78
77
; CHECK-NEXT: [[SCEVGEP3:%.*]] = getelementptr i8, ptr [[SCEVGEP2]], i64 4
79
78
; CHECK-NEXT: [[GEPLOAD24:%.*]] = load i32, ptr [[SCEVGEP3]], align 4
@@ -82,7 +81,7 @@ define i32 @foo(ptr %A, i32 %t) {
82
81
; CHECK-NEXT: [[OR_COND55:%.*]] = and i1 [[CMP_42]], [[CMP_43]]
83
82
; CHECK-NEXT: br i1 [[OR_COND55]], label [[IFMERGE_38_LOOP_EXIT_LOOPEXITSPLITSPLIT_CRIT_EDGE]], label [[IFMERGE_42]]
84
83
; 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
86
85
; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP7]]
87
86
; CHECK-NEXT: [[SCEVGEP1:%.*]] = getelementptr i8, ptr [[SCEVGEP]], i64 8
88
87
; CHECK-NEXT: [[GEPLOAD28:%.*]] = load i32, ptr [[SCEVGEP1]], align 4
@@ -92,7 +91,7 @@ define i32 @foo(ptr %A, i32 %t) {
92
91
; CHECK-NEXT: br i1 [[OR_COND56]], label [[IFMERGE_42_LOOP_EXIT_LOOPEXITSPLIT_CRIT_EDGE]], label [[IFMERGE_46]]
93
92
; CHECK: ifmerge.46:
94
93
; 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
96
95
; CHECK-NEXT: [[CONDLOOP_32:%.*]] = icmp ult i64 [[NEXTIVLOOP_32]], 12
97
96
; CHECK-NEXT: br i1 [[CONDLOOP_32]], label [[LOOP_32]], label [[LOOP_25:%.*]]
98
97
; CHECK: loop.25:
0 commit comments