CodeGen: extend f16 conversions to permit types > float.
[oota-llvm.git] / test / CodeGen / R600 / unroll.ll
1 ; RUN: opt -loop-unroll -simplifycfg -sroa %s -S -o - | FileCheck %s
2
3 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048-n32:64"
4 target triple = "r600--"
5
6 ; This test contains a simple loop that initializes an array declared in
7 ; private memory.  We want to make sure these kinds of loops are always
8 ; unrolled, because private memory is slow.
9
10 ; CHECK-LABEL: @test
11 ; CHECK-NOT: alloca
12 ; CHECK: store i32 5, i32 addrspace(1)* %out
13 define void @test(i32 addrspace(1)* %out) {
14 entry:
15   %0 = alloca [32 x i32]
16   br label %loop.header
17
18 loop.header:
19   %counter = phi i32 [0, %entry], [%inc, %loop.inc]
20   br label %loop.body
21
22 loop.body:
23   %ptr = getelementptr [32 x i32]* %0, i32 0, i32 %counter
24   store i32 %counter, i32* %ptr
25   br label %loop.inc
26
27 loop.inc:
28   %inc = add i32 %counter, 1
29   %1 = icmp sge i32 %counter, 32
30   br i1 %1, label  %exit, label %loop.header
31
32 exit:
33   %2 = getelementptr [32 x i32]* %0, i32 0, i32 5
34   %3 = load i32* %2
35   store i32 %3, i32 addrspace(1)* %out
36   ret void
37 }