xref: /llvm-project/llvm/test/Transforms/LoopUnroll/unroll-after-peel.ll (revision 3a8e009f97d2ed4b751365e514e0bf7131c7ab11)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -passes=loop-unroll -S | FileCheck %s
3
4define i64 @hoge(i1 %c) {
5; CHECK-LABEL: @hoge(
6; CHECK-NEXT:  bb:
7; CHECK-NEXT:    br label [[BB1_PEEL_BEGIN:%.*]]
8; CHECK:       bb1.peel.begin:
9; CHECK-NEXT:    br label [[BB1_PEEL:%.*]]
10; CHECK:       bb1.peel:
11; CHECK-NEXT:    br i1 [[C:%.*]], label [[BB2_PEEL:%.*]], label [[BB4:%.*]]
12; CHECK:       bb2.peel:
13; CHECK-NEXT:    [[TMP3_PEEL:%.*]] = icmp slt i32 0, 9
14; CHECK-NEXT:    br i1 [[TMP3_PEEL]], label [[BB1_PEEL_NEXT:%.*]], label [[BB4]]
15; CHECK:       bb1.peel.next:
16; CHECK-NEXT:    br label [[BB1_PEEL_NEXT1:%.*]]
17; CHECK:       bb1.peel.next1:
18; CHECK-NEXT:    br label [[BB_PEEL_NEWPH:%.*]]
19; CHECK:       bb.peel.newph:
20; CHECK-NEXT:    br label [[BB1:%.*]]
21; CHECK:       bb1:
22; CHECK-NEXT:    br i1 [[C]], label [[BB1]], label [[BB4_LOOPEXIT:%.*]], !llvm.loop [[LOOP0:![0-9]+]]
23; CHECK:       bb4.loopexit:
24; CHECK-NEXT:    [[TMP5_PH:%.*]] = phi i32 [ 8, [[BB1]] ]
25; CHECK-NEXT:    br label [[BB4]]
26; CHECK:       bb4:
27; CHECK-NEXT:    [[TMP5:%.*]] = phi i32 [ 0, [[BB1_PEEL]] ], [ 8, [[BB2_PEEL]] ], [ [[TMP5_PH]], [[BB4_LOOPEXIT]] ]
28; CHECK-NEXT:    [[TMP6:%.*]] = call i64 (...) @llvm.experimental.deoptimize.i64(i32 10) [ "deopt"() ]
29; CHECK-NEXT:    ret i64 [[TMP6]]
30;
31bb:
32  br label %bb1
33
34bb1:                                              ; preds = %bb2, %bb
35  %tmp = phi i32 [ 8, %bb2 ], [ 0, %bb ]
36  br i1 %c, label %bb2, label %bb4
37
38bb2:                                              ; preds = %bb1
39  %tmp3 = icmp slt i32 %tmp, 9
40  br i1 %tmp3, label %bb1, label %bb4
41
42bb4:                                              ; preds = %bb2, %bb1
43  %tmp5 = phi i32 [ 8, %bb2 ], [ %tmp, %bb1 ]
44  %tmp6 = call i64 (...) @llvm.experimental.deoptimize.i64(i32 10) [ "deopt"() ]
45  ret i64 %tmp6
46}
47
48declare i64 @llvm.experimental.deoptimize.i64(...)
49