1 // RUN: not llvm-mc -triple aarch64-none-linux-gnu < %s 2> %t
2 // RUN: FileCheck --check-prefix=CHECK-ERROR --check-prefix=CHECK-ERROR-AARCH64 < %t %s
3 // RUN: not llvm-mc -triple arm64-none-linux-gnu < %s 2> %t
4 // RUN: FileCheck --check-prefix=CHECK-ERROR --check-prefix=CHECK-ERROR-ARM64 < %t %s
6 //------------------------------------------------------------------------------
7 // Add/sub (extended register)
8 //------------------------------------------------------------------------------
10 // Mismatched final register and extend
14 // CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
15 // CHECK-ERROR: add x2, x3, x5, sxtb
17 // CHECK-ERROR: error: expected '[su]xt[bhw]' or 'lsl' with optional integer in range [0, 4]
18 // CHECK-ERROR: add x2, x4, w2, uxtx
20 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
21 // CHECK-ERROR: add w5, w7, x9, sxtx
24 // Out of range extends
25 add x9, x10, w11, uxtb #-1
26 add x3, x5, w7, uxtb #5
27 sub x9, x15, x2, uxth #5
28 // CHECK-ERROR: error: expected integer shift amount
29 // CHECK-ERROR: add x9, x10, w11, uxtb #-1
31 // CHECK-ERROR: error: expected '[su]xt[bhw]' or 'lsl' with optional integer in range [0, 4]
32 // CHECK-ERROR: add x3, x5, w7, uxtb #5
34 // CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
35 // CHECK-ERROR: sub x9, x15, x2, uxth #5
38 // Wrong registers on normal variants
40 sub x3, xzr, w9, sxth #1
42 // CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
43 // CHECK-ERROR: add xzr, x3, x5, uxtx
45 // CHECK-ERROR: error: invalid operand for instruction
46 // CHECK-ERROR: sub x3, xzr, w9, sxth #1
48 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
49 // CHECK-ERROR: add x1, x2, sp, uxtx
52 // Wrong registers on flag-setting variants
54 adds x3, xzr, x9, uxtx
56 adds x2, x1, sp, uxtb #2
57 // CHECK-ERROR: error: invalid operand for instruction
58 // CHECK-ERROR: adds sp, x3, w2, uxtb
60 // CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
61 // CHECK-ERROR: adds x3, xzr, x9, uxtx
63 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
64 // CHECK-ERROR: subs x2, x1, sp, uxtx
66 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
67 // CHECK-ERROR: adds x2, x1, sp, uxtb #2
70 // Amount not optional if lsl valid and used
72 // CHECK-ERROR: error: expected #imm after shift specifier
73 // CHECK-ERROR: add sp, x5, x7, lsl
76 //------------------------------------------------------------------------------
77 // Add/sub (immediate)
78 //------------------------------------------------------------------------------
80 // Out of range immediates: < 0 or more than 12 bits
83 add w4, w5, #-1, lsl #12
84 add w5, w6, #0x1000, lsl #12
85 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
86 // CHECK-ERROR-NEXT: add w4, w5, #-1
87 // CHECK-ERROR-NEXT: ^
88 // CHECK-ERROR-AARCH64-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
89 // CHECK-ERROR-AARCH64-NEXT: add w5, w6, #0x1000
90 // CHECK-ERROR-AARCH64-NEXT: ^
91 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
92 // CHECK-ERROR-NEXT: add w4, w5, #-1, lsl #12
93 // CHECK-ERROR-NEXT: ^
94 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
95 // CHECK-ERROR-NEXT: add w5, w6, #0x1000, lsl #12
96 // CHECK-ERROR-NEXT: ^
98 // Only lsl #0 and lsl #12 are allowed
99 add w2, w3, #0x1, lsl #1
100 add w5, w17, #0xfff, lsl #13
101 add w17, w20, #0x1000, lsl #12
102 sub xsp, x34, #0x100, lsl #-1
103 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
104 // CHECK-ERROR-NEXT: add w2, w3, #0x1, lsl #1
105 // CHECK-ERROR-NEXT: ^
106 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
107 // CHECK-ERROR-NEXT: add w5, w17, #0xfff, lsl #13
108 // CHECK-ERROR-NEXT: ^
109 // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
110 // CHECK-ERROR-NEXT: add w17, w20, #0x1000, lsl #12
111 // CHECK-ERROR-NEXT: ^
112 // CHECK-ERROR-NEXT: error: only 'lsl #+N' valid after immediate
113 // CHECK-ERROR-NEXT: sub xsp, x34, #0x100, lsl #-1
114 // CHECK-ERROR-NEXT: ^
116 // Incorrect registers (w31 doesn't exist at all, and 31 decodes to sp for these).
121 // CHECK-ERROR: error: invalid operand for instruction
122 // CHECK-ERROR-NEXT: add w31, w20, #1234
123 // CHECK-ERROR-NEXT: ^
124 // CHECK-ERROR-NEXT: error: invalid operand for instruction
125 // CHECK-ERROR-NEXT: add wzr, w20, #0x123
126 // CHECK-ERROR-NEXT: ^
127 // CHECK-ERROR-NEXT: error: invalid operand for instruction
128 // CHECK-ERROR-NEXT: add w20, wzr, #0x321
129 // CHECK-ERROR-NEXT: ^
130 // CHECK-ERROR-NEXT: error: invalid operand for instruction
131 // CHECK-ERROR-NEXT: add wzr, wzr, #0xfff
132 // CHECK-ERROR-NEXT: ^
134 // Mixed register classes
137 // CHECK-ERROR: error: invalid operand for instruction
138 // CHECK-ERROR-NEXT: add xsp, w2, #123
139 // CHECK-ERROR-NEXT: ^
140 // CHECK-ERROR-NEXT: error: invalid operand for instruction
141 // CHECK-ERROR-NEXT: sub w2, x30, #32
142 // CHECK-ERROR-NEXT: ^
144 // Out of range immediate
145 adds w0, w5, #0x10000
146 // CHECK-ERROR-AARCH64: error: expected compatible register, symbol or integer in range [0, 4095]
147 // CHECK-ERROR-AARCH64-NEXT: adds w0, w5, #0x10000
148 // CHECK-ERROR-AARCH64-NEXT: ^
150 // Wn|WSP should be in second place
152 // ...but wzr is the 31 destination
154 subs x5, xzr, #0x456, lsl #12
155 // CHECK-ERROR: error: invalid operand for instruction
156 // CHECK-ERROR-NEXT: adds w4, wzr, #0x123
157 // CHECK-ERROR-NEXT: ^
158 // CHECK-ERROR-NEXT: error: invalid operand for instruction
159 // CHECK-ERROR-NEXT: subs wsp, w5, #123
160 // CHECK-ERROR-NEXT: ^
161 // CHECK-ERROR-NEXT: error: invalid operand for instruction
162 // CHECK-ERROR-NEXT: subs x5, xzr, #0x456, lsl #12
163 // CHECK-ERROR-NEXT: ^
165 // MOV alias should not accept any fiddling
167 mov wsp, w27, #0xfff, lsl #12
168 // CHECK-ERROR: error: expected compatible register or logical immediate
169 // CHECK-ERROR-NEXT: mov x2, xsp, #123
170 // CHECK-ERROR-NEXT: ^
171 // CHECK-ERROR-NEXT: error: invalid operand for instruction
172 // CHECK-ERROR-NEXT: mov wsp, w27, #0xfff, lsl #12
173 // CHECK-ERROR-NEXT: ^
175 // A relocation should be provided for symbols
176 add x3, x9, #variable
177 // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
178 // CHECK-ERROR-NEXT: add x3, x9, #variable
179 // CHECK-ERROR-NEXT: ^
182 //------------------------------------------------------------------------------
183 // Add-subtract (shifted register)
184 //------------------------------------------------------------------------------
186 add wsp, w1, w2, lsr #3
187 add x4, sp, x9, asr #5
188 add x9, x10, x5, ror #3
189 // CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
190 // CHECK-ERROR-NEXT: add wsp, w1, w2, lsr #3
191 // CHECK-ERROR-NEXT: ^
192 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
193 // CHECK-ERROR-NEXT: add x4, sp, x9, asr #5
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 x9, x10, x5, ror #3
197 // CHECK-ERROR-NEXT: ^
199 add w1, w2, w3, lsl #-1
200 add w1, w2, w3, lsl #32
201 add w1, w2, w3, lsr #-1
202 add w1, w2, w3, lsr #32
203 add w1, w2, w3, asr #-1
204 add w1, w2, w3, asr #32
205 add x1, x2, x3, lsl #-1
206 add x1, x2, x3, lsl #64
207 add x1, x2, x3, lsr #-1
208 add x1, x2, x3, lsr #64
209 add x1, x2, x3, asr #-1
210 add x1, x2, x3, asr #64
211 // CHECK-ERROR: error: expected integer shift amount
212 // CHECK-ERROR-NEXT: add w1, w2, w3, lsl #-1
213 // CHECK-ERROR-NEXT: ^
214 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
215 // CHECK-ERROR-NEXT: add w1, w2, w3, lsl #32
216 // CHECK-ERROR-NEXT: ^
217 // CHECK-ERROR-NEXT: error: expected integer shift amount
218 // CHECK-ERROR-NEXT: add w1, w2, w3, lsr #-1
219 // CHECK-ERROR-NEXT: ^
220 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
221 // CHECK-ERROR-NEXT: add w1, w2, w3, lsr #32
222 // CHECK-ERROR-NEXT: ^
223 // CHECK-ERROR-NEXT: error: expected integer shift amount
224 // CHECK-ERROR-NEXT: add w1, w2, w3, asr #-1
225 // CHECK-ERROR-NEXT: ^
226 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
227 // CHECK-ERROR-NEXT: add w1, w2, w3, asr #32
228 // CHECK-ERROR-NEXT: ^
229 // CHECK-ERROR-NEXT: error: expected integer shift amount
230 // CHECK-ERROR-NEXT: add x1, x2, x3, lsl #-1
231 // CHECK-ERROR-NEXT: ^
232 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
233 // CHECK-ERROR-NEXT: add x1, x2, x3, lsl #64
234 // CHECK-ERROR-NEXT: ^
235 // CHECK-ERROR-NEXT: error: expected integer shift amount
236 // CHECK-ERROR-NEXT: add x1, x2, x3, lsr #-1
237 // CHECK-ERROR-NEXT: ^
238 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
239 // CHECK-ERROR-NEXT: add x1, x2, x3, lsr #64
240 // CHECK-ERROR-NEXT: ^
241 // CHECK-ERROR-NEXT: error: expected integer shift amount
242 // CHECK-ERROR-NEXT: add x1, x2, x3, asr #-1
243 // CHECK-ERROR-NEXT: ^
244 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
245 // CHECK-ERROR-NEXT: add x1, x2, x3, asr #64
246 // CHECK-ERROR-NEXT: ^
248 adds w1, w2, w3, lsl #-1
249 adds w1, w2, w3, lsl #32
250 adds w1, w2, w3, lsr #-1
251 adds w1, w2, w3, lsr #32
252 adds w1, w2, w3, asr #-1
253 adds w1, w2, w3, asr #32
254 adds x1, x2, x3, lsl #-1
255 adds x1, x2, x3, lsl #64
256 adds x1, x2, x3, lsr #-1
257 adds x1, x2, x3, lsr #64
258 adds x1, x2, x3, asr #-1
259 adds x1, x2, x3, asr #64
260 // CHECK-ERROR: error: expected integer shift amount
261 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #-1
262 // CHECK-ERROR-NEXT: ^
263 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
264 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #32
265 // CHECK-ERROR-NEXT: ^
266 // CHECK-ERROR-NEXT: error: expected integer shift amount
267 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #-1
268 // CHECK-ERROR-NEXT: ^
269 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
270 // CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #32
271 // CHECK-ERROR-NEXT: ^
272 // CHECK-ERROR-NEXT: error: expected integer shift amount
273 // CHECK-ERROR-NEXT: adds w1, w2, w3, asr #-1
274 // CHECK-ERROR-NEXT: ^
275 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
276 // CHECK-ERROR-NEXT: adds w1, w2, w3, asr #32
277 // CHECK-ERROR-NEXT: ^
278 // CHECK-ERROR-NEXT: error: expected integer shift amount
279 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #-1
280 // CHECK-ERROR-NEXT: ^
281 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
282 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #64
283 // CHECK-ERROR-NEXT: ^
284 // CHECK-ERROR-NEXT: error: expected integer shift amount
285 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #-1
286 // CHECK-ERROR-NEXT: ^
287 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
288 // CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #64
289 // CHECK-ERROR-NEXT: ^
290 // CHECK-ERROR-NEXT: error: expected integer shift amount
291 // CHECK-ERROR-NEXT: adds x1, x2, x3, asr #-1
292 // CHECK-ERROR-NEXT: ^
293 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
294 // CHECK-ERROR-NEXT: adds x1, x2, x3, asr #64
295 // CHECK-ERROR-NEXT: ^
297 sub w1, w2, w3, lsl #-1
298 sub w1, w2, w3, lsl #32
299 sub w1, w2, w3, lsr #-1
300 sub w1, w2, w3, lsr #32
301 sub w1, w2, w3, asr #-1
302 sub w1, w2, w3, asr #32
303 sub x1, x2, x3, lsl #-1
304 sub x1, x2, x3, lsl #64
305 sub x1, x2, x3, lsr #-1
306 sub x1, x2, x3, lsr #64
307 sub x1, x2, x3, asr #-1
308 sub x1, x2, x3, asr #64
309 // CHECK-ERROR: error: expected integer shift amount
310 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #-1
311 // CHECK-ERROR-NEXT: ^
312 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
313 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #32
314 // CHECK-ERROR-NEXT: ^
315 // CHECK-ERROR-NEXT: error: expected integer shift amount
316 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #-1
317 // CHECK-ERROR-NEXT: ^
318 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
319 // CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #32
320 // CHECK-ERROR-NEXT: ^
321 // CHECK-ERROR-NEXT: error: expected integer shift amount
322 // CHECK-ERROR-NEXT: sub w1, w2, w3, asr #-1
323 // CHECK-ERROR-NEXT: ^
324 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
325 // CHECK-ERROR-NEXT: sub w1, w2, w3, asr #32
326 // CHECK-ERROR-NEXT: ^
327 // CHECK-ERROR-NEXT: error: expected integer shift amount
328 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #-1
329 // CHECK-ERROR-NEXT: ^
330 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
331 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #64
332 // CHECK-ERROR-NEXT: ^
333 // CHECK-ERROR-NEXT: error: expected integer shift amount
334 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #-1
335 // CHECK-ERROR-NEXT: ^
336 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
337 // CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #64
338 // CHECK-ERROR-NEXT: ^
339 // CHECK-ERROR-NEXT: error: expected integer shift amount
340 // CHECK-ERROR-NEXT: sub x1, x2, x3, asr #-1
341 // CHECK-ERROR-NEXT: ^
342 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
343 // CHECK-ERROR-NEXT: sub x1, x2, x3, asr #64
344 // CHECK-ERROR-NEXT: ^
346 subs w1, w2, w3, lsl #-1
347 subs w1, w2, w3, lsl #32
348 subs w1, w2, w3, lsr #-1
349 subs w1, w2, w3, lsr #32
350 subs w1, w2, w3, asr #-1
351 subs w1, w2, w3, asr #32
352 subs x1, x2, x3, lsl #-1
353 subs x1, x2, x3, lsl #64
354 subs x1, x2, x3, lsr #-1
355 subs x1, x2, x3, lsr #64
356 subs x1, x2, x3, asr #-1
357 subs x1, x2, x3, asr #64
358 // CHECK-ERROR: error: expected integer shift amount
359 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #-1
360 // CHECK-ERROR-NEXT: ^
361 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
362 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #32
363 // CHECK-ERROR-NEXT: ^
364 // CHECK-ERROR-NEXT: error: expected integer shift amount
365 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #-1
366 // CHECK-ERROR-NEXT: ^
367 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
368 // CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #32
369 // CHECK-ERROR-NEXT: ^
370 // CHECK-ERROR-NEXT: error: expected integer shift amount
371 // CHECK-ERROR-NEXT: subs w1, w2, w3, asr #-1
372 // CHECK-ERROR-NEXT: ^
373 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
374 // CHECK-ERROR-NEXT: subs w1, w2, w3, asr #32
375 // CHECK-ERROR-NEXT: ^
376 // CHECK-ERROR-NEXT: error: expected integer shift amount
377 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #-1
378 // CHECK-ERROR-NEXT: ^
379 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
380 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #64
381 // CHECK-ERROR-NEXT: ^
382 // CHECK-ERROR-NEXT: error: expected integer shift amount
383 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #-1
384 // CHECK-ERROR-NEXT: ^
385 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
386 // CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #64
387 // CHECK-ERROR-NEXT: ^
388 // CHECK-ERROR-NEXT: error: expected integer shift amount
389 // CHECK-ERROR-NEXT: subs x1, x2, x3, asr #-1
390 // CHECK-ERROR-NEXT: ^
391 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
392 // CHECK-ERROR-NEXT: subs x1, x2, x3, asr #64
393 // CHECK-ERROR-NEXT: ^
397 cmn w11, w12, lsr #-1
398 cmn w11, w12, lsr #32
399 cmn w19, wzr, asr #-1
400 cmn wzr, wzr, asr #32
403 cmn x11, x12, lsr #-1
404 cmn x11, x12, lsr #64
405 cmn x19, xzr, asr #-1
406 cmn xzr, xzr, asr #64
407 // CHECK-ERROR: error: expected integer shift amount
408 // CHECK-ERROR-NEXT: cmn w9, w10, lsl #-1
409 // CHECK-ERROR-NEXT: ^
410 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
411 // CHECK-ERROR-NEXT: cmn w9, w10, lsl #32
412 // CHECK-ERROR-NEXT: ^
413 // CHECK-ERROR-NEXT: error: expected integer shift amount
414 // CHECK-ERROR-NEXT: cmn w11, w12, lsr #-1
415 // CHECK-ERROR-NEXT: ^
416 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
417 // CHECK-ERROR-NEXT: cmn w11, w12, lsr #32
418 // CHECK-ERROR-NEXT: ^
419 // CHECK-ERROR-NEXT: error: expected integer shift amount
420 // CHECK-ERROR-NEXT: cmn w19, wzr, asr #-1
421 // CHECK-ERROR-NEXT: ^
422 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
423 // CHECK-ERROR-NEXT: cmn wzr, wzr, asr #32
424 // CHECK-ERROR-NEXT: ^
425 // CHECK-ERROR-NEXT: error: expected integer shift amount
426 // CHECK-ERROR-NEXT: cmn x9, x10, lsl #-1
427 // CHECK-ERROR-NEXT: ^
428 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
429 // CHECK-ERROR-NEXT: cmn x9, x10, lsl #64
430 // CHECK-ERROR-NEXT: ^
431 // CHECK-ERROR-NEXT: error: expected integer shift amount
432 // CHECK-ERROR-NEXT: cmn x11, x12, lsr #-1
433 // CHECK-ERROR-NEXT: ^
434 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
435 // CHECK-ERROR-NEXT: cmn x11, x12, lsr #64
436 // CHECK-ERROR-NEXT: ^
437 // CHECK-ERROR-NEXT: error: expected integer shift amount
438 // CHECK-ERROR-NEXT: cmn x19, xzr, asr #-1
439 // CHECK-ERROR-NEXT: ^
440 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
441 // CHECK-ERROR-NEXT: cmn xzr, xzr, asr #64
442 // CHECK-ERROR-NEXT: ^
446 cmp w11, w12, lsr #-1
447 cmp w11, w12, lsr #32
448 cmp w19, wzr, asr #-1
449 cmp wzr, wzr, asr #32
452 cmp x11, x12, lsr #-1
453 cmp x11, x12, lsr #64
454 cmp x19, xzr, asr #-1
455 cmp xzr, xzr, asr #64
456 // CHECK-ERROR: error: expected integer shift amount
457 // CHECK-ERROR-NEXT: cmp w9, w10, lsl #-1
458 // CHECK-ERROR-NEXT: ^
459 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
460 // CHECK-ERROR-NEXT: cmp w9, w10, lsl #32
461 // CHECK-ERROR-NEXT: ^
462 // CHECK-ERROR-NEXT: error: expected integer shift amount
463 // CHECK-ERROR-NEXT: cmp w11, w12, lsr #-1
464 // CHECK-ERROR-NEXT: ^
465 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
466 // CHECK-ERROR-NEXT: cmp w11, w12, lsr #32
467 // CHECK-ERROR-NEXT: ^
468 // CHECK-ERROR-NEXT: error: expected integer shift amount
469 // CHECK-ERROR-NEXT: cmp w19, wzr, asr #-1
470 // CHECK-ERROR-NEXT: ^
471 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
472 // CHECK-ERROR-NEXT: cmp wzr, wzr, asr #32
473 // CHECK-ERROR-NEXT: ^
474 // CHECK-ERROR-NEXT: error: expected integer shift amount
475 // CHECK-ERROR-NEXT: cmp x9, x10, lsl #-1
476 // CHECK-ERROR-NEXT: ^
477 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
478 // CHECK-ERROR-NEXT: cmp x9, x10, lsl #64
479 // CHECK-ERROR-NEXT: ^
480 // CHECK-ERROR-NEXT: error: expected integer shift amount
481 // CHECK-ERROR-NEXT: cmp x11, x12, lsr #-1
482 // CHECK-ERROR-NEXT: ^
483 // CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
484 // CHECK-ERROR-NEXT: cmp x11, x12, lsr #64
485 // CHECK-ERROR-NEXT: ^
486 // CHECK-ERROR-NEXT: error: expected integer shift amount
487 // CHECK-ERROR-NEXT: cmp x19, xzr, asr #-1
488 // CHECK-ERROR-NEXT: ^
489 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
490 // CHECK-ERROR-NEXT: cmp xzr, xzr, asr #64
491 // CHECK-ERROR-NEXT: ^
495 neg w11, w12, lsr #-1
496 neg w11, w12, lsr #32
497 neg w19, wzr, asr #-1
498 neg wzr, wzr, asr #32
501 neg x11, x12, lsr #-1
502 neg x11, x12, lsr #64
503 neg x19, xzr, asr #-1
504 neg xzr, xzr, asr #64
505 // CHECK-ERROR: error: expected integer shift amount
506 // CHECK-ERROR-NEXT: neg w9, w10, lsl #-1
507 // CHECK-ERROR-NEXT: ^
508 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
509 // CHECK-ERROR-NEXT: neg w9, w10, lsl #32
510 // CHECK-ERROR-NEXT: ^
511 // CHECK-ERROR-NEXT: error: expected integer shift amount
512 // CHECK-ERROR-NEXT: neg w11, w12, lsr #-1
513 // CHECK-ERROR-NEXT: ^
514 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
515 // CHECK-ERROR-NEXT: neg w11, w12, lsr #32
516 // CHECK-ERROR-NEXT: ^
517 // CHECK-ERROR-NEXT: error: expected integer shift amount
518 // CHECK-ERROR-NEXT: neg w19, wzr, asr #-1
519 // CHECK-ERROR-NEXT: ^
520 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
521 // CHECK-ERROR-NEXT: neg wzr, wzr, asr #32
522 // CHECK-ERROR-NEXT: ^
523 // CHECK-ERROR-NEXT: error: expected integer shift amount
524 // CHECK-ERROR-NEXT: neg x9, x10, lsl #-1
525 // CHECK-ERROR-NEXT: ^
526 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
527 // CHECK-ERROR-NEXT: neg x9, x10, lsl #64
528 // CHECK-ERROR-NEXT: ^
529 // CHECK-ERROR-NEXT: error: expected integer shift amount
530 // CHECK-ERROR-NEXT: neg x11, x12, lsr #-1
531 // CHECK-ERROR-NEXT: ^
532 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
533 // CHECK-ERROR-NEXT: neg x11, x12, lsr #64
534 // CHECK-ERROR-NEXT: ^
535 // CHECK-ERROR-NEXT: error: expected integer shift amount
536 // CHECK-ERROR-NEXT: neg x19, xzr, asr #-1
537 // CHECK-ERROR-NEXT: ^
538 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
539 // CHECK-ERROR-NEXT: neg xzr, xzr, asr #64
540 // CHECK-ERROR-NEXT: ^
542 negs w9, w10, lsl #-1
543 negs w9, w10, lsl #32
544 negs w11, w12, lsr #-1
545 negs w11, w12, lsr #32
546 negs w19, wzr, asr #-1
547 negs wzr, wzr, asr #32
548 negs x9, x10, lsl #-1
549 negs x9, x10, lsl #64
550 negs x11, x12, lsr #-1
551 negs x11, x12, lsr #64
552 negs x19, xzr, asr #-1
553 negs xzr, xzr, asr #64
554 // CHECK-ERROR: error: expected integer shift amount
555 // CHECK-ERROR-NEXT: negs w9, w10, lsl #-1
556 // CHECK-ERROR-NEXT: ^
557 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
558 // CHECK-ERROR-NEXT: negs w9, w10, lsl #32
559 // CHECK-ERROR-NEXT: ^
560 // CHECK-ERROR-NEXT: error: expected integer shift amount
561 // CHECK-ERROR-NEXT: negs w11, w12, lsr #-1
562 // CHECK-ERROR-NEXT: ^
563 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
564 // CHECK-ERROR-NEXT: negs w11, w12, lsr #32
565 // CHECK-ERROR-NEXT: ^
566 // CHECK-ERROR-NEXT: error: expected integer shift amount
567 // CHECK-ERROR-NEXT: negs w19, wzr, asr #-1
568 // CHECK-ERROR-NEXT: ^
569 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
570 // CHECK-ERROR-NEXT: negs wzr, wzr, asr #32
571 // CHECK-ERROR-NEXT: ^
572 // CHECK-ERROR-NEXT: error: expected integer shift amount
573 // CHECK-ERROR-NEXT: negs x9, x10, lsl #-1
574 // CHECK-ERROR-NEXT: ^
575 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
576 // CHECK-ERROR-NEXT: negs x9, x10, lsl #64
577 // CHECK-ERROR-NEXT: ^
578 // CHECK-ERROR-NEXT: error: expected integer shift amount
579 // CHECK-ERROR-NEXT: negs x11, x12, lsr #-1
580 // CHECK-ERROR-NEXT: ^
581 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
582 // CHECK-ERROR-NEXT: negs x11, x12, lsr #64
583 // CHECK-ERROR-NEXT: ^
584 // CHECK-ERROR-NEXT: error: expected integer shift amount
585 // CHECK-ERROR-NEXT: negs x19, xzr, asr #-1
586 // CHECK-ERROR-NEXT: ^
587 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
588 // CHECK-ERROR-NEXT: negs xzr, xzr, asr #64
589 // CHECK-ERROR-NEXT: ^
591 //------------------------------------------------------------------------------
592 // Add-subtract (shifted register)
593 //------------------------------------------------------------------------------
598 // CHECK-ERROR: error: invalid operand for instruction
599 // CHECK-ERROR-NEXT: adc wsp, w3, w5
600 // CHECK-ERROR-NEXT: ^
601 // CHECK-ERROR-NEXT: error: invalid operand for instruction
602 // CHECK-ERROR-NEXT: adc w1, wsp, w2
603 // CHECK-ERROR-NEXT: ^
604 // CHECK-ERROR-NEXT: error: invalid operand for instruction
605 // CHECK-ERROR-NEXT: adc w0, w10, wsp
606 // CHECK-ERROR-NEXT: ^
611 // CHECK-ERROR: error: invalid operand for instruction
612 // CHECK-ERROR-NEXT: adc sp, x3, x5
613 // CHECK-ERROR-NEXT: ^
614 // CHECK-ERROR-NEXT: error: invalid operand for instruction
615 // CHECK-ERROR-NEXT: adc x1, sp, x2
616 // CHECK-ERROR-NEXT: ^
617 // CHECK-ERROR-NEXT: error: invalid operand for instruction
618 // CHECK-ERROR-NEXT: adc x0, x10, sp
619 // CHECK-ERROR-NEXT: ^
624 // CHECK-ERROR: error: invalid operand for instruction
625 // CHECK-ERROR-NEXT: adcs wsp, w3, w5
626 // CHECK-ERROR-NEXT: ^
627 // CHECK-ERROR-NEXT: error: invalid operand for instruction
628 // CHECK-ERROR-NEXT: adcs w1, wsp, w2
629 // CHECK-ERROR-NEXT: ^
630 // CHECK-ERROR-NEXT: error: invalid operand for instruction
631 // CHECK-ERROR-NEXT: adcs w0, w10, wsp
632 // CHECK-ERROR-NEXT: ^
637 // CHECK-ERROR: error: invalid operand for instruction
638 // CHECK-ERROR-NEXT: adcs sp, x3, x5
639 // CHECK-ERROR-NEXT: ^
640 // CHECK-ERROR-NEXT: error: invalid operand for instruction
641 // CHECK-ERROR-NEXT: adcs x1, sp, x2
642 // CHECK-ERROR-NEXT: ^
643 // CHECK-ERROR-NEXT: error: invalid operand for instruction
644 // CHECK-ERROR-NEXT: adcs x0, x10, sp
645 // CHECK-ERROR-NEXT: ^
650 // CHECK-ERROR: error: invalid operand for instruction
651 // CHECK-ERROR-NEXT: sbc wsp, w3, w5
652 // CHECK-ERROR-NEXT: ^
653 // CHECK-ERROR-NEXT: error: invalid operand for instruction
654 // CHECK-ERROR-NEXT: sbc w1, wsp, w2
655 // CHECK-ERROR-NEXT: ^
656 // CHECK-ERROR-NEXT: error: invalid operand for instruction
657 // CHECK-ERROR-NEXT: sbc w0, w10, wsp
658 // CHECK-ERROR-NEXT: ^
663 // CHECK-ERROR: error: invalid operand for instruction
664 // CHECK-ERROR-NEXT: sbc sp, x3, x5
665 // CHECK-ERROR-NEXT: ^
666 // CHECK-ERROR-NEXT: error: invalid operand for instruction
667 // CHECK-ERROR-NEXT: sbc x1, sp, x2
668 // CHECK-ERROR-NEXT: ^
669 // CHECK-ERROR-NEXT: error: invalid operand for instruction
670 // CHECK-ERROR-NEXT: sbc x0, x10, sp
671 // CHECK-ERROR-NEXT: ^
676 // CHECK-ERROR: error: invalid operand for instruction
677 // CHECK-ERROR-NEXT: sbcs wsp, w3, w5
678 // CHECK-ERROR-NEXT: ^
679 // CHECK-ERROR-NEXT: error: invalid operand for instruction
680 // CHECK-ERROR-NEXT: sbcs w1, wsp, w2
681 // CHECK-ERROR-NEXT: ^
682 // CHECK-ERROR-NEXT: error: invalid operand for instruction
683 // CHECK-ERROR-NEXT: sbcs w0, w10, wsp
684 // CHECK-ERROR-NEXT: ^
689 // CHECK-ERROR: error: invalid operand for instruction
690 // CHECK-ERROR-NEXT: sbcs sp, x3, x5
691 // CHECK-ERROR-NEXT: ^
692 // CHECK-ERROR-NEXT: error: invalid operand for instruction
693 // CHECK-ERROR-NEXT: sbcs x1, sp, x2
694 // CHECK-ERROR-NEXT: ^
695 // CHECK-ERROR-NEXT: error: invalid operand for instruction
696 // CHECK-ERROR-NEXT: sbcs x0, x10, sp
697 // CHECK-ERROR-NEXT: ^
703 // CHECK-ERROR: error: invalid operand for instruction
704 // CHECK-ERROR-NEXT: ngc wsp, w3
705 // CHECK-ERROR-NEXT: ^
706 // CHECK-ERROR-NEXT: error: invalid operand for instruction
707 // CHECK-ERROR-NEXT: ngc w9, wsp
708 // CHECK-ERROR-NEXT: ^
709 // CHECK-ERROR-NEXT: error: invalid operand for instruction
710 // CHECK-ERROR-NEXT: ngc sp, x9
711 // CHECK-ERROR-NEXT: ^
712 // CHECK-ERROR-NEXT: error: invalid operand for instruction
713 // CHECK-ERROR-NEXT: ngc x2, sp
714 // CHECK-ERROR-NEXT: ^
720 // CHECK-ERROR: error: invalid operand for instruction
721 // CHECK-ERROR-NEXT: ngcs wsp, w3
722 // CHECK-ERROR-NEXT: ^
723 // CHECK-ERROR-NEXT: error: invalid operand for instruction
724 // CHECK-ERROR-NEXT: ngcs w9, wsp
725 // CHECK-ERROR-NEXT: ^
726 // CHECK-ERROR-NEXT: error: invalid operand for instruction
727 // CHECK-ERROR-NEXT: ngcs sp, x9
728 // CHECK-ERROR-NEXT: ^
729 // CHECK-ERROR-NEXT: error: invalid operand for instruction
730 // CHECK-ERROR-NEXT: ngcs x2, sp
731 // CHECK-ERROR-NEXT: ^
733 //------------------------------------------------------------------------------
735 //------------------------------------------------------------------------------
743 // CHECK-ERROR: error: invalid operand for instruction
744 // CHECK-ERROR-NEXT: sbfm x3, w13, #0, #0
745 // CHECK-ERROR-NEXT: ^
746 // CHECK-ERROR-NEXT: error: invalid operand for instruction
747 // CHECK-ERROR-NEXT: sbfm w12, x9, #0, #0
748 // CHECK-ERROR-NEXT: ^
749 // CHECK-ERROR-NEXT: error: invalid operand for instruction
750 // CHECK-ERROR-NEXT: sbfm sp, x3, #3, #5
751 // CHECK-ERROR-NEXT: ^
752 // CHECK-ERROR-NEXT: error: invalid operand for instruction
753 // CHECK-ERROR-NEXT: sbfm w3, wsp, #1, #9
754 // CHECK-ERROR-NEXT: ^
755 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
756 // CHECK-ERROR-NEXT: sbfm x9, x5, #-1, #0
757 // CHECK-ERROR-NEXT: ^
758 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
759 // CHECK-ERROR-NEXT: sbfm x9, x5, #0, #-1
760 // CHECK-ERROR-NEXT: ^
763 sbfm w7, w11, #19, #32
764 sbfm x29, x30, #64, #0
765 sbfm x10, x20, #63, #64
766 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
767 // CHECK-ERROR-NEXT: sbfm w3, w5, #32, #1
768 // CHECK-ERROR-NEXT: ^
769 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
770 // CHECK-ERROR-NEXT: sbfm w7, w11, #19, #32
771 // CHECK-ERROR-NEXT: ^
772 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
773 // CHECK-ERROR-NEXT: sbfm x29, x30, #64, #0
774 // CHECK-ERROR-NEXT: ^
775 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
776 // CHECK-ERROR-NEXT: sbfm x10, x20, #63, #64
777 // CHECK-ERROR-NEXT: ^
780 ubfm w7, w11, #19, #32
781 ubfm x29, x30, #64, #0
782 ubfm x10, x20, #63, #64
783 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
784 // CHECK-ERROR-NEXT: ubfm w3, w5, #32, #1
785 // CHECK-ERROR-NEXT: ^
786 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
787 // CHECK-ERROR-NEXT: ubfm w7, w11, #19, #32
788 // CHECK-ERROR-NEXT: ^
789 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
790 // CHECK-ERROR-NEXT: ubfm x29, x30, #64, #0
791 // CHECK-ERROR-NEXT: ^
792 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
793 // CHECK-ERROR-NEXT: ubfm x10, x20, #63, #64
794 // CHECK-ERROR-NEXT: ^
797 bfm w7, w11, #19, #32
798 bfm x29, x30, #64, #0
799 bfm x10, x20, #63, #64
800 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
801 // CHECK-ERROR-NEXT: bfm w3, w5, #32, #1
802 // CHECK-ERROR-NEXT: ^
803 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
804 // CHECK-ERROR-NEXT: bfm w7, w11, #19, #32
805 // CHECK-ERROR-NEXT: ^
806 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
807 // CHECK-ERROR-NEXT: bfm x29, x30, #64, #0
808 // CHECK-ERROR-NEXT: ^
809 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
810 // CHECK-ERROR-NEXT: bfm x10, x20, #63, #64
811 // CHECK-ERROR-NEXT: ^
816 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
817 // CHECK-ERROR-AARCH64-NEXT: sxtb x3, x2
818 // CHECK-ERROR-AARCH64-NEXT: ^
819 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
820 // CHECK-ERROR-AARCH64-NEXT: sxth xzr, xzr
821 // CHECK-ERROR-AARCH64-NEXT: ^
822 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
823 // CHECK-ERROR-AARCH64-NEXT: sxtw x3, x5
824 // CHECK-ERROR-AARCH64-NEXT: ^
831 // CHECK-ERROR: error: invalid operand for instruction
832 // CHECK-ERROR-NEXT: uxtb x3, x12
833 // CHECK-ERROR-NEXT: ^
834 // CHECK-ERROR-NEXT: error: invalid operand for instruction
835 // CHECK-ERROR-NEXT: uxth x5, x9
836 // CHECK-ERROR-NEXT: ^
837 // CHECK-ERROR-AARCH64-NEXT: error: invalid instruction
838 // CHECK-ERROR-AARCH64-NEXT: uxtw x3, x5
839 // CHECK-ERROR-AARCH64-NEXT: ^
840 // CHECK-ERROR-NEXT: error: invalid operand for instruction
841 // CHECK-ERROR-NEXT: uxtb x2, sp
842 // CHECK-ERROR-NEXT: ^
843 // CHECK-ERROR-NEXT: error: invalid operand for instruction
844 // CHECK-ERROR-NEXT: uxtb sp, xzr
845 // CHECK-ERROR-NEXT: ^
852 // CHECK-ERROR: error: invalid operand for instruction
853 // CHECK-ERROR-NEXT: asr x3, w2, #1
854 // CHECK-ERROR-NEXT: ^
855 // CHECK-ERROR-NEXT: error: invalid operand for instruction
856 // CHECK-ERROR-NEXT: asr sp, x2, #1
857 // CHECK-ERROR-NEXT: ^
858 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
859 // CHECK-ERROR-NEXT: asr x25, x26, #-1
860 // CHECK-ERROR-NEXT: ^
861 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
862 // CHECK-ERROR-NEXT: asr x25, x26, #64
863 // CHECK-ERROR-NEXT: ^
864 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
865 // CHECK-ERROR-NEXT: asr w9, w8, #32
866 // CHECK-ERROR-NEXT: ^
869 sbfiz wsp, w9, #0, #1
870 sbfiz w9, w10, #32, #1
871 sbfiz w11, w12, #32, #0
872 sbfiz w9, w10, #10, #23
873 sbfiz x3, x5, #12, #53
875 sbfiz w3, wsp, #10, #8
876 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
877 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
878 // CHECK-ERROR-NEXT: sbfiz w1, w2, #0, #0
879 // CHECK-ERROR-NEXT: ^
880 // CHECK-ERROR-NEXT: error: invalid operand for instruction
881 // CHECK-ERROR-NEXT: sbfiz wsp, w9, #0, #1
882 // CHECK-ERROR-NEXT: ^
883 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
884 // CHECK-ERROR-NEXT: sbfiz w9, w10, #32, #1
885 // CHECK-ERROR-NEXT: ^
886 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
887 // CHECK-ERROR-NEXT: sbfiz w11, w12, #32, #0
888 // CHECK-ERROR-NEXT: ^
889 // CHECK-ERROR-NEXT: error: requested insert overflows register
890 // CHECK-ERROR-NEXT: sbfiz w9, w10, #10, #23
891 // CHECK-ERROR-NEXT: ^
892 // CHECK-ERROR-NEXT: error: requested insert overflows register
893 // CHECK-ERROR-NEXT: sbfiz x3, x5, #12, #53
894 // CHECK-ERROR-NEXT: ^
895 // CHECK-ERROR-NEXT: error: invalid operand for instruction
896 // CHECK-ERROR-NEXT: sbfiz sp, x3, #7, #6
897 // CHECK-ERROR-NEXT: ^
898 // CHECK-ERROR-NEXT: error: invalid operand for instruction
899 // CHECK-ERROR-NEXT: sbfiz w3, wsp, #10, #8
900 // CHECK-ERROR-NEXT: ^
904 sbfx w9, w10, #32, #1
905 sbfx w11, w12, #32, #0
906 sbfx w9, w10, #10, #23
907 sbfx x3, x5, #12, #53
909 sbfx w3, wsp, #10, #8
910 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
911 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
912 // CHECK-ERROR-NEXT: sbfx w1, w2, #0, #0
913 // CHECK-ERROR-NEXT: ^
914 // CHECK-ERROR-NEXT: error: invalid operand for instruction
915 // CHECK-ERROR-NEXT: sbfx wsp, w9, #0, #1
916 // CHECK-ERROR-NEXT: ^
917 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
918 // CHECK-ERROR-NEXT: sbfx w9, w10, #32, #1
919 // CHECK-ERROR-NEXT: ^
920 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
921 // CHECK-ERROR-NEXT: sbfx w11, w12, #32, #0
922 // CHECK-ERROR-NEXT: ^
923 // CHECK-ERROR-NEXT: error: requested extract overflows register
924 // CHECK-ERROR-NEXT: sbfx w9, w10, #10, #23
925 // CHECK-ERROR-NEXT: ^
926 // CHECK-ERROR-NEXT: error: requested extract overflows register
927 // CHECK-ERROR-NEXT: sbfx x3, x5, #12, #53
928 // CHECK-ERROR-NEXT: ^
929 // CHECK-ERROR-NEXT: error: invalid operand for instruction
930 // CHECK-ERROR-NEXT: sbfx sp, x3, #7, #6
931 // CHECK-ERROR-NEXT: ^
932 // CHECK-ERROR-NEXT: error: invalid operand for instruction
933 // CHECK-ERROR-NEXT: sbfx w3, wsp, #10, #8
934 // CHECK-ERROR-NEXT: ^
939 bfi w11, w12, #32, #0
940 bfi w9, w10, #10, #23
944 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
945 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
946 // CHECK-ERROR-NEXT: bfi w1, w2, #0, #0
947 // CHECK-ERROR-NEXT: ^
948 // CHECK-ERROR-NEXT: error: invalid operand for instruction
949 // CHECK-ERROR-NEXT: bfi wsp, w9, #0, #1
950 // CHECK-ERROR-NEXT: ^
951 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
952 // CHECK-ERROR-NEXT: bfi w9, w10, #32, #1
953 // CHECK-ERROR-NEXT: ^
954 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
955 // CHECK-ERROR-NEXT: bfi w11, w12, #32, #0
956 // CHECK-ERROR-NEXT: ^
957 // CHECK-ERROR-NEXT: error: requested insert overflows register
958 // CHECK-ERROR-NEXT: bfi w9, w10, #10, #23
959 // CHECK-ERROR-NEXT: ^
960 // CHECK-ERROR-NEXT: error: requested insert overflows register
961 // CHECK-ERROR-NEXT: bfi x3, x5, #12, #53
962 // CHECK-ERROR-NEXT: ^
963 // CHECK-ERROR-NEXT: error: invalid operand for instruction
964 // CHECK-ERROR-NEXT: bfi sp, x3, #7, #6
965 // CHECK-ERROR-NEXT: ^
966 // CHECK-ERROR-NEXT: error: invalid operand for instruction
967 // CHECK-ERROR-NEXT: bfi w3, wsp, #10, #8
968 // CHECK-ERROR-NEXT: ^
971 bfxil wsp, w9, #0, #1
972 bfxil w9, w10, #32, #1
973 bfxil w11, w12, #32, #0
974 bfxil w9, w10, #10, #23
975 bfxil x3, x5, #12, #53
977 bfxil w3, wsp, #10, #8
978 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
979 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
980 // CHECK-ERROR-NEXT: bfxil w1, w2, #0, #0
981 // CHECK-ERROR-NEXT: ^
982 // CHECK-ERROR-NEXT: error: invalid operand for instruction
983 // CHECK-ERROR-NEXT: bfxil wsp, w9, #0, #1
984 // CHECK-ERROR-NEXT: ^
985 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
986 // CHECK-ERROR-NEXT: bfxil w9, w10, #32, #1
987 // CHECK-ERROR-NEXT: ^
988 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
989 // CHECK-ERROR-NEXT: bfxil w11, w12, #32, #0
990 // CHECK-ERROR-NEXT: ^
991 // CHECK-ERROR-NEXT: error: requested extract overflows register
992 // CHECK-ERROR-NEXT: bfxil w9, w10, #10, #23
993 // CHECK-ERROR-NEXT: ^
994 // CHECK-ERROR-NEXT: error: requested extract overflows register
995 // CHECK-ERROR-NEXT: bfxil x3, x5, #12, #53
996 // CHECK-ERROR-NEXT: ^
997 // CHECK-ERROR-NEXT: error: invalid operand for instruction
998 // CHECK-ERROR-NEXT: bfxil sp, x3, #7, #6
999 // CHECK-ERROR-NEXT: ^
1000 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1001 // CHECK-ERROR-NEXT: bfxil w3, wsp, #10, #8
1002 // CHECK-ERROR-NEXT: ^
1004 ubfiz w1, w2, #0, #0
1005 ubfiz wsp, w9, #0, #1
1006 ubfiz w9, w10, #32, #1
1007 ubfiz w11, w12, #32, #0
1008 ubfiz w9, w10, #10, #23
1009 ubfiz x3, x5, #12, #53
1010 ubfiz sp, x3, #7, #6
1011 ubfiz w3, wsp, #10, #8
1012 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
1013 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
1014 // CHECK-ERROR-NEXT: ubfiz w1, w2, #0, #0
1015 // CHECK-ERROR-NEXT: ^
1016 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1017 // CHECK-ERROR-NEXT: ubfiz wsp, w9, #0, #1
1018 // CHECK-ERROR-NEXT: ^
1019 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1020 // CHECK-ERROR-NEXT: ubfiz w9, w10, #32, #1
1021 // CHECK-ERROR-NEXT: ^
1022 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1023 // CHECK-ERROR-NEXT: ubfiz w11, w12, #32, #0
1024 // CHECK-ERROR-NEXT: ^
1025 // CHECK-ERROR-NEXT: error: requested insert overflows register
1026 // CHECK-ERROR-NEXT: ubfiz w9, w10, #10, #23
1027 // CHECK-ERROR-NEXT: ^
1028 // CHECK-ERROR-NEXT: error: requested insert overflows register
1029 // CHECK-ERROR-NEXT: ubfiz x3, x5, #12, #53
1030 // CHECK-ERROR-NEXT: ^
1031 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1032 // CHECK-ERROR-NEXT: ubfiz sp, x3, #7, #6
1033 // CHECK-ERROR-NEXT: ^
1034 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1035 // CHECK-ERROR-NEXT: ubfiz w3, wsp, #10, #8
1036 // CHECK-ERROR-NEXT: ^
1039 ubfx wsp, w9, #0, #1
1040 ubfx w9, w10, #32, #1
1041 ubfx w11, w12, #32, #0
1042 ubfx w9, w10, #10, #23
1043 ubfx x3, x5, #12, #53
1045 ubfx w3, wsp, #10, #8
1046 // CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
1047 // CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
1048 // CHECK-ERROR-NEXT: ubfx w1, w2, #0, #0
1049 // CHECK-ERROR-NEXT: ^
1050 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1051 // CHECK-ERROR-NEXT: ubfx wsp, w9, #0, #1
1052 // CHECK-ERROR-NEXT: ^
1053 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1054 // CHECK-ERROR-NEXT: ubfx w9, w10, #32, #1
1055 // CHECK-ERROR-NEXT: ^
1056 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1057 // CHECK-ERROR-NEXT: ubfx w11, w12, #32, #0
1058 // CHECK-ERROR-NEXT: ^
1059 // CHECK-ERROR-NEXT: error: requested extract overflows register
1060 // CHECK-ERROR-NEXT: ubfx w9, w10, #10, #23
1061 // CHECK-ERROR-NEXT: ^
1062 // CHECK-ERROR-NEXT: error: requested extract overflows register
1063 // CHECK-ERROR-NEXT: ubfx x3, x5, #12, #53
1064 // CHECK-ERROR-NEXT: ^
1065 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1066 // CHECK-ERROR-NEXT: ubfx sp, x3, #7, #6
1067 // CHECK-ERROR-NEXT: ^
1068 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1069 // CHECK-ERROR-NEXT: ubfx w3, wsp, #10, #8
1070 // CHECK-ERROR-NEXT: ^
1072 //------------------------------------------------------------------------------
1073 // Compare & branch (immediate)
1074 //------------------------------------------------------------------------------
1079 // CHECK-ERROR: error: invalid operand for instruction
1080 // CHECK-ERROR-NEXT: cbnz wsp, lbl
1081 // CHECK-ERROR-NEXT: ^
1082 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1083 // CHECK-ERROR-NEXT: cbz sp, lbl
1084 // CHECK-ERROR-NEXT: ^
1085 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1086 // CHECK-ERROR-NEXT: cbz x3, x5
1087 // CHECK-ERROR-NEXT: ^
1092 // CHECK-ERROR: error: expected label or encodable integer pc offset
1093 // CHECK-ERROR-NEXT: cbz w20, #1048576
1094 // CHECK-ERROR-NEXT: ^
1095 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1096 // CHECK-ERROR-NEXT: cbnz xzr, #-1048580
1097 // CHECK-ERROR-NEXT: ^
1098 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1099 // CHECK-ERROR-NEXT: cbz x29, #1
1100 // CHECK-ERROR-NEXT: ^
1102 //------------------------------------------------------------------------------
1103 // Conditional branch (immediate)
1104 //------------------------------------------------------------------------------
1107 // CHECK-ERROR: error: invalid condition code
1108 // CHECK-ERROR-NEXT: b.zf lbl
1109 // CHECK-ERROR-NEXT: ^
1114 // CHECK-ERROR: error: expected label or encodable integer pc offset
1115 // CHECK-ERROR-NEXT: b.eq #1048576
1116 // CHECK-ERROR-NEXT: ^
1117 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1118 // CHECK-ERROR-NEXT: b.ge #-1048580
1119 // CHECK-ERROR-NEXT: ^
1120 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1121 // CHECK-ERROR-NEXT: b.cc #1
1122 // CHECK-ERROR-NEXT: ^
1124 //------------------------------------------------------------------------------
1125 // Conditional compare (immediate)
1126 //------------------------------------------------------------------------------
1128 ccmp wsp, #4, #2, ne
1129 ccmp w25, #-1, #15, hs
1130 ccmp w3, #32, #0, ge
1131 ccmp w19, #5, #-1, lt
1132 ccmp w20, #7, #16, hs
1133 // CHECK-ERROR: error: invalid operand for instruction
1134 // CHECK-ERROR-NEXT: ccmp wsp, #4, #2, ne
1135 // CHECK-ERROR-NEXT: ^
1136 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1137 // CHECK-ERROR-NEXT: ccmp w25, #-1, #15, hs
1138 // CHECK-ERROR-NEXT: ^
1139 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1140 // CHECK-ERROR-NEXT: ccmp w3, #32, #0, ge
1141 // CHECK-ERROR-NEXT: ^
1142 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1143 // CHECK-ERROR-NEXT: ccmp w19, #5, #-1, lt
1144 // CHECK-ERROR-NEXT: ^
1145 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1146 // CHECK-ERROR-NEXT: ccmp w20, #7, #16, hs
1147 // CHECK-ERROR-NEXT: ^
1150 ccmp x25, #-1, #15, hs
1151 ccmp x3, #32, #0, ge
1152 ccmp x19, #5, #-1, lt
1153 ccmp x20, #7, #16, hs
1154 // CHECK-ERROR: error: invalid operand for instruction
1155 // CHECK-ERROR-NEXT: ccmp sp, #4, #2, ne
1156 // CHECK-ERROR-NEXT: ^
1157 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1158 // CHECK-ERROR-NEXT: ccmp x25, #-1, #15, hs
1159 // CHECK-ERROR-NEXT: ^
1160 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1161 // CHECK-ERROR-NEXT: ccmp x3, #32, #0, ge
1162 // CHECK-ERROR-NEXT: ^
1163 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1164 // CHECK-ERROR-NEXT: ccmp x19, #5, #-1, lt
1165 // CHECK-ERROR-NEXT: ^
1166 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1167 // CHECK-ERROR-NEXT: ccmp x20, #7, #16, hs
1168 // CHECK-ERROR-NEXT: ^
1170 ccmn wsp, #4, #2, ne
1171 ccmn w25, #-1, #15, hs
1172 ccmn w3, #32, #0, ge
1173 ccmn w19, #5, #-1, lt
1174 ccmn w20, #7, #16, hs
1175 // CHECK-ERROR: error: invalid operand for instruction
1176 // CHECK-ERROR-NEXT: ccmn wsp, #4, #2, ne
1177 // CHECK-ERROR-NEXT: ^
1178 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1179 // CHECK-ERROR-NEXT: ccmn w25, #-1, #15, hs
1180 // CHECK-ERROR-NEXT: ^
1181 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1182 // CHECK-ERROR-NEXT: ccmn w3, #32, #0, ge
1183 // CHECK-ERROR-NEXT: ^
1184 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1185 // CHECK-ERROR-NEXT: ccmn w19, #5, #-1, lt
1186 // CHECK-ERROR-NEXT: ^
1187 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1188 // CHECK-ERROR-NEXT: ccmn w20, #7, #16, hs
1189 // CHECK-ERROR-NEXT: ^
1192 ccmn x25, #-1, #15, hs
1193 ccmn x3, #32, #0, ge
1194 ccmn x19, #5, #-1, lt
1195 ccmn x20, #7, #16, hs
1196 // CHECK-ERROR: error: invalid operand for instruction
1197 // CHECK-ERROR-NEXT: ccmn sp, #4, #2, ne
1198 // CHECK-ERROR-NEXT: ^
1199 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1200 // CHECK-ERROR-NEXT: ccmn x25, #-1, #15, hs
1201 // CHECK-ERROR-NEXT: ^
1202 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1203 // CHECK-ERROR-NEXT: ccmn x3, #32, #0, ge
1204 // CHECK-ERROR-NEXT: ^
1205 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1206 // CHECK-ERROR-NEXT: ccmn x19, #5, #-1, lt
1207 // CHECK-ERROR-NEXT: ^
1208 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1209 // CHECK-ERROR-NEXT: ccmn x20, #7, #16, hs
1210 // CHECK-ERROR-NEXT: ^
1212 //------------------------------------------------------------------------------
1213 // Conditional compare (register)
1214 //------------------------------------------------------------------------------
1216 ccmp wsp, w4, #2, ne
1217 ccmp w3, wsp, #0, ge
1218 ccmp w19, w5, #-1, lt
1219 ccmp w20, w7, #16, hs
1220 // CHECK-ERROR: error: invalid operand for instruction
1221 // CHECK-ERROR-NEXT: ccmp wsp, w4, #2, ne
1222 // CHECK-ERROR-NEXT: ^
1223 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1224 // CHECK-ERROR-NEXT: ccmp w3, wsp, #0, ge
1225 // CHECK-ERROR-NEXT: ^
1226 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1227 // CHECK-ERROR-NEXT: ccmp w19, w5, #-1, lt
1228 // CHECK-ERROR-NEXT: ^
1229 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1230 // CHECK-ERROR-NEXT: ccmp w20, w7, #16, hs
1231 // CHECK-ERROR-NEXT: ^
1234 ccmp x25, sp, #15, hs
1235 ccmp x19, x5, #-1, lt
1236 ccmp x20, x7, #16, hs
1237 // CHECK-ERROR: error: invalid operand for instruction
1238 // CHECK-ERROR-NEXT: ccmp sp, x4, #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: ccmp x25, sp, #15, hs
1242 // CHECK-ERROR-NEXT: ^
1243 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1244 // CHECK-ERROR-NEXT: ccmp x19, x5, #-1, lt
1245 // CHECK-ERROR-NEXT: ^
1246 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1247 // CHECK-ERROR-NEXT: ccmp x20, x7, #16, hs
1248 // CHECK-ERROR-NEXT: ^
1250 ccmn wsp, w4, #2, ne
1251 ccmn w25, wsp, #15, hs
1252 ccmn w19, w5, #-1, lt
1253 ccmn w20, w7, #16, hs
1254 // CHECK-ERROR: error: invalid operand for instruction
1255 // CHECK-ERROR-NEXT: ccmn wsp, w4, #2, ne
1256 // CHECK-ERROR-NEXT: ^
1257 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1258 // CHECK-ERROR-NEXT: ccmn w25, wsp, #15, hs
1259 // CHECK-ERROR-NEXT: ^
1260 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1261 // CHECK-ERROR-NEXT: ccmn w19, w5, #-1, lt
1262 // CHECK-ERROR-NEXT: ^
1263 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1264 // CHECK-ERROR-NEXT: ccmn w20, w7, #16, hs
1265 // CHECK-ERROR-NEXT: ^
1268 ccmn x25, sp, #15, hs
1269 ccmn x19, x5, #-1, lt
1270 ccmn x20, x7, #16, hs
1271 // CHECK-ERROR: error: invalid operand for instruction
1272 // CHECK-ERROR-NEXT: ccmn sp, x4, #2, ne
1273 // CHECK-ERROR-NEXT: ^
1274 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1275 // CHECK-ERROR-NEXT: ccmn x25, sp, #15, hs
1276 // CHECK-ERROR-NEXT: ^
1277 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1278 // CHECK-ERROR-NEXT: ccmn x19, x5, #-1, lt
1279 // CHECK-ERROR-NEXT: ^
1280 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1281 // CHECK-ERROR-NEXT: ccmn x20, x7, #16, hs
1282 // CHECK-ERROR-NEXT: ^
1284 //------------------------------------------------------------------------------
1285 // Conditional select
1286 //------------------------------------------------------------------------------
1288 csel w4, wsp, w9, eq
1289 csel wsp, w2, w3, ne
1290 csel w10, w11, wsp, ge
1294 csel x10, x11, sp, ge
1296 // CHECK-ERROR: error: invalid operand for instruction
1297 // CHECK-ERROR-NEXT: csel w4, wsp, w9, eq
1298 // CHECK-ERROR-NEXT: ^
1299 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1300 // CHECK-ERROR-NEXT: csel wsp, w2, w3, ne
1301 // CHECK-ERROR-NEXT: ^
1302 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1303 // CHECK-ERROR-NEXT: csel w10, w11, wsp, ge
1304 // CHECK-ERROR-NEXT: ^
1305 // CHECK-ERROR-NEXT: error: expected AArch64 condition code
1306 // CHECK-ERROR-NEXT: csel w1, w2, w3, #3
1307 // CHECK-ERROR-NEXT: ^
1308 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1309 // CHECK-ERROR-NEXT: csel x4, sp, x9, eq
1310 // CHECK-ERROR-NEXT: ^
1311 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1312 // CHECK-ERROR-NEXT: csel sp, x2, x3, ne
1313 // CHECK-ERROR-NEXT: ^
1314 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1315 // CHECK-ERROR-NEXT: csel x10, x11, sp, ge
1316 // CHECK-ERROR-NEXT: ^
1317 // CHECK-ERROR-NEXT: error: expected AArch64 condition code
1318 // CHECK-ERROR-NEXT: csel x1, x2, x3, #3
1319 // CHECK-ERROR-NEXT: ^
1321 csinc w20, w21, wsp, mi
1322 csinc sp, x30, x29, eq
1323 // CHECK-ERROR: error: invalid operand for instruction
1324 // CHECK-ERROR-NEXT: csinc w20, w21, wsp, mi
1325 // CHECK-ERROR-NEXT: ^
1326 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1327 // CHECK-ERROR-NEXT: csinc sp, x30, x29, eq
1328 // CHECK-ERROR-NEXT: ^
1330 csinv w20, wsp, wsp, mi
1331 csinv sp, x30, x29, le
1332 // CHECK-ERROR: error: invalid operand for instruction
1333 // CHECK-ERROR-NEXT: csinv w20, wsp, wsp, mi
1334 // CHECK-ERROR-NEXT: ^
1335 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1336 // CHECK-ERROR-NEXT: csinv sp, x30, x29, le
1337 // CHECK-ERROR-NEXT: ^
1339 csneg w20, w21, wsp, mi
1340 csneg x0, sp, x29, le
1341 // CHECK-ERROR: error: invalid operand for instruction
1342 // CHECK-ERROR-NEXT: csneg w20, w21, wsp, mi
1343 // CHECK-ERROR-NEXT: ^
1344 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1345 // CHECK-ERROR-NEXT: csneg x0, sp, x29, le
1346 // CHECK-ERROR-NEXT: ^
1350 // CHECK-ERROR: error: invalid operand for instruction
1351 // CHECK-ERROR-NEXT: cset wsp, lt
1352 // CHECK-ERROR-NEXT: ^
1353 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1354 // CHECK-ERROR-NEXT: csetm sp, ge
1355 // CHECK-ERROR-NEXT: ^
1359 // CHECK-ERROR: error: invalid operand for instruction
1360 // CHECK-ERROR-NEXT: cinc w3, wsp, ne
1361 // CHECK-ERROR-NEXT: ^
1362 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1363 // CHECK-ERROR-NEXT: cinc sp, x9, eq
1364 // CHECK-ERROR-NEXT: ^
1368 // CHECK-ERROR: error: invalid operand for instruction
1369 // CHECK-ERROR-NEXT: cinv w3, wsp, ne
1370 // CHECK-ERROR-NEXT: ^
1371 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1372 // CHECK-ERROR-NEXT: cinv sp, x9, eq
1373 // CHECK-ERROR-NEXT: ^
1377 // CHECK-ERROR: error: invalid operand for instruction
1378 // CHECK-ERROR-NEXT: cneg w3, wsp, ne
1379 // CHECK-ERROR-NEXT: ^
1380 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1381 // CHECK-ERROR-NEXT: cneg sp, x9, eq
1382 // CHECK-ERROR-NEXT: ^
1384 //------------------------------------------------------------------------------
1385 // Data Processing (1 source)
1386 //------------------------------------------------------------------------------
1388 //CHECK-ERROR: error: invalid operand for instruction
1389 //CHECK-ERROR-NEXT: rbit x23, w2
1392 //CHECK-ERROR: error: invalid operand for instruction
1393 //CHECK-ERROR-NEXT: cls sp, x2
1396 //CHECK-ERROR: error: invalid operand for instruction
1397 //CHECK-ERROR-NEXT: clz wsp, w3
1399 //------------------------------------------------------------------------------
1400 // Data Processing (2 sources)
1401 //------------------------------------------------------------------------------
1403 //CHECK-ERROR: error: invalid operand for instruction
1404 //CHECK-ERROR-NEXT: udiv x23, w2, x18
1407 //CHECK-ERROR: error: invalid operand for instruction
1408 //CHECK-ERROR-NEXT: lsl sp, x2, x4
1411 //CHECK-ERROR: error: invalid operand for instruction
1412 //CHECK-ERROR-NEXT: asr wsp, w3, w9
1414 //------------------------------------------------------------------------------
1415 // Data Processing (3 sources)
1416 //------------------------------------------------------------------------------
1418 madd sp, x3, x9, x10
1419 //CHECK-ERROR: error: invalid operand for instruction
1420 //CHECK-ERROR-NEXT: madd sp, x3, x9, x10
1422 //------------------------------------------------------------------------------
1423 // Exception generation
1424 //------------------------------------------------------------------------------
1429 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 65535]
1430 // CHECK-ERROR-NEXT: svc #-1
1431 // CHECK-ERROR-NEXT: ^
1432 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 65535]
1433 // CHECK-ERROR-NEXT: hlt #65536
1434 // CHECK-ERROR-NEXT: ^
1435 // CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}
1436 // CHECK-ERROR-NEXT: dcps4 #43
1437 // CHECK-ERROR-NEXT: ^
1438 // CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}
1439 // CHECK-ERROR-NEXT: dcps4
1440 // CHECK-ERROR-NEXT: ^
1442 //------------------------------------------------------------------------------
1443 // Extract (immediate)
1444 //------------------------------------------------------------------------------
1446 extr w2, w20, w30, #-1
1447 extr w9, w19, w20, #32
1448 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1449 // CHECK-ERROR-NEXT: extr w2, w20, w30, #-1
1450 // CHECK-ERROR-NEXT: ^
1451 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1452 // CHECK-ERROR-NEXT: extr w9, w19, w20, #32
1453 // CHECK-ERROR-NEXT: ^
1455 extr x10, x15, x20, #-1
1456 extr x20, x25, x30, #64
1457 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
1458 // CHECK-ERROR-NEXT: extr x10, x15, x20, #-1
1459 // CHECK-ERROR-NEXT: ^
1460 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
1461 // CHECK-ERROR-NEXT: extr x20, x25, x30, #64
1462 // CHECK-ERROR-NEXT: ^
1466 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
1467 // CHECK-ERROR-NEXT: ror w9, w10, #32
1468 // CHECK-ERROR-NEXT: ^
1469 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
1470 // CHECK-ERROR-NEXT: ror x10, x11, #64
1471 // CHECK-ERROR-NEXT: ^
1473 //------------------------------------------------------------------------------
1474 // Floating-point compare
1475 //------------------------------------------------------------------------------
1478 // CHECK-ERROR-AARCH64: error: expected floating-point constant #0.0
1479 // CHECK-ERROR-ARM64: error: invalid operand for instruction
1480 // CHECK-ERROR-NEXT: fcmp s3, d2
1481 // CHECK-ERROR-NEXT: ^
1487 // CHECK-ERROR: error: expected floating-point constant #0.0
1488 // CHECK-ERROR-NEXT: fcmp s9, #-0.0
1489 // CHECK-ERROR-NEXT: ^
1490 // CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
1491 // CHECK-ERROR-NEXT: fcmp d3, #-0.0
1492 // CHECK-ERROR-NEXT: ^
1493 // CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
1494 // CHECK-ERROR-NEXT: fcmp s1, #1.0
1495 // CHECK-ERROR-NEXT: ^
1496 // CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
1497 // CHECK-ERROR-NEXT: fcmpe s30, #-0.0
1498 // CHECK-ERROR-NEXT: ^
1500 //------------------------------------------------------------------------------
1501 // Floating-point conditional compare
1502 //------------------------------------------------------------------------------
1504 fccmp s19, s5, #-1, lt
1505 fccmp s20, s7, #16, hs
1506 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1507 // CHECK-ERROR-NEXT: fccmp s19, s5, #-1, lt
1508 // CHECK-ERROR-NEXT: ^
1509 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1510 // CHECK-ERROR-NEXT: fccmp s20, s7, #16, hs
1511 // CHECK-ERROR-NEXT: ^
1513 fccmp d19, d5, #-1, lt
1514 fccmp d20, d7, #16, hs
1515 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1516 // CHECK-ERROR-NEXT: fccmp d19, d5, #-1, lt
1517 // CHECK-ERROR-NEXT: ^
1518 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1519 // CHECK-ERROR-NEXT: fccmp d20, d7, #16, hs
1520 // CHECK-ERROR-NEXT: ^
1522 fccmpe s19, s5, #-1, lt
1523 fccmpe s20, s7, #16, hs
1524 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1525 // CHECK-ERROR-NEXT: fccmpe s19, s5, #-1, lt
1526 // CHECK-ERROR-NEXT: ^
1527 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1528 // CHECK-ERROR-NEXT: fccmpe s20, s7, #16, hs
1529 // CHECK-ERROR-NEXT: ^
1531 fccmpe d19, d5, #-1, lt
1532 fccmpe d20, d7, #16, hs
1533 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1534 // CHECK-ERROR-NEXT: fccmpe d19, d5, #-1, lt
1535 // CHECK-ERROR-NEXT: ^
1536 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
1537 // CHECK-ERROR-NEXT: fccmpe d20, d7, #16, hs
1538 // CHECK-ERROR-NEXT: ^
1540 //------------------------------------------------------------------------------
1541 // Floating-point conditional compare
1542 //------------------------------------------------------------------------------
1544 fcsel q3, q20, q9, pl
1545 fcsel h9, h10, h11, mi
1546 fcsel b9, b10, b11, mi
1547 // CHECK-ERROR: error: invalid operand for instruction
1548 // CHECK-ERROR-NEXT: fcsel q3, q20, q9, pl
1549 // CHECK-ERROR-NEXT: ^
1550 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1551 // CHECK-ERROR-NEXT: fcsel h9, h10, h11, mi
1552 // CHECK-ERROR-NEXT: ^
1553 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1554 // CHECK-ERROR-NEXT: fcsel b9, b10, b11, mi
1555 // CHECK-ERROR-NEXT: ^
1557 //------------------------------------------------------------------------------
1558 // Floating-point data-processing (1 source)
1559 //------------------------------------------------------------------------------
1563 // CHECK-ERROR: error: expected compatible register or floating-point constant
1564 // CHECK-ERROR-NEXT: fmov d0, s3
1565 // CHECK-ERROR-NEXT: ^
1566 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1567 // CHECK-ERROR-NEXT: fcvt d0, d1
1568 // CHECK-ERROR-NEXT: ^
1571 //------------------------------------------------------------------------------
1572 // Floating-point data-processing (2 sources)
1573 //------------------------------------------------------------------------------
1578 // CHECK-ERROR: error: invalid operand for instruction
1579 // CHECK-ERROR-NEXT: fadd s0, d3, d7
1580 // CHECK-ERROR-NEXT: ^
1581 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1582 // CHECK-ERROR-NEXT: fmaxnm d3, s19, d12
1583 // CHECK-ERROR-NEXT: ^
1584 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1585 // CHECK-ERROR-NEXT: fnmul d1, d9, s18
1586 // CHECK-ERROR-NEXT: ^
1588 //------------------------------------------------------------------------------
1589 // Floating-point data-processing (3 sources)
1590 //------------------------------------------------------------------------------
1592 fmadd b3, b4, b5, b6
1593 fmsub h1, h2, h3, h4
1594 fnmadd q3, q5, q6, q7
1595 fnmsub s2, s4, d5, h9
1596 // CHECK-ERROR: error: invalid operand for instruction
1597 // CHECK-ERROR-NEXT: fmadd b3, b4, b5, b6
1598 // CHECK-ERROR-NEXT: ^
1599 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1600 // CHECK-ERROR-NEXT: fmsub h1, h2, h3, h4
1601 // CHECK-ERROR-NEXT: ^
1602 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1603 // CHECK-ERROR-NEXT: fnmadd q3, q5, q6, q7
1604 // CHECK-ERROR-NEXT: ^
1605 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1606 // CHECK-ERROR-NEXT: fnmsub s2, s4, d5, h9
1607 // CHECK-ERROR-NEXT: ^
1609 //------------------------------------------------------------------------------
1610 // Floating-point conditional compare
1611 //------------------------------------------------------------------------------
1614 fcvtzs w19, s20, #33
1615 fcvtzs wsp, s19, #14
1616 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1617 // CHECK-ERROR-NEXT: fcvtzs w13, s31, #0
1618 // CHECK-ERROR-NEXT: ^
1619 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1620 // CHECK-ERROR-NEXT: fcvtzs w19, s20, #33
1621 // CHECK-ERROR-NEXT: ^
1622 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1623 // CHECK-ERROR-NEXT: fcvtzs wsp, s19, #14
1624 // CHECK-ERROR-NEXT: ^
1627 fcvtzs x19, s20, #65
1629 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1630 // CHECK-ERROR-NEXT: fcvtzs x13, s31, #0
1631 // CHECK-ERROR-NEXT: ^
1632 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1633 // CHECK-ERROR-NEXT: fcvtzs x19, s20, #65
1634 // CHECK-ERROR-NEXT: ^
1635 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1636 // CHECK-ERROR-NEXT: fcvtzs sp, s19, #14
1637 // CHECK-ERROR-NEXT: ^
1640 fcvtzu w19, s20, #33
1641 fcvtzu wsp, s19, #14
1642 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1643 // CHECK-ERROR-NEXT: fcvtzu w13, s31, #0
1644 // CHECK-ERROR-NEXT: ^
1645 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
1646 // CHECK-ERROR-NEXT: fcvtzu w19, s20, #33
1647 // CHECK-ERROR-NEXT: ^
1648 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1649 // CHECK-ERROR-NEXT: fcvtzu wsp, s19, #14
1650 // CHECK-ERROR-NEXT: ^
1653 fcvtzu x19, s20, #65
1655 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1656 // CHECK-ERROR-NEXT: fcvtzu x13, s31, #0
1657 // CHECK-ERROR-NEXT: ^
1658 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
1659 // CHECK-ERROR-NEXT: fcvtzu x19, s20, #65
1660 // CHECK-ERROR-NEXT: ^
1661 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1662 // CHECK-ERROR-NEXT: fcvtzu sp, s19, #14
1663 // CHECK-ERROR-NEXT: ^
1668 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1669 // CHECK-ERROR-NEXT: scvtf w13, s31, #0
1670 // CHECK-ERROR-NEXT: ^
1671 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1672 // CHECK-ERROR-NEXT: scvtf w19, s20, #33
1673 // CHECK-ERROR-NEXT: ^
1674 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1675 // CHECK-ERROR-NEXT: scvtf wsp, s19, #14
1676 // CHECK-ERROR-NEXT: ^
1681 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1682 // CHECK-ERROR-NEXT: scvtf x13, s31, #0
1683 // CHECK-ERROR-NEXT: ^
1684 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1685 // CHECK-ERROR-NEXT: scvtf x19, s20, #65
1686 // CHECK-ERROR-NEXT: ^
1687 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1688 // CHECK-ERROR-NEXT: scvtf sp, s19, #14
1689 // CHECK-ERROR-NEXT: ^
1694 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1695 // CHECK-ERROR-NEXT: ucvtf w13, s31, #0
1696 // CHECK-ERROR-NEXT: ^
1697 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1698 // CHECK-ERROR-NEXT: ucvtf w19, s20, #33
1699 // CHECK-ERROR-NEXT: ^
1700 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1701 // CHECK-ERROR-NEXT: ucvtf wsp, s19, #14
1702 // CHECK-ERROR-NEXT: ^
1707 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1708 // CHECK-ERROR-NEXT: ucvtf x13, s31, #0
1709 // CHECK-ERROR-NEXT: ^
1710 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1711 // CHECK-ERROR-NEXT: ucvtf x19, s20, #65
1712 // CHECK-ERROR-NEXT: ^
1713 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1714 // CHECK-ERROR-NEXT: ucvtf sp, s19, #14
1715 // CHECK-ERROR-NEXT: ^
1717 //------------------------------------------------------------------------------
1718 // Floating-point immediate
1719 //------------------------------------------------------------------------------
1720 ;; Exponent too large
1723 // CHECK-ERROR: error: expected compatible register or floating-point constant
1724 // CHECK-ERROR-NEXT: fmov d3, #0.0625
1725 // CHECK-ERROR-NEXT: ^
1726 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1727 // CHECK-ERROR-NEXT: fmov s2, #32.0
1728 // CHECK-ERROR-NEXT: ^
1730 ;; Fraction too precise
1733 // CHECK-ERROR: error: expected compatible register or floating-point constant
1734 // CHECK-ERROR-NEXT: fmov s9, #1.03125
1735 // CHECK-ERROR-NEXT: ^
1736 // CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
1737 // CHECK-ERROR-NEXT: fmov s28, #1.96875
1738 // CHECK-ERROR-NEXT: ^
1740 ;; No particular reason, but a striking omission
1742 // CHECK-ERROR-AARCH64: error: expected compatible register or floating-point constant
1743 // CHECK-ERROR-AARCH64-NEXT: fmov d0, #0.0
1744 // CHECK-ERROR-AARCH64-NEXT: ^
1746 //------------------------------------------------------------------------------
1747 // Floating-point <-> integer conversion
1748 //------------------------------------------------------------------------------
1755 // CHECK-ERROR: error: expected lane specifier '[1]'
1756 // CHECK-ERROR-NEXT: fmov x3, v0.d[0]
1757 // CHECK-ERROR-NEXT: ^
1758 // CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout
1759 // CHECK-ERROR-ARM64-NEXT: error: invalid operand for instruction
1760 // CHECK-ERROR-NEXT: fmov v29.1d[1], x2
1761 // CHECK-ERROR-NEXT: ^
1762 // CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout
1763 // CHECK-ERROR-ARM64-NEXT: error: expected lane specifier '[1]'
1764 // CHECK-ERROR-NEXT: fmov x7, v0.d[2]
1765 // CHECK-ERROR-NEXT: ^
1766 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1767 // CHECK-ERROR-NEXT: fcvtns sp, s5
1768 // CHECK-ERROR-NEXT: ^
1769 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1770 // CHECK-ERROR-NEXT: scvtf s6, wsp
1771 // CHECK-ERROR-NEXT: ^
1773 //------------------------------------------------------------------------------
1774 // Load-register (literal)
1775 //------------------------------------------------------------------------------
1779 // CHECK-ERROR: error: invalid operand for instruction
1780 // CHECK-ERROR-NEXT: ldr sp, some_label
1781 // CHECK-ERROR-NEXT: ^
1782 // CHECK-ERROR-NEXT: error: invalid operand for instruction
1783 // CHECK-ERROR-NEXT: ldrsw w3, somewhere
1784 // CHECK-ERROR-NEXT: ^
1789 // CHECK-ERROR: error: expected label or encodable integer pc offset
1790 // CHECK-ERROR-NEXT: ldrsw x2, #1048576
1791 // CHECK-ERROR-NEXT: ^
1792 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1793 // CHECK-ERROR-NEXT: ldr q0, #-1048580
1794 // CHECK-ERROR-NEXT: ^
1795 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
1796 // CHECK-ERROR-NEXT: ldr x0, #2
1797 // CHECK-ERROR-NEXT: ^
1799 //------------------------------------------------------------------------------
1800 // Load/store exclusive
1801 //------------------------------------------------------------------------------
1803 stxrb w2, w3, [x4, #20]
1804 stlxrh w10, w11, [w2]
1805 // CHECK-ERROR-AARCH64: error: expected '#0'
1806 // CHECK-ERROR-ARM64: error: invalid operand for instruction
1807 // CHECK-ERROR-NEXT: stxrb w2, w3, [x4, #20]
1808 // CHECK-ERROR-NEXT: ^
1809 // CHECK-ERROR: error: invalid operand for instruction
1810 // CHECK-ERROR-NEXT: stlxrh w10, w11, [w2]
1811 // CHECK-ERROR-NEXT: ^
1813 stlxr x20, w21, [sp]
1814 // CHECK-ERROR: error: invalid operand for instruction
1815 // CHECK-ERROR-NEXT: stlxr x20, w21, [sp]
1816 // CHECK-ERROR-NEXT: ^
1819 // CHECK-ERROR: error: invalid operand for instruction
1820 // CHECK-ERROR-NEXT: ldxr sp, [sp]
1821 // CHECK-ERROR-NEXT: ^
1823 stxp x1, x2, x3, [x4]
1824 // CHECK-ERROR: error: invalid operand for instruction
1825 // CHECK-ERROR-NEXT: stxp x1, x2, x3, [x4]
1826 // CHECK-ERROR-NEXT: ^
1828 stlxp w5, x1, w4, [x5]
1829 // CHECK-ERROR: error: invalid operand for instruction
1830 // CHECK-ERROR-NEXT: stlxp w5, x1, w4, [x5]
1831 // CHECK-ERROR-NEXT: ^
1833 stlxp w17, w6, x7, [x22]
1834 // CHECK-ERROR: error: invalid operand for instruction
1835 // CHECK-ERROR-NEXT: stlxp w17, w6, x7, [x22]
1836 // CHECK-ERROR-NEXT: ^
1838 //------------------------------------------------------------------------------
1839 // Load/store (unscaled immediate)
1840 //------------------------------------------------------------------------------
1842 ldurb w2, [sp, #256]
1843 sturh w17, [x1, #256]
1844 ldursw x20, [x1, #256]
1845 ldur x12, [sp, #256]
1846 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
1847 // CHECK-ERROR-NEXT: ldurb w2, [sp, #256]
1848 // CHECK-ERROR-NEXT: ^
1849 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1850 // CHECK-ERROR-NEXT: sturh w17, [x1, #256]
1851 // CHECK-ERROR-NEXT: ^
1852 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1853 // CHECK-ERROR-NEXT: ldursw x20, [x1, #256]
1854 // CHECK-ERROR-NEXT: ^
1855 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1856 // CHECK-ERROR-NEXT: ldur x12, [sp, #256]
1857 // CHECK-ERROR-NEXT: ^
1859 stur h2, [x2, #-257]
1860 stur b2, [x2, #-257]
1861 ldursb x9, [sp, #-257]
1862 ldur w2, [x30, #-257]
1863 stur q9, [x20, #-257]
1864 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
1865 // CHECK-ERROR-NEXT: stur h2, [x2, #-257]
1866 // CHECK-ERROR-NEXT: ^
1867 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1868 // CHECK-ERROR-NEXT: stur b2, [x2, #-257]
1869 // CHECK-ERROR-NEXT: ^
1870 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1871 // CHECK-ERROR-NEXT: ldursb x9, [sp, #-257]
1872 // CHECK-ERROR-NEXT: ^
1873 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1874 // CHECK-ERROR-NEXT: ldur w2, [x30, #-257]
1875 // CHECK-ERROR-NEXT: ^
1876 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1877 // CHECK-ERROR-NEXT: stur q9, [x20, #-257]
1878 // CHECK-ERROR-NEXT: ^
1880 prfum pstl3strm, [xzr]
1881 // CHECK-ERROR: error: invalid operand for instruction
1882 // CHECK-ERROR-NEXT: prfum pstl3strm, [xzr]
1883 // CHECK-ERROR-NEXT: ^
1885 //------------------------------------------------------------------------------
1886 // Load-store register (immediate post-indexed)
1887 //------------------------------------------------------------------------------
1888 ldr x3, [x4, #25], #0
1889 ldr x4, [x9, #0], #4
1890 // CHECK-ERROR: error: {{expected symbolic reference or integer|index must be a multiple of 8}} in range [0, 32760]
1891 // CHECK-ERROR-NEXT: ldr x3, [x4, #25], #0
1892 // CHECK-ERROR-NEXT: ^
1893 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
1894 // CHECK-ERROR-AARCH64-NEXT: ldr x4, [x9, #0], #4
1895 // CHECK-ERROR-AARCH64-NEXT: ^
1897 strb w1, [x19], #256
1898 strb w9, [sp], #-257
1899 strh w1, [x19], #256
1900 strh w9, [sp], #-257
1903 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
1904 // CHECK-ERROR-NEXT: strb w1, [x19], #256
1905 // CHECK-ERROR-NEXT: ^
1906 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1907 // CHECK-ERROR-NEXT: strb w9, [sp], #-257
1908 // CHECK-ERROR-NEXT: ^
1909 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1910 // CHECK-ERROR-NEXT: strh w1, [x19], #256
1911 // CHECK-ERROR-NEXT: ^
1912 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1913 // CHECK-ERROR-NEXT: strh w9, [sp], #-257
1914 // CHECK-ERROR-NEXT: ^
1915 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1916 // CHECK-ERROR-NEXT: str w1, [x19], #256
1917 // CHECK-ERROR-NEXT: ^
1918 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1919 // CHECK-ERROR-NEXT: str w9, [sp], #-257
1920 // CHECK-ERROR-NEXT: ^
1922 ldrb w1, [x19], #256
1923 ldrb w9, [sp], #-257
1924 ldrh w1, [x19], #256
1925 ldrh w9, [sp], #-257
1928 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
1929 // CHECK-ERROR-NEXT: ldrb w1, [x19], #256
1930 // CHECK-ERROR-NEXT: ^
1931 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1932 // CHECK-ERROR-NEXT: ldrb w9, [sp], #-257
1933 // CHECK-ERROR-NEXT: ^
1934 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1935 // CHECK-ERROR-NEXT: ldrh w1, [x19], #256
1936 // CHECK-ERROR-NEXT: ^
1937 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1938 // CHECK-ERROR-NEXT: ldrh w9, [sp], #-257
1939 // CHECK-ERROR-NEXT: ^
1940 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1941 // CHECK-ERROR-NEXT: ldr w1, [x19], #256
1942 // CHECK-ERROR-NEXT: ^
1943 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1944 // CHECK-ERROR-NEXT: ldr w9, [sp], #-257
1945 // CHECK-ERROR-NEXT: ^
1947 ldrsb x2, [x3], #256
1948 ldrsb x22, [x13], #-257
1949 ldrsh x2, [x3], #256
1950 ldrsh x22, [x13], #-257
1951 ldrsw x2, [x3], #256
1952 ldrsw x22, [x13], #-257
1953 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
1954 // CHECK-ERROR-NEXT: ldrsb x2, [x3], #256
1955 // CHECK-ERROR-NEXT: ^
1956 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1957 // CHECK-ERROR-NEXT: ldrsb x22, [x13], #-257
1958 // CHECK-ERROR-NEXT: ^
1959 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1960 // CHECK-ERROR-NEXT: ldrsh x2, [x3], #256
1961 // CHECK-ERROR-NEXT: ^
1962 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1963 // CHECK-ERROR-NEXT: ldrsh x22, [x13], #-257
1964 // CHECK-ERROR-NEXT: ^
1965 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1966 // CHECK-ERROR-NEXT: ldrsw x2, [x3], #256
1967 // CHECK-ERROR-NEXT: ^
1968 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1969 // CHECK-ERROR-NEXT: ldrsw x22, [x13], #-257
1970 // CHECK-ERROR-NEXT: ^
1972 ldrsb w2, [x3], #256
1973 ldrsb w22, [x13], #-257
1974 ldrsh w2, [x3], #256
1975 ldrsh w22, [x13], #-257
1976 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
1977 // CHECK-ERROR-NEXT: ldrsb w2, [x3], #256
1978 // CHECK-ERROR-NEXT: ^
1979 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1980 // CHECK-ERROR-NEXT: ldrsb w22, [x13], #-257
1981 // CHECK-ERROR-NEXT: ^
1982 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1983 // CHECK-ERROR-NEXT: ldrsh w2, [x3], #256
1984 // CHECK-ERROR-NEXT: ^
1985 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
1986 // CHECK-ERROR-NEXT: ldrsh w22, [x13], #-257
1987 // CHECK-ERROR-NEXT: ^
1990 str b3, [x13], #-257
1992 str h3, [x13], #-257
1994 str s3, [x13], #-257
1996 str d3, [x13], #-257
1998 str q3, [x13], #-257
1999 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
2000 // CHECK-ERROR-NEXT: str b3, [x3], #256
2001 // CHECK-ERROR-NEXT: ^
2002 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2003 // CHECK-ERROR-NEXT: str b3, [x13], #-257
2004 // CHECK-ERROR-NEXT: ^
2005 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2006 // CHECK-ERROR-NEXT: str h3, [x3], #256
2007 // CHECK-ERROR-NEXT: ^
2008 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2009 // CHECK-ERROR-NEXT: str h3, [x13], #-257
2010 // CHECK-ERROR-NEXT: ^
2011 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2012 // CHECK-ERROR-NEXT: str s3, [x3], #256
2013 // CHECK-ERROR-NEXT: ^
2014 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2015 // CHECK-ERROR-NEXT: str s3, [x13], #-257
2016 // CHECK-ERROR-NEXT: ^
2017 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2018 // CHECK-ERROR-NEXT: str d3, [x3], #256
2019 // CHECK-ERROR-NEXT: ^
2020 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2021 // CHECK-ERROR-NEXT: str d3, [x13], #-257
2022 // CHECK-ERROR-NEXT: ^
2023 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2024 // CHECK-ERROR-NEXT: str q3, [x3], #256
2025 // CHECK-ERROR-NEXT: ^
2026 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2027 // CHECK-ERROR-NEXT: str q3, [x13], #-257
2028 // CHECK-ERROR-NEXT: ^
2031 ldr b3, [x13], #-257
2033 ldr h3, [x13], #-257
2035 ldr s3, [x13], #-257
2037 ldr d3, [x13], #-257
2039 ldr q3, [x13], #-257
2040 // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
2041 // CHECK-ERROR-NEXT: ldr b3, [x3], #256
2042 // CHECK-ERROR-NEXT: ^
2043 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2044 // CHECK-ERROR-NEXT: ldr b3, [x13], #-257
2045 // CHECK-ERROR-NEXT: ^
2046 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2047 // CHECK-ERROR-NEXT: ldr h3, [x3], #256
2048 // CHECK-ERROR-NEXT: ^
2049 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2050 // CHECK-ERROR-NEXT: ldr h3, [x13], #-257
2051 // CHECK-ERROR-NEXT: ^
2052 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2053 // CHECK-ERROR-NEXT: ldr s3, [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: ldr s3, [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: ldr d3, [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: ldr d3, [x13], #-257
2063 // CHECK-ERROR-NEXT: ^
2064 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2065 // CHECK-ERROR-NEXT: ldr q3, [x3], #256
2066 // CHECK-ERROR-NEXT: ^
2067 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2068 // CHECK-ERROR-NEXT: ldr q3, [x13], #-257
2069 // CHECK-ERROR-NEXT: ^
2071 //------------------------------------------------------------------------------
2072 // Load-store register (immediate pre-indexed)
2073 //------------------------------------------------------------------------------
2076 // CHECK-ERROR: error:
2077 // CHECK-ERROR-NEXT: ldr x3, [x4]!
2078 // CHECK-ERROR-NEXT: ^
2080 strb w1, [x19, #256]!
2081 strb w9, [sp, #-257]!
2082 strh w1, [x19, #256]!
2083 strh w9, [sp, #-257]!
2084 str w1, [x19, #256]!
2085 str w9, [sp, #-257]!
2086 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
2087 // CHECK-ERROR-ARM64: error: invalid offset in memory address
2088 // CHECK-ERROR-NEXT: strb w1, [x19, #256]!
2089 // CHECK-ERROR-NEXT: ^
2090 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2091 // CHECK-ERROR-NEXT: strb w9, [sp, #-257]!
2092 // CHECK-ERROR-NEXT: ^
2093 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2094 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2095 // CHECK-ERROR-NEXT: strh w1, [x19, #256]!
2096 // CHECK-ERROR-NEXT: ^
2097 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2098 // CHECK-ERROR-NEXT: strh w9, [sp, #-257]!
2099 // CHECK-ERROR-NEXT: ^
2100 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2101 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2102 // CHECK-ERROR-NEXT: str w1, [x19, #256]!
2103 // CHECK-ERROR-NEXT: ^
2104 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2105 // CHECK-ERROR-NEXT: str w9, [sp, #-257]!
2106 // CHECK-ERROR-NEXT: ^
2108 ldrb w1, [x19, #256]!
2109 ldrb w9, [sp, #-257]!
2110 ldrh w1, [x19, #256]!
2111 ldrh w9, [sp, #-257]!
2112 ldr w1, [x19, #256]!
2113 ldr w9, [sp, #-257]!
2114 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
2115 // CHECK-ERROR-ARM64: error: invalid offset in memory address
2116 // CHECK-ERROR-NEXT: ldrb w1, [x19, #256]!
2117 // CHECK-ERROR-NEXT: ^
2118 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2119 // CHECK-ERROR-NEXT: ldrb w9, [sp, #-257]!
2120 // CHECK-ERROR-NEXT: ^
2121 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2122 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2123 // CHECK-ERROR-NEXT: ldrh w1, [x19, #256]!
2124 // CHECK-ERROR-NEXT: ^
2125 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2126 // CHECK-ERROR-NEXT: ldrh w9, [sp, #-257]!
2127 // CHECK-ERROR-NEXT: ^
2128 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2129 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2130 // CHECK-ERROR-NEXT: ldr w1, [x19, #256]!
2131 // CHECK-ERROR-NEXT: ^
2132 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2133 // CHECK-ERROR-NEXT: ldr w9, [sp, #-257]!
2134 // CHECK-ERROR-NEXT: ^
2136 ldrsb x2, [x3, #256]!
2137 ldrsb x22, [x13, #-257]!
2138 ldrsh x2, [x3, #256]!
2139 ldrsh x22, [x13, #-257]!
2140 ldrsw x2, [x3, #256]!
2141 ldrsw x22, [x13, #-257]!
2142 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
2143 // CHECK-ERROR-ARM64: error: invalid offset in memory address
2144 // CHECK-ERROR-NEXT: ldrsb x2, [x3, #256]!
2145 // CHECK-ERROR-NEXT: ^
2146 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2147 // CHECK-ERROR-NEXT: ldrsb x22, [x13, #-257]!
2148 // CHECK-ERROR-NEXT: ^
2149 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2150 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2151 // CHECK-ERROR-NEXT: ldrsh x2, [x3, #256]!
2152 // CHECK-ERROR-NEXT: ^
2153 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2154 // CHECK-ERROR-NEXT: ldrsh x22, [x13, #-257]!
2155 // CHECK-ERROR-NEXT: ^
2156 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2157 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2158 // CHECK-ERROR-NEXT: ldrsw x2, [x3, #256]!
2159 // CHECK-ERROR-NEXT: ^
2160 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2161 // CHECK-ERROR-NEXT: ldrsw x22, [x13, #-257]!
2162 // CHECK-ERROR-NEXT: ^
2164 ldrsb w2, [x3, #256]!
2165 ldrsb w22, [x13, #-257]!
2166 ldrsh w2, [x3, #256]!
2167 ldrsh w22, [x13, #-257]!
2168 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
2169 // CHECK-ERROR-ARM64: error: invalid offset in memory address
2170 // CHECK-ERROR-NEXT: ldrsb w2, [x3, #256]!
2171 // CHECK-ERROR-NEXT: ^
2172 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2173 // CHECK-ERROR-NEXT: ldrsb w22, [x13, #-257]!
2174 // CHECK-ERROR-NEXT: ^
2175 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2176 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2177 // CHECK-ERROR-NEXT: ldrsh w2, [x3, #256]!
2178 // CHECK-ERROR-NEXT: ^
2179 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2180 // CHECK-ERROR-NEXT: ldrsh w22, [x13, #-257]!
2181 // CHECK-ERROR-NEXT: ^
2184 str b3, [x13, #-257]!
2186 str h3, [x13, #-257]!
2188 str s3, [x13, #-257]!
2190 str d3, [x13, #-257]!
2191 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
2192 // CHECK-ERROR-ARM64: error: invalid offset in memory address
2193 // CHECK-ERROR-NEXT: str b3, [x3, #256]!
2194 // CHECK-ERROR-NEXT: ^
2195 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2196 // CHECK-ERROR-NEXT: str b3, [x13, #-257]!
2197 // CHECK-ERROR-NEXT: ^
2198 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2199 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2200 // CHECK-ERROR-NEXT: str h3, [x3, #256]!
2201 // CHECK-ERROR-NEXT: ^
2202 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2203 // CHECK-ERROR-NEXT: str h3, [x13, #-257]!
2204 // CHECK-ERROR-NEXT: ^
2205 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2206 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2207 // CHECK-ERROR-NEXT: str s3, [x3, #256]!
2208 // CHECK-ERROR-NEXT: ^
2209 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2210 // CHECK-ERROR-NEXT: str s3, [x13, #-257]!
2211 // CHECK-ERROR-NEXT: ^
2212 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2213 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2214 // CHECK-ERROR-NEXT: str d3, [x3, #256]!
2215 // CHECK-ERROR-NEXT: ^
2216 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2217 // CHECK-ERROR-NEXT: str d3, [x13, #-257]!
2218 // CHECK-ERROR-NEXT: ^
2221 ldr b3, [x13, #-257]!
2223 ldr h3, [x13, #-257]!
2225 ldr s3, [x13, #-257]!
2227 ldr d3, [x13, #-257]!
2228 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
2229 // CHECK-ERROR-ARM64: error: invalid offset in memory address
2230 // CHECK-ERROR-NEXT: ldr b3, [x3, #256]!
2231 // CHECK-ERROR-NEXT: ^
2232 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2233 // CHECK-ERROR-NEXT: ldr b3, [x13, #-257]!
2234 // CHECK-ERROR-NEXT: ^
2235 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2236 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2237 // CHECK-ERROR-NEXT: ldr h3, [x3, #256]!
2238 // CHECK-ERROR-NEXT: ^
2239 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2240 // CHECK-ERROR-NEXT: ldr h3, [x13, #-257]!
2241 // CHECK-ERROR-NEXT: ^
2242 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2243 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2244 // CHECK-ERROR-NEXT: ldr s3, [x3, #256]!
2245 // CHECK-ERROR-NEXT: ^
2246 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2247 // CHECK-ERROR-NEXT: ldr s3, [x13, #-257]!
2248 // CHECK-ERROR-NEXT: ^
2249 // CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
2250 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2251 // CHECK-ERROR-NEXT: ldr d3, [x3, #256]!
2252 // CHECK-ERROR-NEXT: ^
2253 // CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2254 // CHECK-ERROR-NEXT: ldr d3, [x13, #-257]!
2255 // CHECK-ERROR-NEXT: ^
2257 //------------------------------------------------------------------------------
2258 // Load/store (unprivileged)
2259 //------------------------------------------------------------------------------
2261 ldtrb w2, [sp, #256]
2262 sttrh w17, [x1, #256]
2263 ldtrsw x20, [x1, #256]
2264 ldtr x12, [sp, #256]
2265 // CHECK-ERROR-AARCH64: error: expected integer in range [-256, 255]
2266 // CHECK-ERROR-ARM64: error: invalid offset in memory address
2267 // CHECK-ERROR-NEXT: ldtrb w2, [sp, #256]
2268 // CHECK-ERROR-NEXT: ^
2269 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2270 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2271 // CHECK-ERROR-NEXT: sttrh w17, [x1, #256]
2272 // CHECK-ERROR-NEXT: ^
2273 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2274 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2275 // CHECK-ERROR-NEXT: ldtrsw x20, [x1, #256]
2276 // CHECK-ERROR-NEXT: ^
2277 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2278 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2279 // CHECK-ERROR-NEXT: ldtr x12, [sp, #256]
2280 // CHECK-ERROR-NEXT: ^
2282 sttr h2, [x2, #-257]
2283 sttr b2, [x2, #-257]
2284 ldtrsb x9, [sp, #-257]
2285 ldtr w2, [x30, #-257]
2286 sttr q9, [x20, #-257]
2287 // CHECK-ERROR: error: invalid operand for instruction
2288 // CHECK-ERROR-NEXT: sttr h2, [x2, #-257]
2289 // CHECK-ERROR-NEXT: ^
2290 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2291 // CHECK-ERROR-NEXT: sttr b2, [x2, #-257]
2292 // CHECK-ERROR-NEXT: ^
2293 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2294 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2295 // CHECK-ERROR-NEXT: ldtrsb x9, [sp, #-257]
2296 // CHECK-ERROR-NEXT: ^
2297 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2298 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2299 // CHECK-ERROR-NEXT: ldtr w2, [x30, #-257]
2300 // CHECK-ERROR-NEXT: ^
2301 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2302 // CHECK-ERROR-NEXT: sttr q9, [x20, #-257]
2303 // CHECK-ERROR-NEXT: ^
2306 //------------------------------------------------------------------------------
2307 // Load/store (unsigned immediate)
2308 //------------------------------------------------------------------------------
2310 //// Out of range immediates
2311 ldr q0, [x11, #65536]
2312 ldr x0, [sp, #32768]
2313 ldr w0, [x4, #16384]
2314 ldrh w2, [x21, #8192]
2315 ldrb w3, [x12, #4096]
2316 // CHECK-ERROR-AARCH64: error: {{expected|index must be an}} integer in range [-256, 255]
2317 // CHECK-ERROR-ARM64: error: invalid offset in memory address
2318 // CHECK-ERROR-NEXT: ldr q0, [x11, #65536]
2319 // CHECK-ERROR-NEXT: ^
2320 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2321 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2322 // CHECK-ERROR-NEXT: ldr x0, [sp, #32768]
2323 // CHECK-ERROR-NEXT: ^
2324 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2325 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2326 // CHECK-ERROR-NEXT: ldr w0, [x4, #16384]
2327 // CHECK-ERROR-NEXT: ^
2328 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2329 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2330 // CHECK-ERROR-NEXT: ldrh w2, [x21, #8192]
2331 // CHECK-ERROR-NEXT: ^
2332 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2333 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2334 // CHECK-ERROR-NEXT: ldrb w3, [x12, #4096]
2335 // CHECK-ERROR-NEXT: ^
2337 //// Misaligned addresses
2339 ldrsh w2, [x0, #123]
2341 // CHECK-ERROR-AARCH64: error: too few operands for instruction
2342 // CHECK-ERROR-AARCH64-NEXT: ldr w0, [x0, #2]
2343 // CHECK-ERROR-AARCH64-NEXT: ^
2344 // CHECK-ERROR-AARCH64-NEXT: error: too few operands for instruction
2345 // CHECK-ERROR-AARCH64-NEXT: ldrsh w2, [x0, #123]
2346 // CHECK-ERROR-AARCH64-NEXT: ^
2347 // CHECK-ERROR-AARCH64-NEXT: error: too few operands for instruction
2348 // CHECK-ERROR-AARCH64-NEXT: str q0, [x0, #8]
2349 // CHECK-ERROR-AARCH64-NEXT: ^
2351 //// 32-bit addresses
2354 // CHECK-ERROR: error: invalid operand for instruction
2355 // CHECK-ERROR-NEXT: ldr w0, [w20]
2356 // CHECK-ERROR-NEXT: ^
2357 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2358 // CHECK-ERROR-NEXT: ldrsh x3, [wsp]
2359 // CHECK-ERROR-NEXT: ^
2365 str w7, [x12, #16384]
2366 // CHECK-ERROR: error: invalid operand for instruction
2367 // CHECK-ERROR-NEXT: strb w0, [wsp]
2368 // CHECK-ERROR-NEXT: ^
2369 // CHECK-ERROR-AARCH64: error: invalid operand for instruction
2370 // CHECK-ERROR-AARCH64-NEXT: strh w31, [x23, #1]
2371 // CHECK-ERROR-AARCH64-NEXT: ^
2372 // CHECK-ERROR-AARCH64-NEXT: error: too few operands for instruction
2373 // CHECK-ERROR-AARCH64-NEXT: str x5, [x22, #12]
2374 // CHECK-ERROR-AARCH64-NEXT: ^
2375 // CHECK-ERROR-AARCH64-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
2376 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2377 // CHECK-ERROR-NEXT: str w7, [x12, #16384]
2378 // CHECK-ERROR-NEXT: ^
2383 prfm pldl1strm, [w3, #8]
2385 // CHECK-ERROR-AARCH64: error: Invalid immediate for instruction
2386 // CHECK-ERROR-ARM64: error: prefetch operand out of range, [0,31] expected
2387 // CHECK-ERROR-NEXT: prfm #-1, [sp]
2388 // CHECK-ERROR-NEXT: ^
2389 // CHECK-ERROR-AARCH64-NEXT: error: Invalid immediate for instruction
2390 // CHECK-ERROR-ARM64-NEXT: error: prefetch operand out of range, [0,31] expected
2391 // CHECK-ERROR-NEXT: prfm #32, [sp, #8]
2392 // CHECK-ERROR-NEXT: ^
2393 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2394 // CHECK-ERROR-NEXT: prfm pldl1strm, [w3, #8]
2395 // CHECK-ERROR-NEXT: ^
2396 // CHECK-ERROR-AARCH64-NEXT: error: operand specifier not recognised
2397 // CHECK-ERROR-ARM64-NEXT: error: pre-fetch hint expected
2398 // CHECK-ERROR-NEXT: prfm wibble, [sp]
2399 // CHECK-ERROR-NEXT: ^
2401 //------------------------------------------------------------------------------
2402 // Load/store register (register offset)
2403 //------------------------------------------------------------------------------
2406 ldr w4, [x0, x4, lsl]
2407 ldr w9, [x5, x5, uxtw]
2408 ldr w10, [x6, x9, sxtw #2]
2409 ldr w11, [x7, w2, lsl #2]
2410 ldr w12, [x8, w1, sxtx]
2411 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2412 // CHECK-ERROR-NEXT: ldr w3, [xzr, x3]
2413 // CHECK-ERROR-NEXT: ^
2414 // CHECK-ERROR-AARCH64-NEXT: error: expected #imm after shift specifier
2415 // CHECK-ERROR-ARM64-NEXT: error: LSL extend requires immediate operand
2416 // CHECK-ERROR-NEXT: ldr w4, [x0, x4, lsl]
2417 // CHECK-ERROR-NEXT: ^
2418 // CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #2
2419 // CHECK-ERROR-AARCH64-NEXT: ldr w9, [x5, x5, uxtw]
2420 // CHECK-ERROR-AARCH64-NEXT: ^
2421 // CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #2
2422 // CHECK-ERROR-AARCH64-NEXT: ldr w10, [x6, x9, sxtw #2]
2423 // CHECK-ERROR-AARCH64-NEXT: ^
2424 // CHECK-ERROR-AARCH64-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #2
2425 // CHECK-ERROR-ARM64-NEXT: error: 32-bit general purpose offset register requires sxtw or uxtw extend
2426 // CHECK-ERROR-NEXT: ldr w11, [x7, w2, lsl #2]
2427 // CHECK-ERROR-NEXT: ^
2428 // CHECK-ERROR-AARCH64-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #2
2429 // CHECK-ERROR-ARM64-NEXT: error: 32-bit general purpose offset register requires sxtw or uxtw extend
2430 // CHECK-ERROR-NEXT: ldr w12, [x8, w1, sxtx]
2431 // CHECK-ERROR-NEXT: ^
2433 ldrsb w9, [x4, x2, lsl #-1]
2434 strb w9, [x4, x2, lsl #1]
2435 // CHECK-ERROR-AARCH64-NEXT: error: expected integer shift amount
2436 // CHECK-ERROR-ARM64-NEXT: error: immediate operand out of range
2437 // CHECK-ERROR-NEXT: ldrsb w9, [x4, x2, lsl #-1]
2438 // CHECK-ERROR-NEXT: ^
2439 // CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0
2440 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2441 // CHECK-ERROR-NEXT: strb w9, [x4, x2, lsl #1]
2442 // CHECK-ERROR-NEXT: ^
2444 ldrsh w9, [x4, x2, lsl #-1]
2445 ldr h13, [x4, w2, uxtw #2]
2446 // CHECK-ERROR-AARCH64-NEXT: error: expected integer shift amount
2447 // CHECK-ERROR-ARM64-NEXT: error: immediate operand out of range
2448 // CHECK-ERROR-NEXT: ldrsh w9, [x4, x2, lsl #-1]
2449 // CHECK-ERROR-NEXT: ^
2450 // CHECK-ERROR-AARCH64-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #1
2451 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2452 // CHECK-ERROR-NEXT: ldr h13, [x4, w2, uxtw #2]
2453 // CHECK-ERROR-NEXT: ^
2455 str w9, [x5, w9, sxtw #-1]
2456 str s3, [sp, w9, uxtw #1]
2457 ldrsw x9, [x15, x4, sxtx #3]
2458 // CHECK-ERROR-AARCH64-NEXT: error: expected integer shift amount
2459 // CHECK-ERROR-ARM64-NEXT: error: immediate operand out of range
2460 // CHECK-ERROR-NEXT: str w9, [x5, w9, sxtw #-1]
2461 // CHECK-ERROR-NEXT: ^
2462 // CHECK-ERROR-AARCH64-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #2
2463 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2464 // CHECK-ERROR-NEXT: str s3, [sp, w9, uxtw #1]
2465 // CHECK-ERROR-NEXT: ^
2466 // CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #2
2467 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2468 // CHECK-ERROR-NEXT: ldrsw x9, [x15, x4, sxtx #3]
2469 // CHECK-ERROR-NEXT: ^
2471 str xzr, [x5, x9, sxtx #-1]
2472 prfm pldl3keep, [sp, x20, lsl #2]
2473 ldr d3, [x20, wzr, uxtw #4]
2474 // CHECK-ERROR-AARCH64-NEXT: error: expected integer shift amount
2475 // CHECK-ERROR-ARM64-NEXT: error: immediate operand out of range
2476 // CHECK-ERROR-NEXT: str xzr, [x5, x9, sxtx #-1]
2477 // CHECK-ERROR-NEXT: ^
2478 // CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #3
2479 // CHECK-ERROR-ARM64-NEXT: error: expected label or encodable integer pc offset
2480 // CHECK-ERROR-NEXT: prfm pldl3keep, [sp, x20, lsl #2]
2481 // CHECK-ERROR-NEXT: ^
2482 // CHECK-ERROR-AARCH64-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #3
2483 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2484 // CHECK-ERROR-NEXT: ldr d3, [x20, wzr, uxtw #4]
2485 // CHECK-ERROR-NEXT: ^
2487 ldr q5, [sp, x2, lsl #-1]
2488 ldr q10, [x20, w4, uxtw #2]
2489 str q21, [x20, w4, uxtw #5]
2490 // CHECK-ERROR-AARCH64-NEXT: error: expected integer shift amount
2491 // CHECK-ERROR-ARM64-NEXT: error: immediate operand out of range
2492 // CHECK-ERROR-NEXT: ldr q5, [sp, x2, lsl #-1]
2493 // CHECK-ERROR-NEXT: ^
2494 // CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtw' with optional shift of #0 or #4
2495 // CHECK-ERROR-ARM64-NEXT: error: invalid offset in memory address
2496 // CHECK-ERROR-NEXT: ldr q10, [x20, w4, uxtw #2]
2497 // CHECK-ERROR-NEXT: ^
2498 // CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtw' with optional shift of #0 or #4
2499 // CHECK-ERROR-ARM64-NEXT: error: immediate operand out of range
2500 // CHECK-ERROR-NEXT: str q21, [x20, w4, uxtw #5]
2501 // CHECK-ERROR-NEXT: ^
2503 //------------------------------------------------------------------------------
2504 // Load/store register pair (offset)
2505 //------------------------------------------------------------------------------
2506 ldp w3, w2, [x4, #1]
2507 stp w1, w2, [x3, #253]
2508 stp w9, w10, [x5, #256]
2509 ldp w11, w12, [x9, #-260]
2511 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2512 // CHECK-ERROR-NEXT: ldp w3, w2, [x4, #1]
2513 // CHECK-ERROR-NEXT: ^
2514 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2515 // CHECK-ERROR-NEXT: stp w1, w2, [x3, #253]
2516 // CHECK-ERROR-NEXT: ^
2517 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2518 // CHECK-ERROR-NEXT: stp w9, w10, [x5, #256]
2519 // CHECK-ERROR-NEXT: ^
2520 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2521 // CHECK-ERROR-NEXT: ldp w11, w12, [x9, #-260]
2522 // CHECK-ERROR-NEXT: ^
2523 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2524 // CHECK-ERROR-NEXT: stp wsp, w9, [sp]
2525 // CHECK-ERROR-NEXT: ^
2527 ldpsw x9, x2, [sp, #2]
2528 ldpsw x1, x2, [x10, #256]
2529 ldpsw x3, x4, [x11, #-260]
2530 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2531 // CHECK-ERROR-NEXT: ldpsw x9, x2, [sp, #2]
2532 // CHECK-ERROR-NEXT: ^
2533 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2534 // CHECK-ERROR-NEXT: ldpsw x1, x2, [x10, #256]
2535 // CHECK-ERROR-NEXT: ^
2536 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2537 // CHECK-ERROR-NEXT: ldpsw x3, x4, [x11, #-260]
2538 // CHECK-ERROR-NEXT: ^
2540 ldp x2, x5, [sp, #4]
2541 ldp x5, x6, [x9, #512]
2542 stp x7, x8, [x10, #-520]
2543 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2544 // CHECK-ERROR-NEXT: ldp x2, x5, [sp, #4]
2545 // CHECK-ERROR-NEXT: ^
2546 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2547 // CHECK-ERROR-NEXT: ldp x5, x6, [x9, #512]
2548 // CHECK-ERROR-NEXT: ^
2549 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2550 // CHECK-ERROR-NEXT: stp x7, x8, [x10, #-520]
2551 // CHECK-ERROR-NEXT: ^
2555 // CHECK-ERROR: error: invalid operand for instruction
2556 // CHECK-ERROR-NEXT: ldp sp, x3, [x10]
2557 // CHECK-ERROR-NEXT: ^
2558 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2559 // CHECK-ERROR-NEXT: stp x3, sp, [x9]
2560 // CHECK-ERROR-NEXT: ^
2562 stp s3, s5, [sp, #-2]
2563 ldp s6, s26, [x4, #-260]
2564 stp s13, s19, [x5, #256]
2565 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2566 // CHECK-ERROR-NEXT: stp s3, s5, [sp, #-2]
2567 // CHECK-ERROR-NEXT: ^
2568 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2569 // CHECK-ERROR-NEXT: ldp s6, s26, [x4, #-260]
2570 // CHECK-ERROR-NEXT: ^
2571 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2572 // CHECK-ERROR-NEXT: stp s13, s19, [x5, #256]
2573 // CHECK-ERROR-NEXT: ^
2576 ldp d5, d6, [x0, #512]
2577 stp d7, d8, [x0, #-520]
2578 // CHECK-ERROR: error: invalid operand for instruction
2579 // CHECK-ERROR-NEXT: ldp d3, d4, [xzr]
2580 // CHECK-ERROR-NEXT: ^
2581 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2582 // CHECK-ERROR-NEXT: ldp d5, d6, [x0, #512]
2583 // CHECK-ERROR-NEXT: ^
2584 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2585 // CHECK-ERROR-NEXT: stp d7, d8, [x0, #-520]
2586 // CHECK-ERROR-NEXT: ^
2589 ldp q3, q5, [sp, #8]
2590 stp q20, q25, [x5, #1024]
2591 ldp q30, q15, [x23, #-1040]
2592 // CHECK-ERROR: error: invalid operand for instruction
2593 // CHECK-ERROR-NEXT: ldp d3, q2, [sp]
2594 // CHECK-ERROR-NEXT: ^
2595 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2596 // CHECK-ERROR-NEXT: ldp q3, q5, [sp, #8]
2597 // CHECK-ERROR-NEXT: ^
2598 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2599 // CHECK-ERROR-NEXT: stp q20, q25, [x5, #1024]
2600 // CHECK-ERROR-NEXT: ^
2601 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2602 // CHECK-ERROR-NEXT: ldp q30, q15, [x23, #-1040]
2603 // CHECK-ERROR-NEXT: ^
2605 //------------------------------------------------------------------------------
2606 // Load/store register pair (post-indexed)
2607 //------------------------------------------------------------------------------
2609 ldp w3, w2, [x4], #1
2610 stp w1, w2, [x3], #253
2611 stp w9, w10, [x5], #256
2612 ldp w11, w12, [x9], #-260
2613 stp wsp, w9, [sp], #0
2614 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2615 // CHECK-ERROR-NEXT: ldp w3, w2, [x4], #1
2616 // CHECK-ERROR-NEXT: ^
2617 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2618 // CHECK-ERROR-NEXT: stp w1, w2, [x3], #253
2619 // CHECK-ERROR-NEXT: ^
2620 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2621 // CHECK-ERROR-NEXT: stp w9, w10, [x5], #256
2622 // CHECK-ERROR-NEXT: ^
2623 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2624 // CHECK-ERROR-NEXT: ldp w11, w12, [x9], #-260
2625 // CHECK-ERROR-NEXT: ^
2626 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2627 // CHECK-ERROR-NEXT: stp wsp, w9, [sp], #0
2628 // CHECK-ERROR-NEXT: ^
2630 ldpsw x9, x2, [sp], #2
2631 ldpsw x1, x2, [x10], #256
2632 ldpsw x3, x4, [x11], #-260
2633 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2634 // CHECK-ERROR-NEXT: ldpsw x9, x2, [sp], #2
2635 // CHECK-ERROR-NEXT: ^
2636 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2637 // CHECK-ERROR-NEXT: ldpsw x1, x2, [x10], #256
2638 // CHECK-ERROR-NEXT: ^
2639 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2640 // CHECK-ERROR-NEXT: ldpsw x3, x4, [x11], #-260
2641 // CHECK-ERROR-NEXT: ^
2643 ldp x2, x5, [sp], #4
2644 ldp x5, x6, [x9], #512
2645 stp x7, x8, [x10], #-520
2646 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2647 // CHECK-ERROR-NEXT: ldp x2, x5, [sp], #4
2648 // CHECK-ERROR-NEXT: ^
2649 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2650 // CHECK-ERROR-NEXT: ldp x5, x6, [x9], #512
2651 // CHECK-ERROR-NEXT: ^
2652 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2653 // CHECK-ERROR-NEXT: stp x7, x8, [x10], #-520
2654 // CHECK-ERROR-NEXT: ^
2656 ldp sp, x3, [x10], #0
2657 stp x3, sp, [x9], #0
2658 // CHECK-ERROR: error: invalid operand for instruction
2659 // CHECK-ERROR-NEXT: ldp sp, x3, [x10], #0
2660 // CHECK-ERROR-NEXT: ^
2661 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2662 // CHECK-ERROR-NEXT: stp x3, sp, [x9], #0
2663 // CHECK-ERROR-NEXT: ^
2665 stp s3, s5, [sp], #-2
2666 ldp s6, s26, [x4], #-260
2667 stp s13, s19, [x5], #256
2668 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2669 // CHECK-ERROR-NEXT: stp s3, s5, [sp], #-2
2670 // CHECK-ERROR-NEXT: ^
2671 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2672 // CHECK-ERROR-NEXT: ldp s6, s26, [x4], #-260
2673 // CHECK-ERROR-NEXT: ^
2674 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2675 // CHECK-ERROR-NEXT: stp s13, s19, [x5], #256
2676 // CHECK-ERROR-NEXT: ^
2678 ldp d3, d4, [xzr], #0
2679 ldp d5, d6, [x0], #512
2680 stp d7, d8, [x0], #-520
2681 // CHECK-ERROR: error: invalid operand for instruction
2682 // CHECK-ERROR-NEXT: ldp d3, d4, [xzr], #0
2683 // CHECK-ERROR-NEXT: ^
2684 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2685 // CHECK-ERROR-NEXT: ldp d5, d6, [x0], #512
2686 // CHECK-ERROR-NEXT: ^
2687 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2688 // CHECK-ERROR-NEXT: stp d7, d8, [x0], #-520
2689 // CHECK-ERROR-NEXT: ^
2691 ldp d3, q2, [sp], #0
2692 ldp q3, q5, [sp], #8
2693 stp q20, q25, [x5], #1024
2694 ldp q30, q15, [x23], #-1040
2695 // CHECK-ERROR: error: invalid operand for instruction
2696 // CHECK-ERROR-NEXT: ldp d3, q2, [sp], #0
2697 // CHECK-ERROR-NEXT: ^
2698 // CHECK-ERROR-AARCH64-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2699 // CHECK-ERROR-ARM64-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2700 // CHECK-ERROR-NEXT: ldp q3, q5, [sp], #8
2701 // CHECK-ERROR-NEXT: ^
2702 // CHECK-ERROR-AARCH64-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2703 // CHECK-ERROR-ARM64-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2704 // CHECK-ERROR-NEXT: stp q20, q25, [x5], #1024
2705 // CHECK-ERROR-NEXT: ^
2706 // CHECK-ERROR-AARCH64-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2707 // CHECK-ERROR-ARM64-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2708 // CHECK-ERROR-NEXT: ldp q30, q15, [x23], #-1040
2709 // CHECK-ERROR-NEXT: ^
2711 //------------------------------------------------------------------------------
2712 // Load/store register pair (pre-indexed)
2713 //------------------------------------------------------------------------------
2715 ldp w3, w2, [x4, #1]!
2716 stp w1, w2, [x3, #253]!
2717 stp w9, w10, [x5, #256]!
2718 ldp w11, w12, [x9, #-260]!
2719 stp wsp, w9, [sp, #0]!
2720 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2721 // CHECK-ERROR-NEXT: ldp w3, w2, [x4, #1]!
2722 // CHECK-ERROR-NEXT: ^
2723 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2724 // CHECK-ERROR-NEXT: stp w1, w2, [x3, #253]!
2725 // CHECK-ERROR-NEXT: ^
2726 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2727 // CHECK-ERROR-NEXT: stp w9, w10, [x5, #256]!
2728 // CHECK-ERROR-NEXT: ^
2729 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2730 // CHECK-ERROR-NEXT: ldp w11, w12, [x9, #-260]!
2731 // CHECK-ERROR-NEXT: ^
2732 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2733 // CHECK-ERROR-NEXT: stp wsp, w9, [sp, #0]!
2734 // CHECK-ERROR-NEXT: ^
2736 ldpsw x9, x2, [sp, #2]!
2737 ldpsw x1, x2, [x10, #256]!
2738 ldpsw x3, x4, [x11, #-260]!
2739 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2740 // CHECK-ERROR-NEXT: ldpsw x9, x2, [sp, #2]!
2741 // CHECK-ERROR-NEXT: ^
2742 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2743 // CHECK-ERROR-NEXT: ldpsw x1, x2, [x10, #256]!
2744 // CHECK-ERROR-NEXT: ^
2745 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2746 // CHECK-ERROR-NEXT: ldpsw x3, x4, [x11, #-260]!
2747 // CHECK-ERROR-NEXT: ^
2749 ldp x2, x5, [sp, #4]!
2750 ldp x5, x6, [x9, #512]!
2751 stp x7, x8, [x10, #-520]!
2752 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2753 // CHECK-ERROR-NEXT: ldp x2, x5, [sp, #4]!
2754 // CHECK-ERROR-NEXT: ^
2755 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2756 // CHECK-ERROR-NEXT: ldp x5, x6, [x9, #512]!
2757 // CHECK-ERROR-NEXT: ^
2758 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2759 // CHECK-ERROR-NEXT: stp x7, x8, [x10, #-520]!
2760 // CHECK-ERROR-NEXT: ^
2762 ldp sp, x3, [x10, #0]!
2763 stp x3, sp, [x9, #0]!
2764 // CHECK-ERROR: error: invalid operand for instruction
2765 // CHECK-ERROR-NEXT: ldp sp, x3, [x10, #0]!
2766 // CHECK-ERROR-NEXT: ^
2767 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2768 // CHECK-ERROR-NEXT: stp x3, sp, [x9, #0]!
2769 // CHECK-ERROR-NEXT: ^
2771 stp s3, s5, [sp, #-2]!
2772 ldp s6, s26, [x4, #-260]!
2773 stp s13, s19, [x5, #256]!
2774 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2775 // CHECK-ERROR-NEXT: stp s3, s5, [sp, #-2]!
2776 // CHECK-ERROR-NEXT: ^
2777 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2778 // CHECK-ERROR-NEXT: ldp s6, s26, [x4, #-260]!
2779 // CHECK-ERROR-NEXT: ^
2780 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2781 // CHECK-ERROR-NEXT: stp s13, s19, [x5, #256]!
2782 // CHECK-ERROR-NEXT: ^
2784 ldp d3, d4, [xzr, #0]!
2785 ldp d5, d6, [x0, #512]!
2786 stp d7, d8, [x0, #-520]!
2787 // CHECK-ERROR: error: invalid operand for instruction
2788 // CHECK-ERROR-NEXT: ldp d3, d4, [xzr, #0]!
2789 // CHECK-ERROR-NEXT: ^
2790 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2791 // CHECK-ERROR-NEXT: ldp d5, d6, [x0, #512]!
2792 // CHECK-ERROR-NEXT: ^
2793 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2794 // CHECK-ERROR-NEXT: stp d7, d8, [x0, #-520]!
2795 // CHECK-ERROR-NEXT: ^
2797 ldp d3, q2, [sp, #0]!
2798 ldp q3, q5, [sp, #8]!
2799 stp q20, q25, [x5, #1024]!
2800 ldp q30, q15, [x23, #-1040]!
2801 // CHECK-ERROR: error: invalid operand for instruction
2802 // CHECK-ERROR-NEXT: ldp d3, q2, [sp, #0]!
2803 // CHECK-ERROR-NEXT: ^
2804 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2805 // CHECK-ERROR-NEXT: ldp q3, q5, [sp, #8]!
2806 // CHECK-ERROR-NEXT: ^
2807 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2808 // CHECK-ERROR-NEXT: stp q20, q25, [x5, #1024]!
2809 // CHECK-ERROR-NEXT: ^
2810 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2811 // CHECK-ERROR-NEXT: ldp q30, q15, [x23, #-1040]!
2812 // CHECK-ERROR-NEXT: ^
2814 //------------------------------------------------------------------------------
2815 // Load/store register pair (offset)
2816 //------------------------------------------------------------------------------
2817 ldnp w3, w2, [x4, #1]
2818 stnp w1, w2, [x3, #253]
2819 stnp w9, w10, [x5, #256]
2820 ldnp w11, w12, [x9, #-260]
2822 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2823 // CHECK-ERROR-NEXT: ldnp w3, w2, [x4, #1]
2824 // CHECK-ERROR-NEXT: ^
2825 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2826 // CHECK-ERROR-NEXT: stnp w1, w2, [x3, #253]
2827 // CHECK-ERROR-NEXT: ^
2828 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2829 // CHECK-ERROR-NEXT: stnp w9, w10, [x5, #256]
2830 // CHECK-ERROR-NEXT: ^
2831 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2832 // CHECK-ERROR-NEXT: ldnp w11, w12, [x9, #-260]
2833 // CHECK-ERROR-NEXT: ^
2834 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2835 // CHECK-ERROR-NEXT: stnp wsp, w9, [sp]
2836 // CHECK-ERROR-NEXT: ^
2838 ldnp x2, x5, [sp, #4]
2839 ldnp x5, x6, [x9, #512]
2840 stnp x7, x8, [x10, #-520]
2841 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2842 // CHECK-ERROR-NEXT: ldnp x2, x5, [sp, #4]
2843 // CHECK-ERROR-NEXT: ^
2844 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2845 // CHECK-ERROR-NEXT: ldnp x5, x6, [x9, #512]
2846 // CHECK-ERROR-NEXT: ^
2847 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2848 // CHECK-ERROR-NEXT: stnp x7, x8, [x10, #-520]
2849 // CHECK-ERROR-NEXT: ^
2853 // CHECK-ERROR: error: invalid operand for instruction
2854 // CHECK-ERROR-NEXT: ldnp sp, x3, [x10]
2855 // CHECK-ERROR-NEXT: ^
2856 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2857 // CHECK-ERROR-NEXT: stnp x3, sp, [x9]
2858 // CHECK-ERROR-NEXT: ^
2860 stnp s3, s5, [sp, #-2]
2861 ldnp s6, s26, [x4, #-260]
2862 stnp s13, s19, [x5, #256]
2863 // CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2864 // CHECK-ERROR-NEXT: stnp s3, s5, [sp, #-2]
2865 // CHECK-ERROR-NEXT: ^
2866 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2867 // CHECK-ERROR-NEXT: ldnp s6, s26, [x4, #-260]
2868 // CHECK-ERROR-NEXT: ^
2869 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]
2870 // CHECK-ERROR-NEXT: stnp s13, s19, [x5, #256]
2871 // CHECK-ERROR-NEXT: ^
2874 ldnp d5, d6, [x0, #512]
2875 stnp d7, d8, [x0, #-520]
2876 // CHECK-ERROR: error: invalid operand for instruction
2877 // CHECK-ERROR-NEXT: ldnp d3, d4, [xzr]
2878 // CHECK-ERROR-NEXT: ^
2879 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2880 // CHECK-ERROR-NEXT: ldnp d5, d6, [x0, #512]
2881 // CHECK-ERROR-NEXT: ^
2882 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]
2883 // CHECK-ERROR-NEXT: stnp d7, d8, [x0, #-520]
2884 // CHECK-ERROR-NEXT: ^
2887 ldnp q3, q5, [sp, #8]
2888 stnp q20, q25, [x5, #1024]
2889 ldnp q30, q15, [x23, #-1040]
2890 // CHECK-ERROR: error: invalid operand for instruction
2891 // CHECK-ERROR-NEXT: ldnp d3, q2, [sp]
2892 // CHECK-ERROR-NEXT: ^
2893 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2894 // CHECK-ERROR-NEXT: ldnp q3, q5, [sp, #8]
2895 // CHECK-ERROR-NEXT: ^
2896 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2897 // CHECK-ERROR-NEXT: stnp q20, q25, [x5, #1024]
2898 // CHECK-ERROR-NEXT: ^
2899 // CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]
2900 // CHECK-ERROR-NEXT: ldnp q30, q15, [x23, #-1040]
2901 // CHECK-ERROR-NEXT: ^
2903 //------------------------------------------------------------------------------
2904 // Logical (shifted register)
2905 //------------------------------------------------------------------------------
2906 orr w0, w1, #0xffffffff
2907 and x3, x5, #0xffffffffffffffff
2908 // CHECK-ERROR: error: expected compatible register or logical immediate
2909 // CHECK-ERROR-NEXT: orr w0, w1, #0xffffffff
2910 // CHECK-ERROR-NEXT: ^
2911 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
2912 // CHECK-ERROR-NEXT: and x3, x5, #0xffffffffffffffff
2913 // CHECK-ERROR-NEXT: ^
2917 // CHECK-ERROR: error: expected compatible register or logical immediate
2918 // CHECK-ERROR-NEXT: ands w3, w9, #0x0
2919 // CHECK-ERROR-NEXT: ^
2920 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
2921 // CHECK-ERROR-NEXT: eor x2, x0, #0x0
2922 // CHECK-ERROR-NEXT: ^
2925 eor x9, x20, #0x1234
2926 // CHECK-ERROR: error: expected compatible register or logical immediate
2927 // CHECK-ERROR-NEXT: eor w3, w5, #0x83
2928 // CHECK-ERROR-NEXT: ^
2929 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
2930 // CHECK-ERROR-NEXT: eor x9, x20, #0x1234
2931 // CHECK-ERROR-NEXT: ^
2933 and wzr, w4, 0xffff0000
2934 eor xzr, x9, #0xffff0000ffff0000
2935 // CHECK-ERROR: error: invalid operand for instruction
2936 // CHECK-ERROR-NEXT: and wzr, w4, 0xffff0000
2937 // CHECK-ERROR-NEXT: ^
2938 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2939 // CHECK-ERROR-NEXT: eor xzr, x9, #0xffff0000ffff0000
2940 // CHECK-ERROR-NEXT: ^
2942 orr w3, wsp, #0xf0f0f0f0
2943 ands x3, sp, #0xaaaaaaaaaaaaaaaa
2944 // CHECK-ERROR: error: invalid operand for instruction
2945 // CHECK-ERROR-NEXT: orr w3, wsp, #0xf0f0f0f0
2946 // CHECK-ERROR-NEXT: ^
2947 // CHECK-ERROR-NEXT: error: invalid operand for instruction
2948 // CHECK-ERROR-NEXT: ands x3, sp, #0xaaaaaaaaaaaaaaaa
2949 // CHECK-ERROR-NEXT: ^
2951 tst sp, #0xe0e0e0e0e0e0e0e0
2952 // CHECK-ERROR: error: invalid operand for instruction
2953 // CHECK-ERROR-NEXT: tst sp, #0xe0e0e0e0e0e0e0e0
2954 // CHECK-ERROR-NEXT: ^
2956 // movi has been removed from the specification. Make sure it's really gone.
2957 movi wzr, #0x44444444
2959 movi x9, #0x0000ffff00000000
2960 // CHECK-ERROR: error: invalid operand for instruction
2961 // CHECK-ERROR-NEXT: movi wzr, #0x44444444
2962 // CHECK-ERROR-NEXT: ^
2963 // CHECK-ERROR: error: invalid operand for instruction
2964 // CHECK-ERROR-NEXT: movi w3, #0xffff
2965 // CHECK-ERROR-NEXT: ^
2966 // CHECK-ERROR: error: invalid operand for instruction
2967 // CHECK-ERROR-NEXT: movi x9, #0x0000ffff00000000
2968 // CHECK-ERROR-NEXT: ^
2970 //------------------------------------------------------------------------------
2971 // Logical (shifted register)
2972 //------------------------------------------------------------------------------
2974 //// Out of range shifts
2975 and w2, w24, w6, lsl #-1
2976 and w4, w6, w12, lsl #32
2977 and x4, x6, x12, lsl #64
2978 and x2, x5, x11, asr
2979 // CHECK-ERROR: error: expected integer shift amount
2980 // CHECK-ERROR-NEXT: and w2, w24, w6, lsl #-1
2981 // CHECK-ERROR-NEXT: ^
2982 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
2983 // CHECK-ERROR-NEXT: and w4, w6, w12, lsl #32
2984 // CHECK-ERROR-NEXT: ^
2985 // CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
2986 // CHECK-ERROR-NEXT: and x4, x6, x12, lsl #64
2987 // CHECK-ERROR-NEXT: ^
2988 // CHECK-ERROR-NEXT: error: expected #imm after shift specifier
2989 // CHECK-ERROR-NEXT: and x2, x5, x11, asr
2990 // CHECK-ERROR-NEXT: ^
2994 bics x20, sp, x9, lsr #0
2995 orn x2, x6, sp, lsl #3
2996 // CHECK-ERROR: error: invalid operand for instruction
2997 // CHECK-ERROR-NEXT: orn wsp, w3, w5
2998 // CHECK-ERROR-NEXT: ^
2999 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3000 // CHECK-ERROR-NEXT: bics x20, sp, x9, lsr #0
3001 // CHECK-ERROR-NEXT: ^
3002 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3003 // CHECK-ERROR-NEXT: orn x2, x6, sp, lsl #3
3004 // CHECK-ERROR-NEXT: ^
3006 //// Mismatched registers
3009 and x4, x5, w6, lsl #12
3010 orr w2, w5, x7, asr #0
3011 // CHECK-ERROR: error: invalid operand for instruction
3012 // CHECK-ERROR-NEXT: and x3, w2, w1
3013 // CHECK-ERROR-NEXT: ^
3014 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3015 // CHECK-ERROR-NEXT: ands w1, x12, w2
3016 // CHECK-ERROR-NEXT: ^
3017 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
3018 // CHECK-ERROR-NEXT: and x4, x5, w6, lsl #12
3019 // CHECK-ERROR-NEXT: ^
3020 // CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
3021 // CHECK-ERROR-NEXT: orr w2, w5, x7, asr #0
3022 // CHECK-ERROR-NEXT: ^
3024 //// Shifts should not be allowed on mov
3026 // CHECK-ERROR: error: invalid operand for instruction
3027 // CHECK-ERROR-NEXT: mov w3, w7, lsl #13
3028 // CHECK-ERROR-NEXT: ^
3030 //------------------------------------------------------------------------------
3031 // Move wide (immediate)
3032 //------------------------------------------------------------------------------
3034 movz w3, #65536, lsl #0
3037 movk w3, #0, lsl #-1
3038 movn w2, #-1, lsl #0
3040 movk w3, #1, lsl #32
3041 movn x2, #12, lsl #64
3042 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3043 // CHECK-ERROR-NEXT: movz w3, #65536, lsl #0
3044 // CHECK-ERROR-NEXT: ^
3045 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3046 // CHECK-ERROR-NEXT: movz w4, #65536
3047 // CHECK-ERROR-NEXT: ^
3048 // CHECK-ERROR-AARCH64-NEXT: error: expected relocated symbol or integer in range [0, 65535]
3049 // CHECK-ERROR-ARM64-NEXT: error: expected 'lsl' with optional integer 0 or 16
3050 // CHECK-ERROR-NEXT: movn w1, #2, lsl #1
3051 // CHECK-ERROR-NEXT: ^
3052 // CHECK-ERROR-AARCH64-NEXT: error: only 'lsl #+N' valid after immediate
3053 // CHECK-ERROR-ARM64-NEXT: error: expected integer shift amount
3054 // CHECK-ERROR-NEXT: movk w3, #0, lsl #-1
3055 // CHECK-ERROR-NEXT: ^
3056 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3057 // CHECK-ERROR-NEXT: movn w2, #-1, lsl #0
3058 // CHECK-ERROR-NEXT: ^
3059 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3060 // CHECK-ERROR-NEXT: movz x3, #-1
3061 // CHECK-ERROR-NEXT: ^
3062 // CHECK-ERROR-AARCH64-NEXT: error: expected relocated symbol or integer in range [0, 65535]
3063 // CHECK-ERROR-ARM64-NEXT: error: expected 'lsl' with optional integer 0 or 16
3064 // CHECK-ERROR-NEXT: movk w3, #1, lsl #32
3065 // CHECK-ERROR-NEXT: ^
3066 // CHECK-ERROR-AARCH64-NEXT: error: expected relocated symbol or integer in range [0, 65535]
3067 // CHECK-ERROR-ARM64-NEXT: error: expected 'lsl' with optional integer 0, 16, 32 or 48
3068 // CHECK-ERROR-NEXT: movn x2, #12, lsl #64
3069 // CHECK-ERROR-NEXT: ^
3071 movz x12, #:abs_g0:sym, lsl #16
3072 movz x12, #:abs_g0:sym, lsl #0
3073 movn x2, #:abs_g0:sym
3074 movk w3, #:abs_g0:sym
3075 movz x3, #:abs_g0_nc:sym
3076 movn x4, #:abs_g0_nc:sym
3077 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3078 // CHECK-ERROR-NEXT: movz x12, #:abs_g0:sym, lsl #16
3079 // CHECK-ERROR-NEXT: ^
3080 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3081 // CHECK-ERROR-NEXT: movz x12, #:abs_g0:sym, lsl #0
3082 // CHECK-ERROR-NEXT: ^
3083 // CHECK-ERROR-AARCH64-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3084 // CHECK-ERROR-AARCH64-NEXT: movn x2, #:abs_g0:sym
3085 // CHECK-ERROR-AARCH64-NEXT: ^
3086 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3087 // CHECK-ERROR-NEXT: movk w3, #:abs_g0:sym
3088 // CHECK-ERROR-NEXT: ^
3089 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3090 // CHECK-ERROR-NEXT: movz x3, #:abs_g0_nc:sym
3091 // CHECK-ERROR-NEXT: ^
3092 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3093 // CHECK-ERROR-NEXT: movn x4, #:abs_g0_nc:sym
3094 // CHECK-ERROR-NEXT: ^
3096 movn x2, #:abs_g1:sym
3097 movk w3, #:abs_g1:sym
3098 movz x3, #:abs_g1_nc:sym
3099 movn x4, #:abs_g1_nc:sym
3100 // CHECK-ERROR-AARCH64: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3101 // CHECK-ERROR-AARCH64-NEXT: movn x2, #:abs_g1:sym
3102 // CHECK-ERROR-AARCH64-NEXT: ^
3103 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3104 // CHECK-ERROR-NEXT: movk w3, #:abs_g1:sym
3105 // CHECK-ERROR-NEXT: ^
3106 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3107 // CHECK-ERROR-NEXT: movz x3, #:abs_g1_nc:sym
3108 // CHECK-ERROR-NEXT: ^
3109 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3110 // CHECK-ERROR-NEXT: movn x4, #:abs_g1_nc:sym
3111 // CHECK-ERROR-NEXT: ^
3113 movz w12, #:abs_g2:sym
3114 movn x12, #:abs_g2:sym
3115 movk x13, #:abs_g2:sym
3116 movk w3, #:abs_g2_nc:sym
3117 movz x13, #:abs_g2_nc:sym
3118 movn x24, #:abs_g2_nc:sym
3119 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3120 // CHECK-ERROR-NEXT: movz w12, #:abs_g2:sym
3121 // CHECK-ERROR-NEXT: ^
3122 // CHECK-ERROR-AARCH64-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3123 // CHECK-ERROR-AARCH64-NEXT: movn x12, #:abs_g2:sym
3124 // CHECK-ERROR-AARCH64-NEXT: ^
3125 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3126 // CHECK-ERROR-NEXT: movk x13, #:abs_g2:sym
3127 // CHECK-ERROR-NEXT: ^
3128 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3129 // CHECK-ERROR-NEXT: movk w3, #:abs_g2_nc:sym
3130 // CHECK-ERROR-NEXT: ^
3131 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3132 // CHECK-ERROR-NEXT: movz x13, #:abs_g2_nc:sym
3133 // CHECK-ERROR-NEXT: ^
3134 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3135 // CHECK-ERROR-NEXT: movn x24, #:abs_g2_nc:sym
3136 // CHECK-ERROR-NEXT: ^
3138 movn x19, #:abs_g3:sym
3139 movz w20, #:abs_g3:sym
3140 movk w21, #:abs_g3:sym
3141 // CHECK-ERROR-AARCH64: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3142 // CHECK-ERROR-AARCH64-NEXT: movn x19, #:abs_g3:sym
3143 // CHECK-ERROR-AARCH64-NEXT: ^
3144 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3145 // CHECK-ERROR-NEXT: movz w20, #:abs_g3:sym
3146 // CHECK-ERROR-NEXT: ^
3147 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3148 // CHECK-ERROR-NEXT: movk w21, #:abs_g3:sym
3149 // CHECK-ERROR-NEXT: ^
3151 movk x19, #:abs_g0_s:sym
3152 movk w23, #:abs_g0_s:sym
3153 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3154 // CHECK-ERROR-NEXT: movk x19, #:abs_g0_s:sym
3155 // CHECK-ERROR-NEXT: ^
3156 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3157 // CHECK-ERROR-NEXT: movk w23, #:abs_g0_s:sym
3158 // CHECK-ERROR-NEXT: ^
3160 movk x19, #:abs_g1_s:sym
3161 movk w23, #:abs_g1_s:sym
3162 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3163 // CHECK-ERROR-NEXT: movk x19, #:abs_g1_s:sym
3164 // CHECK-ERROR-NEXT: ^
3165 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3166 // CHECK-ERROR-NEXT: movk w23, #:abs_g1_s:sym
3167 // CHECK-ERROR-NEXT: ^
3169 movz w2, #:abs_g2_s:sym
3170 movn w29, #:abs_g2_s:sym
3171 movk x19, #:abs_g2_s:sym
3172 movk w23, #:abs_g2_s:sym
3173 // CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3174 // CHECK-ERROR-NEXT: movz w2, #:abs_g2_s:sym
3175 // CHECK-ERROR-NEXT: ^
3176 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3177 // CHECK-ERROR-NEXT: movn w29, #:abs_g2_s: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 x19, #:abs_g2_s:sym
3181 // CHECK-ERROR-NEXT: ^
3182 // CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]
3183 // CHECK-ERROR-NEXT: movk w23, #:abs_g2_s:sym
3184 // CHECK-ERROR-NEXT: ^
3186 //------------------------------------------------------------------------------
3187 // PC-relative addressing
3188 //------------------------------------------------------------------------------
3190 adr sp, loc // expects xzr
3191 adrp x3, #20 // Immediate unaligned
3192 adrp w2, loc // 64-bit register needed
3193 // CHECK-ERROR: error: invalid operand for instruction
3194 // CHECK-ERROR-NEXT: adr sp, loc
3195 // CHECK-ERROR-NEXT: ^
3196 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3197 // CHECK-ERROR-NEXT: adrp x3, #20
3198 // CHECK-ERROR-NEXT: ^
3199 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3200 // CHECK-ERROR-NEXT: adrp w2, loc
3201 // CHECK-ERROR-NEXT: ^
3205 adrp x9, #4294967296
3206 adrp x20, #-4294971392
3207 // CHECK-ERROR: error: expected label or encodable integer pc offset
3208 // CHECK-ERROR-NEXT: adr x9, #1048576
3209 // CHECK-ERROR-NEXT: ^
3210 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3211 // CHECK-ERROR-NEXT: adr x2, #-1048577
3212 // CHECK-ERROR-NEXT: ^
3213 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3214 // CHECK-ERROR-NEXT: adrp x9, #4294967296
3215 // CHECK-ERROR-NEXT: ^
3216 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3217 // CHECK-ERROR-NEXT: adrp x20, #-4294971392
3218 // CHECK-ERROR-NEXT: ^
3220 //------------------------------------------------------------------------------
3222 //------------------------------------------------------------------------------
3226 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 127]
3227 // CHECK-ERROR-NEXT: hint #-1
3228 // CHECK-ERROR-NEXT: ^
3229 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 127]
3230 // CHECK-ERROR-NEXT: hint #128
3231 // CHECK-ERROR-NEXT: ^
3235 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
3236 // CHECK-ERROR-NEXT: clrex #-1
3237 // CHECK-ERROR-NEXT: ^
3238 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
3239 // CHECK-ERROR-NEXT: clrex #16
3240 // CHECK-ERROR-NEXT: ^
3246 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3247 // CHECK-ERROR-NEXT: dsb #-1
3248 // CHECK-ERROR-NEXT: ^
3249 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3250 // CHECK-ERROR-NEXT: dsb #16
3251 // CHECK-ERROR-NEXT: ^
3252 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3253 // CHECK-ERROR-NEXT: dmb #-1
3254 // CHECK-ERROR-NEXT: ^
3255 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3256 // CHECK-ERROR-NEXT: dmb #16
3257 // CHECK-ERROR-NEXT: ^
3261 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3262 // CHECK-ERROR-NEXT: isb #-1
3263 // CHECK-ERROR-NEXT: ^
3264 // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}
3265 // CHECK-ERROR-NEXT: isb #16
3266 // CHECK-ERROR-NEXT: ^
3272 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
3273 // CHECK-ERROR-NEXT: msr daifset, x4
3274 // CHECK-ERROR-NEXT: ^
3275 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
3276 // CHECK-ERROR-NEXT: msr spsel, #-1
3277 // CHECK-ERROR-NEXT: ^
3278 // CHECK-ERROR-NEXT: error: {{expected comma before next operand|unexpected token in argument list}}
3279 // CHECK-ERROR-NEXT: msr spsel #-1
3280 // CHECK-ERROR-NEXT: ^
3281 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
3282 // CHECK-ERROR-NEXT: msr daifclr, #16
3283 // CHECK-ERROR-NEXT: ^
3285 sys #8, c1, c2, #7, x9
3286 sys #3, c16, c2, #3, x10
3287 sys #2, c11, c16, #5
3288 sys #4, c9, c8, #8, xzr
3289 sysl x11, #8, c1, c2, #7
3290 sysl x13, #3, c16, c2, #3
3291 sysl x9, #2, c11, c16, #5
3292 sysl x4, #4, c9, c8, #8
3293 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]
3294 // CHECK-ERROR-NEXT: sys #8, c1, c2, #7, x9
3295 // CHECK-ERROR-NEXT: ^
3296 // CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15
3297 // CHECK-ERROR-NEXT: sys #3, c16, c2, #3, x10
3298 // CHECK-ERROR-NEXT: ^
3299 // CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15
3300 // CHECK-ERROR-NEXT: sys #2, c11, c16, #5
3301 // CHECK-ERROR-NEXT: ^
3302 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]
3303 // CHECK-ERROR-NEXT: sys #4, c9, c8, #8, xzr
3304 // CHECK-ERROR-NEXT: ^
3305 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]
3306 // CHECK-ERROR-NEXT: sysl x11, #8, c1, c2, #7
3307 // CHECK-ERROR-NEXT: ^
3308 // CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15
3309 // CHECK-ERROR-NEXT: sysl x13, #3, c16, c2, #3
3310 // CHECK-ERROR-NEXT: ^
3311 // CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15
3312 // CHECK-ERROR-NEXT: sysl x9, #2, c11, c16, #5
3313 // CHECK-ERROR-NEXT: ^
3314 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]
3315 // CHECK-ERROR-NEXT: sysl x4, #4, c9, c8, #8
3316 // CHECK-ERROR-NEXT: ^
3321 // CHECK-ERROR-NEXT: error: specified {{IC|ic}} op does not use a register
3322 // CHECK-ERROR-NEXT: ic ialluis, x2
3323 // CHECK-ERROR-NEXT: ^
3324 // CHECK-ERROR-AARCH64-NEXT: error: operand specifier not recognised
3325 // CHECK-ERROR-ARM64-NEXT: error: invalid operand for IC instruction
3326 // CHECK-ERROR-NEXT: ic allu, x7
3327 // CHECK-ERROR-NEXT: ^
3328 // CHECK-ERROR-NEXT: error: specified {{IC|ic}} op requires a register
3329 // CHECK-ERROR-NEXT: ic ivau
3330 // CHECK-ERROR-NEXT: ^
3346 tlbi VMALLS12E1IS, xzr
3362 tlbi VMALLS12E1, x15
3364 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3365 // CHECK-ERROR-NEXT: tlbi IPAS2E1IS
3366 // CHECK-ERROR-NEXT: ^
3367 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3368 // CHECK-ERROR-NEXT: tlbi IPAS2LE1IS
3369 // CHECK-ERROR-NEXT: ^
3370 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3371 // CHECK-ERROR-NEXT: tlbi VMALLE1IS, x12
3372 // CHECK-ERROR-NEXT: ^
3373 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3374 // CHECK-ERROR-NEXT: tlbi ALLE2IS, x11
3375 // CHECK-ERROR-NEXT: ^
3376 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3377 // CHECK-ERROR-NEXT: tlbi ALLE3IS, x20
3378 // CHECK-ERROR-NEXT: ^
3379 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3380 // CHECK-ERROR-NEXT: tlbi VAE1IS
3381 // CHECK-ERROR-NEXT: ^
3382 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3383 // CHECK-ERROR-NEXT: tlbi VAE2IS
3384 // CHECK-ERROR-NEXT: ^
3385 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3386 // CHECK-ERROR-NEXT: tlbi VAE3IS
3387 // CHECK-ERROR-NEXT: ^
3388 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3389 // CHECK-ERROR-NEXT: tlbi ASIDE1IS
3390 // CHECK-ERROR-NEXT: ^
3391 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3392 // CHECK-ERROR-NEXT: tlbi VAAE1IS
3393 // CHECK-ERROR-NEXT: ^
3394 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3395 // CHECK-ERROR-NEXT: tlbi ALLE1IS, x0
3396 // CHECK-ERROR-NEXT: ^
3397 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3398 // CHECK-ERROR-NEXT: tlbi VALE1IS
3399 // CHECK-ERROR-NEXT: ^
3400 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3401 // CHECK-ERROR-NEXT: tlbi VALE2IS
3402 // CHECK-ERROR-NEXT: ^
3403 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3404 // CHECK-ERROR-NEXT: tlbi VALE3IS
3405 // CHECK-ERROR-NEXT: ^
3406 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3407 // CHECK-ERROR-NEXT: tlbi VMALLS12E1IS, xzr
3408 // CHECK-ERROR-NEXT: ^
3409 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3410 // CHECK-ERROR-NEXT: tlbi VAALE1IS
3411 // CHECK-ERROR-NEXT: ^
3412 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3413 // CHECK-ERROR-NEXT: tlbi IPAS2E1
3414 // CHECK-ERROR-NEXT: ^
3415 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3416 // CHECK-ERROR-NEXT: tlbi IPAS2LE1
3417 // CHECK-ERROR-NEXT: ^
3418 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3419 // CHECK-ERROR-NEXT: tlbi VMALLE1, x9
3420 // CHECK-ERROR-NEXT: ^
3421 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3422 // CHECK-ERROR-NEXT: tlbi ALLE2, x10
3423 // CHECK-ERROR-NEXT: ^
3424 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3425 // CHECK-ERROR-NEXT: tlbi ALLE3, x11
3426 // CHECK-ERROR-NEXT: ^
3427 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3428 // CHECK-ERROR-NEXT: tlbi VAE1
3429 // CHECK-ERROR-NEXT: ^
3430 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3431 // CHECK-ERROR-NEXT: tlbi VAE2
3432 // CHECK-ERROR-NEXT: ^
3433 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3434 // CHECK-ERROR-NEXT: tlbi VAE3
3435 // CHECK-ERROR-NEXT: ^
3436 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3437 // CHECK-ERROR-NEXT: tlbi ASIDE1
3438 // CHECK-ERROR-NEXT: ^
3439 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3440 // CHECK-ERROR-NEXT: tlbi VAAE1
3441 // CHECK-ERROR-NEXT: ^
3442 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3443 // CHECK-ERROR-NEXT: tlbi ALLE1, x25
3444 // CHECK-ERROR-NEXT: ^
3445 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3446 // CHECK-ERROR-NEXT: tlbi VALE1
3447 // CHECK-ERROR-NEXT: ^
3448 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3449 // CHECK-ERROR-NEXT: tlbi VALE2
3450 // CHECK-ERROR-NEXT: ^
3451 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3452 // CHECK-ERROR-NEXT: tlbi VALE3
3453 // CHECK-ERROR-NEXT: ^
3454 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register
3455 // CHECK-ERROR-NEXT: tlbi VMALLS12E1, x15
3456 // CHECK-ERROR-NEXT: ^
3457 // CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register
3458 // CHECK-ERROR-NEXT: tlbi VAALE1
3459 // CHECK-ERROR-NEXT: ^
3461 // For the MSR/MRS instructions, first make sure read-only and
3462 // write-only registers actually are.
3464 msr DBGDTRRX_EL0, x12
3467 msr DBGAUTHSTATUS_EL1, x12
3476 msr ID_PFR0_EL1, x12
3477 msr ID_PFR1_EL1, x12
3478 msr ID_DFR0_EL1, x12
3479 msr ID_AFR0_EL1, x12
3480 msr ID_MMFR0_EL1, x12
3481 msr ID_MMFR1_EL1, x12
3482 msr ID_MMFR2_EL1, x12
3483 msr ID_MMFR3_EL1, x12
3484 msr ID_ISAR0_EL1, x12
3485 msr ID_ISAR1_EL1, x12
3486 msr ID_ISAR2_EL1, x12
3487 msr ID_ISAR3_EL1, x12
3488 msr ID_ISAR4_EL1, x12
3489 msr ID_ISAR5_EL1, x12
3493 msr ID_AA64PFR0_EL1, x12
3494 msr ID_AA64PFR1_EL1, x12
3495 msr ID_AA64DFR0_EL1, x12
3496 msr ID_AA64DFR1_EL1, x12
3497 msr ID_AA64AFR0_EL1, x12
3498 msr ID_AA64AFR1_EL1, x12
3499 msr ID_AA64ISAR0_EL1, x12
3500 msr ID_AA64ISAR1_EL1, x12
3501 msr ID_AA64MMFR0_EL1, x12
3502 msr ID_AA64MMFR1_EL1, x12
3503 msr PMCEID0_EL0, x12
3504 msr PMCEID1_EL0, x12
3511 msr PMEVCNTR31_EL0, x12
3512 msr PMEVTYPER31_EL0, x12
3513 // CHECK-ERROR: error: expected writable system register or pstate
3514 // CHECK-ERROR-NEXT: msr MDCCSR_EL0, x12
3515 // CHECK-ERROR-NEXT: ^
3516 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3517 // CHECK-ERROR-NEXT: msr DBGDTRRX_EL0, x12
3518 // CHECK-ERROR-NEXT: ^
3519 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3520 // CHECK-ERROR-NEXT: msr MDRAR_EL1, x12
3521 // CHECK-ERROR-NEXT: ^
3522 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3523 // CHECK-ERROR-NEXT: msr OSLSR_EL1, x12
3524 // CHECK-ERROR-NEXT: ^
3525 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3526 // CHECK-ERROR-NEXT: msr DBGAUTHSTATUS_EL1, x12
3527 // CHECK-ERROR-NEXT: ^
3528 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3529 // CHECK-ERROR-NEXT: msr MIDR_EL1, x12
3530 // CHECK-ERROR-NEXT: ^
3531 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3532 // CHECK-ERROR-NEXT: msr CCSIDR_EL1, x12
3533 // CHECK-ERROR-NEXT: ^
3534 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3535 // CHECK-ERROR-NEXT: msr CLIDR_EL1, x12
3536 // CHECK-ERROR-NEXT: ^
3537 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3538 // CHECK-ERROR-NEXT: msr CTR_EL0, x12
3539 // CHECK-ERROR-NEXT: ^
3540 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3541 // CHECK-ERROR-NEXT: msr MPIDR_EL1, x12
3542 // CHECK-ERROR-NEXT: ^
3543 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3544 // CHECK-ERROR-NEXT: msr REVIDR_EL1, x12
3545 // CHECK-ERROR-NEXT: ^
3546 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3547 // CHECK-ERROR-NEXT: msr AIDR_EL1, x12
3548 // CHECK-ERROR-NEXT: ^
3549 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3550 // CHECK-ERROR-NEXT: msr DCZID_EL0, x12
3551 // CHECK-ERROR-NEXT: ^
3552 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3553 // CHECK-ERROR-NEXT: msr ID_PFR0_EL1, x12
3554 // CHECK-ERROR-NEXT: ^
3555 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3556 // CHECK-ERROR-NEXT: msr ID_PFR1_EL1, x12
3557 // CHECK-ERROR-NEXT: ^
3558 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3559 // CHECK-ERROR-NEXT: msr ID_DFR0_EL1, x12
3560 // CHECK-ERROR-NEXT: ^
3561 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3562 // CHECK-ERROR-NEXT: msr ID_AFR0_EL1, x12
3563 // CHECK-ERROR-NEXT: ^
3564 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3565 // CHECK-ERROR-NEXT: msr ID_MMFR0_EL1, x12
3566 // CHECK-ERROR-NEXT: ^
3567 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3568 // CHECK-ERROR-NEXT: msr ID_MMFR1_EL1, x12
3569 // CHECK-ERROR-NEXT: ^
3570 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3571 // CHECK-ERROR-NEXT: msr ID_MMFR2_EL1, x12
3572 // CHECK-ERROR-NEXT: ^
3573 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3574 // CHECK-ERROR-NEXT: msr ID_MMFR3_EL1, x12
3575 // CHECK-ERROR-NEXT: ^
3576 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3577 // CHECK-ERROR-NEXT: msr ID_ISAR0_EL1, x12
3578 // CHECK-ERROR-NEXT: ^
3579 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3580 // CHECK-ERROR-NEXT: msr ID_ISAR1_EL1, x12
3581 // CHECK-ERROR-NEXT: ^
3582 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3583 // CHECK-ERROR-NEXT: msr ID_ISAR2_EL1, x12
3584 // CHECK-ERROR-NEXT: ^
3585 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3586 // CHECK-ERROR-NEXT: msr ID_ISAR3_EL1, x12
3587 // CHECK-ERROR-NEXT: ^
3588 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3589 // CHECK-ERROR-NEXT: msr ID_ISAR4_EL1, x12
3590 // CHECK-ERROR-NEXT: ^
3591 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3592 // CHECK-ERROR-NEXT: msr ID_ISAR5_EL1, x12
3593 // CHECK-ERROR-NEXT: ^
3594 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3595 // CHECK-ERROR-NEXT: msr MVFR0_EL1, x12
3596 // CHECK-ERROR-NEXT: ^
3597 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3598 // CHECK-ERROR-NEXT: msr MVFR1_EL1, x12
3599 // CHECK-ERROR-NEXT: ^
3600 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3601 // CHECK-ERROR-NEXT: msr MVFR2_EL1, x12
3602 // CHECK-ERROR-NEXT: ^
3603 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3604 // CHECK-ERROR-NEXT: msr ID_AA64PFR0_EL1, x12
3605 // CHECK-ERROR-NEXT: ^
3606 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3607 // CHECK-ERROR-NEXT: msr ID_AA64PFR1_EL1, x12
3608 // CHECK-ERROR-NEXT: ^
3609 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3610 // CHECK-ERROR-NEXT: msr ID_AA64DFR0_EL1, x12
3611 // CHECK-ERROR-NEXT: ^
3612 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3613 // CHECK-ERROR-NEXT: msr ID_AA64DFR1_EL1, x12
3614 // CHECK-ERROR-NEXT: ^
3615 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3616 // CHECK-ERROR-NEXT: msr ID_AA64AFR0_EL1, x12
3617 // CHECK-ERROR-NEXT: ^
3618 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3619 // CHECK-ERROR-NEXT: msr ID_AA64AFR1_EL1, x12
3620 // CHECK-ERROR-NEXT: ^
3621 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3622 // CHECK-ERROR-NEXT: msr ID_AA64ISAR0_EL1, x12
3623 // CHECK-ERROR-NEXT: ^
3624 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3625 // CHECK-ERROR-NEXT: msr ID_AA64ISAR1_EL1, x12
3626 // CHECK-ERROR-NEXT: ^
3627 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3628 // CHECK-ERROR-NEXT: msr ID_AA64MMFR0_EL1, x12
3629 // CHECK-ERROR-NEXT: ^
3630 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3631 // CHECK-ERROR-NEXT: msr ID_AA64MMFR1_EL1, x12
3632 // CHECK-ERROR-NEXT: ^
3633 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3634 // CHECK-ERROR-NEXT: msr PMCEID0_EL0, x12
3635 // CHECK-ERROR-NEXT: ^
3636 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3637 // CHECK-ERROR-NEXT: msr PMCEID1_EL0, x12
3638 // CHECK-ERROR-NEXT: ^
3639 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3640 // CHECK-ERROR-NEXT: msr RVBAR_EL1, x12
3641 // CHECK-ERROR-NEXT: ^
3642 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3643 // CHECK-ERROR-NEXT: msr RVBAR_EL2, x12
3644 // CHECK-ERROR-NEXT: ^
3645 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3646 // CHECK-ERROR-NEXT: msr RVBAR_EL3, x12
3647 // CHECK-ERROR-NEXT: ^
3648 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3649 // CHECK-ERROR-NEXT: msr ISR_EL1, x12
3650 // CHECK-ERROR-NEXT: ^
3651 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3652 // CHECK-ERROR-NEXT: msr CNTPCT_EL0, x12
3653 // CHECK-ERROR-NEXT: ^
3654 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3655 // CHECK-ERROR-NEXT: msr CNTVCT_EL0, x12
3656 // CHECK-ERROR-NEXT: ^
3657 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3658 // CHECK-ERROR-NEXT: msr PMEVCNTR31_EL0, x12
3659 // CHECK-ERROR-NEXT: ^
3660 // CHECK-ERROR-NEXT: error: expected writable system register or pstate
3661 // CHECK-ERROR-NEXT: msr PMEVTYPER31_EL0, x12
3662 // CHECK-ERROR-NEXT: ^
3664 mrs x9, DBGDTRTX_EL0
3667 mrs x9, PMEVCNTR31_EL0
3668 mrs x9, PMEVTYPER31_EL0
3669 // CHECK-ERROR: error: expected readable system register
3670 // CHECK-ERROR-NEXT: mrs x9, DBGDTRTX_EL0
3671 // CHECK-ERROR-NEXT: ^
3672 // CHECK-ERROR-NEXT: error: expected readable system register
3673 // CHECK-ERROR-NEXT: mrs x9, OSLAR_EL1
3674 // CHECK-ERROR-NEXT: ^
3675 // CHECK-ERROR-NEXT: error: expected readable system register
3676 // CHECK-ERROR-NEXT: mrs x9, PMSWINC_EL0
3677 // CHECK-ERROR-NEXT: ^
3678 // CHECK-ERROR-NEXT: error: expected readable system register
3679 // CHECK-ERROR-NEXT: mrs x9, PMEVCNTR31_EL0
3680 // CHECK-ERROR-NEXT: ^
3681 // CHECK-ERROR-NEXT: error: expected readable system register
3682 // CHECK-ERROR-NEXT: mrs x9, PMEVTYPER31_EL0
3683 // CHECK-ERROR-NEXT: ^
3685 // Now check some invalid generic names
3686 mrs xzr, s2_5_c11_c13_2
3687 mrs x12, s3_8_c11_c13_2
3688 mrs x13, s3_3_c12_c13_2
3689 mrs x19, s3_2_c15_c16_2
3690 mrs x30, s3_2_c15_c1_8
3691 // CHECK-ERROR-NEXT: error: expected readable system register
3692 // CHECK-ERROR-NEXT: mrs xzr, s2_5_c11_c13_2
3693 // CHECK-ERROR-NEXT: ^
3694 // CHECK-ERROR-NEXT: error: expected readable system register
3695 // CHECK-ERROR-NEXT: mrs x12, s3_8_c11_c13_2
3696 // CHECK-ERROR-NEXT: ^
3697 // CHECK-ERROR-NEXT: error: expected readable system register
3698 // CHECK-ERROR-NEXT: mrs x13, s3_3_c12_c13_2
3699 // CHECK-ERROR-NEXT: ^
3700 // CHECK-ERROR-NEXT: error: expected readable system register
3701 // CHECK-ERROR-NEXT: mrs x19, s3_2_c15_c16_2
3702 // CHECK-ERROR-NEXT: ^
3703 // CHECK-ERROR-NEXT: error: expected readable system register
3704 // CHECK-ERROR-NEXT: mrs x30, s3_2_c15_c1_8
3705 // CHECK-ERROR-NEXT: ^
3707 //------------------------------------------------------------------------------
3708 // Test and branch (immediate)
3709 //------------------------------------------------------------------------------
3712 tbz w3, #32, nowhere
3715 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
3716 // CHECK-ERROR-NEXT: tbz w3, #-1, addr
3717 // CHECK-ERROR-NEXT: ^
3718 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
3719 // CHECK-ERROR-NEXT: tbz w3, #32, nowhere
3720 // CHECK-ERROR-NEXT: ^
3721 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
3722 // CHECK-ERROR-NEXT: tbz x9, #-1, there
3723 // CHECK-ERROR-NEXT: ^
3724 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
3725 // CHECK-ERROR-NEXT: tbz x20, #64, dont
3726 // CHECK-ERROR-NEXT: ^
3729 tbnz w3, #32, nowhere
3732 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
3733 // CHECK-ERROR-NEXT: tbnz w3, #-1, addr
3734 // CHECK-ERROR-NEXT: ^
3735 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
3736 // CHECK-ERROR-NEXT: tbnz w3, #32, nowhere
3737 // CHECK-ERROR-NEXT: ^
3738 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
3739 // CHECK-ERROR-NEXT: tbnz x9, #-1, there
3740 // CHECK-ERROR-NEXT: ^
3741 // CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
3742 // CHECK-ERROR-NEXT: tbnz x20, #64, dont
3744 //------------------------------------------------------------------------------
3745 // Unconditional branch (immediate)
3746 //------------------------------------------------------------------------------
3751 // CHECK-ERROR: error: expected label or encodable integer pc offset
3752 // CHECK-ERROR-NEXT: b #134217728
3753 // CHECK-ERROR-NEXT: ^
3754 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3755 // CHECK-ERROR-NEXT: b #-134217732
3756 // CHECK-ERROR-NEXT: ^
3757 // CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
3758 // CHECK-ERROR-NEXT: b #1
3759 // CHECK-ERROR-NEXT: ^
3761 //------------------------------------------------------------------------------
3762 // Unconditional branch (register)
3763 //------------------------------------------------------------------------------
3767 // CHECK-ERROR: error: invalid operand for instruction
3768 // CHECK-ERROR-NEXT: br w2
3769 // CHECK-ERROR-NEXT: ^
3770 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3771 // CHECK-ERROR-NEXT: br sp
3772 // CHECK-ERROR-NEXT: ^
3774 //// These ones shouldn't allow any registers
3777 // CHECK-ERROR: error: invalid operand for instruction
3778 // CHECK-ERROR-NEXT: eret x2
3779 // CHECK-ERROR-NEXT: ^
3780 // CHECK-ERROR-NEXT: error: invalid operand for instruction
3781 // CHECK-ERROR-NEXT: drps x2
3782 // CHECK-ERROR-NEXT: ^