1# REQUIRES: ppc 2 3# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o 4# RUN: ld.lld -shared --no-toc-optimize %t.o -o %t 5# RUN: llvm-objdump -d %t | FileCheck %s 6 7# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o 8# RUN: ld.lld -shared --no-toc-optimize %t.o -o %t 9# RUN: llvm-objdump -d %t | FileCheck %s 10 11# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o 12# RUN: ld.lld -shared %t.o -o %t 13# RUN: llvm-objdump -d %t | FileCheck --check-prefix=OPT %s 14 15# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o 16# RUN: ld.lld -shared %t.o -o %t 17# RUN: llvm-objdump -d %t | FileCheck --check-prefix=OPT %s 18 19 .abiversion 2 20 .section ".text" 21 22 .p2align 2 23 .global func 24 .type func, @function 25func: 26.Lfunc_gep: 27 addis 2, 12, .TOC.-.Lfunc_gep@ha 28 addi 2, 2, .TOC.-.Lfunc_gep@l 29.Lfunc_lep: 30 .localentry func, .-func 31 addis 3, 2, a@got@ha 32 ld 3, a@got@l(3) 33 ld 4, a@got(2) 34 lis 5, a@got@h 35 ori 5, 5, a@got@l 36 li 6, 0 37 ori 6, 6, a@got 38 blr 39 40# CHECK-LABEL: func 41# CHECK: addis 3, 2, 0 42# CHECK-NEXT: ld 3, -32760(3) 43# CHECK-NEXT: ld 4, -32760(2) 44# CHECK-NEXT: lis 5, -1 45# CHECK-NEXT: ori 5, 5, 32776 46# CHECK-NEXT: li 6, 0 47# CHECK-NEXT: ori 6, 6, 32776 48 49# OPT-LABEL: func 50# OPT: nop 51# OPT-NEXT: ld 3, -32760(2) 52# OPT-NEXT: ld 4, -32760(2) 53# OPT-NEXT: lis 5, -1 54# OPT-NEXT: ori 5, 5, 32776 55# OPT-NEXT: li 6, 0 56# OPT-NEXT: ori 6, 6, 32776 57 58# Since the got entry for a is .got[1] and the TOC base points to 59# .got + 0x8000, the offset for a@got is -0x7FF8 --> -32760 60 61 .section ".data" 62 .global a 63 .type a, @object 64 .size a, 4 65 .p2align 2 66a: 67 .long 0x1000 68