1 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
< %s
2> %t
2 // RUN
: FileCheck
--check-prefix
=CHECK-ERROR
--check-prefix
=CHECK-ERROR-ARM64
< %t %s
4 //------------------------------------------------------------------------------
5 // Add/sub (extended register
)
6 //------------------------------------------------------------------------------
8 // Mismatched final register
and extend
11 add x2
, x4
, w2
, lsl
#3
13 // CHECK-ERROR
: error
: expected
'sxtx' 'uxtx' or 'lsl' with optional integer in range
[0, 4]
14 // CHECK-ERROR
: add x2
, x3
, x5
, sxtb
16 // CHECK-ERROR
: error
: expected
'[su]xt[bhw]' with optional integer in range
[0, 4]
17 // CHECK-ERROR
: add x2
, x4
, w2
, uxtx
19 // CHECK-ERROR
: error
: expected
'[su]xt[bhw]' with optional integer in range
[0, 4]
20 // CHECK-ERROR
: add x2
, x4
, w2
, lsl
#3
22 // CHECK-ERROR
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
23 // CHECK-ERROR
: add w5
, w7
, x9
, sxtx
26 // Out of range extends
27 add x9
, x10
, w11
, uxtb
#-1
28 add x3
, x5
, w7
, uxtb
#5
29 sub x9
, x15
, x2
, uxth
#5
30 // CHECK-ERROR
: error
: expected integer shift amount
31 // CHECK-ERROR
: add x9
, x10
, w11
, uxtb
#-1
33 // CHECK-ERROR
: error
: expected
'[su]xt[bhw]' with optional integer in range
[0, 4]
34 // CHECK-ERROR
: add x3
, x5
, w7
, uxtb
#5
36 // CHECK-ERROR
: error
: expected
'sxtx' 'uxtx' or 'lsl' with optional integer in range
[0, 4]
37 // CHECK-ERROR
: sub x9
, x15
, x2
, uxth
#5
40 // Wrong registers on normal variants
42 sub x3
, xzr
, w9
, sxth
#1
44 // CHECK-ERROR
: error
: expected
'lsl', 'lsr' or 'asr' with optional integer in range
[0, 63]
45 // CHECK-ERROR
: add xzr
, x3
, x5
, uxtx
47 // CHECK-ERROR
: error
: invalid operand for instruction
48 // CHECK-ERROR
: sub x3
, xzr
, w9
, sxth
#1
50 // CHECK-ERROR
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
51 // CHECK-ERROR
: add x1
, x2
, sp
, uxtx
54 // Wrong registers on flag-setting variants
56 adds x3
, xzr
, x9
, uxtx
58 adds x2
, x1
, sp
, uxtb
#2
59 // CHECK-ERROR
: error
: invalid operand for instruction
60 // CHECK-ERROR
: adds sp
, x3
, w2
, uxtb
62 // CHECK-ERROR
: error
: expected
'lsl', 'lsr' or 'asr' with optional integer in range
[0, 63]
63 // CHECK-ERROR
: adds x3
, xzr
, x9
, uxtx
65 // CHECK-ERROR
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
66 // CHECK-ERROR
: subs x2
, x1
, sp
, uxtx
68 // CHECK-ERROR
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
69 // CHECK-ERROR
: adds x2
, x1
, sp
, uxtb
#2
72 // Amount
not optional if lsl valid
and used
74 // CHECK-ERROR
: error
: expected
#imm after shift specifier
75 // CHECK-ERROR
: add sp
, x5
, x7
, lsl
78 //------------------------------------------------------------------------------
79 // Add/sub (immediate
)
80 //------------------------------------------------------------------------------
82 // Out of range immediates
: more than
12 bits
85 add w4
, w5
, #-4096, lsl #12
86 add w5
, w6
, #0x1000, lsl #12
87 // CHECK-ERROR
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
88 // CHECK-ERROR-NEXT
: add w4
, w5
, #-4097
89 // CHECK-ERROR-NEXT
: ^
90 // CHECK-ERROR-AARCH64-NEXT
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
91 // CHECK-ERROR-AARCH64-NEXT
: add w5
, w6
, #0x1000
92 // CHECK-ERROR-AARCH64-NEXT
: ^
93 // CHECK-ERROR-NEXT
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
94 // CHECK-ERROR-NEXT
: add w4
, w5
, #-4096, lsl #12
95 // CHECK-ERROR-NEXT
: ^
96 // CHECK-ERROR-NEXT
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
97 // CHECK-ERROR-NEXT
: add w5
, w6
, #0x1000, lsl #12
98 // CHECK-ERROR-NEXT
: ^
100 // Only lsl
#0 and lsl #12 are allowed
101 add w2
, w3
, #0x1, lsl #1
102 add w5
, w17
, #0xfff, lsl #13
103 add w17
, w20
, #0x1000, lsl #12
104 sub xsp
, x34
, #0x100, lsl #-1
105 // CHECK-ERROR
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
106 // CHECK-ERROR-NEXT
: add w2
, w3
, #0x1, lsl #1
107 // CHECK-ERROR-NEXT
: ^
108 // CHECK-ERROR-NEXT
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
109 // CHECK-ERROR-NEXT
: add w5
, w17
, #0xfff, lsl #13
110 // CHECK-ERROR-NEXT
: ^
111 // CHECK-ERROR-NEXT
: error
: expected compatible register
, symbol
or integer in range
[0, 4095]
112 // CHECK-ERROR-NEXT
: add w17
, w20
, #0x1000, lsl #12
113 // CHECK-ERROR-NEXT
: ^
114 // CHECK-ERROR-NEXT
: error
: only
'lsl #+N' valid after immediate
115 // CHECK-ERROR-NEXT
: sub xsp
, x34
, #0x100, lsl #-1
116 // CHECK-ERROR-NEXT
: ^
118 // Incorrect registers
(w31 doesn
't exist at all, and 31 decodes to sp for these).
123 // CHECK-ERROR: error: invalid operand for instruction
124 // CHECK-ERROR-NEXT: add w31, w20, #1234
125 // CHECK-ERROR-NEXT: ^
126 // CHECK-ERROR-NEXT: error: invalid operand for instruction
127 // CHECK-ERROR-NEXT: add wzr, w20, #0x123
128 // CHECK-ERROR-NEXT: ^
129 // CHECK-ERROR-NEXT: error: invalid operand for instruction
130 // CHECK-ERROR-NEXT: add w20, wzr, #0x321
131 // CHECK-ERROR-NEXT: ^
132 // CHECK-ERROR-NEXT: error: invalid operand for instruction
133 // CHECK-ERROR-NEXT: add wzr, wzr, #0xfff
134 // CHECK-ERROR-NEXT: ^
136 // Mixed register classes
139 // CHECK-ERROR: error: invalid operand for instruction
140 // CHECK-ERROR-NEXT: add xsp, w2, #123
141 // CHECK-ERROR-NEXT: ^
142 // CHECK-ERROR-NEXT: error: invalid operand for instruction
143 // CHECK-ERROR-NEXT: sub w2, x30, #32
144 // CHECK-ERROR-NEXT: ^
146 // Out of range immediate
147 adds w0, w5, #0x10000
148 // CHECK-ERROR-AARCH64: error: expected compatible register, symbol or integer in range [0, 4095]
149 // CHECK-ERROR-AARCH64-NEXT: adds w0, w5, #0x10000
150 // CHECK-ERROR-AARCH64-NEXT: ^
152 // Wn|WSP should be in second place
154 // ...but wzr is the 31 destination
156 subs x5, xzr, #0x456, lsl #12
157 // CHECK-ERROR: error: invalid operand for instruction
158 // CHECK-ERROR-NEXT: adds w4, wzr, #0x123
159 // CHECK-ERROR-NEXT: ^
160 // CHECK-ERROR-NEXT: error: invalid operand for instruction
161 // CHECK-ERROR-NEXT: subs wsp, w5, #123
162 // CHECK-ERROR-NEXT: ^
163 // CHECK-ERROR-NEXT: error: invalid operand for instruction
164 // CHECK-ERROR-NEXT: subs x5, xzr, #0x456, lsl #12
165 // CHECK-ERROR-NEXT: ^
167 // MOV alias should not accept any fiddling
169 mov wsp, w27, #0xfff, lsl #12
170 // CHECK-ERROR: error: expected compatible register or logical immediate
171 // CHECK-ERROR-NEXT: mov x2, xsp, #123
172 // CHECK-ERROR-NEXT: ^
173 // CHECK-ERROR-NEXT: error: invalid operand for instruction
174 // CHECK-ERROR-NEXT: mov wsp, w27, #0xfff, lsl #12
175 // CHECK-ERROR-NEXT: ^
177 // A relocation should be provided for symbols
178 add x3, x9, #variable
179 add x3, x9, #variable-16
180 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
181 // CHECK-ERROR-NEXT: add x3, x9, #variable
182 // CHECK-ERROR-NEXT: ^
183 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
184 // CHECK-ERROR-NEXT: add x3, x9, #variable-16
185 // CHECK-ERROR-NEXT: ^
187 // Relocation on a sub
188 sub x1, x0, :lo12:loc
189 // CHECK-ERROR: error: invalid immediate expression
190 // CHECK-ERROR: sub x1, x0, :lo12:loc
194 //------------------------------------------------------------------------------
195 // Add-subtract (shifted register)
196 //------------------------------------------------------------------------------
198 add wsp, w1, w2, lsr #3
199 add x4, sp, x9, asr #5
200 add x9, x10, x5, ror #3
201 // CHECK-ERROR: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
202 // CHECK-ERROR-NEXT: add wsp, w1, w2, lsr #3
203 // CHECK-ERROR-NEXT: ^
204 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
205 // CHECK-ERROR-NEXT: add x4, sp, x9, asr #5
206 // CHECK-ERROR-NEXT: ^
207 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
208 // CHECK-ERROR-NEXT: add x9, x10, x5, ror #3
209 // CHECK-ERROR-NEXT: ^
211 add w1, w2, w3, lsl #-1
212 add w1, w2, w3, lsl #32
213 add w1, w2, w3, lsr #-1
214 add w1, w2, w3, lsr #32
215 add w1, w2, w3, asr #-1
216 add w1, w2, w3, asr #32
217 add x1, x2, x3, lsl #-1
218 add x1, x2, x3, lsl #64
219 add x1, x2, x3, lsr #-1
220 add x1, x2, x3, lsr #64
221 add x1, x2, x3, asr #-1
222 add x1, x2, x3, asr #64
223 // CHECK-ERROR: error: expected integer shift amount
224 // CHECK-ERROR-NEXT: add w1, w2, w3, lsl #-1
225 // CHECK-ERROR-NEXT: ^
226 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
227 // CHECK-ERROR-NEXT: add w1, w2, w3, lsl #32
228 // CHECK-ERROR-NEXT: ^
229 // CHECK-ERROR-NEXT: error: expected integer shift amount
230 // CHECK-ERROR-NEXT: add w1, w2, w3, lsr #-1
231 // CHECK-ERROR-NEXT: ^
232 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
233 // CHECK-ERROR-NEXT: add w1, w2, w3, lsr #32
234 // CHECK-ERROR-NEXT: ^
235 // CHECK-ERROR-NEXT: error: expected integer shift amount
236 // CHECK-ERROR-NEXT: add w1, w2, w3, asr #-1
237 // CHECK-ERROR-NEXT: ^
238 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
239 // CHECK-ERROR-NEXT: add w1, w2, w3, asr #32
240 // CHECK-ERROR-NEXT: ^
241 // CHECK-ERROR-NEXT: error: expected integer shift amount
242 // CHECK-ERROR-NEXT: add x1, x2, x3, lsl #-1
243 // CHECK-ERROR-NEXT: ^
244 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
245 // CHECK-ERROR-NEXT: add x1, x2, x3, lsl #64
246 // CHECK-ERROR-NEXT: ^
247 // CHECK-ERROR-NEXT: error: expected integer shift amount
248 // CHECK-ERROR-NEXT: add x1, x2, x3, lsr #-1
249 // CHECK-ERROR-NEXT: ^
250 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
251 // CHECK-ERROR-NEXT: add x1, x2, x3, lsr #64
252 // CHECK-ERROR-NEXT: ^
253 // CHECK-ERROR-NEXT: error: expected integer shift amount
254 // CHECK-ERROR-NEXT: add x1, x2, x3, asr #-1
255 // CHECK-ERROR-NEXT: ^
256 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
257 // CHECK-ERROR-NEXT: add x1, x2, x3, asr #64
258 // CHECK-ERROR-NEXT: ^
260 adds w1, w2, w3, lsl #-1
261 adds w1, w2, w3, lsl #32
262 adds w1, w2, w3, lsr #-1
263 adds w1, w2, w3, lsr #32
264 adds w1, w2, w3, asr #-1
265 adds w1, w2, w3, asr #32
266 adds x1, x2, x3, lsl #-1
267 adds x1, x2, x3, lsl #64
268 adds x1, x2, x3, lsr #-1
269 adds x1, x2, x3, lsr #64
270 adds x1, x2, x3, asr #-1
271 adds x1, x2, x3, asr #64
272 // CHECK-ERROR: error: expected integer shift amount
273 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #-1
274 // CHECK-ERROR-NEXT: ^
275 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
276 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #32
277 // CHECK-ERROR-NEXT: ^
278 // CHECK-ERROR-NEXT: error: expected integer shift amount
279 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #-1
280 // CHECK-ERROR-NEXT: ^
281 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
282 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #32
283 // CHECK-ERROR-NEXT: ^
284 // CHECK-ERROR-NEXT: error: expected integer shift amount
285 // CHECK-ERROR-NEXT: adds w1, w2, w3, asr #-1
286 // CHECK-ERROR-NEXT: ^
287 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
288 // CHECK-ERROR-NEXT: adds w1, w2, w3, asr #32
289 // CHECK-ERROR-NEXT: ^
290 // CHECK-ERROR-NEXT: error: expected integer shift amount
291 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #-1
292 // CHECK-ERROR-NEXT: ^
293 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
294 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #64
295 // CHECK-ERROR-NEXT: ^
296 // CHECK-ERROR-NEXT: error: expected integer shift amount
297 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #-1
298 // CHECK-ERROR-NEXT: ^
299 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
300 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #64
301 // CHECK-ERROR-NEXT: ^
302 // CHECK-ERROR-NEXT: error: expected integer shift amount
303 // CHECK-ERROR-NEXT: adds x1, x2, x3, asr #-1
304 // CHECK-ERROR-NEXT: ^
305 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
306 // CHECK-ERROR-NEXT: adds x1, x2, x3, asr #64
307 // CHECK-ERROR-NEXT: ^
309 sub w1, w2, w3, lsl #-1
310 sub w1, w2, w3, lsl #32
311 sub w1, w2, w3, lsr #-1
312 sub w1, w2, w3, lsr #32
313 sub w1, w2, w3, asr #-1
314 sub w1, w2, w3, asr #32
315 sub x1, x2, x3, lsl #-1
316 sub x1, x2, x3, lsl #64
317 sub x1, x2, x3, lsr #-1
318 sub x1, x2, x3, lsr #64
319 sub x1, x2, x3, asr #-1
320 sub x1, x2, x3, asr #64
321 // CHECK-ERROR: error: expected integer shift amount
322 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #-1
323 // CHECK-ERROR-NEXT: ^
324 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
325 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #32
326 // CHECK-ERROR-NEXT: ^
327 // CHECK-ERROR-NEXT: error: expected integer shift amount
328 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #-1
329 // CHECK-ERROR-NEXT: ^
330 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
331 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #32
332 // CHECK-ERROR-NEXT: ^
333 // CHECK-ERROR-NEXT: error: expected integer shift amount
334 // CHECK-ERROR-NEXT: sub w1, w2, w3, asr #-1
335 // CHECK-ERROR-NEXT: ^
336 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
337 // CHECK-ERROR-NEXT: sub w1, w2, w3, asr #32
338 // CHECK-ERROR-NEXT: ^
339 // CHECK-ERROR-NEXT: error: expected integer shift amount
340 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #-1
341 // CHECK-ERROR-NEXT: ^
342 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
343 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #64
344 // CHECK-ERROR-NEXT: ^
345 // CHECK-ERROR-NEXT: error: expected integer shift amount
346 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #-1
347 // CHECK-ERROR-NEXT: ^
348 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
349 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #64
350 // CHECK-ERROR-NEXT: ^
351 // CHECK-ERROR-NEXT: error: expected integer shift amount
352 // CHECK-ERROR-NEXT: sub x1, x2, x3, asr #-1
353 // CHECK-ERROR-NEXT: ^
354 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
355 // CHECK-ERROR-NEXT: sub x1, x2, x3, asr #64
356 // CHECK-ERROR-NEXT: ^
358 subs w1, w2, w3, lsl #-1
359 subs w1, w2, w3, lsl #32
360 subs w1, w2, w3, lsr #-1
361 subs w1, w2, w3, lsr #32
362 subs w1, w2, w3, asr #-1
363 subs w1, w2, w3, asr #32
364 subs x1, x2, x3, lsl #-1
365 subs x1, x2, x3, lsl #64
366 subs x1, x2, x3, lsr #-1
367 subs x1, x2, x3, lsr #64
368 subs x1, x2, x3, asr #-1
369 subs x1, x2, x3, asr #64
370 // CHECK-ERROR: error: expected integer shift amount
371 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #-1
372 // CHECK-ERROR-NEXT: ^
373 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
374 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #32
375 // CHECK-ERROR-NEXT: ^
376 // CHECK-ERROR-NEXT: error: expected integer shift amount
377 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #-1
378 // CHECK-ERROR-NEXT: ^
379 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
380 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #32
381 // CHECK-ERROR-NEXT: ^
382 // CHECK-ERROR-NEXT: error: expected integer shift amount
383 // CHECK-ERROR-NEXT: subs w1, w2, w3, asr #-1
384 // CHECK-ERROR-NEXT: ^
385 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
386 // CHECK-ERROR-NEXT: subs w1, w2, w3, asr #32
387 // CHECK-ERROR-NEXT: ^
388 // CHECK-ERROR-NEXT: error: expected integer shift amount
389 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #-1
390 // CHECK-ERROR-NEXT: ^
391 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
392 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #64
393 // CHECK-ERROR-NEXT: ^
394 // CHECK-ERROR-NEXT: error: expected integer shift amount
395 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #-1
396 // CHECK-ERROR-NEXT: ^
397 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
398 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #64
399 // CHECK-ERROR-NEXT: ^
400 // CHECK-ERROR-NEXT: error: expected integer shift amount
401 // CHECK-ERROR-NEXT: subs x1, x2, x3, asr #-1
402 // CHECK-ERROR-NEXT: ^
403 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
404 // CHECK-ERROR-NEXT: subs x1, x2, x3, asr #64
405 // CHECK-ERROR-NEXT: ^
409 cmn w11, w12, lsr #-1
410 cmn w11, w12, lsr #32
411 cmn w19, wzr, asr #-1
412 cmn wzr, wzr, asr #32
415 cmn x11, x12, lsr #-1
416 cmn x11, x12, lsr #64
417 cmn x19, xzr, asr #-1
418 cmn xzr, xzr, asr #64
419 // CHECK-ERROR: error: expected integer shift amount
420 // CHECK-ERROR-NEXT: cmn w9, w10, lsl #-1
421 // CHECK-ERROR-NEXT: ^
422 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
423 // CHECK-ERROR-NEXT: cmn w9, w10, lsl #32
424 // CHECK-ERROR-NEXT: ^
425 // CHECK-ERROR-NEXT: error: expected integer shift amount
426 // CHECK-ERROR-NEXT: cmn w11, w12, lsr #-1
427 // CHECK-ERROR-NEXT: ^
428 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
429 // CHECK-ERROR-NEXT: cmn w11, w12, lsr #32
430 // CHECK-ERROR-NEXT: ^
431 // CHECK-ERROR-NEXT: error: expected integer shift amount
432 // CHECK-ERROR-NEXT: cmn w19, wzr, asr #-1
433 // CHECK-ERROR-NEXT: ^
434 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 31]
435 // CHECK-ERROR-NEXT: cmn wzr, wzr, asr #32
436 // CHECK-ERROR-NEXT: ^
437 // CHECK-ERROR-NEXT: error: expected integer shift amount
438 // CHECK-ERROR-NEXT: cmn x9, x10, lsl #-1
439 // CHECK-ERROR-NEXT: ^
440 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
441 // CHECK-ERROR-NEXT: cmn x9, x10, lsl #64
442 // CHECK-ERROR-NEXT: ^
443 // CHECK-ERROR-NEXT: error: expected integer shift amount
444 // CHECK-ERROR-NEXT: cmn x11, x12, lsr #-1
445 // CHECK-ERROR-NEXT: ^
446 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
447 // CHECK-ERROR-NEXT: cmn x11, x12, lsr #64
448 // CHECK-ERROR-NEXT: ^
449 // CHECK-ERROR-NEXT: error: expected integer shift amount
450 // CHECK-ERROR-NEXT: cmn x19, xzr, asr #-1
451 // CHECK-ERROR-NEXT: ^
452 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 63]
453 // CHECK-ERROR-NEXT: cmn xzr, xzr, asr #64
454 // CHECK-ERROR-NEXT: ^
458 cmp w11, w12, lsr #-1
459 cmp w11, w12, lsr #32
460 cmp w19, wzr, asr #-1
461 cmp wzr, wzr, asr #32
464 cmp x11, x12, lsr #-1
465 cmp x11, x12, lsr #64
466 cmp x19, xzr, asr #-1
467 cmp xzr, xzr, asr #64
468 // CHECK-ERROR: error: expected integer shift amount
469 // CHECK-ERROR-NEXT: cmp w9, w10, lsl #-1
470 // CHECK-ERROR-NEXT: ^
471 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
472 // CHECK-ERROR-NEXT: cmp w9, w10, lsl #32
473 // CHECK-ERROR-NEXT: ^
474 // CHECK-ERROR-NEXT: error: expected integer shift amount
475 // CHECK-ERROR-NEXT: cmp w11, w12, lsr #-1
476 // CHECK-ERROR-NEXT: ^
477 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
478 // CHECK-ERROR-NEXT: cmp w11, w12, lsr #32
479 // CHECK-ERROR-NEXT: ^
480 // CHECK-ERROR-NEXT: error: expected integer shift amount
481 // CHECK-ERROR-NEXT: cmp w19, wzr, asr #-1
482 // CHECK-ERROR-NEXT: ^
483 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 31]
484 // CHECK-ERROR-NEXT: cmp wzr, wzr, asr #32
485 // CHECK-ERROR-NEXT: ^
486 // CHECK-ERROR-NEXT: error: expected integer shift amount
487 // CHECK-ERROR-NEXT: cmp x9, x10, lsl #-1
488 // CHECK-ERROR-NEXT: ^
489 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
490 // CHECK-ERROR-NEXT: cmp x9, x10, lsl #64
491 // CHECK-ERROR-NEXT: ^
492 // CHECK-ERROR-NEXT: error: expected integer shift amount
493 // CHECK-ERROR-NEXT: cmp x11, x12, lsr #-1
494 // CHECK-ERROR-NEXT: ^
495 // CHECK-ERROR-NEXT: error: expected 'sxtx
' 'uxtx
' or 'lsl
' with optional integer in range [0, 4]
496 // CHECK-ERROR-NEXT: cmp x11, x12, lsr #64
497 // CHECK-ERROR-NEXT: ^
498 // CHECK-ERROR-NEXT: error: expected integer shift amount
499 // CHECK-ERROR-NEXT: cmp x19, xzr, asr #-1
500 // CHECK-ERROR-NEXT: ^
501 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 63]
502 // CHECK-ERROR-NEXT: cmp xzr, xzr, asr #64
503 // CHECK-ERROR-NEXT: ^
507 neg w11, w12, lsr #-1
508 neg w11, w12, lsr #32
509 neg w19, wzr, asr #-1
510 neg wzr, wzr, asr #32
513 neg x11, x12, lsr #-1
514 neg x11, x12, lsr #64
515 neg x19, xzr, asr #-1
516 neg xzr, xzr, asr #64
517 // CHECK-ERROR: error: expected integer shift amount
518 // CHECK-ERROR-NEXT: neg w9, w10, lsl #-1
519 // CHECK-ERROR-NEXT: ^
520 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 31]
521 // CHECK-ERROR-NEXT: neg w9, w10, lsl #32
522 // CHECK-ERROR-NEXT: ^
523 // CHECK-ERROR-NEXT: error: expected integer shift amount
524 // CHECK-ERROR-NEXT: neg w11, w12, lsr #-1
525 // CHECK-ERROR-NEXT: ^
526 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 31]
527 // CHECK-ERROR-NEXT: neg w11, w12, lsr #32
528 // CHECK-ERROR-NEXT: ^
529 // CHECK-ERROR-NEXT: error: expected integer shift amount
530 // CHECK-ERROR-NEXT: neg w19, wzr, asr #-1
531 // CHECK-ERROR-NEXT: ^
532 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 31]
533 // CHECK-ERROR-NEXT: neg wzr, wzr, asr #32
534 // CHECK-ERROR-NEXT: ^
535 // CHECK-ERROR-NEXT: error: expected integer shift amount
536 // CHECK-ERROR-NEXT: neg x9, x10, lsl #-1
537 // CHECK-ERROR-NEXT: ^
538 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 63]
539 // CHECK-ERROR-NEXT: neg x9, x10, lsl #64
540 // CHECK-ERROR-NEXT: ^
541 // CHECK-ERROR-NEXT: error: expected integer shift amount
542 // CHECK-ERROR-NEXT: neg x11, x12, lsr #-1
543 // CHECK-ERROR-NEXT: ^
544 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 63]
545 // CHECK-ERROR-NEXT: neg x11, x12, lsr #64
546 // CHECK-ERROR-NEXT: ^
547 // CHECK-ERROR-NEXT: error: expected integer shift amount
548 // CHECK-ERROR-NEXT: neg x19, xzr, asr #-1
549 // CHECK-ERROR-NEXT: ^
550 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 63]
551 // CHECK-ERROR-NEXT: neg xzr, xzr, asr #64
552 // CHECK-ERROR-NEXT: ^
554 negs w9, w10, lsl #-1
555 negs w9, w10, lsl #32
556 negs w11, w12, lsr #-1
557 negs w11, w12, lsr #32
558 negs w19, wzr, asr #-1
559 negs wzr, wzr, asr #32
560 negs x9, x10, lsl #-1
561 negs x9, x10, lsl #64
562 negs x11, x12, lsr #-1
563 negs x11, x12, lsr #64
564 negs x19, xzr, asr #-1
565 negs xzr, xzr, asr #64
566 // CHECK-ERROR: error: expected integer shift amount
567 // CHECK-ERROR-NEXT: negs w9, w10, lsl #-1
568 // CHECK-ERROR-NEXT: ^
569 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 31]
570 // CHECK-ERROR-NEXT: negs w9, w10, lsl #32
571 // CHECK-ERROR-NEXT: ^
572 // CHECK-ERROR-NEXT: error: expected integer shift amount
573 // CHECK-ERROR-NEXT: negs w11, w12, lsr #-1
574 // CHECK-ERROR-NEXT: ^
575 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 31]
576 // CHECK-ERROR-NEXT: negs w11, w12, lsr #32
577 // CHECK-ERROR-NEXT: ^
578 // CHECK-ERROR-NEXT: error: expected integer shift amount
579 // CHECK-ERROR-NEXT: negs w19, wzr, asr #-1
580 // CHECK-ERROR-NEXT: ^
581 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 31]
582 // CHECK-ERROR-NEXT: negs wzr, wzr, asr #32
583 // CHECK-ERROR-NEXT: ^
584 // CHECK-ERROR-NEXT: error: expected integer shift amount
585 // CHECK-ERROR-NEXT: negs x9, x10, lsl #-1
586 // CHECK-ERROR-NEXT: ^
587 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 63]
588 // CHECK-ERROR-NEXT: negs x9, x10, lsl #64
589 // CHECK-ERROR-NEXT: ^
590 // CHECK-ERROR-NEXT: error: expected integer shift amount
591 // CHECK-ERROR-NEXT: negs x11, x12, lsr #-1
592 // CHECK-ERROR-NEXT: ^
593 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 63]
594 // CHECK-ERROR-NEXT: negs x11, x12, lsr #64
595 // CHECK-ERROR-NEXT: ^
596 // CHECK-ERROR-NEXT: error: expected integer shift amount
597 // CHECK-ERROR-NEXT: negs x19, xzr, asr #-1
598 // CHECK-ERROR-NEXT: ^
599 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 63]
600 // CHECK-ERROR-NEXT: negs xzr, xzr, asr #64
601 // CHECK-ERROR-NEXT: ^
603 //------------------------------------------------------------------------------
604 // Add-subtract (shifted register)
605 //------------------------------------------------------------------------------
610 // CHECK-ERROR: error: invalid operand for instruction
611 // CHECK-ERROR-NEXT: adc wsp, w3, w5
612 // CHECK-ERROR-NEXT: ^
613 // CHECK-ERROR-NEXT: error: invalid operand for instruction
614 // CHECK-ERROR-NEXT: adc w1, wsp, w2
615 // CHECK-ERROR-NEXT: ^
616 // CHECK-ERROR-NEXT: error: invalid operand for instruction
617 // CHECK-ERROR-NEXT: adc w0, w10, wsp
618 // CHECK-ERROR-NEXT: ^
623 // CHECK-ERROR: error: invalid operand for instruction
624 // CHECK-ERROR-NEXT: adc sp, x3, x5
625 // CHECK-ERROR-NEXT: ^
626 // CHECK-ERROR-NEXT: error: invalid operand for instruction
627 // CHECK-ERROR-NEXT: adc x1, sp, x2
628 // CHECK-ERROR-NEXT: ^
629 // CHECK-ERROR-NEXT: error: invalid operand for instruction
630 // CHECK-ERROR-NEXT: adc x0, x10, sp
631 // CHECK-ERROR-NEXT: ^
636 // CHECK-ERROR: error: invalid operand for instruction
637 // CHECK-ERROR-NEXT: adcs wsp, w3, w5
638 // CHECK-ERROR-NEXT: ^
639 // CHECK-ERROR-NEXT: error: invalid operand for instruction
640 // CHECK-ERROR-NEXT: adcs w1, wsp, w2
641 // CHECK-ERROR-NEXT: ^
642 // CHECK-ERROR-NEXT: error: invalid operand for instruction
643 // CHECK-ERROR-NEXT: adcs w0, w10, wsp
644 // CHECK-ERROR-NEXT: ^
649 // CHECK-ERROR: error: invalid operand for instruction
650 // CHECK-ERROR-NEXT: adcs sp, x3, x5
651 // CHECK-ERROR-NEXT: ^
652 // CHECK-ERROR-NEXT: error: invalid operand for instruction
653 // CHECK-ERROR-NEXT: adcs x1, sp, x2
654 // CHECK-ERROR-NEXT: ^
655 // CHECK-ERROR-NEXT: error: invalid operand for instruction
656 // CHECK-ERROR-NEXT: adcs x0, x10, sp
657 // CHECK-ERROR-NEXT: ^
662 // CHECK-ERROR: error: invalid operand for instruction
663 // CHECK-ERROR-NEXT: sbc wsp, w3, w5
664 // CHECK-ERROR-NEXT: ^
665 // CHECK-ERROR-NEXT: error: invalid operand for instruction
666 // CHECK-ERROR-NEXT: sbc w1, wsp, w2
667 // CHECK-ERROR-NEXT: ^
668 // CHECK-ERROR-NEXT: error: invalid operand for instruction
669 // CHECK-ERROR-NEXT: sbc w0, w10, wsp
670 // CHECK-ERROR-NEXT: ^
675 // CHECK-ERROR: error: invalid operand for instruction
676 // CHECK-ERROR-NEXT: sbc sp, x3, x5
677 // CHECK-ERROR-NEXT: ^
678 // CHECK-ERROR-NEXT: error: invalid operand for instruction
679 // CHECK-ERROR-NEXT: sbc x1, sp, x2
680 // CHECK-ERROR-NEXT: ^
681 // CHECK-ERROR-NEXT: error: invalid operand for instruction
682 // CHECK-ERROR-NEXT: sbc x0, x10, sp
683 // CHECK-ERROR-NEXT: ^
688 // CHECK-ERROR: error: invalid operand for instruction
689 // CHECK-ERROR-NEXT: sbcs wsp, w3, w5
690 // CHECK-ERROR-NEXT: ^
691 // CHECK-ERROR-NEXT: error: invalid operand for instruction
692 // CHECK-ERROR-NEXT: sbcs w1, wsp, w2
693 // CHECK-ERROR-NEXT: ^
694 // CHECK-ERROR-NEXT: error: invalid operand for instruction
695 // CHECK-ERROR-NEXT: sbcs w0, w10, wsp
696 // CHECK-ERROR-NEXT: ^
701 // CHECK-ERROR: error: invalid operand for instruction
702 // CHECK-ERROR-NEXT: sbcs sp, x3, x5
703 // CHECK-ERROR-NEXT: ^
704 // CHECK-ERROR-NEXT: error: invalid operand for instruction
705 // CHECK-ERROR-NEXT: sbcs x1, sp, x2
706 // CHECK-ERROR-NEXT: ^
707 // CHECK-ERROR-NEXT: error: invalid operand for instruction
708 // CHECK-ERROR-NEXT: sbcs x0, x10, sp
709 // CHECK-ERROR-NEXT: ^
715 // CHECK-ERROR: error: invalid operand for instruction
716 // CHECK-ERROR-NEXT: ngc wsp, w3
717 // CHECK-ERROR-NEXT: ^
718 // CHECK-ERROR-NEXT: error: invalid operand for instruction
719 // CHECK-ERROR-NEXT: ngc w9, wsp
720 // CHECK-ERROR-NEXT: ^
721 // CHECK-ERROR-NEXT: error: invalid operand for instruction
722 // CHECK-ERROR-NEXT: ngc sp, x9
723 // CHECK-ERROR-NEXT: ^
724 // CHECK-ERROR-NEXT: error: invalid operand for instruction
725 // CHECK-ERROR-NEXT: ngc x2, sp
726 // CHECK-ERROR-NEXT: ^
732 // CHECK-ERROR: error: invalid operand for instruction
733 // CHECK-ERROR-NEXT: ngcs wsp, w3
734 // CHECK-ERROR-NEXT: ^
735 // CHECK-ERROR-NEXT: error: invalid operand for instruction
736 // CHECK-ERROR-NEXT: ngcs w9, wsp
737 // CHECK-ERROR-NEXT: ^
738 // CHECK-ERROR-NEXT: error: invalid operand for instruction
739 // CHECK-ERROR-NEXT: ngcs sp, x9
740 // CHECK-ERROR-NEXT: ^
741 // CHECK-ERROR-NEXT: error: invalid operand for instruction
742 // CHECK-ERROR-NEXT: ngcs x2, sp
743 // CHECK-ERROR-NEXT: ^
745 //------------------------------------------------------------------------------
746 // Logical (immediates)
747 //------------------------------------------------------------------------------
749 and w2, w3, #4294967296
750 eor w2, w3, #4294967296
751 orr w2, w3, #4294967296
752 ands w2, w3, #4294967296
753 // CHECK-ERROR: error: expected compatible register or logical immediate
754 // CHECK-ERROR-NEXT: and w2, w3, #4294967296
755 // CHECK-ERROR-NEXT: ^
756 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
757 // CHECK-ERROR-NEXT: eor w2, w3, #4294967296
758 // CHECK-ERROR-NEXT: ^
759 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
760 // CHECK-ERROR-NEXT: orr w2, w3, #4294967296
761 // CHECK-ERROR-NEXT: ^
762 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
763 // CHECK-ERROR-NEXT: ands w2, w3, #4294967296
764 // CHECK-ERROR-NEXT: ^
766 //------------------------------------------------------------------------------
768 //------------------------------------------------------------------------------
776 // CHECK-ERROR: error: invalid operand for instruction
777 // CHECK-ERROR-NEXT: sbfm x3, w13, #0, #0
778 // CHECK-ERROR-NEXT: ^
779 // CHECK-ERROR-NEXT: error: invalid operand for instruction
780 // CHECK-ERROR-NEXT: sbfm w12, x9, #0, #0
781 // CHECK-ERROR-NEXT: ^
782 // CHECK-ERROR-NEXT: error: invalid operand for instruction
783 // CHECK-ERROR-NEXT: sbfm sp, x3, #3, #5
784 // CHECK-ERROR-NEXT: ^
785 // CHECK-ERROR-NEXT: error: invalid operand for instruction
786 // CHECK-ERROR-NEXT: sbfm w3, wsp, #1, #9
787 // CHECK-ERROR-NEXT: ^
788 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
789 // CHECK-ERROR-NEXT: sbfm x9, x5, #-1, #0
790 // CHECK-ERROR-NEXT: ^
791 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
792 // CHECK-ERROR-NEXT: sbfm x9, x5, #0, #-1
793 // CHECK-ERROR-NEXT: ^
796 sbfm w7, w11, #19, #32
797 sbfm x29, x30, #64, #0
798 sbfm x10, x20, #63, #64
799 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
800 // CHECK-ERROR-NEXT: sbfm w3, w5, #32, #1
801 // CHECK-ERROR-NEXT: ^
802 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
803 // CHECK-ERROR-NEXT: sbfm w7, w11, #19, #32
804 // CHECK-ERROR-NEXT: ^
805 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
806 // CHECK-ERROR-NEXT: sbfm x29, x30, #64, #0
807 // CHECK-ERROR-NEXT: ^
808 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
809 // CHECK-ERROR-NEXT: sbfm x10, x20, #63, #64
810 // CHECK-ERROR-NEXT: ^
813 ubfm w7, w11, #19, #32
814 ubfm x29, x30, #64, #0
815 ubfm x10, x20, #63, #64
816 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
817 // CHECK-ERROR-NEXT: ubfm w3, w5, #32, #1
818 // CHECK-ERROR-NEXT: ^
819 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
820 // CHECK-ERROR-NEXT: ubfm w7, w11, #19, #32
821 // CHECK-ERROR-NEXT: ^
822 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
823 // CHECK-ERROR-NEXT: ubfm x29, x30, #64, #0
824 // CHECK-ERROR-NEXT: ^
825 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
826 // CHECK-ERROR-NEXT: ubfm x10, x20, #63, #64
827 // CHECK-ERROR-NEXT: ^
830 bfm w7, w11, #19, #32
831 bfm x29, x30, #64, #0
832 bfm x10, x20, #63, #64
833 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
834 // CHECK-ERROR-NEXT: bfm w3, w5, #32, #1
835 // CHECK-ERROR-NEXT: ^
836 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
837 // CHECK-ERROR-NEXT: bfm w7, w11, #19, #32
838 // CHECK-ERROR-NEXT: ^
839 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
840 // CHECK-ERROR-NEXT: bfm x29, x30, #64, #0
841 // CHECK-ERROR-NEXT: ^
842 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
843 // CHECK-ERROR-NEXT: bfm x10, x20, #63, #64
844 // CHECK-ERROR-NEXT: ^
849 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
850 // CHECK-ERROR-AARCH64-NEXT: sxtb x3, x2
851 // CHECK-ERROR-AARCH64-NEXT: ^
852 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
853 // CHECK-ERROR-AARCH64-NEXT: sxth xzr, xzr
854 // CHECK-ERROR-AARCH64-NEXT: ^
855 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
856 // CHECK-ERROR-AARCH64-NEXT: sxtw x3, x5
857 // CHECK-ERROR-AARCH64-NEXT: ^
864 // CHECK-ERROR: error: invalid operand for instruction
865 // CHECK-ERROR-NEXT: uxtb x3, x12
866 // CHECK-ERROR-NEXT: ^
867 // CHECK-ERROR-NEXT: error: invalid operand for instruction
868 // CHECK-ERROR-NEXT: uxth x5, x9
869 // CHECK-ERROR-NEXT: ^
870 // CHECK-ERROR-AARCH64-NEXT: error: invalid instruction
871 // CHECK-ERROR-AARCH64-NEXT: uxtw x3, x5
872 // CHECK-ERROR-AARCH64-NEXT: ^
873 // CHECK-ERROR-NEXT: error: invalid operand for instruction
874 // CHECK-ERROR-NEXT: uxtb x2, sp
875 // CHECK-ERROR-NEXT: ^
876 // CHECK-ERROR-NEXT: error: invalid operand for instruction
877 // CHECK-ERROR-NEXT: uxtb sp, xzr
878 // CHECK-ERROR-NEXT: ^
885 // CHECK-ERROR: error: invalid operand for instruction
886 // CHECK-ERROR-NEXT: asr x3, w2, #1
887 // CHECK-ERROR-NEXT: ^
888 // CHECK-ERROR-NEXT: error: invalid operand for instruction
889 // CHECK-ERROR-NEXT: asr sp, x2, #1
890 // CHECK-ERROR-NEXT: ^
891 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
892 // CHECK-ERROR-NEXT: asr x25, x26, #-1
893 // CHECK-ERROR-NEXT: ^
894 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
895 // CHECK-ERROR-NEXT: asr x25, x26, #64
896 // CHECK-ERROR-NEXT: ^
897 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
898 // CHECK-ERROR-NEXT: asr w9, w8, #32
899 // CHECK-ERROR-NEXT: ^
902 sbfiz wsp, w9, #0, #1
903 sbfiz w9, w10, #32, #1
904 sbfiz w11, w12, #32, #0
905 sbfiz w9, w10, #10, #23
906 sbfiz x3, x5, #12, #53
908 sbfiz w3, wsp, #10, #8
909 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
910 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
911 // CHECK-ERROR-NEXT: sbfiz w1, w2, #0, #0
912 // CHECK-ERROR-NEXT: ^
913 // CHECK-ERROR-NEXT: error: invalid operand for instruction
914 // CHECK-ERROR-NEXT: sbfiz wsp, w9, #0, #1
915 // CHECK-ERROR-NEXT: ^
916 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
917 // CHECK-ERROR-NEXT: sbfiz w9, w10, #32, #1
918 // CHECK-ERROR-NEXT: ^
919 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
920 // CHECK-ERROR-NEXT: sbfiz w11, w12, #32, #0
921 // CHECK-ERROR-NEXT: ^
922 // CHECK-ERROR-NEXT: error: requested insert overflows register
923 // CHECK-ERROR-NEXT: sbfiz w9, w10, #10, #23
924 // CHECK-ERROR-NEXT: ^
925 // CHECK-ERROR-NEXT: error: requested insert overflows register
926 // CHECK-ERROR-NEXT: sbfiz x3, x5, #12, #53
927 // CHECK-ERROR-NEXT: ^
928 // CHECK-ERROR-NEXT: error: invalid operand for instruction
929 // CHECK-ERROR-NEXT: sbfiz sp, x3, #7, #6
930 // CHECK-ERROR-NEXT: ^
931 // CHECK-ERROR-NEXT: error: invalid operand for instruction
932 // CHECK-ERROR-NEXT: sbfiz w3, wsp, #10, #8
933 // CHECK-ERROR-NEXT: ^
937 sbfx w9, w10, #32, #1
938 sbfx w11, w12, #32, #0
939 sbfx w9, w10, #10, #23
940 sbfx x3, x5, #12, #53
942 sbfx w3, wsp, #10, #8
943 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
944 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
945 // CHECK-ERROR-NEXT: sbfx w1, w2, #0, #0
946 // CHECK-ERROR-NEXT: ^
947 // CHECK-ERROR-NEXT: error: invalid operand for instruction
948 // CHECK-ERROR-NEXT: sbfx wsp, w9, #0, #1
949 // CHECK-ERROR-NEXT: ^
950 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
951 // CHECK-ERROR-NEXT: sbfx w9, w10, #32, #1
952 // CHECK-ERROR-NEXT: ^
953 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
954 // CHECK-ERROR-NEXT: sbfx w11, w12, #32, #0
955 // CHECK-ERROR-NEXT: ^
956 // CHECK-ERROR-NEXT: error: requested extract overflows register
957 // CHECK-ERROR-NEXT: sbfx w9, w10, #10, #23
958 // CHECK-ERROR-NEXT: ^
959 // CHECK-ERROR-NEXT: error: requested extract overflows register
960 // CHECK-ERROR-NEXT: sbfx x3, x5, #12, #53
961 // CHECK-ERROR-NEXT: ^
962 // CHECK-ERROR-NEXT: error: invalid operand for instruction
963 // CHECK-ERROR-NEXT: sbfx sp, x3, #7, #6
964 // CHECK-ERROR-NEXT: ^
965 // CHECK-ERROR-NEXT: error: invalid operand for instruction
966 // CHECK-ERROR-NEXT: sbfx w3, wsp, #10, #8
967 // CHECK-ERROR-NEXT: ^
972 bfi w11, w12, #32, #0
973 bfi w9, w10, #10, #23
977 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
978 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
979 // CHECK-ERROR-NEXT: bfi w1, w2, #0, #0
980 // CHECK-ERROR-NEXT: ^
981 // CHECK-ERROR-NEXT: error: invalid operand for instruction
982 // CHECK-ERROR-NEXT: bfi wsp, w9, #0, #1
983 // CHECK-ERROR-NEXT: ^
984 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
985 // CHECK-ERROR-NEXT: bfi w9, w10, #32, #1
986 // CHECK-ERROR-NEXT: ^
987 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
988 // CHECK-ERROR-NEXT: bfi w11, w12, #32, #0
989 // CHECK-ERROR-NEXT: ^
990 // CHECK-ERROR-NEXT: error: requested insert overflows register
991 // CHECK-ERROR-NEXT: bfi w9, w10, #10, #23
992 // CHECK-ERROR-NEXT: ^
993 // CHECK-ERROR-NEXT: error: requested insert overflows register
994 // CHECK-ERROR-NEXT: bfi x3, x5, #12, #53
995 // CHECK-ERROR-NEXT: ^
996 // CHECK-ERROR-NEXT: error: invalid operand for instruction
997 // CHECK-ERROR-NEXT: bfi sp, x3, #7, #6
998 // CHECK-ERROR-NEXT: ^
999 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1000 // CHECK-ERROR-NEXT: bfi w3, wsp, #10, #8
1001 // CHECK-ERROR-NEXT: ^
1003 bfxil w1, w2, #0, #0
1004 bfxil wsp, w9, #0, #1
1005 bfxil w9, w10, #32, #1
1006 bfxil w11, w12, #32, #0
1007 bfxil w9, w10, #10, #23
1008 bfxil x3, x5, #12, #53
1009 bfxil sp, x3, #7, #6
1010 bfxil w3, wsp, #10, #8
1011 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
1012 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
1013 // CHECK-ERROR-NEXT: bfxil w1, w2, #0, #0
1014 // CHECK-ERROR-NEXT: ^
1015 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1016 // CHECK-ERROR-NEXT: bfxil wsp, w9, #0, #1
1017 // CHECK-ERROR-NEXT: ^
1018 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1019 // CHECK-ERROR-NEXT: bfxil w9, w10, #32, #1
1020 // CHECK-ERROR-NEXT: ^
1021 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1022 // CHECK-ERROR-NEXT: bfxil w11, w12, #32, #0
1023 // CHECK-ERROR-NEXT: ^
1024 // CHECK-ERROR-NEXT: error: requested extract overflows register
1025 // CHECK-ERROR-NEXT: bfxil w9, w10, #10, #23
1026 // CHECK-ERROR-NEXT: ^
1027 // CHECK-ERROR-NEXT: error: requested extract overflows register
1028 // CHECK-ERROR-NEXT: bfxil x3, x5, #12, #53
1029 // CHECK-ERROR-NEXT: ^
1030 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1031 // CHECK-ERROR-NEXT: bfxil sp, x3, #7, #6
1032 // CHECK-ERROR-NEXT: ^
1033 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1034 // CHECK-ERROR-NEXT: bfxil w3, wsp, #10, #8
1035 // CHECK-ERROR-NEXT: ^
1037 ubfiz w1, w2, #0, #0
1038 ubfiz wsp, w9, #0, #1
1039 ubfiz w9, w10, #32, #1
1040 ubfiz w11, w12, #32, #0
1041 ubfiz w9, w10, #10, #23
1042 ubfiz x3, x5, #12, #53
1043 ubfiz sp, x3, #7, #6
1044 ubfiz w3, wsp, #10, #8
1045 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
1046 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
1047 // CHECK-ERROR-NEXT: ubfiz w1, w2, #0, #0
1048 // CHECK-ERROR-NEXT: ^
1049 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1050 // CHECK-ERROR-NEXT: ubfiz wsp, w9, #0, #1
1051 // CHECK-ERROR-NEXT: ^
1052 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1053 // CHECK-ERROR-NEXT: ubfiz w9, w10, #32, #1
1054 // CHECK-ERROR-NEXT: ^
1055 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1056 // CHECK-ERROR-NEXT: ubfiz w11, w12, #32, #0
1057 // CHECK-ERROR-NEXT: ^
1058 // CHECK-ERROR-NEXT: error: requested insert overflows register
1059 // CHECK-ERROR-NEXT: ubfiz w9, w10, #10, #23
1060 // CHECK-ERROR-NEXT: ^
1061 // CHECK-ERROR-NEXT: error: requested insert overflows register
1062 // CHECK-ERROR-NEXT: ubfiz x3, x5, #12, #53
1063 // CHECK-ERROR-NEXT: ^
1064 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1065 // CHECK-ERROR-NEXT: ubfiz sp, x3, #7, #6
1066 // CHECK-ERROR-NEXT: ^
1067 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1068 // CHECK-ERROR-NEXT: ubfiz w3, wsp, #10, #8
1069 // CHECK-ERROR-NEXT: ^
1072 ubfx wsp, w9, #0, #1
1073 ubfx w9, w10, #32, #1
1074 ubfx w11, w12, #32, #0
1075 ubfx w9, w10, #10, #23
1076 ubfx x3, x5, #12, #53
1078 ubfx w3, wsp, #10, #8
1079 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
1080 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
1081 // CHECK-ERROR-NEXT: ubfx w1, w2, #0, #0
1082 // CHECK-ERROR-NEXT: ^
1083 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1084 // CHECK-ERROR-NEXT: ubfx wsp, w9, #0, #1
1085 // CHECK-ERROR-NEXT: ^
1086 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1087 // CHECK-ERROR-NEXT: ubfx w9, w10, #32, #1
1088 // CHECK-ERROR-NEXT: ^
1089 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1090 // CHECK-ERROR-NEXT: ubfx w11, w12, #32, #0
1091 // CHECK-ERROR-NEXT: ^
1092 // CHECK-ERROR-NEXT: error: requested extract overflows register
1093 // CHECK-ERROR-NEXT: ubfx w9, w10, #10, #23
1094 // CHECK-ERROR-NEXT: ^
1095 // CHECK-ERROR-NEXT: error: requested extract overflows register
1096 // CHECK-ERROR-NEXT: ubfx x3, x5, #12, #53
1097 // CHECK-ERROR-NEXT: ^
1098 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1099 // CHECK-ERROR-NEXT: ubfx sp, x3, #7, #6
1100 // CHECK-ERROR-NEXT: ^
1101 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1102 // CHECK-ERROR-NEXT: ubfx w3, wsp, #10, #8
1103 // CHECK-ERROR-NEXT: ^
1109 // CHECK-ERROR: error: invalid operand for instruction
1110 // CHECK-ERROR-NEXT: bfc wsp, #3, #6
1111 // CHECK-ERROR-NEXT: ^
1112 // CHECK-ERROR-NEXT: error: requested insert overflows register
1113 // CHECK-ERROR-NEXT: bfc w4, #2, #31
1114 // CHECK-ERROR-NEXT: ^
1115 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1116 // CHECK-ERROR-NEXT: bfc sp, #0, #1
1117 // CHECK-ERROR-NEXT: ^
1118 // CHECK-ERROR-NEXT: error: expected integer in range [1, 32]
1119 // CHECK-ERROR-NEXT: bfc x6, #0, #0
1120 // CHECK-ERROR-NEXT: ^
1122 //------------------------------------------------------------------------------
1123 // Compare & branch (immediate)
1124 //------------------------------------------------------------------------------
1129 // CHECK-ERROR: error: invalid operand for instruction
1130 // CHECK-ERROR-NEXT: cbnz wsp, lbl
1131 // CHECK-ERROR-NEXT: ^
1132 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1133 // CHECK-ERROR-NEXT: cbz sp, lbl
1134 // CHECK-ERROR-NEXT: ^
1135 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1136 // CHECK-ERROR-NEXT: cbz x3, x5
1137 // CHECK-ERROR-NEXT: ^
1142 // CHECK-ERROR: error: expected label or encodable integer pc offset
1143 // CHECK-ERROR-NEXT: cbz w20, #1048576
1144 // CHECK-ERROR-NEXT: ^
1145 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1146 // CHECK-ERROR-NEXT: cbnz xzr, #-1048580
1147 // CHECK-ERROR-NEXT: ^
1148 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1149 // CHECK-ERROR-NEXT: cbz x29, #1
1150 // CHECK-ERROR-NEXT: ^
1152 //------------------------------------------------------------------------------
1153 // Conditional branch (immediate)
1154 //------------------------------------------------------------------------------
1157 // CHECK-ERROR: error: invalid condition code
1158 // CHECK-ERROR-NEXT: b.zf lbl
1159 // CHECK-ERROR-NEXT: ^
1164 // CHECK-ERROR: error: expected label or encodable integer pc offset
1165 // CHECK-ERROR-NEXT: b.eq #1048576
1166 // CHECK-ERROR-NEXT: ^
1167 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1168 // CHECK-ERROR-NEXT: b.ge #-1048580
1169 // CHECK-ERROR-NEXT: ^
1170 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1171 // CHECK-ERROR-NEXT: b.cc #1
1172 // CHECK-ERROR-NEXT: ^
1174 //------------------------------------------------------------------------------
1175 // Conditional compare (immediate)
1176 //------------------------------------------------------------------------------
1178 ccmp wsp, #4, #2, ne
1179 ccmp w25, #-1, #15, hs
1180 ccmp w3, #32, #0, ge
1181 ccmp w19, #5, #-1, lt
1182 ccmp w20, #7, #16, hs
1183 // CHECK-ERROR: error: invalid operand for instruction
1184 // CHECK-ERROR-NEXT: ccmp wsp, #4, #2, ne
1185 // CHECK-ERROR-NEXT: ^
1186 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1187 // CHECK-ERROR-NEXT: ccmp w25, #-1, #15, hs
1188 // CHECK-ERROR-NEXT: ^
1189 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1190 // CHECK-ERROR-NEXT: ccmp w3, #32, #0, ge
1191 // CHECK-ERROR-NEXT: ^
1192 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1193 // CHECK-ERROR-NEXT: ccmp w19, #5, #-1, lt
1194 // CHECK-ERROR-NEXT: ^
1195 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1196 // CHECK-ERROR-NEXT: ccmp w20, #7, #16, hs
1197 // CHECK-ERROR-NEXT: ^
1200 ccmp x25, #-1, #15, hs
1201 ccmp x3, #32, #0, ge
1202 ccmp x19, #5, #-1, lt
1203 ccmp x20, #7, #16, hs
1204 // CHECK-ERROR: error: invalid operand for instruction
1205 // CHECK-ERROR-NEXT: ccmp sp, #4, #2, ne
1206 // CHECK-ERROR-NEXT: ^
1207 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1208 // CHECK-ERROR-NEXT: ccmp x25, #-1, #15, hs
1209 // CHECK-ERROR-NEXT: ^
1210 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1211 // CHECK-ERROR-NEXT: ccmp x3, #32, #0, ge
1212 // CHECK-ERROR-NEXT: ^
1213 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1214 // CHECK-ERROR-NEXT: ccmp x19, #5, #-1, lt
1215 // CHECK-ERROR-NEXT: ^
1216 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1217 // CHECK-ERROR-NEXT: ccmp x20, #7, #16, hs
1218 // CHECK-ERROR-NEXT: ^
1220 ccmn wsp, #4, #2, ne
1221 ccmn w25, #-1, #15, hs
1222 ccmn w3, #32, #0, ge
1223 ccmn w19, #5, #-1, lt
1224 ccmn w20, #7, #16, hs
1225 // CHECK-ERROR: error: invalid operand for instruction
1226 // CHECK-ERROR-NEXT: ccmn wsp, #4, #2, ne
1227 // CHECK-ERROR-NEXT: ^
1228 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1229 // CHECK-ERROR-NEXT: ccmn w25, #-1, #15, hs
1230 // CHECK-ERROR-NEXT: ^
1231 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1232 // CHECK-ERROR-NEXT: ccmn w3, #32, #0, ge
1233 // CHECK-ERROR-NEXT: ^
1234 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1235 // CHECK-ERROR-NEXT: ccmn w19, #5, #-1, lt
1236 // CHECK-ERROR-NEXT: ^
1237 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1238 // CHECK-ERROR-NEXT: ccmn w20, #7, #16, hs
1239 // CHECK-ERROR-NEXT: ^
1242 ccmn x25, #-1, #15, hs
1243 ccmn x3, #32, #0, ge
1244 ccmn x19, #5, #-1, lt
1245 ccmn x20, #7, #16, hs
1246 // CHECK-ERROR: error: invalid operand for instruction
1247 // CHECK-ERROR-NEXT: ccmn sp, #4, #2, ne
1248 // CHECK-ERROR-NEXT: ^
1249 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1250 // CHECK-ERROR-NEXT: ccmn x25, #-1, #15, hs
1251 // CHECK-ERROR-NEXT: ^
1252 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1253 // CHECK-ERROR-NEXT: ccmn x3, #32, #0, ge
1254 // CHECK-ERROR-NEXT: ^
1255 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1256 // CHECK-ERROR-NEXT: ccmn x19, #5, #-1, lt
1257 // CHECK-ERROR-NEXT: ^
1258 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1259 // CHECK-ERROR-NEXT: ccmn x20, #7, #16, hs
1260 // CHECK-ERROR-NEXT: ^
1262 //------------------------------------------------------------------------------
1263 // Conditional compare (register)
1264 //------------------------------------------------------------------------------
1266 ccmp wsp, w4, #2, ne
1267 ccmp w3, wsp, #0, ge
1268 ccmp w19, w5, #-1, lt
1269 ccmp w20, w7, #16, hs
1270 // CHECK-ERROR: error: invalid operand for instruction
1271 // CHECK-ERROR-NEXT: ccmp wsp, w4, #2, ne
1272 // CHECK-ERROR-NEXT: ^
1273 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1274 // CHECK-ERROR-NEXT: ccmp w3, wsp, #0, ge
1275 // CHECK-ERROR-NEXT: ^
1276 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1277 // CHECK-ERROR-NEXT: ccmp w19, w5, #-1, lt
1278 // CHECK-ERROR-NEXT: ^
1279 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1280 // CHECK-ERROR-NEXT: ccmp w20, w7, #16, hs
1281 // CHECK-ERROR-NEXT: ^
1284 ccmp x25, sp, #15, hs
1285 ccmp x19, x5, #-1, lt
1286 ccmp x20, x7, #16, hs
1287 // CHECK-ERROR: error: invalid operand for instruction
1288 // CHECK-ERROR-NEXT: ccmp sp, x4, #2, ne
1289 // CHECK-ERROR-NEXT: ^
1290 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1291 // CHECK-ERROR-NEXT: ccmp x25, sp, #15, hs
1292 // CHECK-ERROR-NEXT: ^
1293 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1294 // CHECK-ERROR-NEXT: ccmp x19, x5, #-1, lt
1295 // CHECK-ERROR-NEXT: ^
1296 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1297 // CHECK-ERROR-NEXT: ccmp x20, x7, #16, hs
1298 // CHECK-ERROR-NEXT: ^
1300 ccmn wsp, w4, #2, ne
1301 ccmn w25, wsp, #15, hs
1302 ccmn w19, w5, #-1, lt
1303 ccmn w20, w7, #16, hs
1304 // CHECK-ERROR: error: invalid operand for instruction
1305 // CHECK-ERROR-NEXT: ccmn wsp, w4, #2, ne
1306 // CHECK-ERROR-NEXT: ^
1307 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1308 // CHECK-ERROR-NEXT: ccmn w25, wsp, #15, hs
1309 // CHECK-ERROR-NEXT: ^
1310 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1311 // CHECK-ERROR-NEXT: ccmn w19, w5, #-1, lt
1312 // CHECK-ERROR-NEXT: ^
1313 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1314 // CHECK-ERROR-NEXT: ccmn w20, w7, #16, hs
1315 // CHECK-ERROR-NEXT: ^
1318 ccmn x25, sp, #15, hs
1319 ccmn x19, x5, #-1, lt
1320 ccmn x20, x7, #16, hs
1321 // CHECK-ERROR: error: invalid operand for instruction
1322 // CHECK-ERROR-NEXT: ccmn sp, x4, #2, ne
1323 // CHECK-ERROR-NEXT: ^
1324 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1325 // CHECK-ERROR-NEXT: ccmn x25, sp, #15, hs
1326 // CHECK-ERROR-NEXT: ^
1327 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1328 // CHECK-ERROR-NEXT: ccmn x19, x5, #-1, lt
1329 // CHECK-ERROR-NEXT: ^
1330 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1331 // CHECK-ERROR-NEXT: ccmn x20, x7, #16, hs
1332 // CHECK-ERROR-NEXT: ^
1334 //------------------------------------------------------------------------------
1335 // Conditional select
1336 //------------------------------------------------------------------------------
1338 csel w4, wsp, w9, eq
1339 csel wsp, w2, w3, ne
1340 csel w10, w11, wsp, ge
1344 csel x10, x11, sp, ge
1346 // CHECK-ERROR: error: invalid operand for instruction
1347 // CHECK-ERROR-NEXT: csel w4, wsp, w9, eq
1348 // CHECK-ERROR-NEXT: ^
1349 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1350 // CHECK-ERROR-NEXT: csel wsp, w2, w3, ne
1351 // CHECK-ERROR-NEXT: ^
1352 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1353 // CHECK-ERROR-NEXT: csel w10, w11, wsp, ge
1354 // CHECK-ERROR-NEXT: ^
1355 // CHECK-ERROR-NEXT: error: expected AArch64 condition code
1356 // CHECK-ERROR-NEXT: csel w1, w2, w3, #3
1357 // CHECK-ERROR-NEXT: ^
1358 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1359 // CHECK-ERROR-NEXT: csel x4, sp, x9, eq
1360 // CHECK-ERROR-NEXT: ^
1361 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1362 // CHECK-ERROR-NEXT: csel sp, x2, x3, ne
1363 // CHECK-ERROR-NEXT: ^
1364 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1365 // CHECK-ERROR-NEXT: csel x10, x11, sp, ge
1366 // CHECK-ERROR-NEXT: ^
1367 // CHECK-ERROR-NEXT: error: expected AArch64 condition code
1368 // CHECK-ERROR-NEXT: csel x1, x2, x3, #3
1369 // CHECK-ERROR-NEXT: ^
1371 csinc w20, w21, wsp, mi
1372 csinc sp, x30, x29, eq
1373 // CHECK-ERROR: error: invalid operand for instruction
1374 // CHECK-ERROR-NEXT: csinc w20, w21, wsp, mi
1375 // CHECK-ERROR-NEXT: ^
1376 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1377 // CHECK-ERROR-NEXT: csinc sp, x30, x29, eq
1378 // CHECK-ERROR-NEXT: ^
1380 csinv w20, wsp, wsp, mi
1381 csinv sp, x30, x29, le
1382 // CHECK-ERROR: error: invalid operand for instruction
1383 // CHECK-ERROR-NEXT: csinv w20, wsp, wsp, mi
1384 // CHECK-ERROR-NEXT: ^
1385 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1386 // CHECK-ERROR-NEXT: csinv sp, x30, x29, le
1387 // CHECK-ERROR-NEXT: ^
1389 csneg w20, w21, wsp, mi
1390 csneg x0, sp, x29, le
1391 // CHECK-ERROR: error: invalid operand for instruction
1392 // CHECK-ERROR-NEXT: csneg w20, w21, wsp, mi
1393 // CHECK-ERROR-NEXT: ^
1394 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1395 // CHECK-ERROR-NEXT: csneg x0, sp, x29, le
1396 // CHECK-ERROR-NEXT: ^
1402 // CHECK-ERROR: error: invalid operand for instruction
1403 // CHECK-ERROR-NEXT: cset wsp, lt
1404 // CHECK-ERROR-NEXT: ^
1405 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1406 // CHECK-ERROR-NEXT: csetm sp, ge
1407 // CHECK-ERROR-NEXT: ^
1408 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1409 // CHECK-ERROR-NEXT: cset w1, al
1410 // CHECK-ERROR-NEXT: ^
1411 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1412 // CHECK-ERROR-NEXT: csetm x6, nv
1413 // CHECK-ERROR-NEXT: ^
1418 // CHECK-ERROR: error: invalid operand for instruction
1419 // CHECK-ERROR-NEXT: cinc w3, wsp, ne
1420 // CHECK-ERROR-NEXT: ^
1421 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1422 // CHECK-ERROR-NEXT: cinc sp, x9, eq
1423 // CHECK-ERROR-NEXT: ^
1424 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1425 // CHECK-ERROR-NEXT: cinc x2, x0, nv
1426 // CHECK-ERROR-NEXT: ^
1431 // CHECK-ERROR: error: invalid operand for instruction
1432 // CHECK-ERROR-NEXT: cinv w3, wsp, ne
1433 // CHECK-ERROR-NEXT: ^
1434 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1435 // CHECK-ERROR-NEXT: cinv sp, x9, eq
1436 // CHECK-ERROR-NEXT: ^
1437 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1438 // CHECK-ERROR-NEXT: cinv w8, x7, nv
1439 // CHECK-ERROR-NEXT: ^
1444 // CHECK-ERROR: error: invalid operand for instruction
1445 // CHECK-ERROR-NEXT: cneg w3, wsp, ne
1446 // CHECK-ERROR-NEXT: ^
1447 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1448 // CHECK-ERROR-NEXT: cneg sp, x9, eq
1449 // CHECK-ERROR-NEXT: ^
1450 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1451 // CHECK-ERROR-NEXT: cneg x4, x5, al
1452 // CHECK-ERROR-NEXT: ^
1454 //------------------------------------------------------------------------------
1455 // Data Processing (1 source)
1456 //------------------------------------------------------------------------------
1458 //CHECK-ERROR: error: invalid operand for instruction
1459 //CHECK-ERROR-NEXT: rbit x23, w2
1462 //CHECK-ERROR: error: invalid operand for instruction
1463 //CHECK-ERROR-NEXT: cls sp, x2
1466 //CHECK-ERROR: error: invalid operand for instruction
1467 //CHECK-ERROR-NEXT: clz wsp, w3
1469 //------------------------------------------------------------------------------
1470 // Data Processing (2 sources)
1471 //------------------------------------------------------------------------------
1473 //CHECK-ERROR: error: invalid operand for instruction
1474 //CHECK-ERROR-NEXT: udiv x23, w2, x18
1477 //CHECK-ERROR: error: invalid operand for instruction
1478 //CHECK-ERROR-NEXT: lsl sp, x2, x4
1481 //CHECK-ERROR: error: invalid operand for instruction
1482 //CHECK-ERROR-NEXT: asr wsp, w3, w9
1484 //------------------------------------------------------------------------------
1485 // Data Processing (3 sources)
1486 //------------------------------------------------------------------------------
1488 madd sp, x3, x9, x10
1489 //CHECK-ERROR: error: invalid operand for instruction
1490 //CHECK-ERROR-NEXT: madd sp, x3, x9, x10
1492 //------------------------------------------------------------------------------
1493 // Exception generation
1494 //------------------------------------------------------------------------------
1499 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 65535]
1500 // CHECK-ERROR-NEXT: svc #-1
1501 // CHECK-ERROR-NEXT: ^
1502 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 65535]
1503 // CHECK-ERROR-NEXT: hlt #65536
1504 // CHECK-ERROR-NEXT: ^
1505 // CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}
1506 // CHECK-ERROR-NEXT: dcps4 #43
1507 // CHECK-ERROR-NEXT: ^
1508 // CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}
1509 // CHECK-ERROR-NEXT: dcps4
1510 // CHECK-ERROR-NEXT: ^
1512 //------------------------------------------------------------------------------
1513 // Extract (immediate)
1514 //------------------------------------------------------------------------------
1516 extr w2, w20, w30, #-1
1517 extr w9, w19, w20, #32
1518 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1519 // CHECK-ERROR-NEXT: extr w2, w20, w30, #-1
1520 // CHECK-ERROR-NEXT: ^
1521 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1522 // CHECK-ERROR-NEXT: extr w9, w19, w20, #32
1523 // CHECK-ERROR-NEXT: ^
1525 extr x10, x15, x20, #-1
1526 extr x20, x25, x30, #64
1527 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
1528 // CHECK-ERROR-NEXT: extr x10, x15, x20, #-1
1529 // CHECK-ERROR-NEXT: ^
1530 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
1531 // CHECK-ERROR-NEXT: extr x20, x25, x30, #64
1532 // CHECK-ERROR-NEXT: ^
1536 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1537 // CHECK-ERROR-NEXT: ror w9, w10, #32
1538 // CHECK-ERROR-NEXT: ^
1539 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
1540 // CHECK-ERROR-NEXT: ror x10, x11, #64
1541 // CHECK-ERROR-NEXT: ^
1543 //------------------------------------------------------------------------------
1544 // Floating-point compare
1545 //------------------------------------------------------------------------------
1548 // CHECK-ERROR-AARCH64: error: expected floating-point constant #0.0
1549 // CHECK-ERROR-ARM64: error: invalid operand for instruction
1550 // CHECK-ERROR-NEXT: fcmp s3, d2
1551 // CHECK-ERROR-NEXT: ^
1557 // CHECK-ERROR: error: expected floating-point constant #0.0
1558 // CHECK-ERROR-NEXT: fcmp s9, #-0.0
1559 // CHECK-ERROR-NEXT: ^
1560 // CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
1561 // CHECK-ERROR-NEXT: fcmp d3, #-0.0
1562 // CHECK-ERROR-NEXT: ^
1563 // CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
1564 // CHECK-ERROR-NEXT: fcmp s1, #1.0
1565 // CHECK-ERROR-NEXT: ^
1566 // CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
1567 // CHECK-ERROR-NEXT: fcmpe s30, #-0.0
1568 // CHECK-ERROR-NEXT: ^
1570 //------------------------------------------------------------------------------
1571 // Floating-point conditional compare
1572 //------------------------------------------------------------------------------
1574 fccmp s19, s5, #-1, lt
1575 fccmp s20, s7, #16, hs
1576 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1577 // CHECK-ERROR-NEXT: fccmp s19, s5, #-1, lt
1578 // CHECK-ERROR-NEXT: ^
1579 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1580 // CHECK-ERROR-NEXT: fccmp s20, s7, #16, hs
1581 // CHECK-ERROR-NEXT: ^
1583 fccmp d19, d5, #-1, lt
1584 fccmp d20, d7, #16, hs
1585 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1586 // CHECK-ERROR-NEXT: fccmp d19, d5, #-1, lt
1587 // CHECK-ERROR-NEXT: ^
1588 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1589 // CHECK-ERROR-NEXT: fccmp d20, d7, #16, hs
1590 // CHECK-ERROR-NEXT: ^
1592 fccmpe s19, s5, #-1, lt
1593 fccmpe s20, s7, #16, hs
1594 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1595 // CHECK-ERROR-NEXT: fccmpe s19, s5, #-1, lt
1596 // CHECK-ERROR-NEXT: ^
1597 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1598 // CHECK-ERROR-NEXT: fccmpe s20, s7, #16, hs
1599 // CHECK-ERROR-NEXT: ^
1601 fccmpe d19, d5, #-1, lt
1602 fccmpe d20, d7, #16, hs
1603 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1604 // CHECK-ERROR-NEXT: fccmpe d19, d5, #-1, lt
1605 // CHECK-ERROR-NEXT: ^
1606 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1607 // CHECK-ERROR-NEXT: fccmpe d20, d7, #16, hs
1608 // CHECK-ERROR-NEXT: ^
1610 //------------------------------------------------------------------------------
1611 // Floating-point conditional compare
1612 //------------------------------------------------------------------------------
1614 fcsel q3, q20, q9, pl
1615 fcsel h9, h10, h11, mi
1616 fcsel b9, b10, b11, mi
1617 // CHECK-ERROR: error: invalid operand for instruction
1618 // CHECK-ERROR-NEXT: fcsel q3, q20, q9, pl
1619 // CHECK-ERROR-NEXT: ^
1620 // CHECK-ERROR-NEXT: error: instruction requires: fullfp16
1621 // CHECK-ERROR-NEXT: fcsel h9, h10, h11, mi
1622 // CHECK-ERROR-NEXT: ^
1623 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1624 // CHECK-ERROR-NEXT: fcsel b9, b10, b11, mi
1625 // CHECK-ERROR-NEXT: ^
1627 //------------------------------------------------------------------------------
1628 // Floating-point data-processing (1 source)
1629 //------------------------------------------------------------------------------
1633 // CHECK-ERROR: error: expected compatible register or floating-point constant
1634 // CHECK-ERROR-NEXT: fmov d0, s3
1635 // CHECK-ERROR-NEXT: ^
1636 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1637 // CHECK-ERROR-NEXT: fcvt d0, d1
1638 // CHECK-ERROR-NEXT: ^
1641 //------------------------------------------------------------------------------
1642 // Floating-point data-processing (2 sources)
1643 //------------------------------------------------------------------------------
1648 // CHECK-ERROR: error: invalid operand for instruction
1649 // CHECK-ERROR-NEXT: fadd s0, d3, d7
1650 // CHECK-ERROR-NEXT: ^
1651 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1652 // CHECK-ERROR-NEXT: fmaxnm d3, s19, d12
1653 // CHECK-ERROR-NEXT: ^
1654 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1655 // CHECK-ERROR-NEXT: fnmul d1, d9, s18
1656 // CHECK-ERROR-NEXT: ^
1658 //------------------------------------------------------------------------------
1659 // Floating-point data-processing (3 sources)
1660 //------------------------------------------------------------------------------
1662 fmadd b3, b4, b5, b6
1663 fmsub h1, h2, h3, h4
1664 fnmadd q3, q5, q6, q7
1665 fnmsub s2, s4, d5, h9
1666 // CHECK-ERROR: error: invalid operand for instruction
1667 // CHECK-ERROR-NEXT: fmadd b3, b4, b5, b6
1668 // CHECK-ERROR-NEXT: ^
1669 // CHECK-ERROR-NEXT: error: instruction requires: fullfp16
1670 // CHECK-ERROR-NEXT: fmsub h1, h2, h3, h4
1671 // CHECK-ERROR-NEXT: ^
1672 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1673 // CHECK-ERROR-NEXT: fnmadd q3, q5, q6, q7
1674 // CHECK-ERROR-NEXT: ^
1675 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1676 // CHECK-ERROR-NEXT: fnmsub s2, s4, d5, h9
1677 // CHECK-ERROR-NEXT: ^
1679 //------------------------------------------------------------------------------
1680 // Floating-point conditional compare
1681 //------------------------------------------------------------------------------
1684 fcvtzs w19, s20, #33
1685 fcvtzs wsp, s19, #14
1686 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1687 // CHECK-ERROR-NEXT: fcvtzs w13, s31, #0
1688 // CHECK-ERROR-NEXT: ^
1689 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1690 // CHECK-ERROR-NEXT: fcvtzs w19, s20, #33
1691 // CHECK-ERROR-NEXT: ^
1692 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1693 // CHECK-ERROR-NEXT: fcvtzs wsp, s19, #14
1694 // CHECK-ERROR-NEXT: ^
1697 fcvtzs x19, s20, #65
1699 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1700 // CHECK-ERROR-NEXT: fcvtzs x13, s31, #0
1701 // CHECK-ERROR-NEXT: ^
1702 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1703 // CHECK-ERROR-NEXT: fcvtzs x19, s20, #65
1704 // CHECK-ERROR-NEXT: ^
1705 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1706 // CHECK-ERROR-NEXT: fcvtzs sp, s19, #14
1707 // CHECK-ERROR-NEXT: ^
1710 fcvtzu w19, s20, #33
1711 fcvtzu wsp, s19, #14
1712 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1713 // CHECK-ERROR-NEXT: fcvtzu w13, s31, #0
1714 // CHECK-ERROR-NEXT: ^
1715 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1716 // CHECK-ERROR-NEXT: fcvtzu w19, s20, #33
1717 // CHECK-ERROR-NEXT: ^
1718 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1719 // CHECK-ERROR-NEXT: fcvtzu wsp, s19, #14
1720 // CHECK-ERROR-NEXT: ^
1723 fcvtzu x19, s20, #65
1725 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1726 // CHECK-ERROR-NEXT: fcvtzu x13, s31, #0
1727 // CHECK-ERROR-NEXT: ^
1728 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1729 // CHECK-ERROR-NEXT: fcvtzu x19, s20, #65
1730 // CHECK-ERROR-NEXT: ^
1731 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1732 // CHECK-ERROR-NEXT: fcvtzu sp, s19, #14
1733 // CHECK-ERROR-NEXT: ^
1738 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1739 // CHECK-ERROR-NEXT: scvtf w13, s31, #0
1740 // CHECK-ERROR-NEXT: ^
1741 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1742 // CHECK-ERROR-NEXT: scvtf w19, s20, #33
1743 // CHECK-ERROR-NEXT: ^
1744 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1745 // CHECK-ERROR-NEXT: scvtf wsp, s19, #14
1746 // CHECK-ERROR-NEXT: ^
1751 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1752 // CHECK-ERROR-NEXT: scvtf x13, s31, #0
1753 // CHECK-ERROR-NEXT: ^
1754 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1755 // CHECK-ERROR-NEXT: scvtf x19, s20, #65
1756 // CHECK-ERROR-NEXT: ^
1757 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1758 // CHECK-ERROR-NEXT: scvtf sp, s19, #14
1759 // CHECK-ERROR-NEXT: ^
1764 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1765 // CHECK-ERROR-NEXT: ucvtf w13, s31, #0
1766 // CHECK-ERROR-NEXT: ^
1767 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1768 // CHECK-ERROR-NEXT: ucvtf w19, s20, #33
1769 // CHECK-ERROR-NEXT: ^
1770 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1771 // CHECK-ERROR-NEXT: ucvtf wsp, s19, #14
1772 // CHECK-ERROR-NEXT: ^
1777 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1778 // CHECK-ERROR-NEXT: ucvtf x13, s31, #0
1779 // CHECK-ERROR-NEXT: ^
1780 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1781 // CHECK-ERROR-NEXT: ucvtf x19, s20, #65
1782 // CHECK-ERROR-NEXT: ^
1783 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1784 // CHECK-ERROR-NEXT: ucvtf sp, s19, #14
1785 // CHECK-ERROR-NEXT: ^
1787 //------------------------------------------------------------------------------
1788 // Floating-point immediate
1789 //------------------------------------------------------------------------------
1790 ;; Exponent too large
1795 // CHECK-ERROR: error: expected compatible register or floating-point constant
1796 // CHECK-ERROR-NEXT: fmov d3, #0.0625
1797 // CHECK-ERROR-NEXT: ^
1798 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1799 // CHECK-ERROR-NEXT: fmov s2, #32.0
1800 // CHECK-ERROR-NEXT: ^
1801 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1802 // CHECK-ERROR-NEXT: fmov s2, #32
1803 // CHECK-ERROR-NEXT: ^
1804 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1805 // CHECK-ERROR-NEXT: fmov v0.4s, #-32
1806 // CHECK-ERROR-NEXT: ^
1808 ;; Fraction too precise
1811 // CHECK-ERROR: error: expected compatible register or floating-point constant
1812 // CHECK-ERROR-NEXT: fmov s9, #1.03125
1813 // CHECK-ERROR-NEXT: ^
1814 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1815 // CHECK-ERROR-NEXT: fmov s28, #1.96875
1816 // CHECK-ERROR-NEXT: ^
1818 ;; Explicitly encoded value too large
1820 // CHECK-ERROR: error: encoded floating point value out of range
1821 // CHECK-ERROR-NEXT: fmov s15, #0x100
1822 // CHECK-ERROR-NEXT: ^
1824 ;; Not possible to fmov ZR to a whole vector
1826 // CHECK-ERROR: error: expected compatible register or floating-point constant
1827 // CHECK-ERROR-NEXT: fmov v0.4s, #0.0
1828 // CHECK-ERROR-NEXT: ^
1830 //------------------------------------------------------------------------------
1831 // Floating-point <-> integer conversion
1832 //------------------------------------------------------------------------------
1839 // CHECK-ERROR: error: expected lane specifier '[1]'
1840 // CHECK-ERROR-NEXT: fmov x3, v0.d[0]
1841 // CHECK-ERROR-NEXT: ^
1842 // CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout
1843 // CHECK-ERROR-ARM64-NEXT: error: invalid operand for instruction
1844 // CHECK-ERROR-NEXT: fmov v29.1d[1], x2
1845 // CHECK-ERROR-NEXT: ^
1846 // CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout
1847 // CHECK-ERROR-ARM64-NEXT: error: expected lane specifier '[1]'
1848 // CHECK-ERROR-NEXT: fmov x7, v0.d[2]
1849 // CHECK-ERROR-NEXT: ^
1850 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1851 // CHECK-ERROR-NEXT: fcvtns sp, s5
1852 // CHECK-ERROR-NEXT: ^
1853 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1854 // CHECK-ERROR-NEXT: scvtf s6, wsp
1855 // CHECK-ERROR-NEXT: ^
1857 //------------------------------------------------------------------------------
1858 // Load-register (literal)
1859 //------------------------------------------------------------------------------
1864 // CHECK-ERROR: error: invalid operand for instruction
1865 // CHECK-ERROR-NEXT: ldr sp, some_label
1866 // CHECK-ERROR-NEXT: ^
1867 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1868 // CHECK-ERROR-NEXT: ldrsw w3, somewhere
1869 // CHECK-ERROR-NEXT: ^
1870 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1871 // CHECK-ERROR-NEXT: ldr v0, some_label
1872 // CHECK-ERROR-NEXT: ^
1877 // CHECK-ERROR: error: expected label or encodable integer pc offset
1878 // CHECK-ERROR-NEXT: ldrsw x2, #1048576
1879 // CHECK-ERROR-NEXT: ^
1880 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1881 // CHECK-ERROR-NEXT: ldr q0, #-1048580
1882 // CHECK-ERROR-NEXT: ^
1883 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1884 // CHECK-ERROR-NEXT: ldr x0, #2
1885 // CHECK-ERROR-NEXT: ^
1887 //------------------------------------------------------------------------------
1888 // Load/store exclusive
1889 //------------------------------------------------------------------------------
1891 stxrb w2, w3, [x4, #20]
1892 stlxrh w10, w11, [w2]
1893 // CHECK-ERROR-AARCH64: error: expected '#0'
1894 // CHECK-ERROR-ARM64
: error
: index must
be absent
or #0
1895 // CHECK-ERROR-NEXT
: stxrb w2
, w3
, [x4
, #20]
1896 // CHECK-ERROR-NEXT
: ^
1897 // CHECK-ERROR
: error
: invalid operand for instruction
1898 // CHECK-ERROR-NEXT
: stlxrh w10
, w11
, [w2
]
1899 // CHECK-ERROR-NEXT
: ^
1901 stlxr x20
, w21
, [sp
]
1902 // CHECK-ERROR
: error
: invalid operand for instruction
1903 // CHECK-ERROR-NEXT
: stlxr x20
, w21
, [sp
]
1904 // CHECK-ERROR-NEXT
: ^
1907 // CHECK-ERROR
: error
: invalid operand for instruction
1908 // CHECK-ERROR-NEXT
: ldxr sp
, [sp
]
1909 // CHECK-ERROR-NEXT
: ^
1911 stxp x1
, x2
, x3
, [x4
]
1912 // CHECK-ERROR
: error
: invalid operand for instruction
1913 // CHECK-ERROR-NEXT
: stxp x1
, x2
, x3
, [x4
]
1914 // CHECK-ERROR-NEXT
: ^
1916 stlxp w5
, x1
, w4
, [x5
]
1917 // CHECK-ERROR
: error
: invalid operand for instruction
1918 // CHECK-ERROR-NEXT
: stlxp w5
, x1
, w4
, [x5
]
1919 // CHECK-ERROR-NEXT
: ^
1921 stlxp w17
, w6
, x7
, [x22
]
1922 // CHECK-ERROR
: error
: invalid operand for instruction
1923 // CHECK-ERROR-NEXT
: stlxp w17
, w6
, x7
, [x22
]
1924 // CHECK-ERROR-NEXT
: ^
1926 //------------------------------------------------------------------------------
1927 // Load
/store
(unscaled immediate
)
1928 //------------------------------------------------------------------------------
1931 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
1932 // CHECK-ERROR-NEXT
: ldur v0
, [x0
, #0]
1933 // CHECK-ERROR-NEXT
: ^
1934 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
1935 // CHECK-ERROR-NEXT
: stur v0
, [x0
, #0]
1936 // CHECK-ERROR-NEXT
: ^
1938 ldurb w2
, [sp
, #256]
1939 sturh w17
, [x1
, #256]
1940 ldursw x20
, [x1
, #256]
1941 ldur x12
, [sp
, #256]
1942 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
1943 // CHECK-ERROR-NEXT
: ldurb w2
, [sp
, #256]
1944 // CHECK-ERROR-NEXT
: ^
1945 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
1946 // CHECK-ERROR-NEXT
: sturh w17
, [x1
, #256]
1947 // CHECK-ERROR-NEXT
: ^
1948 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
1949 // CHECK-ERROR-NEXT
: ldursw x20
, [x1
, #256]
1950 // CHECK-ERROR-NEXT
: ^
1951 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
1952 // CHECK-ERROR-NEXT
: ldur x12
, [sp
, #256]
1953 // CHECK-ERROR-NEXT
: ^
1955 stur h2
, [x2
, #-257]
1956 stur b2
, [x2
, #-257]
1957 ldursb x9
, [sp
, #-257]
1958 ldur w2
, [x30
, #-257]
1959 stur q9
, [x20
, #-257]
1960 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
1961 // CHECK-ERROR-NEXT
: stur h2
, [x2
, #-257]
1962 // CHECK-ERROR-NEXT
: ^
1963 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
1964 // CHECK-ERROR-NEXT
: stur b2
, [x2
, #-257]
1965 // CHECK-ERROR-NEXT
: ^
1966 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
1967 // CHECK-ERROR-NEXT
: ldursb x9
, [sp
, #-257]
1968 // CHECK-ERROR-NEXT
: ^
1969 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
1970 // CHECK-ERROR-NEXT
: ldur w2
, [x30
, #-257]
1971 // CHECK-ERROR-NEXT
: ^
1972 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
1973 // CHECK-ERROR-NEXT
: stur q9
, [x20
, #-257]
1974 // CHECK-ERROR-NEXT
: ^
1976 prfum pstl3strm
, [xzr
]
1977 // CHECK-ERROR
: error
: invalid operand for instruction
1978 // CHECK-ERROR-NEXT
: prfum pstl3strm
, [xzr
]
1979 // CHECK-ERROR-NEXT
: ^
1981 //------------------------------------------------------------------------------
1982 // Load-store register
(immediate post-indexed
)
1983 //------------------------------------------------------------------------------
1986 // CHECK-ERROR
: error
: invalid operand for instruction
1987 // CHECK-ERROR-NEXT
: ldr v0
, [x0
], #0
1988 // CHECK-ERROR-NEXT
: ^
1989 // CHECK-ERROR
: error
: invalid operand for instruction
1990 // CHECK-ERROR-NEXT
: str v0
, [x0
], #0
1991 // CHECK-ERROR-NEXT
: ^
1993 ldr x3
, [x4
, #25], #0
1994 ldr x4
, [x9
, #0], #4
1995 // CHECK-ERROR-AARCH64
: error
: invalid operand for instruction
1996 // CHECK-ERROR-ARM64
: error
: invalid operand for instruction
1997 // CHECK-ERROR-NEXT
: ldr x3
, [x4
, #25], #0
1998 // CHECK-ERROR-NEXT
: ^
1999 // CHECK-ERROR-AARCH64-NEXT
: error
: expected label
or encodable integer pc offset
2000 // CHECK-ERROR-AARCH64-NEXT
: ldr x4
, [x9
, #0], #4
2001 // CHECK-ERROR-AARCH64-NEXT
: ^
2003 strb w1
, [x19
], #256
2004 strb w9
, [sp
], #-257
2005 strh w1
, [x19
], #256
2006 strh w9
, [sp
], #-257
2009 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2010 // CHECK-ERROR-NEXT
: strb w1
, [x19
], #256
2011 // CHECK-ERROR-NEXT
: ^
2012 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2013 // CHECK-ERROR-NEXT
: strb w9
, [sp
], #-257
2014 // CHECK-ERROR-NEXT
: ^
2015 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2016 // CHECK-ERROR-NEXT
: strh w1
, [x19
], #256
2017 // CHECK-ERROR-NEXT
: ^
2018 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2019 // CHECK-ERROR-NEXT
: strh w9
, [sp
], #-257
2020 // CHECK-ERROR-NEXT
: ^
2021 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2022 // CHECK-ERROR-NEXT
: str w1
, [x19
], #256
2023 // CHECK-ERROR-NEXT
: ^
2024 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2025 // CHECK-ERROR-NEXT
: str w9
, [sp
], #-257
2026 // CHECK-ERROR-NEXT
: ^
2028 ldrb w1
, [x19
], #256
2029 ldrb w9
, [sp
], #-257
2030 ldrh w1
, [x19
], #256
2031 ldrh w9
, [sp
], #-257
2034 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2035 // CHECK-ERROR-NEXT
: ldrb w1
, [x19
], #256
2036 // CHECK-ERROR-NEXT
: ^
2037 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2038 // CHECK-ERROR-NEXT
: ldrb w9
, [sp
], #-257
2039 // CHECK-ERROR-NEXT
: ^
2040 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2041 // CHECK-ERROR-NEXT
: ldrh w1
, [x19
], #256
2042 // CHECK-ERROR-NEXT
: ^
2043 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2044 // CHECK-ERROR-NEXT
: ldrh w9
, [sp
], #-257
2045 // CHECK-ERROR-NEXT
: ^
2046 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2047 // CHECK-ERROR-NEXT
: ldr w1
, [x19
], #256
2048 // CHECK-ERROR-NEXT
: ^
2049 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2050 // CHECK-ERROR-NEXT
: ldr w9
, [sp
], #-257
2051 // CHECK-ERROR-NEXT
: ^
2053 ldrsb x2
, [x3
], #256
2054 ldrsb x22
, [x13
], #-257
2055 ldrsh x2
, [x3
], #256
2056 ldrsh x22
, [x13
], #-257
2057 ldrsw x2
, [x3
], #256
2058 ldrsw x22
, [x13
], #-257
2059 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2060 // CHECK-ERROR-NEXT
: ldrsb x2
, [x3
], #256
2061 // CHECK-ERROR-NEXT
: ^
2062 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2063 // CHECK-ERROR-NEXT
: ldrsb x22
, [x13
], #-257
2064 // CHECK-ERROR-NEXT
: ^
2065 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2066 // CHECK-ERROR-NEXT
: ldrsh x2
, [x3
], #256
2067 // CHECK-ERROR-NEXT
: ^
2068 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2069 // CHECK-ERROR-NEXT
: ldrsh x22
, [x13
], #-257
2070 // CHECK-ERROR-NEXT
: ^
2071 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2072 // CHECK-ERROR-NEXT
: ldrsw x2
, [x3
], #256
2073 // CHECK-ERROR-NEXT
: ^
2074 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2075 // CHECK-ERROR-NEXT
: ldrsw x22
, [x13
], #-257
2076 // CHECK-ERROR-NEXT
: ^
2078 ldrsb w2
, [x3
], #256
2079 ldrsb w22
, [x13
], #-257
2080 ldrsh w2
, [x3
], #256
2081 ldrsh w22
, [x13
], #-257
2082 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2083 // CHECK-ERROR-NEXT
: ldrsb w2
, [x3
], #256
2084 // CHECK-ERROR-NEXT
: ^
2085 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2086 // CHECK-ERROR-NEXT
: ldrsb w22
, [x13
], #-257
2087 // CHECK-ERROR-NEXT
: ^
2088 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2089 // CHECK-ERROR-NEXT
: ldrsh w2
, [x3
], #256
2090 // CHECK-ERROR-NEXT
: ^
2091 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2092 // CHECK-ERROR-NEXT
: ldrsh w22
, [x13
], #-257
2093 // CHECK-ERROR-NEXT
: ^
2096 str b3
, [x13
], #-257
2098 str h3
, [x13
], #-257
2100 str s3
, [x13
], #-257
2102 str d3
, [x13
], #-257
2104 str q3
, [x13
], #-257
2105 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2106 // CHECK-ERROR-NEXT
: str b3
, [x3
], #256
2107 // CHECK-ERROR-NEXT
: ^
2108 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2109 // CHECK-ERROR-NEXT
: str b3
, [x13
], #-257
2110 // CHECK-ERROR-NEXT
: ^
2111 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2112 // CHECK-ERROR-NEXT
: str h3
, [x3
], #256
2113 // CHECK-ERROR-NEXT
: ^
2114 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2115 // CHECK-ERROR-NEXT
: str h3
, [x13
], #-257
2116 // CHECK-ERROR-NEXT
: ^
2117 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2118 // CHECK-ERROR-NEXT
: str s3
, [x3
], #256
2119 // CHECK-ERROR-NEXT
: ^
2120 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2121 // CHECK-ERROR-NEXT
: str s3
, [x13
], #-257
2122 // CHECK-ERROR-NEXT
: ^
2123 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2124 // CHECK-ERROR-NEXT
: str d3
, [x3
], #256
2125 // CHECK-ERROR-NEXT
: ^
2126 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2127 // CHECK-ERROR-NEXT
: str d3
, [x13
], #-257
2128 // CHECK-ERROR-NEXT
: ^
2129 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2130 // CHECK-ERROR-NEXT
: str q3
, [x3
], #256
2131 // CHECK-ERROR-NEXT
: ^
2132 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2133 // CHECK-ERROR-NEXT
: str q3
, [x13
], #-257
2134 // CHECK-ERROR-NEXT
: ^
2137 ldr b3
, [x13
], #-257
2139 ldr h3
, [x13
], #-257
2141 ldr s3
, [x13
], #-257
2143 ldr d3
, [x13
], #-257
2145 ldr q3
, [x13
], #-257
2146 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2147 // CHECK-ERROR-NEXT
: ldr b3
, [x3
], #256
2148 // CHECK-ERROR-NEXT
: ^
2149 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2150 // CHECK-ERROR-NEXT
: ldr b3
, [x13
], #-257
2151 // CHECK-ERROR-NEXT
: ^
2152 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2153 // CHECK-ERROR-NEXT
: ldr h3
, [x3
], #256
2154 // CHECK-ERROR-NEXT
: ^
2155 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2156 // CHECK-ERROR-NEXT
: ldr h3
, [x13
], #-257
2157 // CHECK-ERROR-NEXT
: ^
2158 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2159 // CHECK-ERROR-NEXT
: ldr s3
, [x3
], #256
2160 // CHECK-ERROR-NEXT
: ^
2161 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2162 // CHECK-ERROR-NEXT
: ldr s3
, [x13
], #-257
2163 // CHECK-ERROR-NEXT
: ^
2164 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2165 // CHECK-ERROR-NEXT
: ldr d3
, [x3
], #256
2166 // CHECK-ERROR-NEXT
: ^
2167 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2168 // CHECK-ERROR-NEXT
: ldr d3
, [x13
], #-257
2169 // CHECK-ERROR-NEXT
: ^
2170 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2171 // CHECK-ERROR-NEXT
: ldr q3
, [x3
], #256
2172 // CHECK-ERROR-NEXT
: ^
2173 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2174 // CHECK-ERROR-NEXT
: ldr q3
, [x13
], #-257
2175 // CHECK-ERROR-NEXT
: ^
2177 //------------------------------------------------------------------------------
2178 // Load-store register
(immediate pre-indexed
)
2179 //------------------------------------------------------------------------------
2182 // CHECK-ERROR
: error
: invalid operand for instruction
2183 // CHECK-ERROR-NEXT
: ldr v0
, [x0
, #0]!
2184 // CHECK-ERROR-NEXT
: ^
2185 // CHECK-ERROR
: error
: invalid operand for instruction
2186 // CHECK-ERROR-NEXT
: str v0
, [x0
, #0]!
2187 // CHECK-ERROR-NEXT
: ^
2190 // CHECK-ERROR
: error
:
2191 // CHECK-ERROR-NEXT
: ldr x3
, [x4
]!
2192 // CHECK-ERROR-NEXT
: ^
2194 strb w1
, [x19
, #256]!
2195 strb w9
, [sp
, #-257]!
2196 strh w1
, [x19
, #256]!
2197 strh w9
, [sp
, #-257]!
2198 str w1
, [x19
, #256]!
2199 str w9
, [sp
, #-257]!
2200 // CHECK-ERROR
: error
: invalid operand for instruction
2201 // CHECK-ERROR-NEXT
: strb w1
, [x19
, #256]!
2202 // CHECK-ERROR-NEXT
: ^
2203 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2204 // CHECK-ERROR-NEXT
: strb w9
, [sp
, #-257]!
2205 // CHECK-ERROR-NEXT
: ^
2206 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2207 // CHECK-ERROR-NEXT
: strh w1
, [x19
, #256]!
2208 // CHECK-ERROR-NEXT
: ^
2209 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2210 // CHECK-ERROR-NEXT
: strh w9
, [sp
, #-257]!
2211 // CHECK-ERROR-NEXT
: ^
2212 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2213 // CHECK-ERROR-NEXT
: str w1
, [x19
, #256]!
2214 // CHECK-ERROR-NEXT
: ^
2215 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2216 // CHECK-ERROR-NEXT
: str w9
, [sp
, #-257]!
2217 // CHECK-ERROR-NEXT
: ^
2219 ldrb w1
, [x19
, #256]!
2220 ldrb w9
, [sp
, #-257]!
2221 ldrh w1
, [x19
, #256]!
2222 ldrh w9
, [sp
, #-257]!
2223 ldr w1
, [x19
, #256]!
2224 ldr w9
, [sp
, #-257]!
2225 // CHECK-ERROR
: error
: invalid operand for instruction
2226 // CHECK-ERROR-NEXT
: ldrb w1
, [x19
, #256]!
2227 // CHECK-ERROR-NEXT
: ^
2228 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2229 // CHECK-ERROR-NEXT
: ldrb w9
, [sp
, #-257]!
2230 // CHECK-ERROR-NEXT
: ^
2231 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2232 // CHECK-ERROR-NEXT
: ldrh w1
, [x19
, #256]!
2233 // CHECK-ERROR-NEXT
: ^
2234 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2235 // CHECK-ERROR-NEXT
: ldrh w9
, [sp
, #-257]!
2236 // CHECK-ERROR-NEXT
: ^
2237 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2238 // CHECK-ERROR-NEXT
: ldr w1
, [x19
, #256]!
2239 // CHECK-ERROR-NEXT
: ^
2240 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2241 // CHECK-ERROR-NEXT
: ldr w9
, [sp
, #-257]!
2242 // CHECK-ERROR-NEXT
: ^
2244 ldrsb x2
, [x3
, #256]!
2245 ldrsb x22
, [x13
, #-257]!
2246 ldrsh x2
, [x3
, #256]!
2247 ldrsh x22
, [x13
, #-257]!
2248 ldrsw x2
, [x3
, #256]!
2249 ldrsw x22
, [x13
, #-257]!
2250 // CHECK-ERROR
: error
: invalid operand for instruction
2251 // CHECK-ERROR-NEXT
: ldrsb x2
, [x3
, #256]!
2252 // CHECK-ERROR-NEXT
: ^
2253 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2254 // CHECK-ERROR-NEXT
: ldrsb x22
, [x13
, #-257]!
2255 // CHECK-ERROR-NEXT
: ^
2256 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2257 // CHECK-ERROR-NEXT
: ldrsh x2
, [x3
, #256]!
2258 // CHECK-ERROR-NEXT
: ^
2259 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2260 // CHECK-ERROR-NEXT
: ldrsh x22
, [x13
, #-257]!
2261 // CHECK-ERROR-NEXT
: ^
2262 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2263 // CHECK-ERROR-NEXT
: ldrsw x2
, [x3
, #256]!
2264 // CHECK-ERROR-NEXT
: ^
2265 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2266 // CHECK-ERROR-NEXT
: ldrsw x22
, [x13
, #-257]!
2267 // CHECK-ERROR-NEXT
: ^
2269 ldrsb w2
, [x3
, #256]!
2270 ldrsb w22
, [x13
, #-257]!
2271 ldrsh w2
, [x3
, #256]!
2272 ldrsh w22
, [x13
, #-257]!
2273 // CHECK-ERROR
: error
: invalid operand for instruction
2274 // CHECK-ERROR-NEXT
: ldrsb w2
, [x3
, #256]!
2275 // CHECK-ERROR-NEXT
: ^
2276 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2277 // CHECK-ERROR-NEXT
: ldrsb w22
, [x13
, #-257]!
2278 // CHECK-ERROR-NEXT
: ^
2279 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2280 // CHECK-ERROR-NEXT
: ldrsh w2
, [x3
, #256]!
2281 // CHECK-ERROR-NEXT
: ^
2282 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2283 // CHECK-ERROR-NEXT
: ldrsh w22
, [x13
, #-257]!
2284 // CHECK-ERROR-NEXT
: ^
2287 str b3
, [x13
, #-257]!
2289 str h3
, [x13
, #-257]!
2291 str s3
, [x13
, #-257]!
2293 str d3
, [x13
, #-257]!
2294 // CHECK-ERROR
: error
: invalid operand for instruction
2295 // CHECK-ERROR-NEXT
: str b3
, [x3
, #256]!
2296 // CHECK-ERROR-NEXT
: ^
2297 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2298 // CHECK-ERROR-NEXT
: str b3
, [x13
, #-257]!
2299 // CHECK-ERROR-NEXT
: ^
2300 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2301 // CHECK-ERROR-NEXT
: str h3
, [x3
, #256]!
2302 // CHECK-ERROR-NEXT
: ^
2303 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2304 // CHECK-ERROR-NEXT
: str h3
, [x13
, #-257]!
2305 // CHECK-ERROR-NEXT
: ^
2306 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2307 // CHECK-ERROR-NEXT
: str s3
, [x3
, #256]!
2308 // CHECK-ERROR-NEXT
: ^
2309 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2310 // CHECK-ERROR-NEXT
: str s3
, [x13
, #-257]!
2311 // CHECK-ERROR-NEXT
: ^
2312 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2313 // CHECK-ERROR-NEXT
: str d3
, [x3
, #256]!
2314 // CHECK-ERROR-NEXT
: ^
2315 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2316 // CHECK-ERROR-NEXT
: str d3
, [x13
, #-257]!
2317 // CHECK-ERROR-NEXT
: ^
2320 ldr b3
, [x13
, #-257]!
2322 ldr h3
, [x13
, #-257]!
2324 ldr s3
, [x13
, #-257]!
2326 ldr d3
, [x13
, #-257]!
2327 // CHECK-ERROR
: error
: invalid operand for instruction
2328 // CHECK-ERROR-NEXT
: ldr b3
, [x3
, #256]!
2329 // CHECK-ERROR-NEXT
: ^
2330 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2331 // CHECK-ERROR-NEXT
: ldr b3
, [x13
, #-257]!
2332 // CHECK-ERROR-NEXT
: ^
2333 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2334 // CHECK-ERROR-NEXT
: ldr h3
, [x3
, #256]!
2335 // CHECK-ERROR-NEXT
: ^
2336 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2337 // CHECK-ERROR-NEXT
: ldr h3
, [x13
, #-257]!
2338 // CHECK-ERROR-NEXT
: ^
2339 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2340 // CHECK-ERROR-NEXT
: ldr s3
, [x3
, #256]!
2341 // CHECK-ERROR-NEXT
: ^
2342 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2343 // CHECK-ERROR-NEXT
: ldr s3
, [x13
, #-257]!
2344 // CHECK-ERROR-NEXT
: ^
2345 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2346 // CHECK-ERROR-NEXT
: ldr d3
, [x3
, #256]!
2347 // CHECK-ERROR-NEXT
: ^
2348 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2349 // CHECK-ERROR-NEXT
: ldr d3
, [x13
, #-257]!
2350 // CHECK-ERROR-NEXT
: ^
2352 //------------------------------------------------------------------------------
2353 // Load
/store
(unprivileged
)
2354 //------------------------------------------------------------------------------
2356 ldtrb w2
, [sp
, #256]
2357 sttrh w17
, [x1
, #256]
2358 ldtrsw x20
, [x1
, #256]
2359 ldtr x12
, [sp
, #256]
2360 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2361 // CHECK-ERROR-NEXT
: ldtrb w2
, [sp
, #256]
2362 // CHECK-ERROR-NEXT
: ^
2363 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2364 // CHECK-ERROR-NEXT
: sttrh w17
, [x1
, #256]
2365 // CHECK-ERROR-NEXT
: ^
2366 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2367 // CHECK-ERROR-NEXT
: ldtrsw x20
, [x1
, #256]
2368 // CHECK-ERROR-NEXT
: ^
2369 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2370 // CHECK-ERROR-NEXT
: ldtr x12
, [sp
, #256]
2371 // CHECK-ERROR-NEXT
: ^
2373 sttr h2
, [x2
, #-257]
2374 sttr b2
, [x2
, #-257]
2375 ldtrsb x9
, [sp
, #-257]
2376 ldtr w2
, [x30
, #-257]
2377 sttr q9
, [x20
, #-257]
2378 // CHECK-ERROR
: error
: invalid operand for instruction
2379 // CHECK-ERROR-NEXT
: sttr h2
, [x2
, #-257]
2380 // CHECK-ERROR-NEXT
: ^
2381 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2382 // CHECK-ERROR-NEXT
: sttr b2
, [x2
, #-257]
2383 // CHECK-ERROR-NEXT
: ^
2384 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2385 // CHECK-ERROR-NEXT
: ldtrsb x9
, [sp
, #-257]
2386 // CHECK-ERROR-NEXT
: ^
2387 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2388 // CHECK-ERROR-NEXT
: ldtr w2
, [x30
, #-257]
2389 // CHECK-ERROR-NEXT
: ^
2390 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2391 // CHECK-ERROR-NEXT
: sttr q9
, [x20
, #-257]
2392 // CHECK-ERROR-NEXT
: ^
2395 //------------------------------------------------------------------------------
2396 // Load
/store
(unsigned immediate
)
2397 //------------------------------------------------------------------------------
2400 // CHECK-ERROR
: error
: invalid operand for instruction
2401 // CHECK-ERROR-NEXT
: ldr v0
, [x0
, #0]
2402 // CHECK-ERROR-NEXT
: ^
2403 // CHECK-ERROR
: error
: invalid operand for instruction
2404 // CHECK-ERROR-NEXT
: str v0
, [x0
, #0]
2405 // CHECK-ERROR-NEXT
: ^
2407 //// Out of range immediates
2408 ldr q0
, [x11
, #65536]
2409 ldr x0
, [sp
, #32768]
2410 ldr w0
, [x4
, #16384]
2411 ldrh w2
, [x21
, #8192]
2412 ldrb w3
, [x12
, #4096]
2413 // CHECK-ERROR
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2414 // CHECK-ERROR-NEXT
: ldr q0
, [x11
, #65536]
2415 // CHECK-ERROR-NEXT
: ^
2416 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2417 // CHECK-ERROR-NEXT
: ldr x0
, [sp
, #32768]
2418 // CHECK-ERROR-NEXT
: ^
2419 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2420 // CHECK-ERROR-NEXT
: ldr w0
, [x4
, #16384]
2421 // CHECK-ERROR-NEXT
: ^
2422 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2423 // CHECK-ERROR-NEXT
: ldrh w2
, [x21
, #8192]
2424 // CHECK-ERROR-NEXT
: ^
2425 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2426 // CHECK-ERROR-NEXT
: ldrb w3
, [x12
, #4096]
2427 // CHECK-ERROR-NEXT
: ^
2429 //// Misaligned addresses
2431 ldrsh w2
, [x0
, #123]
2433 // CHECK-ERROR-AARCH64
: error
: too few operands for instruction
2434 // CHECK-ERROR-AARCH64-NEXT
: ldr w0
, [x0
, #2]
2435 // CHECK-ERROR-AARCH64-NEXT
: ^
2436 // CHECK-ERROR-AARCH64-NEXT
: error
: too few operands for instruction
2437 // CHECK-ERROR-AARCH64-NEXT
: ldrsh w2
, [x0
, #123]
2438 // CHECK-ERROR-AARCH64-NEXT
: ^
2439 // CHECK-ERROR-AARCH64-NEXT
: error
: too few operands for instruction
2440 // CHECK-ERROR-AARCH64-NEXT
: str q0
, [x0
, #8]
2441 // CHECK-ERROR-AARCH64-NEXT
: ^
2443 //// 32-bit addresses
2446 // CHECK-ERROR
: error
: invalid operand for instruction
2447 // CHECK-ERROR-NEXT
: ldr w0
, [w20
]
2448 // CHECK-ERROR-NEXT
: ^
2449 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2450 // CHECK-ERROR-NEXT
: ldrsh x3
, [wsp
]
2451 // CHECK-ERROR-NEXT
: ^
2457 str w7
, [x12
, #16384]
2458 // CHECK-ERROR
: error
: invalid operand for instruction
2459 // CHECK-ERROR-NEXT
: strb w0
, [wsp
]
2460 // CHECK-ERROR-NEXT
: ^
2461 // CHECK-ERROR-AARCH64
: error
: invalid operand for instruction
2462 // CHECK-ERROR-AARCH64-NEXT
: strh w31
, [x23
, #1]
2463 // CHECK-ERROR-AARCH64-NEXT
: ^
2464 // CHECK-ERROR-AARCH64-NEXT
: error
: too few operands for instruction
2465 // CHECK-ERROR-AARCH64-NEXT
: str x5
, [x22
, #12]
2466 // CHECK-ERROR-AARCH64-NEXT
: ^
2467 // CHECK-ERROR-NEXT
: error
: {{expected|index must
be an
}} integer in range
[-256, 255]
2468 // CHECK-ERROR-NEXT
: str w7
, [x12
, #16384]
2469 // CHECK-ERROR-NEXT
: ^
2474 prfm pldl1strm
, [w3
, #8]
2476 // CHECK-ERROR-AARCH64
: error
: Invalid immediate for instruction
2477 // CHECK-ERROR-ARM64
: error
: prefetch operand out of range
, [0,31] expected
2478 // CHECK-ERROR-NEXT
: prfm
#-1, [sp]
2479 // CHECK-ERROR-NEXT
: ^
2480 // CHECK-ERROR-AARCH64-NEXT
: error
: Invalid immediate for instruction
2481 // CHECK-ERROR-ARM64-NEXT
: error
: prefetch operand out of range
, [0,31] expected
2482 // CHECK-ERROR-NEXT
: prfm
#32, [sp, #8]
2483 // CHECK-ERROR-NEXT
: ^
2484 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2485 // CHECK-ERROR-NEXT
: prfm pldl1strm
, [w3
, #8]
2486 // CHECK-ERROR-NEXT
: ^
2487 // CHECK-ERROR-AARCH64-NEXT
: error
: operand specifier
not recognised
2488 // CHECK-ERROR-ARM64-NEXT
: error
: prefetch hint expected
2489 // CHECK-ERROR-NEXT
: prfm wibble
, [sp
]
2490 // CHECK-ERROR-NEXT
: ^
2492 //------------------------------------------------------------------------------
2493 // Load
/store register
(register offset
)
2494 //------------------------------------------------------------------------------
2496 ldr v0
, [x0
, x1
, lsl
#0]
2497 ldr v0
, [x0
, x1
, lsl
#0]
2499 str v0
, [x0
, x1
, lsl
#0]
2500 str v0
, [x0
, x1
, lsl
#0]
2501 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2502 // CHECK-ERROR-NEXT
: ldr v0
, [x0
, xzr
]
2503 // CHECK-ERROR-NEXT
: ^
2504 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2505 // CHECK-ERROR-NEXT
: ldr v0
, [x0
, x1
, lsl
#0]
2506 // CHECK-ERROR-NEXT
: ^
2507 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2508 // CHECK-ERROR-NEXT
: ldr v0
, [x0
, x1
, lsl
#0]
2509 // CHECK-ERROR-NEXT
: ^
2510 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2511 // CHECK-ERROR-NEXT
: str v0
, [x0
, xzr
]
2512 // CHECK-ERROR-NEXT
: ^
2513 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2514 // CHECK-ERROR-NEXT
: str v0
, [x0
, x1
, lsl
#0]
2515 // CHECK-ERROR-NEXT
: ^
2516 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2517 // CHECK-ERROR-NEXT
: str v0
, [x0
, x1
, lsl
#0]
2518 // CHECK-ERROR-NEXT
: ^
2521 ldr w4
, [x0
, x4
, lsl
]
2522 ldr w9
, [x5
, x5
, uxtw
]
2523 ldr w10
, [x6
, x9
, sxtw
#2]
2524 ldr w11
, [x7
, w2
, lsl
#2]
2525 ldr w12
, [x8
, w1
, sxtx
]
2526 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2527 // CHECK-ERROR-NEXT
: ldr w3
, [xzr
, x3
]
2528 // CHECK-ERROR-NEXT
: ^
2529 // CHECK-ERROR-NEXT
: error
: expected
#imm after shift specifier
2530 // CHECK-ERROR-NEXT
: ldr w4
, [x0
, x4
, lsl
]
2531 // CHECK-ERROR-NEXT
: ^
2532 // CHECK-ERROR-NEXT
: error
: expected
'lsl' or 'sxtx' with optional shift of
#0 or #2
2533 // CHECK-ERROR-NEXT
: ldr w9
, [x5
, x5
, uxtw
]
2534 // CHECK-ERROR-NEXT
: ^
2535 // CHECK-ERROR-NEXT
: error
: expected
'lsl' or 'sxtx' with optional shift of
#0 or #2
2536 // CHECK-ERROR-NEXT
: ldr w10
, [x6
, x9
, sxtw
#2]
2537 // CHECK-ERROR-NEXT
: ^
2538 // CHECK-ERROR-NEXT
: error
: expected
'uxtw' or 'sxtw' with optional shift of
#0 or #2
2539 // CHECK-ERROR-NEXT
: ldr w11
, [x7
, w2
, lsl
#2]
2540 // CHECK-ERROR-NEXT
: ^
2541 // CHECK-ERROR-NEXT
: error
: expected
'uxtw' or 'sxtw' with optional shift of
#0 or #2
2542 // CHECK-ERROR-NEXT
: ldr w12
, [x8
, w1
, sxtx
]
2543 // CHECK-ERROR-NEXT
: ^
2545 ldrsb w9
, [x4
, x2
, lsl
#-1]
2546 strb w9
, [x4
, x2
, lsl
#1]
2547 // CHECK-ERROR-NEXT
: error
: expected integer shift amount
2548 // CHECK-ERROR-NEXT
: ldrsb w9
, [x4
, x2
, lsl
#-1]
2549 // CHECK-ERROR-NEXT
: ^
2550 // CHECK-ERROR-NEXT
: error
: expected
'lsl' or 'sxtx' with optional shift of
#0
2551 // CHECK-ERROR-NEXT
: strb w9
, [x4
, x2
, lsl
#1]
2552 // CHECK-ERROR-NEXT
: ^
2554 ldrsh w9
, [x4
, x2
, lsl
#-1]
2555 ldr h13
, [x4
, w2
, uxtw
#2]
2556 // CHECK-ERROR-NEXT
: error
: expected integer shift amount
2557 // CHECK-ERROR-NEXT
: ldrsh w9
, [x4
, x2
, lsl
#-1]
2558 // CHECK-ERROR-NEXT
: ^
2559 // CHECK-ERROR-NEXT
: error
: expected
'uxtw' or 'sxtw' with optional shift of
#0 or #1
2560 // CHECK-ERROR-NEXT
: ldr h13
, [x4
, w2
, uxtw
#2]
2561 // CHECK-ERROR-NEXT
: ^
2563 str w9
, [x5
, w9
, sxtw
#-1]
2564 str s3
, [sp
, w9
, uxtw
#1]
2565 ldrsw x9
, [x15
, x4
, sxtx
#3]
2566 // CHECK-ERROR-NEXT
: error
: expected integer shift amount
2567 // CHECK-ERROR-NEXT
: str w9
, [x5
, w9
, sxtw
#-1]
2568 // CHECK-ERROR-NEXT
: ^
2569 // CHECK-ERROR-NEXT
: error
: expected
'uxtw' or 'sxtw' with optional shift of
#0 or #2
2570 // CHECK-ERROR-NEXT
: str s3
, [sp
, w9
, uxtw
#1]
2571 // CHECK-ERROR-NEXT
: ^
2572 // CHECK-ERROR-NEXT
: error
: expected
'lsl' or 'sxtx' with optional shift of
#0 or #2
2573 // CHECK-ERROR-NEXT
: ldrsw x9
, [x15
, x4
, sxtx
#3]
2574 // CHECK-ERROR-NEXT
: ^
2576 str xzr
, [x5
, x9
, sxtx
#-1]
2577 prfm pldl3keep
, [sp
, x20
, lsl
#2]
2578 ldr d3
, [x20
, wzr
, uxtw
#4]
2579 // CHECK-ERROR-NEXT
: error
: expected integer shift amount
2580 // CHECK-ERROR-NEXT
: str xzr
, [x5
, x9
, sxtx
#-1]
2581 // CHECK-ERROR-NEXT
: ^
2582 // CHECK-ERROR-NEXT
: error
: expected
'lsl' or 'sxtx' with optional shift of
#0 or #3
2583 // CHECK-ERROR-NEXT
: prfm pldl3keep
, [sp
, x20
, lsl
#2]
2584 // CHECK-ERROR-NEXT
: ^
2585 // CHECK-ERROR-NEXT
: error
: expected
'uxtw' or 'sxtw' with optional shift of
#0 or #3
2586 // CHECK-ERROR-NEXT
: ldr d3
, [x20
, wzr
, uxtw
#4]
2587 // CHECK-ERROR-NEXT
: ^
2589 ldr q5
, [sp
, x2
, lsl
#-1]
2590 ldr q10
, [x20
, w4
, uxtw
#2]
2591 str q21
, [x20
, w4
, uxtw
#5]
2592 // CHECK-ERROR-NEXT
: error
: expected integer shift amount
2593 // CHECK-ERROR-NEXT
: ldr q5
, [sp
, x2
, lsl
#-1]
2594 // CHECK-ERROR-NEXT
: ^
2595 // CHECK-ERROR-AARCH64-NEXT
: error
: expected
'lsl' or 'sxtw' with optional shift of
#0 or #4
2596 // CHECK-ERROR-ARM64-NEXT
: error
: expected
'uxtw' or 'sxtw' with optional shift of
#0 or #4
2597 // CHECK-ERROR-NEXT
: ldr q10
, [x20
, w4
, uxtw
#2]
2598 // CHECK-ERROR-NEXT
: ^
2599 // CHECK-ERROR-AARCH64-NEXT
: error
: expected
'lsl' or 'sxtw' with optional shift of
#0 or #4
2600 // CHECK-ERROR-ARM64-NEXT
: error
: expected
'uxtw' or 'sxtw' with optional shift of
#0 or #4
2601 // CHECK-ERROR-NEXT
: str q21
, [x20
, w4
, uxtw
#5]
2602 // CHECK-ERROR-NEXT
: ^
2604 //------------------------------------------------------------------------------
2605 // Load
/store register pair
(offset
)
2606 //------------------------------------------------------------------------------
2607 ldp v0
, v1
, [x0
, #0]
2608 stp v0
, v1
, [x0
, #0]
2609 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2610 // CHECK-ERROR-NEXT
: ldp v0
, v1
, [x0
, #0]
2611 // CHECK-ERROR-NEXT
: ^
2612 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2613 // CHECK-ERROR-NEXT
: stp v0
, v1
, [x0
, #0]
2614 // CHECK-ERROR-NEXT
: ^
2616 ldp w3
, w2
, [x4
, #1]
2617 stp w1
, w2
, [x3
, #253]
2618 stp w9
, w10
, [x5
, #256]
2619 ldp w11
, w12
, [x9
, #-260]
2621 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2622 // CHECK-ERROR-NEXT
: ldp w3
, w2
, [x4
, #1]
2623 // CHECK-ERROR-NEXT
: ^
2624 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2625 // CHECK-ERROR-NEXT
: stp w1
, w2
, [x3
, #253]
2626 // CHECK-ERROR-NEXT
: ^
2627 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2628 // CHECK-ERROR-NEXT
: stp w9
, w10
, [x5
, #256]
2629 // CHECK-ERROR-NEXT
: ^
2630 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2631 // CHECK-ERROR-NEXT
: ldp w11
, w12
, [x9
, #-260]
2632 // CHECK-ERROR-NEXT
: ^
2633 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2634 // CHECK-ERROR-NEXT
: stp wsp
, w9
, [sp
]
2635 // CHECK-ERROR-NEXT
: ^
2637 ldpsw x9
, x2
, [sp
, #2]
2638 ldpsw x1
, x2
, [x10
, #256]
2639 ldpsw x3
, x4
, [x11
, #-260]
2640 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2641 // CHECK-ERROR-NEXT
: ldpsw x9
, x2
, [sp
, #2]
2642 // CHECK-ERROR-NEXT
: ^
2643 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2644 // CHECK-ERROR-NEXT
: ldpsw x1
, x2
, [x10
, #256]
2645 // CHECK-ERROR-NEXT
: ^
2646 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2647 // CHECK-ERROR-NEXT
: ldpsw x3
, x4
, [x11
, #-260]
2648 // CHECK-ERROR-NEXT
: ^
2650 ldp x2
, x5
, [sp
, #4]
2651 ldp x5
, x6
, [x9
, #512]
2652 stp x7
, x8
, [x10
, #-520]
2653 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2654 // CHECK-ERROR-NEXT
: ldp x2
, x5
, [sp
, #4]
2655 // CHECK-ERROR-NEXT
: ^
2656 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2657 // CHECK-ERROR-NEXT
: ldp x5
, x6
, [x9
, #512]
2658 // CHECK-ERROR-NEXT
: ^
2659 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2660 // CHECK-ERROR-NEXT
: stp x7
, x8
, [x10
, #-520]
2661 // CHECK-ERROR-NEXT
: ^
2665 // CHECK-ERROR
: error
: invalid operand for instruction
2666 // CHECK-ERROR-NEXT
: ldp sp
, x3
, [x10
]
2667 // CHECK-ERROR-NEXT
: ^
2668 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2669 // CHECK-ERROR-NEXT
: stp x3
, sp
, [x9
]
2670 // CHECK-ERROR-NEXT
: ^
2672 stp s3
, s5
, [sp
, #-2]
2673 ldp s6
, s26
, [x4
, #-260]
2674 stp s13
, s19
, [x5
, #256]
2675 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2676 // CHECK-ERROR-NEXT
: stp s3
, s5
, [sp
, #-2]
2677 // CHECK-ERROR-NEXT
: ^
2678 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2679 // CHECK-ERROR-NEXT
: ldp s6
, s26
, [x4
, #-260]
2680 // CHECK-ERROR-NEXT
: ^
2681 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2682 // CHECK-ERROR-NEXT
: stp s13
, s19
, [x5
, #256]
2683 // CHECK-ERROR-NEXT
: ^
2686 ldp d5
, d6
, [x0
, #512]
2687 stp d7
, d8
, [x0
, #-520]
2688 // CHECK-ERROR
: error
: invalid operand for instruction
2689 // CHECK-ERROR-NEXT
: ldp d3
, d4
, [xzr
]
2690 // CHECK-ERROR-NEXT
: ^
2691 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2692 // CHECK-ERROR-NEXT
: ldp d5
, d6
, [x0
, #512]
2693 // CHECK-ERROR-NEXT
: ^
2694 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2695 // CHECK-ERROR-NEXT
: stp d7
, d8
, [x0
, #-520]
2696 // CHECK-ERROR-NEXT
: ^
2699 ldp q3
, q5
, [sp
, #8]
2700 stp q20
, q25
, [x5
, #1024]
2701 ldp q30
, q15
, [x23
, #-1040]
2702 // CHECK-ERROR
: error
: invalid operand for instruction
2703 // CHECK-ERROR-NEXT
: ldp d3
, q2
, [sp
]
2704 // CHECK-ERROR-NEXT
: ^
2705 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
2706 // CHECK-ERROR-NEXT
: ldp q3
, q5
, [sp
, #8]
2707 // CHECK-ERROR-NEXT
: ^
2708 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
2709 // CHECK-ERROR-NEXT
: stp q20
, q25
, [x5
, #1024]
2710 // CHECK-ERROR-NEXT
: ^
2711 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
2712 // CHECK-ERROR-NEXT
: ldp q30
, q15
, [x23
, #-1040]
2713 // CHECK-ERROR-NEXT
: ^
2715 //------------------------------------------------------------------------------
2716 // Load
/store register pair
(post-indexed
)
2717 //------------------------------------------------------------------------------
2718 ldp v0
, v1
, [x0
], #0
2719 stp v0
, v1
, [x0
], #0
2720 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2721 // CHECK-ERROR-NEXT
: ldp v0
, v1
, [x0
], #0
2722 // CHECK-ERROR-NEXT
: ^
2723 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2724 // CHECK-ERROR-NEXT
: stp v0
, v1
, [x0
], #0
2725 // CHECK-ERROR-NEXT
: ^
2727 ldp w3
, w2
, [x4
], #1
2728 stp w1
, w2
, [x3
], #253
2729 stp w9
, w10
, [x5
], #256
2730 ldp w11
, w12
, [x9
], #-260
2731 stp wsp
, w9
, [sp
], #0
2732 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2733 // CHECK-ERROR-NEXT
: ldp w3
, w2
, [x4
], #1
2734 // CHECK-ERROR-NEXT
: ^
2735 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2736 // CHECK-ERROR-NEXT
: stp w1
, w2
, [x3
], #253
2737 // CHECK-ERROR-NEXT
: ^
2738 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2739 // CHECK-ERROR-NEXT
: stp w9
, w10
, [x5
], #256
2740 // CHECK-ERROR-NEXT
: ^
2741 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2742 // CHECK-ERROR-NEXT
: ldp w11
, w12
, [x9
], #-260
2743 // CHECK-ERROR-NEXT
: ^
2744 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2745 // CHECK-ERROR-NEXT
: stp wsp
, w9
, [sp
], #0
2746 // CHECK-ERROR-NEXT
: ^
2748 ldpsw x9
, x2
, [sp
], #2
2749 ldpsw x1
, x2
, [x10
], #256
2750 ldpsw x3
, x4
, [x11
], #-260
2751 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2752 // CHECK-ERROR-NEXT
: ldpsw x9
, x2
, [sp
], #2
2753 // CHECK-ERROR-NEXT
: ^
2754 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2755 // CHECK-ERROR-NEXT
: ldpsw x1
, x2
, [x10
], #256
2756 // CHECK-ERROR-NEXT
: ^
2757 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2758 // CHECK-ERROR-NEXT
: ldpsw x3
, x4
, [x11
], #-260
2759 // CHECK-ERROR-NEXT
: ^
2761 ldp x2
, x5
, [sp
], #4
2762 ldp x5
, x6
, [x9
], #512
2763 stp x7
, x8
, [x10
], #-520
2764 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2765 // CHECK-ERROR-NEXT
: ldp x2
, x5
, [sp
], #4
2766 // CHECK-ERROR-NEXT
: ^
2767 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2768 // CHECK-ERROR-NEXT
: ldp x5
, x6
, [x9
], #512
2769 // CHECK-ERROR-NEXT
: ^
2770 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2771 // CHECK-ERROR-NEXT
: stp x7
, x8
, [x10
], #-520
2772 // CHECK-ERROR-NEXT
: ^
2774 ldp sp
, x3
, [x10
], #0
2775 stp x3
, sp
, [x9
], #0
2776 // CHECK-ERROR
: error
: invalid operand for instruction
2777 // CHECK-ERROR-NEXT
: ldp sp
, x3
, [x10
], #0
2778 // CHECK-ERROR-NEXT
: ^
2779 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2780 // CHECK-ERROR-NEXT
: stp x3
, sp
, [x9
], #0
2781 // CHECK-ERROR-NEXT
: ^
2783 stp s3
, s5
, [sp
], #-2
2784 ldp s6
, s26
, [x4
], #-260
2785 stp s13
, s19
, [x5
], #256
2786 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2787 // CHECK-ERROR-NEXT
: stp s3
, s5
, [sp
], #-2
2788 // CHECK-ERROR-NEXT
: ^
2789 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2790 // CHECK-ERROR-NEXT
: ldp s6
, s26
, [x4
], #-260
2791 // CHECK-ERROR-NEXT
: ^
2792 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2793 // CHECK-ERROR-NEXT
: stp s13
, s19
, [x5
], #256
2794 // CHECK-ERROR-NEXT
: ^
2796 ldp d3
, d4
, [xzr
], #0
2797 ldp d5
, d6
, [x0
], #512
2798 stp d7
, d8
, [x0
], #-520
2799 // CHECK-ERROR
: error
: invalid operand for instruction
2800 // CHECK-ERROR-NEXT
: ldp d3
, d4
, [xzr
], #0
2801 // CHECK-ERROR-NEXT
: ^
2802 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2803 // CHECK-ERROR-NEXT
: ldp d5
, d6
, [x0
], #512
2804 // CHECK-ERROR-NEXT
: ^
2805 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2806 // CHECK-ERROR-NEXT
: stp d7
, d8
, [x0
], #-520
2807 // CHECK-ERROR-NEXT
: ^
2809 ldp d3
, q2
, [sp
], #0
2810 ldp q3
, q5
, [sp
], #8
2811 stp q20
, q25
, [x5
], #1024
2812 ldp q30
, q15
, [x23
], #-1040
2813 // CHECK-ERROR
: error
: invalid operand for instruction
2814 // CHECK-ERROR-NEXT
: ldp d3
, q2
, [sp
], #0
2815 // CHECK-ERROR-NEXT
: ^
2816 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
2817 // CHECK-ERROR-NEXT
: ldp q3
, q5
, [sp
], #8
2818 // CHECK-ERROR-NEXT
: ^
2819 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
2820 // CHECK-ERROR-NEXT
: stp q20
, q25
, [x5
], #1024
2821 // CHECK-ERROR-NEXT
: ^
2822 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
2823 // CHECK-ERROR-NEXT
: ldp q30
, q15
, [x23
], #-1040
2824 // CHECK-ERROR-NEXT
: ^
2826 //------------------------------------------------------------------------------
2827 // Load
/store register pair
(pre-indexed
)
2828 //------------------------------------------------------------------------------
2829 ldp v0
, v1
, [x0
, #0]!
2830 stp v0
, v1
, [x0
, #0]!
2831 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2832 // CHECK-ERROR-NEXT
: ldp v0
, v1
, [x0
, #0]!
2833 // CHECK-ERROR-NEXT
: ^
2834 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2835 // CHECK-ERROR-NEXT
: stp v0
, v1
, [x0
, #0]!
2836 // CHECK-ERROR-NEXT
: ^
2838 ldp w3
, w2
, [x4
, #1]!
2839 stp w1
, w2
, [x3
, #253]!
2840 stp w9
, w10
, [x5
, #256]!
2841 ldp w11
, w12
, [x9
, #-260]!
2842 stp wsp
, w9
, [sp
, #0]!
2843 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2844 // CHECK-ERROR-NEXT
: ldp w3
, w2
, [x4
, #1]!
2845 // CHECK-ERROR-NEXT
: ^
2846 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2847 // CHECK-ERROR-NEXT
: stp w1
, w2
, [x3
, #253]!
2848 // CHECK-ERROR-NEXT
: ^
2849 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2850 // CHECK-ERROR-NEXT
: stp w9
, w10
, [x5
, #256]!
2851 // CHECK-ERROR-NEXT
: ^
2852 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2853 // CHECK-ERROR-NEXT
: ldp w11
, w12
, [x9
, #-260]!
2854 // CHECK-ERROR-NEXT
: ^
2855 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2856 // CHECK-ERROR-NEXT
: stp wsp
, w9
, [sp
, #0]!
2857 // CHECK-ERROR-NEXT
: ^
2859 ldpsw x9
, x2
, [sp
, #2]!
2860 ldpsw x1
, x2
, [x10
, #256]!
2861 ldpsw x3
, x4
, [x11
, #-260]!
2862 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2863 // CHECK-ERROR-NEXT
: ldpsw x9
, x2
, [sp
, #2]!
2864 // CHECK-ERROR-NEXT
: ^
2865 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2866 // CHECK-ERROR-NEXT
: ldpsw x1
, x2
, [x10
, #256]!
2867 // CHECK-ERROR-NEXT
: ^
2868 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2869 // CHECK-ERROR-NEXT
: ldpsw x3
, x4
, [x11
, #-260]!
2870 // CHECK-ERROR-NEXT
: ^
2872 ldp x2
, x5
, [sp
, #4]!
2873 ldp x5
, x6
, [x9
, #512]!
2874 stp x7
, x8
, [x10
, #-520]!
2875 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2876 // CHECK-ERROR-NEXT
: ldp x2
, x5
, [sp
, #4]!
2877 // CHECK-ERROR-NEXT
: ^
2878 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2879 // CHECK-ERROR-NEXT
: ldp x5
, x6
, [x9
, #512]!
2880 // CHECK-ERROR-NEXT
: ^
2881 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2882 // CHECK-ERROR-NEXT
: stp x7
, x8
, [x10
, #-520]!
2883 // CHECK-ERROR-NEXT
: ^
2885 ldp sp
, x3
, [x10
, #0]!
2886 stp x3
, sp
, [x9
, #0]!
2887 // CHECK-ERROR
: error
: invalid operand for instruction
2888 // CHECK-ERROR-NEXT
: ldp sp
, x3
, [x10
, #0]!
2889 // CHECK-ERROR-NEXT
: ^
2890 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2891 // CHECK-ERROR-NEXT
: stp x3
, sp
, [x9
, #0]!
2892 // CHECK-ERROR-NEXT
: ^
2894 stp s3
, s5
, [sp
, #-2]!
2895 ldp s6
, s26
, [x4
, #-260]!
2896 stp s13
, s19
, [x5
, #256]!
2897 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2898 // CHECK-ERROR-NEXT
: stp s3
, s5
, [sp
, #-2]!
2899 // CHECK-ERROR-NEXT
: ^
2900 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2901 // CHECK-ERROR-NEXT
: ldp s6
, s26
, [x4
, #-260]!
2902 // CHECK-ERROR-NEXT
: ^
2903 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2904 // CHECK-ERROR-NEXT
: stp s13
, s19
, [x5
, #256]!
2905 // CHECK-ERROR-NEXT
: ^
2907 ldp d3
, d4
, [xzr
, #0]!
2908 ldp d5
, d6
, [x0
, #512]!
2909 stp d7
, d8
, [x0
, #-520]!
2910 // CHECK-ERROR
: error
: invalid operand for instruction
2911 // CHECK-ERROR-NEXT
: ldp d3
, d4
, [xzr
, #0]!
2912 // CHECK-ERROR-NEXT
: ^
2913 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2914 // CHECK-ERROR-NEXT
: ldp d5
, d6
, [x0
, #512]!
2915 // CHECK-ERROR-NEXT
: ^
2916 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2917 // CHECK-ERROR-NEXT
: stp d7
, d8
, [x0
, #-520]!
2918 // CHECK-ERROR-NEXT
: ^
2920 ldp d3
, q2
, [sp
, #0]!
2921 ldp q3
, q5
, [sp
, #8]!
2922 stp q20
, q25
, [x5
, #1024]!
2923 ldp q30
, q15
, [x23
, #-1040]!
2924 // CHECK-ERROR
: error
: invalid operand for instruction
2925 // CHECK-ERROR-NEXT
: ldp d3
, q2
, [sp
, #0]!
2926 // CHECK-ERROR-NEXT
: ^
2927 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
2928 // CHECK-ERROR-NEXT
: ldp q3
, q5
, [sp
, #8]!
2929 // CHECK-ERROR-NEXT
: ^
2930 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
2931 // CHECK-ERROR-NEXT
: stp q20
, q25
, [x5
, #1024]!
2932 // CHECK-ERROR-NEXT
: ^
2933 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
2934 // CHECK-ERROR-NEXT
: ldp q30
, q15
, [x23
, #-1040]!
2935 // CHECK-ERROR-NEXT
: ^
2937 //------------------------------------------------------------------------------
2938 // Load
/store register pair
(offset
)
2939 //------------------------------------------------------------------------------
2940 ldnp v0
, v1
, [x0
, #0]
2941 stnp v0
, v1
, [x0
, #0]
2942 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2943 // CHECK-ERROR-NEXT
: ldnp v0
, v1
, [x0
, #0]
2944 // CHECK-ERROR-NEXT
: ^
2945 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2946 // CHECK-ERROR-NEXT
: stnp v0
, v1
, [x0
, #0]
2947 // CHECK-ERROR-NEXT
: ^
2949 ldnp w3
, w2
, [x4
, #1]
2950 stnp w1
, w2
, [x3
, #253]
2951 stnp w9
, w10
, [x5
, #256]
2952 ldnp w11
, w12
, [x9
, #-260]
2954 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2955 // CHECK-ERROR-NEXT
: ldnp w3
, w2
, [x4
, #1]
2956 // CHECK-ERROR-NEXT
: ^
2957 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2958 // CHECK-ERROR-NEXT
: stnp w1
, w2
, [x3
, #253]
2959 // CHECK-ERROR-NEXT
: ^
2960 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2961 // CHECK-ERROR-NEXT
: stnp w9
, w10
, [x5
, #256]
2962 // CHECK-ERROR-NEXT
: ^
2963 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2964 // CHECK-ERROR-NEXT
: ldnp w11
, w12
, [x9
, #-260]
2965 // CHECK-ERROR-NEXT
: ^
2966 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2967 // CHECK-ERROR-NEXT
: stnp wsp
, w9
, [sp
]
2968 // CHECK-ERROR-NEXT
: ^
2970 ldnp x2
, x5
, [sp
, #4]
2971 ldnp x5
, x6
, [x9
, #512]
2972 stnp x7
, x8
, [x10
, #-520]
2973 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2974 // CHECK-ERROR-NEXT
: ldnp x2
, x5
, [sp
, #4]
2975 // CHECK-ERROR-NEXT
: ^
2976 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2977 // CHECK-ERROR-NEXT
: ldnp x5
, x6
, [x9
, #512]
2978 // CHECK-ERROR-NEXT
: ^
2979 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
2980 // CHECK-ERROR-NEXT
: stnp x7
, x8
, [x10
, #-520]
2981 // CHECK-ERROR-NEXT
: ^
2985 // CHECK-ERROR
: error
: invalid operand for instruction
2986 // CHECK-ERROR-NEXT
: ldnp sp
, x3
, [x10
]
2987 // CHECK-ERROR-NEXT
: ^
2988 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
2989 // CHECK-ERROR-NEXT
: stnp x3
, sp
, [x9
]
2990 // CHECK-ERROR-NEXT
: ^
2992 stnp s3
, s5
, [sp
, #-2]
2993 ldnp s6
, s26
, [x4
, #-260]
2994 stnp s13
, s19
, [x5
, #256]
2995 // CHECK-ERROR
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2996 // CHECK-ERROR-NEXT
: stnp s3
, s5
, [sp
, #-2]
2997 // CHECK-ERROR-NEXT
: ^
2998 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
2999 // CHECK-ERROR-NEXT
: ldnp s6
, s26
, [x4
, #-260]
3000 // CHECK-ERROR-NEXT
: ^
3001 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
4 in range
[-256, 252]
3002 // CHECK-ERROR-NEXT
: stnp s13
, s19
, [x5
, #256]
3003 // CHECK-ERROR-NEXT
: ^
3006 ldnp d5
, d6
, [x0
, #512]
3007 stnp d7
, d8
, [x0
, #-520]
3008 // CHECK-ERROR
: error
: invalid operand for instruction
3009 // CHECK-ERROR-NEXT
: ldnp d3
, d4
, [xzr
]
3010 // CHECK-ERROR-NEXT
: ^
3011 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
3012 // CHECK-ERROR-NEXT
: ldnp d5
, d6
, [x0
, #512]
3013 // CHECK-ERROR-NEXT
: ^
3014 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
8 in range
[-512, 504]
3015 // CHECK-ERROR-NEXT
: stnp d7
, d8
, [x0
, #-520]
3016 // CHECK-ERROR-NEXT
: ^
3019 ldnp q3
, q5
, [sp
, #8]
3020 stnp q20
, q25
, [x5
, #1024]
3021 ldnp q30
, q15
, [x23
, #-1040]
3022 // CHECK-ERROR
: error
: invalid operand for instruction
3023 // CHECK-ERROR-NEXT
: ldnp d3
, q2
, [sp
]
3024 // CHECK-ERROR-NEXT
: ^
3025 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
3026 // CHECK-ERROR-NEXT
: ldnp q3
, q5
, [sp
, #8]
3027 // CHECK-ERROR-NEXT
: ^
3028 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
3029 // CHECK-ERROR-NEXT
: stnp q20
, q25
, [x5
, #1024]
3030 // CHECK-ERROR-NEXT
: ^
3031 // CHECK-ERROR-NEXT
: error
: {{expected integer|index must
be a}} multiple of
16 in range
[-1024, 1008]
3032 // CHECK-ERROR-NEXT
: ldnp q30
, q15
, [x23
, #-1040]
3033 // CHECK-ERROR-NEXT
: ^
3035 //------------------------------------------------------------------------------
3036 // Logical
(shifted register
)
3037 //------------------------------------------------------------------------------
3038 orr w0
, w1
, #0xffffffff
3039 and x3
, x5
, #0xffffffffffffffff
3040 // CHECK-ERROR
: error
: expected compatible register
or logical immediate
3041 // CHECK-ERROR-NEXT
: orr w0
, w1
, #0xffffffff
3042 // CHECK-ERROR-NEXT
: ^
3043 // CHECK-ERROR-NEXT
: error
: expected compatible register
or logical immediate
3044 // CHECK-ERROR-NEXT
: and x3
, x5
, #0xffffffffffffffff
3045 // CHECK-ERROR-NEXT
: ^
3049 // CHECK-ERROR
: error
: expected compatible register
or logical immediate
3050 // CHECK-ERROR-NEXT
: ands w3
, w9
, #0x0
3051 // CHECK-ERROR-NEXT
: ^
3052 // CHECK-ERROR-NEXT
: error
: expected compatible register
or logical immediate
3053 // CHECK-ERROR-NEXT
: eor x2
, x0
, #0x0
3054 // CHECK-ERROR-NEXT
: ^
3057 eor x9
, x20
, #0x1234
3058 // CHECK-ERROR
: error
: expected compatible register
or logical immediate
3059 // CHECK-ERROR-NEXT
: eor w3
, w5
, #0x83
3060 // CHECK-ERROR-NEXT
: ^
3061 // CHECK-ERROR-NEXT
: error
: expected compatible register
or logical immediate
3062 // CHECK-ERROR-NEXT
: eor x9
, x20
, #0x1234
3063 // CHECK-ERROR-NEXT
: ^
3065 and wzr
, w4
, 0xffff0000
3066 eor xzr
, x9
, #0xffff0000ffff0000
3067 // CHECK-ERROR
: error
: invalid operand for instruction
3068 // CHECK-ERROR-NEXT
: and wzr
, w4
, 0xffff0000
3069 // CHECK-ERROR-NEXT
: ^
3070 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
3071 // CHECK-ERROR-NEXT
: eor xzr
, x9
, #0xffff0000ffff0000
3072 // CHECK-ERROR-NEXT
: ^
3074 orr w3
, wsp
, #0xf0f0f0f0
3075 ands x3
, sp
, #0xaaaaaaaaaaaaaaaa
3076 // CHECK-ERROR
: error
: invalid operand for instruction
3077 // CHECK-ERROR-NEXT
: orr w3
, wsp
, #0xf0f0f0f0
3078 // CHECK-ERROR-NEXT
: ^
3079 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
3080 // CHECK-ERROR-NEXT
: ands x3
, sp
, #0xaaaaaaaaaaaaaaaa
3081 // CHECK-ERROR-NEXT
: ^
3083 tst sp
, #0xe0e0e0e0e0e0e0e0
3084 // CHECK-ERROR
: error
: invalid operand for instruction
3085 // CHECK-ERROR-NEXT
: tst sp
, #0xe0e0e0e0e0e0e0e0
3086 // CHECK-ERROR-NEXT
: ^
3088 // movi has been removed from the specification. Make sure it
's really gone.
3089 movi wzr, #0x44444444
3091 movi x9, #0x0000ffff00000000
3092 // CHECK-ERROR: error: invalid operand for instruction
3093 // CHECK-ERROR-NEXT: movi wzr, #0x44444444
3094 // CHECK-ERROR-NEXT: ^
3095 // CHECK-ERROR: error: invalid operand for instruction
3096 // CHECK-ERROR-NEXT: movi w3, #0xffff
3097 // CHECK-ERROR-NEXT: ^
3098 // CHECK-ERROR: error: invalid operand for instruction
3099 // CHECK-ERROR-NEXT: movi x9, #0x0000ffff00000000
3100 // CHECK-ERROR-NEXT: ^
3102 //------------------------------------------------------------------------------
3103 // Logical (shifted register)
3104 //------------------------------------------------------------------------------
3106 //// Out of range shifts
3107 and w2, w24, w6, lsl #-1
3108 and w4, w6, w12, lsl #32
3109 and x4, x6, x12, lsl #64
3110 and x2, x5, x11, asr
3111 // CHECK-ERROR: error: expected integer shift amount
3112 // CHECK-ERROR-NEXT: and w2, w24, w6, lsl #-1
3113 // CHECK-ERROR-NEXT: ^
3114 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 31]
3115 // CHECK-ERROR-NEXT: and w4, w6, w12, lsl #32
3116 // CHECK-ERROR-NEXT: ^
3117 // CHECK-ERROR-NEXT: error: expected 'lsl
', 'lsr
' or 'asr
' with optional integer in range [0, 63]
3118 // CHECK-ERROR-NEXT: and x4, x6, x12, lsl #64
3119 // CHECK-ERROR-NEXT: ^
3120 // CHECK-ERROR-NEXT: error: expected #imm after shift specifier
3121 // CHECK-ERROR-NEXT: and x2, x5, x11, asr
3122 // CHECK-ERROR-NEXT: ^
3126 bics x20, sp, x9, lsr #0
3127 orn x2, x6, sp, lsl #3
3128 // FIXME: the diagnostic we get for 'orn wsp
, w3
, w5
' is from the orn alias,
3129 // which is a better match than the genuine ORNWri, whereas it would be better
3130 // to get the ORNWri diagnostic when the alias did not match, i.e. the
3131 // alias' diagnostics should have
a lower priority.
3132 // CHECK-ERROR
: error
: expected compatible register
or logical immediate
3133 // CHECK-ERROR-NEXT
: orn wsp
, w3
, w5
3134 // CHECK-ERROR-NEXT
: ^
3135 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
3136 // CHECK-ERROR-NEXT
: bics x20
, sp
, x9
, lsr
#0
3137 // CHECK-ERROR-NEXT
: ^
3138 // CHECK-ERROR-NEXT
: error
: expected compatible register
or logical immediate
3139 // CHECK-ERROR-NEXT
: orn x2
, x6
, sp
, lsl
#3
3140 // CHECK-ERROR-NEXT
: ^
3142 //// Mismatched registers
3145 and x4
, x5
, w6
, lsl
#12
3146 orr w2
, w5
, x7
, asr
#0
3147 // CHECK-ERROR
: error
: invalid operand for instruction
3148 // CHECK-ERROR-NEXT
: and x3
, w2
, w1
3149 // CHECK-ERROR-NEXT
: ^
3150 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
3151 // CHECK-ERROR-NEXT
: ands w1
, x12
, w2
3152 // CHECK-ERROR-NEXT
: ^
3153 // CHECK-ERROR-NEXT
: error
: expected compatible register
or logical immediate
3154 // CHECK-ERROR-NEXT
: and x4
, x5
, w6
, lsl
#12
3155 // CHECK-ERROR-NEXT
: ^
3156 // CHECK-ERROR-NEXT
: error
: expected compatible register
or logical immediate
3157 // CHECK-ERROR-NEXT
: orr w2
, w5
, x7
, asr
#0
3158 // CHECK-ERROR-NEXT
: ^
3160 //// Shifts should
not be allowed on mov
3162 // CHECK-ERROR
: error
: invalid operand for instruction
3163 // CHECK-ERROR-NEXT
: mov w3
, w7
, lsl
#13
3164 // CHECK-ERROR-NEXT
: ^
3166 //------------------------------------------------------------------------------
3167 // Move wide
(immediate
)
3168 //------------------------------------------------------------------------------
3170 movz w3
, #65536, lsl #0
3173 movk w3
, #0, lsl #-1
3174 movn w2
, #-1, lsl #0
3176 movk w3
, #1, lsl #32
3177 movn x2
, #12, lsl #64
3178 // CHECK-ERROR
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3179 // CHECK-ERROR-NEXT
: movz w3
, #65536, lsl #0
3180 // CHECK-ERROR-NEXT
: ^
3181 // CHECK-ERROR-NEXT
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3182 // CHECK-ERROR-NEXT
: movz w4
, #65536
3183 // CHECK-ERROR-NEXT
: ^
3184 // CHECK-ERROR-AARCH64-NEXT
: error
: expected relocated symbol
or integer in range
[0, 65535]
3185 // CHECK-ERROR-ARM64-NEXT
: error
: expected
'lsl' with optional integer
0 or 16
3186 // CHECK-ERROR-NEXT
: movn w1
, #2, lsl #1
3187 // CHECK-ERROR-NEXT
: ^
3188 // CHECK-ERROR-AARCH64-NEXT
: error
: only
'lsl #+N' valid after immediate
3189 // CHECK-ERROR-ARM64-NEXT
: error
: expected integer shift amount
3190 // CHECK-ERROR-NEXT
: movk w3
, #0, lsl #-1
3191 // CHECK-ERROR-NEXT
: ^
3192 // CHECK-ERROR-NEXT
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3193 // CHECK-ERROR-NEXT
: movn w2
, #-1, lsl #0
3194 // CHECK-ERROR-NEXT
: ^
3195 // CHECK-ERROR-NEXT
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3196 // CHECK-ERROR-NEXT
: movz x3
, #-1
3197 // CHECK-ERROR-NEXT
: ^
3198 // CHECK-ERROR-AARCH64-NEXT
: error
: expected relocated symbol
or integer in range
[0, 65535]
3199 // CHECK-ERROR-ARM64-NEXT
: error
: expected
'lsl' with optional integer
0 or 16
3200 // CHECK-ERROR-NEXT
: movk w3
, #1, lsl #32
3201 // CHECK-ERROR-NEXT
: ^
3202 // CHECK-ERROR-AARCH64-NEXT
: error
: expected relocated symbol
or integer in range
[0, 65535]
3203 // CHECK-ERROR-ARM64-NEXT
: error
: expected
'lsl' with optional integer
0, 16, 32 or 48
3204 // CHECK-ERROR-NEXT
: movn x2
, #12, lsl #64
3205 // CHECK-ERROR-NEXT
: ^
3207 movz x12
, #:abs_g0:sym, lsl #16
3208 movz x12
, #:abs_g0:sym, lsl #0
3209 movn x2
, #:abs_g0:sym
3210 movk w3
, #:abs_g0:sym
3211 movz x3
, #:abs_g0_nc:sym
3212 movn x4
, #:abs_g0_nc:sym
3213 // CHECK-ERROR
: error
: invalid operand for instruction
3214 // CHECK-ERROR-NEXT
: movz x12
, #:abs_g0:sym, lsl #16
3215 // CHECK-ERROR-NEXT
: ^
3216 // CHECK-ERROR
: error
: invalid operand for instruction
3217 // CHECK-ERROR-NEXT
: movz x12
, #:abs_g0:sym, lsl #0
3218 // CHECK-ERROR-NEXT
: ^
3220 movn x2
, #:abs_g1:sym
3221 movk w3
, #:abs_g1:sym
3222 movz x3
, #:abs_g1_nc:sym
3223 movn x4
, #:abs_g1_nc:sym
3225 movz w12
, #:abs_g2:sym
3226 movn x12
, #:abs_g2:sym
3227 movk x13
, #:abs_g2:sym
3228 movk w3
, #:abs_g2_nc:sym
3229 movz x13
, #:abs_g2_nc:sym
3230 movn x24
, #:abs_g2_nc:sym
3231 // CHECK-ERROR
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3232 // CHECK-ERROR-NEXT
: movz w12
, #:abs_g2:sym
3233 // CHECK-ERROR-NEXT
: ^
3234 // CHECK-ERROR-NEXT
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3235 // CHECK-ERROR-NEXT
: movk w3
, #:abs_g2_nc:sym
3236 // CHECK-ERROR-NEXT
: ^
3238 movn x19
, #:abs_g3:sym
3239 movz w20
, #:abs_g3:sym
3240 movk w21
, #:abs_g3:sym
3241 // CHECK-ERROR-NEXT
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3242 // CHECK-ERROR-NEXT
: movz w20
, #:abs_g3:sym
3243 // CHECK-ERROR-NEXT
: ^
3244 // CHECK-ERROR-NEXT
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3245 // CHECK-ERROR-NEXT
: movk w21
, #:abs_g3:sym
3246 // CHECK-ERROR-NEXT
: ^
3248 movk x19
, #:abs_g0_s:sym
3249 movk w23
, #:abs_g0_s:sym
3251 movk x19
, #:abs_g1_s:sym
3252 movk w23
, #:abs_g1_s:sym
3254 movz w2
, #:abs_g2_s:sym
3255 movn w29
, #:abs_g2_s:sym
3256 movk x19
, #:abs_g2_s:sym
3257 movk w23
, #:abs_g2_s:sym
3258 // CHECK-ERROR
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3259 // CHECK-ERROR-NEXT
: movz w2
, #:abs_g2_s:sym
3260 // CHECK-ERROR-NEXT
: ^
3261 // CHECK-ERROR-NEXT
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3262 // CHECK-ERROR-NEXT
: movn w29
, #:abs_g2_s:sym
3263 // CHECK-ERROR-NEXT
: ^
3264 // CHECK-ERROR-NEXT
: error
: {{expected relocated symbol
or|immediate must
be an
}} integer in range
[0, 65535]
3265 // CHECK-ERROR-NEXT
: movk w23
, #:abs_g2_s:sym
3266 // CHECK-ERROR-NEXT
: ^
3268 //------------------------------------------------------------------------------
3269 // PC-relative addressing
3270 //------------------------------------------------------------------------------
3272 adr sp
, loc
// expects xzr
3273 adr x0
, :got
:loc
// bad relocation type
3275 adrp x3
, #20 // Immediate unaligned
3276 adrp w2
, loc
// 64-bit register needed
3277 adrp x5
, :got_lo12
:loc
// bad relocation type
3278 // CHECK-ERROR
: error
: invalid operand for instruction
3279 // CHECK-ERROR-NEXT
: adr sp
, loc
3280 // CHECK-ERROR-NEXT
: ^
3281 // CHECK-ERROR-NEXT
: error
: unexpected adr label
3282 // CHECK-ERROR-NEXT
: adr x0
, :got
:loc
3283 // CHECK-ERROR-NEXT
: ^
3284 // CHECK-ERROR-NEXT
: error
: unexpected adr label
3285 // CHECK-ERROR-NEXT
: adr x1
, :lo12
:loc
3286 // CHECK-ERROR-NEXT
: ^
3287 // CHECK-ERROR-NEXT
: error
: expected label
or encodable integer pc offset
3288 // CHECK-ERROR-NEXT
: adrp x3
, #20
3289 // CHECK-ERROR-NEXT
: ^
3290 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
3291 // CHECK-ERROR-NEXT
: adrp w2
, loc
3292 // CHECK-ERROR-NEXT
: ^
3293 // CHECK-ERROR-NEXT
: error
: page
or gotpage label reference expected
3294 // CHECK-ERROR-NEXT
: adrp x5
, :got_lo12
:loc
3295 // CHECK-ERROR-NEXT
: ^
3299 adrp x9
, #4294967296
3300 adrp x20
, #-4294971392
3301 // CHECK-ERROR
: error
: expected label
or encodable integer pc offset
3302 // CHECK-ERROR-NEXT
: adr x9
, #1048576
3303 // CHECK-ERROR-NEXT
: ^
3304 // CHECK-ERROR-NEXT
: error
: expected label
or encodable integer pc offset
3305 // CHECK-ERROR-NEXT
: adr x2
, #-1048577
3306 // CHECK-ERROR-NEXT
: ^
3307 // CHECK-ERROR-NEXT
: error
: expected label
or encodable integer pc offset
3308 // CHECK-ERROR-NEXT
: adrp x9
, #4294967296
3309 // CHECK-ERROR-NEXT
: ^
3310 // CHECK-ERROR-NEXT
: error
: expected label
or encodable integer pc offset
3311 // CHECK-ERROR-NEXT
: adrp x20
, #-4294971392
3312 // CHECK-ERROR-NEXT
: ^
3314 //------------------------------------------------------------------------------
3316 //------------------------------------------------------------------------------
3320 // CHECK-ERROR
: error
: {{expected|immediate must
be an
}} integer in range
[0, 127]
3321 // CHECK-ERROR-NEXT
: hint
#-1
3322 // CHECK-ERROR-NEXT
: ^
3323 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 127]
3324 // CHECK-ERROR-NEXT
: hint
#128
3325 // CHECK-ERROR-NEXT
: ^
3329 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 15]
3330 // CHECK-ERROR-NEXT
: clrex
#-1
3331 // CHECK-ERROR-NEXT
: ^
3332 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 15]
3333 // CHECK-ERROR-NEXT
: clrex
#16
3334 // CHECK-ERROR-NEXT
: ^
3342 // CHECK-ERROR-NEXT
: error
: {{Invalid immediate for instruction|barrier operand out of range
}}
3343 // CHECK-ERROR-NEXT
: dsb
#-1
3344 // CHECK-ERROR-NEXT
: ^
3345 // CHECK-ERROR-NEXT
: error
: {{Invalid immediate for instruction|barrier operand out of range
}}
3346 // CHECK-ERROR-NEXT
: dsb
#16
3347 // CHECK-ERROR-NEXT
: ^
3348 // CHECK-ERROR-NEXT
: error
: invalid barrier option name
3349 // CHECK-ERROR-NEXT
: dsb foo
3350 // CHECK-ERROR-NEXT
: ^
3351 // CHECK-ERROR-NEXT
: error
: {{Invalid immediate for instruction|barrier operand out of range
}}
3352 // CHECK-ERROR-NEXT
: dmb
#-1
3353 // CHECK-ERROR-NEXT
: ^
3354 // CHECK-ERROR-NEXT
: error
: {{Invalid immediate for instruction|barrier operand out of range
}}
3355 // CHECK-ERROR-NEXT
: dmb
#16
3356 // CHECK-ERROR-NEXT
: ^
3357 // CHECK-ERROR-NEXT
: error
: invalid barrier option name
3358 // CHECK-ERROR-NEXT
: dmb foo
3359 // CHECK-ERROR-NEXT
: ^
3364 // CHECK-ERROR-NEXT
: error
: {{Invalid immediate for instruction|barrier operand out of range
}}
3365 // CHECK-ERROR-NEXT
: isb
#-1
3366 // CHECK-ERROR-NEXT
: ^
3367 // CHECK-ERROR-NEXT
: error
: {{Invalid immediate for instruction|barrier operand out of range
}}
3368 // CHECK-ERROR-NEXT
: isb
#16
3369 // CHECK-ERROR-NEXT
: ^
3370 // CHECK-ERROR-NEXT
: error
: 'sy' or #imm operand expected
3371 // CHECK-ERROR-NEXT
: isb foo
3372 // CHECK-ERROR-NEXT
: ^
3378 // CHECK-ERROR
: [[@LINE-
4]]:22: error
: {{expected|immediate must
be an
}} integer in range
[0, 15]
3379 // CHECK-ERROR
: [[@LINE-
4]]:20: error
: {{expected|immediate must
be an
}} integer in range
[0, 15]
3380 // CHECK-ERROR
: [[@LINE-
4]]:{{9|
19}}: error
: {{too few operands for instruction|expected comma before next operand|unexpected token in argument list
}}
3381 // CHECK-ERROR
: [[@LINE-
4]]:22: error
: {{expected|immediate must
be an
}} integer in range
[0, 15]
3383 sys
#8, c1, c2, #7, x9
3384 sys
#3, c16, c2, #3, x10
3385 sys
#2, c11, c16, #5
3386 sys
#4, c9, c8, #8, xzr
3387 sysl x11
, #8, c1, c2, #7
3388 sysl x13
, #3, c16, c2, #3
3389 sysl x9
, #2, c11, c16, #5
3390 sysl x4
, #4, c9, c8, #8
3391 // CHECK-ERROR
: error
: {{expected|immediate must
be an
}} integer in range
[0, 7]
3392 // CHECK-ERROR-NEXT
: sys
#8, c1, c2, #7, x9
3393 // CHECK-ERROR-NEXT
: ^
3394 // CHECK-ERROR-NEXT
: error
: Expected cN operand where
0 <= N
<= 15
3395 // CHECK-ERROR-NEXT
: sys
#3, c16, c2, #3, x10
3396 // CHECK-ERROR-NEXT
: ^
3397 // CHECK-ERROR-NEXT
: error
: Expected cN operand where
0 <= N
<= 15
3398 // CHECK-ERROR-NEXT
: sys
#2, c11, c16, #5
3399 // CHECK-ERROR-NEXT
: ^
3400 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 7]
3401 // CHECK-ERROR-NEXT
: sys
#4, c9, c8, #8, xzr
3402 // CHECK-ERROR-NEXT
: ^
3403 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 7]
3404 // CHECK-ERROR-NEXT
: sysl x11
, #8, c1, c2, #7
3405 // CHECK-ERROR-NEXT
: ^
3406 // CHECK-ERROR-NEXT
: error
: Expected cN operand where
0 <= N
<= 15
3407 // CHECK-ERROR-NEXT
: sysl x13
, #3, c16, c2, #3
3408 // CHECK-ERROR-NEXT
: ^
3409 // CHECK-ERROR-NEXT
: error
: Expected cN operand where
0 <= N
<= 15
3410 // CHECK-ERROR-NEXT
: sysl x9
, #2, c11, c16, #5
3411 // CHECK-ERROR-NEXT
: ^
3412 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 7]
3413 // CHECK-ERROR-NEXT
: sysl x4
, #4, c9, c8, #8
3414 // CHECK-ERROR-NEXT
: ^
3419 // CHECK-ERROR-NEXT
: error
: specified
{{IC|ic
}} op does
not use
a register
3420 // CHECK-ERROR-NEXT
: ic ialluis
, x2
3421 // CHECK-ERROR-NEXT
: ^
3422 // CHECK-ERROR-AARCH64-NEXT
: error
: operand specifier
not recognised
3423 // CHECK-ERROR-ARM64-NEXT
: error
: invalid operand for IC instruction
3424 // CHECK-ERROR-NEXT
: ic allu
, x7
3425 // CHECK-ERROR-NEXT
: ^
3426 // CHECK-ERROR-NEXT
: error
: specified
{{IC|ic
}} op requires
a register
3427 // CHECK-ERROR-NEXT
: ic ivau
3428 // CHECK-ERROR-NEXT
: ^
3444 tlbi VMALLS12E1IS
, xzr
3460 tlbi VMALLS12E1
, x15
3462 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3463 // CHECK-ERROR-NEXT
: tlbi IPAS2E1IS
3464 // CHECK-ERROR-NEXT
: ^
3465 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3466 // CHECK-ERROR-NEXT
: tlbi IPAS2LE1IS
3467 // CHECK-ERROR-NEXT
: ^
3468 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3469 // CHECK-ERROR-NEXT
: tlbi VMALLE1IS
, x12
3470 // CHECK-ERROR-NEXT
: ^
3471 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3472 // CHECK-ERROR-NEXT
: tlbi ALLE2IS
, x11
3473 // CHECK-ERROR-NEXT
: ^
3474 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3475 // CHECK-ERROR-NEXT
: tlbi ALLE3IS
, x20
3476 // CHECK-ERROR-NEXT
: ^
3477 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3478 // CHECK-ERROR-NEXT
: tlbi VAE1IS
3479 // CHECK-ERROR-NEXT
: ^
3480 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3481 // CHECK-ERROR-NEXT
: tlbi VAE2IS
3482 // CHECK-ERROR-NEXT
: ^
3483 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3484 // CHECK-ERROR-NEXT
: tlbi VAE3IS
3485 // CHECK-ERROR-NEXT
: ^
3486 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3487 // CHECK-ERROR-NEXT
: tlbi ASIDE1IS
3488 // CHECK-ERROR-NEXT
: ^
3489 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3490 // CHECK-ERROR-NEXT
: tlbi VAAE1IS
3491 // CHECK-ERROR-NEXT
: ^
3492 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3493 // CHECK-ERROR-NEXT
: tlbi ALLE1IS
, x0
3494 // CHECK-ERROR-NEXT
: ^
3495 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3496 // CHECK-ERROR-NEXT
: tlbi VALE1IS
3497 // CHECK-ERROR-NEXT
: ^
3498 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3499 // CHECK-ERROR-NEXT
: tlbi VALE2IS
3500 // CHECK-ERROR-NEXT
: ^
3501 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3502 // CHECK-ERROR-NEXT
: tlbi VALE3IS
3503 // CHECK-ERROR-NEXT
: ^
3504 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3505 // CHECK-ERROR-NEXT
: tlbi VMALLS12E1IS
, xzr
3506 // CHECK-ERROR-NEXT
: ^
3507 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3508 // CHECK-ERROR-NEXT
: tlbi VAALE1IS
3509 // CHECK-ERROR-NEXT
: ^
3510 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3511 // CHECK-ERROR-NEXT
: tlbi IPAS2E1
3512 // CHECK-ERROR-NEXT
: ^
3513 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3514 // CHECK-ERROR-NEXT
: tlbi IPAS2LE1
3515 // CHECK-ERROR-NEXT
: ^
3516 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3517 // CHECK-ERROR-NEXT
: tlbi VMALLE1
, x9
3518 // CHECK-ERROR-NEXT
: ^
3519 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3520 // CHECK-ERROR-NEXT
: tlbi ALLE2
, x10
3521 // CHECK-ERROR-NEXT
: ^
3522 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3523 // CHECK-ERROR-NEXT
: tlbi ALLE3
, x11
3524 // CHECK-ERROR-NEXT
: ^
3525 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3526 // CHECK-ERROR-NEXT
: tlbi VAE1
3527 // CHECK-ERROR-NEXT
: ^
3528 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3529 // CHECK-ERROR-NEXT
: tlbi VAE2
3530 // CHECK-ERROR-NEXT
: ^
3531 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3532 // CHECK-ERROR-NEXT
: tlbi VAE3
3533 // CHECK-ERROR-NEXT
: ^
3534 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3535 // CHECK-ERROR-NEXT
: tlbi ASIDE1
3536 // CHECK-ERROR-NEXT
: ^
3537 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3538 // CHECK-ERROR-NEXT
: tlbi VAAE1
3539 // CHECK-ERROR-NEXT
: ^
3540 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3541 // CHECK-ERROR-NEXT
: tlbi ALLE1
, x25
3542 // CHECK-ERROR-NEXT
: ^
3543 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3544 // CHECK-ERROR-NEXT
: tlbi VALE1
3545 // CHECK-ERROR-NEXT
: ^
3546 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3547 // CHECK-ERROR-NEXT
: tlbi VALE2
3548 // CHECK-ERROR-NEXT
: ^
3549 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3550 // CHECK-ERROR-NEXT
: tlbi VALE3
3551 // CHECK-ERROR-NEXT
: ^
3552 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op does
not use
a register
3553 // CHECK-ERROR-NEXT
: tlbi VMALLS12E1
, x15
3554 // CHECK-ERROR-NEXT
: ^
3555 // CHECK-ERROR-NEXT
: error
: specified
{{TLBI|
tlbi}} op requires
a register
3556 // CHECK-ERROR-NEXT
: tlbi VAALE1
3557 // CHECK-ERROR-NEXT
: ^
3559 // For the
MSR/MRS instructions
, first make sure read-only
and
3560 // write-only registers actually are.
3562 msr DBGDTRRX_EL0
, x12
3565 msr DBGAUTHSTATUS_EL1
, x12
3569 msr CCSIDR2_EL1
, x12
3575 msr ID_PFR0_EL1
, x12
3576 msr ID_PFR1_EL1
, x12
3577 msr ID_DFR0_EL1
, x12
3578 msr ID_AFR0_EL1
, x12
3579 msr ID_MMFR0_EL1
, x12
3580 msr ID_MMFR1_EL1
, x12
3581 msr ID_MMFR2_EL1
, x12
3582 msr ID_MMFR3_EL1
, x12
3583 msr ID_MMFR4_EL1
, x12
3584 msr ID_ISAR0_EL1
, x12
3585 msr ID_ISAR1_EL1
, x12
3586 msr ID_ISAR2_EL1
, x12
3587 msr ID_ISAR3_EL1
, x12
3588 msr ID_ISAR4_EL1
, x12
3589 msr ID_ISAR5_EL1
, x12
3593 msr ID_AA64PFR0_EL1
, x12
3594 msr ID_AA64PFR1_EL1
, x12
3595 msr ID_AA64DFR0_EL1
, x12
3596 msr ID_AA64DFR1_EL1
, x12
3597 msr ID_AA64AFR0_EL1
, x12
3598 msr ID_AA64AFR1_EL1
, x12
3599 msr ID_AA64ISAR0_EL1
, x12
3600 msr ID_AA64ISAR1_EL1
, x12
3601 msr ID_AA64MMFR0_EL1
, x12
3602 msr ID_AA64MMFR1_EL1
, x12
3603 msr PMCEID0_EL0
, x12
3604 msr PMCEID1_EL0
, x12
3611 msr PMEVCNTR31_EL0
, x12
3612 msr PMEVTYPER31_EL0
, x12
3613 // CHECK-ERROR
: error
: expected writable system register
or pstate
3614 // CHECK-ERROR-NEXT
: msr MDCCSR_EL0
, x12
3615 // CHECK-ERROR-NEXT
: ^
3616 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3617 // CHECK-ERROR-NEXT
: msr DBGDTRRX_EL0
, x12
3618 // CHECK-ERROR-NEXT
: ^
3619 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3620 // CHECK-ERROR-NEXT
: msr MDRAR_EL1
, x12
3621 // CHECK-ERROR-NEXT
: ^
3622 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3623 // CHECK-ERROR-NEXT
: msr OSLSR_EL1
, x12
3624 // CHECK-ERROR-NEXT
: ^
3625 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3626 // CHECK-ERROR-NEXT
: msr DBGAUTHSTATUS_EL1
, x12
3627 // CHECK-ERROR-NEXT
: ^
3628 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3629 // CHECK-ERROR-NEXT
: msr MIDR_EL1
, x12
3630 // CHECK-ERROR-NEXT
: ^
3631 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3632 // CHECK-ERROR-NEXT
: msr CCSIDR_EL1
, x12
3633 // CHECK-ERROR-NEXT
: ^
3634 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3635 // CHECK-ERROR-NEXT
: msr CLIDR_EL1
, x12
3636 // CHECK-ERROR-NEXT
: ^
3637 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3638 // CHECK-ERROR-NEXT
: msr CCSIDR2_EL1
, x12
3639 // CHECK-ERROR-NEXT
: ^
3640 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3641 // CHECK-ERROR-NEXT
: msr CTR_EL0
, x12
3642 // CHECK-ERROR-NEXT
: ^
3643 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3644 // CHECK-ERROR-NEXT
: msr MPIDR_EL1
, x12
3645 // CHECK-ERROR-NEXT
: ^
3646 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3647 // CHECK-ERROR-NEXT
: msr REVIDR_EL1
, x12
3648 // CHECK-ERROR-NEXT
: ^
3649 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3650 // CHECK-ERROR-NEXT
: msr AIDR_EL1
, x12
3651 // CHECK-ERROR-NEXT
: ^
3652 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3653 // CHECK-ERROR-NEXT
: msr DCZID_EL0
, x12
3654 // CHECK-ERROR-NEXT
: ^
3655 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3656 // CHECK-ERROR-NEXT
: msr ID_PFR0_EL1
, x12
3657 // CHECK-ERROR-NEXT
: ^
3658 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3659 // CHECK-ERROR-NEXT
: msr ID_PFR1_EL1
, x12
3660 // CHECK-ERROR-NEXT
: ^
3661 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3662 // CHECK-ERROR-NEXT
: msr ID_DFR0_EL1
, x12
3663 // CHECK-ERROR-NEXT
: ^
3664 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3665 // CHECK-ERROR-NEXT
: msr ID_AFR0_EL1
, x12
3666 // CHECK-ERROR-NEXT
: ^
3667 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3668 // CHECK-ERROR-NEXT
: msr ID_MMFR0_EL1
, x12
3669 // CHECK-ERROR-NEXT
: ^
3670 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3671 // CHECK-ERROR-NEXT
: msr ID_MMFR1_EL1
, x12
3672 // CHECK-ERROR-NEXT
: ^
3673 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3674 // CHECK-ERROR-NEXT
: msr ID_MMFR2_EL1
, x12
3675 // CHECK-ERROR-NEXT
: ^
3676 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3677 // CHECK-ERROR-NEXT
: msr ID_MMFR3_EL1
, x12
3678 // CHECK-ERROR-NEXT
: ^
3679 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3680 // CHECK-ERROR-NEXT
: msr ID_MMFR4_EL1
, x12
3681 // CHECK-ERROR-NEXT
: ^
3682 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3683 // CHECK-ERROR-NEXT
: msr ID_ISAR0_EL1
, x12
3684 // CHECK-ERROR-NEXT
: ^
3685 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3686 // CHECK-ERROR-NEXT
: msr ID_ISAR1_EL1
, x12
3687 // CHECK-ERROR-NEXT
: ^
3688 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3689 // CHECK-ERROR-NEXT
: msr ID_ISAR2_EL1
, x12
3690 // CHECK-ERROR-NEXT
: ^
3691 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3692 // CHECK-ERROR-NEXT
: msr ID_ISAR3_EL1
, x12
3693 // CHECK-ERROR-NEXT
: ^
3694 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3695 // CHECK-ERROR-NEXT
: msr ID_ISAR4_EL1
, x12
3696 // CHECK-ERROR-NEXT
: ^
3697 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3698 // CHECK-ERROR-NEXT
: msr ID_ISAR5_EL1
, x12
3699 // CHECK-ERROR-NEXT
: ^
3700 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3701 // CHECK-ERROR-NEXT
: msr MVFR0_EL1
, x12
3702 // CHECK-ERROR-NEXT
: ^
3703 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3704 // CHECK-ERROR-NEXT
: msr MVFR1_EL1
, x12
3705 // CHECK-ERROR-NEXT
: ^
3706 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3707 // CHECK-ERROR-NEXT
: msr MVFR2_EL1
, x12
3708 // CHECK-ERROR-NEXT
: ^
3709 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3710 // CHECK-ERROR-NEXT
: msr ID_AA64PFR0_EL1
, x12
3711 // CHECK-ERROR-NEXT
: ^
3712 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3713 // CHECK-ERROR-NEXT
: msr ID_AA64PFR1_EL1
, x12
3714 // CHECK-ERROR-NEXT
: ^
3715 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3716 // CHECK-ERROR-NEXT
: msr ID_AA64DFR0_EL1
, x12
3717 // CHECK-ERROR-NEXT
: ^
3718 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3719 // CHECK-ERROR-NEXT
: msr ID_AA64DFR1_EL1
, x12
3720 // CHECK-ERROR-NEXT
: ^
3721 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3722 // CHECK-ERROR-NEXT
: msr ID_AA64AFR0_EL1
, x12
3723 // CHECK-ERROR-NEXT
: ^
3724 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3725 // CHECK-ERROR-NEXT
: msr ID_AA64AFR1_EL1
, x12
3726 // CHECK-ERROR-NEXT
: ^
3727 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3728 // CHECK-ERROR-NEXT
: msr ID_AA64ISAR0_EL1
, x12
3729 // CHECK-ERROR-NEXT
: ^
3730 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3731 // CHECK-ERROR-NEXT
: msr ID_AA64ISAR1_EL1
, x12
3732 // CHECK-ERROR-NEXT
: ^
3733 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3734 // CHECK-ERROR-NEXT
: msr ID_AA64MMFR0_EL1
, x12
3735 // CHECK-ERROR-NEXT
: ^
3736 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3737 // CHECK-ERROR-NEXT
: msr ID_AA64MMFR1_EL1
, x12
3738 // CHECK-ERROR-NEXT
: ^
3739 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3740 // CHECK-ERROR-NEXT
: msr PMCEID0_EL0
, x12
3741 // CHECK-ERROR-NEXT
: ^
3742 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3743 // CHECK-ERROR-NEXT
: msr PMCEID1_EL0
, x12
3744 // CHECK-ERROR-NEXT
: ^
3745 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3746 // CHECK-ERROR-NEXT
: msr RVBAR_EL1
, x12
3747 // CHECK-ERROR-NEXT
: ^
3748 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3749 // CHECK-ERROR-NEXT
: msr RVBAR_EL2
, x12
3750 // CHECK-ERROR-NEXT
: ^
3751 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3752 // CHECK-ERROR-NEXT
: msr RVBAR_EL3
, x12
3753 // CHECK-ERROR-NEXT
: ^
3754 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3755 // CHECK-ERROR-NEXT
: msr ISR_EL1
, x12
3756 // CHECK-ERROR-NEXT
: ^
3757 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3758 // CHECK-ERROR-NEXT
: msr CNTPCT_EL0
, x12
3759 // CHECK-ERROR-NEXT
: ^
3760 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3761 // CHECK-ERROR-NEXT
: msr CNTVCT_EL0
, x12
3762 // CHECK-ERROR-NEXT
: ^
3763 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3764 // CHECK-ERROR-NEXT
: msr PMEVCNTR31_EL0
, x12
3765 // CHECK-ERROR-NEXT
: ^
3766 // CHECK-ERROR-NEXT
: error
: expected writable system register
or pstate
3767 // CHECK-ERROR-NEXT
: msr PMEVTYPER31_EL0
, x12
3768 // CHECK-ERROR-NEXT
: ^
3770 mrs x9
, DBGDTRTX_EL0
3773 mrs x9
, PMEVCNTR31_EL0
3774 mrs x9
, PMEVTYPER31_EL0
3775 // CHECK-ERROR
: error
: expected readable system register
3776 // CHECK-ERROR-NEXT
: mrs x9
, DBGDTRTX_EL0
3777 // CHECK-ERROR-NEXT
: ^
3778 // CHECK-ERROR-NEXT
: error
: expected readable system register
3779 // CHECK-ERROR-NEXT
: mrs x9
, OSLAR_EL1
3780 // CHECK-ERROR-NEXT
: ^
3781 // CHECK-ERROR-NEXT
: error
: expected readable system register
3782 // CHECK-ERROR-NEXT
: mrs x9
, PMSWINC_EL0
3783 // CHECK-ERROR-NEXT
: ^
3784 // CHECK-ERROR-NEXT
: error
: expected readable system register
3785 // CHECK-ERROR-NEXT
: mrs x9
, PMEVCNTR31_EL0
3786 // CHECK-ERROR-NEXT
: ^
3787 // CHECK-ERROR-NEXT
: error
: expected readable system register
3788 // CHECK-ERROR-NEXT
: mrs x9
, PMEVTYPER31_EL0
3789 // CHECK-ERROR-NEXT
: ^
3791 // Now check some invalid generic names
3792 mrs x12
, s3_8_c11_c13_2
3793 mrs x19
, s3_2_c15_c16_2
3794 mrs x30
, s3_2_c15_c1_8
3795 mrs x4
, s4_7_c15_c15_7
3796 mrs x14
, s3_7_c16_c15_7
3797 // CHECK-ERROR-NEXT
: error
: expected readable system register
3798 // CHECK-ERROR-NEXT
: mrs x12
, s3_8_c11_c13_2
3799 // CHECK-ERROR-NEXT
: ^
3800 // CHECK-ERROR-NEXT
: error
: expected readable system register
3801 // CHECK-ERROR-NEXT
: mrs x19
, s3_2_c15_c16_2
3802 // CHECK-ERROR-NEXT
: ^
3803 // CHECK-ERROR-NEXT
: error
: expected readable system register
3804 // CHECK-ERROR-NEXT
: mrs x30
, s3_2_c15_c1_8
3805 // CHECK-ERROR-NEXT
: ^
3806 // CHECK-ERROR-NEXT
: error
: expected readable system register
3807 // CHECK-ERROR-NEXT
: mrs x4
, s4_7_c15_c15_7
3808 // CHECK-ERROR-NEXT
: ^
3809 // CHECK-ERROR-NEXT
: error
: expected readable system register
3810 // CHECK-ERROR-NEXT
: mrs x14
, s3_7_c16_c15_7
3811 // CHECK-ERROR-NEXT
: ^
3813 //------------------------------------------------------------------------------
3814 // Test
and branch
(immediate
)
3815 //------------------------------------------------------------------------------
3818 tbz w3
, #32, nowhere
3821 // CHECK-ERROR
: error
: {{expected|immediate must
be an
}} integer in range
[0, 31]
3822 // CHECK-ERROR-NEXT
: tbz w3
, #-1, addr
3823 // CHECK-ERROR-NEXT
: ^
3824 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 31]
3825 // CHECK-ERROR-NEXT
: tbz w3
, #32, nowhere
3826 // CHECK-ERROR-NEXT
: ^
3827 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 63]
3828 // CHECK-ERROR-NEXT
: tbz x9
, #-1, there
3829 // CHECK-ERROR-NEXT
: ^
3830 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 63]
3831 // CHECK-ERROR-NEXT
: tbz x20
, #64, dont
3832 // CHECK-ERROR-NEXT
: ^
3835 tbnz w3
, #32, nowhere
3838 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 31]
3839 // CHECK-ERROR-NEXT
: tbnz w3
, #-1, addr
3840 // CHECK-ERROR-NEXT
: ^
3841 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 31]
3842 // CHECK-ERROR-NEXT
: tbnz w3
, #32, nowhere
3843 // CHECK-ERROR-NEXT
: ^
3844 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 63]
3845 // CHECK-ERROR-NEXT
: tbnz x9
, #-1, there
3846 // CHECK-ERROR-NEXT
: ^
3847 // CHECK-ERROR-NEXT
: error
: {{expected|immediate must
be an
}} integer in range
[0, 63]
3848 // CHECK-ERROR-NEXT
: tbnz x20
, #64, dont
3850 //------------------------------------------------------------------------------
3851 // Unconditional branch
(immediate
)
3852 //------------------------------------------------------------------------------
3857 // CHECK-ERROR
: error
: expected label
or encodable integer pc offset
3858 // CHECK-ERROR-NEXT
: b #134217728
3859 // CHECK-ERROR-NEXT
: ^
3860 // CHECK-ERROR-NEXT
: error
: expected label
or encodable integer pc offset
3861 // CHECK-ERROR-NEXT
: b #-134217732
3862 // CHECK-ERROR-NEXT
: ^
3863 // CHECK-ERROR-NEXT
: error
: expected label
or encodable integer pc offset
3864 // CHECK-ERROR-NEXT
: b #1
3865 // CHECK-ERROR-NEXT
: ^
3867 //------------------------------------------------------------------------------
3868 // Unconditional branch
(register
)
3869 //------------------------------------------------------------------------------
3873 // CHECK-ERROR
: error
: invalid operand for instruction
3874 // CHECK-ERROR-NEXT
: br w2
3875 // CHECK-ERROR-NEXT
: ^
3876 // CHECK-ERROR-NEXT
: error
: invalid operand for instruction
3877 // CHECK-ERROR-NEXT
: br sp
3878 // CHECK-ERROR-NEXT
: ^
3880 //// These ones shouldn
't allow any registers
3883 // CHECK-ERROR: error: invalid operand for instruction
3884 // CHECK-ERROR-NEXT: eret x2
3885 // CHECK-ERROR-NEXT: ^
3886 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3887 // CHECK-ERROR-NEXT: drps x2
3888 // CHECK-ERROR-NEXT: ^