brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · df6fb9b Raw
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