1*9880d681SAndroid Build Coastguard Worker# RUN: llc -relocation-model=pic -start-after=block-placement -o - %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker--- | 4*9880d681SAndroid Build Coastguard Worker target datalayout = "E-m:e-i64:64-n32:64" 5*9880d681SAndroid Build Coastguard Worker target triple = "powerpc64-unknown-linux-gnu" 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker @x = internal thread_local unnamed_addr global i1 false 8*9880d681SAndroid Build Coastguard Worker @y = external thread_local global i32, align 4 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker ; Function Attrs: nounwind 11*9880d681SAndroid Build Coastguard Worker define void @test1() #0 { 12*9880d681SAndroid Build Coastguard Worker entry: 13*9880d681SAndroid Build Coastguard Worker store i1 true, i1* @x, align 1 14*9880d681SAndroid Build Coastguard Worker store i32 20, i32* @y, align 4 15*9880d681SAndroid Build Coastguard Worker ret void 16*9880d681SAndroid Build Coastguard Worker } 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker attributes #0 = { nounwind "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "target-cpu"="pwr7" } 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker !llvm.module.flags = !{!0} 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker !0 = !{i32 1, !"PIC Level", i32 2} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker... 25*9880d681SAndroid Build Coastguard Worker--- 26*9880d681SAndroid Build Coastguard Workername: test1 27*9880d681SAndroid Build Coastguard Workeralignment: 4 28*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 29*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 30*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: true 31*9880d681SAndroid Build Coastguard WorkerisSSA: false 32*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 33*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false 34*9880d681SAndroid Build Coastguard WorkerframeInfo: 35*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 36*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 37*9880d681SAndroid Build Coastguard Worker hasStackMap: false 38*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 39*9880d681SAndroid Build Coastguard Worker stackSize: 64 40*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 41*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 42*9880d681SAndroid Build Coastguard Worker adjustsStack: false 43*9880d681SAndroid Build Coastguard Worker hasCalls: false 44*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 48 45*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 46*9880d681SAndroid Build Coastguard Worker hasVAStart: false 47*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 48*9880d681SAndroid Build Coastguard WorkerfixedStack: 49*9880d681SAndroid Build Coastguard Worker - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, callee-saved-register: '%x30' } 50*9880d681SAndroid Build Coastguard Worker - { id: 1, offset: -8, size: 8, alignment: 8, isImmutable: true, isAliased: false } 51*9880d681SAndroid Build Coastguard Workerbody: | 52*9880d681SAndroid Build Coastguard Worker bb.0.entry: 53*9880d681SAndroid Build Coastguard Worker liveins: %x30, %x30 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker %x0 = MFLR8 implicit %lr8 56*9880d681SAndroid Build Coastguard Worker STD %x31, -8, %x1 57*9880d681SAndroid Build Coastguard Worker STD killed %x0, 16, %x1 58*9880d681SAndroid Build Coastguard Worker %x1 = STDU %x1, -64, %x1 59*9880d681SAndroid Build Coastguard Worker %x3 = ADDIStlsldHA %x2, @x 60*9880d681SAndroid Build Coastguard Worker %x31 = OR8 %x1, %x1 61*9880d681SAndroid Build Coastguard Worker %x3 = ADDItlsldL killed %x3, @x 62*9880d681SAndroid Build Coastguard Worker STD killed %x30, 48, %x31 :: (store 8 into %fixed-stack.0, align 16) 63*9880d681SAndroid Build Coastguard Worker %x3 = GETtlsldADDR killed %x3, @x, implicit-def dead %x0, implicit-def dead %x4, implicit-def dead %x5, implicit-def dead %x6, implicit-def dead %x7, implicit-def dead %x8, implicit-def dead %x9, implicit-def dead %x10, implicit-def dead %x11, implicit-def dead %x12, implicit-def %lr8, implicit-def %ctr8, implicit-def dead %cr0, implicit-def dead %cr1, implicit-def dead %cr5, implicit-def dead %cr6, implicit-def dead %cr7 64*9880d681SAndroid Build Coastguard Worker %x12 = ADDIStlsgdHA %x2, @y 65*9880d681SAndroid Build Coastguard Worker %x30 = OR8 killed %x3, %x3 66*9880d681SAndroid Build Coastguard Worker %x3 = ADDItlsgdL killed %x12, @y 67*9880d681SAndroid Build Coastguard Worker %x3 = GETtlsADDR killed %x3, @y, implicit-def dead %x0, implicit-def dead %x4, implicit-def dead %x5, implicit-def dead %x6, implicit-def dead %x7, implicit-def dead %x8, implicit-def dead %x9, implicit-def dead %x10, implicit-def dead %x11, implicit-def dead %x12, implicit-def %lr8, implicit-def %ctr8, implicit-def dead %cr0, implicit-def dead %cr1, implicit-def dead %cr5, implicit-def dead %cr6, implicit-def dead %cr7 68*9880d681SAndroid Build Coastguard Worker %x4 = ADDISdtprelHA killed %x30, @x 69*9880d681SAndroid Build Coastguard Worker ; CHECK: addis 4, 30, x@dtprel@ha 70*9880d681SAndroid Build Coastguard Worker %x5 = LI8 1 71*9880d681SAndroid Build Coastguard Worker %r6 = LI 20 72*9880d681SAndroid Build Coastguard Worker %x30 = LD 48, %x31 :: (load 8 from %fixed-stack.0, align 16) 73*9880d681SAndroid Build Coastguard Worker STB8 killed %x5, target-flags(ppc-dtprel-lo) @x, killed %x4 :: (store 1 into @x) 74*9880d681SAndroid Build Coastguard Worker STW killed %r6, 0, killed %x3 :: (store 4 into @y) 75*9880d681SAndroid Build Coastguard Worker %x1 = ADDI8 %x1, 64 76*9880d681SAndroid Build Coastguard Worker %x0 = LD 16, %x1 77*9880d681SAndroid Build Coastguard Worker %x31 = LD -8, %x1 78*9880d681SAndroid Build Coastguard Worker MTLR8 killed %x0, implicit-def %lr8 79*9880d681SAndroid Build Coastguard Worker BLR8 implicit %lr8, implicit %rm 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker... 82