[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / ARM / load-global.ll
blobeade2fda37054160f75f0ab1ba93a5f80b846bc8
1 ; RUN: llc < %s -mtriple=armv6-apple-darwin -relocation-model=static | FileCheck %s -check-prefix=STATIC
2 ; RUN: llc < %s -mtriple=armv6-apple-darwin -relocation-model=dynamic-no-pic | FileCheck %s -check-prefix=DYNAMIC
3 ; RUN: llc < %s -mtriple=armv6-apple-darwin -relocation-model=pic | FileCheck %s -check-prefix=PIC
4 ; RUN: llc < %s -mtriple=thumbv6-apple-darwin -relocation-model=pic | FileCheck %s -check-prefix=PIC_T
5 ; RUN: llc < %s -mtriple=armv7-apple-darwin -relocation-model=pic | FileCheck %s -check-prefix=PIC_V7
6 ; RUN: llc < %s -mtriple=armv6-linux-gnueabi -relocation-model=pic | FileCheck %s -check-prefix=LINUX
7 ; RUN: llc < %s -mtriple=thumbv6-linux-gnueabi -relocation-model=pic | FileCheck %s -check-prefix=LINUX_T
9 @G = external global i32
11 define i32 @test1() {
12 ; STATIC: _test1:
13 ; STATIC: ldr r0, LCPI0_0
14 ; STATIC: ldr r0, [r0]
15 ; STATIC: .long _G
17 ; DYNAMIC: _test1:
18 ; DYNAMIC: ldr r0, LCPI0_0
19 ; DYNAMIC: ldr r0, [r0]
20 ; DYNAMIC: ldr r0, [r0]
21 ; DYNAMIC: .long L_G$non_lazy_ptr
23 ; PIC: _test1
24 ; PIC: ldr r0, LCPI0_0
25 ; PIC: ldr r0, [pc, r0]
26 ; PIC: ldr r0, [r0]
27 ; PIC: .long L_G$non_lazy_ptr-(LPC0_0+8)
29 ; PIC_T: _test1
30 ; PIC_T: ldr r0, LCPI0_0
31 ; PIC_T: add r0, pc
32 ; PIC_T: ldr r0, [r0]
33 ; PIC_T: ldr r0, [r0]
34 ; PIC_T: .long L_G$non_lazy_ptr-(LPC0_0+4)
36 ; PIC_V7: _test1
37 ; PIC_V7: movw r0, :lower16:(L_G$non_lazy_ptr-(LPC0_0+8))
38 ; PIC_V7: movt r0, :upper16:(L_G$non_lazy_ptr-(LPC0_0+8))
39 ; PIC_V7: ldr r0, [pc, r0]
40 ; PIC_V7: ldr r0, [r0]
42 ; LINUX: test1
43 ; LINUX: ldr r0, .LCPI0_0
44 ; LINUX: ldr r0, [pc, r0]
45 ; LINUX: ldr r0, [r0]
46 ; LINUX: .long G(GOT_PREL)-((.LPC0_0+8)-.Ltmp0)
48 ; LINUX_T: ldr r0, .LCPI0_0
49 ; LINUX_T: add r0, pc
50 ; LINUX_T: ldr r0, [r0]
51 ; LINUX_T: ldr r0, [r0]
52         %tmp = load i32, i32* @G
53         ret i32 %tmp