# 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:
## Valid
# CHECK-NEXT: adrp x0
# CHECK-NEXT: nop
## Mismatched registers
# CHECK-NEXT: adrp x1
# CHECK-NEXT: adrp x2
## Not on the same page
# CHECK-NEXT: adrp x3
# CHECK-NEXT: adrp x3
## Not an adrp instruction (invalid)
# CHECK-NEXT: nop
# CHECK-NEXT: adrp x4
## Other relaxations take precedence over AdrpAdrp
# CHECK-NEXT: adr x6
# CHECK-NEXT: nop
# CHECK-NEXT: adr x6
# CHECK-NEXT: nop
.text
.align 2
.globl _main
_main:
L1:
adrp x0, _foo@PAGE
L2:
adrp x0, _bar@PAGE
L3:
adrp x1, _foo@PAGE
L4:
adrp x2, _bar@PAGE
L5:
adrp x3, _foo@PAGE
L6:
adrp x3, _baz@PAGE
L7:
nop
L8:
adrp x4, _baz@PAGE
L9:
adrp x5, _foo@PAGE
L10:
add x6, x5, _foo@PAGEOFF
L11:
adrp x5, _bar@PAGE
L12:
add x6, x5, _bar@PAGEOFF
.data
.align 12
_foo:
.byte 0
_bar:
.byte 0
.space 4094
_baz:
.byte 0
.loh AdrpAdrp L1, L2
.loh AdrpAdrp L3, L4
.loh AdrpAdrp L5, L6
.loh AdrpAdrp L7, L8
.loh AdrpAdrp L9, L11
.loh AdrpAdd L9, L10
.loh AdrpAdd L11, L12