44define i32 @pr131465 (i1 %x ) mustprogress {
55; CHECK-LABEL: define i32 @pr131465(
66; CHECK-SAME: i1 [[X:%.*]]) #[[ATTR0:[0-9]+]] {
7- ; CHECK-NEXT: [[ENTRY:.*:]]
7+ ; CHECK-NEXT: [[ENTRY:.*]]:
88; CHECK-NEXT: [[INC:%.*]] = zext i1 [[X]] to i32
9- ; CHECK-NEXT: [[TMP0:%.*]] = sub i32 0, [[INC]]
10- ; CHECK-NEXT: [[TMP1:%.*]] = udiv i32 [[TMP0]], [[INC]]
11- ; CHECK-NEXT: [[TMP2:%.*]] = add i32 [[TMP1]], 1
12- ; CHECK-NEXT: [[XTRAITER:%.*]] = and i32 [[TMP2]], 1
13- ; CHECK-NEXT: [[TMP3:%.*]] = icmp ult i32 [[TMP1]], 1
14- ; CHECK-NEXT: br i1 [[TMP3]], label %[[FOR_END_UNR_LCSSA:.*]], label %[[ENTRY_NEW:.*]]
15- ; CHECK: [[ENTRY_NEW]]:
16- ; CHECK-NEXT: [[UNROLL_ITER:%.*]] = sub i32 [[TMP2]], [[XTRAITER]]
179; CHECK-NEXT: br label %[[FOR_BODY:.*]]
1810; CHECK: [[FOR_BODY]]:
19- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i32 [ 2, %[[ENTRY_NEW]] ], [ [[NEXT_1:%.*]], %[[FOR_BODY]] ]
20- ; CHECK-NEXT: [[NITER:%.*]] = phi i32 [ 0, %[[ENTRY_NEW]] ], [ [[NITER_NEXT_1:%.*]], %[[FOR_BODY]] ]
11+ ; CHECK-NEXT: [[INDVAR:%.*]] = phi i32 [ 2, %[[ENTRY]] ], [ [[NEXT_1:%.*]], %[[FOR_BODY_1:.*]] ]
2112; CHECK-NEXT: [[NEXT:%.*]] = add nsw i32 [[INDVAR]], [[INC]]
13+ ; CHECK-NEXT: [[EXITCOND:%.*]] = icmp eq i32 [[NEXT]], 2
14+ ; CHECK-NEXT: br i1 [[EXITCOND]], label %[[FOR_END:.*]], label %[[FOR_BODY_1]], !llvm.loop [[LOOP0:![0-9]+]]
15+ ; CHECK: [[FOR_BODY_1]]:
2216; CHECK-NEXT: [[NEXT_1]] = add nsw i32 [[NEXT]], [[INC]]
23- ; CHECK-NEXT: [[NITER_NEXT_1]] = add i32 [[NITER]], 2
24- ; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i32 [[NITER_NEXT_1]], [[UNROLL_ITER]]
25- ; CHECK-NEXT: br i1 [[NITER_NCMP_1]], label %[[FOR_END_UNR_LCSSA_LOOPEXIT:.*]], label %[[FOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
26- ; CHECK: [[FOR_END_UNR_LCSSA_LOOPEXIT]]:
27- ; CHECK-NEXT: br label %[[FOR_END_UNR_LCSSA]]
28- ; CHECK: [[FOR_END_UNR_LCSSA]]:
29- ; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
30- ; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[FOR_BODY_EPIL_PREHEADER:.*]], label %[[FOR_END:.*]]
31- ; CHECK: [[FOR_BODY_EPIL_PREHEADER]]:
32- ; CHECK-NEXT: br label %[[FOR_BODY_EPIL:.*]]
33- ; CHECK: [[FOR_BODY_EPIL]]:
34- ; CHECK-NEXT: br label %[[FOR_END]]
17+ ; CHECK-NEXT: [[EXITCOND_1:%.*]] = icmp eq i32 [[NEXT_1]], 2
18+ ; CHECK-NEXT: br i1 [[EXITCOND_1]], label %[[FOR_END]], label %[[FOR_BODY]], !llvm.loop [[LOOP2:![0-9]+]]
3519; CHECK: [[FOR_END]]:
3620; CHECK-NEXT: ret i32 0
3721;
@@ -53,5 +37,7 @@ for.end:
5337!0 = !{!0 , !{!"llvm.loop.unroll.count" , i32 2 }}
5438;.
5539; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]]}
56- ; CHECK: [[META1]] = !{!"llvm.loop.unroll.disable"}
40+ ; CHECK: [[META1]] = !{!"llvm.loop.unroll.count", i32 2}
41+ ; CHECK: [[LOOP2]] = distinct !{[[LOOP2]], [[META3:![0-9]+]]}
42+ ; CHECK: [[META3]] = !{!"llvm.loop.unroll.disable"}
5743;.
0 commit comments