1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
1
2
; RUN: opt < %s -loop-reduce -S | FileCheck %s
2
3
3
4
; Provide legal integer types.
@@ -6,6 +7,27 @@ target datalayout = "n8:16:32:64"
6
7
@d = common global i32 0 , align 4
7
8
8
9
define 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
+ ;
9
31
entry:
10
32
br label %for.cond
11
33
@@ -16,10 +38,6 @@ for.cond:
16
38
br i1 %tobool , label %for.cond , label %for.end
17
39
18
40
for.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
-
23
41
%tmp1 = load i32 , ptr @d , align 4
24
42
%add = add nsw i32 %tmp1 , %g.0
25
43
%tmp2 = load i32 , ptr @d , align 4
0 commit comments