mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 20:29:48 +00:00
29f94c7201
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209577 91177308-0d34-0410-b5e6-96231b3b80d8
99 lines
2.4 KiB
ArmAsm
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
|
|
|
|
|