xref: /aosp_15_r20/external/llvm/test/MC/AArch64/arm64-elf-relocs.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple=arm64-linux-gnu -o - < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple=arm64-linux-gnu -filetype=obj < %s | llvm-objdump -triple=arm64-linux-gnu - -r | FileCheck %s --check-prefix=CHECK-OBJ
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker   add x0, x2, #:lo12:sym
5*9880d681SAndroid Build Coastguard Worker// CHECK: add x0, x2, :lo12:sym
6*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 0 R_AARCH64_ADD_ABS_LO12_NC sym
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker   add x5, x7, #:dtprel_lo12:sym
9*9880d681SAndroid Build Coastguard Worker// CHECK: add x5, x7, :dtprel_lo12:sym
10*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 4 R_AARCH64_TLSLD_ADD_DTPREL_LO12 sym
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker   add x9, x12, #:dtprel_lo12_nc:sym
13*9880d681SAndroid Build Coastguard Worker// CHECK: add x9, x12, :dtprel_lo12_nc:sym
14*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 8 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC sym
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker   add x20, x30, #:tprel_lo12:sym
17*9880d681SAndroid Build Coastguard Worker// CHECK: add x20, x30, :tprel_lo12:sym
18*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: c R_AARCH64_TLSLE_ADD_TPREL_LO12 sym
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker   add x9, x12, #:tprel_lo12_nc:sym
21*9880d681SAndroid Build Coastguard Worker// CHECK: add x9, x12, :tprel_lo12_nc:sym
22*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 10 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC sym
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker   add x5, x0, #:tlsdesc_lo12:sym
25*9880d681SAndroid Build Coastguard Worker// CHECK: add x5, x0, :tlsdesc_lo12:sym
26*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 14 R_AARCH64_TLSDESC_ADD_LO12_NC sym
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker        add x0, x2, #:lo12:sym+8
29*9880d681SAndroid Build Coastguard Worker// CHECK: add x0, x2, :lo12:sym
30*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 18 R_AARCH64_ADD_ABS_LO12_NC sym+8
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker   add x5, x7, #:dtprel_lo12:sym+1
33*9880d681SAndroid Build Coastguard Worker// CHECK: add x5, x7, :dtprel_lo12:sym+1
34*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 1c R_AARCH64_TLSLD_ADD_DTPREL_LO12 sym+1
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker   add x9, x12, #:dtprel_lo12_nc:sym+2
37*9880d681SAndroid Build Coastguard Worker// CHECK: add x9, x12, :dtprel_lo12_nc:sym+2
38*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ:20 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC sym+2
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker   add x20, x30, #:tprel_lo12:sym+12
41*9880d681SAndroid Build Coastguard Worker// CHECK: add x20, x30, :tprel_lo12:sym+12
42*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 24 R_AARCH64_TLSLE_ADD_TPREL_LO12 sym+12
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Worker   add x9, x12, #:tprel_lo12_nc:sym+54
45*9880d681SAndroid Build Coastguard Worker// CHECK: add x9, x12, :tprel_lo12_nc:sym+54
46*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 28 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC sym+54
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Worker   add x5, x0, #:tlsdesc_lo12:sym+70
49*9880d681SAndroid Build Coastguard Worker// CHECK: add x5, x0, :tlsdesc_lo12:sym+70
50*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 2c R_AARCH64_TLSDESC_ADD_LO12_NC sym+70
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker        .hword sym + 4 - .
53*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 30 R_AARCH64_PREL16 sym+4
54*9880d681SAndroid Build Coastguard Worker        .word sym - . + 8
55*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 32 R_AARCH64_PREL32 sym+8
56*9880d681SAndroid Build Coastguard Worker        .xword sym-.
57*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 36 R_AARCH64_PREL64 sym{{$}}
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Worker        .hword sym
60*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 3e R_AARCH64_ABS16 sym
61*9880d681SAndroid Build Coastguard Worker        .word sym+1
62*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 40 R_AARCH64_ABS32 sym+1
63*9880d681SAndroid Build Coastguard Worker        .xword sym+16
64*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 44 R_AARCH64_ABS64 sym+16
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Worker   adrp x0, sym
67*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x0, sym
68*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 4c R_AARCH64_ADR_PREL_PG_HI21 sym
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Worker   adrp x15, :got:sym
71*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x15, :got:sym
72*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 50 R_AARCH64_ADR_GOT_PAGE sym
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Worker   adrp x29, :gottprel:sym
75*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x29, :gottprel:sym
76*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 54 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 sym
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Worker   adrp x2, :tlsdesc:sym
79*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x2, :tlsdesc:sym
80*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 58 R_AARCH64_TLSDESC_ADR_PAGE21 sym
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Worker   // LLVM is not competent enough to do this relocation because the
83*9880d681SAndroid Build Coastguard Worker   // page boundary could occur anywhere after linking. A relocation
84*9880d681SAndroid Build Coastguard Worker   // is needed.
85*9880d681SAndroid Build Coastguard Worker   adrp x3, trickQuestion
86*9880d681SAndroid Build Coastguard Worker   .global trickQuestion
87*9880d681SAndroid Build Coastguard WorkertrickQuestion:
88*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x3, trickQuestion
89*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 5c R_AARCH64_ADR_PREL_PG_HI21 trickQuestion
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker   ldrb w2, [x3, :lo12:sym]
92*9880d681SAndroid Build Coastguard Worker   ldrsb w5, [x7, #:lo12:sym]
93*9880d681SAndroid Build Coastguard Worker   ldrsb x11, [x13, :lo12:sym]
94*9880d681SAndroid Build Coastguard Worker   ldr b17, [x19, #:lo12:sym]
95*9880d681SAndroid Build Coastguard Worker// CHECK: ldrb w2, [x3, :lo12:sym]
96*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb w5, [x7, :lo12:sym]
97*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb x11, [x13, :lo12:sym]
98*9880d681SAndroid Build Coastguard Worker// CHECK: ldr b17, [x19, :lo12:sym]
99*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST8_ABS_LO12_NC sym
100*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST8_ABS_LO12_NC sym
101*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST8_ABS_LO12_NC sym
102*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST8_ABS_LO12_NC sym
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Worker   ldrb w23, [x29, #:dtprel_lo12_nc:sym]
105*9880d681SAndroid Build Coastguard Worker   ldrsb w23, [x19, #:dtprel_lo12:sym]
106*9880d681SAndroid Build Coastguard Worker   ldrsb x17, [x13, :dtprel_lo12_nc:sym]
107*9880d681SAndroid Build Coastguard Worker   ldr b11, [x7, #:dtprel_lo12:sym]
108*9880d681SAndroid Build Coastguard Worker// CHECK: ldrb w23, [x29, :dtprel_lo12_nc:sym]
109*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb w23, [x19, :dtprel_lo12:sym]
110*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb x17, [x13, :dtprel_lo12_nc:sym]
111*9880d681SAndroid Build Coastguard Worker// CHECK: ldr b11, [x7, :dtprel_lo12:sym]
112*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC sym
113*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST8_DTPREL_LO12 sym
114*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC sym
115*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST8_DTPREL_LO12 sym
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Worker   ldrb w1, [x2, :tprel_lo12:sym]
118*9880d681SAndroid Build Coastguard Worker   ldrsb w3, [x4, #:tprel_lo12_nc:sym]
119*9880d681SAndroid Build Coastguard Worker   ldrsb x5, [x6, :tprel_lo12:sym]
120*9880d681SAndroid Build Coastguard Worker   ldr b7, [x8, #:tprel_lo12_nc:sym]
121*9880d681SAndroid Build Coastguard Worker// CHECK: ldrb w1, [x2, :tprel_lo12:sym]
122*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb w3, [x4, :tprel_lo12_nc:sym]
123*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb x5, [x6, :tprel_lo12:sym]
124*9880d681SAndroid Build Coastguard Worker// CHECK: ldr b7, [x8, :tprel_lo12_nc:sym]
125*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST8_TPREL_LO12 sym
126*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC sym
127*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST8_TPREL_LO12 sym
128*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC sym
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Worker   ldrh w2, [x3, #:lo12:sym]
131*9880d681SAndroid Build Coastguard Worker   ldrsh w5, [x7, :lo12:sym]
132*9880d681SAndroid Build Coastguard Worker   ldrsh x11, [x13, #:lo12:sym]
133*9880d681SAndroid Build Coastguard Worker   ldr h17, [x19, :lo12:sym]
134*9880d681SAndroid Build Coastguard Worker// CHECK: ldrh w2, [x3, :lo12:sym]
135*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh w5, [x7, :lo12:sym]
136*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh x11, [x13, :lo12:sym]
137*9880d681SAndroid Build Coastguard Worker// CHECK: ldr h17, [x19, :lo12:sym]
138*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST16_ABS_LO12_NC sym
139*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST16_ABS_LO12_NC sym
140*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST16_ABS_LO12_NC sym
141*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST16_ABS_LO12_NC sym
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Worker   ldrh w23, [x29, #:dtprel_lo12_nc:sym]
144*9880d681SAndroid Build Coastguard Worker   ldrsh w23, [x19, :dtprel_lo12:sym]
145*9880d681SAndroid Build Coastguard Worker   ldrsh x17, [x13, :dtprel_lo12_nc:sym]
146*9880d681SAndroid Build Coastguard Worker   ldr h11, [x7, #:dtprel_lo12:sym]
147*9880d681SAndroid Build Coastguard Worker// CHECK: ldrh w23, [x29, :dtprel_lo12_nc:sym]
148*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh w23, [x19, :dtprel_lo12:sym]
149*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh x17, [x13, :dtprel_lo12_nc:sym]
150*9880d681SAndroid Build Coastguard Worker// CHECK: ldr h11, [x7, :dtprel_lo12:sym]
151*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC sym
152*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST16_DTPREL_LO12 sym
153*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC sym
154*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST16_DTPREL_LO12 sym
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Worker   ldrh w1, [x2, :tprel_lo12:sym]
157*9880d681SAndroid Build Coastguard Worker   ldrsh w3, [x4, #:tprel_lo12_nc:sym]
158*9880d681SAndroid Build Coastguard Worker   ldrsh x5, [x6, :tprel_lo12:sym]
159*9880d681SAndroid Build Coastguard Worker   ldr h7, [x8, #:tprel_lo12_nc:sym]
160*9880d681SAndroid Build Coastguard Worker// CHECK: ldrh w1, [x2, :tprel_lo12:sym]
161*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh w3, [x4, :tprel_lo12_nc:sym]
162*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh x5, [x6, :tprel_lo12:sym]
163*9880d681SAndroid Build Coastguard Worker// CHECK: ldr h7, [x8, :tprel_lo12_nc:sym]
164*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST16_TPREL_LO12 sym
165*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC sym
166*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST16_TPREL_LO12 sym
167*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC sym
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Worker   ldr w1, [x2, #:lo12:sym]
170*9880d681SAndroid Build Coastguard Worker   ldrsw x3, [x4, #:lo12:sym]
171*9880d681SAndroid Build Coastguard Worker   ldr s4, [x5, :lo12:sym]
172*9880d681SAndroid Build Coastguard Worker// CHECK: ldr w1, [x2, :lo12:sym]
173*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsw x3, [x4, :lo12:sym]
174*9880d681SAndroid Build Coastguard Worker// CHECK: ldr s4, [x5, :lo12:sym]
175*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST32_ABS_LO12_NC sym
176*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST32_ABS_LO12_NC sym
177*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST32_ABS_LO12_NC sym
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Worker   ldr w1, [x2, :dtprel_lo12:sym]
180*9880d681SAndroid Build Coastguard Worker   ldrsw x3, [x4, #:dtprel_lo12_nc:sym]
181*9880d681SAndroid Build Coastguard Worker   ldr s4, [x5, #:dtprel_lo12_nc:sym]
182*9880d681SAndroid Build Coastguard Worker// CHECK: ldr w1, [x2, :dtprel_lo12:sym]
183*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsw x3, [x4, :dtprel_lo12_nc:sym]
184*9880d681SAndroid Build Coastguard Worker// CHECK: ldr s4, [x5, :dtprel_lo12_nc:sym]
185*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST32_DTPREL_LO12 sym
186*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC sym
187*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC sym
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard Worker
190*9880d681SAndroid Build Coastguard Worker   ldr w1, [x2, #:tprel_lo12:sym]
191*9880d681SAndroid Build Coastguard Worker   ldrsw x3, [x4, :tprel_lo12_nc:sym]
192*9880d681SAndroid Build Coastguard Worker   ldr s4, [x5, :tprel_lo12_nc:sym]
193*9880d681SAndroid Build Coastguard Worker// CHECK: ldr w1, [x2, :tprel_lo12:sym]
194*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsw x3, [x4, :tprel_lo12_nc:sym]
195*9880d681SAndroid Build Coastguard Worker// CHECK: ldr s4, [x5, :tprel_lo12_nc:sym]
196*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST32_TPREL_LO12 sym
197*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC sym
198*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC sym
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Worker   ldr x28, [x27, :lo12:sym]
201*9880d681SAndroid Build Coastguard Worker   ldr d26, [x25, #:lo12:sym]
202*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x28, [x27, :lo12:sym]
203*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d26, [x25, :lo12:sym]
204*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST64_ABS_LO12_NC sym
205*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST64_ABS_LO12_NC sym
206*9880d681SAndroid Build Coastguard Worker
207*9880d681SAndroid Build Coastguard Worker   ldr x24, [x23, #:got_lo12:sym]
208*9880d681SAndroid Build Coastguard Worker   ldr d22, [x21, :got_lo12:sym]
209*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :got_lo12:sym]
210*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :got_lo12:sym]
211*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LD64_GOT_LO12_NC sym
212*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LD64_GOT_LO12_NC sym
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard Worker   ldr x24, [x23, :dtprel_lo12_nc:sym]
215*9880d681SAndroid Build Coastguard Worker   ldr d22, [x21, #:dtprel_lo12:sym]
216*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :dtprel_lo12_nc:sym]
217*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :dtprel_lo12:sym]
218*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC sym
219*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST64_DTPREL_LO12 sym
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Worker   ldr x24, [x23, #:tprel_lo12:sym]
222*9880d681SAndroid Build Coastguard Worker   ldr d22, [x21, :tprel_lo12_nc:sym]
223*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :tprel_lo12:sym]
224*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :tprel_lo12_nc:sym]
225*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST64_TPREL_LO12 sym
226*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC sym
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Worker   ldr x24, [x23, :gottprel_lo12:sym]
229*9880d681SAndroid Build Coastguard Worker   ldr d22, [x21, #:gottprel_lo12:sym]
230*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :gottprel_lo12:sym]
231*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :gottprel_lo12:sym]
232*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC sym
233*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC sym
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Worker   ldr x24, [x23, #:tlsdesc_lo12:sym]
236*9880d681SAndroid Build Coastguard Worker   ldr d22, [x21, :tlsdesc_lo12:sym]
237*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :tlsdesc_lo12:sym]
238*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :tlsdesc_lo12:sym]
239*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSDESC_LD64_LO12_NC sym
240*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSDESC_LD64_LO12_NC sym
241*9880d681SAndroid Build Coastguard Worker
242*9880d681SAndroid Build Coastguard Worker   ldr q20, [x19, #:lo12:sym]
243*9880d681SAndroid Build Coastguard Worker// CHECK: ldr q20, [x19, :lo12:sym]
244*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST128_ABS_LO12_NC sym
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Worker// Since relocated instructions print without a '#', that syntax should
247*9880d681SAndroid Build Coastguard Worker// certainly be accepted when assembling.
248*9880d681SAndroid Build Coastguard Worker   add x3, x5, :lo12:imm
249*9880d681SAndroid Build Coastguard Worker// CHECK: add x3, x5, :lo12:imm
250