1+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
12; RUN: opt < %s -loop-reduce -S | FileCheck %s
23
34; Provide legal integer types.
@@ -6,6 +7,27 @@ target datalayout = "n8:16:32:64"
67@d = common global i32 0 , align 4
78
89define void @fn2 (i32 %x ) nounwind uwtable {
10+ ; CHECK-LABEL: define void @fn2(
11+ ; CHECK-SAME: i32 [[X:%.*]]) #[[ATTR0:[0-9]+]] {
12+ ; CHECK-NEXT: entry:
13+ ; CHECK-NEXT: br label [[FOR_COND:%.*]]
14+ ; CHECK: for.cond:
15+ ; CHECK-NEXT: [[LSR_IV:%.*]] = phi i32 [ [[LSR_IV_NEXT:%.*]], [[FOR_COND]] ], [ -1, [[ENTRY:%.*]] ]
16+ ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[X]], 0
17+ ; CHECK-NEXT: [[LSR_IV_NEXT]] = add i32 [[LSR_IV]], 1
18+ ; CHECK-NEXT: br i1 [[TOBOOL]], label [[FOR_COND]], label [[FOR_END:%.*]]
19+ ; CHECK: for.end:
20+ ; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @d, align 4
21+ ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @d, align 4
22+ ; CHECK-NEXT: [[TMP0:%.*]] = sub i32 [[TMP1]], [[TMP2]]
23+ ; CHECK-NEXT: [[TOBOOL26:%.*]] = icmp eq i32 [[X]], 0
24+ ; CHECK-NEXT: br i1 [[TOBOOL26]], label [[FOR_END5:%.*]], label [[FOR_BODY_LR_PH:%.*]]
25+ ; CHECK: for.body.lr.ph:
26+ ; CHECK-NEXT: [[TOBOOL3:%.*]] = icmp ne i32 [[TMP0]], [[LSR_IV_NEXT]]
27+ ; CHECK-NEXT: br label [[FOR_END5]]
28+ ; CHECK: for.end5:
29+ ; CHECK-NEXT: ret void
30+ ;
931entry:
1032 br label %for.cond
1133
@@ -16,10 +38,6 @@ for.cond:
1638 br i1 %tobool , label %for.cond , label %for.end
1739
1840for.end:
19- ; CHECK: %tmp1 = load i32, ptr @d, align 4
20- ; CHECK-NEXT: %tmp2 = load i32, ptr @d, align 4
21- ; CHECK-NEXT: %0 = sub i32 %tmp1, %tmp2
22-
2341 %tmp1 = load i32 , ptr @d , align 4
2442 %add = add nsw i32 %tmp1 , %g.0
2543 %tmp2 = load i32 , ptr @d , align 4
0 commit comments