diff options
author | Robert Lytton <robert@xmos.com> | 2013-12-02 10:18:37 +0000 |
---|---|---|
committer | Robert Lytton <robert@xmos.com> | 2013-12-02 10:18:37 +0000 |
commit | 41d4ed4ed0ec170181e63f74f7a633c2effca976 (patch) | |
tree | 779113d386f48eac450e95781298373cb55dbdf4 /test | |
parent | 883abacb5bd0e3b759f802a07f11771454804a4d (diff) | |
download | llvm-41d4ed4ed0ec170181e63f74f7a633c2effca976.tar.gz llvm-41d4ed4ed0ec170181e63f74f7a633c2effca976.tar.bz2 llvm-41d4ed4ed0ec170181e63f74f7a633c2effca976.tar.xz |
XCore target: fix large code model 'select' indirect address handling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196088 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/XCore/codemodel.ll | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/test/CodeGen/XCore/codemodel.ll b/test/CodeGen/XCore/codemodel.ll index e86627cc41..31fbbca250 100644 --- a/test/CodeGen/XCore/codemodel.ll +++ b/test/CodeGen/XCore/codemodel.ll @@ -8,6 +8,33 @@ ; RUN: llc < %s -march=xcore -code-model=small | FileCheck %s ; RUN: llc < %s -march=xcore -code-model=large | FileCheck %s -check-prefix=LARGE + +; CHECK-LABEL: test: +; CHECK: zext r0, 1 +; CHECK: bt r0, [[JUMP:.LBB[0-9_]*]] +; CHECK: ldaw r0, dp[A2] +; CHECK: retsp 0 +; CHECK: [[JUMP]] +; CHECK: ldaw r0, dp[A1] +; CHECK: retsp 0 +; LARGE-LABEL: test: +; LARGE: zext r0, 1 +; LARGE: ldaw r11, cp[.LCPI{{[0-9_]*}}] +; LARGE: mov r1, r11 +; LARGE: ldaw r11, cp[.LCPI{{[0-9_]*}}] +; LARGE: bt r0, [[JUMP:.LBB[0-9_]*]] +; LARGE: mov r11, r1 +; LARGE: [[JUMP]] +; LARGE: ldw r0, r11[0] +; LARGE: retsp 0 +@A1 = external global [50000 x i32] +@A2 = external global [50000 x i32] +define [50000 x i32]* @test(i1 %bool) nounwind { +entry: + %Addr = select i1 %bool, [50000 x i32]* @A1, [50000 x i32]* @A2 + ret [50000 x i32]* %Addr +} + ; CHECK: .section .cp.rodata.cst4,"aMc",@progbits,4 ; CHECK: .long 65536 ; CHECK: .text @@ -15,7 +42,7 @@ ; CHECK: ldc r1, 65532 ; CHECK: add r1, r0, r1 ; CHECK: ldw r1, r1[0] -; CHECK: ldw r2, cp[.LCPI0_0] +; CHECK: ldw r2, cp[.LCPI{{[0-9_]*}}] ; CHECK: add r0, r0, r2 ; CHECK: ldw r0, r0[0] ; CHECK: add r0, r1, r0 @@ -45,20 +72,20 @@ ; LARGE: ldc r1, 65532 ; LARGE: add r1, r0, r1 ; LARGE: ldw r1, r1[0] -; LARGE: ldw r2, cp[.LCPI0_0] +; LARGE: ldw r2, cp[.LCPI{{[0-9_]*}}] ; LARGE: add r0, r0, r2 ; LARGE: ldw r0, r0[0] ; LARGE: add r0, r1, r0 -; LARGE: ldw r1, cp[.LCPI0_1] +; LARGE: ldw r1, cp[.LCPI{{[0-9_]*}}] ; LARGE: ldw r1, r1[0] ; LARGE: add r0, r0, r1 -; LARGE: ldw r1, cp[.LCPI0_2] +; LARGE: ldw r1, cp[.LCPI{{[0-9_]*}}] ; LARGE: ldw r1, r1[0] ; LARGE: add r0, r0, r1 -; LARGE: ldw r1, cp[.LCPI0_3] +; LARGE: ldw r1, cp[.LCPI{{[0-9_]*}}] ; LARGE: ldw r1, r1[0] ; LARGE: add r0, r0, r1 -; LARGE: ldw r1, cp[.LCPI0_4] +; LARGE: ldw r1, cp[.LCPI{{[0-9_]*}}] ; LARGE: ldw r1, r1[0] ; LARGE: add r0, r0, r1 ; LARGE: ldw r1, dp[s] |