1; RUN: opt < %s -S -passes=loop-unroll -mtriple aarch64 -mcpu=cortex-a57 | FileCheck %s 2 3; Partial unroll 8 times for this loop. 4define void @unroll1() nounwind { 5entry: 6 br label %loop 7 8loop: 9 %iv = phi i32 [ 0, %entry ], [ %inc, %loop ] 10 %inc = add i32 %iv, 1 11 %exitcnd = icmp uge i32 %inc, 1024 12 br i1 %exitcnd, label %exit, label %loop 13 14exit: 15 ret void 16} 17 18; CHECK: add{{.*}}, 8 19; CHECK-NEXT: icmp 20 21; Partial unroll 16 times for this loop. 22define void @unroll2() nounwind { 23entry: 24 br label %loop1 25 26loop1: 27 %iv1 = phi i32 [ 0, %entry ], [ %inc1, %loop1.latch ] 28 br label %loop2.header 29 30loop2.header: 31 br label %loop2 32 33loop2: 34 %iv2 = phi i32 [ 0, %loop2.header ], [ %inc2, %loop2 ] 35 %inc2 = add i32 %iv2, 1 36 %exitcnd2 = icmp uge i32 %inc2, 1024 37 br i1 %exitcnd2, label %exit2, label %loop2 38 39exit2: 40 br label %loop1.latch 41 42loop1.latch: 43 %inc1 = add i32 %iv1, 1 44 %exitcnd1 = icmp uge i32 %inc1, 1024 45 br i1 %exitcnd2, label %exit, label %loop1 46 47exit: 48 ret void 49} 50 51 52 53; CHECK: add{{.*}}, 16 54; CHECK-NEXT: icmp 55