94 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=loop-unroll -unroll-peel-count=1 < %s | FileCheck %s3 4declare zeroext i8 @patatino()5 6define fastcc void @tinky() {7; CHECK-LABEL: @tinky(8; CHECK-NEXT: entry:9; CHECK-NEXT: br label [[NEXT:%.*]]10; CHECK: loopexit.loopexit:11; CHECK-NEXT: br label [[LOOPEXIT:%.*]]12; CHECK: loopexit:13; CHECK-NEXT: ret void14; CHECK: next:15; CHECK-NEXT: br label [[LOOP_PEEL_BEGIN:%.*]]16; CHECK: loop.peel.begin:17; CHECK-NEXT: br label [[LOOP_PEEL:%.*]]18; CHECK: loop.peel:19; CHECK-NEXT: [[CALL593_PEEL:%.*]] = tail call zeroext i8 @patatino()20; CHECK-NEXT: br i1 false, label [[LOOP_PEEL_NEXT:%.*]], label [[LOOPEXIT]]21; CHECK: loop.peel.next:22; CHECK-NEXT: br label [[LOOP_PEEL_NEXT1:%.*]]23; CHECK: loop.peel.next1:24; CHECK-NEXT: br label [[NEXT_PEEL_NEWPH:%.*]]25; CHECK: next.peel.newph:26; CHECK-NEXT: br label [[LOOP:%.*]]27; CHECK: loop:28; CHECK-NEXT: [[CALL593:%.*]] = tail call zeroext i8 @patatino()29; CHECK-NEXT: br i1 false, label [[LOOP]], label [[LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP0:![0-9]+]]30;31entry:32 br label %next33 34loopexit:35 ret void36 37next:38 br label %loop39 40loop:41 %a = phi i8 [ undef, %next ], [ %call593, %loop ]42 %b = phi i32 [ 0, %next ], [ 1, %loop ]43 %call593 = tail call zeroext i8 @patatino()44 br i1 false, label %loop, label %loopexit45}46 47define void @tinky2() {48; CHECK-LABEL: @tinky2(49; CHECK-NEXT: entry:50; CHECK-NEXT: br label [[NEXT:%.*]]51; CHECK: loopexit.loopexit:52; CHECK-NEXT: br label [[LOOPEXIT:%.*]]53; CHECK: loopexit:54; CHECK-NEXT: ret void55; CHECK: next:56; CHECK-NEXT: br label [[LOOP_PEEL_BEGIN:%.*]]57; CHECK: loop.peel.begin:58; CHECK-NEXT: br label [[LOOP_PEEL:%.*]]59; CHECK: loop.peel:60; CHECK-NEXT: [[CALL593_PEEL:%.*]] = tail call zeroext i8 @patatino()61; CHECK-NEXT: [[B_NEXT_PEEL:%.*]] = add i32 0, 162; CHECK-NEXT: [[COND_PEEL:%.*]] = icmp ne i32 0, 3063; CHECK-NEXT: br i1 [[COND_PEEL]], label [[LOOP_PEEL_NEXT:%.*]], label [[LOOPEXIT]]64; CHECK: loop.peel.next:65; CHECK-NEXT: br label [[LOOP_PEEL_NEXT1:%.*]]66; CHECK: loop.peel.next1:67; CHECK-NEXT: br label [[NEXT_PEEL_NEWPH:%.*]]68; CHECK: next.peel.newph:69; CHECK-NEXT: br label [[LOOP:%.*]]70; CHECK: loop:71; CHECK-NEXT: [[B:%.*]] = phi i32 [ [[B_NEXT_PEEL]], [[NEXT_PEEL_NEWPH]] ], [ [[B_NEXT:%.*]], [[LOOP]] ]72; CHECK-NEXT: [[CALL593:%.*]] = tail call zeroext i8 @patatino()73; CHECK-NEXT: [[B_NEXT]] = add nuw nsw i32 [[B]], 174; CHECK-NEXT: [[COND:%.*]] = icmp ne i32 [[B]], 3075; CHECK-NEXT: br i1 [[COND]], label [[LOOP]], label [[LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP3:![0-9]+]]76;77entry:78 br label %next79 80loopexit:81 ret void82 83next:84 br label %loop85 86loop:87 %a = phi i8 [ undef, %next ], [ %call593, %loop ]88 %b = phi i32 [ 0, %next ], [ %b.next, %loop ]89 %call593 = tail call zeroext i8 @patatino()90 %b.next = add i32 %b, 191 %cond = icmp ne i32 %b, 3092 br i1 %cond, label %loop, label %loopexit93}94