@@ -87,15 +87,27 @@ define i64 @peel_single_block_loop_iv_step_1_eq_pred() {
87
87
; CHECK-NEXT: [[ENTRY:.*]]:
88
88
; CHECK-NEXT: br label %[[LOOP:.*]]
89
89
; CHECK: [[LOOP]]:
90
- ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
90
+ ; CHECK-NEXT: [[IV1:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV:%.*]], %[[LOOP]] ]
91
+ ; CHECK-NEXT: call void @foo(i32 20)
92
+ ; CHECK-NEXT: [[IV]] = add nuw nsw i64 [[IV1]], 1
91
93
; CHECK-NEXT: [[CMP18_NOT:%.*]] = icmp eq i64 [[IV]], 63
92
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP18_NOT]], i32 10, i32 20
94
+ ; CHECK-NEXT: br i1 [[CMP18_NOT]], label %[[EXIT_PEEL_BEGIN:.*]], label %[[LOOP]], !llvm.loop [[LOOP2:![0-9]+]]
95
+ ; CHECK: [[EXIT_PEEL_BEGIN]]:
96
+ ; CHECK-NEXT: [[IV_LCSSA:%.*]] = phi i64 [ [[IV]], %[[LOOP]] ]
97
+ ; CHECK-NEXT: [[IV_LCSSA1:%.*]] = phi i64 [ [[IV1]], %[[LOOP]] ]
98
+ ; CHECK-NEXT: br label %[[LOOP_PEEL:.*]]
99
+ ; CHECK: [[LOOP_PEEL]]:
100
+ ; CHECK-NEXT: [[CMP_PEEL:%.*]] = icmp eq i64 [[IV_LCSSA]], 63
101
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP_PEEL]], i32 10, i32 20
93
102
; CHECK-NEXT: call void @foo(i32 [[COND]])
94
- ; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV ]], 1
103
+ ; CHECK-NEXT: [[IV_NEXT:%.* ]] = add i64 [[IV_LCSSA ]], 1
95
104
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 64
96
- ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT:.*]], label %[[LOOP]]
105
+ ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT_PEEL_NEXT:.*]], label %[[EXIT_PEEL_NEXT]]
106
+ ; CHECK: [[EXIT_PEEL_NEXT]]:
107
+ ; CHECK-NEXT: br label %[[LOOP_PEEL_NEXT:.*]]
108
+ ; CHECK: [[LOOP_PEEL_NEXT]]:
109
+ ; CHECK-NEXT: br label %[[EXIT:.*]]
97
110
; CHECK: [[EXIT]]:
98
- ; CHECK-NEXT: [[IV_LCSSA:%.*]] = phi i64 [ [[IV]], %[[LOOP]] ]
99
111
; CHECK-NEXT: ret i64 [[IV_LCSSA]]
100
112
;
101
113
entry:
@@ -157,7 +169,7 @@ define i64 @peel_single_block_loop_iv_step_1_nested_loop() {
157
169
; CHECK-NEXT: call void @foo(i32 20)
158
170
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
159
171
; CHECK-NEXT: [[EC:%.*]] = icmp ne i64 [[IV_NEXT]], 63
160
- ; CHECK-NEXT: br i1 [[EC]], label %[[LOOP]], label %[[OUTER_LATCH_PEEL_BEGIN:.*]], !llvm.loop [[LOOP2 :![0-9]+]]
172
+ ; CHECK-NEXT: br i1 [[EC]], label %[[LOOP]], label %[[OUTER_LATCH_PEEL_BEGIN:.*]], !llvm.loop [[LOOP3 :![0-9]+]]
161
173
; CHECK: [[OUTER_LATCH_PEEL_BEGIN]]:
162
174
; CHECK-NEXT: [[IV_NEXT_LCSSA:%.*]] = phi i64 [ [[IV_NEXT]], %[[LOOP]] ]
163
175
; CHECK-NEXT: br label %[[LOOP_PEEL:.*]]
@@ -217,7 +229,7 @@ define i64 @peel_multi_block_loop_iv_step_1() {
217
229
; CHECK: [[LATCH]]:
218
230
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
219
231
; CHECK-NEXT: [[EC:%.*]] = icmp ne i64 [[IV_NEXT]], 63
220
- ; CHECK-NEXT: br i1 [[EC]], label %[[LOOP]], label %[[EXIT_PEEL_BEGIN:.*]], !llvm.loop [[LOOP3 :![0-9]+]]
232
+ ; CHECK-NEXT: br i1 [[EC]], label %[[LOOP]], label %[[EXIT_PEEL_BEGIN:.*]], !llvm.loop [[LOOP4 :![0-9]+]]
221
233
; CHECK: [[EXIT_PEEL_BEGIN]]:
222
234
; CHECK-NEXT: [[IV_NEXT_LCSSA:%.*]] = phi i64 [ [[IV_NEXT]], %[[LATCH]] ]
223
235
; CHECK-NEXT: [[IV_LCSSA:%.*]] = phi i64 [ [[IV]], %[[LATCH]] ]
@@ -429,7 +441,7 @@ define i32 @peel_loop_with_branch_and_phi_uses(ptr %x, i1 %c) {
429
441
; CHECK-NEXT: [[ADD1]] = add nsw i32 [[L1]], [[RED1]]
430
442
; CHECK-NEXT: [[IV_NEXT1]] = add nuw nsw i32 [[IV1]], 1
431
443
; CHECK-NEXT: [[EC1:%.*]] = icmp ne i32 [[IV_NEXT1]], 99
432
- ; CHECK-NEXT: br i1 [[EC1]], label %[[LOOP_HEADER]], label %[[LOOPEXIT_PEEL_BEGIN:.*]], !llvm.loop [[LOOP4 :![0-9]+]]
444
+ ; CHECK-NEXT: br i1 [[EC1]], label %[[LOOP_HEADER]], label %[[LOOPEXIT_PEEL_BEGIN:.*]], !llvm.loop [[LOOP5 :![0-9]+]]
433
445
; CHECK: [[LOOPEXIT_PEEL_BEGIN]]:
434
446
; CHECK-NEXT: [[RED:%.*]] = phi i32 [ [[ADD1]], %[[LOOP_LATCH]] ]
435
447
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ [[IV_NEXT1]], %[[LOOP_LATCH]] ]
@@ -497,4 +509,5 @@ declare i1 @cond()
497
509
; CHECK: [[LOOP2]] = distinct !{[[LOOP2]], [[META1]]}
498
510
; CHECK: [[LOOP3]] = distinct !{[[LOOP3]], [[META1]]}
499
511
; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]]}
512
+ ; CHECK: [[LOOP5]] = distinct !{[[LOOP5]], [[META1]]}
500
513
;.
0 commit comments