@@ -85,6 +85,7 @@ define i64 @peel_single_block_loop_iv_step_1_eq_pred() {
85
85
; CHECK-NEXT: [[ENTRY:.*]]:
86
86
; CHECK-NEXT: br label %[[LOOP:.*]]
87
87
; CHECK: [[LOOP]]:
88
+ <<<<<<< HEAD
88
89
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
89
90
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i64 [[IV]], 63
90
91
; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i32 10, i32 20
@@ -93,7 +94,38 @@ define i64 @peel_single_block_loop_iv_step_1_eq_pred() {
93
94
; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 64
94
95
; CHECK-NEXT: br i1 [[EC]], label %[[EXIT:.*]], label %[[LOOP]]
95
96
; CHECK: [[EXIT]]:
97
+ ||||||| parent of 4da8bc5afc5b (!fixup address latest comments, thanks)
98
+ ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
99
+ ; CHECK-NEXT: [[CMP18_NOT:%.*]] = icmp eq i64 [[IV]], 63
100
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP18_NOT]], i32 10, i32 20
101
+ ; CHECK-NEXT: call void @foo(i32 [[COND]])
102
+ ; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
103
+ ; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 64
104
+ ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT:.*]], label %[[LOOP]]
105
+ ; CHECK: [[EXIT]]:
106
+ =======
107
+ ; CHECK-NEXT: [[IV1:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV:%.*]], %[[LOOP]] ]
108
+ ; CHECK-NEXT: call void @foo(i32 20)
109
+ ; CHECK-NEXT: [[IV]] = add nuw nsw i64 [[IV1]], 1
110
+ ; CHECK-NEXT: [[CMP18_NOT:%.*]] = icmp eq i64 [[IV]], 63
111
+ ; CHECK-NEXT: br i1 [[CMP18_NOT]], label %[[EXIT_PEEL_BEGIN:.*]], label %[[LOOP]], !llvm.loop [[LOOP2:![0-9]+]]
112
+ ; CHECK: [[EXIT_PEEL_BEGIN]]:
113
+ >>>>>>> 4da8bc5afc5b (!fixup address latest comments, thanks)
96
114
; CHECK-NEXT: [[IV_LCSSA:%.*]] = phi i64 [ [[IV]], %[[LOOP]] ]
115
+ ; CHECK-NEXT: [[IV_LCSSA1:%.*]] = phi i64 [ [[IV1]], %[[LOOP]] ]
116
+ ; CHECK-NEXT: br label %[[LOOP_PEEL:.*]]
117
+ ; CHECK: [[LOOP_PEEL]]:
118
+ ; CHECK-NEXT: [[CMP_PEEL:%.*]] = icmp eq i64 [[IV_LCSSA]], 63
119
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP_PEEL]], i32 10, i32 20
120
+ ; CHECK-NEXT: call void @foo(i32 [[COND]])
121
+ ; CHECK-NEXT: [[IV_NEXT:%.*]] = add i64 [[IV_LCSSA]], 1
122
+ ; CHECK-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 64
123
+ ; CHECK-NEXT: br i1 [[EC]], label %[[EXIT_PEEL_NEXT:.*]], label %[[EXIT_PEEL_NEXT]]
124
+ ; CHECK: [[EXIT_PEEL_NEXT]]:
125
+ ; CHECK-NEXT: br label %[[LOOP_PEEL_NEXT:.*]]
126
+ ; CHECK: [[LOOP_PEEL_NEXT]]:
127
+ ; CHECK-NEXT: br label %[[EXIT:.*]]
128
+ ; CHECK: [[EXIT]]:
97
129
; CHECK-NEXT: ret i64 [[IV_LCSSA]]
98
130
;
99
131
entry:
@@ -152,7 +184,7 @@ define i64 @peel_single_block_loop_iv_step_1_nested_loop() {
152
184
; CHECK-NEXT: [[OUTER_IV:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[OUTER_IV_NEXT:%.*]], %[[OUTER_LATCH:.*]] ]
153
185
; CHECK-NEXT: br label %[[LOOP:.*]]
154
186
; CHECK: [[LOOP]]:
155
- ;
187
+ <<< ;
156
188
entry:
157
189
br label %outer.header
158
190
@@ -435,7 +467,7 @@ define i32 @peel_loop_with_branch_and_phi_uses(ptr %x, i1 %c) {
435
467
; CHECK-NEXT: [[ADD1]] = add nsw i32 [[L1]], [[RED1]]
436
468
; CHECK-NEXT: [[IV_NEXT1]] = add nuw nsw i32 [[IV1]], 1
437
469
; CHECK-NEXT: [[EC1:%.*]] = icmp ne i32 [[IV_NEXT1]], 99
438
- ; CHECK-NEXT: br i1 [[EC1]], label %[[LOOP_HEADER]], label %[[LOOPEXIT_PEEL_BEGIN:.*]], !llvm.loop [[LOOP4 :![0-9]+]]
470
+ ; CHECK-NEXT: br i1 [[EC1]], label %[[LOOP_HEADER]], label %[[LOOPEXIT_PEEL_BEGIN:.*]], !llvm.loop [[LOOP5 :![0-9]+]]
439
471
; CHECK: [[LOOPEXIT_PEEL_BEGIN]]:
440
472
; CHECK-NEXT: [[RED:%.*]] = phi i32 [ [[ADD1]], %[[LOOP_LATCH]] ]
441
473
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ [[IV_NEXT1]], %[[LOOP_LATCH]] ]
0 commit comments