XCore target: extend tests in preparation
[oota-llvm.git] / test / CodeGen / XCore / codemodel.ll
1
2 ; RUN: llc < %s -march=xcore | FileCheck %s
3
4 ; CHECK: .section  .cp.rodata.cst4,"aMc",@progbits,4
5 ; CHECK: .long 65536
6 ; CHECK: .text
7 ; CHECK-LABEL: f:
8 ; CHECK: ldc r1, 65532
9 ; CHECK: add r1, r0, r1
10 ; CHECK: ldw r1, r1[0]
11 ; CHECK: ldw r2, cp[.LCPI0_0]
12 ; CHECK: add r0, r0, r2
13 ; CHECK: ldw r0, r0[0]
14 ; CHECK: add r0, r1, r0
15 ; CHECK: ldw r1, dp[l]
16 ; CHECK: add r0, r0, r1
17 ; CHECK: ldw r1, dp[l+4]
18 ; CHECK: add r0, r0, r1
19 ; CHECK: ldw r1, dp[l+392]
20 ; CHECK: add r0, r0, r1
21 ; CHECK: ldw r1, dp[l+396]
22 ; CHECK: add r0, r0, r1
23 ; CHECK: ldw r1, dp[s]
24 ; CHECK: add r0, r0, r1
25 ; CHECK: ldw r1, dp[s+36]
26 ; CHECK: add r0, r0, r1
27 ; CHECK: retsp 0
28 define i32 @f(i32* %i) {
29 entry:
30   %0 = getelementptr inbounds i32* %i, i32 16383
31   %1 = load i32* %0
32   %2 = getelementptr inbounds i32* %i, i32 16384
33   %3 = load i32* %2
34   %4 = add nsw i32 %1, %3
35   %5 = load i32* getelementptr inbounds ([100 x i32]* @l, i32 0, i32 0)
36   %6 = add nsw i32 %4, %5
37   %7 = load i32* getelementptr inbounds ([100 x i32]* @l, i32 0, i32 1)
38   %8 = add nsw i32 %6, %7
39   %9 = load i32* getelementptr inbounds ([100 x i32]* @l, i32 0, i32 98)
40   %10 = add nsw i32 %8, %9
41   %11 = load i32* getelementptr inbounds ([100 x i32]* @l, i32 0, i32 99)
42   %12 = add nsw i32 %10, %11
43   %13 = load i32* getelementptr inbounds ([10 x i32]* @s, i32 0, i32 0)
44   %14 = add nsw i32 %12, %13
45   %15 = load i32* getelementptr inbounds ([10 x i32]* @s, i32 0, i32 9)
46   %16 = add nsw i32 %14, %15
47   ret i32 %16
48 }
49
50 ; CHECK: .section .dp.bss,"awd",@nobits
51 ; CHECK-LABEL: l:
52 ; CHECK: .space 400
53 @l = global [100 x i32] zeroinitializer
54
55 ; CHECK-LABEL: s:
56 ; CHECK: .space 40
57 @s = global [10 x i32] zeroinitializer
58
59 ; CHECK: .section .cp.rodata,"ac",@progbits
60 ; CHECK-LABEL: cl:
61 ; CHECK: .space 400
62 @cl = constant  [100 x i32] zeroinitializer
63
64 ; CHECK-LABEL: cs:
65 ; CHECK: .space 40
66 @cs = constant  [10 x i32] zeroinitializer