55 lines · plain
1; RUN: opt < %s -S -passes=loop-unroll -mtriple aarch64 -mcpu=cortex-a57 | FileCheck %s2 3; Partial unroll 8 times for this loop.4define void @unroll1() nounwind {5entry:6 br label %loop7 8loop:9 %iv = phi i32 [ 0, %entry ], [ %inc, %loop ]10 %inc = add i32 %iv, 111 %exitcnd = icmp uge i32 %inc, 102412 br i1 %exitcnd, label %exit, label %loop13 14exit:15 ret void16}17 18; CHECK: add{{.*}}, 819; CHECK-NEXT: icmp20 21; Partial unroll 16 times for this loop.22define void @unroll2() nounwind {23entry:24 br label %loop125 26loop1:27 %iv1 = phi i32 [ 0, %entry ], [ %inc1, %loop1.latch ]28 br label %loop2.header29 30loop2.header:31 br label %loop232 33loop2:34 %iv2 = phi i32 [ 0, %loop2.header ], [ %inc2, %loop2 ]35 %inc2 = add i32 %iv2, 136 %exitcnd2 = icmp uge i32 %inc2, 102437 br i1 %exitcnd2, label %exit2, label %loop238 39exit2:40 br label %loop1.latch41 42loop1.latch:43 %inc1 = add i32 %iv1, 144 %exitcnd1 = icmp uge i32 %inc1, 102445 br i1 %exitcnd2, label %exit, label %loop146 47exit:48 ret void49}50 51 52 53; CHECK: add{{.*}}, 1654; CHECK-NEXT: icmp55