91 lines
1.7 KiB
ArmAsm
91 lines
1.7 KiB
ArmAsm
# REQUIRES: aarch64
|
|
|
|
# RUN: llvm-mc -filetype=obj -triple=arm64-apple-darwin %s -o %t.o
|
|
# RUN: %lld -arch arm64 %t.o -o %t
|
|
# RUN: llvm-objdump -d --macho %t | FileCheck %s
|
|
|
|
# CHECK-LABEL: _main:
|
|
## Out of range, before
|
|
# CHECK-NEXT: adrp x0
|
|
# CHECK-NEXT: add x0, x0
|
|
## In range, before
|
|
# CHECK-NEXT: adr x1
|
|
# CHECK-NEXT: nop
|
|
## Registers don't match (invalid input)
|
|
# CHECK-NEXT: adrp x2
|
|
# CHECK-NEXT: add x0
|
|
## Not an adrp instruction (invalid input)
|
|
# CHECK-NEXT: nop
|
|
# CHECK-NEXT: add x4
|
|
## In range, after
|
|
# CHECK-NEXT: adr x5
|
|
# CHECK-NEXT: nop
|
|
## In range, add's destination register is not the same as its source
|
|
# CHECK-NEXT: adr x7
|
|
# CHECK-NEXT: nop
|
|
## Valid, non-adjacent instructions - start
|
|
# CHECK-NEXT: adr x8
|
|
## Out of range, after
|
|
# CHECK-NEXT: adrp x9
|
|
# CHECK-NEXT: add x9, x9
|
|
## Valid, non-adjacent instructions - end
|
|
# CHECK-NEXT: nop
|
|
|
|
.text
|
|
.align 2
|
|
_before_far:
|
|
.space 1048576
|
|
|
|
_before_near:
|
|
nop
|
|
|
|
.globl _main
|
|
_main:
|
|
L1:
|
|
adrp x0, _before_far@PAGE
|
|
L2:
|
|
add x0, x0, _before_far@PAGEOFF
|
|
L3:
|
|
adrp x1, _before_near@PAGE
|
|
L4:
|
|
add x1, x1, _before_near@PAGEOFF
|
|
L5:
|
|
adrp x2, _before_near@PAGE
|
|
L6:
|
|
add x0, x0, _before_near@PAGEOFF
|
|
L9:
|
|
nop
|
|
L10:
|
|
add x4, x4, _after_near@PAGEOFF
|
|
L11:
|
|
adrp x5, _after_near@PAGE
|
|
L12:
|
|
add x5, x5, _after_near@PAGEOFF
|
|
L13:
|
|
adrp x6, _after_near@PAGE
|
|
L14:
|
|
add x7, x6, _after_near@PAGEOFF
|
|
L15:
|
|
adrp x8, _after_near@PAGE
|
|
L16:
|
|
adrp x9, _after_far@PAGE
|
|
L17:
|
|
add x9, x9, _after_far@PAGEOFF
|
|
L18:
|
|
add x8, x8, _after_near@PAGEOFF
|
|
|
|
_after_near:
|
|
.space 1048576
|
|
|
|
_after_far:
|
|
nop
|
|
|
|
.loh AdrpAdd L1, L2
|
|
.loh AdrpAdd L3, L4
|
|
.loh AdrpAdd L5, L6
|
|
.loh AdrpAdd L9, L10
|
|
.loh AdrpAdd L11, L12
|
|
.loh AdrpAdd L13, L14
|
|
.loh AdrpAdd L15, L18
|
|
.loh AdrpAdd L16, L17
|