blob: 5c30c66d9b2c35f45e34c40693f259c5a46858aa [file] [log] [blame]
// RUN: not llvm-mc -triple aarch64 -filetype obj < %s -o /dev/null 2>&1 | FileCheck %s
// COM: Edge case testing for branches and ADR[P]
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: adr x0, adr_lower
adr_lower:
adr x0, adr_lower-(1<<20)-1
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: adr x0, adr_upper
adr_upper:
adr x0, adr_upper+(1<<20)
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: b b_lower
b_lower:
b b_lower-(1<<27)-4
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: b b_upper
b_upper:
b b_upper+(1<<27)
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: beq beq_lower
beq_lower:
beq beq_lower-(1<<20)-4
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: beq beq_upper
beq_upper:
beq beq_upper+(1<<20)
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: ldr x0, ldr_lower
ldr_lower:
ldr x0, ldr_lower-(1<<20)-4
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: ldr x0, ldr_upper
ldr_upper:
ldr x0, ldr_upper+(1<<20)
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: tbz x0, #1, tbz_lower
tbz_lower:
tbz x0, #1, tbz_lower-(1<<15)-4
// CHECK-LABEL: :{{[0-9]+}}:{{[0-9]+}}: error: fixup value out of range
// CHECK-NEXT: tbz x0, #1, tbz_upper
tbz_upper:
tbz x0, #1, tbz_upper+(1<<15)