brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.4 KiB · dd717a8 Raw
128 lines · plain
1# RUN: llc -O0 -mtriple thumb-linux -relocation-model=pic -mattr=+v6t2,+no-movt -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,ELF2# RUN: llc -O0 -mtriple thumb-linux-linux -relocation-model=pic -mattr=+v6t2,-no-movt -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,ELF3# RUN: llc -O0 -mtriple thumb-linux-darwin -relocation-model=pic -mattr=+v6t2,+no-movt -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,DARWIN-NOMOVT4# RUN: llc -O0 -mtriple thumb-linux-darwin -relocation-model=pic -mattr=+v6t2,-no-movt -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=CHECK,DARWIN-MOVT5--- |6  @internal_global = internal global i32 427  define void @test_internal_global() { ret void }8 9  @external_global = external global i3210  define void @test_external_global() { ret void }11 12  @internal_constant = internal constant i32 4213  define void @test_internal_constant() { ret void }14 15  @external_constant = external constant i3216  define void @test_external_constant() { ret void }17...18---19name:            test_internal_global20# CHECK-LABEL: name: test_internal_global21legalized:       true22regBankSelected: true23selected:        false24# CHECK: selected: true25registers:26  - { id: 0, class: gprb }27  - { id: 1, class: gprb }28body:             |29  bb.0:30    %0(p0) = G_GLOBAL_VALUE @internal_global31    ; DARWIN-MOVT: [[G:%[0-9]+]]:rgpr = t2MOV_ga_pcrel target-flags(arm-nonlazy) @internal_global32    ; DARWIN-NOMOVT: [[G:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel target-flags(arm-nonlazy) @internal_global33    ; ELF: [[G:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel @internal_global34 35    %1(s32) = G_LOAD %0(p0) :: (load (s32) from @internal_global)36    ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @internal_global)37 38    $r0 = COPY %1(s32)39    ; CHECK: $r0 = COPY [[V]]40 41    tBX_RET 14, $noreg, implicit $r042    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r043...44---45name:            test_external_global46# CHECK-LABEL: name: test_external_global47legalized:       true48regBankSelected: true49selected:        false50# CHECK: selected: true51registers:52  - { id: 0, class: gprb }53  - { id: 1, class: gprb }54body:             |55  bb.0:56    %0(p0) = G_GLOBAL_VALUE @external_global57    ; DARWIN-MOVT: [[G_GOT:%[0-9]+]]:rgpr = t2MOV_ga_pcrel target-flags(arm-nonlazy) @external_global58    ; DARWIN-MOVT: [[G:%[0-9]+]]:gpr = t2LDRi12 [[G_GOT]], 0, 14 /* CC::al */, $noreg :: (load (s32) from got)59    ; DARWIN-NOMOVT: [[G_GOT:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel target-flags(arm-nonlazy) @external_global60    ; DARWIN-NOMOVT: [[G:%[0-9]+]]:gpr = t2LDRi12 [[G_GOT]], 0, 14 /* CC::al */, $noreg :: (load (s32) from got)61    ; ELF: [[G_GOT:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel target-flags(arm-got) @external_global62    ; ELF: [[G:%[0-9]+]]:gpr = t2LDRi12 [[G_GOT]], 0, 14 /* CC::al */, $noreg :: (load (s32) from got)63 64    %1(s32) = G_LOAD %0(p0) :: (load (s32) from @external_global)65    ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @external_global)66 67    $r0 = COPY %1(s32)68    ; CHECK: $r0 = COPY [[V]]69 70    tBX_RET 14, $noreg, implicit $r071    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r072...73---74name:            test_internal_constant75# CHECK-LABEL: name: test_internal_constant76legalized:       true77regBankSelected: true78selected:        false79# CHECK: selected: true80registers:81  - { id: 0, class: gprb }82  - { id: 1, class: gprb }83body:             |84  bb.0:85    %0(p0) = G_GLOBAL_VALUE @internal_constant86    ; DARWIN-MOVT: [[G:%[0-9]+]]:rgpr = t2MOV_ga_pcrel target-flags(arm-nonlazy) @internal_constant87    ; DARWIN-NOMOVT: [[G:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel target-flags(arm-nonlazy) @internal_constant88    ; ELF: [[G:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel @internal_constant89 90    %1(s32) = G_LOAD %0(p0) :: (load (s32) from @internal_constant)91    ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @internal_constant)92 93    $r0 = COPY %1(s32)94    ; CHECK: $r0 = COPY [[V]]95 96    tBX_RET 14, $noreg, implicit $r097    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r098...99---100name:            test_external_constant101# CHECK-LABEL: name: test_external_constant102legalized:       true103regBankSelected: true104selected:        false105# CHECK: selected: true106registers:107  - { id: 0, class: gprb }108  - { id: 1, class: gprb }109body:             |110  bb.0:111    %0(p0) = G_GLOBAL_VALUE @external_constant112    ; DARWIN-MOVT: [[G_GOT:%[0-9]+]]:rgpr = t2MOV_ga_pcrel target-flags(arm-nonlazy) @external_constant113    ; DARWIN-MOVT: [[G:%[0-9]+]]:gpr = t2LDRi12 [[G_GOT]], 0, 14 /* CC::al */, $noreg :: (load (s32) from got)114    ; DARWIN-NOMOVT: [[G_GOT:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel target-flags(arm-nonlazy) @external_constant115    ; DARWIN-NOMOVT: [[G:%[0-9]+]]:gpr = t2LDRi12 [[G_GOT]], 0, 14 /* CC::al */, $noreg :: (load (s32) from got)116    ; ELF: [[G_GOT:%[0-9]+]]:tgpr = tLDRLIT_ga_pcrel target-flags(arm-got) @external_constant117    ; ELF: [[G:%[0-9]+]]:gpr = t2LDRi12 [[G_GOT]], 0, 14 /* CC::al */, $noreg :: (load (s32) from got)118 119    %1(s32) = G_LOAD %0(p0) :: (load (s32) from @external_constant)120    ; CHECK: [[V:%[0-9]+]]:gpr = t2LDRi12 [[G]], 0, 14 /* CC::al */, $noreg :: (load (s32) from @external_constant)121 122    $r0 = COPY %1(s32)123    ; CHECK: $r0 = COPY [[V]]124 125    tBX_RET 14, $noreg, implicit $r0126    ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0127...128