1 ; RUN: llvm-as < %s | opt -loop-unroll -unroll-count 6 -unroll-threshold 300 | llvm-dis > %t
2 ; RUN: grep {br label \%bbe} %t | count 12
3 ; RUN: grep {br i1 \%z} %t | count 3
4 ; RUN: grep {br i1 \%q} %t | count 6
5 ; RUN: grep call %t | count 12
6 ; RUN: grep urem %t | count 6
7 ; RUN: grep store %t | count 6
8 ; RUN: grep phi %t | count 11
9 ; RUN: grep {lcssa = phi} %t | count 2
12 ; - an unknown tripcount, but a known trip multiple of 2.
13 ; - an unroll count of 6, so we should get 3 conditional branches
15 ; - values defined inside the loop and used outside, by phis that
16 ; also use values defined elsewhere outside the loop.
17 ; - a phi inside the loop that only uses values defined
18 ; inside the loop and is only used inside the loop.
23 define i32 @fib(i32 %n, i1 %a, i32* %p) nounwind {
26 br i1 %a, label %bb, label %return
28 bb: ; loop header block
29 %t0 = phi i32 [ 0, %entry ], [ %t1, %bbe ]
31 %q = trunc i32 %td to i1
32 br i1 %q, label %bbt, label %bbf
34 %bbtv = call i32 @foo()
37 %bbfv = call i32 @bar()
39 bbe: ; loop latch block
40 %bbpv = phi i32 [ %bbtv, %bbt ], [ %bbfv, %bbf ]
41 store i32 %bbpv, i32* %p
43 %z = icmp ne i32 %t1, %n2
44 br i1 %z, label %bb, label %return
47 %f = phi i32 [ -2, %entry ], [ %t0, %bbe ]
48 %g = phi i32 [ -3, %entry ], [ %t1, %bbe ]