1 # RUN: llc -O0 -mtriple thumb-linux -mattr=+v6t2 -relocation-model=static -mattr=+no-movt -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,ELF-NOMOVT
2 # RUN: llc -O0 -mtriple thumb-linux -mattr=+v6t2 -relocation-model=static -mattr=-no-movt,+v8m -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,ELF-MOVT
3 # RUN: llc -O0 -mtriple thumb-darwin -mattr=+v6t2 -relocation-model=static -mattr=+no-movt -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,DARWIN-NOMOVT
4 # RUN: llc -O0 -mtriple thumb-darwin -mattr=+v6t2 -relocation-model=static -mattr=-no-movt,+v8m -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,DARWIN-MOVT
6 @internal_global = internal global i32 42
7 define void @test_internal_global() { ret void }
9 @external_global = external global i32
10 define void @test_external_global() { ret void }
13 name: test_internal_global
14 # CHECK-LABEL: name: test_internal_global
18 # CHECK: selected: true
20 - { id: 0, class: gprb }
21 - { id: 1, class: gprb }
22 # ELF-NOMOVT: constants:
24 # ELF-NOMOVT: value: 'ptr @internal_global'
27 %0(p0) = G_GLOBAL_VALUE @internal_global
28 ; ELF-MOVT: [[G:%[0-9]+]]:rgpr = t2MOVi32imm @internal_global
29 ; ELF-NOMOVT: [[G:%[0-9]+]]:gpr = t2LDRpci %const.0, 14 /* CC::al */, $noreg :: (load (p0) from constant-pool)
30 ; DARWIN-MOVT: [[G:%[0-9]+]]:rgpr = t2MOVi32imm @internal_global
31 ; DARWIN-NOMOVT: [[G:%[0-9]+]]:tgpr = tLDRLIT_ga_abs @internal_global
33 %1(s32) = G_LOAD %0(p0) :: (load (s32) from @internal_global)
34 ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @internal_global)
37 ; CHECK: $r0 = COPY [[V]]
39 tBX_RET 14, $noreg, implicit $r0
40 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
43 name: test_external_global
44 # CHECK-LABEL: name: test_external_global
48 # CHECK: selected: true
50 - { id: 0, class: gprb }
51 - { id: 1, class: gprb }
52 # ELF-NOMOVT: constants:
54 # ELF-NOMOVT: value: 'ptr @external_global'
57 %0(p0) = G_GLOBAL_VALUE @external_global
58 ; ELF-MOVT: [[G:%[0-9]+]]:rgpr = t2MOVi32imm @external_global
59 ; ELF-NOMOVT: [[G:%[0-9]+]]:gpr = t2LDRpci %const.0, 14 /* CC::al */, $noreg :: (load (p0) from constant-pool)
60 ; DARWIN-MOVT: [[G:%[0-9]+]]:rgpr = t2MOVi32imm @external_global
61 ; DARWIN-NOMOVT: [[G:%[0-9]+]]:tgpr = tLDRLIT_ga_abs @external_global
63 %1(s32) = G_LOAD %0(p0) :: (load (s32) from @external_global)
64 ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @external_global)
67 ; CHECK: $r0 = COPY [[V]]
69 tBX_RET 14, $noreg, implicit $r0
70 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0