82 lines · plain
1# REQUIRES: ppc2# RUN: split-file %s %t3# RUN: llvm-mc -filetype=obj -triple=powerpc64le %t/initexec -o %t/initexec.o4# RUN: llvm-mc -filetype=obj -triple=powerpc64le %t/defs -o %t/defs.o5# RUN: ld.lld %t/initexec.o %t/defs.o -o %t/out6# RUN: llvm-objdump -d --no-show-raw-insn %t/out | FileCheck %s7 8# CHECK-LABEL: <GetAddrT>:9# CHECK: mflr 010# CHECK-NEXT: std 30, -16(1)11# CHECK-NEXT: std 0, 16(1)12# CHECK-NEXT: stdu 1, -48(1)13# CHECK-NEXT: paddi 3, 13, -28672, 014# CHECK-NEXT: mr 30, 315# CHECK-NEXT: mr 3, 3016# CHECK-NEXT: bl17# CHECK-NEXT: mr 4, 3018# CHECK-NEXT: addi 1, 1, 4819# CHECK-NEXT: ld 0, 16(1)20# CHECK-NEXT: ld 30, -16(1)21# CHECK-NEXT: mtlr 022# CHECK-NEXT: b23 24## Generated From:25## extern __thread unsigned TGlobal;26## unsigned getConst(unsigned*);27## unsigned addVal(unsigned, unsigned*);28##29## unsigned GetAddrT() {30## return addVal(getConst(&TGlobal), &TGlobal);31## }32 33//--- initexec34GetAddrT:35 mflr 036 std 30, -16(1)37 std 0, 16(1)38 stdu 1, -48(1)39 pld 3, TGlobal@got@tprel@pcrel(0), 140 add 30, 3, TGlobal@tls@pcrel41 mr 3, 3042 bl getConst@notoc43 mr 4, 3044 addi 1, 1, 4845 ld 0, 16(1)46 ld 30, -16(1)47 mtlr 048 b addVal@notoc49 50## Generated From:51## __thread unsigned TGlobal;52##53## unsigned getConst(unsigned* A) {54## return *A + 3;55## }56##57## unsigned addVal(unsigned A, unsigned* B) {58## return A + *B;59## }60 61//--- defs62.globl getConst63getConst:64 lwz 3, 0(3)65 addi 3, 3, 366 clrldi 3, 3, 3267 blr68 69.globl addVal70addVal:71 lwz 4, 0(4)72 add 3, 4, 373 clrldi 3, 3, 3274 blr75 76.section .tbss,"awT",@nobits77.globl TGlobal78.p2align 279TGlobal:80 .long 081 .size TGlobal, 482