llvm-mirror/test/MC/AArch64/basic-pic.s
Tim Northover ca0f4dc4f0 AArch64/ARM64: move ARM64 into AArch64's place
This commit starts with a "git mv ARM64 AArch64" and continues out
from there, renaming the C++ classes, intrinsics, and other
target-local objects for consistency.

"ARM64" test directories are also moved, and tests that began their
life in ARM64 use an arm64 triple, those from AArch64 use an aarch64
triple. Both should be equivalent though.

This finishes the AArch64 merge, and everyone should feel free to
continue committing as normal now.

llvm-svn: 209577
2014-05-24 12:50:23 +00:00

99 lines
2.4 KiB
ArmAsm

// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o -| llvm-objdump -r - | FileCheck %s
// CHECK: RELOCATION RECORDS FOR [.rela.text]
.file "/home/espindola/llvm/llvm/test/CodeGen/AArch64/basic-pic.ll"
.text
.globl get_globalvar
.type get_globalvar,@function
get_globalvar: // @get_globalvar
.cfi_startproc
// BB#0:
adrp x0, :got:var
ldr x0, [x0, #:got_lo12:var]
ldr w0, [x0]
ret
.Ltmp0:
.size get_globalvar, .Ltmp0-get_globalvar
.cfi_endproc
// CHECK: R_AARCH64_ADR_GOT_PAGE var
// CHECK: R_AARCH64_LD64_GOT_LO12_NC var
.globl get_globalvaraddr
.type get_globalvaraddr,@function
get_globalvaraddr: // @get_globalvaraddr
.cfi_startproc
// BB#0:
adrp x0, :got:var
ldr x0, [x0, #:got_lo12:var]
ret
.Ltmp1:
.size get_globalvaraddr, .Ltmp1-get_globalvaraddr
.cfi_endproc
// CHECK: R_AARCH64_ADR_GOT_PAGE var
// CHECK: R_AARCH64_LD64_GOT_LO12_NC var
.globl get_hiddenvar
.type get_hiddenvar,@function
get_hiddenvar: // @get_hiddenvar
.cfi_startproc
// BB#0:
adrp x0, hiddenvar
ldr w0, [x0, #:lo12:hiddenvar]
ret
.Ltmp2:
.size get_hiddenvar, .Ltmp2-get_hiddenvar
.cfi_endproc
// CHECK: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar
// CHECK: R_AARCH64_LDST32_ABS_LO12_NC hiddenvar
.globl get_hiddenvaraddr
.type get_hiddenvaraddr,@function
get_hiddenvaraddr: // @get_hiddenvaraddr
.cfi_startproc
// BB#0:
adrp x0, hiddenvar
add x0, x0, #:lo12:hiddenvar
ret
.Ltmp3:
.size get_hiddenvaraddr, .Ltmp3-get_hiddenvaraddr
.cfi_endproc
// CHECK: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar
// CHECK: R_AARCH64_ADD_ABS_LO12_NC hiddenvar
.globl get_func
.type get_func,@function
get_func: // @get_func
.cfi_startproc
// BB#0:
adrp x0, :got:get_func
ldr x0, [x0, #:got_lo12:get_func]
ret
.Ltmp4:
.size get_func, .Ltmp4-get_func
.cfi_endproc
// Particularly important that the ADRP gets a relocation, LLVM tends to think
// it can relax it because it knows where get_func is. It can't!
// CHECK: R_AARCH64_ADR_GOT_PAGE get_func
// CHECK: R_AARCH64_LD64_GOT_LO12_NC get_func
.type var,@object // @var
.bss
.globl var
.align 2
var:
.word 0 // 0x0
.size var, 4
.hidden hiddenvar // @hiddenvar
.type hiddenvar,@object
.globl hiddenvar
.align 2
hiddenvar:
.word 0 // 0x0
.size hiddenvar, 4