blob: 4ab79a935c91eb1c8474e99ee6110a61da880165 [file] [log] [blame]
Eric Christophercee313d2019-04-17 04:52:47 +00001; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -indvars < %s | FileCheck %s
3
4define i16 @test() {
5; CHECK-LABEL: @test(
6; CHECK-NEXT: entry:
7; CHECK-NEXT: br label [[LOOP1:%.*]]
8; CHECK: loop1:
9; CHECK-NEXT: [[L1:%.*]] = phi i16 [ 0, [[ENTRY:%.*]] ], [ [[L1_ADD:%.*]], [[LOOP1]] ]
10; CHECK-NEXT: [[L1_ADD]] = add nuw nsw i16 [[L1]], 1
11; CHECK-NEXT: [[CMP1:%.*]] = icmp ult i16 [[L1_ADD]], 2
12; CHECK-NEXT: br i1 [[CMP1]], label [[LOOP1]], label [[LOOP2_PREHEADER:%.*]]
13; CHECK: loop2.preheader:
14; CHECK-NEXT: br label [[LOOP2:%.*]]
15; CHECK: loop2:
16; CHECK-NEXT: [[K2:%.*]] = phi i16 [ [[K2_ADD:%.*]], [[LOOP2]] ], [ 182, [[LOOP2_PREHEADER]] ]
17; CHECK-NEXT: [[L2:%.*]] = phi i16 [ [[L2_ADD:%.*]], [[LOOP2]] ], [ 0, [[LOOP2_PREHEADER]] ]
18; CHECK-NEXT: [[L2_ADD]] = add nuw nsw i16 [[L2]], 1
19; CHECK-NEXT: tail call void @foo(i16 [[K2]])
20; CHECK-NEXT: [[K2_ADD]] = add nuw nsw i16 [[K2]], 1
21; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i16 [[L2_ADD]], 2
22; CHECK-NEXT: br i1 [[CMP2]], label [[LOOP2]], label [[LOOP2_END:%.*]]
23; CHECK: loop2.end:
24; CHECK-NEXT: [[K2_ADD_LCSSA:%.*]] = phi i16 [ [[K2_ADD]], [[LOOP2]] ]
25; CHECK-NEXT: ret i16 [[K2_ADD_LCSSA]]
26;
27entry:
28 br label %loop1
29
30loop1: ; preds = %entry, %loop1
31 %k1 = phi i16 [ 180, %entry ], [ %k1.add, %loop1 ]
32 %l1 = phi i16 [ 0, %entry ], [ %l1.add, %loop1 ]
33 %k1.add = add nuw nsw i16 %k1, 1
34 %l1.add = add nuw nsw i16 %l1, 1
35 %cmp1 = icmp ult i16 %l1.add, 2
36 br i1 %cmp1, label %loop1, label %loop2.preheader
37
38loop2.preheader: ; preds = %loop1
39 %k1.add.lcssa = phi i16 [ %k1.add, %loop1 ]
40 br label %loop2
41
42loop2: ; preds = %loop2.preheader, %loop2
43 %k2 = phi i16 [ %k2.add, %loop2 ], [ %k1.add.lcssa, %loop2.preheader ]
44 %l2 = phi i16 [ %l2.add, %loop2 ], [ 0, %loop2.preheader ]
45 %l2.add = add nuw i16 %l2, 1
46 tail call void @foo(i16 %k2)
47 %k2.add = add nuw nsw i16 %k2, 1
48 %cmp2 = icmp ult i16 %l2.add, 2
49 br i1 %cmp2, label %loop2, label %loop2.end
50
51loop2.end: ; preds = %loop2
52 %k2.add.lcssa = phi i16 [ %k2.add, %loop2 ]
53 ret i16 %k2.add.lcssa
54}
55
56declare void @foo(i16)