; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -loop-unroll -unroll-count=4 -unroll-peel-count=1 < %s | FileCheck %s

declare zeroext i8 @patatino()

define fastcc void @tinky() {
; CHECK-LABEL: @tinky(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br label [[NEXT:%.*]]
; CHECK:       loopexit:
; CHECK-NEXT:    ret void
; CHECK:       next:
; CHECK-NEXT:    br label [[LOOP_PEEL_BEGIN:%.*]]
; CHECK:       loop.peel.begin:
; CHECK-NEXT:    br label [[LOOP_PEEL:%.*]]
; CHECK:       loop.peel:
; CHECK-NEXT:    [[CALL593_PEEL:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    br i1 false, label [[LOOP_PEEL_NEXT:%.*]], label [[LOOPEXIT:%.*]]
; CHECK:       loop.peel.next:
; CHECK-NEXT:    br label [[LOOP_PEEL_NEXT1:%.*]]
; CHECK:       loop.peel.next1:
; CHECK-NEXT:    br label [[NEXT_PEEL_NEWPH:%.*]]
; CHECK:       next.peel.newph:
; CHECK-NEXT:    br label [[LOOP:%.*]]
; CHECK:       loop:
; CHECK-NEXT:    [[CALL593:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    br label [[LOOPEXIT]]
;
entry:
  br label %next

loopexit:
  ret void

next:
  br label %loop

loop:
  %a = phi i8 [ undef, %next ], [ %call593, %loop ]
  %b = phi i32 [ 0, %next ], [ 1, %loop ]
  %call593 = tail call zeroext i8 @patatino()
  br i1 false, label %loop, label %loopexit
}

define void @tinky2() {
; CHECK-LABEL: @tinky2(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br label [[NEXT:%.*]]
; CHECK:       loopexit.loopexit:
; CHECK-NEXT:    br label [[LOOPEXIT:%.*]]
; CHECK:       loopexit:
; CHECK-NEXT:    ret void
; CHECK:       next:
; CHECK-NEXT:    br label [[LOOP_PEEL_BEGIN:%.*]]
; CHECK:       loop.peel.begin:
; CHECK-NEXT:    br label [[LOOP_PEEL:%.*]]
; CHECK:       loop.peel:
; CHECK-NEXT:    [[CALL593_PEEL:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    [[B_NEXT_PEEL:%.*]] = add i32 0, 1
; CHECK-NEXT:    [[COND_PEEL:%.*]] = icmp ne i32 0, 30
; CHECK-NEXT:    br i1 [[COND_PEEL]], label [[LOOP_PEEL_NEXT:%.*]], label [[LOOPEXIT]]
; CHECK:       loop.peel.next:
; CHECK-NEXT:    br label [[LOOP_PEEL_NEXT1:%.*]]
; CHECK:       loop.peel.next1:
; CHECK-NEXT:    br label [[NEXT_PEEL_NEWPH:%.*]]
; CHECK:       next.peel.newph:
; CHECK-NEXT:    br label [[LOOP:%.*]]
; CHECK:       loop:
; CHECK-NEXT:    [[B:%.*]] = phi i32 [ [[B_NEXT_PEEL]], [[NEXT_PEEL_NEWPH]] ], [ [[B_NEXT_3:%.*]], [[LOOP_2:%.*]] ]
; CHECK-NEXT:    [[CALL593:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    [[B_NEXT:%.*]] = add nuw nsw i32 [[B]], 1
; CHECK-NEXT:    [[CALL593_1:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    [[B_NEXT_1:%.*]] = add nuw nsw i32 [[B_NEXT]], 1
; CHECK-NEXT:    [[COND_1:%.*]] = icmp ne i32 [[B_NEXT]], 30
; CHECK-NEXT:    br i1 [[COND_1]], label [[LOOP_2]], label [[LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop !0
; CHECK:       loop.2:
; CHECK-NEXT:    [[CALL593_2:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    [[B_NEXT_2:%.*]] = add nuw nsw i32 [[B_NEXT_1]], 1
; CHECK-NEXT:    [[CALL593_3:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    [[B_NEXT_3]] = add nuw nsw i32 [[B_NEXT_2]], 1
; CHECK-NEXT:    br label [[LOOP]], !llvm.loop !2
;
entry:
  br label %next

loopexit:
  ret void

next:
  br label %loop

loop:
  %a = phi i8 [ undef, %next ], [ %call593, %loop ]
  %b = phi i32 [ 0, %next ], [ %b.next, %loop ]
  %call593 = tail call zeroext i8 @patatino()
  %b.next = add i32 %b, 1
  %cond = icmp ne i32 %b, 30
  br i1 %cond, label %loop, label %loopexit
}
