134 lines · plain
1# REQUIRES: aarch642 3# RUN: llvm-mc -filetype=obj -triple=arm64-apple-darwin %s -o %t.o4# RUN: %lld -arch arm64 %t.o -o %t5# RUN: llvm-objdump --no-print-imm-hex -d --macho %t | FileCheck %s6 7.text8.align 29_before_far:10 .space 104857611 12.align 213_before_near:14 .quad 015 16.globl _main17# CHECK-LABEL: _main:18_main:19## Out of range, before20L1: adrp x0, _before_far@PAGE21L2: ldr x0, [x0, _before_far@PAGEOFF]22# CHECK-NEXT: adrp x023# CHECK-NEXT: ldr x024 25## In range, before26L3: adrp x1, _before_near@PAGE27L4: ldr x1, [x1, _before_near@PAGEOFF]28# CHECK-NEXT: nop29# CHECK-NEXT: ldr x1, #-2030 31## Registers don't match (invalid input)32L5: adrp x2, _before_near@PAGE33L6: ldr x3, [x3, _before_near@PAGEOFF]34# CHECK-NEXT: adrp x235# CHECK-NEXT: ldr x336 37## Not an adrp instruction38L9: udf 039L10: ldr x5, [x5, _after_near@PAGEOFF]40# CHECK-NEXT: udf41# CHECK-NEXT: ldr x542 43## Not an ldr with an immediate offset44L11: adrp x6, _after_near@PAGE45L12: ldr x6, 046# CHECK-NEXT: adrp x647# CHECK-NEXT: ldr x6, #048 49## Byte load, unsupported50L15: adrp x8, _after_near@PAGE51L16: ldr b8, [x8, _after_near@PAGEOFF]52# CHECK-NEXT: adrp x853# CHECK-NEXT: ldr b854 55## Halfword load, unsupported56L17: adrp x9, _after_near@PAGE57L18: ldr h9, [x9, _after_near@PAGEOFF]58# CHECK-NEXT: adrp x959# CHECK-NEXT: ldr h960 61## Word load62L19: adrp x10, _after_near@PAGE63L20: ldr w10, [x10, _after_near@PAGEOFF]64# CHECK-NEXT: nop65# CHECK-NEXT: ldr w10, _after_near66 67## With addend68L21: adrp x11, _after_near@PAGE + 869L22: ldr x11, [x11, _after_near@PAGEOFF + 8]70# CHECK-NEXT: nop71# CHECK-NEXT: ldr x1172 73## Signed 32-bit read from 16-bit value, unsupported74L23: adrp x12, _after_near@PAGE75L24: ldrsb w12, [x12, _after_near@PAGEOFF]76# CHECK-NEXT: adrp x1277# CHECK-NEXT: ldrsb w1278 79## 64-bit load from signed 32-bit value80L25: adrp x13, _after_near@PAGE81L26: ldrsw x13, [x13, _after_near@PAGEOFF]82# CHECK-NEXT: nop83# CHECK-NEXT: ldrsw x13, _after_near84 85## Single precision FP read86L27: adrp x14, _after_near@PAGE87L28: ldr s0, [x14, _after_near@PAGEOFF]88# CHECK-NEXT: nop89# CHECK-NEXT: ldr s0, _after_near90 91## Double precision FP read92L29: adrp x15, _after_near@PAGE93L30: ldr d0, [x15, _after_near@PAGEOFF]94# CHECK-NEXT: nop95# CHECK-NEXT: ldr d0, _after_near96 97## Quad precision FP read98L31: adrp x16, _after_near@PAGE99L32: ldr q0, [x16, _after_near@PAGEOFF]100# CHECK-NEXT: nop101# CHECK-NEXT: ldr q0, _after_near102 103## Out of range, after104L33: adrp x17, _after_far@PAGE105L34: ldr x17, [x17, _after_far@PAGEOFF]106# CHECK-NEXT: adrp x17107# CHECK-NEXT: ldr x17108 109.data110.align 4111_after_near:112 .quad 0113 .quad 0114.space 1048576115 116_after_far:117 .quad 0118 119.loh AdrpLdr L1, L2120.loh AdrpLdr L3, L4121.loh AdrpLdr L5, L6122.loh AdrpLdr L9, L10123.loh AdrpLdr L11, L12124.loh AdrpLdr L15, L16125.loh AdrpLdr L17, L18126.loh AdrpLdr L19, L20127.loh AdrpLdr L21, L22128.loh AdrpLdr L23, L24129.loh AdrpLdr L25, L26130.loh AdrpLdr L27, L28131.loh AdrpLdr L29, L30132.loh AdrpLdr L31, L32133.loh AdrpLdr L33, L34134