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
12 // CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
13 // CHECK-ERROR: add x2, x3, x5, sxtb
15 // CHECK-ERROR: error: expected '[su]xt[bhw]' or 'lsl' with optional integer in range [0, 4]
16 // CHECK-ERROR: add x2, x4, w2, uxtx
18 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
19 // CHECK-ERROR: add w5, w7, x9, sxtx
22 // Out of range extends
23 add x9, x10, w11, uxtb #-1
24 add x3, x5, w7, uxtb #5
25 sub x9, x15, x2, uxth #5
26 // CHECK-ERROR: error: expected integer shift amount
27 // CHECK-ERROR: add x9, x10, w11, uxtb #-1
29 // CHECK-ERROR: error: expected '[su]xt[bhw]' or 'lsl' with optional integer in range [0, 4]
30 // CHECK-ERROR: add x3, x5, w7, uxtb #5
32 // CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
33 // CHECK-ERROR: sub x9, x15, x2, uxth #5
36 // Wrong registers on normal variants
38 sub x3, xzr, w9, sxth #1
40 // CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
41 // CHECK-ERROR: add xzr, x3, x5, uxtx
43 // CHECK-ERROR: error: invalid operand for instruction
44 // CHECK-ERROR: sub x3, xzr, w9, sxth #1
46 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
47 // CHECK-ERROR: add x1, x2, sp, uxtx
50 // Wrong registers on flag-setting variants
52 adds x3, xzr, x9, uxtx
54 adds x2, x1, sp, uxtb #2
55 // CHECK-ERROR: error: invalid operand for instruction
56 // CHECK-ERROR: adds sp, x3, w2, uxtb
58 // CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
59 // CHECK-ERROR: adds x3, xzr, x9, uxtx
61 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
62 // CHECK-ERROR: subs x2, x1, sp, uxtx
64 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
65 // CHECK-ERROR: adds x2, x1, sp, uxtb #2
68 // Amount not optional if lsl valid and used
70 // CHECK-ERROR: error: expected #imm after shift specifier
71 // CHECK-ERROR: add sp, x5, x7, lsl
74 //------------------------------------------------------------------------------
75 // Add/sub (immediate)
76 //------------------------------------------------------------------------------
78 // Out of range immediates: more than 12 bits
81 add w4, w5, #-4096, lsl #12
82 add w5, w6, #0x1000, lsl #12
83 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
84 // CHECK-ERROR-NEXT: add w4, w5, #-4096
85 // CHECK-ERROR-NEXT: ^
86 // CHECK-ERROR-AARCH64-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
87 // CHECK-ERROR-AARCH64-NEXT: add w5, w6, #0x1000
88 // CHECK-ERROR-AARCH64-NEXT: ^
89 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
90 // CHECK-ERROR-NEXT: add w4, w5, #-4096, lsl #12
91 // CHECK-ERROR-NEXT: ^
92 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
93 // CHECK-ERROR-NEXT: add w5, w6, #0x1000, lsl #12
94 // CHECK-ERROR-NEXT: ^
96 // Only lsl #0 and lsl #12 are allowed
97 add w2, w3, #0x1, lsl #1
98 add w5, w17, #0xfff, lsl #13
99 add w17, w20, #0x1000, lsl #12
100 sub xsp, x34, #0x100, lsl #-1
101 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
102 // CHECK-ERROR-NEXT: add w2, w3, #0x1, lsl #1
103 // CHECK-ERROR-NEXT: ^
104 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
105 // CHECK-ERROR-NEXT: add w5, w17, #0xfff, lsl #13
106 // CHECK-ERROR-NEXT: ^
107 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
108 // CHECK-ERROR-NEXT: add w17, w20, #0x1000, lsl #12
109 // CHECK-ERROR-NEXT: ^
110 // CHECK-ERROR-NEXT: error: only 'lsl #+N' valid after immediate
111 // CHECK-ERROR-NEXT: sub xsp, x34, #0x100, lsl #-1
112 // CHECK-ERROR-NEXT: ^
114 // Incorrect registers (w31 doesn't exist at all, and 31 decodes to sp for these).
119 // CHECK-ERROR: error: invalid operand for instruction
120 // CHECK-ERROR-NEXT: add w31, w20, #1234
121 // CHECK-ERROR-NEXT: ^
122 // CHECK-ERROR-NEXT: error: invalid operand for instruction
123 // CHECK-ERROR-NEXT: add wzr, w20, #0x123
124 // CHECK-ERROR-NEXT: ^
125 // CHECK-ERROR-NEXT: error: invalid operand for instruction
126 // CHECK-ERROR-NEXT: add w20, wzr, #0x321
127 // CHECK-ERROR-NEXT: ^
128 // CHECK-ERROR-NEXT: error: invalid operand for instruction
129 // CHECK-ERROR-NEXT: add wzr, wzr, #0xfff
130 // CHECK-ERROR-NEXT: ^
132 // Mixed register classes
135 // CHECK-ERROR: error: invalid operand for instruction
136 // CHECK-ERROR-NEXT: add xsp, w2, #123
137 // CHECK-ERROR-NEXT: ^
138 // CHECK-ERROR-NEXT: error: invalid operand for instruction
139 // CHECK-ERROR-NEXT: sub w2, x30, #32
140 // CHECK-ERROR-NEXT: ^
142 // Out of range immediate
143 adds w0, w5, #0x10000
144 // CHECK-ERROR-AARCH64: error: expected compatible register, symbol or integer in range [0, 4095]
145 // CHECK-ERROR-AARCH64-NEXT: adds w0, w5, #0x10000
146 // CHECK-ERROR-AARCH64-NEXT: ^
148 // Wn|WSP should be in second place
150 // ...but wzr is the 31 destination
152 subs x5, xzr, #0x456, lsl #12
153 // CHECK-ERROR: error: invalid operand for instruction
154 // CHECK-ERROR-NEXT: adds w4, wzr, #0x123
155 // CHECK-ERROR-NEXT: ^
156 // CHECK-ERROR-NEXT: error: invalid operand for instruction
157 // CHECK-ERROR-NEXT: subs wsp, w5, #123
158 // CHECK-ERROR-NEXT: ^
159 // CHECK-ERROR-NEXT: error: invalid operand for instruction
160 // CHECK-ERROR-NEXT: subs x5, xzr, #0x456, lsl #12
161 // CHECK-ERROR-NEXT: ^
163 // MOV alias should not accept any fiddling
165 mov wsp, w27, #0xfff, lsl #12
166 // CHECK-ERROR: error: expected compatible register or logical immediate
167 // CHECK-ERROR-NEXT: mov x2, xsp, #123
168 // CHECK-ERROR-NEXT: ^
169 // CHECK-ERROR-NEXT: error: invalid operand for instruction
170 // CHECK-ERROR-NEXT: mov wsp, w27, #0xfff, lsl #12
171 // CHECK-ERROR-NEXT: ^
173 // A relocation should be provided for symbols
174 add x3, x9, #variable
175 add x3, x9, #variable-16
176 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
177 // CHECK-ERROR-NEXT: add x3, x9, #variable
178 // CHECK-ERROR-NEXT: ^
179 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
180 // CHECK-ERROR-NEXT: add x3, x9, #variable-16
181 // CHECK-ERROR-NEXT: ^
185 //------------------------------------------------------------------------------
186 // Add-subtract (shifted register)
187 //------------------------------------------------------------------------------
189 add wsp, w1, w2, lsr #3
190 add x4, sp, x9, asr #5
191 add x9, x10, x5, ror #3
192 // CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
193 // CHECK-ERROR-NEXT: add wsp, w1, w2, lsr #3
194 // CHECK-ERROR-NEXT: ^
195 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
196 // CHECK-ERROR-NEXT: add x4, sp, x9, asr #5
197 // CHECK-ERROR-NEXT: ^
198 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
199 // CHECK-ERROR-NEXT: add x9, x10, x5, ror #3
200 // CHECK-ERROR-NEXT: ^
202 add w1, w2, w3, lsl #-1
203 add w1, w2, w3, lsl #32
204 add w1, w2, w3, lsr #-1
205 add w1, w2, w3, lsr #32
206 add w1, w2, w3, asr #-1
207 add w1, w2, w3, asr #32
208 add x1, x2, x3, lsl #-1
209 add x1, x2, x3, lsl #64
210 add x1, x2, x3, lsr #-1
211 add x1, x2, x3, lsr #64
212 add x1, x2, x3, asr #-1
213 add x1, x2, x3, asr #64
214 // CHECK-ERROR: error: expected integer shift amount
215 // CHECK-ERROR-NEXT: add w1, w2, w3, lsl #-1
216 // CHECK-ERROR-NEXT: ^
217 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
218 // CHECK-ERROR-NEXT: add w1, w2, w3, lsl #32
219 // CHECK-ERROR-NEXT: ^
220 // CHECK-ERROR-NEXT: error: expected integer shift amount
221 // CHECK-ERROR-NEXT: add w1, w2, w3, lsr #-1
222 // CHECK-ERROR-NEXT: ^
223 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
224 // CHECK-ERROR-NEXT: add w1, w2, w3, lsr #32
225 // CHECK-ERROR-NEXT: ^
226 // CHECK-ERROR-NEXT: error: expected integer shift amount
227 // CHECK-ERROR-NEXT: add w1, w2, w3, asr #-1
228 // CHECK-ERROR-NEXT: ^
229 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
230 // CHECK-ERROR-NEXT: add w1, w2, w3, asr #32
231 // CHECK-ERROR-NEXT: ^
232 // CHECK-ERROR-NEXT: error: expected integer shift amount
233 // CHECK-ERROR-NEXT: add x1, x2, x3, lsl #-1
234 // CHECK-ERROR-NEXT: ^
235 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
236 // CHECK-ERROR-NEXT: add x1, x2, x3, lsl #64
237 // CHECK-ERROR-NEXT: ^
238 // CHECK-ERROR-NEXT: error: expected integer shift amount
239 // CHECK-ERROR-NEXT: add x1, x2, x3, lsr #-1
240 // CHECK-ERROR-NEXT: ^
241 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
242 // CHECK-ERROR-NEXT: add x1, x2, x3, lsr #64
243 // CHECK-ERROR-NEXT: ^
244 // CHECK-ERROR-NEXT: error: expected integer shift amount
245 // CHECK-ERROR-NEXT: add x1, x2, x3, asr #-1
246 // CHECK-ERROR-NEXT: ^
247 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
248 // CHECK-ERROR-NEXT: add x1, x2, x3, asr #64
249 // CHECK-ERROR-NEXT: ^
251 adds w1, w2, w3, lsl #-1
252 adds w1, w2, w3, lsl #32
253 adds w1, w2, w3, lsr #-1
254 adds w1, w2, w3, lsr #32
255 adds w1, w2, w3, asr #-1
256 adds w1, w2, w3, asr #32
257 adds x1, x2, x3, lsl #-1
258 adds x1, x2, x3, lsl #64
259 adds x1, x2, x3, lsr #-1
260 adds x1, x2, x3, lsr #64
261 adds x1, x2, x3, asr #-1
262 adds x1, x2, x3, asr #64
263 // CHECK-ERROR: error: expected integer shift amount
264 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #-1
265 // CHECK-ERROR-NEXT: ^
266 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
267 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #32
268 // CHECK-ERROR-NEXT: ^
269 // CHECK-ERROR-NEXT: error: expected integer shift amount
270 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #-1
271 // CHECK-ERROR-NEXT: ^
272 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
273 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #32
274 // CHECK-ERROR-NEXT: ^
275 // CHECK-ERROR-NEXT: error: expected integer shift amount
276 // CHECK-ERROR-NEXT: adds w1, w2, w3, asr #-1
277 // CHECK-ERROR-NEXT: ^
278 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
279 // CHECK-ERROR-NEXT: adds w1, w2, w3, asr #32
280 // CHECK-ERROR-NEXT: ^
281 // CHECK-ERROR-NEXT: error: expected integer shift amount
282 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #-1
283 // CHECK-ERROR-NEXT: ^
284 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
285 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #64
286 // CHECK-ERROR-NEXT: ^
287 // CHECK-ERROR-NEXT: error: expected integer shift amount
288 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #-1
289 // CHECK-ERROR-NEXT: ^
290 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
291 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #64
292 // CHECK-ERROR-NEXT: ^
293 // CHECK-ERROR-NEXT: error: expected integer shift amount
294 // CHECK-ERROR-NEXT: adds x1, x2, x3, asr #-1
295 // CHECK-ERROR-NEXT: ^
296 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
297 // CHECK-ERROR-NEXT: adds x1, x2, x3, asr #64
298 // CHECK-ERROR-NEXT: ^
300 sub w1, w2, w3, lsl #-1
301 sub w1, w2, w3, lsl #32
302 sub w1, w2, w3, lsr #-1
303 sub w1, w2, w3, lsr #32
304 sub w1, w2, w3, asr #-1
305 sub w1, w2, w3, asr #32
306 sub x1, x2, x3, lsl #-1
307 sub x1, x2, x3, lsl #64
308 sub x1, x2, x3, lsr #-1
309 sub x1, x2, x3, lsr #64
310 sub x1, x2, x3, asr #-1
311 sub x1, x2, x3, asr #64
312 // CHECK-ERROR: error: expected integer shift amount
313 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #-1
314 // CHECK-ERROR-NEXT: ^
315 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
316 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #32
317 // CHECK-ERROR-NEXT: ^
318 // CHECK-ERROR-NEXT: error: expected integer shift amount
319 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #-1
320 // CHECK-ERROR-NEXT: ^
321 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
322 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #32
323 // CHECK-ERROR-NEXT: ^
324 // CHECK-ERROR-NEXT: error: expected integer shift amount
325 // CHECK-ERROR-NEXT: sub w1, w2, w3, asr #-1
326 // CHECK-ERROR-NEXT: ^
327 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
328 // CHECK-ERROR-NEXT: sub w1, w2, w3, asr #32
329 // CHECK-ERROR-NEXT: ^
330 // CHECK-ERROR-NEXT: error: expected integer shift amount
331 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #-1
332 // CHECK-ERROR-NEXT: ^
333 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
334 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #64
335 // CHECK-ERROR-NEXT: ^
336 // CHECK-ERROR-NEXT: error: expected integer shift amount
337 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #-1
338 // CHECK-ERROR-NEXT: ^
339 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
340 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #64
341 // CHECK-ERROR-NEXT: ^
342 // CHECK-ERROR-NEXT: error: expected integer shift amount
343 // CHECK-ERROR-NEXT: sub x1, x2, x3, asr #-1
344 // CHECK-ERROR-NEXT: ^
345 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
346 // CHECK-ERROR-NEXT: sub x1, x2, x3, asr #64
347 // CHECK-ERROR-NEXT: ^
349 subs w1, w2, w3, lsl #-1
350 subs w1, w2, w3, lsl #32
351 subs w1, w2, w3, lsr #-1
352 subs w1, w2, w3, lsr #32
353 subs w1, w2, w3, asr #-1
354 subs w1, w2, w3, asr #32
355 subs x1, x2, x3, lsl #-1
356 subs x1, x2, x3, lsl #64
357 subs x1, x2, x3, lsr #-1
358 subs x1, x2, x3, lsr #64
359 subs x1, x2, x3, asr #-1
360 subs x1, x2, x3, asr #64
361 // CHECK-ERROR: error: expected integer shift amount
362 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #-1
363 // CHECK-ERROR-NEXT: ^
364 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
365 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #32
366 // CHECK-ERROR-NEXT: ^
367 // CHECK-ERROR-NEXT: error: expected integer shift amount
368 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #-1
369 // CHECK-ERROR-NEXT: ^
370 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
371 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #32
372 // CHECK-ERROR-NEXT: ^
373 // CHECK-ERROR-NEXT: error: expected integer shift amount
374 // CHECK-ERROR-NEXT: subs w1, w2, w3, asr #-1
375 // CHECK-ERROR-NEXT: ^
376 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
377 // CHECK-ERROR-NEXT: subs w1, w2, w3, asr #32
378 // CHECK-ERROR-NEXT: ^
379 // CHECK-ERROR-NEXT: error: expected integer shift amount
380 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #-1
381 // CHECK-ERROR-NEXT: ^
382 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
383 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #64
384 // CHECK-ERROR-NEXT: ^
385 // CHECK-ERROR-NEXT: error: expected integer shift amount
386 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #-1
387 // CHECK-ERROR-NEXT: ^
388 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
389 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #64
390 // CHECK-ERROR-NEXT: ^
391 // CHECK-ERROR-NEXT: error: expected integer shift amount
392 // CHECK-ERROR-NEXT: subs x1, x2, x3, asr #-1
393 // CHECK-ERROR-NEXT: ^
394 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
395 // CHECK-ERROR-NEXT: subs x1, x2, x3, asr #64
396 // CHECK-ERROR-NEXT: ^
400 cmn w11, w12, lsr #-1
401 cmn w11, w12, lsr #32
402 cmn w19, wzr, asr #-1
403 cmn wzr, wzr, asr #32
406 cmn x11, x12, lsr #-1
407 cmn x11, x12, lsr #64
408 cmn x19, xzr, asr #-1
409 cmn xzr, xzr, asr #64
410 // CHECK-ERROR: error: expected integer shift amount
411 // CHECK-ERROR-NEXT: cmn w9, w10, lsl #-1
412 // CHECK-ERROR-NEXT: ^
413 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
414 // CHECK-ERROR-NEXT: cmn w9, w10, lsl #32
415 // CHECK-ERROR-NEXT: ^
416 // CHECK-ERROR-NEXT: error: expected integer shift amount
417 // CHECK-ERROR-NEXT: cmn w11, w12, lsr #-1
418 // CHECK-ERROR-NEXT: ^
419 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
420 // CHECK-ERROR-NEXT: cmn w11, w12, lsr #32
421 // CHECK-ERROR-NEXT: ^
422 // CHECK-ERROR-NEXT: error: expected integer shift amount
423 // CHECK-ERROR-NEXT: cmn w19, wzr, asr #-1
424 // CHECK-ERROR-NEXT: ^
425 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
426 // CHECK-ERROR-NEXT: cmn wzr, wzr, asr #32
427 // CHECK-ERROR-NEXT: ^
428 // CHECK-ERROR-NEXT: error: expected integer shift amount
429 // CHECK-ERROR-NEXT: cmn x9, x10, lsl #-1
430 // CHECK-ERROR-NEXT: ^
431 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
432 // CHECK-ERROR-NEXT: cmn x9, x10, lsl #64
433 // CHECK-ERROR-NEXT: ^
434 // CHECK-ERROR-NEXT: error: expected integer shift amount
435 // CHECK-ERROR-NEXT: cmn x11, x12, lsr #-1
436 // CHECK-ERROR-NEXT: ^
437 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
438 // CHECK-ERROR-NEXT: cmn x11, x12, lsr #64
439 // CHECK-ERROR-NEXT: ^
440 // CHECK-ERROR-NEXT: error: expected integer shift amount
441 // CHECK-ERROR-NEXT: cmn x19, xzr, asr #-1
442 // CHECK-ERROR-NEXT: ^
443 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
444 // CHECK-ERROR-NEXT: cmn xzr, xzr, asr #64
445 // CHECK-ERROR-NEXT: ^
449 cmp w11, w12, lsr #-1
450 cmp w11, w12, lsr #32
451 cmp w19, wzr, asr #-1
452 cmp wzr, wzr, asr #32
455 cmp x11, x12, lsr #-1
456 cmp x11, x12, lsr #64
457 cmp x19, xzr, asr #-1
458 cmp xzr, xzr, asr #64
459 // CHECK-ERROR: error: expected integer shift amount
460 // CHECK-ERROR-NEXT: cmp w9, w10, lsl #-1
461 // CHECK-ERROR-NEXT: ^
462 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
463 // CHECK-ERROR-NEXT: cmp w9, w10, lsl #32
464 // CHECK-ERROR-NEXT: ^
465 // CHECK-ERROR-NEXT: error: expected integer shift amount
466 // CHECK-ERROR-NEXT: cmp w11, w12, lsr #-1
467 // CHECK-ERROR-NEXT: ^
468 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
469 // CHECK-ERROR-NEXT: cmp w11, w12, lsr #32
470 // CHECK-ERROR-NEXT: ^
471 // CHECK-ERROR-NEXT: error: expected integer shift amount
472 // CHECK-ERROR-NEXT: cmp w19, wzr, asr #-1
473 // CHECK-ERROR-NEXT: ^
474 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
475 // CHECK-ERROR-NEXT: cmp wzr, wzr, asr #32
476 // CHECK-ERROR-NEXT: ^
477 // CHECK-ERROR-NEXT: error: expected integer shift amount
478 // CHECK-ERROR-NEXT: cmp x9, x10, lsl #-1
479 // CHECK-ERROR-NEXT: ^
480 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
481 // CHECK-ERROR-NEXT: cmp x9, x10, lsl #64
482 // CHECK-ERROR-NEXT: ^
483 // CHECK-ERROR-NEXT: error: expected integer shift amount
484 // CHECK-ERROR-NEXT: cmp x11, x12, lsr #-1
485 // CHECK-ERROR-NEXT: ^
486 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
487 // CHECK-ERROR-NEXT: cmp x11, x12, lsr #64
488 // CHECK-ERROR-NEXT: ^
489 // CHECK-ERROR-NEXT: error: expected integer shift amount
490 // CHECK-ERROR-NEXT: cmp x19, xzr, asr #-1
491 // CHECK-ERROR-NEXT: ^
492 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
493 // CHECK-ERROR-NEXT: cmp xzr, xzr, asr #64
494 // CHECK-ERROR-NEXT: ^
498 neg w11, w12, lsr #-1
499 neg w11, w12, lsr #32
500 neg w19, wzr, asr #-1
501 neg wzr, wzr, asr #32
504 neg x11, x12, lsr #-1
505 neg x11, x12, lsr #64
506 neg x19, xzr, asr #-1
507 neg xzr, xzr, asr #64
508 // CHECK-ERROR: error: expected integer shift amount
509 // CHECK-ERROR-NEXT: neg w9, w10, lsl #-1
510 // CHECK-ERROR-NEXT: ^
511 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
512 // CHECK-ERROR-NEXT: neg w9, w10, lsl #32
513 // CHECK-ERROR-NEXT: ^
514 // CHECK-ERROR-NEXT: error: expected integer shift amount
515 // CHECK-ERROR-NEXT: neg w11, w12, lsr #-1
516 // CHECK-ERROR-NEXT: ^
517 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
518 // CHECK-ERROR-NEXT: neg w11, w12, lsr #32
519 // CHECK-ERROR-NEXT: ^
520 // CHECK-ERROR-NEXT: error: expected integer shift amount
521 // CHECK-ERROR-NEXT: neg w19, wzr, asr #-1
522 // CHECK-ERROR-NEXT: ^
523 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
524 // CHECK-ERROR-NEXT: neg wzr, wzr, asr #32
525 // CHECK-ERROR-NEXT: ^
526 // CHECK-ERROR-NEXT: error: expected integer shift amount
527 // CHECK-ERROR-NEXT: neg x9, x10, lsl #-1
528 // CHECK-ERROR-NEXT: ^
529 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
530 // CHECK-ERROR-NEXT: neg x9, x10, lsl #64
531 // CHECK-ERROR-NEXT: ^
532 // CHECK-ERROR-NEXT: error: expected integer shift amount
533 // CHECK-ERROR-NEXT: neg x11, x12, lsr #-1
534 // CHECK-ERROR-NEXT: ^
535 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
536 // CHECK-ERROR-NEXT: neg x11, x12, lsr #64
537 // CHECK-ERROR-NEXT: ^
538 // CHECK-ERROR-NEXT: error: expected integer shift amount
539 // CHECK-ERROR-NEXT: neg x19, xzr, asr #-1
540 // CHECK-ERROR-NEXT: ^
541 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
542 // CHECK-ERROR-NEXT: neg xzr, xzr, asr #64
543 // CHECK-ERROR-NEXT: ^
545 negs w9, w10, lsl #-1
546 negs w9, w10, lsl #32
547 negs w11, w12, lsr #-1
548 negs w11, w12, lsr #32
549 negs w19, wzr, asr #-1
550 negs wzr, wzr, asr #32
551 negs x9, x10, lsl #-1
552 negs x9, x10, lsl #64
553 negs x11, x12, lsr #-1
554 negs x11, x12, lsr #64
555 negs x19, xzr, asr #-1
556 negs xzr, xzr, asr #64
557 // CHECK-ERROR: error: expected integer shift amount
558 // CHECK-ERROR-NEXT: negs w9, w10, lsl #-1
559 // CHECK-ERROR-NEXT: ^
560 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
561 // CHECK-ERROR-NEXT: negs w9, w10, lsl #32
562 // CHECK-ERROR-NEXT: ^
563 // CHECK-ERROR-NEXT: error: expected integer shift amount
564 // CHECK-ERROR-NEXT: negs w11, w12, lsr #-1
565 // CHECK-ERROR-NEXT: ^
566 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
567 // CHECK-ERROR-NEXT: negs w11, w12, lsr #32
568 // CHECK-ERROR-NEXT: ^
569 // CHECK-ERROR-NEXT: error: expected integer shift amount
570 // CHECK-ERROR-NEXT: negs w19, wzr, asr #-1
571 // CHECK-ERROR-NEXT: ^
572 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
573 // CHECK-ERROR-NEXT: negs wzr, wzr, asr #32
574 // CHECK-ERROR-NEXT: ^
575 // CHECK-ERROR-NEXT: error: expected integer shift amount
576 // CHECK-ERROR-NEXT: negs x9, x10, lsl #-1
577 // CHECK-ERROR-NEXT: ^
578 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
579 // CHECK-ERROR-NEXT: negs x9, x10, lsl #64
580 // CHECK-ERROR-NEXT: ^
581 // CHECK-ERROR-NEXT: error: expected integer shift amount
582 // CHECK-ERROR-NEXT: negs x11, x12, lsr #-1
583 // CHECK-ERROR-NEXT: ^
584 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
585 // CHECK-ERROR-NEXT: negs x11, x12, lsr #64
586 // CHECK-ERROR-NEXT: ^
587 // CHECK-ERROR-NEXT: error: expected integer shift amount
588 // CHECK-ERROR-NEXT: negs x19, xzr, asr #-1
589 // CHECK-ERROR-NEXT: ^
590 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
591 // CHECK-ERROR-NEXT: negs xzr, xzr, asr #64
592 // CHECK-ERROR-NEXT: ^
594 //------------------------------------------------------------------------------
595 // Add-subtract (shifted register)
596 //------------------------------------------------------------------------------
601 // CHECK-ERROR: error: invalid operand for instruction
602 // CHECK-ERROR-NEXT: adc wsp, w3, w5
603 // CHECK-ERROR-NEXT: ^
604 // CHECK-ERROR-NEXT: error: invalid operand for instruction
605 // CHECK-ERROR-NEXT: adc w1, wsp, w2
606 // CHECK-ERROR-NEXT: ^
607 // CHECK-ERROR-NEXT: error: invalid operand for instruction
608 // CHECK-ERROR-NEXT: adc w0, w10, wsp
609 // CHECK-ERROR-NEXT: ^
614 // CHECK-ERROR: error: invalid operand for instruction
615 // CHECK-ERROR-NEXT: adc sp, x3, x5
616 // CHECK-ERROR-NEXT: ^
617 // CHECK-ERROR-NEXT: error: invalid operand for instruction
618 // CHECK-ERROR-NEXT: adc x1, sp, x2
619 // CHECK-ERROR-NEXT: ^
620 // CHECK-ERROR-NEXT: error: invalid operand for instruction
621 // CHECK-ERROR-NEXT: adc x0, x10, sp
622 // CHECK-ERROR-NEXT: ^
627 // CHECK-ERROR: error: invalid operand for instruction
628 // CHECK-ERROR-NEXT: adcs wsp, w3, w5
629 // CHECK-ERROR-NEXT: ^
630 // CHECK-ERROR-NEXT: error: invalid operand for instruction
631 // CHECK-ERROR-NEXT: adcs w1, wsp, w2
632 // CHECK-ERROR-NEXT: ^
633 // CHECK-ERROR-NEXT: error: invalid operand for instruction
634 // CHECK-ERROR-NEXT: adcs w0, w10, wsp
635 // CHECK-ERROR-NEXT: ^
640 // CHECK-ERROR: error: invalid operand for instruction
641 // CHECK-ERROR-NEXT: adcs sp, x3, x5
642 // CHECK-ERROR-NEXT: ^
643 // CHECK-ERROR-NEXT: error: invalid operand for instruction
644 // CHECK-ERROR-NEXT: adcs x1, sp, x2
645 // CHECK-ERROR-NEXT: ^
646 // CHECK-ERROR-NEXT: error: invalid operand for instruction
647 // CHECK-ERROR-NEXT: adcs x0, x10, sp
648 // CHECK-ERROR-NEXT: ^
653 // CHECK-ERROR: error: invalid operand for instruction
654 // CHECK-ERROR-NEXT: sbc wsp, w3, w5
655 // CHECK-ERROR-NEXT: ^
656 // CHECK-ERROR-NEXT: error: invalid operand for instruction
657 // CHECK-ERROR-NEXT: sbc w1, wsp, w2
658 // CHECK-ERROR-NEXT: ^
659 // CHECK-ERROR-NEXT: error: invalid operand for instruction
660 // CHECK-ERROR-NEXT: sbc w0, w10, wsp
661 // CHECK-ERROR-NEXT: ^
666 // CHECK-ERROR: error: invalid operand for instruction
667 // CHECK-ERROR-NEXT: sbc sp, x3, x5
668 // CHECK-ERROR-NEXT: ^
669 // CHECK-ERROR-NEXT: error: invalid operand for instruction
670 // CHECK-ERROR-NEXT: sbc x1, sp, x2
671 // CHECK-ERROR-NEXT: ^
672 // CHECK-ERROR-NEXT: error: invalid operand for instruction
673 // CHECK-ERROR-NEXT: sbc x0, x10, sp
674 // CHECK-ERROR-NEXT: ^
679 // CHECK-ERROR: error: invalid operand for instruction
680 // CHECK-ERROR-NEXT: sbcs wsp, w3, w5
681 // CHECK-ERROR-NEXT: ^
682 // CHECK-ERROR-NEXT: error: invalid operand for instruction
683 // CHECK-ERROR-NEXT: sbcs w1, wsp, w2
684 // CHECK-ERROR-NEXT: ^
685 // CHECK-ERROR-NEXT: error: invalid operand for instruction
686 // CHECK-ERROR-NEXT: sbcs w0, w10, wsp
687 // CHECK-ERROR-NEXT: ^
692 // CHECK-ERROR: error: invalid operand for instruction
693 // CHECK-ERROR-NEXT: sbcs sp, x3, x5
694 // CHECK-ERROR-NEXT: ^
695 // CHECK-ERROR-NEXT: error: invalid operand for instruction
696 // CHECK-ERROR-NEXT: sbcs x1, sp, x2
697 // CHECK-ERROR-NEXT: ^
698 // CHECK-ERROR-NEXT: error: invalid operand for instruction
699 // CHECK-ERROR-NEXT: sbcs x0, x10, sp
700 // CHECK-ERROR-NEXT: ^
706 // CHECK-ERROR: error: invalid operand for instruction
707 // CHECK-ERROR-NEXT: ngc wsp, w3
708 // CHECK-ERROR-NEXT: ^
709 // CHECK-ERROR-NEXT: error: invalid operand for instruction
710 // CHECK-ERROR-NEXT: ngc w9, wsp
711 // CHECK-ERROR-NEXT: ^
712 // CHECK-ERROR-NEXT: error: invalid operand for instruction
713 // CHECK-ERROR-NEXT: ngc sp, x9
714 // CHECK-ERROR-NEXT: ^
715 // CHECK-ERROR-NEXT: error: invalid operand for instruction
716 // CHECK-ERROR-NEXT: ngc x2, sp
717 // CHECK-ERROR-NEXT: ^
723 // CHECK-ERROR: error: invalid operand for instruction
724 // CHECK-ERROR-NEXT: ngcs wsp, w3
725 // CHECK-ERROR-NEXT: ^
726 // CHECK-ERROR-NEXT: error: invalid operand for instruction
727 // CHECK-ERROR-NEXT: ngcs w9, wsp
728 // CHECK-ERROR-NEXT: ^
729 // CHECK-ERROR-NEXT: error: invalid operand for instruction
730 // CHECK-ERROR-NEXT: ngcs sp, x9
731 // CHECK-ERROR-NEXT: ^
732 // CHECK-ERROR-NEXT: error: invalid operand for instruction
733 // CHECK-ERROR-NEXT: ngcs x2, sp
734 // CHECK-ERROR-NEXT: ^
736 //------------------------------------------------------------------------------
737 // Logical (immediates)
738 //------------------------------------------------------------------------------
740 and w2, w3, #4294967296
741 eor w2, w3, #4294967296
742 orr w2, w3, #4294967296
743 ands w2, w3, #4294967296
744 // CHECK-ERROR: error: expected compatible register or logical immediate
745 // CHECK-ERROR-NEXT: and w2, w3, #4294967296
746 // CHECK-ERROR-NEXT: ^
747 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
748 // CHECK-ERROR-NEXT: eor w2, w3, #4294967296
749 // CHECK-ERROR-NEXT: ^
750 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
751 // CHECK-ERROR-NEXT: orr w2, w3, #4294967296
752 // CHECK-ERROR-NEXT: ^
753 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
754 // CHECK-ERROR-NEXT: ands w2, w3, #4294967296
755 // CHECK-ERROR-NEXT: ^
757 //------------------------------------------------------------------------------
759 //------------------------------------------------------------------------------
767 // CHECK-ERROR: error: invalid operand for instruction
768 // CHECK-ERROR-NEXT: sbfm x3, w13, #0, #0
769 // CHECK-ERROR-NEXT: ^
770 // CHECK-ERROR-NEXT: error: invalid operand for instruction
771 // CHECK-ERROR-NEXT: sbfm w12, x9, #0, #0
772 // CHECK-ERROR-NEXT: ^
773 // CHECK-ERROR-NEXT: error: invalid operand for instruction
774 // CHECK-ERROR-NEXT: sbfm sp, x3, #3, #5
775 // CHECK-ERROR-NEXT: ^
776 // CHECK-ERROR-NEXT: error: invalid operand for instruction
777 // CHECK-ERROR-NEXT: sbfm w3, wsp, #1, #9
778 // CHECK-ERROR-NEXT: ^
779 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
780 // CHECK-ERROR-NEXT: sbfm x9, x5, #-1, #0
781 // CHECK-ERROR-NEXT: ^
782 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
783 // CHECK-ERROR-NEXT: sbfm x9, x5, #0, #-1
784 // CHECK-ERROR-NEXT: ^
787 sbfm w7, w11, #19, #32
788 sbfm x29, x30, #64, #0
789 sbfm x10, x20, #63, #64
790 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
791 // CHECK-ERROR-NEXT: sbfm w3, w5, #32, #1
792 // CHECK-ERROR-NEXT: ^
793 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
794 // CHECK-ERROR-NEXT: sbfm w7, w11, #19, #32
795 // CHECK-ERROR-NEXT: ^
796 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
797 // CHECK-ERROR-NEXT: sbfm x29, x30, #64, #0
798 // CHECK-ERROR-NEXT: ^
799 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
800 // CHECK-ERROR-NEXT: sbfm x10, x20, #63, #64
801 // CHECK-ERROR-NEXT: ^
804 ubfm w7, w11, #19, #32
805 ubfm x29, x30, #64, #0
806 ubfm x10, x20, #63, #64
807 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
808 // CHECK-ERROR-NEXT: ubfm w3, w5, #32, #1
809 // CHECK-ERROR-NEXT: ^
810 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
811 // CHECK-ERROR-NEXT: ubfm w7, w11, #19, #32
812 // CHECK-ERROR-NEXT: ^
813 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
814 // CHECK-ERROR-NEXT: ubfm x29, x30, #64, #0
815 // CHECK-ERROR-NEXT: ^
816 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
817 // CHECK-ERROR-NEXT: ubfm x10, x20, #63, #64
818 // CHECK-ERROR-NEXT: ^
821 bfm w7, w11, #19, #32
822 bfm x29, x30, #64, #0
823 bfm x10, x20, #63, #64
824 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
825 // CHECK-ERROR-NEXT: bfm w3, w5, #32, #1
826 // CHECK-ERROR-NEXT: ^
827 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
828 // CHECK-ERROR-NEXT: bfm w7, w11, #19, #32
829 // CHECK-ERROR-NEXT: ^
830 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
831 // CHECK-ERROR-NEXT: bfm x29, x30, #64, #0
832 // CHECK-ERROR-NEXT: ^
833 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
834 // CHECK-ERROR-NEXT: bfm x10, x20, #63, #64
835 // CHECK-ERROR-NEXT: ^
840 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
841 // CHECK-ERROR-AARCH64-NEXT: sxtb x3, x2
842 // CHECK-ERROR-AARCH64-NEXT: ^
843 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
844 // CHECK-ERROR-AARCH64-NEXT: sxth xzr, xzr
845 // CHECK-ERROR-AARCH64-NEXT: ^
846 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
847 // CHECK-ERROR-AARCH64-NEXT: sxtw x3, x5
848 // CHECK-ERROR-AARCH64-NEXT: ^
855 // CHECK-ERROR: error: invalid operand for instruction
856 // CHECK-ERROR-NEXT: uxtb x3, x12
857 // CHECK-ERROR-NEXT: ^
858 // CHECK-ERROR-NEXT: error: invalid operand for instruction
859 // CHECK-ERROR-NEXT: uxth x5, x9
860 // CHECK-ERROR-NEXT: ^
861 // CHECK-ERROR-AARCH64-NEXT: error: invalid instruction
862 // CHECK-ERROR-AARCH64-NEXT: uxtw x3, x5
863 // CHECK-ERROR-AARCH64-NEXT: ^
864 // CHECK-ERROR-NEXT: error: invalid operand for instruction
865 // CHECK-ERROR-NEXT: uxtb x2, sp
866 // CHECK-ERROR-NEXT: ^
867 // CHECK-ERROR-NEXT: error: invalid operand for instruction
868 // CHECK-ERROR-NEXT: uxtb sp, xzr
869 // CHECK-ERROR-NEXT: ^
876 // CHECK-ERROR: error: invalid operand for instruction
877 // CHECK-ERROR-NEXT: asr x3, w2, #1
878 // CHECK-ERROR-NEXT: ^
879 // CHECK-ERROR-NEXT: error: invalid operand for instruction
880 // CHECK-ERROR-NEXT: asr sp, x2, #1
881 // CHECK-ERROR-NEXT: ^
882 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
883 // CHECK-ERROR-NEXT: asr x25, x26, #-1
884 // CHECK-ERROR-NEXT: ^
885 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
886 // CHECK-ERROR-NEXT: asr x25, x26, #64
887 // CHECK-ERROR-NEXT: ^
888 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
889 // CHECK-ERROR-NEXT: asr w9, w8, #32
890 // CHECK-ERROR-NEXT: ^
893 sbfiz wsp, w9, #0, #1
894 sbfiz w9, w10, #32, #1
895 sbfiz w11, w12, #32, #0
896 sbfiz w9, w10, #10, #23
897 sbfiz x3, x5, #12, #53
899 sbfiz w3, wsp, #10, #8
900 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
901 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
902 // CHECK-ERROR-NEXT: sbfiz w1, w2, #0, #0
903 // CHECK-ERROR-NEXT: ^
904 // CHECK-ERROR-NEXT: error: invalid operand for instruction
905 // CHECK-ERROR-NEXT: sbfiz wsp, w9, #0, #1
906 // CHECK-ERROR-NEXT: ^
907 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
908 // CHECK-ERROR-NEXT: sbfiz w9, w10, #32, #1
909 // CHECK-ERROR-NEXT: ^
910 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
911 // CHECK-ERROR-NEXT: sbfiz w11, w12, #32, #0
912 // CHECK-ERROR-NEXT: ^
913 // CHECK-ERROR-NEXT: error: requested insert overflows register
914 // CHECK-ERROR-NEXT: sbfiz w9, w10, #10, #23
915 // CHECK-ERROR-NEXT: ^
916 // CHECK-ERROR-NEXT: error: requested insert overflows register
917 // CHECK-ERROR-NEXT: sbfiz x3, x5, #12, #53
918 // CHECK-ERROR-NEXT: ^
919 // CHECK-ERROR-NEXT: error: invalid operand for instruction
920 // CHECK-ERROR-NEXT: sbfiz sp, x3, #7, #6
921 // CHECK-ERROR-NEXT: ^
922 // CHECK-ERROR-NEXT: error: invalid operand for instruction
923 // CHECK-ERROR-NEXT: sbfiz w3, wsp, #10, #8
924 // CHECK-ERROR-NEXT: ^
928 sbfx w9, w10, #32, #1
929 sbfx w11, w12, #32, #0
930 sbfx w9, w10, #10, #23
931 sbfx x3, x5, #12, #53
933 sbfx w3, wsp, #10, #8
934 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
935 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
936 // CHECK-ERROR-NEXT: sbfx w1, w2, #0, #0
937 // CHECK-ERROR-NEXT: ^
938 // CHECK-ERROR-NEXT: error: invalid operand for instruction
939 // CHECK-ERROR-NEXT: sbfx wsp, w9, #0, #1
940 // CHECK-ERROR-NEXT: ^
941 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
942 // CHECK-ERROR-NEXT: sbfx w9, w10, #32, #1
943 // CHECK-ERROR-NEXT: ^
944 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
945 // CHECK-ERROR-NEXT: sbfx w11, w12, #32, #0
946 // CHECK-ERROR-NEXT: ^
947 // CHECK-ERROR-NEXT: error: requested extract overflows register
948 // CHECK-ERROR-NEXT: sbfx w9, w10, #10, #23
949 // CHECK-ERROR-NEXT: ^
950 // CHECK-ERROR-NEXT: error: requested extract overflows register
951 // CHECK-ERROR-NEXT: sbfx x3, x5, #12, #53
952 // CHECK-ERROR-NEXT: ^
953 // CHECK-ERROR-NEXT: error: invalid operand for instruction
954 // CHECK-ERROR-NEXT: sbfx sp, x3, #7, #6
955 // CHECK-ERROR-NEXT: ^
956 // CHECK-ERROR-NEXT: error: invalid operand for instruction
957 // CHECK-ERROR-NEXT: sbfx w3, wsp, #10, #8
958 // CHECK-ERROR-NEXT: ^
963 bfi w11, w12, #32, #0
964 bfi w9, w10, #10, #23
968 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
969 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
970 // CHECK-ERROR-NEXT: bfi w1, w2, #0, #0
971 // CHECK-ERROR-NEXT: ^
972 // CHECK-ERROR-NEXT: error: invalid operand for instruction
973 // CHECK-ERROR-NEXT: bfi wsp, w9, #0, #1
974 // CHECK-ERROR-NEXT: ^
975 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
976 // CHECK-ERROR-NEXT: bfi w9, w10, #32, #1
977 // CHECK-ERROR-NEXT: ^
978 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
979 // CHECK-ERROR-NEXT: bfi w11, w12, #32, #0
980 // CHECK-ERROR-NEXT: ^
981 // CHECK-ERROR-NEXT: error: requested insert overflows register
982 // CHECK-ERROR-NEXT: bfi w9, w10, #10, #23
983 // CHECK-ERROR-NEXT: ^
984 // CHECK-ERROR-NEXT: error: requested insert overflows register
985 // CHECK-ERROR-NEXT: bfi x3, x5, #12, #53
986 // CHECK-ERROR-NEXT: ^
987 // CHECK-ERROR-NEXT: error: invalid operand for instruction
988 // CHECK-ERROR-NEXT: bfi sp, x3, #7, #6
989 // CHECK-ERROR-NEXT: ^
990 // CHECK-ERROR-NEXT: error: invalid operand for instruction
991 // CHECK-ERROR-NEXT: bfi w3, wsp, #10, #8
992 // CHECK-ERROR-NEXT: ^
995 bfxil wsp, w9, #0, #1
996 bfxil w9, w10, #32, #1
997 bfxil w11, w12, #32, #0
998 bfxil w9, w10, #10, #23
999 bfxil x3, x5, #12, #53
1000 bfxil sp, x3, #7, #6
1001 bfxil w3, wsp, #10, #8
1002 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
1003 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
1004 // CHECK-ERROR-NEXT: bfxil w1, w2, #0, #0
1005 // CHECK-ERROR-NEXT: ^
1006 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1007 // CHECK-ERROR-NEXT: bfxil wsp, w9, #0, #1
1008 // CHECK-ERROR-NEXT: ^
1009 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1010 // CHECK-ERROR-NEXT: bfxil w9, w10, #32, #1
1011 // CHECK-ERROR-NEXT: ^
1012 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1013 // CHECK-ERROR-NEXT: bfxil w11, w12, #32, #0
1014 // CHECK-ERROR-NEXT: ^
1015 // CHECK-ERROR-NEXT: error: requested extract overflows register
1016 // CHECK-ERROR-NEXT: bfxil w9, w10, #10, #23
1017 // CHECK-ERROR-NEXT: ^
1018 // CHECK-ERROR-NEXT: error: requested extract overflows register
1019 // CHECK-ERROR-NEXT: bfxil x3, x5, #12, #53
1020 // CHECK-ERROR-NEXT: ^
1021 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1022 // CHECK-ERROR-NEXT: bfxil sp, x3, #7, #6
1023 // CHECK-ERROR-NEXT: ^
1024 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1025 // CHECK-ERROR-NEXT: bfxil w3, wsp, #10, #8
1026 // CHECK-ERROR-NEXT: ^
1028 ubfiz w1, w2, #0, #0
1029 ubfiz wsp, w9, #0, #1
1030 ubfiz w9, w10, #32, #1
1031 ubfiz w11, w12, #32, #0
1032 ubfiz w9, w10, #10, #23
1033 ubfiz x3, x5, #12, #53
1034 ubfiz sp, x3, #7, #6
1035 ubfiz w3, wsp, #10, #8
1036 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
1037 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
1038 // CHECK-ERROR-NEXT: ubfiz w1, w2, #0, #0
1039 // CHECK-ERROR-NEXT: ^
1040 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1041 // CHECK-ERROR-NEXT: ubfiz wsp, w9, #0, #1
1042 // CHECK-ERROR-NEXT: ^
1043 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1044 // CHECK-ERROR-NEXT: ubfiz w9, w10, #32, #1
1045 // CHECK-ERROR-NEXT: ^
1046 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1047 // CHECK-ERROR-NEXT: ubfiz w11, w12, #32, #0
1048 // CHECK-ERROR-NEXT: ^
1049 // CHECK-ERROR-NEXT: error: requested insert overflows register
1050 // CHECK-ERROR-NEXT: ubfiz w9, w10, #10, #23
1051 // CHECK-ERROR-NEXT: ^
1052 // CHECK-ERROR-NEXT: error: requested insert overflows register
1053 // CHECK-ERROR-NEXT: ubfiz x3, x5, #12, #53
1054 // CHECK-ERROR-NEXT: ^
1055 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1056 // CHECK-ERROR-NEXT: ubfiz sp, x3, #7, #6
1057 // CHECK-ERROR-NEXT: ^
1058 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1059 // CHECK-ERROR-NEXT: ubfiz w3, wsp, #10, #8
1060 // CHECK-ERROR-NEXT: ^
1063 ubfx wsp, w9, #0, #1
1064 ubfx w9, w10, #32, #1
1065 ubfx w11, w12, #32, #0
1066 ubfx w9, w10, #10, #23
1067 ubfx x3, x5, #12, #53
1069 ubfx w3, wsp, #10, #8
1070 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
1071 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
1072 // CHECK-ERROR-NEXT: ubfx w1, w2, #0, #0
1073 // CHECK-ERROR-NEXT: ^
1074 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1075 // CHECK-ERROR-NEXT: ubfx wsp, w9, #0, #1
1076 // CHECK-ERROR-NEXT: ^
1077 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1078 // CHECK-ERROR-NEXT: ubfx w9, w10, #32, #1
1079 // CHECK-ERROR-NEXT: ^
1080 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1081 // CHECK-ERROR-NEXT: ubfx w11, w12, #32, #0
1082 // CHECK-ERROR-NEXT: ^
1083 // CHECK-ERROR-NEXT: error: requested extract overflows register
1084 // CHECK-ERROR-NEXT: ubfx w9, w10, #10, #23
1085 // CHECK-ERROR-NEXT: ^
1086 // CHECK-ERROR-NEXT: error: requested extract overflows register
1087 // CHECK-ERROR-NEXT: ubfx x3, x5, #12, #53
1088 // CHECK-ERROR-NEXT: ^
1089 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1090 // CHECK-ERROR-NEXT: ubfx sp, x3, #7, #6
1091 // CHECK-ERROR-NEXT: ^
1092 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1093 // CHECK-ERROR-NEXT: ubfx w3, wsp, #10, #8
1094 // CHECK-ERROR-NEXT: ^
1100 // CHECK-ERROR: error: invalid operand for instruction
1101 // CHECK-ERROR-NEXT: bfc wsp, #3, #6
1102 // CHECK-ERROR-NEXT: ^
1103 // CHECK-ERROR-NEXT: error: requested insert overflows register
1104 // CHECK-ERROR-NEXT: bfc w4, #2, #31
1105 // CHECK-ERROR-NEXT: ^
1106 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1107 // CHECK-ERROR-NEXT: bfc sp, #0, #1
1108 // CHECK-ERROR-NEXT: ^
1109 // CHECK-ERROR-NEXT: error: expected integer in range [1, 32]
1110 // CHECK-ERROR-NEXT: bfc x6, #0, #0
1111 // CHECK-ERROR-NEXT: ^
1113 //------------------------------------------------------------------------------
1114 // Compare & branch (immediate)
1115 //------------------------------------------------------------------------------
1120 // CHECK-ERROR: error: invalid operand for instruction
1121 // CHECK-ERROR-NEXT: cbnz wsp, lbl
1122 // CHECK-ERROR-NEXT: ^
1123 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1124 // CHECK-ERROR-NEXT: cbz sp, lbl
1125 // CHECK-ERROR-NEXT: ^
1126 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1127 // CHECK-ERROR-NEXT: cbz x3, x5
1128 // CHECK-ERROR-NEXT: ^
1133 // CHECK-ERROR: error: expected label or encodable integer pc offset
1134 // CHECK-ERROR-NEXT: cbz w20, #1048576
1135 // CHECK-ERROR-NEXT: ^
1136 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1137 // CHECK-ERROR-NEXT: cbnz xzr, #-1048580
1138 // CHECK-ERROR-NEXT: ^
1139 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1140 // CHECK-ERROR-NEXT: cbz x29, #1
1141 // CHECK-ERROR-NEXT: ^
1143 //------------------------------------------------------------------------------
1144 // Conditional branch (immediate)
1145 //------------------------------------------------------------------------------
1148 // CHECK-ERROR: error: invalid condition code
1149 // CHECK-ERROR-NEXT: b.zf lbl
1150 // CHECK-ERROR-NEXT: ^
1155 // CHECK-ERROR: error: expected label or encodable integer pc offset
1156 // CHECK-ERROR-NEXT: b.eq #1048576
1157 // CHECK-ERROR-NEXT: ^
1158 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1159 // CHECK-ERROR-NEXT: b.ge #-1048580
1160 // CHECK-ERROR-NEXT: ^
1161 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1162 // CHECK-ERROR-NEXT: b.cc #1
1163 // CHECK-ERROR-NEXT: ^
1165 //------------------------------------------------------------------------------
1166 // Conditional compare (immediate)
1167 //------------------------------------------------------------------------------
1169 ccmp wsp, #4, #2, ne
1170 ccmp w25, #-1, #15, hs
1171 ccmp w3, #32, #0, ge
1172 ccmp w19, #5, #-1, lt
1173 ccmp w20, #7, #16, hs
1174 // CHECK-ERROR: error: invalid operand for instruction
1175 // CHECK-ERROR-NEXT: ccmp wsp, #4, #2, ne
1176 // CHECK-ERROR-NEXT: ^
1177 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1178 // CHECK-ERROR-NEXT: ccmp w25, #-1, #15, hs
1179 // CHECK-ERROR-NEXT: ^
1180 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1181 // CHECK-ERROR-NEXT: ccmp w3, #32, #0, ge
1182 // CHECK-ERROR-NEXT: ^
1183 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1184 // CHECK-ERROR-NEXT: ccmp w19, #5, #-1, lt
1185 // CHECK-ERROR-NEXT: ^
1186 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1187 // CHECK-ERROR-NEXT: ccmp w20, #7, #16, hs
1188 // CHECK-ERROR-NEXT: ^
1191 ccmp x25, #-1, #15, hs
1192 ccmp x3, #32, #0, ge
1193 ccmp x19, #5, #-1, lt
1194 ccmp x20, #7, #16, hs
1195 // CHECK-ERROR: error: invalid operand for instruction
1196 // CHECK-ERROR-NEXT: ccmp sp, #4, #2, ne
1197 // CHECK-ERROR-NEXT: ^
1198 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1199 // CHECK-ERROR-NEXT: ccmp x25, #-1, #15, hs
1200 // CHECK-ERROR-NEXT: ^
1201 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1202 // CHECK-ERROR-NEXT: ccmp x3, #32, #0, ge
1203 // CHECK-ERROR-NEXT: ^
1204 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1205 // CHECK-ERROR-NEXT: ccmp x19, #5, #-1, lt
1206 // CHECK-ERROR-NEXT: ^
1207 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1208 // CHECK-ERROR-NEXT: ccmp x20, #7, #16, hs
1209 // CHECK-ERROR-NEXT: ^
1211 ccmn wsp, #4, #2, ne
1212 ccmn w25, #-1, #15, hs
1213 ccmn w3, #32, #0, ge
1214 ccmn w19, #5, #-1, lt
1215 ccmn w20, #7, #16, hs
1216 // CHECK-ERROR: error: invalid operand for instruction
1217 // CHECK-ERROR-NEXT: ccmn wsp, #4, #2, ne
1218 // CHECK-ERROR-NEXT: ^
1219 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1220 // CHECK-ERROR-NEXT: ccmn w25, #-1, #15, hs
1221 // CHECK-ERROR-NEXT: ^
1222 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1223 // CHECK-ERROR-NEXT: ccmn w3, #32, #0, ge
1224 // CHECK-ERROR-NEXT: ^
1225 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1226 // CHECK-ERROR-NEXT: ccmn w19, #5, #-1, lt
1227 // CHECK-ERROR-NEXT: ^
1228 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1229 // CHECK-ERROR-NEXT: ccmn w20, #7, #16, hs
1230 // CHECK-ERROR-NEXT: ^
1233 ccmn x25, #-1, #15, hs
1234 ccmn x3, #32, #0, ge
1235 ccmn x19, #5, #-1, lt
1236 ccmn x20, #7, #16, hs
1237 // CHECK-ERROR: error: invalid operand for instruction
1238 // CHECK-ERROR-NEXT: ccmn sp, #4, #2, ne
1239 // CHECK-ERROR-NEXT: ^
1240 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1241 // CHECK-ERROR-NEXT: ccmn x25, #-1, #15, hs
1242 // CHECK-ERROR-NEXT: ^
1243 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1244 // CHECK-ERROR-NEXT: ccmn x3, #32, #0, ge
1245 // CHECK-ERROR-NEXT: ^
1246 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1247 // CHECK-ERROR-NEXT: ccmn x19, #5, #-1, lt
1248 // CHECK-ERROR-NEXT: ^
1249 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1250 // CHECK-ERROR-NEXT: ccmn x20, #7, #16, hs
1251 // CHECK-ERROR-NEXT: ^
1253 //------------------------------------------------------------------------------
1254 // Conditional compare (register)
1255 //------------------------------------------------------------------------------
1257 ccmp wsp, w4, #2, ne
1258 ccmp w3, wsp, #0, ge
1259 ccmp w19, w5, #-1, lt
1260 ccmp w20, w7, #16, hs
1261 // CHECK-ERROR: error: invalid operand for instruction
1262 // CHECK-ERROR-NEXT: ccmp wsp, w4, #2, ne
1263 // CHECK-ERROR-NEXT: ^
1264 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1265 // CHECK-ERROR-NEXT: ccmp w3, wsp, #0, ge
1266 // CHECK-ERROR-NEXT: ^
1267 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1268 // CHECK-ERROR-NEXT: ccmp w19, w5, #-1, lt
1269 // CHECK-ERROR-NEXT: ^
1270 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1271 // CHECK-ERROR-NEXT: ccmp w20, w7, #16, hs
1272 // CHECK-ERROR-NEXT: ^
1275 ccmp x25, sp, #15, hs
1276 ccmp x19, x5, #-1, lt
1277 ccmp x20, x7, #16, hs
1278 // CHECK-ERROR: error: invalid operand for instruction
1279 // CHECK-ERROR-NEXT: ccmp sp, x4, #2, ne
1280 // CHECK-ERROR-NEXT: ^
1281 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1282 // CHECK-ERROR-NEXT: ccmp x25, sp, #15, hs
1283 // CHECK-ERROR-NEXT: ^
1284 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1285 // CHECK-ERROR-NEXT: ccmp x19, x5, #-1, lt
1286 // CHECK-ERROR-NEXT: ^
1287 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1288 // CHECK-ERROR-NEXT: ccmp x20, x7, #16, hs
1289 // CHECK-ERROR-NEXT: ^
1291 ccmn wsp, w4, #2, ne
1292 ccmn w25, wsp, #15, hs
1293 ccmn w19, w5, #-1, lt
1294 ccmn w20, w7, #16, hs
1295 // CHECK-ERROR: error: invalid operand for instruction
1296 // CHECK-ERROR-NEXT: ccmn wsp, w4, #2, ne
1297 // CHECK-ERROR-NEXT: ^
1298 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1299 // CHECK-ERROR-NEXT: ccmn w25, wsp, #15, hs
1300 // CHECK-ERROR-NEXT: ^
1301 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1302 // CHECK-ERROR-NEXT: ccmn w19, w5, #-1, lt
1303 // CHECK-ERROR-NEXT: ^
1304 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1305 // CHECK-ERROR-NEXT: ccmn w20, w7, #16, hs
1306 // CHECK-ERROR-NEXT: ^
1309 ccmn x25, sp, #15, hs
1310 ccmn x19, x5, #-1, lt
1311 ccmn x20, x7, #16, hs
1312 // CHECK-ERROR: error: invalid operand for instruction
1313 // CHECK-ERROR-NEXT: ccmn sp, x4, #2, ne
1314 // CHECK-ERROR-NEXT: ^
1315 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1316 // CHECK-ERROR-NEXT: ccmn x25, sp, #15, hs
1317 // CHECK-ERROR-NEXT: ^
1318 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1319 // CHECK-ERROR-NEXT: ccmn x19, x5, #-1, lt
1320 // CHECK-ERROR-NEXT: ^
1321 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1322 // CHECK-ERROR-NEXT: ccmn x20, x7, #16, hs
1323 // CHECK-ERROR-NEXT: ^
1325 //------------------------------------------------------------------------------
1326 // Conditional select
1327 //------------------------------------------------------------------------------
1329 csel w4, wsp, w9, eq
1330 csel wsp, w2, w3, ne
1331 csel w10, w11, wsp, ge
1335 csel x10, x11, sp, ge
1337 // CHECK-ERROR: error: invalid operand for instruction
1338 // CHECK-ERROR-NEXT: csel w4, wsp, w9, eq
1339 // CHECK-ERROR-NEXT: ^
1340 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1341 // CHECK-ERROR-NEXT: csel wsp, w2, w3, ne
1342 // CHECK-ERROR-NEXT: ^
1343 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1344 // CHECK-ERROR-NEXT: csel w10, w11, wsp, ge
1345 // CHECK-ERROR-NEXT: ^
1346 // CHECK-ERROR-NEXT: error: expected AArch64 condition code
1347 // CHECK-ERROR-NEXT: csel w1, w2, w3, #3
1348 // CHECK-ERROR-NEXT: ^
1349 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1350 // CHECK-ERROR-NEXT: csel x4, sp, x9, eq
1351 // CHECK-ERROR-NEXT: ^
1352 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1353 // CHECK-ERROR-NEXT: csel sp, x2, x3, ne
1354 // CHECK-ERROR-NEXT: ^
1355 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1356 // CHECK-ERROR-NEXT: csel x10, x11, sp, ge
1357 // CHECK-ERROR-NEXT: ^
1358 // CHECK-ERROR-NEXT: error: expected AArch64 condition code
1359 // CHECK-ERROR-NEXT: csel x1, x2, x3, #3
1360 // CHECK-ERROR-NEXT: ^
1362 csinc w20, w21, wsp, mi
1363 csinc sp, x30, x29, eq
1364 // CHECK-ERROR: error: invalid operand for instruction
1365 // CHECK-ERROR-NEXT: csinc w20, w21, wsp, mi
1366 // CHECK-ERROR-NEXT: ^
1367 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1368 // CHECK-ERROR-NEXT: csinc sp, x30, x29, eq
1369 // CHECK-ERROR-NEXT: ^
1371 csinv w20, wsp, wsp, mi
1372 csinv sp, x30, x29, le
1373 // CHECK-ERROR: error: invalid operand for instruction
1374 // CHECK-ERROR-NEXT: csinv w20, wsp, wsp, mi
1375 // CHECK-ERROR-NEXT: ^
1376 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1377 // CHECK-ERROR-NEXT: csinv sp, x30, x29, le
1378 // CHECK-ERROR-NEXT: ^
1380 csneg w20, w21, wsp, mi
1381 csneg x0, sp, x29, le
1382 // CHECK-ERROR: error: invalid operand for instruction
1383 // CHECK-ERROR-NEXT: csneg w20, w21, wsp, mi
1384 // CHECK-ERROR-NEXT: ^
1385 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1386 // CHECK-ERROR-NEXT: csneg x0, sp, x29, le
1387 // CHECK-ERROR-NEXT: ^
1393 // CHECK-ERROR: error: invalid operand for instruction
1394 // CHECK-ERROR-NEXT: cset wsp, lt
1395 // CHECK-ERROR-NEXT: ^
1396 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1397 // CHECK-ERROR-NEXT: csetm sp, ge
1398 // CHECK-ERROR-NEXT: ^
1399 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1400 // CHECK-ERROR-NEXT: cset w1, al
1401 // CHECK-ERROR-NEXT: ^
1402 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1403 // CHECK-ERROR-NEXT: csetm x6, nv
1404 // CHECK-ERROR-NEXT: ^
1409 // CHECK-ERROR: error: invalid operand for instruction
1410 // CHECK-ERROR-NEXT: cinc w3, wsp, ne
1411 // CHECK-ERROR-NEXT: ^
1412 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1413 // CHECK-ERROR-NEXT: cinc sp, x9, eq
1414 // CHECK-ERROR-NEXT: ^
1415 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1416 // CHECK-ERROR-NEXT: cinc x2, x0, nv
1417 // CHECK-ERROR-NEXT: ^
1422 // CHECK-ERROR: error: invalid operand for instruction
1423 // CHECK-ERROR-NEXT: cinv w3, wsp, ne
1424 // CHECK-ERROR-NEXT: ^
1425 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1426 // CHECK-ERROR-NEXT: cinv sp, x9, eq
1427 // CHECK-ERROR-NEXT: ^
1428 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1429 // CHECK-ERROR-NEXT: cinv w8, x7, nv
1430 // CHECK-ERROR-NEXT: ^
1435 // CHECK-ERROR: error: invalid operand for instruction
1436 // CHECK-ERROR-NEXT: cneg w3, wsp, ne
1437 // CHECK-ERROR-NEXT: ^
1438 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1439 // CHECK-ERROR-NEXT: cneg sp, x9, eq
1440 // CHECK-ERROR-NEXT: ^
1441 // CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
1442 // CHECK-ERROR-NEXT: cneg x4, x5, al
1443 // CHECK-ERROR-NEXT: ^
1445 //------------------------------------------------------------------------------
1446 // Data Processing (1 source)
1447 //------------------------------------------------------------------------------
1449 //CHECK-ERROR: error: invalid operand for instruction
1450 //CHECK-ERROR-NEXT: rbit x23, w2
1453 //CHECK-ERROR: error: invalid operand for instruction
1454 //CHECK-ERROR-NEXT: cls sp, x2
1457 //CHECK-ERROR: error: invalid operand for instruction
1458 //CHECK-ERROR-NEXT: clz wsp, w3
1460 //------------------------------------------------------------------------------
1461 // Data Processing (2 sources)
1462 //------------------------------------------------------------------------------
1464 //CHECK-ERROR: error: invalid operand for instruction
1465 //CHECK-ERROR-NEXT: udiv x23, w2, x18
1468 //CHECK-ERROR: error: invalid operand for instruction
1469 //CHECK-ERROR-NEXT: lsl sp, x2, x4
1472 //CHECK-ERROR: error: invalid operand for instruction
1473 //CHECK-ERROR-NEXT: asr wsp, w3, w9
1475 //------------------------------------------------------------------------------
1476 // Data Processing (3 sources)
1477 //------------------------------------------------------------------------------
1479 madd sp, x3, x9, x10
1480 //CHECK-ERROR: error: invalid operand for instruction
1481 //CHECK-ERROR-NEXT: madd sp, x3, x9, x10
1483 //------------------------------------------------------------------------------
1484 // Exception generation
1485 //------------------------------------------------------------------------------
1490 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 65535]
1491 // CHECK-ERROR-NEXT: svc #-1
1492 // CHECK-ERROR-NEXT: ^
1493 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 65535]
1494 // CHECK-ERROR-NEXT: hlt #65536
1495 // CHECK-ERROR-NEXT: ^
1496 // CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}
1497 // CHECK-ERROR-NEXT: dcps4 #43
1498 // CHECK-ERROR-NEXT: ^
1499 // CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}
1500 // CHECK-ERROR-NEXT: dcps4
1501 // CHECK-ERROR-NEXT: ^
1503 //------------------------------------------------------------------------------
1504 // Extract (immediate)
1505 //------------------------------------------------------------------------------
1507 extr w2, w20, w30, #-1
1508 extr w9, w19, w20, #32
1509 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1510 // CHECK-ERROR-NEXT: extr w2, w20, w30, #-1
1511 // CHECK-ERROR-NEXT: ^
1512 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1513 // CHECK-ERROR-NEXT: extr w9, w19, w20, #32
1514 // CHECK-ERROR-NEXT: ^
1516 extr x10, x15, x20, #-1
1517 extr x20, x25, x30, #64
1518 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
1519 // CHECK-ERROR-NEXT: extr x10, x15, x20, #-1
1520 // CHECK-ERROR-NEXT: ^
1521 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
1522 // CHECK-ERROR-NEXT: extr x20, x25, x30, #64
1523 // CHECK-ERROR-NEXT: ^
1527 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1528 // CHECK-ERROR-NEXT: ror w9, w10, #32
1529 // CHECK-ERROR-NEXT: ^
1530 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
1531 // CHECK-ERROR-NEXT: ror x10, x11, #64
1532 // CHECK-ERROR-NEXT: ^
1534 //------------------------------------------------------------------------------
1535 // Floating-point compare
1536 //------------------------------------------------------------------------------
1539 // CHECK-ERROR-AARCH64: error: expected floating-point constant #0.0
1540 // CHECK-ERROR-ARM64: error: invalid operand for instruction
1541 // CHECK-ERROR-NEXT: fcmp s3, d2
1542 // CHECK-ERROR-NEXT: ^
1548 // CHECK-ERROR: error: expected floating-point constant #0.0
1549 // CHECK-ERROR-NEXT: fcmp s9, #-0.0
1550 // CHECK-ERROR-NEXT: ^
1551 // CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
1552 // CHECK-ERROR-NEXT: fcmp d3, #-0.0
1553 // CHECK-ERROR-NEXT: ^
1554 // CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
1555 // CHECK-ERROR-NEXT: fcmp s1, #1.0
1556 // CHECK-ERROR-NEXT: ^
1557 // CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
1558 // CHECK-ERROR-NEXT: fcmpe s30, #-0.0
1559 // CHECK-ERROR-NEXT: ^
1561 //------------------------------------------------------------------------------
1562 // Floating-point conditional compare
1563 //------------------------------------------------------------------------------
1565 fccmp s19, s5, #-1, lt
1566 fccmp s20, s7, #16, hs
1567 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1568 // CHECK-ERROR-NEXT: fccmp s19, s5, #-1, lt
1569 // CHECK-ERROR-NEXT: ^
1570 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1571 // CHECK-ERROR-NEXT: fccmp s20, s7, #16, hs
1572 // CHECK-ERROR-NEXT: ^
1574 fccmp d19, d5, #-1, lt
1575 fccmp d20, d7, #16, hs
1576 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1577 // CHECK-ERROR-NEXT: fccmp d19, d5, #-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 d20, d7, #16, hs
1581 // CHECK-ERROR-NEXT: ^
1583 fccmpe s19, s5, #-1, lt
1584 fccmpe s20, s7, #16, hs
1585 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1586 // CHECK-ERROR-NEXT: fccmpe s19, s5, #-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: fccmpe s20, s7, #16, hs
1590 // CHECK-ERROR-NEXT: ^
1592 fccmpe d19, d5, #-1, lt
1593 fccmpe d20, d7, #16, hs
1594 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1595 // CHECK-ERROR-NEXT: fccmpe d19, d5, #-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 d20, d7, #16, hs
1599 // CHECK-ERROR-NEXT: ^
1601 //------------------------------------------------------------------------------
1602 // Floating-point conditional compare
1603 //------------------------------------------------------------------------------
1605 fcsel q3, q20, q9, pl
1606 fcsel h9, h10, h11, mi
1607 fcsel b9, b10, b11, mi
1608 // CHECK-ERROR: error: invalid operand for instruction
1609 // CHECK-ERROR-NEXT: fcsel q3, q20, q9, pl
1610 // CHECK-ERROR-NEXT: ^
1611 // CHECK-ERROR-NEXT: error: instruction requires: fullfp16
1612 // CHECK-ERROR-NEXT: fcsel h9, h10, h11, mi
1613 // CHECK-ERROR-NEXT: ^
1614 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1615 // CHECK-ERROR-NEXT: fcsel b9, b10, b11, mi
1616 // CHECK-ERROR-NEXT: ^
1618 //------------------------------------------------------------------------------
1619 // Floating-point data-processing (1 source)
1620 //------------------------------------------------------------------------------
1624 // CHECK-ERROR: error: expected compatible register or floating-point constant
1625 // CHECK-ERROR-NEXT: fmov d0, s3
1626 // CHECK-ERROR-NEXT: ^
1627 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1628 // CHECK-ERROR-NEXT: fcvt d0, d1
1629 // CHECK-ERROR-NEXT: ^
1632 //------------------------------------------------------------------------------
1633 // Floating-point data-processing (2 sources)
1634 //------------------------------------------------------------------------------
1639 // CHECK-ERROR: error: invalid operand for instruction
1640 // CHECK-ERROR-NEXT: fadd s0, d3, d7
1641 // CHECK-ERROR-NEXT: ^
1642 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1643 // CHECK-ERROR-NEXT: fmaxnm d3, s19, d12
1644 // CHECK-ERROR-NEXT: ^
1645 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1646 // CHECK-ERROR-NEXT: fnmul d1, d9, s18
1647 // CHECK-ERROR-NEXT: ^
1649 //------------------------------------------------------------------------------
1650 // Floating-point data-processing (3 sources)
1651 //------------------------------------------------------------------------------
1653 fmadd b3, b4, b5, b6
1654 fmsub h1, h2, h3, h4
1655 fnmadd q3, q5, q6, q7
1656 fnmsub s2, s4, d5, h9
1657 // CHECK-ERROR: error: invalid operand for instruction
1658 // CHECK-ERROR-NEXT: fmadd b3, b4, b5, b6
1659 // CHECK-ERROR-NEXT: ^
1660 // CHECK-ERROR-NEXT: error: instruction requires: fullfp16
1661 // CHECK-ERROR-NEXT: fmsub h1, h2, h3, h4
1662 // CHECK-ERROR-NEXT: ^
1663 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1664 // CHECK-ERROR-NEXT: fnmadd q3, q5, q6, q7
1665 // CHECK-ERROR-NEXT: ^
1666 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1667 // CHECK-ERROR-NEXT: fnmsub s2, s4, d5, h9
1668 // CHECK-ERROR-NEXT: ^
1670 //------------------------------------------------------------------------------
1671 // Floating-point conditional compare
1672 //------------------------------------------------------------------------------
1675 fcvtzs w19, s20, #33
1676 fcvtzs wsp, s19, #14
1677 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1678 // CHECK-ERROR-NEXT: fcvtzs w13, s31, #0
1679 // CHECK-ERROR-NEXT: ^
1680 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1681 // CHECK-ERROR-NEXT: fcvtzs w19, s20, #33
1682 // CHECK-ERROR-NEXT: ^
1683 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1684 // CHECK-ERROR-NEXT: fcvtzs wsp, s19, #14
1685 // CHECK-ERROR-NEXT: ^
1688 fcvtzs x19, s20, #65
1690 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1691 // CHECK-ERROR-NEXT: fcvtzs x13, s31, #0
1692 // CHECK-ERROR-NEXT: ^
1693 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1694 // CHECK-ERROR-NEXT: fcvtzs x19, s20, #65
1695 // CHECK-ERROR-NEXT: ^
1696 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1697 // CHECK-ERROR-NEXT: fcvtzs sp, s19, #14
1698 // CHECK-ERROR-NEXT: ^
1701 fcvtzu w19, s20, #33
1702 fcvtzu wsp, s19, #14
1703 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1704 // CHECK-ERROR-NEXT: fcvtzu w13, s31, #0
1705 // CHECK-ERROR-NEXT: ^
1706 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1707 // CHECK-ERROR-NEXT: fcvtzu w19, s20, #33
1708 // CHECK-ERROR-NEXT: ^
1709 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1710 // CHECK-ERROR-NEXT: fcvtzu wsp, s19, #14
1711 // CHECK-ERROR-NEXT: ^
1714 fcvtzu x19, s20, #65
1716 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1717 // CHECK-ERROR-NEXT: fcvtzu x13, s31, #0
1718 // CHECK-ERROR-NEXT: ^
1719 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1720 // CHECK-ERROR-NEXT: fcvtzu x19, s20, #65
1721 // CHECK-ERROR-NEXT: ^
1722 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1723 // CHECK-ERROR-NEXT: fcvtzu sp, s19, #14
1724 // CHECK-ERROR-NEXT: ^
1729 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1730 // CHECK-ERROR-NEXT: scvtf w13, s31, #0
1731 // CHECK-ERROR-NEXT: ^
1732 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1733 // CHECK-ERROR-NEXT: scvtf w19, s20, #33
1734 // CHECK-ERROR-NEXT: ^
1735 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1736 // CHECK-ERROR-NEXT: scvtf wsp, s19, #14
1737 // CHECK-ERROR-NEXT: ^
1742 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1743 // CHECK-ERROR-NEXT: scvtf x13, s31, #0
1744 // CHECK-ERROR-NEXT: ^
1745 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1746 // CHECK-ERROR-NEXT: scvtf x19, s20, #65
1747 // CHECK-ERROR-NEXT: ^
1748 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1749 // CHECK-ERROR-NEXT: scvtf sp, s19, #14
1750 // CHECK-ERROR-NEXT: ^
1755 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1756 // CHECK-ERROR-NEXT: ucvtf w13, s31, #0
1757 // CHECK-ERROR-NEXT: ^
1758 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1759 // CHECK-ERROR-NEXT: ucvtf w19, s20, #33
1760 // CHECK-ERROR-NEXT: ^
1761 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1762 // CHECK-ERROR-NEXT: ucvtf wsp, s19, #14
1763 // CHECK-ERROR-NEXT: ^
1768 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1769 // CHECK-ERROR-NEXT: ucvtf x13, s31, #0
1770 // CHECK-ERROR-NEXT: ^
1771 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1772 // CHECK-ERROR-NEXT: ucvtf x19, s20, #65
1773 // CHECK-ERROR-NEXT: ^
1774 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1775 // CHECK-ERROR-NEXT: ucvtf sp, s19, #14
1776 // CHECK-ERROR-NEXT: ^
1778 //------------------------------------------------------------------------------
1779 // Floating-point immediate
1780 //------------------------------------------------------------------------------
1781 ;; Exponent too large
1786 // CHECK-ERROR: error: expected compatible register or floating-point constant
1787 // CHECK-ERROR-NEXT: fmov d3, #0.0625
1788 // CHECK-ERROR-NEXT: ^
1789 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1790 // CHECK-ERROR-NEXT: fmov s2, #32.0
1791 // CHECK-ERROR-NEXT: ^
1792 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1793 // CHECK-ERROR-NEXT: fmov s2, #32
1794 // CHECK-ERROR-NEXT: ^
1795 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1796 // CHECK-ERROR-NEXT: fmov v0.4s, #-32
1797 // CHECK-ERROR-NEXT: ^
1799 ;; Fraction too precise
1802 // CHECK-ERROR: error: expected compatible register or floating-point constant
1803 // CHECK-ERROR-NEXT: fmov s9, #1.03125
1804 // CHECK-ERROR-NEXT: ^
1805 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1806 // CHECK-ERROR-NEXT: fmov s28, #1.96875
1807 // CHECK-ERROR-NEXT: ^
1809 ;; Explicitly encoded value too large
1811 // CHECK-ERROR: error: encoded floating point value out of range
1812 // CHECK-ERROR-NEXT: fmov s15, #0x100
1813 // CHECK-ERROR-NEXT: ^
1815 ;; Not possible to fmov ZR to a whole vector
1817 // CHECK-ERROR: error: expected compatible register or floating-point constant
1818 // CHECK-ERROR-NEXT: fmov v0.4s, #0.0
1819 // CHECK-ERROR-NEXT: ^
1821 //------------------------------------------------------------------------------
1822 // Floating-point <-> integer conversion
1823 //------------------------------------------------------------------------------
1830 // CHECK-ERROR: error: expected lane specifier '[1]'
1831 // CHECK-ERROR-NEXT: fmov x3, v0.d[0]
1832 // CHECK-ERROR-NEXT: ^
1833 // CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout
1834 // CHECK-ERROR-ARM64-NEXT: error: invalid operand for instruction
1835 // CHECK-ERROR-NEXT: fmov v29.1d[1], x2
1836 // CHECK-ERROR-NEXT: ^
1837 // CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout
1838 // CHECK-ERROR-ARM64-NEXT: error: expected lane specifier '[1]'
1839 // CHECK-ERROR-NEXT: fmov x7, v0.d[2]
1840 // CHECK-ERROR-NEXT: ^
1841 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1842 // CHECK-ERROR-NEXT: fcvtns sp, s5
1843 // CHECK-ERROR-NEXT: ^
1844 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1845 // CHECK-ERROR-NEXT: scvtf s6, wsp
1846 // CHECK-ERROR-NEXT: ^
1848 //------------------------------------------------------------------------------
1849 // Load-register (literal)
1850 //------------------------------------------------------------------------------
1854 // CHECK-ERROR: error: invalid operand for instruction
1855 // CHECK-ERROR-NEXT: ldr sp, some_label
1856 // CHECK-ERROR-NEXT: ^
1857 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1858 // CHECK-ERROR-NEXT: ldrsw w3, somewhere
1859 // CHECK-ERROR-NEXT: ^
1864 // CHECK-ERROR: error: expected label or encodable integer pc offset
1865 // CHECK-ERROR-NEXT: ldrsw x2, #1048576
1866 // CHECK-ERROR-NEXT: ^
1867 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1868 // CHECK-ERROR-NEXT: ldr q0, #-1048580
1869 // CHECK-ERROR-NEXT: ^
1870 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1871 // CHECK-ERROR-NEXT: ldr x0, #2
1872 // CHECK-ERROR-NEXT: ^
1874 //------------------------------------------------------------------------------
1875 // Load/store exclusive
1876 //------------------------------------------------------------------------------
1878 stxrb w2, w3, [x4, #20]
1879 stlxrh w10, w11, [w2]
1880 // CHECK-ERROR-AARCH64: error: expected '#0'
1881 // CHECK-ERROR-ARM64: error: index must be absent or #0
1882 // CHECK-ERROR-NEXT: stxrb w2, w3, [x4, #20]
1883 // CHECK-ERROR-NEXT: ^
1884 // CHECK-ERROR: error: invalid operand for instruction
1885 // CHECK-ERROR-NEXT: stlxrh w10, w11, [w2]
1886 // CHECK-ERROR-NEXT: ^
1888 stlxr x20, w21, [sp]
1889 // CHECK-ERROR: error: invalid operand for instruction
1890 // CHECK-ERROR-NEXT: stlxr x20, w21, [sp]
1891 // CHECK-ERROR-NEXT: ^
1894 // CHECK-ERROR: error: invalid operand for instruction
1895 // CHECK-ERROR-NEXT: ldxr sp, [sp]
1896 // CHECK-ERROR-NEXT: ^
1898 stxp x1, x2, x3, [x4]
1899 // CHECK-ERROR: error: invalid operand for instruction
1900 // CHECK-ERROR-NEXT: stxp x1, x2, x3, [x4]
1901 // CHECK-ERROR-NEXT: ^
1903 stlxp w5, x1, w4, [x5]
1904 // CHECK-ERROR: error: invalid operand for instruction
1905 // CHECK-ERROR-NEXT: stlxp w5, x1, w4, [x5]
1906 // CHECK-ERROR-NEXT: ^
1908 stlxp w17, w6, x7, [x22]
1909 // CHECK-ERROR: error: invalid operand for instruction
1910 // CHECK-ERROR-NEXT: stlxp w17, w6, x7, [x22]
1911 // CHECK-ERROR-NEXT: ^
1913 //------------------------------------------------------------------------------
1914 // Load/store (unscaled immediate)
1915 //------------------------------------------------------------------------------
1917 ldurb w2, [sp, #256]
1918 sturh w17, [x1, #256]
1919 ldursw x20, [x1, #256]
1920 ldur x12, [sp, #256]
1921 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
1922 // CHECK-ERROR-NEXT: ldurb w2, [sp, #256]
1923 // CHECK-ERROR-NEXT: ^
1924 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1925 // CHECK-ERROR-NEXT: sturh w17, [x1, #256]
1926 // CHECK-ERROR-NEXT: ^
1927 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1928 // CHECK-ERROR-NEXT: ldursw x20, [x1, #256]
1929 // CHECK-ERROR-NEXT: ^
1930 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1931 // CHECK-ERROR-NEXT: ldur x12, [sp, #256]
1932 // CHECK-ERROR-NEXT: ^
1934 stur h2, [x2, #-257]
1935 stur b2, [x2, #-257]
1936 ldursb x9, [sp, #-257]
1937 ldur w2, [x30, #-257]
1938 stur q9, [x20, #-257]
1939 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
1940 // CHECK-ERROR-NEXT: stur h2, [x2, #-257]
1941 // CHECK-ERROR-NEXT: ^
1942 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1943 // CHECK-ERROR-NEXT: stur b2, [x2, #-257]
1944 // CHECK-ERROR-NEXT: ^
1945 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1946 // CHECK-ERROR-NEXT: ldursb x9, [sp, #-257]
1947 // CHECK-ERROR-NEXT: ^
1948 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1949 // CHECK-ERROR-NEXT: ldur w2, [x30, #-257]
1950 // CHECK-ERROR-NEXT: ^
1951 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1952 // CHECK-ERROR-NEXT: stur q9, [x20, #-257]
1953 // CHECK-ERROR-NEXT: ^
1955 prfum pstl3strm, [xzr]
1956 // CHECK-ERROR: error: invalid operand for instruction
1957 // CHECK-ERROR-NEXT: prfum pstl3strm, [xzr]
1958 // CHECK-ERROR-NEXT: ^
1960 //------------------------------------------------------------------------------
1961 // Load-store register (immediate post-indexed)
1962 //------------------------------------------------------------------------------
1963 ldr x3, [x4, #25], #0
1964 ldr x4, [x9, #0], #4
1965 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
1966 // CHECK-ERROR-ARM64: error: invalid operand for instruction
1967 // CHECK-ERROR-NEXT: ldr x3, [x4, #25], #0
1968 // CHECK-ERROR-NEXT: ^
1969 // CHECK-ERROR-AARCH64-NEXT: error: expected label or encodable integer pc offset
1970 // CHECK-ERROR-AARCH64-NEXT: ldr x4, [x9, #0], #4
1971 // CHECK-ERROR-AARCH64-NEXT: ^
1973 strb w1, [x19], #256
1974 strb w9, [sp], #-257
1975 strh w1, [x19], #256
1976 strh w9, [sp], #-257
1979 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
1980 // CHECK-ERROR-NEXT: strb w1, [x19], #256
1981 // CHECK-ERROR-NEXT: ^
1982 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1983 // CHECK-ERROR-NEXT: strb w9, [sp], #-257
1984 // CHECK-ERROR-NEXT: ^
1985 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1986 // CHECK-ERROR-NEXT: strh w1, [x19], #256
1987 // CHECK-ERROR-NEXT: ^
1988 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1989 // CHECK-ERROR-NEXT: strh w9, [sp], #-257
1990 // CHECK-ERROR-NEXT: ^
1991 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1992 // CHECK-ERROR-NEXT: str w1, [x19], #256
1993 // CHECK-ERROR-NEXT: ^
1994 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1995 // CHECK-ERROR-NEXT: str w9, [sp], #-257
1996 // CHECK-ERROR-NEXT: ^
1998 ldrb w1, [x19], #256
1999 ldrb w9, [sp], #-257
2000 ldrh w1, [x19], #256
2001 ldrh w9, [sp], #-257
2004 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
2005 // CHECK-ERROR-NEXT: ldrb w1, [x19], #256
2006 // CHECK-ERROR-NEXT: ^
2007 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2008 // CHECK-ERROR-NEXT: ldrb w9, [sp], #-257
2009 // CHECK-ERROR-NEXT: ^
2010 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2011 // CHECK-ERROR-NEXT: ldrh w1, [x19], #256
2012 // CHECK-ERROR-NEXT: ^
2013 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2014 // CHECK-ERROR-NEXT: ldrh w9, [sp], #-257
2015 // CHECK-ERROR-NEXT: ^
2016 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2017 // CHECK-ERROR-NEXT: ldr w1, [x19], #256
2018 // CHECK-ERROR-NEXT: ^
2019 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2020 // CHECK-ERROR-NEXT: ldr w9, [sp], #-257
2021 // CHECK-ERROR-NEXT: ^
2023 ldrsb x2, [x3], #256
2024 ldrsb x22, [x13], #-257
2025 ldrsh x2, [x3], #256
2026 ldrsh x22, [x13], #-257
2027 ldrsw x2, [x3], #256
2028 ldrsw x22, [x13], #-257
2029 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
2030 // CHECK-ERROR-NEXT: ldrsb x2, [x3], #256
2031 // CHECK-ERROR-NEXT: ^
2032 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2033 // CHECK-ERROR-NEXT: ldrsb x22, [x13], #-257
2034 // CHECK-ERROR-NEXT: ^
2035 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2036 // CHECK-ERROR-NEXT: ldrsh x2, [x3], #256
2037 // CHECK-ERROR-NEXT: ^
2038 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2039 // CHECK-ERROR-NEXT: ldrsh x22, [x13], #-257
2040 // CHECK-ERROR-NEXT: ^
2041 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2042 // CHECK-ERROR-NEXT: ldrsw x2, [x3], #256
2043 // CHECK-ERROR-NEXT: ^
2044 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2045 // CHECK-ERROR-NEXT: ldrsw x22, [x13], #-257
2046 // CHECK-ERROR-NEXT: ^
2048 ldrsb w2, [x3], #256
2049 ldrsb w22, [x13], #-257
2050 ldrsh w2, [x3], #256
2051 ldrsh w22, [x13], #-257
2052 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
2053 // CHECK-ERROR-NEXT: ldrsb w2, [x3], #256
2054 // CHECK-ERROR-NEXT: ^
2055 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2056 // CHECK-ERROR-NEXT: ldrsb w22, [x13], #-257
2057 // CHECK-ERROR-NEXT: ^
2058 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2059 // CHECK-ERROR-NEXT: ldrsh w2, [x3], #256
2060 // CHECK-ERROR-NEXT: ^
2061 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2062 // CHECK-ERROR-NEXT: ldrsh w22, [x13], #-257
2063 // CHECK-ERROR-NEXT: ^
2066 str b3, [x13], #-257
2068 str h3, [x13], #-257
2070 str s3, [x13], #-257
2072 str d3, [x13], #-257
2074 str q3, [x13], #-257
2075 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
2076 // CHECK-ERROR-NEXT: str b3, [x3], #256
2077 // CHECK-ERROR-NEXT: ^
2078 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2079 // CHECK-ERROR-NEXT: str b3, [x13], #-257
2080 // CHECK-ERROR-NEXT: ^
2081 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2082 // CHECK-ERROR-NEXT: str h3, [x3], #256
2083 // CHECK-ERROR-NEXT: ^
2084 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2085 // CHECK-ERROR-NEXT: str h3, [x13], #-257
2086 // CHECK-ERROR-NEXT: ^
2087 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2088 // CHECK-ERROR-NEXT: str s3, [x3], #256
2089 // CHECK-ERROR-NEXT: ^
2090 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2091 // CHECK-ERROR-NEXT: str s3, [x13], #-257
2092 // CHECK-ERROR-NEXT: ^
2093 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2094 // CHECK-ERROR-NEXT: str d3, [x3], #256
2095 // CHECK-ERROR-NEXT: ^
2096 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2097 // CHECK-ERROR-NEXT: str d3, [x13], #-257
2098 // CHECK-ERROR-NEXT: ^
2099 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2100 // CHECK-ERROR-NEXT: str q3, [x3], #256
2101 // CHECK-ERROR-NEXT: ^
2102 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2103 // CHECK-ERROR-NEXT: str q3, [x13], #-257
2104 // CHECK-ERROR-NEXT: ^
2107 ldr b3, [x13], #-257
2109 ldr h3, [x13], #-257
2111 ldr s3, [x13], #-257
2113 ldr d3, [x13], #-257
2115 ldr q3, [x13], #-257
2116 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
2117 // CHECK-ERROR-NEXT: ldr b3, [x3], #256
2118 // CHECK-ERROR-NEXT: ^
2119 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2120 // CHECK-ERROR-NEXT: ldr b3, [x13], #-257
2121 // CHECK-ERROR-NEXT: ^
2122 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2123 // CHECK-ERROR-NEXT: ldr h3, [x3], #256
2124 // CHECK-ERROR-NEXT: ^
2125 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2126 // CHECK-ERROR-NEXT: ldr h3, [x13], #-257
2127 // CHECK-ERROR-NEXT: ^
2128 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2129 // CHECK-ERROR-NEXT: ldr s3, [x3], #256
2130 // CHECK-ERROR-NEXT: ^
2131 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2132 // CHECK-ERROR-NEXT: ldr s3, [x13], #-257
2133 // CHECK-ERROR-NEXT: ^
2134 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2135 // CHECK-ERROR-NEXT: ldr d3, [x3], #256
2136 // CHECK-ERROR-NEXT: ^
2137 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2138 // CHECK-ERROR-NEXT: ldr d3, [x13], #-257
2139 // CHECK-ERROR-NEXT: ^
2140 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2141 // CHECK-ERROR-NEXT: ldr q3, [x3], #256
2142 // CHECK-ERROR-NEXT: ^
2143 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2144 // CHECK-ERROR-NEXT: ldr q3, [x13], #-257
2145 // CHECK-ERROR-NEXT: ^
2147 //------------------------------------------------------------------------------
2148 // Load-store register (immediate pre-indexed)
2149 //------------------------------------------------------------------------------
2152 // CHECK-ERROR: error:
2153 // CHECK-ERROR-NEXT: ldr x3, [x4]!
2154 // CHECK-ERROR-NEXT: ^
2156 strb w1, [x19, #256]!
2157 strb w9, [sp, #-257]!
2158 strh w1, [x19, #256]!
2159 strh w9, [sp, #-257]!
2160 str w1, [x19, #256]!
2161 str w9, [sp, #-257]!
2162 // CHECK-ERROR: error: invalid operand for instruction
2163 // CHECK-ERROR-NEXT: strb w1, [x19, #256]!
2164 // CHECK-ERROR-NEXT: ^
2165 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2166 // CHECK-ERROR-NEXT: strb w9, [sp, #-257]!
2167 // CHECK-ERROR-NEXT: ^
2168 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2169 // CHECK-ERROR-NEXT: strh w1, [x19, #256]!
2170 // CHECK-ERROR-NEXT: ^
2171 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2172 // CHECK-ERROR-NEXT: strh w9, [sp, #-257]!
2173 // CHECK-ERROR-NEXT: ^
2174 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2175 // CHECK-ERROR-NEXT: str w1, [x19, #256]!
2176 // CHECK-ERROR-NEXT: ^
2177 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2178 // CHECK-ERROR-NEXT: str w9, [sp, #-257]!
2179 // CHECK-ERROR-NEXT: ^
2181 ldrb w1, [x19, #256]!
2182 ldrb w9, [sp, #-257]!
2183 ldrh w1, [x19, #256]!
2184 ldrh w9, [sp, #-257]!
2185 ldr w1, [x19, #256]!
2186 ldr w9, [sp, #-257]!
2187 // CHECK-ERROR: error: invalid operand for instruction
2188 // CHECK-ERROR-NEXT: ldrb w1, [x19, #256]!
2189 // CHECK-ERROR-NEXT: ^
2190 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2191 // CHECK-ERROR-NEXT: ldrb w9, [sp, #-257]!
2192 // CHECK-ERROR-NEXT: ^
2193 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2194 // CHECK-ERROR-NEXT: ldrh w1, [x19, #256]!
2195 // CHECK-ERROR-NEXT: ^
2196 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2197 // CHECK-ERROR-NEXT: ldrh w9, [sp, #-257]!
2198 // CHECK-ERROR-NEXT: ^
2199 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2200 // CHECK-ERROR-NEXT: ldr w1, [x19, #256]!
2201 // CHECK-ERROR-NEXT: ^
2202 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2203 // CHECK-ERROR-NEXT: ldr w9, [sp, #-257]!
2204 // CHECK-ERROR-NEXT: ^
2206 ldrsb x2, [x3, #256]!
2207 ldrsb x22, [x13, #-257]!
2208 ldrsh x2, [x3, #256]!
2209 ldrsh x22, [x13, #-257]!
2210 ldrsw x2, [x3, #256]!
2211 ldrsw x22, [x13, #-257]!
2212 // CHECK-ERROR: error: invalid operand for instruction
2213 // CHECK-ERROR-NEXT: ldrsb x2, [x3, #256]!
2214 // CHECK-ERROR-NEXT: ^
2215 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2216 // CHECK-ERROR-NEXT: ldrsb x22, [x13, #-257]!
2217 // CHECK-ERROR-NEXT: ^
2218 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2219 // CHECK-ERROR-NEXT: ldrsh x2, [x3, #256]!
2220 // CHECK-ERROR-NEXT: ^
2221 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2222 // CHECK-ERROR-NEXT: ldrsh x22, [x13, #-257]!
2223 // CHECK-ERROR-NEXT: ^
2224 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2225 // CHECK-ERROR-NEXT: ldrsw x2, [x3, #256]!
2226 // CHECK-ERROR-NEXT: ^
2227 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2228 // CHECK-ERROR-NEXT: ldrsw x22, [x13, #-257]!
2229 // CHECK-ERROR-NEXT: ^
2231 ldrsb w2, [x3, #256]!
2232 ldrsb w22, [x13, #-257]!
2233 ldrsh w2, [x3, #256]!
2234 ldrsh w22, [x13, #-257]!
2235 // CHECK-ERROR: error: invalid operand for instruction
2236 // CHECK-ERROR-NEXT: ldrsb w2, [x3, #256]!
2237 // CHECK-ERROR-NEXT: ^
2238 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2239 // CHECK-ERROR-NEXT: ldrsb w22, [x13, #-257]!
2240 // CHECK-ERROR-NEXT: ^
2241 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2242 // CHECK-ERROR-NEXT: ldrsh w2, [x3, #256]!
2243 // CHECK-ERROR-NEXT: ^
2244 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2245 // CHECK-ERROR-NEXT: ldrsh w22, [x13, #-257]!
2246 // CHECK-ERROR-NEXT: ^
2249 str b3, [x13, #-257]!
2251 str h3, [x13, #-257]!
2253 str s3, [x13, #-257]!
2255 str d3, [x13, #-257]!
2256 // CHECK-ERROR: error: invalid operand for instruction
2257 // CHECK-ERROR-NEXT: str b3, [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: str b3, [x13, #-257]!
2261 // CHECK-ERROR-NEXT: ^
2262 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2263 // CHECK-ERROR-NEXT: str h3, [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: str h3, [x13, #-257]!
2267 // CHECK-ERROR-NEXT: ^
2268 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2269 // CHECK-ERROR-NEXT: str s3, [x3, #256]!
2270 // CHECK-ERROR-NEXT: ^
2271 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2272 // CHECK-ERROR-NEXT: str s3, [x13, #-257]!
2273 // CHECK-ERROR-NEXT: ^
2274 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2275 // CHECK-ERROR-NEXT: str d3, [x3, #256]!
2276 // CHECK-ERROR-NEXT: ^
2277 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2278 // CHECK-ERROR-NEXT: str d3, [x13, #-257]!
2279 // CHECK-ERROR-NEXT: ^
2282 ldr b3, [x13, #-257]!
2284 ldr h3, [x13, #-257]!
2286 ldr s3, [x13, #-257]!
2288 ldr d3, [x13, #-257]!
2289 // CHECK-ERROR: error: invalid operand for instruction
2290 // CHECK-ERROR-NEXT: ldr b3, [x3, #256]!
2291 // CHECK-ERROR-NEXT: ^
2292 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2293 // CHECK-ERROR-NEXT: ldr b3, [x13, #-257]!
2294 // CHECK-ERROR-NEXT: ^
2295 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2296 // CHECK-ERROR-NEXT: ldr h3, [x3, #256]!
2297 // CHECK-ERROR-NEXT: ^
2298 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2299 // CHECK-ERROR-NEXT: ldr h3, [x13, #-257]!
2300 // CHECK-ERROR-NEXT: ^
2301 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2302 // CHECK-ERROR-NEXT: ldr s3, [x3, #256]!
2303 // CHECK-ERROR-NEXT: ^
2304 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2305 // CHECK-ERROR-NEXT: ldr s3, [x13, #-257]!
2306 // CHECK-ERROR-NEXT: ^
2307 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2308 // CHECK-ERROR-NEXT: ldr d3, [x3, #256]!
2309 // CHECK-ERROR-NEXT: ^
2310 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2311 // CHECK-ERROR-NEXT: ldr d3, [x13, #-257]!
2312 // CHECK-ERROR-NEXT: ^
2314 //------------------------------------------------------------------------------
2315 // Load/store (unprivileged)
2316 //------------------------------------------------------------------------------
2318 ldtrb w2, [sp, #256]
2319 sttrh w17, [x1, #256]
2320 ldtrsw x20, [x1, #256]
2321 ldtr x12, [sp, #256]
2322 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
2323 // CHECK-ERROR-NEXT: ldtrb w2, [sp, #256]
2324 // CHECK-ERROR-NEXT: ^
2325 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2326 // CHECK-ERROR-NEXT: sttrh w17, [x1, #256]
2327 // CHECK-ERROR-NEXT: ^
2328 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2329 // CHECK-ERROR-NEXT: ldtrsw x20, [x1, #256]
2330 // CHECK-ERROR-NEXT: ^
2331 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2332 // CHECK-ERROR-NEXT: ldtr x12, [sp, #256]
2333 // CHECK-ERROR-NEXT: ^
2335 sttr h2, [x2, #-257]
2336 sttr b2, [x2, #-257]
2337 ldtrsb x9, [sp, #-257]
2338 ldtr w2, [x30, #-257]
2339 sttr q9, [x20, #-257]
2340 // CHECK-ERROR: error: invalid operand for instruction
2341 // CHECK-ERROR-NEXT: sttr h2, [x2, #-257]
2342 // CHECK-ERROR-NEXT: ^
2343 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2344 // CHECK-ERROR-NEXT: sttr b2, [x2, #-257]
2345 // CHECK-ERROR-NEXT: ^
2346 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2347 // CHECK-ERROR-NEXT: ldtrsb x9, [sp, #-257]
2348 // CHECK-ERROR-NEXT: ^
2349 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2350 // CHECK-ERROR-NEXT: ldtr w2, [x30, #-257]
2351 // CHECK-ERROR-NEXT: ^
2352 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2353 // CHECK-ERROR-NEXT: sttr q9, [x20, #-257]
2354 // CHECK-ERROR-NEXT: ^
2357 //------------------------------------------------------------------------------
2358 // Load/store (unsigned immediate)
2359 //------------------------------------------------------------------------------
2361 //// Out of range immediates
2362 ldr q0, [x11, #65536]
2363 ldr x0, [sp, #32768]
2364 ldr w0, [x4, #16384]
2365 ldrh w2, [x21, #8192]
2366 ldrb w3, [x12, #4096]
2367 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
2368 // CHECK-ERROR-NEXT: ldr q0, [x11, #65536]
2369 // CHECK-ERROR-NEXT: ^
2370 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2371 // CHECK-ERROR-NEXT: ldr x0, [sp, #32768]
2372 // CHECK-ERROR-NEXT: ^
2373 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2374 // CHECK-ERROR-NEXT: ldr w0, [x4, #16384]
2375 // CHECK-ERROR-NEXT: ^
2376 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2377 // CHECK-ERROR-NEXT: ldrh w2, [x21, #8192]
2378 // CHECK-ERROR-NEXT: ^
2379 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2380 // CHECK-ERROR-NEXT: ldrb w3, [x12, #4096]
2381 // CHECK-ERROR-NEXT: ^
2383 //// Misaligned addresses
2385 ldrsh w2, [x0, #123]
2387 // CHECK-ERROR-AARCH64: error: too few operands for instruction
2388 // CHECK-ERROR-AARCH64-NEXT: ldr w0, [x0, #2]
2389 // CHECK-ERROR-AARCH64-NEXT: ^
2390 // CHECK-ERROR-AARCH64-NEXT: error: too few operands for instruction
2391 // CHECK-ERROR-AARCH64-NEXT: ldrsh w2, [x0, #123]
2392 // CHECK-ERROR-AARCH64-NEXT: ^
2393 // CHECK-ERROR-AARCH64-NEXT: error: too few operands for instruction
2394 // CHECK-ERROR-AARCH64-NEXT: str q0, [x0, #8]
2395 // CHECK-ERROR-AARCH64-NEXT: ^
2397 //// 32-bit addresses
2400 // CHECK-ERROR: error: invalid operand for instruction
2401 // CHECK-ERROR-NEXT: ldr w0, [w20]
2402 // CHECK-ERROR-NEXT: ^
2403 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2404 // CHECK-ERROR-NEXT: ldrsh x3, [wsp]
2405 // CHECK-ERROR-NEXT: ^
2411 str w7, [x12, #16384]
2412 // CHECK-ERROR: error: invalid operand for instruction
2413 // CHECK-ERROR-NEXT: strb w0, [wsp]
2414 // CHECK-ERROR-NEXT: ^
2415 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
2416 // CHECK-ERROR-AARCH64-NEXT: strh w31, [x23, #1]
2417 // CHECK-ERROR-AARCH64-NEXT: ^
2418 // CHECK-ERROR-AARCH64-NEXT: error: too few operands for instruction
2419 // CHECK-ERROR-AARCH64-NEXT: str x5, [x22, #12]
2420 // CHECK-ERROR-AARCH64-NEXT: ^
2421 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2422 // CHECK-ERROR-NEXT: str w7, [x12, #16384]
2423 // CHECK-ERROR-NEXT: ^
2428 prfm pldl1strm, [w3, #8]
2430 // CHECK-ERROR-AARCH64: error: Invalid immediate for instruction
2431 // CHECK-ERROR-ARM64: error: prefetch operand out of range, [0,31] expected
2432 // CHECK-ERROR-NEXT: prfm #-1, [sp]
2433 // CHECK-ERROR-NEXT: ^
2434 // CHECK-ERROR-AARCH64-NEXT: error: Invalid immediate for instruction
2435 // CHECK-ERROR-ARM64-NEXT: error: prefetch operand out of range, [0,31] expected
2436 // CHECK-ERROR-NEXT: prfm #32, [sp, #8]
2437 // CHECK-ERROR-NEXT: ^
2438 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2439 // CHECK-ERROR-NEXT: prfm pldl1strm, [w3, #8]
2440 // CHECK-ERROR-NEXT: ^
2441 // CHECK-ERROR-AARCH64-NEXT: error: operand specifier not recognised
2442 // CHECK-ERROR-ARM64-NEXT: error: pre-fetch hint expected
2443 // CHECK-ERROR-NEXT: prfm wibble, [sp]
2444 // CHECK-ERROR-NEXT: ^
2446 //------------------------------------------------------------------------------
2447 // Load/store register (register offset)
2448 //------------------------------------------------------------------------------
2451 ldr w4, [x0, x4, lsl]
2452 ldr w9, [x5, x5, uxtw]
2453 ldr w10, [x6, x9, sxtw #2]
2454 ldr w11, [x7, w2, lsl #2]
2455 ldr w12, [x8, w1, sxtx]
2456 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2457 // CHECK-ERROR-NEXT: ldr w3, [xzr, x3]
2458 // CHECK-ERROR-NEXT: ^
2459 // CHECK-ERROR-NEXT: error: expected #imm after shift specifier
2460 // CHECK-ERROR-NEXT: ldr w4, [x0, x4, lsl]
2461 // CHECK-ERROR-NEXT: ^
2462 // CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #2
2463 // CHECK-ERROR-NEXT: ldr w9, [x5, x5, uxtw]
2464 // CHECK-ERROR-NEXT: ^
2465 // CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #2
2466 // CHECK-ERROR-NEXT: ldr w10, [x6, x9, sxtw #2]
2467 // CHECK-ERROR-NEXT: ^
2468 // CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #2
2469 // CHECK-ERROR-NEXT: ldr w11, [x7, w2, lsl #2]
2470 // CHECK-ERROR-NEXT: ^
2471 // CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #2
2472 // CHECK-ERROR-NEXT: ldr w12, [x8, w1, sxtx]
2473 // CHECK-ERROR-NEXT: ^
2475 ldrsb w9, [x4, x2, lsl #-1]
2476 strb w9, [x4, x2, lsl #1]
2477 // CHECK-ERROR-NEXT: error: expected integer shift amount
2478 // CHECK-ERROR-NEXT: ldrsb w9, [x4, x2, lsl #-1]
2479 // CHECK-ERROR-NEXT: ^
2480 // CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0
2481 // CHECK-ERROR-NEXT: strb w9, [x4, x2, lsl #1]
2482 // CHECK-ERROR-NEXT: ^
2484 ldrsh w9, [x4, x2, lsl #-1]
2485 ldr h13, [x4, w2, uxtw #2]
2486 // CHECK-ERROR-NEXT: error: expected integer shift amount
2487 // CHECK-ERROR-NEXT: ldrsh w9, [x4, x2, lsl #-1]
2488 // CHECK-ERROR-NEXT: ^
2489 // CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #1
2490 // CHECK-ERROR-NEXT: ldr h13, [x4, w2, uxtw #2]
2491 // CHECK-ERROR-NEXT: ^
2493 str w9, [x5, w9, sxtw #-1]
2494 str s3, [sp, w9, uxtw #1]
2495 ldrsw x9, [x15, x4, sxtx #3]
2496 // CHECK-ERROR-NEXT: error: expected integer shift amount
2497 // CHECK-ERROR-NEXT: str w9, [x5, w9, sxtw #-1]
2498 // CHECK-ERROR-NEXT: ^
2499 // CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #2
2500 // CHECK-ERROR-NEXT: str s3, [sp, w9, uxtw #1]
2501 // CHECK-ERROR-NEXT: ^
2502 // CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #2
2503 // CHECK-ERROR-NEXT: ldrsw x9, [x15, x4, sxtx #3]
2504 // CHECK-ERROR-NEXT: ^
2506 str xzr, [x5, x9, sxtx #-1]
2507 prfm pldl3keep, [sp, x20, lsl #2]
2508 ldr d3, [x20, wzr, uxtw #4]
2509 // CHECK-ERROR-NEXT: error: expected integer shift amount
2510 // CHECK-ERROR-NEXT: str xzr, [x5, x9, sxtx #-1]
2511 // CHECK-ERROR-NEXT: ^
2512 // CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #3
2513 // CHECK-ERROR-NEXT: prfm pldl3keep, [sp, x20, lsl #2]
2514 // CHECK-ERROR-NEXT: ^
2515 // CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #3
2516 // CHECK-ERROR-NEXT: ldr d3, [x20, wzr, uxtw #4]
2517 // CHECK-ERROR-NEXT: ^
2519 ldr q5, [sp, x2, lsl #-1]
2520 ldr q10, [x20, w4, uxtw #2]
2521 str q21, [x20, w4, uxtw #5]
2522 // CHECK-ERROR-NEXT: error: expected integer shift amount
2523 // CHECK-ERROR-NEXT: ldr q5, [sp, x2, lsl #-1]
2524 // CHECK-ERROR-NEXT: ^
2525 // CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtw' with optional shift of #0 or #4
2526 // CHECK-ERROR-ARM64-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #4
2527 // CHECK-ERROR-NEXT: ldr q10, [x20, w4, uxtw #2]
2528 // CHECK-ERROR-NEXT: ^
2529 // CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtw' with optional shift of #0 or #4
2530 // CHECK-ERROR-ARM64-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #4
2531 // CHECK-ERROR-NEXT: str q21, [x20, w4, uxtw #5]
2532 // CHECK-ERROR-NEXT: ^
2534 //------------------------------------------------------------------------------
2535 // Load/store register pair (offset)
2536 //------------------------------------------------------------------------------
2537 ldp w3, w2, [x4, #1]
2538 stp w1, w2, [x3, #253]
2539 stp w9, w10, [x5, #256]
2540 ldp w11, w12, [x9, #-260]
2542 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2543 // CHECK-ERROR-NEXT: ldp w3, w2, [x4, #1]
2544 // CHECK-ERROR-NEXT: ^
2545 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2546 // CHECK-ERROR-NEXT: stp w1, w2, [x3, #253]
2547 // CHECK-ERROR-NEXT: ^
2548 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2549 // CHECK-ERROR-NEXT: stp w9, w10, [x5, #256]
2550 // CHECK-ERROR-NEXT: ^
2551 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2552 // CHECK-ERROR-NEXT: ldp w11, w12, [x9, #-260]
2553 // CHECK-ERROR-NEXT: ^
2554 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2555 // CHECK-ERROR-NEXT: stp wsp, w9, [sp]
2556 // CHECK-ERROR-NEXT: ^
2558 ldpsw x9, x2, [sp, #2]
2559 ldpsw x1, x2, [x10, #256]
2560 ldpsw x3, x4, [x11, #-260]
2561 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2562 // CHECK-ERROR-NEXT: ldpsw x9, x2, [sp, #2]
2563 // CHECK-ERROR-NEXT: ^
2564 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2565 // CHECK-ERROR-NEXT: ldpsw x1, x2, [x10, #256]
2566 // CHECK-ERROR-NEXT: ^
2567 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2568 // CHECK-ERROR-NEXT: ldpsw x3, x4, [x11, #-260]
2569 // CHECK-ERROR-NEXT: ^
2571 ldp x2, x5, [sp, #4]
2572 ldp x5, x6, [x9, #512]
2573 stp x7, x8, [x10, #-520]
2574 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2575 // CHECK-ERROR-NEXT: ldp x2, x5, [sp, #4]
2576 // CHECK-ERROR-NEXT: ^
2577 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2578 // CHECK-ERROR-NEXT: ldp x5, x6, [x9, #512]
2579 // CHECK-ERROR-NEXT: ^
2580 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2581 // CHECK-ERROR-NEXT: stp x7, x8, [x10, #-520]
2582 // CHECK-ERROR-NEXT: ^
2586 // CHECK-ERROR: error: invalid operand for instruction
2587 // CHECK-ERROR-NEXT: ldp sp, x3, [x10]
2588 // CHECK-ERROR-NEXT: ^
2589 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2590 // CHECK-ERROR-NEXT: stp x3, sp, [x9]
2591 // CHECK-ERROR-NEXT: ^
2593 stp s3, s5, [sp, #-2]
2594 ldp s6, s26, [x4, #-260]
2595 stp s13, s19, [x5, #256]
2596 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2597 // CHECK-ERROR-NEXT: stp s3, s5, [sp, #-2]
2598 // CHECK-ERROR-NEXT: ^
2599 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2600 // CHECK-ERROR-NEXT: ldp s6, s26, [x4, #-260]
2601 // CHECK-ERROR-NEXT: ^
2602 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2603 // CHECK-ERROR-NEXT: stp s13, s19, [x5, #256]
2604 // CHECK-ERROR-NEXT: ^
2607 ldp d5, d6, [x0, #512]
2608 stp d7, d8, [x0, #-520]
2609 // CHECK-ERROR: error: invalid operand for instruction
2610 // CHECK-ERROR-NEXT: ldp d3, d4, [xzr]
2611 // CHECK-ERROR-NEXT: ^
2612 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2613 // CHECK-ERROR-NEXT: ldp d5, d6, [x0, #512]
2614 // CHECK-ERROR-NEXT: ^
2615 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2616 // CHECK-ERROR-NEXT: stp d7, d8, [x0, #-520]
2617 // CHECK-ERROR-NEXT: ^
2620 ldp q3, q5, [sp, #8]
2621 stp q20, q25, [x5, #1024]
2622 ldp q30, q15, [x23, #-1040]
2623 // CHECK-ERROR: error: invalid operand for instruction
2624 // CHECK-ERROR-NEXT: ldp d3, q2, [sp]
2625 // CHECK-ERROR-NEXT: ^
2626 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2627 // CHECK-ERROR-NEXT: ldp q3, q5, [sp, #8]
2628 // CHECK-ERROR-NEXT: ^
2629 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2630 // CHECK-ERROR-NEXT: stp q20, q25, [x5, #1024]
2631 // CHECK-ERROR-NEXT: ^
2632 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2633 // CHECK-ERROR-NEXT: ldp q30, q15, [x23, #-1040]
2634 // CHECK-ERROR-NEXT: ^
2636 //------------------------------------------------------------------------------
2637 // Load/store register pair (post-indexed)
2638 //------------------------------------------------------------------------------
2640 ldp w3, w2, [x4], #1
2641 stp w1, w2, [x3], #253
2642 stp w9, w10, [x5], #256
2643 ldp w11, w12, [x9], #-260
2644 stp wsp, w9, [sp], #0
2645 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2646 // CHECK-ERROR-NEXT: ldp w3, w2, [x4], #1
2647 // CHECK-ERROR-NEXT: ^
2648 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2649 // CHECK-ERROR-NEXT: stp w1, w2, [x3], #253
2650 // CHECK-ERROR-NEXT: ^
2651 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2652 // CHECK-ERROR-NEXT: stp w9, w10, [x5], #256
2653 // CHECK-ERROR-NEXT: ^
2654 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2655 // CHECK-ERROR-NEXT: ldp w11, w12, [x9], #-260
2656 // CHECK-ERROR-NEXT: ^
2657 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2658 // CHECK-ERROR-NEXT: stp wsp, w9, [sp], #0
2659 // CHECK-ERROR-NEXT: ^
2661 ldpsw x9, x2, [sp], #2
2662 ldpsw x1, x2, [x10], #256
2663 ldpsw x3, x4, [x11], #-260
2664 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2665 // CHECK-ERROR-NEXT: ldpsw x9, x2, [sp], #2
2666 // CHECK-ERROR-NEXT: ^
2667 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2668 // CHECK-ERROR-NEXT: ldpsw x1, x2, [x10], #256
2669 // CHECK-ERROR-NEXT: ^
2670 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2671 // CHECK-ERROR-NEXT: ldpsw x3, x4, [x11], #-260
2672 // CHECK-ERROR-NEXT: ^
2674 ldp x2, x5, [sp], #4
2675 ldp x5, x6, [x9], #512
2676 stp x7, x8, [x10], #-520
2677 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2678 // CHECK-ERROR-NEXT: ldp x2, x5, [sp], #4
2679 // CHECK-ERROR-NEXT: ^
2680 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2681 // CHECK-ERROR-NEXT: ldp x5, x6, [x9], #512
2682 // CHECK-ERROR-NEXT: ^
2683 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2684 // CHECK-ERROR-NEXT: stp x7, x8, [x10], #-520
2685 // CHECK-ERROR-NEXT: ^
2687 ldp sp, x3, [x10], #0
2688 stp x3, sp, [x9], #0
2689 // CHECK-ERROR: error: invalid operand for instruction
2690 // CHECK-ERROR-NEXT: ldp sp, x3, [x10], #0
2691 // CHECK-ERROR-NEXT: ^
2692 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2693 // CHECK-ERROR-NEXT: stp x3, sp, [x9], #0
2694 // CHECK-ERROR-NEXT: ^
2696 stp s3, s5, [sp], #-2
2697 ldp s6, s26, [x4], #-260
2698 stp s13, s19, [x5], #256
2699 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2700 // CHECK-ERROR-NEXT: stp s3, s5, [sp], #-2
2701 // CHECK-ERROR-NEXT: ^
2702 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2703 // CHECK-ERROR-NEXT: ldp s6, s26, [x4], #-260
2704 // CHECK-ERROR-NEXT: ^
2705 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2706 // CHECK-ERROR-NEXT: stp s13, s19, [x5], #256
2707 // CHECK-ERROR-NEXT: ^
2709 ldp d3, d4, [xzr], #0
2710 ldp d5, d6, [x0], #512
2711 stp d7, d8, [x0], #-520
2712 // CHECK-ERROR: error: invalid operand for instruction
2713 // CHECK-ERROR-NEXT: ldp d3, d4, [xzr], #0
2714 // CHECK-ERROR-NEXT: ^
2715 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2716 // CHECK-ERROR-NEXT: ldp d5, d6, [x0], #512
2717 // CHECK-ERROR-NEXT: ^
2718 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2719 // CHECK-ERROR-NEXT: stp d7, d8, [x0], #-520
2720 // CHECK-ERROR-NEXT: ^
2722 ldp d3, q2, [sp], #0
2723 ldp q3, q5, [sp], #8
2724 stp q20, q25, [x5], #1024
2725 ldp q30, q15, [x23], #-1040
2726 // CHECK-ERROR: error: invalid operand for instruction
2727 // CHECK-ERROR-NEXT: ldp d3, q2, [sp], #0
2728 // CHECK-ERROR-NEXT: ^
2729 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2730 // CHECK-ERROR-NEXT: ldp q3, q5, [sp], #8
2731 // CHECK-ERROR-NEXT: ^
2732 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2733 // CHECK-ERROR-NEXT: stp q20, q25, [x5], #1024
2734 // CHECK-ERROR-NEXT: ^
2735 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2736 // CHECK-ERROR-NEXT: ldp q30, q15, [x23], #-1040
2737 // CHECK-ERROR-NEXT: ^
2739 //------------------------------------------------------------------------------
2740 // Load/store register pair (pre-indexed)
2741 //------------------------------------------------------------------------------
2743 ldp w3, w2, [x4, #1]!
2744 stp w1, w2, [x3, #253]!
2745 stp w9, w10, [x5, #256]!
2746 ldp w11, w12, [x9, #-260]!
2747 stp wsp, w9, [sp, #0]!
2748 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2749 // CHECK-ERROR-NEXT: ldp w3, w2, [x4, #1]!
2750 // CHECK-ERROR-NEXT: ^
2751 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2752 // CHECK-ERROR-NEXT: stp w1, w2, [x3, #253]!
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: stp w9, w10, [x5, #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: ldp w11, w12, [x9, #-260]!
2759 // CHECK-ERROR-NEXT: ^
2760 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2761 // CHECK-ERROR-NEXT: stp wsp, w9, [sp, #0]!
2762 // CHECK-ERROR-NEXT: ^
2764 ldpsw x9, x2, [sp, #2]!
2765 ldpsw x1, x2, [x10, #256]!
2766 ldpsw x3, x4, [x11, #-260]!
2767 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2768 // CHECK-ERROR-NEXT: ldpsw x9, x2, [sp, #2]!
2769 // CHECK-ERROR-NEXT: ^
2770 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2771 // CHECK-ERROR-NEXT: ldpsw x1, x2, [x10, #256]!
2772 // CHECK-ERROR-NEXT: ^
2773 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2774 // CHECK-ERROR-NEXT: ldpsw x3, x4, [x11, #-260]!
2775 // CHECK-ERROR-NEXT: ^
2777 ldp x2, x5, [sp, #4]!
2778 ldp x5, x6, [x9, #512]!
2779 stp x7, x8, [x10, #-520]!
2780 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2781 // CHECK-ERROR-NEXT: ldp x2, x5, [sp, #4]!
2782 // CHECK-ERROR-NEXT: ^
2783 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2784 // CHECK-ERROR-NEXT: ldp x5, x6, [x9, #512]!
2785 // CHECK-ERROR-NEXT: ^
2786 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2787 // CHECK-ERROR-NEXT: stp x7, x8, [x10, #-520]!
2788 // CHECK-ERROR-NEXT: ^
2790 ldp sp, x3, [x10, #0]!
2791 stp x3, sp, [x9, #0]!
2792 // CHECK-ERROR: error: invalid operand for instruction
2793 // CHECK-ERROR-NEXT: ldp sp, x3, [x10, #0]!
2794 // CHECK-ERROR-NEXT: ^
2795 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2796 // CHECK-ERROR-NEXT: stp x3, sp, [x9, #0]!
2797 // CHECK-ERROR-NEXT: ^
2799 stp s3, s5, [sp, #-2]!
2800 ldp s6, s26, [x4, #-260]!
2801 stp s13, s19, [x5, #256]!
2802 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2803 // CHECK-ERROR-NEXT: stp s3, s5, [sp, #-2]!
2804 // CHECK-ERROR-NEXT: ^
2805 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2806 // CHECK-ERROR-NEXT: ldp s6, s26, [x4, #-260]!
2807 // CHECK-ERROR-NEXT: ^
2808 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2809 // CHECK-ERROR-NEXT: stp s13, s19, [x5, #256]!
2810 // CHECK-ERROR-NEXT: ^
2812 ldp d3, d4, [xzr, #0]!
2813 ldp d5, d6, [x0, #512]!
2814 stp d7, d8, [x0, #-520]!
2815 // CHECK-ERROR: error: invalid operand for instruction
2816 // CHECK-ERROR-NEXT: ldp d3, d4, [xzr, #0]!
2817 // CHECK-ERROR-NEXT: ^
2818 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2819 // CHECK-ERROR-NEXT: ldp d5, d6, [x0, #512]!
2820 // CHECK-ERROR-NEXT: ^
2821 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2822 // CHECK-ERROR-NEXT: stp d7, d8, [x0, #-520]!
2823 // CHECK-ERROR-NEXT: ^
2825 ldp d3, q2, [sp, #0]!
2826 ldp q3, q5, [sp, #8]!
2827 stp q20, q25, [x5, #1024]!
2828 ldp q30, q15, [x23, #-1040]!
2829 // CHECK-ERROR: error: invalid operand for instruction
2830 // CHECK-ERROR-NEXT: ldp d3, q2, [sp, #0]!
2831 // CHECK-ERROR-NEXT: ^
2832 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2833 // CHECK-ERROR-NEXT: ldp q3, q5, [sp, #8]!
2834 // CHECK-ERROR-NEXT: ^
2835 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2836 // CHECK-ERROR-NEXT: stp q20, q25, [x5, #1024]!
2837 // CHECK-ERROR-NEXT: ^
2838 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2839 // CHECK-ERROR-NEXT: ldp q30, q15, [x23, #-1040]!
2840 // CHECK-ERROR-NEXT: ^
2842 //------------------------------------------------------------------------------
2843 // Load/store register pair (offset)
2844 //------------------------------------------------------------------------------
2845 ldnp w3, w2, [x4, #1]
2846 stnp w1, w2, [x3, #253]
2847 stnp w9, w10, [x5, #256]
2848 ldnp w11, w12, [x9, #-260]
2850 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2851 // CHECK-ERROR-NEXT: ldnp w3, w2, [x4, #1]
2852 // CHECK-ERROR-NEXT: ^
2853 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2854 // CHECK-ERROR-NEXT: stnp w1, w2, [x3, #253]
2855 // CHECK-ERROR-NEXT: ^
2856 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2857 // CHECK-ERROR-NEXT: stnp w9, w10, [x5, #256]
2858 // CHECK-ERROR-NEXT: ^
2859 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2860 // CHECK-ERROR-NEXT: ldnp w11, w12, [x9, #-260]
2861 // CHECK-ERROR-NEXT: ^
2862 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2863 // CHECK-ERROR-NEXT: stnp wsp, w9, [sp]
2864 // CHECK-ERROR-NEXT: ^
2866 ldnp x2, x5, [sp, #4]
2867 ldnp x5, x6, [x9, #512]
2868 stnp x7, x8, [x10, #-520]
2869 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2870 // CHECK-ERROR-NEXT: ldnp x2, x5, [sp, #4]
2871 // CHECK-ERROR-NEXT: ^
2872 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2873 // CHECK-ERROR-NEXT: ldnp x5, x6, [x9, #512]
2874 // CHECK-ERROR-NEXT: ^
2875 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2876 // CHECK-ERROR-NEXT: stnp x7, x8, [x10, #-520]
2877 // CHECK-ERROR-NEXT: ^
2881 // CHECK-ERROR: error: invalid operand for instruction
2882 // CHECK-ERROR-NEXT: ldnp sp, x3, [x10]
2883 // CHECK-ERROR-NEXT: ^
2884 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2885 // CHECK-ERROR-NEXT: stnp x3, sp, [x9]
2886 // CHECK-ERROR-NEXT: ^
2888 stnp s3, s5, [sp, #-2]
2889 ldnp s6, s26, [x4, #-260]
2890 stnp s13, s19, [x5, #256]
2891 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2892 // CHECK-ERROR-NEXT: stnp s3, s5, [sp, #-2]
2893 // CHECK-ERROR-NEXT: ^
2894 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2895 // CHECK-ERROR-NEXT: ldnp s6, s26, [x4, #-260]
2896 // CHECK-ERROR-NEXT: ^
2897 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2898 // CHECK-ERROR-NEXT: stnp s13, s19, [x5, #256]
2899 // CHECK-ERROR-NEXT: ^
2902 ldnp d5, d6, [x0, #512]
2903 stnp d7, d8, [x0, #-520]
2904 // CHECK-ERROR: error: invalid operand for instruction
2905 // CHECK-ERROR-NEXT: ldnp d3, d4, [xzr]
2906 // CHECK-ERROR-NEXT: ^
2907 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2908 // CHECK-ERROR-NEXT: ldnp d5, d6, [x0, #512]
2909 // CHECK-ERROR-NEXT: ^
2910 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2911 // CHECK-ERROR-NEXT: stnp d7, d8, [x0, #-520]
2912 // CHECK-ERROR-NEXT: ^
2915 ldnp q3, q5, [sp, #8]
2916 stnp q20, q25, [x5, #1024]
2917 ldnp q30, q15, [x23, #-1040]
2918 // CHECK-ERROR: error: invalid operand for instruction
2919 // CHECK-ERROR-NEXT: ldnp d3, q2, [sp]
2920 // CHECK-ERROR-NEXT: ^
2921 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2922 // CHECK-ERROR-NEXT: ldnp q3, q5, [sp, #8]
2923 // CHECK-ERROR-NEXT: ^
2924 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2925 // CHECK-ERROR-NEXT: stnp q20, q25, [x5, #1024]
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: ldnp q30, q15, [x23, #-1040]
2929 // CHECK-ERROR-NEXT: ^
2931 //------------------------------------------------------------------------------
2932 // Logical (shifted register)
2933 //------------------------------------------------------------------------------
2934 orr w0, w1, #0xffffffff
2935 and x3, x5, #0xffffffffffffffff
2936 // CHECK-ERROR: error: expected compatible register or logical immediate
2937 // CHECK-ERROR-NEXT: orr w0, w1, #0xffffffff
2938 // CHECK-ERROR-NEXT: ^
2939 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
2940 // CHECK-ERROR-NEXT: and x3, x5, #0xffffffffffffffff
2941 // CHECK-ERROR-NEXT: ^
2945 // CHECK-ERROR: error: expected compatible register or logical immediate
2946 // CHECK-ERROR-NEXT: ands w3, w9, #0x0
2947 // CHECK-ERROR-NEXT: ^
2948 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
2949 // CHECK-ERROR-NEXT: eor x2, x0, #0x0
2950 // CHECK-ERROR-NEXT: ^
2953 eor x9, x20, #0x1234
2954 // CHECK-ERROR: error: expected compatible register or logical immediate
2955 // CHECK-ERROR-NEXT: eor w3, w5, #0x83
2956 // CHECK-ERROR-NEXT: ^
2957 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
2958 // CHECK-ERROR-NEXT: eor x9, x20, #0x1234
2959 // CHECK-ERROR-NEXT: ^
2961 and wzr, w4, 0xffff0000
2962 eor xzr, x9, #0xffff0000ffff0000
2963 // CHECK-ERROR: error: invalid operand for instruction
2964 // CHECK-ERROR-NEXT: and wzr, w4, 0xffff0000
2965 // CHECK-ERROR-NEXT: ^
2966 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2967 // CHECK-ERROR-NEXT: eor xzr, x9, #0xffff0000ffff0000
2968 // CHECK-ERROR-NEXT: ^
2970 orr w3, wsp, #0xf0f0f0f0
2971 ands x3, sp, #0xaaaaaaaaaaaaaaaa
2972 // CHECK-ERROR: error: invalid operand for instruction
2973 // CHECK-ERROR-NEXT: orr w3, wsp, #0xf0f0f0f0
2974 // CHECK-ERROR-NEXT: ^
2975 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2976 // CHECK-ERROR-NEXT: ands x3, sp, #0xaaaaaaaaaaaaaaaa
2977 // CHECK-ERROR-NEXT: ^
2979 tst sp, #0xe0e0e0e0e0e0e0e0
2980 // CHECK-ERROR: error: invalid operand for instruction
2981 // CHECK-ERROR-NEXT: tst sp, #0xe0e0e0e0e0e0e0e0
2982 // CHECK-ERROR-NEXT: ^
2984 // movi has been removed from the specification. Make sure it's really gone.
2985 movi wzr, #0x44444444
2987 movi x9, #0x0000ffff00000000
2988 // CHECK-ERROR: error: invalid operand for instruction
2989 // CHECK-ERROR-NEXT: movi wzr, #0x44444444
2990 // CHECK-ERROR-NEXT: ^
2991 // CHECK-ERROR: error: invalid operand for instruction
2992 // CHECK-ERROR-NEXT: movi w3, #0xffff
2993 // CHECK-ERROR-NEXT: ^
2994 // CHECK-ERROR: error: invalid operand for instruction
2995 // CHECK-ERROR-NEXT: movi x9, #0x0000ffff00000000
2996 // CHECK-ERROR-NEXT: ^
2998 //------------------------------------------------------------------------------
2999 // Logical (shifted register)
3000 //------------------------------------------------------------------------------
3002 //// Out of range shifts
3003 and w2, w24, w6, lsl #-1
3004 and w4, w6, w12, lsl #32
3005 and x4, x6, x12, lsl #64
3006 and x2, x5, x11, asr
3007 // CHECK-ERROR: error: expected integer shift amount
3008 // CHECK-ERROR-NEXT: and w2, w24, w6, lsl #-1
3009 // CHECK-ERROR-NEXT: ^
3010 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
3011 // CHECK-ERROR-NEXT: and w4, w6, w12, lsl #32
3012 // CHECK-ERROR-NEXT: ^
3013 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
3014 // CHECK-ERROR-NEXT: and x4, x6, x12, lsl #64
3015 // CHECK-ERROR-NEXT: ^
3016 // CHECK-ERROR-NEXT: error: expected #imm after shift specifier
3017 // CHECK-ERROR-NEXT: and x2, x5, x11, asr
3018 // CHECK-ERROR-NEXT: ^
3022 bics x20, sp, x9, lsr #0
3023 orn x2, x6, sp, lsl #3
3024 // FIXME: the diagnostic we get for 'orn wsp, w3, w5' is from the orn alias,
3025 // which is a better match than the genuine ORNWri, whereas it would be better
3026 // to get the ORNWri diagnostic when the alias did not match, i.e. the
3027 // alias' diagnostics should have a lower priority.
3028 // CHECK-ERROR: error: expected compatible register or logical immediate
3029 // CHECK-ERROR-NEXT: orn wsp, w3, w5
3030 // CHECK-ERROR-NEXT: ^
3031 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3032 // CHECK-ERROR-NEXT: bics x20, sp, x9, lsr #0
3033 // CHECK-ERROR-NEXT: ^
3034 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
3035 // CHECK-ERROR-NEXT: orn x2, x6, sp, lsl #3
3036 // CHECK-ERROR-NEXT: ^
3038 //// Mismatched registers
3041 and x4, x5, w6, lsl #12
3042 orr w2, w5, x7, asr #0
3043 // CHECK-ERROR: error: invalid operand for instruction
3044 // CHECK-ERROR-NEXT: and x3, w2, w1
3045 // CHECK-ERROR-NEXT: ^
3046 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3047 // CHECK-ERROR-NEXT: ands w1, x12, w2
3048 // CHECK-ERROR-NEXT: ^
3049 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
3050 // CHECK-ERROR-NEXT: and x4, x5, w6, lsl #12
3051 // CHECK-ERROR-NEXT: ^
3052 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
3053 // CHECK-ERROR-NEXT: orr w2, w5, x7, asr #0
3054 // CHECK-ERROR-NEXT: ^
3056 //// Shifts should not be allowed on mov
3058 // CHECK-ERROR: error: invalid operand for instruction
3059 // CHECK-ERROR-NEXT: mov w3, w7, lsl #13
3060 // CHECK-ERROR-NEXT: ^
3062 //------------------------------------------------------------------------------
3063 // Move wide (immediate)
3064 //------------------------------------------------------------------------------
3066 movz w3, #65536, lsl #0
3069 movk w3, #0, lsl #-1
3070 movn w2, #-1, lsl #0
3072 movk w3, #1, lsl #32
3073 movn x2, #12, lsl #64
3074 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3075 // CHECK-ERROR-NEXT: movz w3, #65536, lsl #0
3076 // CHECK-ERROR-NEXT: ^
3077 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3078 // CHECK-ERROR-NEXT: movz w4, #65536
3079 // CHECK-ERROR-NEXT: ^
3080 // CHECK-ERROR-AARCH64-NEXT: error: expected relocated symbol or integer in range [0, 65535]
3081 // CHECK-ERROR-ARM64-NEXT: error: expected 'lsl' with optional integer 0 or 16
3082 // CHECK-ERROR-NEXT: movn w1, #2, lsl #1
3083 // CHECK-ERROR-NEXT: ^
3084 // CHECK-ERROR-AARCH64-NEXT: error: only 'lsl #+N' valid after immediate
3085 // CHECK-ERROR-ARM64-NEXT: error: expected integer shift amount
3086 // CHECK-ERROR-NEXT: movk w3, #0, lsl #-1
3087 // CHECK-ERROR-NEXT: ^
3088 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3089 // CHECK-ERROR-NEXT: movn w2, #-1, lsl #0
3090 // CHECK-ERROR-NEXT: ^
3091 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3092 // CHECK-ERROR-NEXT: movz x3, #-1
3093 // CHECK-ERROR-NEXT: ^
3094 // CHECK-ERROR-AARCH64-NEXT: error: expected relocated symbol or integer in range [0, 65535]
3095 // CHECK-ERROR-ARM64-NEXT: error: expected 'lsl' with optional integer 0 or 16
3096 // CHECK-ERROR-NEXT: movk w3, #1, lsl #32
3097 // CHECK-ERROR-NEXT: ^
3098 // CHECK-ERROR-AARCH64-NEXT: error: expected relocated symbol or integer in range [0, 65535]
3099 // CHECK-ERROR-ARM64-NEXT: error: expected 'lsl' with optional integer 0, 16, 32 or 48
3100 // CHECK-ERROR-NEXT: movn x2, #12, lsl #64
3101 // CHECK-ERROR-NEXT: ^
3103 movz x12, #:abs_g0:sym, lsl #16
3104 movz x12, #:abs_g0:sym, lsl #0
3105 movn x2, #:abs_g0:sym
3106 movk w3, #:abs_g0:sym
3107 movz x3, #:abs_g0_nc:sym
3108 movn x4, #:abs_g0_nc:sym
3109 // CHECK-ERROR: error: invalid operand for instruction
3110 // CHECK-ERROR-NEXT: movz x12, #:abs_g0:sym, lsl #16
3111 // CHECK-ERROR-NEXT: ^
3112 // CHECK-ERROR: error: invalid operand for instruction
3113 // CHECK-ERROR-NEXT: movz x12, #:abs_g0:sym, lsl #0
3114 // CHECK-ERROR-NEXT: ^
3115 // CHECK-ERROR-AARCH64-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3116 // CHECK-ERROR-AARCH64-NEXT: movn x2, #:abs_g0:sym
3117 // CHECK-ERROR-AARCH64-NEXT: ^
3118 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3119 // CHECK-ERROR-NEXT: movk w3, #:abs_g0:sym
3120 // CHECK-ERROR-NEXT: ^
3121 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3122 // CHECK-ERROR-NEXT: movz x3, #:abs_g0_nc:sym
3123 // CHECK-ERROR-NEXT: ^
3124 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3125 // CHECK-ERROR-NEXT: movn x4, #:abs_g0_nc:sym
3126 // CHECK-ERROR-NEXT: ^
3128 movn x2, #:abs_g1:sym
3129 movk w3, #:abs_g1:sym
3130 movz x3, #:abs_g1_nc:sym
3131 movn x4, #:abs_g1_nc:sym
3132 // CHECK-ERROR-AARCH64: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3133 // CHECK-ERROR-AARCH64-NEXT: movn x2, #:abs_g1:sym
3134 // CHECK-ERROR-AARCH64-NEXT: ^
3135 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3136 // CHECK-ERROR-NEXT: movk w3, #:abs_g1:sym
3137 // CHECK-ERROR-NEXT: ^
3138 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3139 // CHECK-ERROR-NEXT: movz x3, #:abs_g1_nc:sym
3140 // CHECK-ERROR-NEXT: ^
3141 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3142 // CHECK-ERROR-NEXT: movn x4, #:abs_g1_nc:sym
3143 // CHECK-ERROR-NEXT: ^
3145 movz w12, #:abs_g2:sym
3146 movn x12, #:abs_g2:sym
3147 movk x13, #:abs_g2:sym
3148 movk w3, #:abs_g2_nc:sym
3149 movz x13, #:abs_g2_nc:sym
3150 movn x24, #:abs_g2_nc:sym
3151 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3152 // CHECK-ERROR-NEXT: movz w12, #:abs_g2:sym
3153 // CHECK-ERROR-NEXT: ^
3154 // CHECK-ERROR-AARCH64-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3155 // CHECK-ERROR-AARCH64-NEXT: movn x12, #:abs_g2:sym
3156 // CHECK-ERROR-AARCH64-NEXT: ^
3157 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3158 // CHECK-ERROR-NEXT: movk x13, #:abs_g2:sym
3159 // CHECK-ERROR-NEXT: ^
3160 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3161 // CHECK-ERROR-NEXT: movk w3, #:abs_g2_nc:sym
3162 // CHECK-ERROR-NEXT: ^
3163 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3164 // CHECK-ERROR-NEXT: movz x13, #:abs_g2_nc:sym
3165 // CHECK-ERROR-NEXT: ^
3166 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3167 // CHECK-ERROR-NEXT: movn x24, #:abs_g2_nc:sym
3168 // CHECK-ERROR-NEXT: ^
3170 movn x19, #:abs_g3:sym
3171 movz w20, #:abs_g3:sym
3172 movk w21, #:abs_g3:sym
3173 // CHECK-ERROR-AARCH64: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3174 // CHECK-ERROR-AARCH64-NEXT: movn x19, #:abs_g3:sym
3175 // CHECK-ERROR-AARCH64-NEXT: ^
3176 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3177 // CHECK-ERROR-NEXT: movz w20, #:abs_g3:sym
3178 // CHECK-ERROR-NEXT: ^
3179 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3180 // CHECK-ERROR-NEXT: movk w21, #:abs_g3:sym
3181 // CHECK-ERROR-NEXT: ^
3183 movk x19, #:abs_g0_s:sym
3184 movk w23, #:abs_g0_s:sym
3185 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3186 // CHECK-ERROR-NEXT: movk x19, #:abs_g0_s:sym
3187 // CHECK-ERROR-NEXT: ^
3188 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3189 // CHECK-ERROR-NEXT: movk w23, #:abs_g0_s:sym
3190 // CHECK-ERROR-NEXT: ^
3192 movk x19, #:abs_g1_s:sym
3193 movk w23, #:abs_g1_s:sym
3194 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3195 // CHECK-ERROR-NEXT: movk x19, #:abs_g1_s:sym
3196 // CHECK-ERROR-NEXT: ^
3197 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3198 // CHECK-ERROR-NEXT: movk w23, #:abs_g1_s:sym
3199 // CHECK-ERROR-NEXT: ^
3201 movz w2, #:abs_g2_s:sym
3202 movn w29, #:abs_g2_s:sym
3203 movk x19, #:abs_g2_s:sym
3204 movk w23, #:abs_g2_s:sym
3205 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3206 // CHECK-ERROR-NEXT: movz w2, #:abs_g2_s:sym
3207 // CHECK-ERROR-NEXT: ^
3208 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3209 // CHECK-ERROR-NEXT: movn w29, #:abs_g2_s:sym
3210 // CHECK-ERROR-NEXT: ^
3211 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3212 // CHECK-ERROR-NEXT: movk x19, #:abs_g2_s:sym
3213 // CHECK-ERROR-NEXT: ^
3214 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3215 // CHECK-ERROR-NEXT: movk w23, #:abs_g2_s:sym
3216 // CHECK-ERROR-NEXT: ^
3218 //------------------------------------------------------------------------------
3219 // PC-relative addressing
3220 //------------------------------------------------------------------------------
3222 adr sp, loc // expects xzr
3223 adrp x3, #20 // Immediate unaligned
3224 adrp w2, loc // 64-bit register needed
3225 // CHECK-ERROR: error: invalid operand for instruction
3226 // CHECK-ERROR-NEXT: adr sp, loc
3227 // CHECK-ERROR-NEXT: ^
3228 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3229 // CHECK-ERROR-NEXT: adrp x3, #20
3230 // CHECK-ERROR-NEXT: ^
3231 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3232 // CHECK-ERROR-NEXT: adrp w2, loc
3233 // CHECK-ERROR-NEXT: ^
3237 adrp x9, #4294967296
3238 adrp x20, #-4294971392
3239 // CHECK-ERROR: error: expected label or encodable integer pc offset
3240 // CHECK-ERROR-NEXT: adr x9, #1048576
3241 // CHECK-ERROR-NEXT: ^
3242 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3243 // CHECK-ERROR-NEXT: adr x2, #-1048577
3244 // CHECK-ERROR-NEXT: ^
3245 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3246 // CHECK-ERROR-NEXT: adrp x9, #4294967296
3247 // CHECK-ERROR-NEXT: ^
3248 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3249 // CHECK-ERROR-NEXT: adrp x20, #-4294971392
3250 // CHECK-ERROR-NEXT: ^
3252 //------------------------------------------------------------------------------
3254 //------------------------------------------------------------------------------
3258 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 127]
3259 // CHECK-ERROR-NEXT: hint #-1
3260 // CHECK-ERROR-NEXT: ^
3261 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 127]
3262 // CHECK-ERROR-NEXT: hint #128
3263 // CHECK-ERROR-NEXT: ^
3267 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
3268 // CHECK-ERROR-NEXT: clrex #-1
3269 // CHECK-ERROR-NEXT: ^
3270 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
3271 // CHECK-ERROR-NEXT: clrex #16
3272 // CHECK-ERROR-NEXT: ^
3280 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3281 // CHECK-ERROR-NEXT: dsb #-1
3282 // CHECK-ERROR-NEXT: ^
3283 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3284 // CHECK-ERROR-NEXT: dsb #16
3285 // CHECK-ERROR-NEXT: ^
3286 // CHECK-ERROR-NEXT: error: invalid barrier option name
3287 // CHECK-ERROR-NEXT: dsb foo
3288 // CHECK-ERROR-NEXT: ^
3289 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3290 // CHECK-ERROR-NEXT: dmb #-1
3291 // CHECK-ERROR-NEXT: ^
3292 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3293 // CHECK-ERROR-NEXT: dmb #16
3294 // CHECK-ERROR-NEXT: ^
3295 // CHECK-ERROR-NEXT: error: invalid barrier option name
3296 // CHECK-ERROR-NEXT: dmb foo
3297 // CHECK-ERROR-NEXT: ^
3302 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3303 // CHECK-ERROR-NEXT: isb #-1
3304 // CHECK-ERROR-NEXT: ^
3305 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3306 // CHECK-ERROR-NEXT: isb #16
3307 // CHECK-ERROR-NEXT: ^
3308 // CHECK-ERROR-NEXT: error: 'sy' or #imm operand expected
3309 // CHECK-ERROR-NEXT: isb foo
3310 // CHECK-ERROR-NEXT: ^
3316 // CHECK-ERROR: [[@LINE-4]]:22: error: {{expected|immediate must be an}} integer in range [0, 15]
3317 // CHECK-ERROR: [[@LINE-4]]:20: error: {{expected|immediate must be an}} integer in range [0, 15]
3318 // CHECK-ERROR: [[@LINE-4]]:{{9|19}}: error: {{too few operands for instruction|expected comma before next operand|unexpected token in argument list}}
3319 // CHECK-ERROR: [[@LINE-4]]:22: error: {{expected|immediate must be an}} integer in range [0, 15]
3321 sys #8, c1, c2, #7, x9
3322 sys #3, c16, c2, #3, x10
3323 sys #2, c11, c16, #5
3324 sys #4, c9, c8, #8, xzr
3325 sysl x11, #8, c1, c2, #7
3326 sysl x13, #3, c16, c2, #3
3327 sysl x9, #2, c11, c16, #5
3328 sysl x4, #4, c9, c8, #8
3329 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
3330 // CHECK-ERROR-NEXT: sys #8, c1, c2, #7, x9
3331 // CHECK-ERROR-NEXT: ^
3332 // CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15
3333 // CHECK-ERROR-NEXT: sys #3, c16, c2, #3, x10
3334 // CHECK-ERROR-NEXT: ^
3335 // CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15
3336 // CHECK-ERROR-NEXT: sys #2, c11, c16, #5
3337 // CHECK-ERROR-NEXT: ^
3338 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]
3339 // CHECK-ERROR-NEXT: sys #4, c9, c8, #8, xzr
3340 // CHECK-ERROR-NEXT: ^
3341 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]
3342 // CHECK-ERROR-NEXT: sysl x11, #8, c1, c2, #7
3343 // CHECK-ERROR-NEXT: ^
3344 // CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15
3345 // CHECK-ERROR-NEXT: sysl x13, #3, c16, c2, #3
3346 // CHECK-ERROR-NEXT: ^
3347 // CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15
3348 // CHECK-ERROR-NEXT: sysl x9, #2, c11, c16, #5
3349 // CHECK-ERROR-NEXT: ^
3350 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]
3351 // CHECK-ERROR-NEXT: sysl x4, #4, c9, c8, #8
3352 // CHECK-ERROR-NEXT: ^
3357 // CHECK-ERROR-NEXT: error: specified {{IC|ic}} op does not use a register
3358 // CHECK-ERROR-NEXT: ic ialluis, x2
3359 // CHECK-ERROR-NEXT: ^
3360 // CHECK-ERROR-AARCH64-NEXT: error: operand specifier not recognised
3361 // CHECK-ERROR-ARM64-NEXT: error: invalid operand for IC instruction
3362 // CHECK-ERROR-NEXT: ic allu, x7
3363 // CHECK-ERROR-NEXT: ^
3364 // CHECK-ERROR-NEXT: error: specified {{IC|ic}} op requires a register
3365 // CHECK-ERROR-NEXT: ic ivau
3366 // CHECK-ERROR-NEXT: ^
3382 tlbi VMALLS12E1IS, xzr
3398 tlbi VMALLS12E1, x15
3400 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3401 // CHECK-ERROR-NEXT: tlbi IPAS2E1IS
3402 // CHECK-ERROR-NEXT: ^
3403 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3404 // CHECK-ERROR-NEXT: tlbi IPAS2LE1IS
3405 // CHECK-ERROR-NEXT: ^
3406 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3407 // CHECK-ERROR-NEXT: tlbi VMALLE1IS, x12
3408 // CHECK-ERROR-NEXT: ^
3409 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3410 // CHECK-ERROR-NEXT: tlbi ALLE2IS, x11
3411 // CHECK-ERROR-NEXT: ^
3412 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3413 // CHECK-ERROR-NEXT: tlbi ALLE3IS, x20
3414 // CHECK-ERROR-NEXT: ^
3415 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3416 // CHECK-ERROR-NEXT: tlbi VAE1IS
3417 // CHECK-ERROR-NEXT: ^
3418 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3419 // CHECK-ERROR-NEXT: tlbi VAE2IS
3420 // CHECK-ERROR-NEXT: ^
3421 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3422 // CHECK-ERROR-NEXT: tlbi VAE3IS
3423 // CHECK-ERROR-NEXT: ^
3424 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3425 // CHECK-ERROR-NEXT: tlbi ASIDE1IS
3426 // CHECK-ERROR-NEXT: ^
3427 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3428 // CHECK-ERROR-NEXT: tlbi VAAE1IS
3429 // CHECK-ERROR-NEXT: ^
3430 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3431 // CHECK-ERROR-NEXT: tlbi ALLE1IS, x0
3432 // CHECK-ERROR-NEXT: ^
3433 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3434 // CHECK-ERROR-NEXT: tlbi VALE1IS
3435 // CHECK-ERROR-NEXT: ^
3436 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3437 // CHECK-ERROR-NEXT: tlbi VALE2IS
3438 // CHECK-ERROR-NEXT: ^
3439 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3440 // CHECK-ERROR-NEXT: tlbi VALE3IS
3441 // CHECK-ERROR-NEXT: ^
3442 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3443 // CHECK-ERROR-NEXT: tlbi VMALLS12E1IS, xzr
3444 // CHECK-ERROR-NEXT: ^
3445 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3446 // CHECK-ERROR-NEXT: tlbi VAALE1IS
3447 // CHECK-ERROR-NEXT: ^
3448 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3449 // CHECK-ERROR-NEXT: tlbi IPAS2E1
3450 // CHECK-ERROR-NEXT: ^
3451 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3452 // CHECK-ERROR-NEXT: tlbi IPAS2LE1
3453 // CHECK-ERROR-NEXT: ^
3454 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3455 // CHECK-ERROR-NEXT: tlbi VMALLE1, x9
3456 // CHECK-ERROR-NEXT: ^
3457 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3458 // CHECK-ERROR-NEXT: tlbi ALLE2, x10
3459 // CHECK-ERROR-NEXT: ^
3460 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3461 // CHECK-ERROR-NEXT: tlbi ALLE3, x11
3462 // CHECK-ERROR-NEXT: ^
3463 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3464 // CHECK-ERROR-NEXT: tlbi VAE1
3465 // CHECK-ERROR-NEXT: ^
3466 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3467 // CHECK-ERROR-NEXT: tlbi VAE2
3468 // CHECK-ERROR-NEXT: ^
3469 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3470 // CHECK-ERROR-NEXT: tlbi VAE3
3471 // CHECK-ERROR-NEXT: ^
3472 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3473 // CHECK-ERROR-NEXT: tlbi ASIDE1
3474 // CHECK-ERROR-NEXT: ^
3475 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3476 // CHECK-ERROR-NEXT: tlbi VAAE1
3477 // CHECK-ERROR-NEXT: ^
3478 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3479 // CHECK-ERROR-NEXT: tlbi ALLE1, x25
3480 // CHECK-ERROR-NEXT: ^
3481 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3482 // CHECK-ERROR-NEXT: tlbi VALE1
3483 // CHECK-ERROR-NEXT: ^
3484 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3485 // CHECK-ERROR-NEXT: tlbi VALE2
3486 // CHECK-ERROR-NEXT: ^
3487 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3488 // CHECK-ERROR-NEXT: tlbi VALE3
3489 // CHECK-ERROR-NEXT: ^
3490 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3491 // CHECK-ERROR-NEXT: tlbi VMALLS12E1, x15
3492 // CHECK-ERROR-NEXT: ^
3493 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3494 // CHECK-ERROR-NEXT: tlbi VAALE1
3495 // CHECK-ERROR-NEXT: ^
3497 // For the MSR/MRS instructions, first make sure read-only and
3498 // write-only registers actually are.
3500 msr DBGDTRRX_EL0, x12
3503 msr DBGAUTHSTATUS_EL1, x12
3507 msr CCSIDR2_EL1, x12
3513 msr ID_PFR0_EL1, x12
3514 msr ID_PFR1_EL1, x12
3515 msr ID_DFR0_EL1, x12
3516 msr ID_AFR0_EL1, x12
3517 msr ID_MMFR0_EL1, x12
3518 msr ID_MMFR1_EL1, x12
3519 msr ID_MMFR2_EL1, x12
3520 msr ID_MMFR3_EL1, x12
3521 msr ID_MMFR4_EL1, x12
3522 msr ID_ISAR0_EL1, x12
3523 msr ID_ISAR1_EL1, x12
3524 msr ID_ISAR2_EL1, x12
3525 msr ID_ISAR3_EL1, x12
3526 msr ID_ISAR4_EL1, x12
3527 msr ID_ISAR5_EL1, x12
3531 msr ID_AA64PFR0_EL1, x12
3532 msr ID_AA64PFR1_EL1, x12
3533 msr ID_AA64DFR0_EL1, x12
3534 msr ID_AA64DFR1_EL1, x12
3535 msr ID_AA64AFR0_EL1, x12
3536 msr ID_AA64AFR1_EL1, x12
3537 msr ID_AA64ISAR0_EL1, x12
3538 msr ID_AA64ISAR1_EL1, x12
3539 msr ID_AA64MMFR0_EL1, x12
3540 msr ID_AA64MMFR1_EL1, x12
3541 msr PMCEID0_EL0, x12
3542 msr PMCEID1_EL0, x12
3549 msr PMEVCNTR31_EL0, x12
3550 msr PMEVTYPER31_EL0, x12
3551 // CHECK-ERROR: error: expected writable system register or pstate
3552 // CHECK-ERROR-NEXT: msr MDCCSR_EL0, x12
3553 // CHECK-ERROR-NEXT: ^
3554 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3555 // CHECK-ERROR-NEXT: msr DBGDTRRX_EL0, x12
3556 // CHECK-ERROR-NEXT: ^
3557 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3558 // CHECK-ERROR-NEXT: msr MDRAR_EL1, x12
3559 // CHECK-ERROR-NEXT: ^
3560 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3561 // CHECK-ERROR-NEXT: msr OSLSR_EL1, x12
3562 // CHECK-ERROR-NEXT: ^
3563 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3564 // CHECK-ERROR-NEXT: msr DBGAUTHSTATUS_EL1, x12
3565 // CHECK-ERROR-NEXT: ^
3566 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3567 // CHECK-ERROR-NEXT: msr MIDR_EL1, x12
3568 // CHECK-ERROR-NEXT: ^
3569 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3570 // CHECK-ERROR-NEXT: msr CCSIDR_EL1, x12
3571 // CHECK-ERROR-NEXT: ^
3572 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3573 // CHECK-ERROR-NEXT: msr CLIDR_EL1, x12
3574 // CHECK-ERROR-NEXT: ^
3575 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3576 // CHECK-ERROR-NEXT: msr CCSIDR2_EL1, x12
3577 // CHECK-ERROR-NEXT: ^
3578 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3579 // CHECK-ERROR-NEXT: msr CTR_EL0, x12
3580 // CHECK-ERROR-NEXT: ^
3581 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3582 // CHECK-ERROR-NEXT: msr MPIDR_EL1, x12
3583 // CHECK-ERROR-NEXT: ^
3584 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3585 // CHECK-ERROR-NEXT: msr REVIDR_EL1, x12
3586 // CHECK-ERROR-NEXT: ^
3587 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3588 // CHECK-ERROR-NEXT: msr AIDR_EL1, x12
3589 // CHECK-ERROR-NEXT: ^
3590 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3591 // CHECK-ERROR-NEXT: msr DCZID_EL0, x12
3592 // CHECK-ERROR-NEXT: ^
3593 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3594 // CHECK-ERROR-NEXT: msr ID_PFR0_EL1, x12
3595 // CHECK-ERROR-NEXT: ^
3596 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3597 // CHECK-ERROR-NEXT: msr ID_PFR1_EL1, x12
3598 // CHECK-ERROR-NEXT: ^
3599 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3600 // CHECK-ERROR-NEXT: msr ID_DFR0_EL1, x12
3601 // CHECK-ERROR-NEXT: ^
3602 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3603 // CHECK-ERROR-NEXT: msr ID_AFR0_EL1, x12
3604 // CHECK-ERROR-NEXT: ^
3605 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3606 // CHECK-ERROR-NEXT: msr ID_MMFR0_EL1, x12
3607 // CHECK-ERROR-NEXT: ^
3608 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3609 // CHECK-ERROR-NEXT: msr ID_MMFR1_EL1, x12
3610 // CHECK-ERROR-NEXT: ^
3611 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3612 // CHECK-ERROR-NEXT: msr ID_MMFR2_EL1, x12
3613 // CHECK-ERROR-NEXT: ^
3614 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3615 // CHECK-ERROR-NEXT: msr ID_MMFR3_EL1, x12
3616 // CHECK-ERROR-NEXT: ^
3617 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3618 // CHECK-ERROR-NEXT: msr ID_MMFR4_EL1, x12
3619 // CHECK-ERROR-NEXT: ^
3620 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3621 // CHECK-ERROR-NEXT: msr ID_ISAR0_EL1, x12
3622 // CHECK-ERROR-NEXT: ^
3623 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3624 // CHECK-ERROR-NEXT: msr ID_ISAR1_EL1, x12
3625 // CHECK-ERROR-NEXT: ^
3626 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3627 // CHECK-ERROR-NEXT: msr ID_ISAR2_EL1, x12
3628 // CHECK-ERROR-NEXT: ^
3629 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3630 // CHECK-ERROR-NEXT: msr ID_ISAR3_EL1, x12
3631 // CHECK-ERROR-NEXT: ^
3632 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3633 // CHECK-ERROR-NEXT: msr ID_ISAR4_EL1, x12
3634 // CHECK-ERROR-NEXT: ^
3635 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3636 // CHECK-ERROR-NEXT: msr ID_ISAR5_EL1, x12
3637 // CHECK-ERROR-NEXT: ^
3638 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3639 // CHECK-ERROR-NEXT: msr MVFR0_EL1, x12
3640 // CHECK-ERROR-NEXT: ^
3641 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3642 // CHECK-ERROR-NEXT: msr MVFR1_EL1, x12
3643 // CHECK-ERROR-NEXT: ^
3644 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3645 // CHECK-ERROR-NEXT: msr MVFR2_EL1, x12
3646 // CHECK-ERROR-NEXT: ^
3647 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3648 // CHECK-ERROR-NEXT: msr ID_AA64PFR0_EL1, x12
3649 // CHECK-ERROR-NEXT: ^
3650 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3651 // CHECK-ERROR-NEXT: msr ID_AA64PFR1_EL1, x12
3652 // CHECK-ERROR-NEXT: ^
3653 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3654 // CHECK-ERROR-NEXT: msr ID_AA64DFR0_EL1, x12
3655 // CHECK-ERROR-NEXT: ^
3656 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3657 // CHECK-ERROR-NEXT: msr ID_AA64DFR1_EL1, x12
3658 // CHECK-ERROR-NEXT: ^
3659 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3660 // CHECK-ERROR-NEXT: msr ID_AA64AFR0_EL1, x12
3661 // CHECK-ERROR-NEXT: ^
3662 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3663 // CHECK-ERROR-NEXT: msr ID_AA64AFR1_EL1, x12
3664 // CHECK-ERROR-NEXT: ^
3665 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3666 // CHECK-ERROR-NEXT: msr ID_AA64ISAR0_EL1, x12
3667 // CHECK-ERROR-NEXT: ^
3668 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3669 // CHECK-ERROR-NEXT: msr ID_AA64ISAR1_EL1, x12
3670 // CHECK-ERROR-NEXT: ^
3671 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3672 // CHECK-ERROR-NEXT: msr ID_AA64MMFR0_EL1, x12
3673 // CHECK-ERROR-NEXT: ^
3674 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3675 // CHECK-ERROR-NEXT: msr ID_AA64MMFR1_EL1, x12
3676 // CHECK-ERROR-NEXT: ^
3677 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3678 // CHECK-ERROR-NEXT: msr PMCEID0_EL0, x12
3679 // CHECK-ERROR-NEXT: ^
3680 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3681 // CHECK-ERROR-NEXT: msr PMCEID1_EL0, x12
3682 // CHECK-ERROR-NEXT: ^
3683 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3684 // CHECK-ERROR-NEXT: msr RVBAR_EL1, x12
3685 // CHECK-ERROR-NEXT: ^
3686 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3687 // CHECK-ERROR-NEXT: msr RVBAR_EL2, x12
3688 // CHECK-ERROR-NEXT: ^
3689 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3690 // CHECK-ERROR-NEXT: msr RVBAR_EL3, x12
3691 // CHECK-ERROR-NEXT: ^
3692 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3693 // CHECK-ERROR-NEXT: msr ISR_EL1, x12
3694 // CHECK-ERROR-NEXT: ^
3695 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3696 // CHECK-ERROR-NEXT: msr CNTPCT_EL0, x12
3697 // CHECK-ERROR-NEXT: ^
3698 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3699 // CHECK-ERROR-NEXT: msr CNTVCT_EL0, x12
3700 // CHECK-ERROR-NEXT: ^
3701 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3702 // CHECK-ERROR-NEXT: msr PMEVCNTR31_EL0, x12
3703 // CHECK-ERROR-NEXT: ^
3704 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3705 // CHECK-ERROR-NEXT: msr PMEVTYPER31_EL0, x12
3706 // CHECK-ERROR-NEXT: ^
3708 mrs x9, DBGDTRTX_EL0
3711 mrs x9, PMEVCNTR31_EL0
3712 mrs x9, PMEVTYPER31_EL0
3713 // CHECK-ERROR: error: expected readable system register
3714 // CHECK-ERROR-NEXT: mrs x9, DBGDTRTX_EL0
3715 // CHECK-ERROR-NEXT: ^
3716 // CHECK-ERROR-NEXT: error: expected readable system register
3717 // CHECK-ERROR-NEXT: mrs x9, OSLAR_EL1
3718 // CHECK-ERROR-NEXT: ^
3719 // CHECK-ERROR-NEXT: error: expected readable system register
3720 // CHECK-ERROR-NEXT: mrs x9, PMSWINC_EL0
3721 // CHECK-ERROR-NEXT: ^
3722 // CHECK-ERROR-NEXT: error: expected readable system register
3723 // CHECK-ERROR-NEXT: mrs x9, PMEVCNTR31_EL0
3724 // CHECK-ERROR-NEXT: ^
3725 // CHECK-ERROR-NEXT: error: expected readable system register
3726 // CHECK-ERROR-NEXT: mrs x9, PMEVTYPER31_EL0
3727 // CHECK-ERROR-NEXT: ^
3729 // Now check some invalid generic names
3730 mrs x12, s3_8_c11_c13_2
3731 mrs x19, s3_2_c15_c16_2
3732 mrs x30, s3_2_c15_c1_8
3733 mrs x4, s4_7_c15_c15_7
3734 mrs x14, s3_7_c16_c15_7
3735 // CHECK-ERROR-NEXT: error: expected readable system register
3736 // CHECK-ERROR-NEXT: mrs x12, s3_8_c11_c13_2
3737 // CHECK-ERROR-NEXT: ^
3738 // CHECK-ERROR-NEXT: error: expected readable system register
3739 // CHECK-ERROR-NEXT: mrs x19, s3_2_c15_c16_2
3740 // CHECK-ERROR-NEXT: ^
3741 // CHECK-ERROR-NEXT: error: expected readable system register
3742 // CHECK-ERROR-NEXT: mrs x30, s3_2_c15_c1_8
3743 // CHECK-ERROR-NEXT: ^
3744 // CHECK-ERROR-NEXT: error: expected readable system register
3745 // CHECK-ERROR-NEXT: mrs x4, s4_7_c15_c15_7
3746 // CHECK-ERROR-NEXT: ^
3747 // CHECK-ERROR-NEXT: error: expected readable system register
3748 // CHECK-ERROR-NEXT: mrs x14, s3_7_c16_c15_7
3749 // CHECK-ERROR-NEXT: ^
3751 //------------------------------------------------------------------------------
3752 // Test and branch (immediate)
3753 //------------------------------------------------------------------------------
3756 tbz w3, #32, nowhere
3759 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
3760 // CHECK-ERROR-NEXT: tbz w3, #-1, addr
3761 // CHECK-ERROR-NEXT: ^
3762 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
3763 // CHECK-ERROR-NEXT: tbz w3, #32, nowhere
3764 // CHECK-ERROR-NEXT: ^
3765 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
3766 // CHECK-ERROR-NEXT: tbz x9, #-1, there
3767 // CHECK-ERROR-NEXT: ^
3768 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
3769 // CHECK-ERROR-NEXT: tbz x20, #64, dont
3770 // CHECK-ERROR-NEXT: ^
3773 tbnz w3, #32, nowhere
3776 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
3777 // CHECK-ERROR-NEXT: tbnz w3, #-1, addr
3778 // CHECK-ERROR-NEXT: ^
3779 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
3780 // CHECK-ERROR-NEXT: tbnz w3, #32, nowhere
3781 // CHECK-ERROR-NEXT: ^
3782 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
3783 // CHECK-ERROR-NEXT: tbnz x9, #-1, there
3784 // CHECK-ERROR-NEXT: ^
3785 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
3786 // CHECK-ERROR-NEXT: tbnz x20, #64, dont
3788 //------------------------------------------------------------------------------
3789 // Unconditional branch (immediate)
3790 //------------------------------------------------------------------------------
3795 // CHECK-ERROR: error: expected label or encodable integer pc offset
3796 // CHECK-ERROR-NEXT: b #134217728
3797 // CHECK-ERROR-NEXT: ^
3798 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3799 // CHECK-ERROR-NEXT: b #-134217732
3800 // CHECK-ERROR-NEXT: ^
3801 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3802 // CHECK-ERROR-NEXT: b #1
3803 // CHECK-ERROR-NEXT: ^
3805 //------------------------------------------------------------------------------
3806 // Unconditional branch (register)
3807 //------------------------------------------------------------------------------
3811 // CHECK-ERROR: error: invalid operand for instruction
3812 // CHECK-ERROR-NEXT: br w2
3813 // CHECK-ERROR-NEXT: ^
3814 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3815 // CHECK-ERROR-NEXT: br sp
3816 // CHECK-ERROR-NEXT: ^
3818 //// These ones shouldn't allow any registers
3821 // CHECK-ERROR: error: invalid operand for instruction
3822 // CHECK-ERROR-NEXT: eret x2
3823 // CHECK-ERROR-NEXT: ^
3824 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3825 // CHECK-ERROR-NEXT: drps x2
3826 // CHECK-ERROR-NEXT: ^