xref: /llvm-project/llvm/test/MC/AArch64/arm64-adr.s (revision 5da801386c2b820a4596fc6d8da6b5f4a6da94b4)
1// RUN: not llvm-mc -triple arm64 -show-encoding < %s 2>%t | FileCheck %s
2// RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
3
4adr x0, #0
5adr x0, #1
6adr x0, 1f
7adr x0, foo
8// CHECK: adr x0, #0          // encoding: [0x00,0x00,0x00,0x10]
9// CHECK: adr x0, #1          // encoding: [0x00,0x00,0x00,0x30]
10// CHECK: adr x0, .Ltmp0      // encoding: [A,A,A,0x10'A']
11// CHECK-NEXT:                //   fixup A - offset: 0, value: .Ltmp0, kind: fixup_aarch64_pcrel_adr_imm21
12// CHECK: adr x0, foo         // encoding: [A,A,A,0x10'A']
13// CHECK-NEXT:                //   fixup A - offset: 0, value: foo, kind: fixup_aarch64_pcrel_adr_imm21
14
15adrp x0, #0
16adrp x0, #4096
17adrp x0, 1f
18adrp x0, foo
19// CHECK: adrp    x0, #0      // encoding: [0x00,0x00,0x00,0x90]
20// CHECK: adrp    x0, #4096   // encoding: [0x00,0x00,0x00,0xb0]
21// CHECK: adrp    x0, .Ltmp0  // encoding: [A,A,A,0x90'A']
22// CHECK-NEXT:                //   fixup A - offset: 0, value: .Ltmp0, kind: fixup_aarch64_pcrel_adrp_imm21
23// CHECK: adrp    x0, foo     // encoding: [A,A,A,0x90'A']
24// CHECK-NEXT:                //   fixup A - offset: 0, value: foo, kind: fixup_aarch64_pcrel_adrp_imm21
25
26// CHECK:      adrp    x0, lsl     // encoding: [A,A,A,0x90'A']
27// CHECK-NEXT:                //   fixup A - offset: 0, value: lsl, kind: fixup_aarch64_pcrel_adrp_imm21
28// CHECK-NEXT: adrp    x0, ror     // encoding: [A,A,A,0x90'A']
29// CHECK-NEXT:                //   fixup A - offset: 0, value: ror, kind: fixup_aarch64_pcrel_adrp_imm21
30// CHECK-NEXT: adr    x0, uxtb    // encoding: [A,A,A,0x10'A']
31// CHECK-NEXT:                //   fixup A - offset: 0, value: uxtb, kind: fixup_aarch64_pcrel_adr_imm21
32adrp x0, lsl
33adrp x0, ror
34adr x0, uxtb
35
36adr x0, #0xffffffff
37adrp x0, #0xffffffff
38adrp x0, #1
39// CHECK-ERRORS: error: expected label or encodable integer pc offset
40// CHECK-ERRORS: error: expected label or encodable integer pc offset
41// CHECK-ERRORS: error: expected label or encodable integer pc offset
42