148 lines · plain
1# RUN: llc -O0 -mtriple thumb-linux -relocation-model=ropi -mattr=-no-movt,+v6t2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,RW-DEFAULT-MOVT,ROPI-MOVT2# RUN: llc -O0 -mtriple thumb-linux -relocation-model=ropi -mattr=+no-movt,+v6t2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,RW-DEFAULT-NOMOVT,ROPI-NOMOVT3# RUN: llc -O0 -mtriple thumb-linux -relocation-model=rwpi -mattr=-no-movt,+v6t2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,RWPI-MOVT,RWPI,RO-DEFAULT-MOVT4# RUN: llc -O0 -mtriple thumb-linux -relocation-model=rwpi -mattr=+no-movt,+v6t2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,RWPI-NOMOVT,RWPI,RO-DEFAULT-NOMOVT5# RUN: llc -O0 -mtriple thumb-linux -relocation-model=ropi-rwpi -mattr=-no-movt,+v6t2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,RWPI-MOVT,RWPI,ROPI-MOVT6# RUN: llc -O0 -mtriple thumb-linux -relocation-model=ropi-rwpi -mattr=+no-movt,+v6t2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,RWPI-NOMOVT,RWPI,ROPI-NOMOVT7--- |8 @internal_global = internal global i32 429 define void @test_internal_global() { ret void }10 11 @external_global = external global i3212 define void @test_external_global() { ret void }13 14 @internal_constant = internal constant i32 4215 define void @test_internal_constant() { ret void }16 17 @external_constant = external constant i3218 define void @test_external_constant() { ret void }19...20---21name: test_internal_global22# CHECK-LABEL: name: test_internal_global23legalized: true24regBankSelected: true25selected: false26# CHECK: selected: true27registers:28 - { id: 0, class: gprb }29 - { id: 1, class: gprb }30# RW-DEFAULT-NOMOVT: constants:31# RW-DEFAULT-NOMOVT: id: 032# RW-DEFAULT-NOMOVT: value: 'ptr @internal_global'33# RWPI-NOMOVT: constants:34# RWPI-NOMOVT: id: 035# RWPI-NOMOVT: value: 'internal_global(SBREL)'36body: |37 bb.0:38 %0(p0) = G_GLOBAL_VALUE @internal_global39 ; RW-DEFAULT-MOVT: [[G:%[0-9]+]]:rgpr = t2MOVi32imm @internal_global40 ; RW-DEFAULT-NOMOVT: [[G:%[0-9]+]]:gpr = t2LDRpci %const.0, 14 /* CC::al */, $noreg :: (load (p0) from constant-pool)41 ; RWPI-MOVT: [[OFF:%[0-9]+]]:rgpr = t2MOVi32imm target-flags(arm-sbrel) @internal_global42 ; RWPI-NOMOVT: [[OFF:%[0-9]+]]:rgpr = t2LDRpci %const.0, 14 /* CC::al */, $noreg :: (load (p0) from constant-pool)43 ; RWPI: [[G:%[0-9]+]]:gprnopc = t2ADDrr $r9, [[OFF]], 14 /* CC::al */, $noreg, $noreg44 45 %1(s32) = G_LOAD %0(p0) :: (load (s32) from @internal_global)46 ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @internal_global)47 48 $r0 = COPY %1(s32)49 ; CHECK: $r0 = COPY [[V]]50 51 tBX_RET 14, $noreg, implicit $r052 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r053...54---55name: test_external_global56# CHECK-LABEL: name: test_external_global57legalized: true58regBankSelected: true59selected: false60# CHECK: selected: true61registers:62 - { id: 0, class: gprb }63 - { id: 1, class: gprb }64# RW-DEFAULT-NOMOVT: constants:65# RW-DEFAULT-NOMOVT: id: 066# RW-DEFAULT-NOMOVT: value: 'ptr @external_global'67# RWPI-NOMOVT: constants:68# RWPI-NOMOVT: id: 069# RWPI-NOMOVT: value: 'external_global(SBREL)'70body: |71 bb.0:72 %0(p0) = G_GLOBAL_VALUE @external_global73 ; RW-DEFAULT-MOVT: [[G:%[0-9]+]]:rgpr = t2MOVi32imm @external_global74 ; RW-DEFAULT-NOMOVT: [[G:%[0-9]+]]:gpr = t2LDRpci %const.0, 14 /* CC::al */, $noreg :: (load (p0) from constant-pool)75 ; RWPI-MOVT: [[OFF:%[0-9]+]]:rgpr = t2MOVi32imm target-flags(arm-sbrel) @external_global76 ; RWPI-NOMOVT: [[OFF:%[0-9]+]]:rgpr = t2LDRpci %const.0, 14 /* CC::al */, $noreg :: (load (p0) from constant-pool)77 ; RWPI: [[G:%[0-9]+]]:gprnopc = t2ADDrr $r9, [[OFF]], 14 /* CC::al */, $noreg, $noreg78 79 %1(s32) = G_LOAD %0(p0) :: (load (s32) from @external_global)80 ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @external_global)81 82 $r0 = COPY %1(s32)83 ; CHECK: $r0 = COPY [[V]]84 85 tBX_RET 14, $noreg, implicit $r086 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r087...88---89name: test_internal_constant90# CHECK-LABEL: name: test_internal_constant91legalized: true92regBankSelected: true93selected: false94# CHECK: selected: true95registers:96 - { id: 0, class: gprb }97 - { id: 1, class: gprb }98# RO-DEFAULT-NOMOVT: constants:99# RO-DEFAULT-NOMOVT: id: 0100# RO-DEFAULT-NOMOVT: value: 'ptr @internal_constant'101body: |102 bb.0:103 %0(p0) = G_GLOBAL_VALUE @internal_constant104 ; ROPI-MOVT: [[G:%[0-9]+]]:rgpr = t2MOV_ga_pcrel @internal_constant105 ; ROPI-NOMOVT: [[G:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel @internal_constant106 ; RO-DEFAULT-MOVT: [[G:%[0-9]+]]:rgpr = t2MOVi32imm @internal_constant107 ; RO-DEFAULT-NOMOVT: [[G:%[0-9]+]]:gpr = t2LDRpci %const.0, 14 /* CC::al */, $noreg :: (load (p0) from constant-pool)108 109 %1(s32) = G_LOAD %0(p0) :: (load (s32) from @internal_constant)110 ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @internal_constant)111 112 $r0 = COPY %1(s32)113 ; CHECK: $r0 = COPY [[V]]114 115 tBX_RET 14, $noreg, implicit $r0116 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0117...118---119name: test_external_constant120# CHECK-LABEL: name: test_external_constant121legalized: true122regBankSelected: true123selected: false124# CHECK: selected: true125registers:126 - { id: 0, class: gprb }127 - { id: 1, class: gprb }128# RO-DEFAULT-NOMOVT: constants:129# RO-DEFAULT-NOMOVT: id: 0130# RO-DEFAULT-NOMOVT: value: 'ptr @external_constant'131body: |132 bb.0:133 %0(p0) = G_GLOBAL_VALUE @external_constant134 ; ROPI-MOVT: [[G:%[0-9]+]]:rgpr = t2MOV_ga_pcrel @external_constant135 ; ROPI-NOMOVT: [[G:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel @external_constant136 ; RO-DEFAULT-MOVT: [[G:%[0-9]+]]:rgpr = t2MOVi32imm @external_constant137 ; RO-DEFAULT-NOMOVT: [[G:%[0-9]+]]:gpr = t2LDRpci %const.0, 14 /* CC::al */, $noreg :: (load (p0) from constant-pool)138 139 %1(s32) = G_LOAD %0(p0) :: (load (s32) from @external_constant)140 ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @external_constant)141 142 $r0 = COPY %1(s32)143 ; CHECK: $r0 = COPY [[V]]144 145 tBX_RET 14, $noreg, implicit $r0146 ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0147...148