summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRobert Lytton <robert@xmos.com>2013-12-02 10:18:24 +0000
committerRobert Lytton <robert@xmos.com>2013-12-02 10:18:24 +0000
commit7112fa0523039a7316000e034a803d0f052133aa (patch)
treebb72715eb2c16c8af5d9e7e52c6d6f9da07d502c /test
parent25464b948f269ae56798f3f66cdb3404b0e8cad0 (diff)
downloadllvm-7112fa0523039a7316000e034a803d0f052133aa.tar.gz
llvm-7112fa0523039a7316000e034a803d0f052133aa.tar.bz2
llvm-7112fa0523039a7316000e034a803d0f052133aa.tar.xz
XCore target: extend tests in preparation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196086 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/CodeGen/XCore/codemodel.ll66
1 files changed, 66 insertions, 0 deletions
diff --git a/test/CodeGen/XCore/codemodel.ll b/test/CodeGen/XCore/codemodel.ll
new file mode 100644
index 0000000000..f5a980524d
--- /dev/null
+++ b/test/CodeGen/XCore/codemodel.ll
@@ -0,0 +1,66 @@
+
+; RUN: llc < %s -march=xcore | FileCheck %s
+
+; CHECK: .section .cp.rodata.cst4,"aMc",@progbits,4
+; CHECK: .long 65536
+; CHECK: .text
+; CHECK-LABEL: f:
+; CHECK: ldc r1, 65532
+; CHECK: add r1, r0, r1
+; CHECK: ldw r1, r1[0]
+; CHECK: ldw r2, cp[.LCPI0_0]
+; CHECK: add r0, r0, r2
+; CHECK: ldw r0, r0[0]
+; CHECK: add r0, r1, r0
+; CHECK: ldw r1, dp[l]
+; CHECK: add r0, r0, r1
+; CHECK: ldw r1, dp[l+4]
+; CHECK: add r0, r0, r1
+; CHECK: ldw r1, dp[l+392]
+; CHECK: add r0, r0, r1
+; CHECK: ldw r1, dp[l+396]
+; CHECK: add r0, r0, r1
+; CHECK: ldw r1, dp[s]
+; CHECK: add r0, r0, r1
+; CHECK: ldw r1, dp[s+36]
+; CHECK: add r0, r0, r1
+; CHECK: retsp 0
+define i32 @f(i32* %i) {
+entry:
+ %0 = getelementptr inbounds i32* %i, i32 16383
+ %1 = load i32* %0
+ %2 = getelementptr inbounds i32* %i, i32 16384
+ %3 = load i32* %2
+ %4 = add nsw i32 %1, %3
+ %5 = load i32* getelementptr inbounds ([100 x i32]* @l, i32 0, i32 0)
+ %6 = add nsw i32 %4, %5
+ %7 = load i32* getelementptr inbounds ([100 x i32]* @l, i32 0, i32 1)
+ %8 = add nsw i32 %6, %7
+ %9 = load i32* getelementptr inbounds ([100 x i32]* @l, i32 0, i32 98)
+ %10 = add nsw i32 %8, %9
+ %11 = load i32* getelementptr inbounds ([100 x i32]* @l, i32 0, i32 99)
+ %12 = add nsw i32 %10, %11
+ %13 = load i32* getelementptr inbounds ([10 x i32]* @s, i32 0, i32 0)
+ %14 = add nsw i32 %12, %13
+ %15 = load i32* getelementptr inbounds ([10 x i32]* @s, i32 0, i32 9)
+ %16 = add nsw i32 %14, %15
+ ret i32 %16
+}
+
+; CHECK: .section .dp.bss,"awd",@nobits
+; CHECK-LABEL: l:
+; CHECK: .space 400
+@l = global [100 x i32] zeroinitializer
+
+; CHECK-LABEL: s:
+; CHECK: .space 40
+@s = global [10 x i32] zeroinitializer
+
+; CHECK: .section .cp.rodata,"ac",@progbits
+; CHECK-LABEL: cl:
+; CHECK: .space 400
+@cl = constant [100 x i32] zeroinitializer
+
+; CHECK-LABEL: cs:
+; CHECK: .space 40
+@cs = constant [10 x i32] zeroinitializer