AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64.
[oota-llvm.git] / test / MC / AArch64 / neon-diagnostics.s
1
2 // RUN: not llvm-mc -triple arm64-none-linux-gnu -mattr=+neon < %s 2> %t
3 // RUN: FileCheck --check-prefix=CHECK-ERROR --check-prefix=CHECK-ARM64-ERROR < %t %s
4
5 //------------------------------------------------------------------------------
6 // Vector Integer Add/sub
7 //------------------------------------------------------------------------------
8
9         // Mismatched vector types
10         add v0.16b, v1.8b, v2.8b
11         sub v0.2d, v1.2d, v2.2s
12
13 // CHECK-ERROR: error: invalid operand for instruction
14 // CHECK-ERROR:         add v0.16b, v1.8b, v2.8b
15 // CHECK-ERROR:                        ^
16 // CHECK-ERROR: error: invalid operand for instruction
17 // CHECK-ERROR:         sub v0.2d, v1.2d, v2.2s
18 // CHECK-ERROR:                              ^
19
20 //------------------------------------------------------------------------------
21 // Vector Floating-Point Add/sub
22 //------------------------------------------------------------------------------
23
24         // Mismatched and invalid vector types
25         fadd v0.2d, v1.2s, v2.2s
26         fsub v0.4s, v1.2s, v2.4s
27         fsub v0.8b, v1.8b, v2.8b
28
29 // CHECK-ERROR: error: invalid operand for instruction
30 // CHECK-ERROR:         fadd v0.2d, v1.2s, v2.2s
31 // CHECK-ERROR:                        ^
32 // CHECK-ERROR: error: invalid operand for instruction
33 // CHECK-ERROR:         fsub v0.4s, v1.2s, v2.4s
34 // CHECK-ERROR:                        ^
35 // CHECK-ERROR: error: invalid operand for instruction
36 // CHECK-ERROR:         fsub v0.8b, v1.8b, v2.8b
37 // CHECK-ERROR:                  ^
38
39 //----------------------------------------------------------------------
40 // Vector Integer Mul
41 //----------------------------------------------------------------------
42
43         // Mismatched and invalid vector types
44         mul v0.16b, v1.8b, v2.8b
45         mul v0.2d, v1.2d, v2.2d
46
47 // CHECK-ERROR: error: invalid operand for instruction
48 // CHECK-ERROR:         mul v0.16b, v1.8b, v2.8b
49 // CHECK-ERROR:                        ^
50 // CHECK-ERROR: error: invalid operand for instruction
51 // CHECK-ERROR:         mul v0.2d, v1.2d, v2.2d
52 // CHECK-ERROR:                ^
53
54 //----------------------------------------------------------------------
55 // Vector Floating-Point Mul/Div
56 //----------------------------------------------------------------------
57         // Mismatched vector types
58         fmul v0.16b, v1.8b, v2.8b
59         fdiv v0.2s, v1.2d, v2.2d
60
61 // CHECK-ERROR: error: invalid operand for instruction
62 // CHECK-ERROR:         fmul v0.16b, v1.8b, v2.8b
63 // CHECK-ERROR:                         ^
64 // CHECK-ERROR: error: invalid operand for instruction
65 // CHECK-ERROR:         fdiv v0.2s, v1.2d, v2.2d
66 // CHECK-ERROR:                        ^
67
68 //----------------------------------------------------------------------
69 // Vector And Orr Eor Bsl Bit Bif, Orn, Bic,
70 //----------------------------------------------------------------------
71         // Mismatched and invalid vector types
72         and v0.8b, v1.16b, v2.8b
73         orr v0.4h, v1.4h, v2.4h
74         eor v0.2s, v1.2s, v2.2s
75         bsl v0.8b, v1.16b, v2.8b
76         bsl v0.2s, v1.2s, v2.2s
77         bit v0.2d, v1.2d, v2.2d
78         bif v0.4h, v1.4h, v2.4h
79         orn v0.8b, v1.16b, v2.16b
80         bic v0.2d, v1.2d, v2.2d
81
82 // CHECK-ERROR: error: invalid operand for instruction
83 // CHECK-ERROR:         and v0.8b, v1.16b, v2.8b
84 // CHECK-ERROR:                       ^
85 // CHECK-ERROR: error: invalid operand for instruction
86 // CHECK-ERROR:         orr v0.4h, v1.4h, v2.4h
87 // CHECK-ERROR:                ^
88 // CHECK-ERROR: error: invalid operand for instruction
89 // CHECK-ERROR:         eor v0.2s, v1.2s, v2.2s
90 // CHECK-ERROR:                ^
91 // CHECK-ERROR: error: invalid operand for instruction
92 // CHECK-ERROR:         bsl v0.8b, v1.16b, v2.8b
93 // CHECK-ERROR:                       ^
94 // CHECK-ERROR: error: invalid operand for instruction
95 // CHECK-ERROR:         bsl v0.2s, v1.2s, v2.2s
96 // CHECK-ERROR:                ^
97 // CHECK-ERROR: error: invalid operand for instruction
98 // CHECK-ERROR:         bit v0.2d, v1.2d, v2.2d
99 // CHECK-ERROR:                ^
100 // CHECK-ERROR: error: invalid operand for instruction
101 // CHECK-ERROR:         bif v0.4h, v1.4h, v2.4h
102 // CHECK-ERROR:                ^
103 // CHECK-ERROR: error: invalid operand for instruction
104 // CHECK-ERROR:         orn v0.8b, v1.16b, v2.16b
105 // CHECK-ERROR:                        ^
106 // CHECK-ERROR: error: invalid operand for instruction
107 // CHECK-ERROR:         bic v0.2d, v1.2d, v2.2d
108 // CHECK-ERROR:                ^
109
110 //----------------------------------------------------------------------
111 // Vector Integer Multiply-accumulate and Multiply-subtract
112 //----------------------------------------------------------------------
113
114         // Mismatched and invalid vector types
115         mla v0.16b, v1.8b, v2.8b
116         mls v0.2d, v1.2d, v2.2d
117
118 // CHECK-ERROR: error: invalid operand for instruction
119 // CHECK-ERROR:         mla v0.16b, v1.8b, v2.8b
120 // CHECK-ERROR:                        ^
121 // CHECK-ERROR: error: invalid operand for instruction
122 // CHECK-ERROR:         mls v0.2d, v1.2d, v2.2d
123 // CHECK-ERROR:                ^
124
125 //----------------------------------------------------------------------
126 // Vector Floating-Point Multiply-accumulate and Multiply-subtract
127 //----------------------------------------------------------------------
128         // Mismatched vector types
129         fmla v0.2s, v1.2d, v2.2d
130         fmls v0.16b, v1.8b, v2.8b
131
132 // CHECK-ERROR: error: invalid operand for instruction
133 // CHECK-ERROR:         fmla v0.2s, v1.2d, v2.2d
134 // CHECK-ERROR:                        ^
135 // CHECK-ERROR: error: invalid operand for instruction
136 // CHECK-ERROR:         fmls v0.16b, v1.8b, v2.8b
137 // CHECK-ERROR:                         ^
138
139
140 //----------------------------------------------------------------------
141 // Vector Move Immediate Shifted
142 // Vector Move Inverted Immediate Shifted
143 // Vector Bitwise Bit Clear (AND NOT) - immediate
144 // Vector Bitwise OR - immedidate
145 //----------------------------------------------------------------------
146       // out of range immediate (0 to 0xff)
147       movi v0.2s, #-1
148       mvni v1.4s, #256
149       // out of range shift (0, 8, 16, 24 and 0, 8)
150       bic v15.4h, #1, lsl #7
151       orr v31.2s, #1, lsl #25
152       movi v5.4h, #10, lsl #16
153       // invalid vector type (2s, 4s, 4h, 8h)
154       movi v5.8b, #1, lsl #8
155
156 // CHECK-ERROR: error: invalid operand for instruction
157 // CHECK-ERROR:          movi v0.2s, #-1
158 // CHECK-ERROR:                      ^
159 // CHECK-ERROR: error: invalid operand for instruction
160 // CHECK-ERROR:         mvni v1.4s, #256
161 // CHECK-ERROR:                     ^
162 // CHECK-ERROR: error: invalid operand for instruction
163 // CHECK-ERROR:         bic v15.4h, #1, lsl #7
164 // CHECK-ERROR:                         ^
165 // CHECK-ERROR: error: invalid operand for instruction
166 // CHECK-ERROR:         orr v31.2s, #1, lsl #25
167 // CHECK-ERROR:                         ^
168 // CHECK-ERROR: error: invalid operand for instruction
169 // CHECK-ERROR:         movi v5.4h, #10, lsl #16
170 // CHECK-ERROR:                          ^
171 // CHECK-ERROR: error: invalid operand for instruction
172 // CHECK-ERROR:         movi v5.8b, #1, lsl #8
173 // CHECK-ERROR:                         ^
174 //----------------------------------------------------------------------
175 // Vector Move Immediate Masked
176 // Vector Move Inverted Immediate Masked
177 //----------------------------------------------------------------------
178       // out of range immediate (0 to 0xff)
179       movi v0.2s, #-1, msl #8
180       mvni v7.4s, #256, msl #16
181       // out of range shift (8, 16)
182       movi v3.2s, #1, msl #0
183       mvni v17.4s, #255, msl #32
184       // invalid vector type (2s, 4s)
185       movi v5.4h, #31, msl #8
186
187 // CHECK-ERROR: error: invalid operand for instruction
188 // CHECK-ERROR:         movi v0.2s, #-1, msl #8
189 // CHECK-ERROR:                     ^
190 // CHECK-ERROR: error: invalid operand for instruction
191 // CHECK-ERROR:         mvni v7.4s, #256, msl #16
192 // CHECK-ERROR:                     ^
193 // CHECK-ERROR: error: invalid operand for instruction
194 // CHECK-ERROR:         movi v3.2s, #1, msl #0
195 // CHECK-ERROR:                         ^
196 // CHECK-ERROR: error: invalid operand for instruction
197 // CHECK-ERROR:         mvni v17.4s, #255, msl #32
198 // CHECK-ERROR:                            ^
199 // CHECK-ERROR: error: invalid operand for instruction
200 // CHECK-ERROR:         movi v5.4h, #31, msl #8
201 // CHECK-ERROR:                          ^
202
203 //----------------------------------------------------------------------
204 // Vector Immediate - per byte
205 //----------------------------------------------------------------------
206         // out of range immediate (0 to 0xff)
207         movi v0.8b, #-1
208         movi v1.16b, #256
209
210 // CHECK-ERROR: error: invalid operand for instruction
211 // CHECK-ERROR:         movi v0.8b, #-1
212 // CHECK-ERROR:                     ^
213 // CHECK-ERROR: error: invalid operand for instruction
214 // CHECK-ERROR:         movi v1.16b, #256
215 // CHECK-ERROR:                      ^
216
217 //----------------------------------------------------------------------
218 // Scalar Floating-point Reciprocal Estimate
219 //----------------------------------------------------------------------
220
221     frecpe s19, h14
222     frecpe d13, s13
223
224 // CHECK-ERROR: error: invalid operand for instruction
225 // CHECK-ERROR:        frecpe s19, h14
226 // CHECK-ERROR:                    ^
227 // CHECK-ERROR: error: invalid operand for instruction
228 // CHECK-ERROR:        frecpe d13, s13
229 // CHECK-ERROR:                    ^
230
231 //----------------------------------------------------------------------
232 // Scalar Floating-point Reciprocal Exponent
233 //----------------------------------------------------------------------
234
235     frecpx s18, h10
236     frecpx d16, s19
237
238 // CHECK-ERROR: error: invalid operand for instruction
239 // CHECK-ERROR:        frecpx s18, h10
240 // CHECK-ERROR:                    ^
241 // CHECK-ERROR: error: invalid operand for instruction
242 // CHECK-ERROR:        frecpx d16, s19
243 // CHECK-ERROR:                    ^
244
245 //----------------------------------------------------------------------
246 // Scalar Floating-point Reciprocal Square Root Estimate
247 //----------------------------------------------------------------------
248
249     frsqrte s22, h13
250     frsqrte d21, s12
251
252 // CHECK-ERROR: error: invalid operand for instruction
253 // CHECK-ERROR:        frsqrte s22, h13
254 // CHECK-ERROR:                     ^
255 // CHECK-ERROR: error: invalid operand for instruction
256 // CHECK-ERROR:        frsqrte d21, s12
257 // CHECK-ERROR:                     ^
258
259 //----------------------------------------------------------------------
260 // Vector Move Immediate - bytemask, per doubleword
261 //---------------------------------------------------------------------
262         // invalid bytemask (0x00 or 0xff)
263         movi v0.2d, #0x10ff00ff00ff00ff
264
265 // CHECK:ERROR: error: invalid operand for instruction
266 // CHECK:ERROR:         movi v0.2d, #0x10ff00ff00ff00ff
267 // CHECK:ERROR:                     ^
268
269 //----------------------------------------------------------------------
270 // Vector Move Immediate - bytemask, one doubleword
271 //----------------------------------------------------------------------
272         // invalid bytemask (0x00 or 0xff)
273         movi v0.2d, #0xffff00ff001f00ff
274
275 // CHECK:ERROR: error: invalid operand for instruction
276 // CHECK:ERROR:         movi v0.2d, #0xffff00ff001f00ff
277 // CHECK:ERROR:                     ^
278 //----------------------------------------------------------------------
279 // Vector Floating Point Move Immediate
280 //----------------------------------------------------------------------
281         // invalid vector type (2s, 4s, 2d)
282          fmov v0.4h, #1.0
283
284 // CHECK:ERROR: error: invalid operand for instruction
285 // CHECK:ERROR:         fmov v0.4h, #1.0
286 // CHECK:ERROR:              ^
287
288 //----------------------------------------------------------------------
289 // Vector Move -  register
290 //----------------------------------------------------------------------
291       // invalid vector type (8b, 16b)
292       mov v0.2s, v31.8b
293 // CHECK:ERROR: error: invalid operand for instruction
294 // CHECK:ERROR:         mov v0.2s, v31.8b
295 // CHECK:ERROR:                ^
296
297 //----------------------------------------------------------------------
298 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
299 //----------------------------------------------------------------------
300
301         // Mismatched and invalid vector types (2d)
302         saba v0.16b, v1.8b, v2.8b
303         uaba v0.2d, v1.2d, v2.2d
304
305 // CHECK-ERROR: error: invalid operand for instruction
306 // CHECK-ERROR:         saba v0.16b, v1.8b, v2.8b
307 // CHECK-ERROR:                        ^
308 // CHECK-ERROR: error: invalid operand for instruction
309 // CHECK-ERROR:         uaba v0.2d, v1.2d, v2.2d
310 // CHECK-ERROR:                ^
311
312 //----------------------------------------------------------------------
313 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
314 // Vector Absolute Difference (Signed, Unsigned)
315
316         // Mismatched and invalid vector types (2d)
317         uaba v0.16b, v1.8b, v2.8b
318         saba v0.2d, v1.2d, v2.2d
319         uabd v0.4s, v1.2s, v2.2s
320         sabd v0.4h, v1.8h, v8.8h
321
322 // CHECK-ERROR: error: invalid operand for instruction
323 // CHECK-ERROR:         uaba v0.16b, v1.8b, v2.8b
324 // CHECK-ERROR:                        ^
325 // CHECK-ERROR: error: invalid operand for instruction
326 // CHECK-ERROR:         saba v0.2d, v1.2d, v2.2d
327 // CHECK-ERROR:                ^
328 // CHECK-ERROR: error: invalid operand for instruction
329 // CHECK-ERROR:         uabd v0.4s, v1.2s, v2.2s
330 // CHECK-ERROR:                        ^
331 // CHECK-ERROR: error: invalid operand for instruction
332 // CHECK-ERROR:         sabd v0.4h, v1.8h, v8.8h
333 // CHECK-ERROR:                        ^
334
335 //----------------------------------------------------------------------
336 // Vector Absolute Difference (Floating Point)
337 //----------------------------------------------------------------------
338         // Mismatched and invalid vector types
339         fabd v0.2s, v1.4s, v2.2d
340         fabd v0.4h, v1.4h, v2.4h
341
342 // CHECK-ERROR: error: invalid operand for instruction
343 // CHECK-ERROR:         fabd v0.2s, v1.4s, v2.2d
344 // CHECK-ERROR:                        ^
345 // CHECK-ERROR: error: invalid operand for instruction
346 // CHECK-ERROR:         fabd v0.4h, v1.4h, v2.4h
347 // CHECK-ERROR:                 ^
348 //----------------------------------------------------------------------
349 // Vector Multiply (Polynomial)
350 //----------------------------------------------------------------------
351
352         // Mismatched and invalid vector types
353          pmul v0.8b, v1.8b, v2.16b
354          pmul v0.2s, v1.2s, v2.2s
355
356 // CHECK-ERROR: error: invalid operand for instruction
357 // CHECK-ERROR:         pmul v0.8b, v1.8b, v2.16b
358 // CHECK-ERROR:                               ^
359 // CHECK-ERROR: error: invalid operand for instruction
360 // CHECK-ERROR:         pmul v0.2s, v1.2s, v2.2s
361 // CHECK-ERROR:                 ^
362
363 //----------------------------------------------------------------------
364 // Scalar Integer Add and Sub
365 //----------------------------------------------------------------------
366
367       // Mismatched registers
368          add d0, s1, d2
369          sub s1, d1, d2
370
371 // CHECK-ERROR: error: invalid operand for instruction
372 // CHECK-ERROR:         add d0, s1, d2
373 // CHECK-ERROR:                 ^
374 // CHECK-ERROR: error: invalid operand for instruction
375 // CHECK-ERROR:         sub s1, d1, d2
376 // CHECK-ERROR:             ^
377
378 //----------------------------------------------------------------------
379 // Vector Reciprocal Step (Floating Point)
380 //----------------------------------------------------------------------
381
382         // Mismatched and invalid vector types
383          frecps v0.4s, v1.2d, v2.4s
384          frecps v0.8h, v1.8h, v2.8h
385
386 // CHECK-ERROR: error: invalid operand for instruction
387 // CHECK-ERROR:        frecps v0.4s, v1.2d, v2.4s
388 // CHECK-ERROR:                         ^
389 // CHECK-ERROR: error: invalid operand for instruction
390 // CHECK-ERROR:        frecps v0.8h, v1.8h, v2.8h
391 // CHECK-ERROR:                  ^
392
393 //----------------------------------------------------------------------
394 // Vector Reciprocal Square Root Step (Floating Point)
395 //----------------------------------------------------------------------
396
397         // Mismatched and invalid vector types
398          frsqrts v0.2d, v1.2d, v2.2s
399          frsqrts v0.4h, v1.4h, v2.4h
400
401 // CHECK-ERROR: error: invalid operand for instruction
402 // CHECK-ERROR:        frsqrts v0.2d, v1.2d, v2.2s
403 // CHECK-ERROR:                                 ^
404 // CHECK-ERROR: error: invalid operand for instruction
405 // CHECK-ERROR:        frsqrts v0.4h, v1.4h, v2.4h
406 // CHECK-ERROR:                   ^
407
408
409 //----------------------------------------------------------------------
410 // Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
411 //----------------------------------------------------------------------
412
413         // Mismatched and invalid vector types
414         facge v0.2d, v1.2s, v2.2d
415         facge v0.4h, v1.4h, v2.4h
416         facle v0.8h, v1.4h, v2.4h
417
418 // CHECK-ERROR: error: invalid operand for instruction
419 // CHECK-ERROR:        facge v0.2d, v1.2s, v2.2d
420 // CHECK-ERROR:                        ^
421 // CHECK-ERROR: error: invalid operand for instruction
422 // CHECK-ERROR:        facge v0.4h, v1.4h, v2.4h
423 // CHECK-ERROR:                 ^
424 // CHECK-ERROR: error: invalid operand for instruction
425 // CHECK-ERROR:        facle v0.8h, v1.4h, v2.4h
426 // CHECK-ERROR:                 ^
427 //----------------------------------------------------------------------
428 // Vector Absolute Compare Mask Less Than (Floating Point)
429 //----------------------------------------------------------------------
430
431         // Mismatched and invalid vector types
432         facgt v0.2d, v1.2d, v2.4s
433         facgt v0.8h, v1.8h, v2.8h
434         faclt v0.8b, v1.8b, v2.8b
435
436 // CHECK-ERROR: error: invalid operand for instruction
437 // CHECK-ERROR:        facgt v0.2d, v1.2d, v2.4s
438 // CHECK-ERROR:                               ^
439 // CHECK-ERROR: error: invalid operand for instruction
440 // CHECK-ERROR:        facgt v0.8h, v1.8h, v2.8h
441 // CHECK-ERROR:                 ^
442 // CHECK-ERROR: error: invalid operand for instruction
443 // CHECK-ERROR:        faclt v0.8b, v1.8b, v2.8b
444 // CHECK-ERROR:                 ^
445
446
447 //----------------------------------------------------------------------
448 // Vector Compare Mask Equal (Integer)
449 //----------------------------------------------------------------------
450
451          // Mismatched vector types
452          cmeq c0.2d, v1.2d, v2.2s
453
454 // CHECK-ERROR: error: invalid operand for instruction
455 // CHECK-ERROR:        cmeq c0.2d, v1.2d, v2.2s
456 // CHECK-ERROR:                              ^
457
458 //----------------------------------------------------------------------
459 // Vector Compare Mask Higher or Same (Unsigned Integer)
460 // Vector Compare Mask Less or Same (Unsigned Integer)
461 // CMLS is alias for CMHS with operands reversed.
462 //----------------------------------------------------------------------
463
464          // Mismatched vector types
465          cmhs c0.4h, v1.8b, v2.8b
466          cmls c0.16b, v1.16b, v2.2d
467
468 // CHECK-ERROR: error: invalid operand for instruction
469 // CHECK-ERROR:        cmhs c0.4h, v1.8b, v2.8b
470 // CHECK-ERROR:                       ^
471 // CHECK-ERROR: error: invalid operand for instruction
472 // CHECK-ERROR:        cmls c0.16b, v1.16b, v2.2d
473 // CHECK-ERROR:                                ^
474
475 //----------------------------------------------------------------------
476 // Vector Compare Mask Greater Than or Equal (Integer)
477 // Vector Compare Mask Less Than or Equal (Integer)
478 // CMLE is alias for CMGE with operands reversed.
479 //----------------------------------------------------------------------
480
481          // Mismatched vector types
482          cmge c0.8h, v1.8b, v2.8b
483          cmle c0.4h, v1.2s, v2.2s
484
485 // CHECK-ERROR: error: invalid operand for instruction
486 // CHECK-ERROR:        cmge c0.8h, v1.8b, v2.8b
487 // CHECK-ERROR:                       ^
488 // CHECK-ERROR: error: invalid operand for instruction
489 // CHECK-ERROR:         cmle c0.4h, v1.2s, v2.2s
490 // CHECK-ERROR:                        ^
491
492 //----------------------------------------------------------------------
493 // Vector Compare Mask Higher (Unsigned Integer)
494 // Vector Compare Mask Lower (Unsigned Integer)
495 // CMLO is alias for CMHI with operands reversed.
496 //----------------------------------------------------------------------
497
498          // Mismatched vector types
499          cmhi c0.4s, v1.4s, v2.16b
500          cmlo c0.8b, v1.8b, v2.2s
501
502 // CHECK-ERROR: error: invalid operand for instruction
503 // CHECK-ERROR:        cmhi c0.4s, v1.4s, v2.16b
504 // CHECK-ERROR:                              ^
505 // CHECK-ERROR: error: invalid operand for instruction
506 // CHECK-ERROR:         cmlo c0.8b, v1.8b, v2.2s
507 // CHECK-ERROR:                               ^
508
509 //----------------------------------------------------------------------
510 // Vector Compare Mask Greater Than (Integer)
511 // Vector Compare Mask Less Than (Integer)
512 // CMLT is alias for CMGT with operands reversed.
513 //----------------------------------------------------------------------
514
515          // Mismatched vector types
516          cmgt c0.8b, v1.4s, v2.16b
517          cmlt c0.8h, v1.16b, v2.4s
518
519 // CHECK-ERROR: error: invalid operand for instruction
520 // CHECK-ERROR:         cmgt c0.8b, v1.4s, v2.16b
521 // CHECK-ERROR:                        ^
522 // CHECK-ERROR: error: invalid operand for instruction
523 // CHECK-ERROR:         cmlt c0.8h, v1.16b, v2.4s
524 // CHECK-ERROR:                        ^
525
526 //----------------------------------------------------------------------
527 // Vector Compare Mask Bitwise Test (Integer)
528 //----------------------------------------------------------------------
529
530          // Mismatched vector types
531          cmtst c0.16b, v1.16b, v2.4s
532
533 // CHECK-ERROR: error: invalid operand for instruction
534 // CHECK-ERROR:         cmtst c0.16b, v1.16b, v2.4s
535 // CHECK-ERROR:                                  ^
536
537 //----------------------------------------------------------------------
538 // Vector Compare Mask Equal (Floating Point)
539 //----------------------------------------------------------------------
540
541         // Mismatched and invalid vector types
542         fcmeq v0.2d, v1.2s, v2.2d
543         fcmeq v0.16b, v1.16b, v2.16b
544         fcmeq v0.8b, v1.4h, v2.4h
545
546 // CHECK-ERROR: error: invalid operand for instruction
547 // CHECK-ERROR:        fcmeq v0.2d, v1.2s, v2.2d
548 // CHECK-ERROR:                        ^
549 // CHECK-ERROR: error: invalid operand for instruction
550 // CHECK-ERROR:        fcmeq v0.16b, v1.16b, v2.16b
551 // CHECK-ERROR:                 ^
552 // CHECK-ERROR: error: invalid operand for instruction
553 // CHECK-ERROR:        fcmeq v0.8b, v1.4h, v2.4h
554 // CHECK-ERROR:                 ^
555
556 //----------------------------------------------------------------------
557 // Vector Compare Mask Greater Than Or Equal (Floating Point)
558 // Vector Compare Mask Less Than Or Equal (Floating Point)
559 // FCMLE is alias for FCMGE with operands reversed.
560 //----------------------------------------------------------------------
561
562         // Mismatched and invalid vector types
563          fcmge v31.4s, v29.2s, v28.4s
564          fcmge v3.8b, v8.2s, v12.2s
565          fcmle v17.8h, v15.2d, v13.2d
566
567 // CHECK-ERROR: error: invalid operand for instruction
568 // CHECK-ERROR:        fcmge v31.4s, v29.2s, v28.4s
569 // CHECK-ERROR:                          ^
570 // CHECK-ERROR: error: invalid operand for instruction
571 // CHECK-ERROR:        fcmge v3.8b, v8.2s, v12.2s
572 // CHECK-ERROR:                 ^
573 // CHECK-ERROR: error: invalid operand for instruction
574 // CHECK-ERROR:        fcmle v17.8h, v15.2d, v13.2d
575 // CHECK-ERROR:                 ^
576
577 //----------------------------------------------------------------------
578 // Vector Compare Mask Greater Than (Floating Point)
579 // Vector Compare Mask Less Than (Floating Point)
580 // FCMLT is alias for FCMGT with operands reversed.
581 //----------------------------------------------------------------------
582
583         // Mismatched and invalid vector types
584          fcmgt v0.2d, v31.2s, v16.2s
585          fcmgt v4.4s, v7.4s, v15.4h
586          fcmlt v29.2d, v5.2d, v2.16b
587
588 // CHECK-ERROR: error: invalid operand for instruction
589 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, v16.2s
590 // CHECK-ERROR:                         ^
591
592 // CHECK-ARM64-ERROR: error: invalid operand for instruction
593 // CHECK-ARM64-ERROR:        fcmgt v4.4s, v7.4s, v15.4h
594 // CHECK-ARM64-ERROR:                                ^
595 // CHECK-ARM64-ERROR: error: invalid operand for instruction
596 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, v2.16b
597 // CHECK-ARM64-ERROR:                                ^
598
599 //----------------------------------------------------------------------
600 // Vector Compare Mask Equal to Zero (Integer)
601 //----------------------------------------------------------------------
602         // Mismatched vector types and invalid imm
603          // Mismatched vector types
604          cmeq c0.2d, v1.2s, #0
605          cmeq c0.2d, v1.2d, #1
606
607 // CHECK-ERROR: error: invalid operand for instruction
608 // CHECK-ERROR:        cmeq c0.2d, v1.2s, #0
609 // CHECK-ERROR:                       ^
610 // CHECK-ERROR: error: invalid operand for instruction
611 // CHECK-ERROR:        cmeq c0.2d, v1.2d, #1
612 // CHECK-ERROR:                            ^
613
614 //----------------------------------------------------------------------
615 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
616 //----------------------------------------------------------------------
617         // Mismatched vector types and invalid imm
618          cmge c0.8h, v1.8b, #0
619          cmge c0.4s, v1.4s, #-1
620
621 // CHECK-ERROR: error: invalid operand for instruction
622 // CHECK-ERROR:        cmge c0.8h, v1.8b, #0
623 // CHECK-ERROR:                       ^
624 // CHECK-ERROR: error: invalid operand for instruction
625 // CHECK-ERROR:         cmge c0.4s, v1.4s, #-1
626 // CHECK-ERROR:                             ^
627
628 //----------------------------------------------------------------------
629 // Vector Compare Mask Greater Than Zero (Signed Integer)
630 //----------------------------------------------------------------------
631         // Mismatched vector types and invalid imm
632          cmgt c0.8b, v1.4s, #0
633          cmgt c0.8b, v1.8b, #-255
634
635 // CHECK-ERROR: error: invalid operand for instruction
636 // CHECK-ERROR:         cmgt c0.8b, v1.4s, #0
637 // CHECK-ERROR:                        ^
638 // CHECK-ERROR: error: invalid operand for instruction
639 // CHECK-ERROR:         cmgt c0.8b, v1.8b, #-255
640 // CHECK-ERROR:                             ^
641
642 //----------------------------------------------------------------------
643 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
644 //----------------------------------------------------------------------
645         // Mismatched vector types and invalid imm
646          cmle c0.4h, v1.2s, #0
647          cmle c0.16b, v1.16b, #16
648
649 // CHECK-ERROR: error: invalid operand for instruction
650 // CHECK-ERROR:        cmle c0.4h, v1.2s, #0
651 // CHECK-ERROR:                       ^
652 // CHECK-ERROR: error: invalid operand for instruction
653 // CHECK-ERROR:         cmle c0.16b, v1.16b, #16
654 // CHECK-ERROR:                               ^
655 //----------------------------------------------------------------------
656 // Vector Compare Mask Less Than Zero (Signed Integer)
657 //----------------------------------------------------------------------
658         // Mismatched vector types and invalid imm
659          cmlt c0.8h, v1.16b, #0
660          cmlt c0.8h, v1.8h, #-15
661
662 // CHECK-ERROR: error: invalid operand for instruction
663 // CHECK-ERROR:         cmlt c0.8h, v1.16b, #0
664 // CHECK-ERROR:                        ^
665 // CHECK-ERROR: error: invalid operand for instruction
666 // CHECK-ERROR:         cmlt c0.8h, v1.8h, #-15
667 // CHECK-ERROR:                             ^
668
669 //----------------------------------------------------------------------
670 // Vector Compare Mask Equal to Zero (Floating Point)
671 //----------------------------------------------------------------------
672
673         // Mismatched and invalid vector types, invalid imm
674         fcmeq v0.2d, v1.2s, #0.0
675         fcmeq v0.16b, v1.16b, #0.0
676         fcmeq v0.8b, v1.4h, #1.0
677         fcmeq v0.8b, v1.4h, #1
678
679 // CHECK-ERROR: error: invalid operand for instruction
680 // CHECK-ERROR:        fcmeq v0.2d, v1.2s, #0.0
681 // CHECK-ERROR:                        ^
682 // CHECK-ERROR: error: invalid operand for instruction
683 // CHECK-ERROR:        fcmeq v0.16b, v1.16b, #0.0
684 // CHECK-ERROR:                 ^
685
686
687 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
688 // CHECK-ARM64-ERROR:        fcmeq v0.8b, v1.4h, #1.0
689 // CHECK-ARM64-ERROR:                             ^
690 // CHECK-ARM64-ERROR: error: invalid operand for instruction
691 // CHECK-ARM64-ERROR:        fcmeq v0.8b, v1.4h, #1
692 // CHECK-ARM64-ERROR:                             ^
693
694 //----------------------------------------------------------------------
695 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
696 //----------------------------------------------------------------------
697
698         // Mismatched and invalid vector types, invalid imm
699          fcmge v31.4s, v29.2s, #0.0
700          fcmge v3.8b, v8.2s, #0.0
701          fcmle v17.8h, v15.2d, #-1.0
702          fcmle v17.8h, v15.2d, #2
703
704 // CHECK-ERROR: error: invalid operand for instruction
705 // CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
706 // CHECK-ERROR:                          ^
707 // CHECK-ERROR: error: invalid operand for instruction
708 // CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
709 // CHECK-ERROR:                 ^
710
711
712 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
713 // CHECK-ARM64-ERROR:        fcmle v17.8h, v15.2d, #-1.0
714 // CHECK-ARM64-ERROR:                               ^
715 // CHECK-ARM64-ERROR: error: invalid operand for instruction
716 // CHECK-ARM64-ERROR:        fcmle v17.8h, v15.2d, #2
717 // CHECK-ARM64-ERROR:                               ^
718
719 //----------------------------------------------------------------------
720 // Vector Compare Mask Greater Than Zero (Floating Point)
721 //----------------------------------------------------------------------
722         // Mismatched and invalid vector types, invalid imm
723          fcmgt v0.2d, v31.2s, #0.0
724          fcmgt v4.4s, v7.4h, #0.0
725          fcmlt v29.2d, v5.2d, #255.0
726          fcmlt v29.2d, v5.2d, #255
727
728 // CHECK-ERROR: error: invalid operand for instruction
729 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
730 // CHECK-ERROR:                         ^
731 // CHECK-ERROR: error: invalid operand for instruction
732 // CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
733 // CHECK-ERROR:                        ^
734
735
736 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
737 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, #255.0
738 // CHECK-ARM64-ERROR:                              ^
739 // CHECK-ARM64-ERROR: error: invalid operand for instruction
740 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, #255
741 // CHECK-ARM64-ERROR:                              ^
742
743 //----------------------------------------------------------------------
744 // Vector Compare Mask Less Than or Equal To Zero (Floating Point)
745 //----------------------------------------------------------------------
746         // Mismatched and invalid vector types, invalid imm
747          fcmge v31.4s, v29.2s, #0.0
748          fcmge v3.8b, v8.2s, #0.0
749          fcmle v17.2d, v15.2d, #15.0
750          fcmle v17.2d, v15.2d, #15
751
752 // CHECK-ERROR: error: invalid operand for instruction
753 // CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
754 // CHECK-ERROR:                          ^
755 // CHECK-ERROR: error: invalid operand for instruction
756 // CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
757 // CHECK-ERROR:                 ^
758
759
760 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
761 // CHECK-ARM64-ERROR:        fcmle v17.2d, v15.2d, #15.0
762 // CHECK-ARM64-ERROR:                               ^
763 // CHECK-ARM64-ERROR: error: invalid operand for instruction
764 // CHECK-ARM64-ERROR:        fcmle v17.2d, v15.2d, #15
765 // CHECK-ARM64-ERROR:                              ^
766
767 //----------------------------------------------------------------------
768 // Vector Compare Mask Less Than Zero (Floating Point)
769 //----------------------------------------------------------------------
770         // Mismatched and invalid vector types, invalid imm
771          fcmgt v0.2d, v31.2s, #0.0
772          fcmgt v4.4s, v7.4h, #0.0
773          fcmlt v29.2d, v5.2d, #16.0
774          fcmlt v29.2d, v5.2d, #2
775
776 // CHECK-ERROR: error: invalid operand for instruction
777 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
778 // CHECK-ERROR:                         ^
779 // CHECK-ERROR: error: invalid operand for instruction
780 // CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
781 // CHECK-ERROR:                        ^
782
783
784 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
785 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, #16.0
786 // CHECK-ARM64-ERROR:                              ^
787 // CHECK-ARM64-ERROR: error: invalid operand for instruction
788 // CHECK-ARM64-ERROR:        fcmlt v29.2d, v5.2d, #2
789 // CHECK-ARM64-ERROR:                              ^
790
791 /-----------------------------------------------------------------------
792 // Vector Integer Halving Add (Signed)
793 // Vector Integer Halving Add (Unsigned)
794 // Vector Integer Halving Sub (Signed)
795 // Vector Integer Halving Sub (Unsigned)
796 //----------------------------------------------------------------------
797         // Mismatched and invalid vector types (2d)
798         shadd v0.2d, v1.2d, v2.2d
799         uhadd v4.2s, v5.2s, v5.4h
800         shsub v11.4h, v12.8h, v13.4h
801         uhsub v31.16b, v29.8b, v28.8b
802
803 // CHECK-ERROR: error: invalid operand for instruction
804 // CHECK-ERROR:        shadd v0.2d, v1.2d, v2.2d
805 // CHECK-ERROR:                 ^
806 // CHECK-ERROR: error: invalid operand for instruction
807 // CHECK-ERROR:        uhadd v4.2s, v5.2s, v5.4h
808 // CHECK-ERROR:                               ^
809 // CHECK-ERROR: error: invalid operand for instruction
810 // CHECK-ERROR:        shsub v11.4h, v12.8h, v13.4h
811 // CHECK-ERROR:                          ^
812 // CHECK-ERROR: error: invalid operand for instruction
813 // CHECK-ERROR:        uhsub v31.16b, v29.8b, v28.8b
814 // CHECK-ERROR:                          ^
815
816 //----------------------------------------------------------------------
817 // Vector Integer Rouding Halving Add (Signed)
818 // Vector Integer Rouding Halving Add (Unsigned)
819 //----------------------------------------------------------------------
820
821         // Mismatched and invalid vector types (2d)
822         srhadd v0.2s, v1.2s, v2.2d
823         urhadd v0.16b, v1.16b, v2.8h
824
825 // CHECK-ERROR: error: invalid operand for instruction
826 // CHECK-ERROR:        srhadd v0.2s, v1.2s, v2.2d
827 // CHECK-ERROR:                                ^
828 // CHECK-ERROR: error: invalid operand for instruction
829 // CHECK-ERROR:        urhadd v0.16b, v1.16b, v2.8h
830 // CHECK-ERROR:                                  ^
831
832 //----------------------------------------------------------------------
833 // Vector Integer Saturating Add (Signed)
834 // Vector Integer Saturating Add (Unsigned)
835 // Vector Integer Saturating Sub (Signed)
836 // Vector Integer Saturating Sub (Unsigned)
837 //----------------------------------------------------------------------
838
839         // Mismatched vector types
840         sqadd v0.2s, v1.2s, v2.2d
841         uqadd v31.8h, v1.4h, v2.4h
842         sqsub v10.8h, v1.16b, v2.16b
843         uqsub v31.8b, v1.8b, v2.4s
844
845 // CHECK-ERROR: error: invalid operand for instruction
846 // CHECK-ERROR:        sqadd v0.2s, v1.2s, v2.2d
847 // CHECK-ERROR:                               ^
848 // CHECK-ERROR: error: invalid operand for instruction
849 // CHECK-ERROR:        uqadd v31.8h, v1.4h, v2.4h
850 // CHECK-ERROR:                         ^
851 // CHECK-ERROR: error: invalid operand for instruction
852 // CHECK-ERROR:        sqsub v10.8h, v1.16b, v2.16b
853 // CHECK-ERROR:                         ^
854 // CHECK-ERROR: error: invalid operand for instruction
855 // CHECK-ERROR:        uqsub v31.8b, v1.8b, v2.4s
856 // CHECK-ERROR:                                ^
857
858 //----------------------------------------------------------------------
859 // Scalar Integer Saturating Add (Signed)
860 // Scalar Integer Saturating Add (Unsigned)
861 // Scalar Integer Saturating Sub (Signed)
862 // Scalar Integer Saturating Sub (Unsigned)
863 //----------------------------------------------------------------------
864
865       // Mismatched registers
866          sqadd d0, s31, d2
867          uqadd s0, s1, d2
868          sqsub b0, b2, s18
869          uqsub h1, h2, d2
870
871 // CHECK-ERROR: error: invalid operand for instruction
872 // CHECK-ERROR:        sqadd d0, s31, d2
873 // CHECK-ERROR:                  ^
874 // CHECK-ERROR: error: invalid operand for instruction
875 // CHECK-ERROR:        uqadd s0, s1, d2
876 // CHECK-ERROR:                      ^
877 // CHECK-ERROR: error: invalid operand for instruction
878 // CHECK-ERROR:        sqsub b0, b2, s18
879 // CHECK-ERROR:                      ^
880 // CHECK-ERROR: error: invalid operand for instruction
881 // CHECK-ERROR:        uqsub h1, h2, d2
882 // CHECK-ERROR:                      ^
883
884 //----------------------------------------------------------------------
885 // Scalar Integer Saturating Doubling Multiply Half High (Signed)
886 //----------------------------------------------------------------------
887
888     sqdmulh h10, s11, h12
889     sqdmulh s20, h21, s2
890
891 // CHECK-ERROR: error: invalid operand for instruction
892 // CHECK-ERROR:        sqdmulh h10, s11, h12
893 // CHECK-ERROR:                     ^
894 // CHECK-ERROR: error: invalid operand for instruction
895 // CHECK-ERROR:        sqdmulh s20, h21, s2
896 // CHECK-ERROR:                     ^
897
898 //------------------------------------------------------------------------
899 // Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed)
900 //------------------------------------------------------------------------
901
902     sqrdmulh h10, s11, h12
903     sqrdmulh s20, h21, s2
904
905 // CHECK-ERROR: error: invalid operand for instruction
906 // CHECK-ERROR:        sqrdmulh h10, s11, h12
907 // CHECK-ERROR:                      ^
908 // CHECK-ERROR: error: invalid operand for instruction
909 // CHECK-ERROR:        sqrdmulh s20, h21, s2
910 // CHECK-ERROR:                      ^
911
912 //----------------------------------------------------------------------
913 // Vector Shift Left (Signed and Unsigned Integer)
914 //----------------------------------------------------------------------
915         // Mismatched vector types
916         sshl v0.4s, v15.2s, v16.2s
917         ushl v1.16b, v25.16b, v6.8h
918
919 // CHECK-ERROR: error: invalid operand for instruction
920 // CHECK-ERROR:        sshl v0.4s, v15.2s, v16.2s
921 // CHECK-ERROR:                        ^
922 // CHECK-ERROR: error: invalid operand for instruction
923 // CHECK-ERROR:        ushl v1.16b, v25.16b, v6.8h
924 // CHECK-ERROR:                                 ^
925
926 //----------------------------------------------------------------------
927 // Vector Saturating Shift Left (Signed and Unsigned Integer)
928 //----------------------------------------------------------------------
929         // Mismatched vector types
930         sqshl v0.2s, v15.4s, v16.2d
931         uqshl v1.8b, v25.4h, v6.8h
932
933 // CHECK-ERROR: error: invalid operand for instruction
934 // CHECK-ERROR:        sqshl v0.2s, v15.4s, v16.2d 
935 // CHECK-ERROR:                         ^
936 // CHECK-ERROR: error: invalid operand for instruction
937 // CHECK-ERROR:        uqshl v1.8b, v25.4h, v6.8h
938 // CHECK-ERROR:                         ^
939
940 //----------------------------------------------------------------------
941 // Vector Rouding Shift Left (Signed and Unsigned Integer)
942 //----------------------------------------------------------------------
943         // Mismatched vector types
944         srshl v0.8h, v15.8h, v16.16b
945         urshl v1.2d, v25.2d, v6.4s
946
947 // CHECK-ERROR: error: invalid operand for instruction
948 // CHECK-ERROR:        srshl v0.8h, v15.8h, v16.16b
949 // CHECK-ERROR:                                 ^
950 // CHECK-ERROR: error: invalid operand for instruction
951 // CHECK-ERROR:        urshl v1.2d, v25.2d, v6.4s
952 // CHECK-ERROR:                                ^
953
954 //----------------------------------------------------------------------
955 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
956 //----------------------------------------------------------------------
957         // Mismatched vector types
958         sqrshl v0.2s, v15.8h, v16.16b
959         uqrshl v1.4h, v25.4h,  v6.2d
960
961 // CHECK-ERROR: error: invalid operand for instruction
962 // CHECK-ERROR:        sqrshl v0.2s, v15.8h, v16.16b
963 // CHECK-ERROR:                          ^
964 // CHECK-ERROR: error: invalid operand for instruction
965 // CHECK-ERROR:        uqrshl v1.4h, v25.4h,  v6.2d
966 // CHECK-ERROR:                                  ^
967
968 //----------------------------------------------------------------------
969 // Scalar Integer Shift Left (Signed, Unsigned)
970 //----------------------------------------------------------------------
971         // Mismatched and invalid vector types
972         sshl d0, d1, s2
973         ushl b2, b0, b1
974
975 // CHECK-ERROR: error: invalid operand for instruction
976 // CHECK-ERROR:        sshl d0, d1, s2
977 // CHECK-ERROR:                     ^
978 // CHECK-ERROR: error: invalid operand for instruction
979 // CHECK-ERROR:        ushl b2, b0, b1
980 // CHECK-ERROR:             ^
981
982 //----------------------------------------------------------------------
983 // Scalar Integer Saturating Shift Left (Signed, Unsigned)
984 //----------------------------------------------------------------------
985
986         // Mismatched vector types
987         sqshl b0, s1, b0
988         uqshl h0, b1, h0
989         sqshl s0, h1, s0
990         uqshl d0, b1, d0
991
992 // CHECK-ERROR: error: invalid operand for instruction
993 // CHECK-ERROR:        sqshl b0, s1, b0
994 // CHECK-ERROR:                  ^
995 // CHECK-ERROR: error: invalid operand for instruction
996 // CHECK-ERROR:        uqshl h0, b1, h0
997 // CHECK-ERROR:                  ^
998 // CHECK-ERROR: error: invalid operand for instruction
999 // CHECK-ERROR:        sqshl s0, h1, s0
1000 // CHECK-ERROR:                  ^
1001 // CHECK-ERROR: error: invalid operand for instruction
1002 // CHECK-ERROR:        uqshl d0, b1, d0
1003 // CHECK-ERROR:                  ^
1004
1005 //----------------------------------------------------------------------
1006 // Scalar Integer Rouding Shift Left (Signed, Unsigned)
1007 //----------------------------------------------------------------------
1008         // Mismatched and invalid vector types
1009         srshl h0, h1, h2
1010         urshl s0, s1, s2
1011
1012 // CHECK-ERROR: error: invalid operand for instruction
1013 // CHECK-ERROR:        srshl h0, h1, h2
1014 // CHECK-ERROR:              ^
1015 // CHECK-ERROR: error: invalid operand for instruction
1016 // CHECK-ERROR:        urshl s0, s1, s2
1017 // CHECK-ERROR:              ^
1018
1019
1020 //----------------------------------------------------------------------
1021 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
1022 //----------------------------------------------------------------------
1023
1024         // Mismatched vector types
1025         sqrshl b0, b1, s0
1026         uqrshl h0, h1, b0
1027         sqrshl s0, s1, h0
1028         uqrshl d0, d1, b0
1029
1030 // CHECK-ERROR: error: invalid operand for instruction
1031 // CHECK-ERROR:        sqrshl b0, b1, s0
1032 // CHECK-ERROR:                       ^
1033 // CHECK-ERROR: error: invalid operand for instruction
1034 // CHECK-ERROR:        uqrshl h0, h1, b0
1035 // CHECK-ERROR:                       ^
1036 // CHECK-ERROR: error: invalid operand for instruction
1037 // CHECK-ERROR:        sqrshl s0, s1, h0
1038 // CHECK-ERROR:                       ^
1039 // CHECK-ERROR: error: invalid operand for instruction
1040 // CHECK-ERROR:        uqrshl d0, d1, b0
1041 // CHECK-ERROR:                       ^
1042
1043
1044 //----------------------------------------------------------------------
1045 // Vector Maximum (Signed, Unsigned)
1046 //----------------------------------------------------------------------
1047         // Mismatched and invalid vector types
1048         smax v0.2d, v1.2d, v2.2d
1049         umax v0.4h, v1.4h, v2.2s
1050
1051 // CHECK-ERROR: error: invalid operand for instruction
1052 // CHECK-ERROR:        smax v0.2d, v1.2d, v2.2d
1053 // CHECK-ERROR:                ^
1054 // CHECK-ERROR: error: invalid operand for instruction
1055 // CHECK-ERROR:        umax v0.4h, v1.4h, v2.2s
1056 // CHECK-ERROR:                              ^
1057
1058 //----------------------------------------------------------------------
1059 // Vector Minimum (Signed, Unsigned)
1060 //----------------------------------------------------------------------
1061         // Mismatched and invalid vector types
1062         smin v0.2d, v1.2d, v2.2d
1063         umin v0.2s, v1.2s, v2.8b
1064
1065 // CHECK-ERROR: error: invalid operand for instruction
1066 // CHECK-ERROR:        smin v0.2d, v1.2d, v2.2d
1067 // CHECK-ERROR:                ^
1068 // CHECK-ERROR: error: invalid operand for instruction
1069 // CHECK-ERROR:        umin v0.2s, v1.2s, v2.8b
1070 // CHECK-ERROR:                             ^
1071
1072
1073 //----------------------------------------------------------------------
1074 // Vector Maximum (Floating Point)
1075 //----------------------------------------------------------------------
1076         // Mismatched and invalid vector types
1077         fmax v0.2s, v1.2s, v2.4s
1078         fmax v0.8b, v1.8b, v2.8b
1079
1080 // CHECK-ERROR: error: invalid operand for instruction
1081 // CHECK-ERROR:        fmax v0.2s, v1.2s, v2.4s
1082 // CHECK-ERROR:                              ^
1083 // CHECK-ERROR: error: invalid operand for instruction
1084 // CHECK-ERROR:        fmax v0.8b, v1.8b, v2.8b
1085 // CHECK-ERROR:                ^
1086 //----------------------------------------------------------------------
1087 // Vector Minimum (Floating Point)
1088 //----------------------------------------------------------------------
1089         // Mismatched and invalid vector types
1090         fmin v0.4s, v1.4s, v2.2d
1091         fmin v0.8h, v1.8h, v2.8h
1092
1093 // CHECK-ERROR: error: invalid operand for instruction
1094 // CHECK-ERROR:        fmin v0.4s, v1.4s, v2.2d
1095 // CHECK-ERROR:                              ^
1096 // CHECK-ERROR: error: invalid operand for instruction
1097 // CHECK-ERROR:        fmin v0.8h, v1.8h, v2.8h
1098 // CHECK-ERROR:                ^
1099
1100 //----------------------------------------------------------------------
1101 // Vector maxNum (Floating Point)
1102 //----------------------------------------------------------------------
1103         // Mismatched and invalid vector types
1104         fmaxnm v0.2s, v1.2s, v2.2d
1105         fmaxnm v0.4h, v1.8h, v2.4h
1106
1107 // CHECK-ERROR: error: invalid operand for instruction
1108 // CHECK-ERROR:        fmaxnm v0.2s, v1.2s, v2.2d
1109 // CHECK-ERROR:                                ^
1110 // CHECK-ERROR: error: invalid operand for instruction
1111 // CHECK-ERROR:        fmaxnm v0.4h, v1.8h, v2.4h
1112 // CHECK-ERROR:                  ^
1113
1114 //----------------------------------------------------------------------
1115 // Vector minNum (Floating Point)
1116 //----------------------------------------------------------------------
1117         // Mismatched and invalid vector types
1118         fminnm v0.4s, v1.2s, v2.4s
1119         fminnm v0.16b, v0.16b, v0.16b
1120
1121 // CHECK-ERROR: error: invalid operand for instruction
1122 // CHECK-ERROR:        fminnm v0.4s, v1.2s, v2.4s
1123 // CHECK-ERROR:                         ^
1124 // CHECK-ERROR: error: invalid operand for instruction
1125 // CHECK-ERROR:        fminnm v0.16b, v0.16b, v0.16b
1126 // CHECK-ERROR:                  ^
1127
1128
1129 //----------------------------------------------------------------------
1130 // Vector Maximum Pairwise (Signed, Unsigned)
1131 //----------------------------------------------------------------------
1132         // Mismatched and invalid vector types
1133         smaxp v0.2d, v1.2d, v2.2d
1134         umaxp v0.4h, v1.4h, v2.2s
1135
1136 // CHECK-ERROR: error: invalid operand for instruction
1137 // CHECK-ERROR:        smaxp v0.2d, v1.2d, v2.2d
1138 // CHECK-ERROR:                 ^
1139 // CHECK-ERROR: error: invalid operand for instruction
1140 // CHECK-ERROR:        umaxp v0.4h, v1.4h, v2.2s
1141 // CHECK-ERROR:                               ^
1142
1143 //----------------------------------------------------------------------
1144 // Vector Minimum Pairwise (Signed, Unsigned)
1145 //----------------------------------------------------------------------
1146         // Mismatched and invalid vector types
1147         sminp v0.2d, v1.2d, v2.2d
1148         uminp v0.2s, v1.2s, v2.8b
1149
1150 // CHECK-ERROR: error: invalid operand for instruction
1151 // CHECK-ERROR:        sminp v0.2d, v1.2d, v2.2d
1152 // CHECK-ERROR:                 ^
1153 // CHECK-ERROR: error: invalid operand for instruction
1154 // CHECK-ERROR:        uminp v0.2s, v1.2s, v2.8b
1155 // CHECK-ERROR:                               ^
1156
1157
1158 //----------------------------------------------------------------------
1159 // Vector Maximum Pairwise (Floating Point)
1160 //----------------------------------------------------------------------
1161         // Mismatched and invalid vector types
1162         fmaxp v0.2s, v1.2s, v2.4s
1163         fmaxp v0.8b, v1.8b, v2.8b
1164
1165 // CHECK-ERROR: error: invalid operand for instruction
1166 // CHECK-ERROR:        fmaxp v0.2s, v1.2s, v2.4s
1167 // CHECK-ERROR:                               ^
1168 // CHECK-ERROR: error: invalid operand for instruction
1169 // CHECK-ERROR:        fmaxp v0.8b, v1.8b, v2.8b
1170 // CHECK-ERROR:                 ^
1171 //----------------------------------------------------------------------
1172 // Vector Minimum Pairwise (Floating Point)
1173 //----------------------------------------------------------------------
1174         // Mismatched and invalid vector types
1175         fminp v0.4s, v1.4s, v2.2d
1176         fminp v0.8h, v1.8h, v2.8h
1177
1178 // CHECK-ERROR: error: invalid operand for instruction
1179 // CHECK-ERROR:        fminp v0.4s, v1.4s, v2.2d
1180 // CHECK-ERROR:                               ^
1181 // CHECK-ERROR: error: invalid operand for instruction
1182 // CHECK-ERROR:        fminp v0.8h, v1.8h, v2.8h
1183 // CHECK-ERROR:                 ^
1184
1185 //----------------------------------------------------------------------
1186 // Vector maxNum Pairwise (Floating Point)
1187 //----------------------------------------------------------------------
1188         // Mismatched and invalid vector types
1189         fmaxnmp v0.2s, v1.2s, v2.2d
1190         fmaxnmp v0.4h, v1.8h, v2.4h
1191
1192 // CHECK-ERROR: error: invalid operand for instruction
1193 // CHECK-ERROR:        fmaxnmp v0.2s, v1.2s, v2.2d
1194 // CHECK-ERROR:                                 ^
1195 // CHECK-ERROR: error: invalid operand for instruction
1196 // CHECK-ERROR:        fmaxnmp v0.4h, v1.8h, v2.4h
1197 // CHECK-ERROR:                   ^
1198
1199 //----------------------------------------------------------------------
1200 // Vector minNum Pairwise (Floating Point)
1201 //----------------------------------------------------------------------
1202         // Mismatched and invalid vector types
1203         fminnmp v0.4s, v1.2s, v2.4s
1204         fminnmp v0.16b, v0.16b, v0.16b
1205
1206 // CHECK-ERROR: error: invalid operand for instruction
1207 // CHECK-ERROR:        fminnmp v0.4s, v1.2s, v2.4s
1208 // CHECK-ERROR:                          ^
1209 // CHECK-ERROR: error: invalid operand for instruction
1210 // CHECK-ERROR:        fminnmp v0.16b, v0.16b, v0.16b
1211 // CHECK-ERROR:                   ^
1212
1213
1214 //----------------------------------------------------------------------
1215 // Vector Add Pairwise (Integer)
1216 //----------------------------------------------------------------------
1217
1218         // Mismatched vector types
1219         addp v0.16b, v1.8b, v2.8b
1220
1221 // CHECK-ERROR: error: invalid operand for instruction
1222 // CHECK-ERROR:         addp v0.16b, v1.8b, v2.8b
1223 // CHECK-ERROR:                         ^
1224
1225 //----------------------------------------------------------------------
1226 // Vector Add Pairwise (Floating Point)
1227 //----------------------------------------------------------------------
1228         // Mismatched and invalid vector types
1229         faddp v0.16b, v1.8b, v2.8b
1230         faddp v0.2d, v1.2d, v2.8h
1231
1232 // CHECK-ERROR: error: invalid operand for instruction
1233 // CHECK-ERROR:         faddp v0.16b, v1.8b, v2.8b
1234 // CHECK-ERROR:                  ^
1235 // CHECK-ERROR: error: invalid operand for instruction
1236 // CHECK-ERROR:         faddp v0.2d, v1.2d, v2.8h
1237 // CHECK-ERROR:                                ^
1238
1239
1240 //----------------------------------------------------------------------
1241 // Vector Saturating Doubling Multiply High
1242 //----------------------------------------------------------------------
1243          // Mismatched and invalid vector types
1244          sqdmulh v2.4h, v25.8h, v3.4h
1245          sqdmulh v12.2d, v5.2d, v13.2d
1246          sqdmulh v3.8b, v1.8b, v30.8b
1247
1248 // CHECK-ERROR: error: invalid operand for instruction
1249 // CHECK-ERROR:         sqdmulh v2.4h, v25.8h, v3.4h
1250 // CHECK-ERROR:                            ^
1251 // CHECK-ERROR: error: invalid operand for instruction
1252 // CHECK-ERROR:         sqdmulh v12.2d, v5.2d, v13.2d
1253 // CHECK-ERROR:                     ^
1254 // CHECK-ERROR: error: invalid operand for instruction
1255 // CHECK-ERROR:         sqdmulh v3.8b, v1.8b, v30.8b
1256 // CHECK-ERROR:                    ^
1257
1258 //----------------------------------------------------------------------
1259 // Vector Saturating Rouding Doubling Multiply High
1260 //----------------------------------------------------------------------
1261          // Mismatched and invalid vector types
1262          sqrdmulh v2.2s, v25.4s, v3.4s
1263          sqrdmulh v12.16b, v5.16b, v13.16b
1264          sqrdmulh v3.4h, v1.4h, v30.2d
1265
1266
1267 // CHECK-ERROR: error: invalid operand for instruction
1268 // CHECK-ERROR:         sqrdmulh v2.2s, v25.4s, v3.4s
1269 // CHECK-ERROR:                             ^
1270 // CHECK-ERROR: error: invalid operand for instruction
1271 // CHECK-ERROR:         sqrdmulh v12.16b, v5.16b, v13.16b
1272 // CHECK-ERROR:                       ^
1273 // CHECK-ERROR: error: invalid operand for instruction
1274 // CHECK-ERROR:         sqrdmulh v3.4h, v1.4h, v30.2d
1275 // CHECK-ERROR:                                    ^
1276
1277 //----------------------------------------------------------------------
1278 // Vector Multiply Extended
1279 //----------------------------------------------------------------------
1280          // Mismatched and invalid vector types
1281       fmulx v21.2s, v5.2s, v13.2d
1282       fmulx v1.4h, v25.4h, v3.4h
1283
1284 // CHECK-ERROR: error: invalid operand for instruction
1285 // CHECK-ERROR:         fmulx v21.2s, v5.2s, v13.2d
1286 // CHECK-ERROR:                                  ^
1287 // CHECK-ERROR: error: invalid operand for instruction
1288 // CHECK-ERROR:         fmulx v1.4h, v25.4h, v3.4h
1289 // CHECK-ERROR:                  ^
1290
1291 //------------------------------------------------------------------------------
1292 // Vector Shift Left by Immediate
1293 //------------------------------------------------------------------------------
1294          // Mismatched vector types and out of range
1295          shl v0.4s, v15,2s, #3
1296          shl v0.2d, v17.4s, #3
1297          shl v0.8b, v31.8b, #-1
1298          shl v0.8b, v31.8b, #8
1299          shl v0.4s, v21.4s, #32
1300          shl v0.2d, v1.2d, #64
1301
1302
1303 // CHECK-ARM64-ERROR: error: unexpected token in argument list
1304 // CHECK-ARM64-ERROR:         shl v0.4s, v15,2s, #3
1305 // CHECK-ARM64-ERROR:                         ^
1306
1307 // CHECK-ERROR: error: invalid operand for instruction
1308 // CHECK-ERROR:         shl v0.2d, v17.4s, #3
1309 // CHECK-ERROR:                        ^
1310 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1311 // CHECK-ERROR:         shl v0.8b, v31.8b, #-1
1312 // CHECK-ERROR:                            ^
1313 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1314 // CHECK-ERROR:         shl v0.8b, v31.8b, #8
1315 // CHECK-ERROR:                            ^
1316 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1317 // CHECK-ERROR:         shl v0.4s, v21.4s, #32
1318 // CHECK-ERROR:                            ^
1319 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1320 // CHECK-ERROR:         shl v0.2d, v1.2d, #64
1321 // CHECK-ERROR:                           ^
1322
1323 //----------------------------------------------------------------------
1324 // Vector Shift Left Long by Immediate
1325 //----------------------------------------------------------------------
1326         // Mismatched vector types
1327         sshll v0.4s, v15.2s, #3
1328         ushll v1.16b, v25.16b, #6
1329         sshll2 v0.2d, v3.8s, #15
1330         ushll2 v1.4s, v25.4s, #7
1331
1332         // Out of range 
1333         sshll v0.8h, v1.8b, #-1
1334         sshll v0.8h, v1.8b, #9
1335         ushll v0.4s, v1.4h, #17
1336         ushll v0.2d, v1.2s, #33
1337         sshll2 v0.8h, v1.16b, #9
1338         sshll2 v0.4s, v1.8h, #17
1339         ushll2 v0.2d, v1.4s, #33
1340
1341 // CHECK-ERROR: error: invalid operand for instruction
1342 // CHECK-ERROR:        sshll v0.4s, v15.2s, #3
1343 // CHECK-ERROR:                         ^
1344 // CHECK-ERROR: error: invalid operand for instruction
1345 // CHECK-ERROR:        ushll v1.16b, v25.16b, #6
1346 // CHECK-ERROR:                 ^
1347 // CHECK-ERROR: error: invalid operand for instruction
1348 // CHECK-ERROR:        sshll2 v0.2d, v3.8s, #15
1349 // CHECK-ERROR:                      ^
1350 // CHECK-ERROR: error: invalid operand for instruction
1351 // CHECK-ERROR:        ushll2 v1.4s, v25.4s, #7
1352 // CHECK-ERROR:                          ^
1353 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1354 // CHECK-ERROR:        sshll v0.8h, v1.8b, #-1
1355 // CHECK-ERROR:                            ^
1356 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1357 // CHECK-ERROR:        sshll v0.8h, v1.8b, #9
1358 // CHECK-ERROR:                            ^
1359 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1360 // CHECK-ERROR:        ushll v0.4s, v1.4h, #17
1361 // CHECK-ERROR:                            ^
1362 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1363 // CHECK-ERROR:        ushll v0.2d, v1.2s, #33
1364 // CHECK-ERROR:                            ^
1365 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1366 // CHECK-ERROR:        sshll2 v0.8h, v1.16b, #9
1367 // CHECK-ERROR:                              ^
1368 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1369 // CHECK-ERROR:        sshll2 v0.4s, v1.8h, #17
1370 // CHECK-ERROR:                             ^
1371 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1372 // CHECK-ERROR:        ushll2 v0.2d, v1.4s, #33
1373 // CHECK-ERROR:                             ^
1374
1375
1376 //------------------------------------------------------------------------------
1377 // Vector shift right by immediate
1378 //------------------------------------------------------------------------------
1379          sshr v0.8b, v1.8h, #3
1380          sshr v0.4h, v1.4s, #3
1381          sshr v0.2s, v1.2d, #3
1382          sshr v0.16b, v1.16b, #9
1383          sshr v0.8h, v1.8h, #17
1384          sshr v0.4s, v1.4s, #33
1385          sshr v0.2d, v1.2d, #65
1386
1387 // CHECK-ERROR: error: invalid operand for instruction
1388 // CHECK-ERROR:         sshr v0.8b, v1.8h, #3
1389 // CHECK-ERROR:                        ^
1390 // CHECK-ERROR: error: invalid operand for instruction
1391 // CHECK-ERROR:         sshr v0.4h, v1.4s, #3
1392 // CHECK-ERROR:                        ^
1393 // CHECK-ERROR: error: invalid operand for instruction
1394 // CHECK-ERROR:         sshr v0.2s, v1.2d, #3
1395 // CHECK-ERROR:                        ^
1396 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1397 // CHECK-ERROR:         sshr v0.16b, v1.16b, #9
1398 // CHECK-ERROR:                              ^
1399 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1400 // CHECK-ERROR:         sshr v0.8h, v1.8h, #17
1401 // CHECK-ERROR:                            ^
1402 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1403 // CHECK-ERROR:         sshr v0.4s, v1.4s, #33
1404 // CHECK-ERROR:                            ^
1405 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1406 // CHECK-ERROR:         sshr v0.2d, v1.2d, #65
1407 // CHECK-ERROR:                            ^
1408
1409 //------------------------------------------------------------------------------
1410 // Vector  shift right by immediate
1411 //------------------------------------------------------------------------------
1412          ushr v0.8b, v1.8h, #3
1413          ushr v0.4h, v1.4s, #3
1414          ushr v0.2s, v1.2d, #3
1415          ushr v0.16b, v1.16b, #9
1416          ushr v0.8h, v1.8h, #17
1417          ushr v0.4s, v1.4s, #33
1418          ushr v0.2d, v1.2d, #65
1419
1420 // CHECK-ERROR: error: invalid operand for instruction
1421 // CHECK-ERROR:         ushr v0.8b, v1.8h, #3
1422 // CHECK-ERROR:                        ^
1423 // CHECK-ERROR: error: invalid operand for instruction
1424 // CHECK-ERROR:         ushr v0.4h, v1.4s, #3
1425 // CHECK-ERROR:                        ^
1426 // CHECK-ERROR: error: invalid operand for instruction
1427 // CHECK-ERROR:         ushr v0.2s, v1.2d, #3
1428 // CHECK-ERROR:                        ^
1429 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1430 // CHECK-ERROR:         ushr v0.16b, v1.16b, #9
1431 // CHECK-ERROR:                              ^
1432 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1433 // CHECK-ERROR:         ushr v0.8h, v1.8h, #17
1434 // CHECK-ERROR:                            ^
1435 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1436 // CHECK-ERROR:         ushr v0.4s, v1.4s, #33
1437 // CHECK-ERROR:                            ^
1438 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1439 // CHECK-ERROR:         ushr v0.2d, v1.2d, #65
1440 // CHECK-ERROR:                            ^
1441
1442 //------------------------------------------------------------------------------
1443 // Vector shift right and accumulate by immediate
1444 //------------------------------------------------------------------------------
1445          ssra v0.8b, v1.8h, #3
1446          ssra v0.4h, v1.4s, #3
1447          ssra v0.2s, v1.2d, #3
1448          ssra v0.16b, v1.16b, #9
1449          ssra v0.8h, v1.8h, #17
1450          ssra v0.4s, v1.4s, #33
1451          ssra v0.2d, v1.2d, #65
1452
1453 // CHECK-ERROR: error: invalid operand for instruction
1454 // CHECK-ERROR:         ssra v0.8b, v1.8h, #3
1455 // CHECK-ERROR:                        ^
1456 // CHECK-ERROR: error: invalid operand for instruction
1457 // CHECK-ERROR:         ssra v0.4h, v1.4s, #3
1458 // CHECK-ERROR:                        ^
1459 // CHECK-ERROR: error: invalid operand for instruction
1460 // CHECK-ERROR:         ssra v0.2s, v1.2d, #3
1461 // CHECK-ERROR:                        ^
1462 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1463 // CHECK-ERROR:         ssra v0.16b, v1.16b, #9
1464 // CHECK-ERROR:                              ^
1465 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1466 // CHECK-ERROR:         ssra v0.8h, v1.8h, #17
1467 // CHECK-ERROR:                            ^
1468 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1469 // CHECK-ERROR:         ssra v0.4s, v1.4s, #33
1470 // CHECK-ERROR:                            ^
1471 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1472 // CHECK-ERROR:         ssra v0.2d, v1.2d, #65
1473 // CHECK-ERROR:                            ^
1474
1475 //------------------------------------------------------------------------------
1476 // Vector  shift right and accumulate by immediate
1477 //------------------------------------------------------------------------------
1478          usra v0.8b, v1.8h, #3
1479          usra v0.4h, v1.4s, #3
1480          usra v0.2s, v1.2d, #3
1481          usra v0.16b, v1.16b, #9
1482          usra v0.8h, v1.8h, #17
1483          usra v0.4s, v1.4s, #33
1484          usra v0.2d, v1.2d, #65
1485
1486 // CHECK-ERROR: error: invalid operand for instruction
1487 // CHECK-ERROR:         usra v0.8b, v1.8h, #3
1488 // CHECK-ERROR:                        ^
1489 // CHECK-ERROR: error: invalid operand for instruction
1490 // CHECK-ERROR:         usra v0.4h, v1.4s, #3
1491 // CHECK-ERROR:                        ^
1492 // CHECK-ERROR: error: invalid operand for instruction
1493 // CHECK-ERROR:         usra v0.2s, v1.2d, #3
1494 // CHECK-ERROR:                        ^
1495 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1496 // CHECK-ERROR:         usra v0.16b, v1.16b, #9
1497 // CHECK-ERROR:                              ^
1498 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1499 // CHECK-ERROR:         usra v0.8h, v1.8h, #17
1500 // CHECK-ERROR:                            ^
1501 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1502 // CHECK-ERROR:         usra v0.4s, v1.4s, #33
1503 // CHECK-ERROR:                            ^
1504 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1505 // CHECK-ERROR:         usra v0.2d, v1.2d, #65
1506 // CHECK-ERROR:                            ^
1507
1508 //------------------------------------------------------------------------------
1509 // Vector rounding shift right by immediate
1510 //------------------------------------------------------------------------------
1511          srshr v0.8b, v1.8h, #3
1512          srshr v0.4h, v1.4s, #3
1513          srshr v0.2s, v1.2d, #3
1514          srshr v0.16b, v1.16b, #9
1515          srshr v0.8h, v1.8h, #17
1516          srshr v0.4s, v1.4s, #33
1517          srshr v0.2d, v1.2d, #65
1518
1519 // CHECK-ERROR: error: invalid operand for instruction
1520 // CHECK-ERROR:         srshr v0.8b, v1.8h, #3
1521 // CHECK-ERROR:                         ^
1522 // CHECK-ERROR: error: invalid operand for instruction
1523 // CHECK-ERROR:         srshr v0.4h, v1.4s, #3
1524 // CHECK-ERROR:                         ^
1525 // CHECK-ERROR: error: invalid operand for instruction
1526 // CHECK-ERROR:         srshr v0.2s, v1.2d, #3
1527 // CHECK-ERROR:                         ^
1528 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1529 // CHECK-ERROR:         srshr v0.16b, v1.16b, #9
1530 // CHECK-ERROR:                               ^
1531 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1532 // CHECK-ERROR:         srshr v0.8h, v1.8h, #17
1533 // CHECK-ERROR:                             ^
1534 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1535 // CHECK-ERROR:         srshr v0.4s, v1.4s, #33
1536 // CHECK-ERROR:                             ^
1537 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1538 // CHECK-ERROR:         srshr v0.2d, v1.2d, #65
1539 // CHECK-ERROR:                             ^
1540
1541 //------------------------------------------------------------------------------
1542 // Vecotr rounding shift right by immediate
1543 //------------------------------------------------------------------------------
1544          urshr v0.8b, v1.8h, #3
1545          urshr v0.4h, v1.4s, #3
1546          urshr v0.2s, v1.2d, #3
1547          urshr v0.16b, v1.16b, #9
1548          urshr v0.8h, v1.8h, #17
1549          urshr v0.4s, v1.4s, #33
1550          urshr v0.2d, v1.2d, #65
1551
1552 // CHECK-ERROR: error: invalid operand for instruction
1553 // CHECK-ERROR:         urshr v0.8b, v1.8h, #3
1554 // CHECK-ERROR:                         ^
1555 // CHECK-ERROR: error: invalid operand for instruction
1556 // CHECK-ERROR:         urshr v0.4h, v1.4s, #3
1557 // CHECK-ERROR:                         ^
1558 // CHECK-ERROR: error: invalid operand for instruction
1559 // CHECK-ERROR:         urshr v0.2s, v1.2d, #3
1560 // CHECK-ERROR:                         ^
1561 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1562 // CHECK-ERROR:         urshr v0.16b, v1.16b, #9
1563 // CHECK-ERROR:                               ^
1564 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1565 // CHECK-ERROR:         urshr v0.8h, v1.8h, #17
1566 // CHECK-ERROR:                             ^
1567 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1568 // CHECK-ERROR:         urshr v0.4s, v1.4s, #33
1569 // CHECK-ERROR:                             ^
1570 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1571 // CHECK-ERROR:         urshr v0.2d, v1.2d, #65
1572 // CHECK-ERROR:                             ^
1573
1574 //------------------------------------------------------------------------------
1575 // Vector rounding shift right and accumulate by immediate
1576 //------------------------------------------------------------------------------
1577          srsra v0.8b, v1.8h, #3
1578          srsra v0.4h, v1.4s, #3
1579          srsra v0.2s, v1.2d, #3
1580          srsra v0.16b, v1.16b, #9
1581          srsra v0.8h, v1.8h, #17
1582          srsra v0.4s, v1.4s, #33
1583          srsra v0.2d, v1.2d, #65
1584
1585 // CHECK-ERROR: error: invalid operand for instruction
1586 // CHECK-ERROR:         srsra v0.8b, v1.8h, #3
1587 // CHECK-ERROR:                         ^
1588 // CHECK-ERROR: error: invalid operand for instruction
1589 // CHECK-ERROR:         srsra v0.4h, v1.4s, #3
1590 // CHECK-ERROR:                         ^
1591 // CHECK-ERROR: error: invalid operand for instruction
1592 // CHECK-ERROR:         srsra v0.2s, v1.2d, #3
1593 // CHECK-ERROR:                         ^
1594 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1595 // CHECK-ERROR:         srsra v0.16b, v1.16b, #9
1596 // CHECK-ERROR:                               ^
1597 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1598 // CHECK-ERROR:         srsra v0.8h, v1.8h, #17
1599 // CHECK-ERROR:                             ^
1600 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1601 // CHECK-ERROR:         srsra v0.4s, v1.4s, #33
1602 // CHECK-ERROR:                             ^
1603 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1604 // CHECK-ERROR:         srsra v0.2d, v1.2d, #65
1605 // CHECK-ERROR:                             ^
1606
1607 //------------------------------------------------------------------------------
1608 // Vector rounding shift right and accumulate by immediate
1609 //------------------------------------------------------------------------------
1610          ursra v0.8b, v1.8h, #3
1611          ursra v0.4h, v1.4s, #3
1612          ursra v0.2s, v1.2d, #3
1613          ursra v0.16b, v1.16b, #9
1614          ursra v0.8h, v1.8h, #17
1615          ursra v0.4s, v1.4s, #33
1616          ursra v0.2d, v1.2d, #65
1617
1618 // CHECK-ERROR: error: invalid operand for instruction
1619 // CHECK-ERROR:         ursra v0.8b, v1.8h, #3
1620 // CHECK-ERROR:                         ^
1621 // CHECK-ERROR: error: invalid operand for instruction
1622 // CHECK-ERROR:         ursra v0.4h, v1.4s, #3
1623 // CHECK-ERROR:                         ^
1624 // CHECK-ERROR: error: invalid operand for instruction
1625 // CHECK-ERROR:         ursra v0.2s, v1.2d, #3
1626 // CHECK-ERROR:                         ^
1627 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1628 // CHECK-ERROR:         ursra v0.16b, v1.16b, #9
1629 // CHECK-ERROR:                               ^
1630 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1631 // CHECK-ERROR:         ursra v0.8h, v1.8h, #17
1632 // CHECK-ERROR:                             ^
1633 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1634 // CHECK-ERROR:         ursra v0.4s, v1.4s, #33
1635 // CHECK-ERROR:                             ^
1636 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1637 // CHECK-ERROR:         ursra v0.2d, v1.2d, #65
1638 // CHECK-ERROR:                             ^
1639
1640 //------------------------------------------------------------------------------
1641 // Vector shift right and insert by immediate
1642 //------------------------------------------------------------------------------
1643          sri v0.8b, v1.8h, #3
1644          sri v0.4h, v1.4s, #3
1645          sri v0.2s, v1.2d, #3
1646          sri v0.16b, v1.16b, #9
1647          sri v0.8h, v1.8h, #17
1648          sri v0.4s, v1.4s, #33
1649          sri v0.2d, v1.2d, #65
1650
1651 // CHECK-ERROR: error: invalid operand for instruction
1652 // CHECK-ERROR:         sri v0.8b, v1.8h, #3
1653 // CHECK-ERROR:                       ^
1654 // CHECK-ERROR: error: invalid operand for instruction
1655 // CHECK-ERROR:         sri v0.4h, v1.4s, #3
1656 // CHECK-ERROR:                       ^
1657 // CHECK-ERROR: error: invalid operand for instruction
1658 // CHECK-ERROR:         sri v0.2s, v1.2d, #3
1659 // CHECK-ERROR:                       ^
1660 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1661 // CHECK-ERROR:         sri v0.16b, v1.16b, #9
1662 // CHECK-ERROR:                             ^
1663 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1664 // CHECK-ERROR:         sri v0.8h, v1.8h, #17
1665 // CHECK-ERROR:                           ^
1666 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1667 // CHECK-ERROR:         sri v0.4s, v1.4s, #33
1668 // CHECK-ERROR:                           ^
1669 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1670 // CHECK-ERROR:         sri v0.2d, v1.2d, #65
1671 // CHECK-ERROR:                           ^
1672
1673 //------------------------------------------------------------------------------
1674 // Vector shift left and insert by immediate
1675 //------------------------------------------------------------------------------
1676          sli v0.8b, v1.8h, #3
1677          sli v0.4h, v1.4s, #3
1678          sli v0.2s, v1.2d, #3
1679          sli v0.16b, v1.16b, #8
1680          sli v0.8h, v1.8h, #16
1681          sli v0.4s, v1.4s, #32
1682          sli v0.2d, v1.2d, #64
1683
1684 // CHECK-ERROR: error: invalid operand for instruction
1685 // CHECK-ERROR:         sli v0.8b, v1.8h, #3
1686 // CHECK-ERROR:                       ^
1687 // CHECK-ERROR: error: invalid operand for instruction
1688 // CHECK-ERROR:         sli v0.4h, v1.4s, #3
1689 // CHECK-ERROR:                       ^
1690 // CHECK-ERROR: error: invalid operand for instruction
1691 // CHECK-ERROR:         sli v0.2s, v1.2d, #3
1692 // CHECK-ERROR:                       ^
1693 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1694 // CHECK-ERROR:         sli v0.16b, v1.16b, #8
1695 // CHECK-ERROR:                             ^
1696 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1697 // CHECK-ERROR:         sli v0.8h, v1.8h, #16
1698 // CHECK-ERROR:                           ^
1699 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1700 // CHECK-ERROR:         sli v0.4s, v1.4s, #32
1701 // CHECK-ERROR:                           ^
1702 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1703 // CHECK-ERROR:         sli v0.2d, v1.2d, #64
1704 // CHECK-ERROR:                           ^
1705
1706 //------------------------------------------------------------------------------
1707 // Vector saturating shift left unsigned by immediate
1708 //------------------------------------------------------------------------------
1709          sqshlu v0.8b, v1.8h, #3
1710          sqshlu v0.4h, v1.4s, #3
1711          sqshlu v0.2s, v1.2d, #3
1712          sqshlu v0.16b, v1.16b, #8
1713          sqshlu v0.8h, v1.8h, #16
1714          sqshlu v0.4s, v1.4s, #32
1715          sqshlu v0.2d, v1.2d, #64
1716
1717 // CHECK-ERROR: error: invalid operand for instruction
1718 // CHECK-ERROR:         sqshlu v0.8b, v1.8h, #3
1719 // CHECK-ERROR:                          ^
1720 // CHECK-ERROR: error: invalid operand for instruction
1721 // CHECK-ERROR:         sqshlu v0.4h, v1.4s, #3
1722 // CHECK-ERROR:                          ^
1723 // CHECK-ERROR: error: invalid operand for instruction
1724 // CHECK-ERROR:         sqshlu v0.2s, v1.2d, #3
1725 // CHECK-ERROR:                          ^
1726 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1727 // CHECK-ERROR:         sqshlu v0.16b, v1.16b, #8
1728 // CHECK-ERROR:                                ^
1729 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1730 // CHECK-ERROR:         sqshlu v0.8h, v1.8h, #16
1731 // CHECK-ERROR:                              ^
1732 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1733 // CHECK-ERROR:         sqshlu v0.4s, v1.4s, #32
1734 // CHECK-ERROR:                              ^
1735 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1736 // CHECK-ERROR:         sqshlu v0.2d, v1.2d, #64
1737 // CHECK-ERROR:                              ^
1738
1739 //------------------------------------------------------------------------------
1740 // Vector saturating shift left by immediate
1741 //------------------------------------------------------------------------------
1742          sqshl v0.8b, v1.8h, #3
1743          sqshl v0.4h, v1.4s, #3
1744          sqshl v0.2s, v1.2d, #3
1745          sqshl v0.16b, v1.16b, #8
1746          sqshl v0.8h, v1.8h, #16
1747          sqshl v0.4s, v1.4s, #32
1748          sqshl v0.2d, v1.2d, #64
1749
1750 // CHECK-ERROR: error: invalid operand for instruction
1751 // CHECK-ERROR:         sqshl v0.8b, v1.8h, #3
1752 // CHECK-ERROR:                         ^
1753 // CHECK-ERROR: error: invalid operand for instruction
1754 // CHECK-ERROR:         sqshl v0.4h, v1.4s, #3
1755 // CHECK-ERROR:                         ^
1756 // CHECK-ERROR: error: invalid operand for instruction
1757 // CHECK-ERROR:         sqshl v0.2s, v1.2d, #3
1758 // CHECK-ERROR:                         ^
1759 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1760 // CHECK-ERROR:         sqshl v0.16b, v1.16b, #8
1761 // CHECK-ERROR:                               ^
1762 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1763 // CHECK-ERROR:         sqshl v0.8h, v1.8h, #16
1764 // CHECK-ERROR:                             ^
1765 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1766 // CHECK-ERROR:         sqshl v0.4s, v1.4s, #32
1767 // CHECK-ERROR:                             ^
1768 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1769 // CHECK-ERROR:         sqshl v0.2d, v1.2d, #64
1770 // CHECK-ERROR:                             ^
1771
1772 //------------------------------------------------------------------------------
1773 // Vector saturating shift left by immediate
1774 //------------------------------------------------------------------------------
1775          uqshl v0.8b, v1.8h, #3
1776          uqshl v0.4h, v1.4s, #3
1777          uqshl v0.2s, v1.2d, #3
1778          uqshl v0.16b, v1.16b, #8
1779          uqshl v0.8h, v1.8h, #16
1780          uqshl v0.4s, v1.4s, #32
1781          uqshl v0.2d, v1.2d, #64
1782
1783 // CHECK-ERROR: error: invalid operand for instruction
1784 // CHECK-ERROR:         uqshl v0.8b, v1.8h, #3
1785 // CHECK-ERROR:                         ^
1786 // CHECK-ERROR: error: invalid operand for instruction
1787 // CHECK-ERROR:         uqshl v0.4h, v1.4s, #3
1788 // CHECK-ERROR:                         ^
1789 // CHECK-ERROR: error: invalid operand for instruction
1790 // CHECK-ERROR:         uqshl v0.2s, v1.2d, #3
1791 // CHECK-ERROR:                         ^
1792 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1793 // CHECK-ERROR:         uqshl v0.16b, v1.16b, #8
1794 // CHECK-ERROR:                               ^
1795 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1796 // CHECK-ERROR:         uqshl v0.8h, v1.8h, #16
1797 // CHECK-ERROR:                             ^
1798 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1799 // CHECK-ERROR:         uqshl v0.4s, v1.4s, #32
1800 // CHECK-ERROR:                             ^
1801 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1802 // CHECK-ERROR:         uqshl v0.2d, v1.2d, #64
1803 // CHECK-ERROR:                             ^
1804
1805 //------------------------------------------------------------------------------
1806 // Vector shift right narrow by immediate
1807 //------------------------------------------------------------------------------
1808          shrn v0.8b, v1.8b, #3
1809          shrn v0.4h, v1.4h, #3
1810          shrn v0.2s, v1.2s, #3
1811          shrn2 v0.16b, v1.8h, #17
1812          shrn2 v0.8h, v1.4s, #33
1813          shrn2 v0.4s, v1.2d, #65
1814
1815 // CHECK-ERROR: error: invalid operand for instruction
1816 // CHECK-ERROR:         shrn v0.8b, v1.8b, #3
1817 // CHECK-ERROR:                        ^
1818 // CHECK-ERROR: error: invalid operand for instruction
1819 // CHECK-ERROR:         shrn v0.4h, v1.4h, #3
1820 // CHECK-ERROR:                        ^
1821 // CHECK-ERROR: error: invalid operand for instruction
1822 // CHECK-ERROR:         shrn v0.2s, v1.2s, #3
1823 // CHECK-ERROR:                        ^
1824 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1825 // CHECK-ERROR:         shrn2 v0.16b, v1.8h, #17
1826 // CHECK-ERROR:                              ^
1827 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1828 // CHECK-ERROR:         shrn2 v0.8h, v1.4s, #33
1829 // CHECK-ERROR:                             ^
1830 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1831 // CHECK-ERROR:         shrn2 v0.4s, v1.2d, #65
1832 // CHECK-ERROR:                             ^
1833
1834 //------------------------------------------------------------------------------
1835 // Vector saturating shift right unsigned narrow by immediate
1836 //------------------------------------------------------------------------------
1837          sqshrun v0.8b, v1.8b, #3
1838          sqshrun v0.4h, v1.4h, #3
1839          sqshrun v0.2s, v1.2s, #3
1840          sqshrun2 v0.16b, v1.8h, #17
1841          sqshrun2 v0.8h, v1.4s, #33
1842          sqshrun2 v0.4s, v1.2d, #65
1843
1844 // CHECK-ERROR: error: invalid operand for instruction
1845 // CHECK-ERROR:         sqshrun v0.8b, v1.8b, #3
1846 // CHECK-ERROR:                           ^
1847 // CHECK-ERROR: error: invalid operand for instruction
1848 // CHECK-ERROR:         sqshrun v0.4h, v1.4h, #3
1849 // CHECK-ERROR:                           ^
1850 // CHECK-ERROR: error: invalid operand for instruction
1851 // CHECK-ERROR:         sqshrun v0.2s, v1.2s, #3
1852 // CHECK-ERROR:                           ^
1853 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1854 // CHECK-ERROR:         sqshrun2 v0.16b, v1.8h, #17
1855 // CHECK-ERROR:                                 ^
1856 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1857 // CHECK-ERROR:         sqshrun2 v0.8h, v1.4s, #33
1858 // CHECK-ERROR:                                ^
1859 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1860 // CHECK-ERROR:         sqshrun2 v0.4s, v1.2d, #65
1861 // CHECK-ERROR:                                ^
1862
1863 //------------------------------------------------------------------------------
1864 // Vector rounding shift right narrow by immediate
1865 //------------------------------------------------------------------------------
1866          rshrn v0.8b, v1.8b, #3
1867          rshrn v0.4h, v1.4h, #3
1868          rshrn v0.2s, v1.2s, #3
1869          rshrn2 v0.16b, v1.8h, #17
1870          rshrn2 v0.8h, v1.4s, #33
1871          rshrn2 v0.4s, v1.2d, #65
1872
1873 // CHECK-ERROR: error: invalid operand for instruction
1874 // CHECK-ERROR:         rshrn v0.8b, v1.8b, #3
1875 // CHECK-ERROR:                         ^
1876 // CHECK-ERROR: error: invalid operand for instruction
1877 // CHECK-ERROR:         rshrn v0.4h, v1.4h, #3
1878 // CHECK-ERROR:                         ^
1879 // CHECK-ERROR: error: invalid operand for instruction
1880 // CHECK-ERROR:         rshrn v0.2s, v1.2s, #3
1881 // CHECK-ERROR:                         ^
1882 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1883 // CHECK-ERROR:         rshrn2 v0.16b, v1.8h, #17
1884 // CHECK-ERROR:                               ^
1885 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1886 // CHECK-ERROR:         rshrn2 v0.8h, v1.4s, #33
1887 // CHECK-ERROR:                              ^
1888 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1889 // CHECK-ERROR:         rshrn2 v0.4s, v1.2d, #65
1890 // CHECK-ERROR:                              ^
1891
1892 //------------------------------------------------------------------------------
1893 // Vector saturating shift right rounded unsigned narrow by immediate
1894 //------------------------------------------------------------------------------
1895          sqrshrun v0.8b, v1.8b, #3
1896          sqrshrun v0.4h, v1.4h, #3
1897          sqrshrun v0.2s, v1.2s, #3
1898          sqrshrun2 v0.16b, v1.8h, #17
1899          sqrshrun2 v0.8h, v1.4s, #33
1900          sqrshrun2 v0.4s, v1.2d, #65
1901
1902 // CHECK-ERROR: error: invalid operand for instruction
1903 // CHECK-ERROR:         sqrshrun v0.8b, v1.8b, #3
1904 // CHECK-ERROR:                            ^
1905 // CHECK-ERROR: error: invalid operand for instruction
1906 // CHECK-ERROR:         sqrshrun v0.4h, v1.4h, #3
1907 // CHECK-ERROR:                            ^
1908 // CHECK-ERROR: error: invalid operand for instruction
1909 // CHECK-ERROR:         sqrshrun v0.2s, v1.2s, #3
1910 // CHECK-ERROR:                            ^
1911 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1912 // CHECK-ERROR:         sqrshrun2 v0.16b, v1.8h, #17
1913 // CHECK-ERROR:                                  ^
1914 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1915 // CHECK-ERROR:         sqrshrun2 v0.8h, v1.4s, #33
1916 // CHECK-ERROR:                                 ^
1917 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1918 // CHECK-ERROR:         sqrshrun2 v0.4s, v1.2d, #65
1919 // CHECK-ERROR:                                 ^
1920
1921 //------------------------------------------------------------------------------
1922 // Vector saturating shift right narrow by immediate
1923 //------------------------------------------------------------------------------
1924          sqshrn v0.8b, v1.8b, #3
1925          sqshrn v0.4h, v1.4h, #3
1926          sqshrn v0.2s, v1.2s, #3
1927          sqshrn2 v0.16b, v1.8h, #17
1928          sqshrn2 v0.8h, v1.4s, #33
1929          sqshrn2 v0.4s, v1.2d, #65
1930
1931 // CHECK-ERROR: error: invalid operand for instruction
1932 // CHECK-ERROR:         sqshrn v0.8b, v1.8b, #3
1933 // CHECK-ERROR:                          ^
1934 // CHECK-ERROR: error: invalid operand for instruction
1935 // CHECK-ERROR:         sqshrn v0.4h, v1.4h, #3
1936 // CHECK-ERROR:                          ^
1937 // CHECK-ERROR: error: invalid operand for instruction
1938 // CHECK-ERROR:         sqshrn v0.2s, v1.2s, #3
1939 // CHECK-ERROR:                          ^
1940 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1941 // CHECK-ERROR:         sqshrn2 v0.16b, v1.8h, #17
1942 // CHECK-ERROR:                                ^
1943 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1944 // CHECK-ERROR:         sqshrn2 v0.8h, v1.4s, #33
1945 // CHECK-ERROR:                               ^
1946 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1947 // CHECK-ERROR:         sqshrn2 v0.4s, v1.2d, #65
1948 // CHECK-ERROR:                               ^
1949
1950 //------------------------------------------------------------------------------
1951 // Vector saturating shift right narrow by immediate
1952 //------------------------------------------------------------------------------
1953          uqshrn v0.8b, v1.8b, #3
1954          uqshrn v0.4h, v1.4h, #3
1955          uqshrn v0.2s, v1.2s, #3
1956          uqshrn2 v0.16b, v1.8h, #17
1957          uqshrn2 v0.8h, v1.4s, #33
1958          uqshrn2 v0.4s, v1.2d, #65
1959
1960 // CHECK-ERROR: error: invalid operand for instruction
1961 // CHECK-ERROR:         uqshrn v0.8b, v1.8b, #3
1962 // CHECK-ERROR:                          ^
1963 // CHECK-ERROR: error: invalid operand for instruction
1964 // CHECK-ERROR:         uqshrn v0.4h, v1.4h, #3
1965 // CHECK-ERROR:                          ^
1966 // CHECK-ERROR: error: invalid operand for instruction
1967 // CHECK-ERROR:         uqshrn v0.2s, v1.2s, #3
1968 // CHECK-ERROR:                          ^
1969 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1970 // CHECK-ERROR:         uqshrn2 v0.16b, v1.8h, #17
1971 // CHECK-ERROR:                                ^
1972 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1973 // CHECK-ERROR:         uqshrn2 v0.8h, v1.4s, #33
1974 // CHECK-ERROR:                               ^
1975 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1976 // CHECK-ERROR:         uqshrn2 v0.4s, v1.2d, #65
1977 // CHECK-ERROR:                               ^
1978
1979 //------------------------------------------------------------------------------
1980 // Vector saturating shift right rounded narrow by immediate
1981 //------------------------------------------------------------------------------
1982          sqrshrn v0.8b, v1.8b, #3
1983          sqrshrn v0.4h, v1.4h, #3
1984          sqrshrn v0.2s, v1.2s, #3
1985          sqrshrn2 v0.16b, v1.8h, #17
1986          sqrshrn2 v0.8h, v1.4s, #33
1987          sqrshrn2 v0.4s, v1.2d, #65
1988
1989 // CHECK-ERROR: error: invalid operand for instruction
1990 // CHECK-ERROR:         sqrshrn v0.8b, v1.8b, #3
1991 // CHECK-ERROR:                           ^
1992 // CHECK-ERROR: error: invalid operand for instruction
1993 // CHECK-ERROR:         sqrshrn v0.4h, v1.4h, #3
1994 // CHECK-ERROR:                           ^
1995 // CHECK-ERROR: error: invalid operand for instruction
1996 // CHECK-ERROR:         sqrshrn v0.2s, v1.2s, #3
1997 // CHECK-ERROR:                           ^
1998 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1999 // CHECK-ERROR:         sqrshrn2 v0.16b, v1.8h, #17
2000 // CHECK-ERROR:                                 ^
2001 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
2002 // CHECK-ERROR:         sqrshrn2 v0.8h, v1.4s, #33
2003 // CHECK-ERROR:                                ^
2004 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2005 // CHECK-ERROR:         sqrshrn2 v0.4s, v1.2d, #65
2006 // CHECK-ERROR:                                ^
2007
2008 //------------------------------------------------------------------------------
2009 // Vector saturating shift right rounded narrow by immediate
2010 //------------------------------------------------------------------------------
2011          uqrshrn v0.8b, v1.8b, #3
2012          uqrshrn v0.4h, v1.4h, #3
2013          uqrshrn v0.2s, v1.2s, #3
2014          uqrshrn2 v0.16b, v1.8h, #17
2015          uqrshrn2 v0.8h, v1.4s, #33
2016          uqrshrn2 v0.4s, v1.2d, #65
2017
2018 // CHECK-ERROR: error: invalid operand for instruction
2019 // CHECK-ERROR:         uqrshrn v0.8b, v1.8b, #3
2020 // CHECK-ERROR:                           ^
2021 // CHECK-ERROR: error: invalid operand for instruction
2022 // CHECK-ERROR:         uqrshrn v0.4h, v1.4h, #3
2023 // CHECK-ERROR:                           ^
2024 // CHECK-ERROR: error: invalid operand for instruction
2025 // CHECK-ERROR:         uqrshrn v0.2s, v1.2s, #3
2026 // CHECK-ERROR:                           ^
2027 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
2028 // CHECK-ERROR:         uqrshrn2 v0.16b, v1.8h, #17
2029 // CHECK-ERROR:                                 ^
2030 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
2031 // CHECK-ERROR:         uqrshrn2 v0.8h, v1.4s, #33
2032 // CHECK-ERROR:                                ^
2033 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2034 // CHECK-ERROR:         uqrshrn2 v0.4s, v1.2d, #65
2035 // CHECK-ERROR:                                ^
2036
2037 //------------------------------------------------------------------------------
2038 // Fixed-point convert to floating-point
2039 //------------------------------------------------------------------------------
2040          scvtf v0.2s, v1.2d, #3
2041          scvtf v0.4s, v1.4h, #3
2042          scvtf v0.2d, v1.2s, #3
2043          ucvtf v0.2s, v1.2s, #33
2044          ucvtf v0.4s, v1.4s, #33
2045          ucvtf v0.2d, v1.2d, #65
2046
2047 // CHECK-ERROR: error: invalid operand for instruction
2048 // CHECK-ERROR:         scvtf v0.2s, v1.2d, #3
2049 // CHECK-ERROR:                         ^
2050 // CHECK-ERROR: error: invalid operand for instruction
2051 // CHECK-ERROR:         scvtf v0.4s, v1.4h, #3
2052 // CHECK-ERROR:                         ^
2053 // CHECK-ERROR: error: invalid operand for instruction
2054 // CHECK-ERROR:         scvtf v0.2d, v1.2s, #3
2055 // CHECK-ERROR:                         ^
2056 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2057 // CHECK-ERROR:         ucvtf v0.2s, v1.2s, #33
2058 // CHECK-ERROR:                             ^
2059 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2060 // CHECK-ERROR:         ucvtf v0.4s, v1.4s, #33
2061 // CHECK-ERROR:                             ^
2062 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
2063 // CHECK-ERROR:         ucvtf v0.2d, v1.2d, #65
2064 // CHECK-ERROR:                             ^
2065
2066 //------------------------------------------------------------------------------
2067 // Floating-point convert to fixed-point
2068 //------------------------------------------------------------------------------
2069          fcvtzs v0.2s, v1.2d, #3
2070          fcvtzs v0.4s, v1.4h, #3
2071          fcvtzs v0.2d, v1.2s, #3
2072          fcvtzu v0.2s, v1.2s, #33
2073          fcvtzu v0.4s, v1.4s, #33
2074          fcvtzu v0.2d, v1.2d, #65
2075
2076 // CHECK-ERROR: error: invalid operand for instruction
2077 // CHECK-ERROR:         fcvtzs v0.2s, v1.2d, #3
2078 // CHECK-ERROR:                          ^
2079 // CHECK-ERROR: error: invalid operand for instruction
2080 // CHECK-ERROR:         fcvtzs v0.4s, v1.4h, #3
2081 // CHECK-ERROR:                          ^
2082 // CHECK-ERROR: error: invalid operand for instruction
2083 // CHECK-ERROR:         fcvtzs v0.2d, v1.2s, #3
2084 // CHECK-ERROR:                          ^
2085 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2086 // CHECK-ERROR:         fcvtzu v0.2s, v1.2s, #33
2087 // CHECK-ERROR:                              ^
2088 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2089 // CHECK-ERROR:         fcvtzu v0.4s, v1.4s, #33
2090 // CHECK-ERROR:                              ^
2091 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
2092 // CHECK-ERROR:         fcvtzu v0.2d, v1.2d, #65
2093 // CHECK-ERROR:                              ^
2094
2095 //----------------------------------------------------------------------
2096 // Vector operation on 3 operands with different types
2097 //----------------------------------------------------------------------
2098
2099         // Mismatched and invalid vector types
2100         saddl v0.8h, v1.8h, v2.8b
2101         saddl v0.4s, v1.4s, v2.4h
2102         saddl v0.2d, v1.2d, v2.2s
2103
2104 // CHECK-ERROR: error: invalid operand for instruction
2105 // CHECK-ERROR:        saddl v0.8h, v1.8h, v2.8b
2106 // CHECK-ERROR:                        ^
2107 // CHECK-ERROR: error: invalid operand for instruction
2108 // CHECK-ERROR:        saddl v0.4s, v1.4s, v2.4h
2109 // CHECK-ERROR:                        ^
2110 // CHECK-ERROR: error: invalid operand for instruction
2111 // CHECK-ERROR:        saddl v0.2d, v1.2d, v2.2s
2112 // CHECK-ERROR:                        ^
2113
2114         saddl2 v0.4s, v1.8s, v2.8h
2115         saddl2 v0.8h, v1.16h, v2.16b
2116         saddl2 v0.2d, v1.4d, v2.4s
2117
2118 // CHECK-ERROR: error: invalid operand for instruction
2119 // CHECK-ERROR:        saddl2 v0.4s, v1.8s, v2.8h
2120 // CHECK-ERROR:                      ^
2121 // CHECK-ERROR: error: invalid operand for instruction
2122 // CHECK-ERROR:        saddl2 v0.8h, v1.16h, v2.16b
2123 // CHECK-ERROR:                      ^
2124 // CHECK-ERROR: error: invalid operand for instruction
2125 // CHECK-ERROR:        saddl2 v0.2d, v1.4d, v2.4s
2126 // CHECK-ERROR:                      ^
2127
2128         uaddl v0.8h, v1.8h, v2.8b
2129         uaddl v0.4s, v1.4s, v2.4h
2130         uaddl v0.2d, v1.2d, v2.2s
2131
2132 // CHECK-ERROR: error: invalid operand for instruction
2133 // CHECK-ERROR:        uaddl v0.8h, v1.8h, v2.8b
2134 // CHECK-ERROR:                        ^
2135 // CHECK-ERROR: error: invalid operand for instruction
2136 // CHECK-ERROR:        uaddl v0.4s, v1.4s, v2.4h
2137 // CHECK-ERROR:                        ^
2138 // CHECK-ERROR: error: invalid operand for instruction
2139 // CHECK-ERROR:        uaddl v0.2d, v1.2d, v2.2s
2140 // CHECK-ERROR:                        ^
2141
2142         uaddl2 v0.8h, v1.16h, v2.16b
2143         uaddl2 v0.4s, v1.8s, v2.8h
2144         uaddl2 v0.2d, v1.4d, v2.4s
2145
2146 // CHECK-ERROR: error: invalid operand for instruction
2147 // CHECK-ERROR:        uaddl2 v0.8h, v1.16h, v2.16b
2148 // CHECK-ERROR:                      ^
2149 // CHECK-ERROR: error: invalid operand for instruction
2150 // CHECK-ERROR:        uaddl2 v0.4s, v1.8s, v2.8h
2151 // CHECK-ERROR:                      ^
2152 // CHECK-ERROR: error: invalid operand for instruction
2153 // CHECK-ERROR:        uaddl2 v0.2d, v1.4d, v2.4s
2154 // CHECK-ERROR:                      ^
2155
2156         ssubl v0.8h, v1.8h, v2.8b
2157         ssubl v0.4s, v1.4s, v2.4h
2158         ssubl v0.2d, v1.2d, v2.2s
2159
2160 // CHECK-ERROR: error: invalid operand for instruction
2161 // CHECK-ERROR:        ssubl v0.8h, v1.8h, v2.8b
2162 // CHECK-ERROR:                        ^
2163 // CHECK-ERROR: error: invalid operand for instruction
2164 // CHECK-ERROR:        ssubl v0.4s, v1.4s, v2.4h
2165 // CHECK-ERROR:                        ^
2166 // CHECK-ERROR: error: invalid operand for instruction
2167 // CHECK-ERROR:        ssubl v0.2d, v1.2d, v2.2s
2168 // CHECK-ERROR:                        ^
2169
2170         ssubl2 v0.8h, v1.16h, v2.16b
2171         ssubl2 v0.4s, v1.8s, v2.8h
2172         ssubl2 v0.2d, v1.4d, v2.4s
2173
2174 // CHECK-ERROR: error: invalid operand for instruction
2175 // CHECK-ERROR:        ssubl2 v0.8h, v1.16h, v2.16b
2176 // CHECK-ERROR:                      ^
2177 // CHECK-ERROR: error: invalid operand for instruction
2178 // CHECK-ERROR:        ssubl2 v0.4s, v1.8s, v2.8h
2179 // CHECK-ERROR:                      ^
2180 // CHECK-ERROR: error: invalid operand for instruction
2181 // CHECK-ERROR:        ssubl2 v0.2d, v1.4d, v2.4s
2182 // CHECK-ERROR:                      ^
2183
2184         usubl v0.8h, v1.8h, v2.8b
2185         usubl v0.4s, v1.4s, v2.4h
2186         usubl v0.2d, v1.2d, v2.2s
2187
2188 // CHECK-ERROR: error: invalid operand for instruction
2189 // CHECK-ERROR:        usubl v0.8h, v1.8h, v2.8b
2190 // CHECK-ERROR:                        ^
2191 // CHECK-ERROR: error: invalid operand for instruction
2192 // CHECK-ERROR:        usubl v0.4s, v1.4s, v2.4h
2193 // CHECK-ERROR:                        ^
2194 // CHECK-ERROR: error: invalid operand for instruction
2195 // CHECK-ERROR:        usubl v0.2d, v1.2d, v2.2s
2196 // CHECK-ERROR:                        ^
2197
2198         usubl2 v0.8h, v1.16h, v2.16b
2199         usubl2 v0.4s, v1.8s, v2.8h
2200         usubl2 v0.2d, v1.4d, v2.4s
2201
2202 // CHECK-ERROR: error: invalid operand for instruction
2203 // CHECK-ERROR:        usubl2 v0.8h, v1.16h, v2.16b
2204 // CHECK-ERROR:                      ^
2205 // CHECK-ERROR: error: invalid operand for instruction
2206 // CHECK-ERROR:        usubl2 v0.4s, v1.8s, v2.8h
2207 // CHECK-ERROR:                      ^
2208 // CHECK-ERROR: error: invalid operand for instruction
2209 // CHECK-ERROR:        usubl2 v0.2d, v1.4d, v2.4s
2210 // CHECK-ERROR:                      ^
2211
2212         sabal v0.8h, v1.8h, v2.8b
2213         sabal v0.4s, v1.4s, v2.4h
2214         sabal v0.2d, v1.2d, v2.2s
2215
2216 // CHECK-ERROR: error: invalid operand for instruction
2217 // CHECK-ERROR:        sabal v0.8h, v1.8h, v2.8b
2218 // CHECK-ERROR:                        ^
2219 // CHECK-ERROR: error: invalid operand for instruction
2220 // CHECK-ERROR:        sabal v0.4s, v1.4s, v2.4h
2221 // CHECK-ERROR:                        ^
2222 // CHECK-ERROR: error: invalid operand for instruction
2223 // CHECK-ERROR:        sabal v0.2d, v1.2d, v2.2s
2224 // CHECK-ERROR:                        ^
2225
2226         sabal2 v0.8h, v1.16h, v2.16b
2227         sabal2 v0.4s, v1.8s, v2.8h
2228         sabal2 v0.2d, v1.4d, v2.4s
2229
2230 // CHECK-ERROR: error: invalid operand for instruction
2231 // CHECK-ERROR:        sabal2 v0.8h, v1.16h, v2.16b
2232 // CHECK-ERROR:                      ^
2233 // CHECK-ERROR: error: invalid operand for instruction
2234 // CHECK-ERROR:        sabal2 v0.4s, v1.8s, v2.8h
2235 // CHECK-ERROR:                      ^
2236 // CHECK-ERROR: error: invalid operand for instruction
2237 // CHECK-ERROR:        sabal2 v0.2d, v1.4d, v2.4s
2238 // CHECK-ERROR:                      ^
2239
2240         uabal v0.8h, v1.8h, v2.8b
2241         uabal v0.4s, v1.4s, v2.4h
2242         uabal v0.2d, v1.2d, v2.2s
2243
2244 // CHECK-ERROR: error: invalid operand for instruction
2245 // CHECK-ERROR:        uabal v0.8h, v1.8h, v2.8b
2246 // CHECK-ERROR:                        ^
2247 // CHECK-ERROR: error: invalid operand for instruction
2248 // CHECK-ERROR:        uabal v0.4s, v1.4s, v2.4h
2249 // CHECK-ERROR:                        ^
2250 // CHECK-ERROR: error: invalid operand for instruction
2251 // CHECK-ERROR:        uabal v0.2d, v1.2d, v2.2s
2252 // CHECK-ERROR:                        ^
2253
2254         uabal2 v0.8h, v1.16h, v2.16b
2255         uabal2 v0.4s, v1.8s, v2.8h
2256         uabal2 v0.2d, v1.4d, v2.4s
2257
2258 // CHECK-ERROR: error: invalid operand for instruction
2259 // CHECK-ERROR:        uabal2 v0.8h, v1.16h, v2.16b
2260 // CHECK-ERROR:                      ^
2261 // CHECK-ERROR: error: invalid operand for instruction
2262 // CHECK-ERROR:        uabal2 v0.4s, v1.8s, v2.8h
2263 // CHECK-ERROR:                      ^
2264 // CHECK-ERROR: error: invalid operand for instruction
2265 // CHECK-ERROR:        uabal2 v0.2d, v1.4d, v2.4s
2266 // CHECK-ERROR:                      ^
2267
2268         sabdl v0.8h, v1.8h, v2.8b
2269         sabdl v0.4s, v1.4s, v2.4h
2270         sabdl v0.2d, v1.2d, v2.2s
2271
2272 // CHECK-ERROR: error: invalid operand for instruction
2273 // CHECK-ERROR:        sabdl v0.8h, v1.8h, v2.8b
2274 // CHECK-ERROR:                        ^
2275 // CHECK-ERROR: error: invalid operand for instruction
2276 // CHECK-ERROR:        sabdl v0.4s, v1.4s, v2.4h
2277 // CHECK-ERROR:                        ^
2278 // CHECK-ERROR: error: invalid operand for instruction
2279 // CHECK-ERROR:        sabdl v0.2d, v1.2d, v2.2s
2280 // CHECK-ERROR:                        ^
2281
2282         sabdl2 v0.8h, v1.16h, v2.16b
2283         sabdl2 v0.4s, v1.8s, v2.8h
2284         sabdl2 v0.2d, v1.4d, v2.4s
2285
2286 // CHECK-ERROR: error: invalid operand for instruction
2287 // CHECK-ERROR:        sabdl2 v0.8h, v1.16h, v2.16b
2288 // CHECK-ERROR:                      ^
2289 // CHECK-ERROR: error: invalid operand for instruction
2290 // CHECK-ERROR:        sabdl2 v0.4s, v1.8s, v2.8h
2291 // CHECK-ERROR:                      ^
2292 // CHECK-ERROR: error: invalid operand for instruction
2293 // CHECK-ERROR:        sabdl2 v0.2d, v1.4d, v2.4s
2294 // CHECK-ERROR:                      ^
2295
2296         uabdl v0.8h, v1.8h, v2.8b
2297         uabdl v0.4s, v1.4s, v2.4h
2298         uabdl v0.2d, v1.2d, v2.2s
2299
2300 // CHECK-ERROR: error: invalid operand for instruction
2301 // CHECK-ERROR:        uabdl v0.8h, v1.8h, v2.8b
2302 // CHECK-ERROR:                        ^
2303 // CHECK-ERROR: error: invalid operand for instruction
2304 // CHECK-ERROR:        uabdl v0.4s, v1.4s, v2.4h
2305 // CHECK-ERROR:                        ^
2306 // CHECK-ERROR: error: invalid operand for instruction
2307 // CHECK-ERROR:        uabdl v0.2d, v1.2d, v2.2s
2308 // CHECK-ERROR:                        ^
2309
2310         uabdl2 v0.8h, v1.16h, v2.16b
2311         uabdl2 v0.4s, v1.8s, v2.8h
2312         uabdl2 v0.2d, v1.4d, v2.4s
2313
2314 // CHECK-ERROR: error: invalid operand for instruction
2315 // CHECK-ERROR:        uabdl2 v0.8h, v1.16h, v2.16b
2316 // CHECK-ERROR:                      ^
2317 // CHECK-ERROR: error: invalid operand for instruction
2318 // CHECK-ERROR:        uabdl2 v0.4s, v1.8s, v2.8h
2319 // CHECK-ERROR:                      ^
2320 // CHECK-ERROR: error: invalid operand for instruction
2321 // CHECK-ERROR:        uabdl2 v0.2d, v1.4d, v2.4s
2322 // CHECK-ERROR:                      ^
2323
2324         smlal v0.8h, v1.8h, v2.8b
2325         smlal v0.4s, v1.4s, v2.4h
2326         smlal v0.2d, v1.2d, v2.2s
2327
2328 // CHECK-ERROR: error: invalid operand for instruction
2329 // CHECK-ERROR:        smlal v0.8h, v1.8h, v2.8b
2330 // CHECK-ERROR:                        ^
2331 // CHECK-ERROR: error: invalid operand for instruction
2332 // CHECK-ERROR:        smlal v0.4s, v1.4s, v2.4h
2333 // CHECK-ERROR:                        ^
2334 // CHECK-ERROR: error: invalid operand for instruction
2335 // CHECK-ERROR:        smlal v0.2d, v1.2d, v2.2s
2336 // CHECK-ERROR:                        ^
2337
2338         smlal2 v0.8h, v1.16h, v2.16b
2339         smlal2 v0.4s, v1.8s, v2.8h
2340         smlal2 v0.2d, v1.4d, v2.4s
2341
2342 // CHECK-ERROR: error: invalid operand for instruction
2343 // CHECK-ERROR:        smlal2 v0.8h, v1.16h, v2.16b
2344 // CHECK-ERROR:                      ^
2345 // CHECK-ERROR: error: invalid operand for instruction
2346 // CHECK-ERROR:        smlal2 v0.4s, v1.8s, v2.8h
2347 // CHECK-ERROR:                      ^
2348 // CHECK-ERROR: error: invalid operand for instruction
2349 // CHECK-ERROR:        smlal2 v0.2d, v1.4d, v2.4s
2350 // CHECK-ERROR:                      ^
2351
2352         umlal v0.8h, v1.8h, v2.8b
2353         umlal v0.4s, v1.4s, v2.4h
2354         umlal v0.2d, v1.2d, v2.2s
2355
2356 // CHECK-ERROR: error: invalid operand for instruction
2357 // CHECK-ERROR:        umlal v0.8h, v1.8h, v2.8b
2358 // CHECK-ERROR:                        ^
2359 // CHECK-ERROR: error: invalid operand for instruction
2360 // CHECK-ERROR:        umlal v0.4s, v1.4s, v2.4h
2361 // CHECK-ERROR:                        ^
2362 // CHECK-ERROR: error: invalid operand for instruction
2363 // CHECK-ERROR:        umlal v0.2d, v1.2d, v2.2s
2364 // CHECK-ERROR:                        ^
2365
2366         umlal2 v0.8h, v1.16h, v2.16b
2367         umlal2 v0.4s, v1.8s, v2.8h
2368         umlal2 v0.2d, v1.4d, v2.4s
2369
2370 // CHECK-ERROR: error: invalid operand for instruction
2371 // CHECK-ERROR:        umlal2 v0.8h, v1.16h, v2.16b
2372 // CHECK-ERROR:                      ^
2373 // CHECK-ERROR: error: invalid operand for instruction
2374 // CHECK-ERROR:        umlal2 v0.4s, v1.8s, v2.8h
2375 // CHECK-ERROR:                      ^
2376 // CHECK-ERROR: error: invalid operand for instruction
2377 // CHECK-ERROR:        umlal2 v0.2d, v1.4d, v2.4s
2378 // CHECK-ERROR:                      ^
2379
2380         smlsl v0.8h, v1.8h, v2.8b
2381         smlsl v0.4s, v1.4s, v2.4h
2382         smlsl v0.2d, v1.2d, v2.2s
2383
2384 // CHECK-ERROR: error: invalid operand for instruction
2385 // CHECK-ERROR:        smlsl v0.8h, v1.8h, v2.8b
2386 // CHECK-ERROR:                        ^
2387 // CHECK-ERROR: error: invalid operand for instruction
2388 // CHECK-ERROR:        smlsl v0.4s, v1.4s, v2.4h
2389 // CHECK-ERROR:                        ^
2390 // CHECK-ERROR: error: invalid operand for instruction
2391 // CHECK-ERROR:        smlsl v0.2d, v1.2d, v2.2s
2392 // CHECK-ERROR:                        ^
2393
2394         smlsl2 v0.8h, v1.16h, v2.16b
2395         smlsl2 v0.4s, v1.8s, v2.8h
2396         smlsl2 v0.2d, v1.4d, v2.4s
2397
2398 // CHECK-ERROR: error: invalid operand for instruction
2399 // CHECK-ERROR:        smlsl2 v0.8h, v1.16h, v2.16b
2400 // CHECK-ERROR:                      ^
2401 // CHECK-ERROR: error: invalid operand for instruction
2402 // CHECK-ERROR:        smlsl2 v0.4s, v1.8s, v2.8h
2403 // CHECK-ERROR:                      ^
2404 // CHECK-ERROR: error: invalid operand for instruction
2405 // CHECK-ERROR:        smlsl2 v0.2d, v1.4d, v2.4s
2406 // CHECK-ERROR:                      ^
2407
2408         umlsl v0.8h, v1.8h, v2.8b
2409         umlsl v0.4s, v1.4s, v2.4h
2410         umlsl v0.2d, v1.2d, v2.2s
2411
2412 // CHECK-ERROR: error: invalid operand for instruction
2413 // CHECK-ERROR:        umlsl v0.8h, v1.8h, v2.8b
2414 // CHECK-ERROR:                        ^
2415 // CHECK-ERROR: error: invalid operand for instruction
2416 // CHECK-ERROR:        umlsl v0.4s, v1.4s, v2.4h
2417 // CHECK-ERROR:                        ^
2418 // CHECK-ERROR: error: invalid operand for instruction
2419 // CHECK-ERROR:        umlsl v0.2d, v1.2d, v2.2s
2420 // CHECK-ERROR:                        ^
2421
2422         umlsl2 v0.8h, v1.16h, v2.16b
2423         umlsl2 v0.4s, v1.8s, v2.8h
2424         umlsl2 v0.2d, v1.4d, v2.4s
2425
2426 // CHECK-ERROR: error: invalid operand for instruction
2427 // CHECK-ERROR:        umlsl2 v0.8h, v1.16h, v2.16b
2428 // CHECK-ERROR:                      ^
2429 // CHECK-ERROR: error: invalid operand for instruction
2430 // CHECK-ERROR:        umlsl2 v0.4s, v1.8s, v2.8h
2431 // CHECK-ERROR:                      ^
2432 // CHECK-ERROR: error: invalid operand for instruction
2433 // CHECK-ERROR:        umlsl2 v0.2d, v1.4d, v2.4s
2434 // CHECK-ERROR:                      ^
2435
2436         smull v0.8h, v1.8h, v2.8b
2437         smull v0.4s, v1.4s, v2.4h
2438         smull v0.2d, v1.2d, v2.2s
2439
2440 // CHECK-ERROR: error: invalid operand for instruction
2441 // CHECK-ERROR:        smull v0.8h, v1.8h, v2.8b
2442 // CHECK-ERROR:                        ^
2443 // CHECK-ERROR: error: invalid operand for instruction
2444 // CHECK-ERROR:        smull v0.4s, v1.4s, v2.4h
2445 // CHECK-ERROR:                        ^
2446 // CHECK-ERROR: error: invalid operand for instruction
2447 // CHECK-ERROR:        smull v0.2d, v1.2d, v2.2s
2448 // CHECK-ERROR:                        ^
2449
2450         smull2 v0.8h, v1.16h, v2.16b
2451         smull2 v0.4s, v1.8s, v2.8h
2452         smull2 v0.2d, v1.4d, v2.4s
2453
2454 // CHECK-ERROR: error: invalid operand for instruction
2455 // CHECK-ERROR:        smull2 v0.8h, v1.16h, v2.16b
2456 // CHECK-ERROR:                      ^
2457 // CHECK-ERROR: error: invalid operand for instruction
2458 // CHECK-ERROR:        smull2 v0.4s, v1.8s, v2.8h
2459 // CHECK-ERROR:                      ^
2460 // CHECK-ERROR: error: invalid operand for instruction
2461 // CHECK-ERROR:        smull2 v0.2d, v1.4d, v2.4s
2462 // CHECK-ERROR:                      ^
2463
2464         umull v0.8h, v1.8h, v2.8b
2465         umull v0.4s, v1.4s, v2.4h
2466         umull v0.2d, v1.2d, v2.2s
2467
2468 // CHECK-ERROR: error: invalid operand for instruction
2469 // CHECK-ERROR:        umull v0.8h, v1.8h, v2.8b
2470 // CHECK-ERROR:                        ^
2471 // CHECK-ERROR: error: invalid operand for instruction
2472 // CHECK-ERROR:        umull v0.4s, v1.4s, v2.4h
2473 // CHECK-ERROR:                        ^
2474 // CHECK-ERROR: error: invalid operand for instruction
2475 // CHECK-ERROR:        umull v0.2d, v1.2d, v2.2s
2476 // CHECK-ERROR:                        ^
2477
2478         umull2 v0.8h, v1.16h, v2.16b
2479         umull2 v0.4s, v1.8s, v2.8h
2480         umull2 v0.2d, v1.4d, v2.4s
2481
2482 // CHECK-ERROR: error: invalid operand for instruction
2483 // CHECK-ERROR:        umull2 v0.8h, v1.16h, v2.16b
2484 // CHECK-ERROR:                      ^
2485 // CHECK-ERROR: error: invalid operand for instruction
2486 // CHECK-ERROR:        umull2 v0.4s, v1.8s, v2.8h
2487 // CHECK-ERROR:                      ^
2488 // CHECK-ERROR: error: invalid operand for instruction
2489 // CHECK-ERROR:        umull2 v0.2d, v1.4d, v2.4s
2490 // CHECK-ERROR:                      ^
2491
2492 //------------------------------------------------------------------------------
2493 // Long - Variant 2
2494 //------------------------------------------------------------------------------
2495
2496         sqdmlal v0.4s, v1.4s, v2.4h
2497         sqdmlal v0.2d, v1.2d, v2.2s
2498
2499 // CHECK-ERROR: error: invalid operand for instruction
2500 // CHECK-ERROR:        sqdmlal v0.4s, v1.4s, v2.4h
2501 // CHECK-ERROR:                          ^
2502 // CHECK-ERROR: error: invalid operand for instruction
2503 // CHECK-ERROR:        sqdmlal v0.2d, v1.2d, v2.2s
2504 // CHECK-ERROR:                          ^
2505
2506         sqdmlal2 v0.4s, v1.8s, v2.8h
2507         sqdmlal2 v0.2d, v1.4d, v2.4s
2508
2509 // CHECK-ERROR: error: invalid operand for instruction
2510 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8s, v2.8h
2511 // CHECK-ERROR:                        ^
2512 // CHECK-ERROR: error: invalid operand for instruction
2513 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4d, v2.4s
2514 // CHECK-ERROR:                        ^
2515
2516         // Mismatched vector types
2517         sqdmlal v0.8h, v1.8b, v2.8b
2518         sqdmlal2 v0.8h, v1.16b, v2.16b
2519
2520 // CHECK-ERROR: error: invalid operand for instruction
2521 // CHECK-ERROR:        sqdmlal v0.8h, v1.8b, v2.8b
2522 // CHECK-ERROR:                   ^
2523 // CHECK-ERROR: error: invalid operand for instruction
2524 // CHECK-ERROR:        sqdmlal2 v0.8h, v1.16b, v2.16b
2525 // CHECK-ERROR:                    ^
2526
2527         sqdmlsl v0.4s, v1.4s, v2.4h
2528         sqdmlsl v0.2d, v1.2d, v2.2s
2529
2530 // CHECK-ERROR: error: invalid operand for instruction
2531 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4s, v2.4h
2532 // CHECK-ERROR:                          ^
2533 // CHECK-ERROR: error: invalid operand for instruction
2534 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2d, v2.2s
2535 // CHECK-ERROR:                          ^
2536
2537         sqdmlsl2 v0.4s, v1.8s, v2.8h
2538         sqdmlsl2 v0.2d, v1.4d, v2.4s
2539
2540 // CHECK-ERROR: error: invalid operand for instruction
2541 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8s, v2.8h
2542 // CHECK-ERROR:                        ^
2543 // CHECK-ERROR: error: invalid operand for instruction
2544 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4d, v2.4s
2545 // CHECK-ERROR:                        ^
2546
2547         // Mismatched vector types
2548         sqdmlsl v0.8h, v1.8b, v2.8b
2549         sqdmlsl2 v0.8h, v1.16b, v2.16b
2550
2551 // CHECK-ERROR: error: invalid operand for instruction
2552 // CHECK-ERROR:        sqdmlsl v0.8h, v1.8b, v2.8b
2553 // CHECK-ERROR:                   ^
2554 // CHECK-ERROR: error: invalid operand for instruction
2555 // CHECK-ERROR:        sqdmlsl2 v0.8h, v1.16b, v2.16b
2556 // CHECK-ERROR:                    ^
2557
2558
2559         sqdmull v0.4s, v1.4s, v2.4h
2560         sqdmull v0.2d, v1.2d, v2.2s
2561
2562 // CHECK-ERROR: error: invalid operand for instruction
2563 // CHECK-ERROR:        sqdmull v0.4s, v1.4s, v2.4h
2564 // CHECK-ERROR:                          ^
2565 // CHECK-ERROR: error: invalid operand for instruction
2566 // CHECK-ERROR:        sqdmull v0.2d, v1.2d, v2.2s
2567 // CHECK-ERROR:                          ^
2568
2569         sqdmull2 v0.4s, v1.8s, v2.8h
2570         sqdmull2 v0.2d, v1.4d, v2.4s
2571
2572 // CHECK-ERROR: error: invalid operand for instruction
2573 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8s, v2.8h
2574 // CHECK-ERROR:                        ^
2575 // CHECK-ERROR: error: invalid operand for instruction
2576 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4d, v2.4s
2577 // CHECK-ERROR:                        ^
2578
2579         // Mismatched vector types
2580         sqdmull v0.8h, v1.8b, v2.8b
2581         sqdmull2 v0.8h, v1.16b, v2.16b
2582
2583 // CHECK-ERROR: error: invalid operand for instruction
2584 // CHECK-ERROR:        sqdmull v0.8h, v1.8b, v2.8b
2585 // CHECK-ERROR:                   ^
2586 // CHECK-ERROR: error: invalid operand for instruction
2587 // CHECK-ERROR:        sqdmull2 v0.8h, v1.16b, v2.16b
2588 // CHECK-ERROR:                    ^
2589
2590
2591 //------------------------------------------------------------------------------
2592 // Long - Variant 3
2593 //------------------------------------------------------------------------------
2594
2595         pmull v0.8h, v1.8h, v2.8b
2596
2597 // CHECK-ERROR: error: invalid operand for instruction
2598 // CHECK-ERROR:        pmull v0.8h, v1.8h, v2.8b
2599 // CHECK-ERROR:                        ^
2600
2601         pmull v0.1q, v1.2d, v2.2d
2602         
2603 // CHECK-ERROR: error: invalid operand for instruction
2604 // CHECK-ERROR:        pmull v0.1q, v1.2d, v2.2d
2605 // CHECK-ERROR:                     ^
2606
2607         // Mismatched vector types
2608         pmull v0.4s, v1.4h, v2.4h
2609         pmull v0.2d, v1.2s, v2.2s
2610
2611 // CHECK-ERROR: error: invalid operand for instruction
2612 // CHECK-ERROR:        pmull v0.4s, v1.4h, v2.4h
2613 // CHECK-ERROR:                 ^
2614 // CHECK-ERROR: error: invalid operand for instruction
2615 // CHECK-ERROR:        pmull v0.2d, v1.2s, v2.2s
2616 // CHECK-ERROR:                 ^
2617
2618
2619         pmull2 v0.8h, v1.16h, v2.16b
2620
2621 // CHECK-ERROR: error: invalid operand for instruction
2622 // CHECK-ERROR:        pmull2 v0.8h, v1.16h, v2.16b
2623 // CHECK-ERROR:                      ^
2624
2625         pmull2 v0.q, v1.2d, v2.2d
2626         
2627 // CHECK-ERROR: error: invalid operand for instruction
2628 // CHECK-ERROR:        pmull2 v0.q, v1.2d, v2.2d
2629 // CHECK-ERROR:                  ^
2630
2631         // Mismatched vector types
2632         pmull2 v0.4s, v1.8h v2.8h
2633         pmull2 v0.2d, v1.4s, v2.4s
2634
2635
2636 // CHECK-ARM64-ERROR: error: unexpected token in argument list
2637 // CHECK-ARM64-ERROR:        pmull2 v0.4s, v1.8h v2.8h
2638 // CHECK-ARM64-ERROR:                            ^
2639
2640 // CHECK-ERROR: error: invalid operand for instruction
2641 // CHECK-ERROR:        pmull2 v0.2d, v1.4s, v2.4s
2642 // CHECK-ERROR:                  ^
2643
2644 //------------------------------------------------------------------------------
2645 // Widen
2646 //------------------------------------------------------------------------------
2647
2648         saddw v0.8h, v1.8h, v2.8h
2649         saddw v0.4s, v1.4s, v2.4s
2650         saddw v0.2d, v1.2d, v2.2d
2651
2652 // CHECK-ERROR: error: invalid operand for instruction
2653 // CHECK-ERROR:        saddw v0.8h, v1.8h, v2.8h
2654 // CHECK-ERROR:                               ^
2655 // CHECK-ERROR: error: invalid operand for instruction
2656 // CHECK-ERROR:        saddw v0.4s, v1.4s, v2.4s
2657 // CHECK-ERROR:                               ^
2658 // CHECK-ERROR: error: invalid operand for instruction
2659 // CHECK-ERROR:        saddw v0.2d, v1.2d, v2.2d
2660 // CHECK-ERROR:                               ^
2661
2662         saddw2 v0.8h, v1.8h, v2.16h
2663         saddw2 v0.4s, v1.4s, v2.8s
2664         saddw2 v0.2d, v1.2d, v2.4d
2665
2666 // CHECK-ERROR: error: invalid operand for instruction
2667 // CHECK-ERROR:        saddw2 v0.8h, v1.8h, v2.16h
2668 // CHECK-ERROR:                             ^
2669 // CHECK-ERROR: error: invalid operand for instruction
2670 // CHECK-ERROR:        saddw2 v0.4s, v1.4s, v2.8s
2671 // CHECK-ERROR:                             ^
2672 // CHECK-ERROR: error: invalid operand for instruction
2673 // CHECK-ERROR:        saddw2 v0.2d, v1.2d, v2.4d
2674 // CHECK-ERROR:                             ^
2675
2676         uaddw v0.8h, v1.8h, v2.8h
2677         uaddw v0.4s, v1.4s, v2.4s
2678         uaddw v0.2d, v1.2d, v2.2d
2679
2680 // CHECK-ERROR: error: invalid operand for instruction
2681 // CHECK-ERROR:        uaddw v0.8h, v1.8h, v2.8h
2682 // CHECK-ERROR:                               ^
2683 // CHECK-ERROR: error: invalid operand for instruction
2684 // CHECK-ERROR:        uaddw v0.4s, v1.4s, v2.4s
2685 // CHECK-ERROR:                               ^
2686 // CHECK-ERROR: error: invalid operand for instruction
2687 // CHECK-ERROR:        uaddw v0.2d, v1.2d, v2.2d
2688 // CHECK-ERROR:                               ^
2689
2690         uaddw2 v0.8h, v1.8h, v2.16h
2691         uaddw2 v0.4s, v1.4s, v2.8s
2692         uaddw2 v0.2d, v1.2d, v2.4d
2693
2694 // CHECK-ERROR: error: invalid operand for instruction
2695 // CHECK-ERROR:        uaddw2 v0.8h, v1.8h, v2.16h
2696 // CHECK-ERROR:                             ^
2697 // CHECK-ERROR: error: invalid operand for instruction
2698 // CHECK-ERROR:        uaddw2 v0.4s, v1.4s, v2.8s
2699 // CHECK-ERROR:                             ^
2700 // CHECK-ERROR: error: invalid operand for instruction
2701 // CHECK-ERROR:        uaddw2 v0.2d, v1.2d, v2.4d
2702 // CHECK-ERROR:                             ^
2703
2704         ssubw v0.8h, v1.8h, v2.8h
2705         ssubw v0.4s, v1.4s, v2.4s
2706         ssubw v0.2d, v1.2d, v2.2d
2707
2708 // CHECK-ERROR: error: invalid operand for instruction
2709 // CHECK-ERROR:        ssubw v0.8h, v1.8h, v2.8h
2710 // CHECK-ERROR:                               ^
2711 // CHECK-ERROR: error: invalid operand for instruction
2712 // CHECK-ERROR:        ssubw v0.4s, v1.4s, v2.4s
2713 // CHECK-ERROR:                               ^
2714 // CHECK-ERROR: error: invalid operand for instruction
2715 // CHECK-ERROR:        ssubw v0.2d, v1.2d, v2.2d
2716 // CHECK-ERROR:                               ^
2717
2718         ssubw2 v0.8h, v1.8h, v2.16h
2719         ssubw2 v0.4s, v1.4s, v2.8s
2720         ssubw2 v0.2d, v1.2d, v2.4d
2721
2722 // CHECK-ERROR: error: invalid operand for instruction
2723 // CHECK-ERROR:        ssubw2 v0.8h, v1.8h, v2.16h
2724 // CHECK-ERROR:                             ^
2725 // CHECK-ERROR: error: invalid operand for instruction
2726 // CHECK-ERROR:        ssubw2 v0.4s, v1.4s, v2.8s
2727 // CHECK-ERROR:                             ^
2728 // CHECK-ERROR: error: invalid operand for instruction
2729 // CHECK-ERROR:        ssubw2 v0.2d, v1.2d, v2.4d
2730 // CHECK-ERROR:                             ^
2731
2732         usubw v0.8h, v1.8h, v2.8h
2733         usubw v0.4s, v1.4s, v2.4s
2734         usubw v0.2d, v1.2d, v2.2d
2735
2736 // CHECK-ERROR: error: invalid operand for instruction
2737 // CHECK-ERROR:        usubw v0.8h, v1.8h, v2.8h
2738 // CHECK-ERROR:                               ^
2739 // CHECK-ERROR: error: invalid operand for instruction
2740 // CHECK-ERROR:        usubw v0.4s, v1.4s, v2.4s
2741 // CHECK-ERROR:                               ^
2742 // CHECK-ERROR: error: invalid operand for instruction
2743 // CHECK-ERROR:        usubw v0.2d, v1.2d, v2.2d
2744 // CHECK-ERROR:                               ^
2745
2746         usubw2 v0.8h, v1.8h, v2.16h
2747         usubw2 v0.4s, v1.4s, v2.8s
2748         usubw2 v0.2d, v1.2d, v2.4d
2749
2750 // CHECK-ERROR: error: invalid operand for instruction
2751 // CHECK-ERROR:        usubw2 v0.8h, v1.8h, v2.16h
2752 // CHECK-ERROR:                             ^
2753 // CHECK-ERROR: error: invalid operand for instruction
2754 // CHECK-ERROR:        usubw2 v0.4s, v1.4s, v2.8s
2755 // CHECK-ERROR:                             ^
2756 // CHECK-ERROR: error: invalid operand for instruction
2757 // CHECK-ERROR:        usubw2 v0.2d, v1.2d, v2.4d
2758 // CHECK-ERROR:                             ^
2759
2760 //------------------------------------------------------------------------------
2761 // Narrow
2762 //------------------------------------------------------------------------------
2763
2764         addhn v0.8b, v1.8h, v2.8d
2765         addhn v0.4h, v1.4s, v2.4h
2766         addhn v0.2s, v1.2d, v2.2s
2767
2768 // CHECK-ERROR: error: invalid operand for instruction
2769 // CHECK-ERROR:        addhn v0.8b, v1.8h, v2.8d
2770 // CHECK-ERROR:                            ^
2771 // CHECK-ERROR: error: invalid operand for instruction
2772 // CHECK-ERROR:        addhn v0.4h, v1.4s, v2.4h
2773 // CHECK-ERROR:                               ^
2774 // CHECK-ERROR: error: invalid operand for instruction
2775 // CHECK-ERROR:        addhn v0.2s, v1.2d, v2.2s
2776 // CHECK-ERROR:                               ^
2777
2778         addhn2 v0.16b, v1.8h, v2.8b
2779         addhn2 v0.8h, v1.4s, v2.4h
2780         addhn2 v0.4s, v1.2d, v2.2s
2781
2782 // CHECK-ERROR: error: invalid operand for instruction
2783 // CHECK-ERROR:        addhn2 v0.16b, v1.8h, v2.8b
2784 // CHECK-ERROR:                                 ^
2785 // CHECK-ERROR: error: invalid operand for instruction
2786 // CHECK-ERROR:        addhn2 v0.8h, v1.4s, v2.4h
2787 // CHECK-ERROR:                                ^
2788 // CHECK-ERROR: error: invalid operand for instruction
2789 // CHECK-ERROR:        addhn2 v0.4s, v1.2d, v2.2s
2790 // CHECK-ERROR:                                ^
2791
2792         raddhn v0.8b, v1.8h, v2.8b
2793         raddhn v0.4h, v1.4s, v2.4h
2794         raddhn v0.2s, v1.2d, v2.2s
2795
2796 // CHECK-ERROR: error: invalid operand for instruction
2797 // CHECK-ERROR:        raddhn v0.8b, v1.8h, v2.8b
2798 // CHECK-ERROR:                                ^
2799 // CHECK-ERROR: error: invalid operand for instruction
2800 // CHECK-ERROR:        raddhn v0.4h, v1.4s, v2.4h
2801 // CHECK-ERROR:                                ^
2802 // CHECK-ERROR: error: invalid operand for instruction
2803 // CHECK-ERROR:        raddhn v0.2s, v1.2d, v2.2s
2804 // CHECK-ERROR:                                ^
2805
2806         raddhn2 v0.16b, v1.8h, v2.8b
2807         raddhn2 v0.8h, v1.4s, v2.4h
2808         raddhn2 v0.4s, v1.2d, v2.2s
2809
2810 // CHECK-ERROR: error: invalid operand for instruction
2811 // CHECK-ERROR:        raddhn2 v0.16b, v1.8h, v2.8b
2812 // CHECK-ERROR:                                  ^
2813 // CHECK-ERROR: error: invalid operand for instruction
2814 // CHECK-ERROR:        raddhn2 v0.8h, v1.4s, v2.4h
2815 // CHECK-ERROR:                                 ^
2816 // CHECK-ERROR: error: invalid operand for instruction
2817 // CHECK-ERROR:        raddhn2 v0.4s, v1.2d, v2.2s
2818 // CHECK-ERROR:                                 ^
2819
2820         rsubhn v0.8b, v1.8h, v2.8b
2821         rsubhn v0.4h, v1.4s, v2.4h
2822         rsubhn v0.2s, v1.2d, v2.2s
2823
2824 // CHECK-ERROR: error: invalid operand for instruction
2825 // CHECK-ERROR:        rsubhn v0.8b, v1.8h, v2.8b
2826 // CHECK-ERROR:                                ^
2827 // CHECK-ERROR: error: invalid operand for instruction
2828 // CHECK-ERROR:        rsubhn v0.4h, v1.4s, v2.4h
2829 // CHECK-ERROR:                                ^
2830 // CHECK-ERROR: error: invalid operand for instruction
2831 // CHECK-ERROR:        rsubhn v0.2s, v1.2d, v2.2s
2832 // CHECK-ERROR:                                ^
2833
2834         rsubhn2 v0.16b, v1.8h, v2.8b
2835         rsubhn2 v0.8h, v1.4s, v2.4h
2836         rsubhn2 v0.4s, v1.2d, v2.2s
2837
2838 // CHECK-ERROR: error: invalid operand for instruction
2839 // CHECK-ERROR:        rsubhn2 v0.16b, v1.8h, v2.8b
2840 // CHECK-ERROR:                                  ^
2841 // CHECK-ERROR: error: invalid operand for instruction
2842 // CHECK-ERROR:        rsubhn2 v0.8h, v1.4s, v2.4h
2843 // CHECK-ERROR:                                 ^
2844 // CHECK-ERROR: error: invalid operand for instruction
2845 // CHECK-ERROR:        rsubhn2 v0.4s, v1.2d, v2.2s
2846 // CHECK-ERROR:                                 ^
2847
2848 //----------------------------------------------------------------------
2849 // Scalar Reduce Add Pairwise (Integer)
2850 //----------------------------------------------------------------------
2851          // invalid vector types
2852       addp s0, d1.2d
2853       addp d0, d1.2s
2854
2855 // CHECK-ERROR: error: invalid operand for instruction
2856 // CHECK-ERROR:          addp s0, d1.2d
2857 // CHECK-ERROR:               ^
2858 // CHECK-ERROR: error: invalid operand for instruction
2859 // CHECK-ERROR:          addp d0, d1.2s
2860 // CHECK-ERROR:                      ^
2861
2862 //----------------------------------------------------------------------
2863 // Scalar Reduce Add Pairwise (Floating Point)
2864 //----------------------------------------------------------------------
2865          // invalid vector types
2866       faddp s0, d1.2d
2867       faddp d0, d1.2s
2868
2869 // CHECK-ERROR: error: invalid operand for instruction
2870 // CHECK-ERROR:          faddp s0, d1.2d
2871 // CHECK-ERROR:                    ^
2872 // CHECK-ERROR: error: invalid operand for instruction
2873 // CHECK-ERROR:          faddp d0, d1.2s
2874 // CHECK-ERROR:                    ^
2875
2876 //----------------------------------------------------------------------
2877 // Scalar Reduce Maximum Pairwise (Floating Point)
2878 //----------------------------------------------------------------------
2879          // mismatched and invalid vector types
2880       fmaxp s0, v1.2d
2881       fmaxp d31, v2.2s
2882       fmaxp h3, v2.2s
2883
2884 // CHECK-ERROR: error: invalid operand for instruction
2885 // CHECK-ERROR:          fmaxp s0, v1.2d
2886 // CHECK-ERROR:                       ^
2887 // CHECK-ERROR: error: invalid operand for instruction
2888 // CHECK-ERROR:          fmaxp d31, v2.2s
2889 // CHECK-ERROR:                        ^
2890 // CHECK-ERROR: error: invalid operand for instruction
2891 // CHECK-ERROR:          fmaxp h3, v2.2s
2892 // CHECK-ERROR:                ^
2893
2894
2895 //----------------------------------------------------------------------
2896 // Scalar Reduce Minimum Pairwise (Floating Point)
2897 //----------------------------------------------------------------------
2898          // mismatched and invalid vector types
2899       fminp s0, v1.4h
2900       fminp d31, v2.8h
2901       fminp b3, v2.2s
2902
2903 // CHECK-ERROR: error: invalid operand for instruction
2904 // CHECK-ERROR:          fminp s0, v1.4h
2905 // CHECK-ERROR:                       ^
2906 // CHECK-ERROR: error: invalid operand for instruction
2907 // CHECK-ERROR:          fminp d31, v2.8h
2908 // CHECK-ERROR:                        ^
2909 // CHECK-ERROR: error: invalid operand for instruction
2910 // CHECK-ERROR:          fminp b3, v2.2s
2911 // CHECK-ERROR:                ^
2912
2913
2914 //----------------------------------------------------------------------
2915 // Scalar Reduce maxNum Pairwise (Floating Point)
2916 //----------------------------------------------------------------------
2917          // mismatched and invalid vector types
2918       fmaxnmp s0, v1.8b
2919       fmaxnmp d31, v2.16b
2920       fmaxnmp v1.2s, v2.2s
2921
2922 // CHECK-ERROR: error: invalid operand for instruction
2923 // CHECK-ERROR:          fmaxnmp s0, v1.8b
2924 // CHECK-ERROR:                         ^
2925 // CHECK-ERROR: error: invalid operand for instruction
2926 // CHECK-ERROR:          fmaxnmp d31, v2.16b
2927 // CHECK-ERROR:                          ^
2928 // CHECK-ERROR: error: too few operands for instruction
2929 // CHECK-ERROR:          fmaxnmp v1.2s, v2.2s
2930 // CHECK-ERROR:          ^
2931
2932 //----------------------------------------------------------------------
2933 // Scalar Reduce minNum Pairwise (Floating Point)
2934 //----------------------------------------------------------------------
2935          // mismatched and invalid vector types
2936       fminnmp s0, v1.2d
2937       fminnmp d31, v2.4s
2938       fminnmp v1.4s, v2.2d
2939
2940 // CHECK-ERROR: error: invalid operand for instruction
2941 // CHECK-ERROR:          fminnmp s0, v1.2d
2942 // CHECK-ERROR:                         ^
2943 // CHECK-ERROR: error: invalid operand for instruction
2944 // CHECK-ERROR:          fminnmp d31, v2.4s
2945 // CHECK-ERROR:                          ^
2946 // CHECK-ERROR: error: invalid operand for instruction
2947 // CHECK-ERROR:          fminnmp v1.4s, v2.2d
2948 // CHECK-ERROR:          ^
2949
2950       mla v0.2d, v1.2d, v16.d[1]
2951       mla v0.2s, v1.2s, v2.s[4]
2952       mla v0.4s, v1.4s, v2.s[4]
2953       mla v0.2h, v1.2h, v2.h[1]
2954       mla v0.4h, v1.4h, v2.h[8]
2955       mla v0.8h, v1.8h, v2.h[8]
2956       mla v0.4h, v1.4h, v16.h[2]
2957       mla v0.8h, v1.8h, v16.h[2]
2958
2959 // CHECK-ERROR: error: invalid operand for instruction
2960 // CHECK-ERROR:        mla v0.2d, v1.2d, v16.d[1]
2961 // CHECK-ERROR:               ^
2962 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2963 // CHECK-ERROR:        mla v0.2s, v1.2s, v2.s[4]
2964 // CHECK-ERROR:                               ^
2965 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2966 // CHECK-ERROR:        mla v0.4s, v1.4s, v2.s[4]
2967 // CHECK-ERROR:                               ^
2968 // CHECK-ERROR: error: invalid operand for instruction
2969 // CHECK-ERROR:        mla v0.2h, v1.2h, v2.h[1]
2970 // CHECK-ERROR:            ^
2971 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2972 // CHECK-ERROR:        mla v0.4h, v1.4h, v2.h[8]
2973 // CHECK-ERROR:                               ^
2974 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2975 // CHECK-ERROR:        mla v0.8h, v1.8h, v2.h[8]
2976 // CHECK-ERROR:                               ^
2977 // CHECK-ERROR: error: invalid operand for instruction
2978 // CHECK-ERROR:        mla v0.4h, v1.4h, v16.h[2]
2979 // CHECK-ERROR:                          ^
2980 // CHECK-ERROR: error: invalid operand for instruction
2981 // CHECK-ERROR:        mla v0.8h, v1.8h, v16.h[2]
2982 // CHECK-ERROR:                              ^
2983
2984       mls v0.2d, v1.2d, v16.d[1]
2985       mls v0.2s, v1.2s, v2.s[4]
2986       mls v0.4s, v1.4s, v2.s[4]
2987       mls v0.2h, v1.2h, v2.h[1]
2988       mls v0.4h, v1.4h, v2.h[8]
2989       mls v0.8h, v1.8h, v2.h[8]
2990       mls v0.4h, v1.4h, v16.h[2]
2991       mls v0.8h, v1.8h, v16.h[2]
2992
2993 // CHECK-ERROR: error: invalid operand for instruction
2994 // CHECK-ERROR:        mls v0.2d, v1.2d, v16.d[1]
2995 // CHECK-ERROR:               ^
2996 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2997 // CHECK-ERROR:        mls v0.2s, v1.2s, v2.s[4]
2998 // CHECK-ERROR:                               ^
2999 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3000 // CHECK-ERROR:        mls v0.4s, v1.4s, v2.s[4]
3001 // CHECK-ERROR:                               ^
3002 // CHECK-ERROR: error: invalid operand for instruction
3003 // CHECK-ERROR:        mls v0.2h, v1.2h, v2.h[1]
3004 // CHECK-ERROR:            ^
3005 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3006 // CHECK-ERROR:        mls v0.4h, v1.4h, v2.h[8]
3007 // CHECK-ERROR:                               ^
3008 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3009 // CHECK-ERROR:        mls v0.8h, v1.8h, v2.h[8]
3010 // CHECK-ERROR:                               ^
3011 // CHECK-ERROR: error: invalid operand for instruction
3012 // CHECK-ERROR:        mls v0.4h, v1.4h, v16.h[2]
3013 // CHECK-ERROR:                          ^
3014 // CHECK-ERROR: error: invalid operand for instruction
3015 // CHECK-ERROR:        mls v0.8h, v1.8h, v16.h[2]
3016 // CHECK-ERROR:                              ^
3017
3018       fmla v0.4h, v1.4h, v2.h[2]
3019       fmla v0.8h, v1.8h, v2.h[2]
3020       fmla v0.2s, v1.2s, v2.s[4]
3021       fmla v0.2s, v1.2s, v22.s[4]
3022       fmla v3.4s, v8.4s, v2.s[4]
3023       fmla v3.4s, v8.4s, v22.s[4]
3024       fmla v0.2d, v1.2d, v2.d[2]
3025       fmla v0.2d, v1.2d, v22.d[2]
3026
3027 // CHECK-ERROR: error: invalid operand for instruction
3028 // CHECK-ERROR:        fmla v0.4h, v1.4h, v2.h[2]
3029 // CHECK-ERROR:                ^
3030 // CHECK-ERROR: error: invalid operand for instruction
3031 // CHECK-ERROR:        fmla v0.8h, v1.8h, v2.h[2]
3032 // CHECK-ERROR:                ^
3033 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3034 // CHECK-ERROR:        fmla v0.2s, v1.2s, v2.s[4]
3035 // CHECK-ERROR:                                ^
3036 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3037 // CHECK-ERROR:        fmla v0.2s, v1.2s, v22.s[4]
3038 // CHECK-ERROR:                                 ^
3039 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3040 // CHECK-ERROR:        fmla v3.4s, v8.4s, v2.s[4]
3041 // CHECK-ERROR:                                ^
3042 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3043 // CHECK-ERROR:        fmla v3.4s, v8.4s, v22.s[4]
3044 // CHECK-ERROR:                                 ^
3045 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3046 // CHECK-ERROR:        fmla v0.2d, v1.2d, v2.d[2]
3047 // CHECK-ERROR:                                ^
3048 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3049 // CHECK-ERROR:        fmla v0.2d, v1.2d, v22.d[2]
3050 // CHECK-ERROR:                                 ^
3051
3052       fmls v0.4h, v1.4h, v2.h[2]
3053       fmls v0.8h, v1.8h, v2.h[2]
3054       fmls v0.2s, v1.2s, v2.s[4]
3055       fmls v0.2s, v1.2s, v22.s[4]
3056       fmls v3.4s, v8.4s, v2.s[4]
3057       fmls v3.4s, v8.4s, v22.s[4]
3058       fmls v0.2d, v1.2d, v2.d[2]
3059       fmls v0.2d, v1.2d, v22.d[2]
3060
3061 // CHECK-ERROR: error: invalid operand for instruction
3062 // CHECK-ERROR:        fmls v0.4h, v1.4h, v2.h[2]
3063 // CHECK-ERROR:                ^
3064 // CHECK-ERROR: error: invalid operand for instruction
3065 // CHECK-ERROR:        fmls v0.8h, v1.8h, v2.h[2]
3066 // CHECK-ERROR:                ^
3067 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3068 // CHECK-ERROR:        fmls v0.2s, v1.2s, v2.s[4]
3069 // CHECK-ERROR:                                ^
3070 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3071 // CHECK-ERROR:        fmls v0.2s, v1.2s, v22.s[4]
3072 // CHECK-ERROR:                                 ^
3073 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3074 // CHECK-ERROR:        fmls v3.4s, v8.4s, v2.s[4]
3075 // CHECK-ERROR:                                ^
3076 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3077 // CHECK-ERROR:        fmls v3.4s, v8.4s, v22.s[4]
3078 // CHECK-ERROR:                                 ^
3079 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3080 // CHECK-ERROR:        fmls v0.2d, v1.2d, v2.d[2]
3081 // CHECK-ERROR:                                ^
3082 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3083 // CHECK-ERROR:        fmls v0.2d, v1.2d, v22.d[2]
3084 // CHECK-ERROR:                                 ^
3085
3086       smlal v0.4h, v1.4h, v2.h[2]
3087       smlal v0.4s, v1.4h, v2.h[8]
3088       smlal v0.4s, v1.4h, v16.h[2]
3089       smlal v0.2s, v1.2s, v2.s[1]
3090       smlal v0.2d, v1.2s, v2.s[4]
3091       smlal v0.2d, v1.2s, v22.s[4]
3092       smlal2 v0.4h, v1.8h, v1.h[2]
3093       smlal2 v0.4s, v1.8h, v1.h[8]
3094       smlal2 v0.4s, v1.8h, v16.h[2]
3095       smlal2 v0.2s, v1.4s, v1.s[2]
3096       smlal2 v0.2d, v1.4s, v1.s[4]
3097       smlal2 v0.2d, v1.4s, v22.s[4]
3098
3099 // CHECK-ERROR: error: invalid operand for instruction
3100 // CHECK-ERROR:        smlal v0.4h, v1.4h, v2.h[2]
3101 // CHECK-ERROR:              ^
3102 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3103 // CHECK-ERROR:        smlal v0.4s, v1.4h, v2.h[8]
3104 // CHECK-ERROR:                                 ^
3105 // CHECK-ERROR: error: invalid operand for instruction
3106 // CHECK-ERROR:        smlal v0.4s, v1.4h, v16.h[2]
3107 // CHECK-ERROR:                            ^
3108 // CHECK-ERROR: error: invalid operand for instruction
3109 // CHECK-ERROR:        smlal v0.2s, v1.2s, v2.s[1]
3110 // CHECK-ERROR:                                 ^
3111 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3112 // CHECK-ERROR:        smlal v0.2d, v1.2s, v2.s[4]
3113 // CHECK-ERROR:                                 ^
3114 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3115 // CHECK-ERROR:        smlal v0.2d, v1.2s, v22.s[4]
3116 // CHECK-ERROR:                                  ^
3117 // CHECK-ERROR: error: invalid operand for instruction
3118 // CHECK-ERROR:        smlal2 v0.4h, v1.8h, v1.h[2]
3119 // CHECK-ERROR:               ^
3120 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3121 // CHECK-ERROR:        smlal2 v0.4s, v1.8h, v1.h[8]
3122 // CHECK-ERROR:                                  ^
3123 // CHECK-ERROR: error: invalid operand for instruction
3124 // CHECK-ERROR:        smlal2 v0.4s, v1.8h, v16.h[2]
3125 // CHECK-ERROR:                                 ^
3126 // CHECK-ERROR: error: invalid operand for instruction
3127 // CHECK-ERROR:        smlal2 v0.2s, v1.4s, v1.s[2]
3128 // CHECK-ERROR:               ^
3129 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3130 // CHECK-ERROR:        smlal2 v0.2d, v1.4s, v1.s[4]
3131 // CHECK-ERROR:                                  ^
3132 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3133 // CHECK-ERROR:        smlal2 v0.2d, v1.4s, v22.s[4]
3134 // CHECK-ERROR:                                   ^
3135
3136       smlsl v0.4h, v1.4h, v2.h[2]
3137       smlsl v0.4s, v1.4h, v2.h[8]
3138       smlsl v0.4s, v1.4h, v16.h[2]
3139       smlsl v0.2s, v1.2s, v2.s[1]
3140       smlsl v0.2d, v1.2s, v2.s[4]
3141       smlsl v0.2d, v1.2s, v22.s[4]
3142       smlsl2 v0.4h, v1.8h, v1.h[2]
3143       smlsl2 v0.4s, v1.8h, v1.h[8]
3144       smlsl2 v0.4s, v1.8h, v16.h[2]
3145       smlsl2 v0.2s, v1.4s, v1.s[2]
3146       smlsl2 v0.2d, v1.4s, v1.s[4]
3147       smlsl2 v0.2d, v1.4s, v22.s[4]
3148
3149 // CHECK-ERROR: error: invalid operand for instruction
3150 // CHECK-ERROR:        smlsl v0.4h, v1.4h, v2.h[2]
3151 // CHECK-ERROR:              ^
3152 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3153 // CHECK-ERROR:        smlsl v0.4s, v1.4h, v2.h[8]
3154 // CHECK-ERROR:                                 ^
3155 // CHECK-ERROR: error: invalid operand for instruction
3156 // CHECK-ERROR:        smlsl v0.4s, v1.4h, v16.h[2]
3157 // CHECK-ERROR:                            ^
3158 // CHECK-ERROR: error: invalid operand for instruction
3159 // CHECK-ERROR:        smlsl v0.2s, v1.2s, v2.s[1]
3160 // CHECK-ERROR:                                 ^
3161 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3162 // CHECK-ERROR:        smlsl v0.2d, v1.2s, v2.s[4]
3163 // CHECK-ERROR:                                 ^
3164 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3165 // CHECK-ERROR:        smlsl v0.2d, v1.2s, v22.s[4]
3166 // CHECK-ERROR:                                  ^
3167 // CHECK-ERROR: error: invalid operand for instruction
3168 // CHECK-ERROR:        smlsl2 v0.4h, v1.8h, v1.h[2]
3169 // CHECK-ERROR:               ^
3170 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3171 // CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v1.h[8]
3172 // CHECK-ERROR:                                  ^
3173 // CHECK-ERROR: error: invalid operand for instruction
3174 // CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v16.h[2]
3175 // CHECK-ERROR:                                 ^
3176 // CHECK-ERROR: error: invalid operand for instruction
3177 // CHECK-ERROR:        smlsl2 v0.2s, v1.4s, v1.s[2]
3178 // CHECK-ERROR:               ^
3179 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3180 // CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v1.s[4]
3181 // CHECK-ERROR:                                  ^
3182 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3183 // CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v22.s[4]
3184 // CHECK-ERROR:                                   ^
3185
3186       umlal v0.4h, v1.4h, v2.h[2]
3187       umlal v0.4s, v1.4h, v2.h[8]
3188       umlal v0.4s, v1.4h, v16.h[2]
3189       umlal v0.2s, v1.2s, v2.s[1]
3190       umlal v0.2d, v1.2s, v2.s[4]
3191       umlal v0.2d, v1.2s, v22.s[4]
3192       umlal2 v0.4h, v1.8h, v1.h[2]
3193       umlal2 v0.4s, v1.8h, v1.h[8]
3194       umlal2 v0.4s, v1.8h, v16.h[2]
3195       umlal2 v0.2s, v1.4s, v1.s[2]
3196       umlal2 v0.2d, v1.4s, v1.s[4]
3197       umlal2 v0.2d, v1.4s, v22.s[4]
3198
3199 // CHECK-ERROR: error: invalid operand for instruction
3200 // CHECK-ERROR:        umlal v0.4h, v1.4h, v2.h[2]
3201 // CHECK-ERROR:              ^
3202 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3203 // CHECK-ERROR:        umlal v0.4s, v1.4h, v2.h[8]
3204 // CHECK-ERROR:                                 ^
3205 // CHECK-ERROR: error: invalid operand for instruction
3206 // CHECK-ERROR:        umlal v0.4s, v1.4h, v16.h[2]
3207 // CHECK-ERROR:                            ^
3208 // CHECK-ERROR: error: invalid operand for instruction
3209 // CHECK-ERROR:        umlal v0.2s, v1.2s, v2.s[1]
3210 // CHECK-ERROR:                                 ^
3211 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3212 // CHECK-ERROR:        umlal v0.2d, v1.2s, v2.s[4]
3213 // CHECK-ERROR:                                 ^
3214 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3215 // CHECK-ERROR:        umlal v0.2d, v1.2s, v22.s[4]
3216 // CHECK-ERROR:                                  ^
3217 // CHECK-ERROR: error: invalid operand for instruction
3218 // CHECK-ERROR:        umlal2 v0.4h, v1.8h, v1.h[2]
3219 // CHECK-ERROR:               ^
3220 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3221 // CHECK-ERROR:        umlal2 v0.4s, v1.8h, v1.h[8]
3222 // CHECK-ERROR:                                  ^
3223 // CHECK-ERROR: error: invalid operand for instruction
3224 // CHECK-ERROR:        umlal2 v0.4s, v1.8h, v16.h[2]
3225 // CHECK-ERROR:                                 ^
3226 // CHECK-ERROR: error: invalid operand for instruction
3227 // CHECK-ERROR:        umlal2 v0.2s, v1.4s, v1.s[2]
3228 // CHECK-ERROR:               ^
3229 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3230 // CHECK-ERROR:        umlal2 v0.2d, v1.4s, v1.s[4]
3231 // CHECK-ERROR:                                  ^
3232 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3233 // CHECK-ERROR:        umlal2 v0.2d, v1.4s, v22.s[4]
3234 // CHECK-ERROR:                                   ^
3235
3236       umlsl v0.4h, v1.4h, v2.h[2]
3237       umlsl v0.4s, v1.4h, v2.h[8]
3238       umlsl v0.4s, v1.4h, v16.h[2]
3239       umlsl v0.2s, v1.2s, v2.s[3]
3240       umlsl v0.2d, v1.2s, v2.s[4]
3241       umlsl v0.2d, v1.2s, v22.s[4]
3242       umlsl2 v0.4h, v1.8h, v1.h[2]
3243       umlsl2 v0.4s, v1.8h, v1.h[8]
3244       umlsl2 v0.4s, v1.8h, v16.h[2]
3245       umlsl2 v0.2s, v1.4s, v1.s[2]
3246       umlsl2 v0.2d, v1.4s, v1.s[4]
3247       umlsl2 v0.2d, v1.4s, v22.s[4]
3248
3249 // CHECK-ERROR: error: invalid operand for instruction
3250 // CHECK-ERROR:        umlsl v0.4h, v1.4h, v2.h[2]
3251 // CHECK-ERROR:              ^
3252 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3253 // CHECK-ERROR:        umlsl v0.4s, v1.4h, v2.h[8]
3254 // CHECK-ERROR:                                 ^
3255 // CHECK-ERROR: error: invalid operand for instruction
3256 // CHECK-ERROR:        umlsl v0.4s, v1.4h, v16.h[2]
3257 // CHECK-ERROR:                            ^
3258 // CHECK-ERROR: error: invalid operand for instruction
3259 // CHECK-ERROR:        umlsl v0.2s, v1.2s, v2.s[3]
3260 // CHECK-ERROR:                                 ^
3261 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3262 // CHECK-ERROR:        umlsl v0.2d, v1.2s, v2.s[4]
3263 // CHECK-ERROR:                                 ^
3264 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3265 // CHECK-ERROR:        umlsl v0.2d, v1.2s, v22.s[4]
3266 // CHECK-ERROR:                                  ^
3267 // CHECK-ERROR: error: invalid operand for instruction
3268 // CHECK-ERROR:        umlsl2 v0.4h, v1.8h, v1.h[2]
3269 // CHECK-ERROR:               ^
3270 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3271 // CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v1.h[8]
3272 // CHECK-ERROR:                                  ^
3273 // CHECK-ERROR: error: invalid operand for instruction
3274 // CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v16.h[2]
3275 // CHECK-ERROR:                                 ^
3276 // CHECK-ERROR: error: invalid operand for instruction
3277 // CHECK-ERROR:        umlsl2 v0.2s, v1.4s, v1.s[2]
3278 // CHECK-ERROR:               ^
3279 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3280 // CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v1.s[4]
3281 // CHECK-ERROR:                                  ^
3282 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3283 // CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v22.s[4]
3284 // CHECK-ERROR:                                   ^
3285
3286       sqdmlal v0.4h, v1.4h, v2.h[2]
3287       sqdmlal v0.4s, v1.4h, v2.h[8]
3288       sqdmlal v0.4s, v1.4h, v16.h[2]
3289       sqdmlal v0.2s, v1.2s, v2.s[3]
3290       sqdmlal v0.2d, v1.2s, v2.s[4]
3291       sqdmlal v0.2d, v1.2s, v22.s[4]
3292       sqdmlal2 v0.4h, v1.8h, v1.h[2]
3293       sqdmlal2 v0.4s, v1.8h, v1.h[8]
3294       sqdmlal2 v0.4s, v1.8h, v16.h[2]
3295       sqdmlal2 v0.2s, v1.4s, v1.s[2]
3296       sqdmlal2 v0.2d, v1.4s, v1.s[4]
3297       sqdmlal2 v0.2d, v1.4s, v22.s[4]
3298
3299 // CHECK-ERROR: error: invalid operand for instruction
3300 // CHECK-ERROR:        sqdmlal v0.4h, v1.4h, v2.h[2]
3301 // CHECK-ERROR:                ^
3302 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3303 // CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v2.h[8]
3304 // CHECK-ERROR:                                   ^
3305 // CHECK-ERROR: error: invalid operand for instruction
3306 // CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v16.h[2]
3307 // CHECK-ERROR:                              ^
3308 // CHECK-ERROR: error: invalid operand for instruction
3309 // CHECK-ERROR:        sqdmlal v0.2s, v1.2s, v2.s[3]
3310 // CHECK-ERROR:                                   ^
3311 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3312 // CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v2.s[4]
3313 // CHECK-ERROR:                                   ^
3314 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3315 // CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v22.s[4]
3316 // CHECK-ERROR:                                    ^
3317 // CHECK-ERROR: error: invalid operand for instruction
3318 // CHECK-ERROR:        sqdmlal2 v0.4h, v1.8h, v1.h[2]
3319 // CHECK-ERROR:                 ^
3320 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3321 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v1.h[8]
3322 // CHECK-ERROR:                                    ^
3323 // CHECK-ERROR: error: invalid operand for instruction
3324 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v16.h[2]
3325 // CHECK-ERROR:                                   ^
3326 // CHECK-ERROR: error: invalid operand for instruction
3327 // CHECK-ERROR:        sqdmlal2 v0.2s, v1.4s, v1.s[2]
3328 // CHECK-ERROR:                 ^
3329 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3330 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v1.s[4]
3331 // CHECK-ERROR:                                    ^
3332 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3333 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v22.s[4]
3334 // CHECK-ERROR:                                     ^
3335
3336       sqdmlsl v0.4h, v1.4h, v2.h[2]
3337       sqdmlsl v0.4s, v1.4h, v2.h[8]
3338       sqdmlsl v0.4s, v1.4h, v16.h[2]
3339       sqdmlsl v0.2s, v1.2s, v2.s[3]
3340       sqdmlsl v0.2d, v1.2s, v2.s[4]
3341       sqdmlsl v0.2d, v1.2s, v22.s[4]
3342       sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3343       sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3344       sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3345       sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3346       sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3347       sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3348
3349 // CHECK-ERROR: error: invalid operand for instruction
3350 // CHECK-ERROR:        sqdmlsl v0.4h, v1.4h, v2.h[2]
3351 // CHECK-ERROR:                ^
3352 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3353 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v2.h[8]
3354 // CHECK-ERROR:                                   ^
3355 // CHECK-ERROR: error: invalid operand for instruction
3356 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v16.h[2]
3357 // CHECK-ERROR:                              ^
3358 // CHECK-ERROR: error: invalid operand for instruction
3359 // CHECK-ERROR:        sqdmlsl v0.2s, v1.2s, v2.s[3]
3360 // CHECK-ERROR:                                   ^
3361 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3362 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v2.s[4]
3363 // CHECK-ERROR:                                   ^
3364 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3365 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v22.s[4]
3366 // CHECK-ERROR:                                    ^
3367 // CHECK-ERROR: error: invalid operand for instruction
3368 // CHECK-ERROR:        sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3369 // CHECK-ERROR:                 ^
3370 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3371 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3372 // CHECK-ERROR:                                    ^
3373 // CHECK-ERROR: error: invalid operand for instruction
3374 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3375 // CHECK-ERROR:                                   ^
3376 // CHECK-ERROR: error: invalid operand for instruction
3377 // CHECK-ERROR:        sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3378 // CHECK-ERROR:                 ^
3379 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3380 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3381 // CHECK-ERROR:                                    ^
3382 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3383 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3384 // CHECK-ERROR:                                     ^
3385
3386       mul v0.4h, v1.4h, v2.h[8]
3387       mul v0.4h, v1.4h, v16.h[8]
3388       mul v0.8h, v1.8h, v2.h[8]
3389       mul v0.8h, v1.8h, v16.h[8]
3390       mul v0.2s, v1.2s, v2.s[4]
3391       mul v0.2s, v1.2s, v22.s[4]
3392       mul v0.4s, v1.4s, v2.s[4]
3393       mul v0.4s, v1.4s, v22.s[4]
3394       mul v0.2d, v1.2d, v2.d[1]
3395
3396 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3397 // CHECK-ERROR:        mul v0.4h, v1.4h, v2.h[8]
3398 // CHECK-ERROR:                               ^
3399 // CHECK-ARM64-ERROR: error: invalid operand for instruction
3400 // CHECK-ERROR:        mul v0.4h, v1.4h, v16.h[8]
3401 // CHECK-ERROR:                                ^
3402 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3403 // CHECK-ERROR:        mul v0.8h, v1.8h, v2.h[8]
3404 // CHECK-ERROR:                               ^
3405 // CHECK-ARM64-ERROR: invalid operand for instruction
3406 // CHECK-ERROR:        mul v0.8h, v1.8h, v16.h[8]
3407 // CHECK-ERROR:                                ^
3408 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3409 // CHECK-ERROR:        mul v0.2s, v1.2s, v2.s[4]
3410 // CHECK-ERROR:                               ^
3411 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3412 // CHECK-ERROR:        mul v0.2s, v1.2s, v22.s[4]
3413 // CHECK-ERROR:                                ^
3414 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3415 // CHECK-ERROR:        mul v0.4s, v1.4s, v2.s[4]
3416 // CHECK-ERROR:                               ^
3417 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3418 // CHECK-ERROR:        mul v0.4s, v1.4s, v22.s[4]
3419 // CHECK-ERROR:                                ^
3420
3421       fmul v0.4h, v1.4h, v2.h[4]
3422       fmul v0.2s, v1.2s, v2.s[4]
3423       fmul v0.2s, v1.2s, v22.s[4]
3424       fmul v0.4s, v1.4s, v2.s[4]
3425       fmul v0.4s, v1.4s, v22.s[4]
3426       fmul v0.2d, v1.2d, v2.d[2]
3427       fmul v0.2d, v1.2d, v22.d[2]
3428
3429 // CHECK-ERROR: error: invalid operand for instruction
3430 // CHECK-ERROR:        mul v0.2d, v1.2d, v2.d[1]
3431 // CHECK-ERROR:               ^
3432 // CHECK-ERROR: error: invalid operand for instruction
3433 // CHECK-ERROR:        fmul v0.4h, v1.4h, v2.h[4]
3434 // CHECK-ERROR:                ^
3435 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3436 // CHECK-ERROR:        fmul v0.2s, v1.2s, v2.s[4]
3437 // CHECK-ERROR:                                ^
3438 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3439 // CHECK-ERROR:        fmul v0.2s, v1.2s, v22.s[4]
3440 // CHECK-ERROR:                                 ^
3441 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3442 // CHECK-ERROR:        fmul v0.4s, v1.4s, v2.s[4]
3443 // CHECK-ERROR:                                ^
3444 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3445 // CHECK-ERROR:        fmul v0.4s, v1.4s, v22.s[4]
3446 // CHECK-ERROR:                                 ^
3447 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3448 // CHECK-ERROR:        fmul v0.2d, v1.2d, v2.d[2]
3449 // CHECK-ERROR:                                ^
3450 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3451 // CHECK-ERROR:        fmul v0.2d, v1.2d, v22.d[2]
3452 // CHECK-ERROR:                                 ^
3453
3454       fmulx v0.4h, v1.4h, v2.h[4]
3455       fmulx v0.2s, v1.2s, v2.s[4]
3456       fmulx v0.2s, v1.2s, v22.s[4]
3457       fmulx v0.4s, v1.4s, v2.s[4]
3458       fmulx v0.4s, v1.4s, v22.s[4]
3459       fmulx v0.2d, v1.2d, v2.d[2]
3460       fmulx v0.2d, v1.2d, v22.d[2]
3461
3462 // CHECK-ERROR: error: invalid operand for instruction
3463 // CHECK-ERROR:        fmulx v0.4h, v1.4h, v2.h[4]
3464 // CHECK-ERROR:                 ^
3465 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3466 // CHECK-ERROR:        fmulx v0.2s, v1.2s, v2.s[4]
3467 // CHECK-ERROR:                                 ^
3468 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3469 // CHECK-ERROR:        fmulx v0.2s, v1.2s, v22.s[4]
3470 // CHECK-ERROR:                                  ^
3471 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3472 // CHECK-ERROR:        fmulx v0.4s, v1.4s, v2.s[4]
3473 // CHECK-ERROR:                                 ^
3474 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3475 // CHECK-ERROR:        fmulx v0.4s, v1.4s, v22.s[4]
3476 // CHECK-ERROR:                                  ^
3477 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3478 // CHECK-ERROR:        fmulx v0.2d, v1.2d, v2.d[2]
3479 // CHECK-ERROR:                                 ^
3480 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3481 // CHECK-ERROR:        fmulx v0.2d, v1.2d, v22.d[2]
3482 // CHECK-ERROR:                                  ^
3483
3484       smull v0.4h, v1.4h, v2.h[2]
3485       smull v0.4s, v1.4h, v2.h[8]
3486       smull v0.4s, v1.4h, v16.h[4]
3487       smull v0.2s, v1.2s, v2.s[2]
3488       smull v0.2d, v1.2s, v2.s[4]
3489       smull v0.2d, v1.2s, v22.s[4]
3490       smull2 v0.4h, v1.8h, v2.h[2]
3491       smull2 v0.4s, v1.8h, v2.h[8]
3492       smull2 v0.4s, v1.8h, v16.h[4]
3493       smull2 v0.2s, v1.4s, v2.s[2]
3494       smull2 v0.2d, v1.4s, v2.s[4]
3495       smull2 v0.2d, v1.4s, v22.s[4]
3496
3497 // CHECK-ERROR: error: invalid operand for instruction
3498 // CHECK-ERROR:        smull v0.4h, v1.4h, v2.h[2]
3499 // CHECK-ERROR:              ^
3500 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3501 // CHECK-ERROR:        smull v0.4s, v1.4h, v2.h[8]
3502 // CHECK-ERROR:                                 ^
3503 // CHECK-ERROR: error: invalid operand for instruction
3504 // CHECK-ERROR:        smull v0.4s, v1.4h, v16.h[4]
3505 // CHECK-ERROR:                            ^
3506 // CHECK-ERROR: error: invalid operand for instruction
3507 // CHECK-ERROR:        smull v0.2s, v1.2s, v2.s[2]
3508 // CHECK-ERROR:              ^
3509 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3510 // CHECK-ERROR:        smull v0.2d, v1.2s, v2.s[4]
3511 // CHECK-ERROR:                                 ^
3512 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3513 // CHECK-ERROR:        smull v0.2d, v1.2s, v22.s[4]
3514 // CHECK-ERROR:                                  ^
3515 // CHECK-ERROR: error: invalid operand for instruction
3516 // CHECK-ERROR:        smull2 v0.4h, v1.8h, v2.h[2]
3517 // CHECK-ERROR:               ^
3518 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3519 // CHECK-ERROR:        smull2 v0.4s, v1.8h, v2.h[8]
3520 // CHECK-ERROR:                                  ^
3521 // CHECK-ERROR: error: invalid operand for instruction
3522 // CHECK-ERROR:        smull2 v0.4s, v1.8h, v16.h[4]
3523 // CHECK-ERROR:                                 ^
3524 // CHECK-ERROR: error: invalid operand for instruction
3525 // CHECK-ERROR:        smull2 v0.2s, v1.4s, v2.s[2]
3526 // CHECK-ERROR:               ^
3527 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3528 // CHECK-ERROR:        smull2 v0.2d, v1.4s, v2.s[4]
3529 // CHECK-ERROR:                                  ^
3530 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3531 // CHECK-ERROR:        smull2 v0.2d, v1.4s, v22.s[4]
3532 // CHECK-ERROR:                                   ^
3533
3534       umull v0.4h, v1.4h, v2.h[2]
3535       umull v0.4s, v1.4h, v2.h[8]
3536       umull v0.4s, v1.4h, v16.h[4]
3537       umull v0.2s, v1.2s, v2.s[2]
3538       umull v0.2d, v1.2s, v2.s[4]
3539       umull v0.2d, v1.2s, v22.s[4]
3540       umull2 v0.4h, v1.8h, v2.h[2]
3541       umull2 v0.4s, v1.8h, v2.h[8]
3542       umull2 v0.4s, v1.8h, v16.h[4]
3543       umull2 v0.2s, v1.4s, v2.s[2]
3544       umull2 v0.2d, v1.4s, v2.s[4]
3545       umull2 v0.2d, v1.4s, v22.s[4]
3546
3547 // CHECK-ERROR: error: invalid operand for instruction
3548 // CHECK-ERROR:        umull v0.4h, v1.4h, v2.h[2]
3549 // CHECK-ERROR:              ^
3550 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3551 // CHECK-ERROR:        umull v0.4s, v1.4h, v2.h[8]
3552 // CHECK-ERROR:                                 ^
3553 // CHECK-ERROR: error: invalid operand for instruction
3554 // CHECK-ERROR:        umull v0.4s, v1.4h, v16.h[4]
3555 // CHECK-ERROR:                            ^
3556 // CHECK-ERROR: error: invalid operand for instruction
3557 // CHECK-ERROR:        umull v0.2s, v1.2s, v2.s[2]
3558 // CHECK-ERROR:              ^
3559 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3560 // CHECK-ERROR:        umull v0.2d, v1.2s, v2.s[4]
3561 // CHECK-ERROR:                                 ^
3562 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3563 // CHECK-ERROR:        umull v0.2d, v1.2s, v22.s[4]
3564 // CHECK-ERROR:                                  ^
3565 // CHECK-ERROR: error: invalid operand for instruction
3566 // CHECK-ERROR:        umull2 v0.4h, v1.8h, v2.h[2]
3567 // CHECK-ERROR:               ^
3568 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3569 // CHECK-ERROR:        umull2 v0.4s, v1.8h, v2.h[8]
3570 // CHECK-ERROR:                                  ^
3571 // CHECK-ERROR: error: invalid operand for instruction
3572 // CHECK-ERROR:        umull2 v0.4s, v1.8h, v16.h[4]
3573 // CHECK-ERROR:                                 ^
3574 // CHECK-ERROR: error: invalid operand for instruction
3575 // CHECK-ERROR:        umull2 v0.2s, v1.4s, v2.s[2]
3576 // CHECK-ERROR:               ^
3577 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3578 // CHECK-ERROR:        umull2 v0.2d, v1.4s, v2.s[4]
3579 // CHECK-ERROR:                                  ^
3580 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3581 // CHECK-ERROR:        umull2 v0.2d, v1.4s, v22.s[4]
3582 // CHECK-ERROR:                                   ^
3583
3584       sqdmull v0.4h, v1.4h, v2.h[2]
3585       sqdmull v0.4s, v1.4h, v2.h[8]
3586       sqdmull v0.4s, v1.4h, v16.h[4]
3587       sqdmull v0.2s, v1.2s, v2.s[2]
3588       sqdmull v0.2d, v1.2s, v2.s[4]
3589       sqdmull v0.2d, v1.2s, v22.s[4]
3590       sqdmull2 v0.4h, v1.8h, v2.h[2]
3591       sqdmull2 v0.4s, v1.8h, v2.h[8]
3592       sqdmull2 v0.4s, v1.8h, v16.h[4]
3593       sqdmull2 v0.2s, v1.4s, v2.s[2]
3594       sqdmull2 v0.2d, v1.4s, v2.s[4]
3595       sqdmull2 v0.2d, v1.4s, v22.s[4]
3596
3597 // CHECK-ERROR: error: invalid operand for instruction
3598 // CHECK-ERROR:        sqdmull v0.4h, v1.4h, v2.h[2]
3599 // CHECK-ERROR:                ^
3600 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3601 // CHECK-ERROR:        sqdmull v0.4s, v1.4h, v2.h[8]
3602 // CHECK-ERROR:                                   ^
3603 // CHECK-ERROR: error: invalid operand for instruction
3604 // CHECK-ERROR:        sqdmull v0.4s, v1.4h, v16.h[4]
3605 // CHECK-ERROR:                              ^
3606 // CHECK-ERROR: error: invalid operand for instruction
3607 // CHECK-ERROR:        sqdmull v0.2s, v1.2s, v2.s[2]
3608 // CHECK-ERROR:                ^
3609 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3610 // CHECK-ERROR:        sqdmull v0.2d, v1.2s, v2.s[4]
3611 // CHECK-ERROR:                                   ^
3612 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3613 // CHECK-ERROR:        sqdmull v0.2d, v1.2s, v22.s[4]
3614 // CHECK-ERROR:                                    ^
3615 // CHECK-ERROR: error: invalid operand for instruction
3616 // CHECK-ERROR:        sqdmull2 v0.4h, v1.8h, v2.h[2]
3617 // CHECK-ERROR:                 ^
3618 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3619 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v2.h[8]
3620 // CHECK-ERROR:                                    ^
3621 // CHECK-ERROR: error: invalid operand for instruction
3622 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v16.h[4]
3623 // CHECK-ERROR:                                   ^
3624 // CHECK-ERROR: error: invalid operand for instruction
3625 // CHECK-ERROR:        sqdmull2 v0.2s, v1.4s, v2.s[2]
3626 // CHECK-ERROR:                 ^
3627 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3628 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v2.s[4]
3629 // CHECK-ERROR:                                    ^
3630 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3631 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v22.s[4]
3632 // CHECK-ERROR:                                     ^
3633
3634       sqdmulh v0.4h, v1.4h, v2.h[8]
3635       sqdmulh v0.4h, v1.4h, v16.h[2]
3636       sqdmulh v0.8h, v1.8h, v2.h[8]
3637       sqdmulh v0.8h, v1.8h, v16.h[2]
3638       sqdmulh v0.2s, v1.2s, v2.s[4]
3639       sqdmulh v0.2s, v1.2s, v22.s[4]
3640       sqdmulh v0.4s, v1.4s, v2.s[4]
3641       sqdmulh v0.4s, v1.4s, v22.s[4]
3642       sqdmulh v0.2d, v1.2d, v22.d[1]
3643
3644 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3645 // CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v2.h[8]
3646 // CHECK-ERROR:                                   ^
3647 // CHECK-ERROR: error: invalid operand for instruction
3648 // CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v16.h[2]
3649 // CHECK-ERROR:                              ^
3650 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3651 // CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v2.h[8]
3652 // CHECK-ERROR:                                   ^
3653 // CHECK-ERROR: error: invalid operand for instruction
3654 // CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v16.h[2]
3655 // CHECK-ERROR:                                  ^
3656 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3657 // CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v2.s[4]
3658 // CHECK-ERROR:                                   ^
3659 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3660 // CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v22.s[4]
3661 // CHECK-ERROR:                                    ^
3662 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3663 // CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v2.s[4]
3664 // CHECK-ERROR:                                   ^
3665 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3666 // CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v22.s[4]
3667 // CHECK-ERROR:                                    ^
3668 // CHECK-ERROR: error: invalid operand for instruction
3669 // CHECK-ERROR:        sqdmulh v0.2d, v1.2d, v22.d[1]
3670 // CHECK-ERROR:                   ^
3671
3672       sqrdmulh v0.4h, v1.4h, v2.h[8]
3673       sqrdmulh v0.4h, v1.4h, v16.h[2]
3674       sqrdmulh v0.8h, v1.8h, v2.h[8]
3675       sqrdmulh v0.8h, v1.8h, v16.h[2]
3676       sqrdmulh v0.2s, v1.2s, v2.s[4]
3677       sqrdmulh v0.2s, v1.2s, v22.s[4]
3678       sqrdmulh v0.4s, v1.4s, v2.s[4]
3679       sqrdmulh v0.4s, v1.4s, v22.s[4]
3680       sqrdmulh v0.2d, v1.2d, v22.d[1]
3681
3682 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3683 // CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v2.h[8]
3684 // CHECK-ERROR:                                    ^
3685 // CHECK-ERROR: error: invalid operand for instruction
3686 // CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v16.h[2]
3687 // CHECK-ERROR:                               ^
3688 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3689 // CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v2.h[8]
3690 // CHECK-ERROR:                                    ^
3691 // CHECK-ERROR: error: invalid operand for instruction
3692 // CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v16.h[2]
3693 // CHECK-ERROR:                                   ^
3694 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3695 // CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v2.s[4]
3696 // CHECK-ERROR:                                    ^
3697 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3698 // CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v22.s[4]
3699 // CHECK-ERROR:                                     ^
3700 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3701 // CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v2.s[4]
3702 // CHECK-ERROR:                                    ^
3703 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3704 // CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v22.s[4]
3705 // CHECK-ERROR:                                     ^
3706 // CHECK-ERROR: error: invalid operand for instruction
3707 // CHECK-ERROR:        sqrdmulh v0.2d, v1.2d, v22.d[1]
3708 // CHECK-ERROR:                    ^
3709
3710 //----------------------------------------------------------------------
3711 // Across vectors
3712 //----------------------------------------------------------------------
3713
3714         saddlv b0, v1.8b
3715         saddlv b0, v1.16b
3716         saddlv h0, v1.4h
3717         saddlv h0, v1.8h
3718         saddlv s0, v1.2s
3719         saddlv s0, v1.4s
3720         saddlv d0, v1.2s
3721
3722 // CHECK-ERROR: error: invalid operand for instruction
3723 // CHECK-ERROR:        saddlv b0, v1.8b
3724 // CHECK-ERROR:               ^
3725 // CHECK-ERROR: error: invalid operand for instruction
3726 // CHECK-ERROR:        saddlv b0, v1.16b
3727 // CHECK-ERROR:               ^
3728 // CHECK-ERROR: error: invalid operand for instruction
3729 // CHECK-ERROR:        saddlv h0, v1.4h
3730 // CHECK-ERROR:                      ^
3731 // CHECK-ERROR: error: invalid operand for instruction
3732 // CHECK-ERROR:        saddlv h0, v1.8h
3733 // CHECK-ERROR:                      ^
3734 // CHECK-ERROR: error: invalid operand for instruction
3735 // CHECK-ERROR:        saddlv s0, v1.2s
3736 // CHECK-ERROR:                      ^
3737 // CHECK-ERROR: error: invalid operand for instruction
3738 // CHECK-ERROR:        saddlv s0, v1.4s
3739 // CHECK-ERROR:                      ^
3740 // CHECK-ERROR: error: invalid operand for instruction
3741 // CHECK-ERROR:        saddlv d0, v1.2s
3742 // CHECK-ERROR:                   ^
3743
3744         uaddlv b0, v1.8b
3745         uaddlv b0, v1.16b
3746         uaddlv h0, v1.4h
3747         uaddlv h0, v1.8h
3748         uaddlv s0, v1.2s
3749         uaddlv s0, v1.4s
3750         uaddlv d0, v1.2s
3751
3752 // CHECK-ERROR: error: invalid operand for instruction
3753 // CHECK-ERROR:        uaddlv b0, v1.8b
3754 // CHECK-ERROR:               ^
3755 // CHECK-ERROR: error: invalid operand for instruction
3756 // CHECK-ERROR:        uaddlv b0, v1.16b
3757 // CHECK-ERROR:               ^
3758 // CHECK-ERROR: error: invalid operand for instruction
3759 // CHECK-ERROR:        uaddlv h0, v1.4h
3760 // CHECK-ERROR:                      ^
3761 // CHECK-ERROR: error: invalid operand for instruction
3762 // CHECK-ERROR:        uaddlv h0, v1.8h
3763 // CHECK-ERROR:                      ^
3764 // CHECK-ERROR: error: invalid operand for instruction
3765 // CHECK-ERROR:        uaddlv s0, v1.2s
3766 // CHECK-ERROR:                      ^
3767 // CHECK-ERROR: error: invalid operand for instruction
3768 // CHECK-ERROR:        uaddlv s0, v1.4s
3769 // CHECK-ERROR:                      ^
3770 // CHECK-ERROR: error: invalid operand for instruction
3771 // CHECK-ERROR:        uaddlv d0, v1.2s
3772 // CHECK-ERROR:                   ^
3773
3774         smaxv s0, v1.2s
3775         sminv s0, v1.2s
3776         umaxv s0, v1.2s
3777         uminv s0, v1.2s
3778         addv s0, v1.2s
3779
3780 // CHECK-ERROR: error: invalid operand for instruction
3781 // CHECK-ERROR:        smaxv s0, v1.2s
3782 // CHECK-ERROR:                  ^
3783 // CHECK-ERROR: error: invalid operand for instruction
3784 // CHECK-ERROR:        sminv s0, v1.2s
3785 // CHECK-ERROR:                  ^
3786 // CHECK-ERROR: error: invalid operand for instruction
3787 // CHECK-ERROR:        umaxv s0, v1.2s
3788 // CHECK-ERROR:                  ^
3789 // CHECK-ERROR: error: invalid operand for instruction
3790 // CHECK-ERROR:        uminv s0, v1.2s
3791 // CHECK-ERROR:                  ^
3792 // CHECK-ERROR: error: invalid operand for instruction
3793 // CHECK-ERROR:        addv s0, v1.2s
3794 // CHECK-ERROR:                 ^
3795
3796         smaxv d0, v1.2d
3797         sminv d0, v1.2d
3798         umaxv d0, v1.2d
3799         uminv d0, v1.2d
3800         addv d0, v1.2d
3801
3802 // CHECK-ERROR: error: invalid operand for instruction
3803 // CHECK-ERROR:        smaxv d0, v1.2d
3804 // CHECK-ERROR:              ^
3805 // CHECK-ERROR: error: invalid operand for instruction
3806 // CHECK-ERROR:        sminv d0, v1.2d
3807 // CHECK-ERROR:              ^
3808 // CHECK-ERROR: error: invalid operand for instruction
3809 // CHECK-ERROR:        umaxv d0, v1.2d
3810 // CHECK-ERROR:              ^
3811 // CHECK-ERROR: error: invalid operand for instruction
3812 // CHECK-ERROR:        uminv d0, v1.2d
3813 // CHECK-ERROR:              ^
3814 // CHECK-ERROR: error: invalid operand for instruction
3815 // CHECK-ERROR:        addv d0, v1.2d
3816 // CHECK-ERROR:             ^
3817
3818         fmaxnmv b0, v1.16b
3819         fminnmv b0, v1.16b
3820         fmaxv b0, v1.16b
3821         fminv b0, v1.16b
3822
3823 // CHECK-ERROR: error: invalid operand for instruction
3824 // CHECK-ERROR:        fmaxnmv b0, v1.16b
3825 // CHECK-ERROR:                ^
3826 // CHECK-ERROR: error: invalid operand for instruction
3827 // CHECK-ERROR:        fminnmv b0, v1.16b
3828 // CHECK-ERROR:                ^
3829 // CHECK-ERROR: error: invalid operand for instruction
3830 // CHECK-ERROR:        fmaxv b0, v1.16b
3831 // CHECK-ERROR:              ^
3832 // CHECK-ERROR: error: invalid operand for instruction
3833 // CHECK-ERROR:        fminv b0, v1.16b
3834 // CHECK-ERROR:              ^
3835
3836         fmaxnmv h0, v1.8h
3837         fminnmv h0, v1.8h
3838         fmaxv h0, v1.8h
3839         fminv h0, v1.8h
3840
3841 // CHECK-ERROR: error: invalid operand for instruction
3842 // CHECK-ERROR:        fmaxnmv h0, v1.8h
3843 // CHECK-ERROR:                ^
3844 // CHECK-ERROR: error: invalid operand for instruction
3845 // CHECK-ERROR:        fminnmv h0, v1.8h
3846 // CHECK-ERROR:                ^
3847 // CHECK-ERROR: error: invalid operand for instruction
3848 // CHECK-ERROR:        fmaxv h0, v1.8h
3849 // CHECK-ERROR:              ^
3850 // CHECK-ERROR: error: invalid operand for instruction
3851 // CHECK-ERROR:        fminv h0, v1.8h
3852 // CHECK-ERROR:              ^
3853
3854         fmaxnmv d0, v1.2d
3855         fminnmv d0, v1.2d
3856         fmaxv d0, v1.2d
3857         fminv d0, v1.2d
3858
3859 // CHECK-ERROR: error: invalid operand for instruction
3860 // CHECK-ERROR:        fmaxnmv d0, v1.2d
3861 // CHECK-ERROR:                ^
3862 // CHECK-ERROR: error: invalid operand for instruction
3863 // CHECK-ERROR:        fminnmv d0, v1.2d
3864 // CHECK-ERROR:                ^
3865 // CHECK-ERROR: error: invalid operand for instruction
3866 // CHECK-ERROR:        fmaxv d0, v1.2d
3867 // CHECK-ERROR:              ^
3868 // CHECK-ERROR: error: invalid operand for instruction
3869 // CHECK-ERROR:        fminv d0, v1.2d
3870 // CHECK-ERROR:              ^
3871
3872 //----------------------------------------------------------------------
3873 // Floating-point Multiply Extended
3874 //----------------------------------------------------------------------
3875
3876     fmulx s20, h22, s15
3877     fmulx d23, d11, s1
3878
3879 // CHECK-ERROR: error: invalid operand for instruction
3880 // CHECK-ERROR:          fmulx s20, h22, s15
3881 // CHECK-ERROR:                     ^
3882 // CHECK-ERROR: error: invalid operand for instruction
3883 // CHECK-ERROR:          fmulx d23, d11, s1
3884 // CHECK-ERROR:                          ^
3885
3886 //----------------------------------------------------------------------
3887 // Floating-point Reciprocal Step
3888 //----------------------------------------------------------------------
3889
3890     frecps s21, s16, h13
3891     frecps d22, s30, d21
3892
3893 // CHECK-ERROR: error: invalid operand for instruction
3894 // CHECK-ERROR:          frecps s21, s16, h13
3895 // CHECK-ERROR:                           ^
3896 // CHECK-ERROR: error: invalid operand for instruction
3897 // CHECK-ERROR:          frecps d22, s30, d21
3898 // CHECK-ERROR:                      ^
3899
3900 //----------------------------------------------------------------------
3901 // Floating-point Reciprocal Square Root Step
3902 //----------------------------------------------------------------------
3903
3904     frsqrts s21, h5, s12
3905     frsqrts d8, s22, d18
3906
3907 // CHECK-ERROR: error: invalid operand for instruction
3908 // CHECK-ERROR:          frsqrts s21, h5, s12
3909 // CHECK-ERROR:                       ^
3910 // CHECK-ERROR: error: invalid operand for instruction
3911 // CHECK-ERROR:          frsqrts d8, s22, d18
3912 // CHECK-ERROR:                      ^
3913
3914 //----------------------------------------------------------------------
3915 // Vector load/store multiple N-element structure (class SIMD lselem)
3916 //----------------------------------------------------------------------
3917          ld1 {x3}, [x2]
3918          ld1 {v4}, [x0]
3919          ld1 {v32.16b}, [x0]
3920          ld1 {v15.8h}, [x32]
3921 // CHECK-ARM64-ERROR: error: vector register expected
3922 // CHECK-ERROR:        ld1 {x3}, [x2]
3923 // CHECK-ERROR:             ^
3924 // CHECK-ARM64-ERROR: error: invalid operand for instruction
3925 // CHECK-ERROR:        ld1 {v4}, [x0]
3926 // CHECK-ERROR:             ^
3927 // CHECK-ARM64-ERROR: error: vector register expected
3928 // CHECK-ERROR:        ld1 {v32.16b}, [x0]
3929 // CHECK-ERROR:             ^
3930 // CHECK-ERROR: error: invalid operand for instruction
3931 // CHECK-ERROR:        ld1 {v15.8h}, [x32]
3932 // CHECK-ERROR:                       ^
3933
3934          ld1 {v0.16b, v2.16b}, [x0]
3935          ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3936          ld1 v0.8b, v1.8b}, [x0]
3937          ld1 {v0.8h-v4.8h}, [x0]
3938          ld1 {v1.8h-v1.8h}, [x0]
3939          ld1 {v15.8h-v17.4h}, [x15]
3940          ld1 {v0.8b-v2.8b, [x0]
3941 // CHECK-ARM64-ERROR: error: registers must be sequential
3942 // CHECK-ERROR:        ld1 {v0.16b, v2.16b}, [x0]
3943 // CHECK-ERROR:                     ^
3944 // CHECK-ERROR: error: invalid number of vectors
3945 // CHECK-ERROR:        ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3946 // CHECK-ERROR:                                         ^
3947 // CHECK-ARM64-ERROR: error: unexpected token in argument list
3948 // CHECK-ERROR:        ld1 v0.8b, v1.8b}, [x0]
3949 // CHECK-ERROR:            ^
3950 // CHECK-ERROR: error: invalid number of vectors
3951 // CHECK-ERROR:        ld1 {v0.8h-v4.8h}, [x0]
3952 // CHECK-ERROR:                   ^
3953 // CHECK-ERROR: error: invalid number of vectors
3954 // CHECK-ERROR:        ld1 {v1.8h-v1.8h}, [x0]
3955 // CHECK-ERROR:                   ^
3956 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3957 // CHECK-ERROR:        ld1 {v15.8h-v17.4h}, [x15]
3958 // CHECK-ERROR:                        ^
3959 // CHECK-ERROR: error: '}' expected
3960 // CHECK-ERROR:        ld1 {v0.8b-v2.8b, [x0]
3961 // CHECK-ERROR:                        ^
3962
3963          ld2 {v15.8h, v16.4h}, [x15]
3964          ld2 {v0.8b, v2.8b}, [x0]
3965          ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3966          ld2 {v15.8h-v16.4h}, [x15]
3967          ld2 {v0.2d-v2.2d}, [x0]
3968 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3969 // CHECK-ERROR:        ld2 {v15.8h, v16.4h}, [x15]
3970 // CHECK-ERROR:                     ^
3971 // CHECK-ARM64-ERROR: error: registers must be sequential
3972 // CHECK-ERROR:        ld2 {v0.8b, v2.8b}, [x0]
3973 // CHECK-ERROR:                    ^
3974 // CHECK-ERROR:        ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3975 // CHECK-ERROR:            ^
3976 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3977 // CHECK-ERROR:        ld2 {v15.8h-v16.4h}, [x15]
3978 // CHECK-ERROR:                        ^
3979 // CHECK-ERROR: error: invalid operand for instruction
3980 // CHECK-ERROR:        ld2 {v0.2d-v2.2d}, [x0]
3981 // CHECK-ERROR:            ^
3982
3983          ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3984          ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3985          ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3986          ld3 {v15.8h-v17.4h}, [x15]
3987          ld3 {v31.4s-v2.4s}, [sp]
3988 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3989 // CHECK-ERROR:        ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3990 // CHECK-ERROR:                             ^
3991 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3992 // CHECK-ERROR:        ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3993 // CHECK-ERROR:                    ^
3994 // CHECK-ARM64-ERROR: error: registers must be sequential
3995 // CHECK-ERROR:        ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3996 // CHECK-ERROR:                    ^
3997 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3998 // CHECK-ERROR:        ld3 {v15.8h-v17.4h}, [x15]
3999 // CHECK-ERROR:                        ^
4000 // CHECK-ERROR: error: invalid operand for instruction
4001 // CHECK-ERROR:        ld3 {v31.4s-v2.4s}, [sp]
4002 // CHECK-ERROR:            ^
4003
4004          ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4005          ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4006          ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4007          ld4 {v15.8h-v18.4h}, [x15]
4008          ld4 {v31.2s-v1.2s}, [x31]
4009 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4010 // CHECK-ERROR:        ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4011 // CHECK-ERROR:                             ^
4012 // CHECK-ARM64-ERROR: error: registers must be sequential
4013 // CHECK-ERROR:        ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4014 // CHECK-ERROR:                    ^
4015 // CHECK-ERROR: error: invalid number of vectors
4016 // CHECK-ERROR:        ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4017 // CHECK-ERROR:                                             ^
4018 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4019 // CHECK-ERROR:        ld4 {v15.8h-v18.4h}, [x15]
4020 // CHECK-ERROR:                        ^
4021 // CHECK-ERROR: error: invalid operand for instruction
4022 // CHECK-ERROR:        ld4 {v31.2s-v1.2s}, [x31]
4023 // CHECK-ERROR:            ^
4024
4025          st1 {x3}, [x2]
4026          st1 {v4}, [x0]
4027          st1 {v32.16b}, [x0]
4028          st1 {v15.8h}, [x32]
4029 // CHECK-ARM64-ERROR: error: vector register expected
4030 // CHECK-ERROR:        st1 {x3}, [x2]
4031 // CHECK-ERROR:             ^
4032 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4033 // CHECK-ERROR:        st1 {v4}, [x0]
4034 // CHECK-ERROR:             ^
4035 // CHECK-ARM64-ERROR: error: vector register expected
4036 // CHECK-ERROR:        st1 {v32.16b}, [x0]
4037 // CHECK-ERROR:             ^
4038 // CHECK-ERROR: error: invalid operand for instruction
4039 // CHECK-ERROR:        st1 {v15.8h}, [x32]
4040 // CHECK-ERROR:                       ^
4041
4042          st1 {v0.16b, v2.16b}, [x0]
4043          st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4044          st1 v0.8b, v1.8b}, [x0]
4045          st1 {v0.8h-v4.8h}, [x0]
4046          st1 {v1.8h-v1.8h}, [x0]
4047          st1 {v15.8h-v17.4h}, [x15]
4048          st1 {v0.8b-v2.8b, [x0]
4049 // CHECK-ARM64-ERROR: error: registers must be sequential
4050 // CHECK-ERROR:        st1 {v0.16b, v2.16b}, [x0]
4051 // CHECK-ERROR:                     ^
4052 // CHECK-ERROR: error: invalid number of vectors
4053 // CHECK-ERROR:        st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4054 // CHECK-ERROR:                                         ^
4055 // CHECK-ARM64-ERROR: error: unexpected token in argument list
4056 // CHECK-ERROR:        st1 v0.8b, v1.8b}, [x0]
4057 // CHECK-ERROR:            ^
4058 // CHECK-ERROR: error: invalid number of vectors
4059 // CHECK-ERROR:        st1 {v0.8h-v4.8h}, [x0]
4060 // CHECK-ERROR:                   ^
4061 // CHECK-ERROR: error: invalid number of vectors
4062 // CHECK-ERROR:        st1 {v1.8h-v1.8h}, [x0]
4063 // CHECK-ERROR:                   ^
4064 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4065 // CHECK-ERROR:        st1 {v15.8h-v17.4h}, [x15]
4066 // CHECK-ERROR:                        ^
4067 // CHECK-ERROR: error: '}' expected
4068 // CHECK-ERROR:        st1 {v0.8b-v2.8b, [x0]
4069 // CHECK-ERROR:                        ^
4070
4071          st2 {v15.8h, v16.4h}, [x15]
4072          st2 {v0.8b, v2.8b}, [x0]
4073          st2 {v15.4h, v16.4h, v17.4h}, [x30]
4074          st2 {v15.8h-v16.4h}, [x15]
4075          st2 {v0.2d-v2.2d}, [x0]
4076 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4077 // CHECK-ERROR:        st2 {v15.8h, v16.4h}, [x15]
4078 // CHECK-ERROR:                     ^
4079 // CHECK-ARM64-ERROR: error: registers must be sequential
4080 // CHECK-ERROR:        st2 {v0.8b, v2.8b}, [x0]
4081 // CHECK-ERROR:                    ^
4082 // CHECK-ERROR: error: invalid operand for instruction
4083 // CHECK-ERROR:        st2 {v15.4h, v16.4h, v17.4h}, [x30]
4084 // CHECK-ERROR:            ^
4085 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4086 // CHECK-ERROR:        st2 {v15.8h-v16.4h}, [x15]
4087 // CHECK-ERROR:                        ^
4088 // CHECK-ERROR: error: invalid operand for instruction
4089 // CHECK-ERROR:        st2 {v0.2d-v2.2d}, [x0]
4090 // CHECK-ERROR:            ^
4091
4092          st3 {v15.8h, v16.8h, v17.4h}, [x15]
4093          st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4094          st3 {v0.8b, v2.8b, v3.8b}, [x0]
4095          st3 {v15.8h-v17.4h}, [x15]
4096          st3 {v31.4s-v2.4s}, [sp]
4097 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4098 // CHECK-ERROR:        st3 {v15.8h, v16.8h, v17.4h}, [x15]
4099 // CHECK-ERROR:                             ^
4100 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4101 // CHECK-ERROR:        st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4102 // CHECK-ERROR:                    ^
4103 // CHECK-ARM64-ERROR: error: registers must be sequential
4104 // CHECK-ERROR:        st3 {v0.8b, v2.8b, v3.8b}, [x0]
4105 // CHECK-ERROR:                    ^
4106 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4107 // CHECK-ERROR:        st3 {v15.8h-v17.4h}, [x15]
4108 // CHECK-ERROR:                        ^
4109 // CHECK-ERROR: error: invalid operand for instruction
4110 // CHECK-ERROR:        st3 {v31.4s-v2.4s}, [sp]
4111 // CHECK-ERROR:            ^
4112
4113          st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4114          st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4115          st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4116          st4 {v15.8h-v18.4h}, [x15]
4117          st4 {v31.2s-v1.2s}, [x31]
4118 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4119 // CHECK-ERROR:        st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4120 // CHECK-ERROR:                             ^
4121 // CHECK-ARM64-ERROR: error: registers must be sequential
4122 // CHECK-ERROR:        st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4123 // CHECK-ERROR:                    ^
4124 // CHECK-ERROR: error: invalid number of vectors
4125 // CHECK-ERROR:        st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4126 // CHECK-ERROR:                                             ^
4127 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4128 // CHECK-ERROR:        st4 {v15.8h-v18.4h}, [x15]
4129 // CHECK-ERROR:                        ^
4130 // CHECK-ERROR: error: invalid operand for instruction
4131 // CHECK-ERROR:        st4 {v31.2s-v1.2s}, [x31]
4132 // CHECK-ERROR:            ^
4133
4134 //----------------------------------------------------------------------
4135 // Vector post-index load/store multiple N-element structure
4136 // (class SIMD lselem-post)
4137 //----------------------------------------------------------------------
4138          ld1 {v0.16b}, [x0], #8
4139          ld1 {v0.8h, v1.16h}, [x0], x1
4140          ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4141 // CHECK-ERROR: error: invalid operand for instruction
4142 // CHECK-ERROR:          ld1 {v0.16b}, [x0], #8
4143 // CHECK-ERROR:                              ^
4144 // CHECK-ARM64-ERROR: error: invalid vector kind qualifier
4145 // CHECK-ERROR:          ld1 {v0.8h, v1.16h}, [x0], x1
4146 // CHECK-ERROR:                      ^
4147 // CHECK-ERROR:  error: invalid operand for instruction
4148 // CHECK-ERROR:          ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4149 // CHECK-ERROR:                                                  ^
4150
4151          ld2 {v0.16b, v1.16b}, [x0], #16
4152          ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4153          ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4154 // CHECK-ERROR:  error: invalid operand for instruction
4155 // CHECK-ERROR:          ld2 {v0.16b, v1.16b}, [x0], #16
4156 // CHECK-ERROR:                                      ^
4157 // CHECK-ERROR:  error: invalid operand for instruction
4158 // CHECK-ERROR:          ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4159 // CHECK-ERROR:                                           ^
4160 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4161 // CHECK-ERROR:          ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4162 // CHECK-ERROR:                                     ^
4163
4164          st1 {v0.16b}, [x0], #8
4165          st1 {v0.8h, v1.16h}, [x0], x1
4166          st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4167 // CHECK-ERROR:  error: invalid operand for instruction
4168 // CHECK-ERROR:          st1 {v0.16b}, [x0], #8
4169 // CHECK-ERROR:                              ^
4170 // CHECK-ARM64-ERROR: error: invalid vector kind qualifier
4171 // CHECK-ERROR:          st1 {v0.8h, v1.16h}, [x0], x1
4172 // CHECK-ERROR:                      ^
4173 // CHECK-ERROR:  error: invalid operand for instruction
4174 // CHECK-ERROR:          st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4175                                                  ^
4176
4177          st2 {v0.16b, v1.16b}, [x0], #16
4178          st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4179          st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4180 // CHECK-ERROR:  error: invalid operand for instruction
4181 // CHECK-ERROR:          st2 {v0.16b, v1.16b}, [x0], #16
4182 // CHECK-ERROR:                                      ^
4183 // CHECK-ERROR:  error: invalid operand for instruction
4184 // CHECK-ERROR:          st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4185 // CHECK-ERROR:                                           ^
4186 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4187 // CHECK-ERROR:          st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4188 // CHECK-ERROR:                                     ^
4189
4190 //------------------------------------------------------------------------------
4191 // Load single N-element structure to all lanes of N consecutive
4192 // registers (N = 1,2,3,4)
4193 //------------------------------------------------------------------------------
4194          ld1r {x1}, [x0]
4195          ld2r {v31.4s, v0.2s}, [sp]
4196          ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
4197          ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
4198 // CHECK-ARM64-ERROR: error: vector register expected
4199 // CHECK-ERROR: ld1r {x1}, [x0]
4200 // CHECK-ERROR:       ^
4201 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4202 // CHECK-ERROR: ld2r {v31.4s, v0.2s}, [sp]
4203 // CHECK-ERROR:               ^
4204 // CHECK-ERROR: error: invalid operand for instruction
4205 // CHECK-ERROR: ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
4206 // CHECK-ERROR:      ^
4207 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4208 // CHECK-ERROR: ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
4209 // CHECK-ERROR:                      ^
4210
4211 //------------------------------------------------------------------------------
4212 // Load/Store single N-element structure to/from one lane of N consecutive
4213 // registers (N = 1, 2,3,4)
4214 //------------------------------------------------------------------------------
4215          ld1 {v0.b}[16], [x0]
4216          ld2 {v15.h, v16.h}[8], [x15]
4217          ld3 {v31.s, v0.s, v1.s}[-1], [sp]
4218          ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4219 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4220 // CHECK-ERROR: ld1 {v0.b}[16], [x0]
4221 // CHECK-ERROR:            ^
4222 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4223 // CHECK-ERROR: ld2 {v15.h, v16.h}[8], [x15]
4224 // CHECK-ERROR:                    ^
4225 // CHECK-ARM64-ERROR: error: vector lane must be an integer in range
4226 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.s}[-1], [sp]
4227 // CHECK-ERROR:                         ^
4228 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4229 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4230 // CHECK-ERROR:                              ^
4231
4232          st1 {v0.d}[16], [x0]
4233          st2 {v31.s, v0.s}[3], [8]
4234          st3 {v15.h, v16.h, v17.h}[-1], [x15]
4235          st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4236 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4237 // CHECK-ERROR: st1 {v0.d}[16], [x0]
4238 // CHECK-ERROR:            ^
4239 // CHECK-ERROR: error: invalid operand for instruction
4240 // CHECK-ERROR: st2 {v31.s, v0.s}[3], [8]
4241 // CHECK-ERROR:                        ^
4242 // CHECK-ARM64-ERROR: error: vector lane must be an integer in range
4243 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[-1], [x15]
4244 // CHECK-ERROR:                           ^
4245 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4246 // CHECK-ERROR: st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4247 // CHECK-ERROR:                              ^
4248
4249 //------------------------------------------------------------------------------
4250 // Post-index of load single N-element structure to all lanes of N consecutive
4251 // registers (N = 1,2,3,4)
4252 //------------------------------------------------------------------------------
4253          ld1r {v15.8h}, [x15], #5
4254          ld2r {v0.2d, v1.2d}, [x0], #7
4255          ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
4256          ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
4257 // CHECK-ERROR: error: invalid operand for instruction
4258 // CHECK-ERROR: ld1r {v15.8h}, [x15], #5
4259 // CHECK-ERROR:                       ^
4260 // CHECK-ERROR: error: invalid operand for instruction
4261 // CHECK-ERROR: ld2r {v0.2d, v1.2d}, [x0], #7
4262 // CHECK-ERROR:                            ^
4263 // CHECK-ERROR: error: invalid operand for instruction
4264 // CHECK-ERROR: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
4265 // CHECK-ERROR:                                       ^
4266 // CHECK-ERROR: error: invalid operand for instruction
4267 // CHECK-ERROR: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
4268 // CHECK-ERROR:                                           ^
4269
4270 //------------------------------------------------------------------------------
4271 // Post-index of Load/Store single N-element structure to/from one lane of N
4272 // consecutive registers (N = 1, 2,3,4)
4273 //------------------------------------------------------------------------------
4274          ld1 {v0.b}[0], [x0], #2
4275          ld2 {v15.h, v16.h}[0], [x15], #3
4276          ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
4277          ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
4278 // CHECK-ERROR: error: invalid operand for instruction
4279 // CHECK-ERROR: ld1 {v0.b}[0], [x0], #2
4280 // CHECK-ERROR:                      ^
4281 // CHECK-ERROR: error: invalid operand for instruction
4282 // CHECK-ERROR: ld2 {v15.h, v16.h}[0], [x15], #3
4283 // CHECK-ERROR:                               ^
4284 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4285 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
4286 // CHECK-ERROR:                      ^
4287 // CHECK-ERROR: error: invalid operand for instruction
4288 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
4289 // CHECK-ERROR:                                        ^
4290
4291          st1 {v0.d}[0], [x0], #7
4292          st2 {v31.s, v0.s}[0], [sp], #6
4293          st3 {v15.h, v16.h, v17.h}[0], [x15], #8
4294          st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
4295 // CHECK-ERROR: error: invalid operand for instruction
4296 // CHECK-ERROR: st1 {v0.d}[0], [x0], #7
4297 // CHECK-ERROR:                      ^
4298 // CHECK-ERROR: error: invalid operand for instruction
4299 // CHECK-ERROR: st2 {v31.s, v0.s}[0], [sp], #6
4300 // CHECK-ERROR:                             ^
4301 // CHECK-ERROR: error: invalid operand for instruction
4302 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[0], [x15], #8
4303 // CHECK-ERROR:                                      ^
4304 // CHECK-ERROR: error: invalid operand for instruction
4305 // CHECK-ERROR: st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
4306 // CHECK-ERROR:                                        ^
4307
4308
4309          ins v2.b[16], w1
4310          ins v7.h[8], w14
4311          ins v20.s[5], w30
4312          ins v1.d[2], x7
4313          ins v2.b[3], b1
4314          ins v7.h[2], h14
4315          ins v20.s[1], s30
4316          ins v1.d[0], d7
4317
4318 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4319 // CHECK-ERROR:         ins v2.b[16], w1
4320 // CHECK-ERROR:                  ^
4321 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4322 // CHECK-ERROR:         ins v7.h[8], w14
4323 // CHECK-ERROR:                  ^
4324 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4325 // CHECK-ERROR:         ins v20.s[5], w30
4326 // CHECK-ERROR:                   ^
4327 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4328 // CHECK-ERROR:         ins v1.d[2], x7
4329 // CHECK-ERROR:                  ^
4330 // CHECK-ERROR: error: invalid operand for instruction
4331 // CHECK-ERROR:         ins v2.b[3], b1
4332 // CHECK-ERROR:                      ^
4333 // CHECK-ERROR: error: invalid operand for instruction
4334 // CHECK-ERROR:         ins v7.h[2], h14
4335 // CHECK-ERROR:                      ^
4336 // CHECK-ERROR: error: invalid operand for instruction
4337 // CHECK-ERROR:         ins v20.s[1], s30
4338 // CHECK-ERROR:                       ^
4339 // CHECK-ERROR: error: invalid operand for instruction
4340 // CHECK-ERROR:         ins v1.d[0], d7
4341 // CHECK-ERROR:                      ^
4342
4343          smov w1, v0.b[16]
4344          smov w14, v6.h[8]
4345          smov x1, v0.b[16]
4346          smov x14, v6.h[8]
4347          smov x20, v9.s[5]
4348          smov w1, v0.d[0]
4349          smov w14, v6.d[1]
4350          smov x1, v0.d[0]
4351          smov x14, v6.d[1]
4352          smov x20, v9.d[0]
4353
4354 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4355 // CHECK-ERROR         smov w1, v0.b[16]
4356 // CHECK-ERROR                       ^
4357 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4358 // CHECK-ERROR         smov w14, v6.h[8]
4359 // CHECK-ERROR                        ^
4360 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4361 // CHECK-ERROR         smov x1, v0.b[16]
4362 // CHECK-ERROR                       ^
4363 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4364 // CHECK-ERROR         smov x14, v6.h[8]
4365 // CHECK-ERROR                        ^
4366 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4367 // CHECK-ERROR         smov x20, v9.s[5]
4368 // CHECK-ERROR                        ^
4369 // CHECK-ERROR error: invalid operand for instruction
4370 // CHECK-ERROR         smov w1, v0.d[0]
4371 // CHECK-ERROR                     ^
4372 // CHECK-ERROR error: invalid operand for instruction
4373 // CHECK-ERROR         smov w14, v6.d[1]
4374 // CHECK-ERROR                      ^
4375 // CHECK-ERROR error: invalid operand for instruction
4376 // CHECK-ERROR         smov x1, v0.d[0]
4377 // CHECK-ERROR                     ^
4378 // CHECK-ERROR error: invalid operand for instruction
4379 // CHECK-ERROR         smov x14, v6.d[1]
4380 // CHECK-ERROR                      ^
4381 // CHECK-ERROR error: invalid operand for instruction
4382 // CHECK-ERROR         smov x20, v9.d[0]
4383 // CHECK-ERROR                      ^
4384
4385          umov w1, v0.b[16]
4386          umov w14, v6.h[8]
4387          umov w20, v9.s[5]
4388          umov x7, v18.d[3]
4389          umov w1, v0.d[0]
4390          umov s20, v9.s[2]
4391          umov d7, v18.d[1]
4392
4393 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4394 // CHECK-ERROR         umov w1, v0.b[16]
4395 // CHECK-ERROR                       ^
4396 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4397 // CHECK-ERROR         umov w14, v6.h[8]
4398 // CHECK-ERROR                        ^
4399 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4400 // CHECK-ERROR         umov w20, v9.s[5]
4401 // CHECK-ERROR                        ^
4402 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4403 // CHECK-ERROR         umov x7, v18.d[3]
4404 // CHECK-ERROR                        ^
4405 // CHECK-ERROR error: invalid operand for instruction
4406 // CHECK-ERROR         umov w1, v0.d[0]
4407 // CHECK-ERROR                     ^
4408 // CHECK-ERROR error: invalid operand for instruction
4409 // CHECK-ERROR         umov s20, v9.s[2]
4410 // CHECK-ERROR              ^
4411 // CHECK-ERROR error: invalid operand for instruction
4412 // CHECK-ERROR         umov d7, v18.d[1]
4413 // CHECK-ERROR              ^
4414
4415          Ins v1.h[2], v3.b[6]
4416          Ins v6.h[7], v7.s[2]
4417          Ins v15.d[0], v22.s[2]
4418          Ins v0.d[0], v4.b[1]
4419
4420 // CHECK-ERROR error: invalid operand for instruction
4421 // CHECK-ERROR         Ins v1.h[2], v3.b[6]
4422 // CHECK-ERROR                         ^
4423 // CHECK-ERROR error: invalid operand for instruction
4424 // CHECK-ERROR         Ins v6.h[7], v7.s[2]
4425 // CHECK-ERROR                         ^
4426 // CHECK-ERROR error: invalid operand for instruction
4427 // CHECK-ERROR         Ins v15.d[0], v22.s[2]
4428 // CHECK-ERROR                           ^
4429 // CHECK-ERROR error: invalid operand for instruction
4430 // CHECK-ERROR         Ins v0.d[0], v4.b[1]
4431 // CHECK-ERROR                         ^
4432
4433          dup v1.8h, v2.b[2]
4434          dup v11.4s, v7.h[7]
4435          dup v17.2d, v20.s[0]
4436          dup v1.16b, v2.h[2]
4437          dup v11.8h, v7.s[3]
4438          dup v17.4s, v20.d[0]
4439          dup v5.2d, v1.b[1]
4440
4441 // CHECK-ERROR error: invalid operand for instruction
4442 // CHECK-ERROR         dup v1.8h, v2.b[2]
4443 // CHECK-ERROR                       ^
4444 // CHECK-ERROR error: invalid operand for instruction
4445 // CHECK-ERROR         dup v11.4s, v7.h[7]
4446 // CHECK-ERROR                        ^
4447 // CHECK-ERROR error: invalid operand for instruction
4448 // CHECK-ERROR         dup v17.2d, v20.s[0]
4449 // CHECK-ERROR                         ^
4450 // CHECK-ERROR error: invalid operand for instruction
4451 // CHECK-ERROR         dup v1.16b, v2.h[2]
4452 // CHECK-ERROR                        ^
4453 // CHECK-ERROR invalid operand for instruction
4454 // CHECK-ERROR         dup v11.8h, v7.s[3]
4455 // CHECK-ERROR                        ^
4456 // CHECK-ERROR invalid operand for instruction
4457 // CHECK-ERROR         dup v17.4s, v20.d[0]
4458 // CHECK-ERROR                         ^
4459 // CHECK-ERROR invalid operand for instruction
4460 // CHECK-ERROR         dup v5.2d, v1.b[1]
4461 // CHECK-ERROR                       ^
4462
4463          dup v1.8b, b1
4464          dup v11.4h, h14
4465          dup v17.2s, s30
4466          dup v1.16b, d2
4467          dup v11.8s, w16
4468          dup v17.4d, w28
4469          dup v5.2d, w0
4470
4471 // CHECK-ERROR error: invalid operand for instruction
4472 // CHECK-ERROR         dup v1.8b, b1
4473 // CHECK-ERROR                    ^
4474 // CHECK-ERROR error: invalid operand for instruction
4475 // CHECK-ERROR         dup v11.4h, h14
4476 // CHECK-ERROR                     ^
4477 // CHECK-ERROR error: invalid operand for instruction
4478 // CHECK-ERROR         dup v17.2s, s30
4479 // CHECK-ERROR                     ^
4480 // CHECK-ERROR error: invalid operand for instruction
4481 // CHECK-ERROR         dup v1.16b, d2
4482 // CHECK-ERROR                     ^
4483 // CHECK-ERROR error: invalid operand for instruction
4484 // CHECK-ERROR         dup v11.8s, w16
4485 // CHECK-ERROR             ^
4486 // CHECK-ERROR error: invalid operand for instruction
4487 // CHECK-ERROR         dup v17.4d, w28
4488 // CHECK-ERROR             ^
4489 // CHECK-ERROR error: invalid operand for instruction
4490 // CHECK-ERROR         dup v5.2d, w0
4491 // CHECK-ERROR                    ^
4492
4493 //----------------------------------------------------------------------
4494 // Scalar Compare Bitwise Equal
4495 //----------------------------------------------------------------------
4496
4497          cmeq b20, d21, d22
4498
4499 // CHECK-ERROR: error: invalid operand for instruction
4500 // CHECK-ERROR:          cmeq b20, d21, d22
4501 // CHECK-ERROR:               ^
4502
4503 //----------------------------------------------------------------------
4504 // Scalar Compare Bitwise Equal To Zero
4505 //----------------------------------------------------------------------
4506
4507          cmeq d20, b21, #0
4508
4509 // CHECK-ERROR: error: invalid operand for instruction
4510 // CHECK-ERROR:          cmeq d20, b21, #0
4511 // CHECK-ERROR:                    ^
4512
4513 //----------------------------------------------------------------------
4514 // Scalar Compare Unsigned Higher Or Same
4515 //----------------------------------------------------------------------
4516
4517          cmhs b20, d21, d22
4518
4519 // CHECK-ERROR: error: invalid operand for instruction
4520 // CHECK-ERROR:          cmhs b20, d21, d22
4521 // CHECK-ERROR:               ^
4522
4523         
4524 //----------------------------------------------------------------------
4525 // Scalar Compare Signed Greather Than Or Equal
4526 //----------------------------------------------------------------------
4527
4528          cmge b20, d21, d22
4529
4530 // CHECK-ERROR: error: invalid operand for instruction
4531 // CHECK-ERROR:          cmge b20, d21, d22
4532 // CHECK-ERROR:               ^
4533
4534 //----------------------------------------------------------------------
4535 // Scalar Compare Signed Greather Than Or Equal To Zero
4536 //----------------------------------------------------------------------
4537
4538          cmge d20, b21, #0
4539
4540 // CHECK-ERROR: error: invalid operand for instruction
4541 // CHECK-ERROR:          cmge d20, b21, #0
4542 // CHECK-ERROR:                    ^
4543
4544 //----------------------------------------------------------------------
4545 // Scalar Compare Unsigned Higher
4546 //----------------------------------------------------------------------
4547
4548          cmhi b20, d21, d22
4549
4550 // CHECK-ERROR: error: invalid operand for instruction
4551 // CHECK-ERROR:          cmhi b20, d21, d22
4552 // CHECK-ERROR:               ^
4553
4554 //----------------------------------------------------------------------
4555 // Scalar Compare Signed Greater Than
4556 //----------------------------------------------------------------------
4557
4558          cmgt b20, d21, d22
4559
4560 // CHECK-ERROR: error: invalid operand for instruction
4561 // CHECK-ERROR:          cmgt b20, d21, d22
4562 // CHECK-ERROR:               ^
4563
4564 //----------------------------------------------------------------------
4565 // Scalar Compare Signed Greater Than Zero
4566 //----------------------------------------------------------------------
4567
4568          cmgt d20, b21, #0
4569
4570 // CHECK-ERROR: error: invalid operand for instruction
4571 // CHECK-ERROR:          cmgt d20, b21, #0
4572 // CHECK-ERROR:                    ^
4573
4574 //----------------------------------------------------------------------
4575 // Scalar Compare Signed Less Than Or Equal To Zero
4576 //----------------------------------------------------------------------
4577
4578          cmle d20, b21, #0
4579
4580 // CHECK-ERROR: error: invalid operand for instruction
4581 // CHECK-ERROR:          cmle d20, b21, #0
4582 // CHECK-ERROR:                    ^
4583
4584 //----------------------------------------------------------------------
4585 // Scalar Compare Less Than Zero
4586 //----------------------------------------------------------------------
4587
4588          cmlt d20, b21, #0
4589
4590 // CHECK-ERROR: error: invalid operand for instruction
4591 // CHECK-ERROR:          cmlt d20, b21, #0
4592 // CHECK-ERROR:                    ^
4593
4594 //----------------------------------------------------------------------
4595 // Scalar Compare Bitwise Test Bits
4596 //----------------------------------------------------------------------
4597
4598          cmtst b20, d21, d22
4599
4600 // CHECK-ERROR: error: invalid operand for instruction
4601 // CHECK-ERROR:          cmtst b20, d21, d22
4602 // CHECK-ERROR:                ^
4603
4604 //----------------------------------------------------------------------
4605 // Scalar Floating-point Compare Mask Equal
4606 //----------------------------------------------------------------------
4607
4608          fcmeq s10, h11, s12
4609          fcmeq d20, s21, d22
4610
4611 // CHECK-ERROR: error: invalid operand for instruction
4612 // CHECK-ERROR:          fcmeq s10, h11, s12
4613 // CHECK-ERROR:                     ^
4614 // CHECK-ERROR: error: invalid operand for instruction
4615 // CHECK-ERROR:          fcmeq d20, s21, d22
4616 // CHECK-ERROR:                     ^
4617
4618 //----------------------------------------------------------------------
4619 // Scalar Floating-point Compare Mask Equal To Zero
4620 //----------------------------------------------------------------------
4621
4622          fcmeq h10, s11, #0.0
4623          fcmeq d20, s21, #0.0
4624
4625 // CHECK-ERROR: error: invalid operand for instruction
4626 // CHECK-ERROR:          fcmeq h10, s11, #0.0
4627 // CHECK-ERROR:                ^
4628 // CHECK-ERROR: error: invalid operand for instruction
4629 // CHECK-ERROR:          fcmeq d20, s21, #0.0
4630 // CHECK-ERROR:                     ^
4631
4632 //----------------------------------------------------------------------
4633 // Scalar Floating-point Compare Mask Greater Than Or Equal
4634 //----------------------------------------------------------------------
4635
4636          fcmge s10, h11, s12
4637          fcmge d20, s21, d22
4638
4639 // CHECK-ERROR: error: invalid operand for instruction
4640 // CHECK-ERROR:          fcmge s10, h11, s12
4641 // CHECK-ERROR:                     ^
4642 // CHECK-ERROR: error: invalid operand for instruction
4643 // CHECK-ERROR:          fcmge d20, s21, d22
4644 // CHECK-ERROR:                     ^
4645
4646 //----------------------------------------------------------------------
4647 // Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
4648 //----------------------------------------------------------------------
4649
4650          fcmge h10, s11, #0.0
4651          fcmge d20, s21, #0.0
4652
4653 // CHECK-ERROR: error: invalid operand for instruction
4654 // CHECK-ERROR:          fcmge h10, s11, #0.0
4655 // CHECK-ERROR:                ^
4656 // CHECK-ERROR: error: invalid operand for instruction
4657 // CHECK-ERROR:          fcmge d20, s21, #0.0
4658 // CHECK-ERROR:                     ^
4659
4660 //----------------------------------------------------------------------
4661 // Scalar Floating-point Compare Mask Greather Than
4662 //----------------------------------------------------------------------
4663
4664          fcmgt s10, h11, s12
4665          fcmgt d20, s21, d22
4666
4667 // CHECK-ERROR: error: invalid operand for instruction
4668 // CHECK-ERROR:          fcmgt s10, h11, s12
4669 // CHECK-ERROR:                     ^
4670 // CHECK-ERROR: error: invalid operand for instruction
4671 // CHECK-ERROR:          fcmgt d20, s21, d22
4672 // CHECK-ERROR:                     ^
4673
4674 //----------------------------------------------------------------------
4675 // Scalar Floating-point Compare Mask Greather Than Zero
4676 //----------------------------------------------------------------------
4677
4678          fcmgt h10, s11, #0.0
4679          fcmgt d20, s21, #0.0
4680
4681 // CHECK-ERROR: error: invalid operand for instruction
4682 // CHECK-ERROR:          fcmgt h10, s11, #0.0
4683 // CHECK-ERROR:                ^
4684 // CHECK-ERROR: error: invalid operand for instruction
4685 // CHECK-ERROR:          fcmgt d20, s21, #0.0
4686 // CHECK-ERROR:                     ^
4687
4688 //----------------------------------------------------------------------
4689 // Scalar Floating-point Compare Mask Less Than Or Equal To Zero
4690 //----------------------------------------------------------------------
4691
4692          fcmle h10, s11, #0.0
4693          fcmle d20, s21, #0.0
4694
4695 // CHECK-ERROR: error: invalid operand for instruction
4696 // CHECK-ERROR:          fcmle h10, s11, #0.0
4697 // CHECK-ERROR:                ^
4698 // CHECK-ERROR: error: invalid operand for instruction
4699 // CHECK-ERROR:          fcmle d20, s21, #0.0
4700 // CHECK-ERROR:                     ^
4701
4702 //----------------------------------------------------------------------
4703 // Scalar Floating-point Compare Mask Less Than
4704 //----------------------------------------------------------------------
4705
4706          fcmlt h10, s11, #0.0
4707          fcmlt d20, s21, #0.0
4708
4709 // CHECK-ERROR: error: invalid operand for instruction
4710 // CHECK-ERROR:          fcmlt h10, s11, #0.0
4711 // CHECK-ERROR:                     ^
4712 // CHECK-ERROR: error: invalid operand for instruction
4713 // CHECK-ERROR:          fcmlt d20, s21, #0.0
4714 // CHECK-ERROR:                     ^
4715
4716 //----------------------------------------------------------------------
4717 // Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
4718 //----------------------------------------------------------------------
4719
4720          facge s10, h11, s12
4721          facge d20, s21, d22
4722
4723 // CHECK-ERROR: error: invalid operand for instruction
4724 // CHECK-ERROR:          facge s10, h11, s12
4725 // CHECK-ERROR:                     ^
4726 // CHECK-ERROR: error: invalid operand for instruction
4727 // CHECK-ERROR:          facge d20, s21, d22
4728 // CHECK-ERROR:                     ^
4729
4730 //----------------------------------------------------------------------
4731 // Scalar Floating-point Absolute Compare Mask Greater Than
4732 //----------------------------------------------------------------------
4733
4734          facgt s10, h11, s12
4735          facgt d20, d21, s22
4736
4737 // CHECK-ERROR: error: invalid operand for instruction
4738 // CHECK-ERROR:          facgt s10, h11, s12
4739 // CHECK-ERROR:                     ^
4740 // CHECK-ERROR: error: invalid operand for instruction
4741 // CHECK-ERROR:          facgt d20, d21, s22
4742 // CHECK-ERROR:                          ^
4743         
4744 //----------------------------------------------------------------------
4745 // Scalar Signed Saturating Accumulated of Unsigned Value
4746 //----------------------------------------------------------------------
4747
4748         suqadd b0, h1
4749         suqadd h0, s1
4750         suqadd s0, d1
4751         suqadd d0, b0
4752
4753 // CHECK-ERROR: error: invalid operand for instruction
4754 // CHECK-ERROR:        suqadd b0, h1
4755 // CHECK-ERROR:                   ^
4756 // CHECK-ERROR: error: invalid operand for instruction
4757 // CHECK-ERROR:        suqadd h0, s1
4758 // CHECK-ERROR:                   ^
4759 // CHECK-ERROR: error: invalid operand for instruction
4760 // CHECK-ERROR:        suqadd s0, d1
4761 // CHECK-ERROR:                   ^
4762 // CHECK-ERROR: error: invalid operand for instruction
4763 // CHECK-ERROR:        suqadd d0, b0
4764 // CHECK-ERROR:                   ^
4765
4766 //----------------------------------------------------------------------
4767 // Scalar Unsigned Saturating Accumulated of Signed Value
4768 //----------------------------------------------------------------------
4769
4770         usqadd b0, h1
4771         usqadd h0, s1
4772         usqadd s0, d1
4773         usqadd d0, b1
4774
4775 // CHECK-ERROR: error: invalid operand for instruction
4776 // CHECK-ERROR:        usqadd b0, h1
4777 // CHECK-ERROR:                   ^
4778 // CHECK-ERROR: error: invalid operand for instruction
4779 // CHECK-ERROR:        usqadd h0, s1
4780 // CHECK-ERROR:                   ^
4781 // CHECK-ERROR: error: invalid operand for instruction
4782 // CHECK-ERROR:        usqadd s0, d1
4783 // CHECK-ERROR:                   ^
4784 // CHECK-ERROR: error: invalid operand for instruction
4785 // CHECK-ERROR:        usqadd d0, b1
4786 // CHECK-ERROR:                   ^
4787
4788 //----------------------------------------------------------------------
4789 // Scalar Absolute Value
4790 //----------------------------------------------------------------------
4791
4792     abs d29, s24
4793
4794 // CHECK-ERROR: error: invalid operand for instruction
4795 // CHECK-ERROR:        abs d29, s24
4796 // CHECK-ERROR:                 ^
4797
4798 //----------------------------------------------------------------------
4799 // Scalar Negate
4800 //----------------------------------------------------------------------
4801
4802     neg d29, s24
4803
4804 // CHECK-ERROR: error: invalid operand for instruction
4805 // CHECK-ERROR:        neg d29, s24
4806 // CHECK-ERROR:                 ^
4807
4808 //----------------------------------------------------------------------
4809 // Signed Saturating Doubling Multiply-Add Long
4810 //----------------------------------------------------------------------
4811
4812     sqdmlal s17, h27, s12
4813     sqdmlal d19, s24, d12
4814
4815 // CHECK-ERROR: error: invalid operand for instruction
4816 // CHECK-ERROR:        sqdmlal s17, h27, s12
4817 // CHECK-ERROR:                          ^
4818 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4819 // CHECK-ERROR:        sqdmlal d19, s24, d12
4820 // CHECK-ERROR:                          ^
4821
4822 //----------------------------------------------------------------------
4823 // Signed Saturating Doubling Multiply-Subtract Long
4824 //----------------------------------------------------------------------
4825
4826     sqdmlsl s14, h12, s25
4827     sqdmlsl d12, s23, d13
4828
4829 // CHECK-ERROR: error: invalid operand for instruction
4830 // CHECK-ERROR:        sqdmlsl s14, h12, s25
4831 // CHECK-ERROR:                          ^
4832 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4833 // CHECK-ERROR:        sqdmlsl d12, s23, d13
4834 // CHECK-ERROR:                          ^
4835
4836 //----------------------------------------------------------------------
4837 // Signed Saturating Doubling Multiply Long
4838 //----------------------------------------------------------------------
4839
4840     sqdmull s12, h22, s12
4841     sqdmull d15, s22, d12
4842
4843 // CHECK-ERROR: error: invalid operand for instruction
4844 // CHECK-ERROR:        sqdmull s12, h22, s12
4845 // CHECK-ERROR:                          ^
4846 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4847 // CHECK-ERROR:        sqdmull d15, s22, d12
4848 // CHECK-ERROR:                          ^
4849
4850 //----------------------------------------------------------------------
4851 // Scalar Signed Saturating Extract Unsigned Narrow
4852 //----------------------------------------------------------------------
4853
4854     sqxtun b19, b14
4855     sqxtun h21, h15
4856     sqxtun s20, s12
4857
4858 // CHECK-ERROR: error: invalid operand for instruction
4859 // CHECK-ERROR:        sqxtun b19, b14
4860 // CHECK-ERROR:                    ^
4861 // CHECK-ERROR: error: invalid operand for instruction
4862 // CHECK-ERROR:        sqxtun h21, h15
4863 // CHECK-ERROR:                    ^
4864 // CHECK-ERROR: error: invalid operand for instruction
4865 // CHECK-ERROR:        sqxtun s20, s12
4866 // CHECK-ERROR:                    ^
4867
4868 //----------------------------------------------------------------------
4869 // Scalar Signed Saturating Extract Signed Narrow
4870 //----------------------------------------------------------------------
4871
4872     sqxtn b18, b18
4873     sqxtn h20, h17
4874     sqxtn s19, s14
4875
4876 // CHECK-ERROR: error: invalid operand for instruction
4877 // CHECK-ERROR:        sqxtn b18, b18
4878 // CHECK-ERROR:                   ^
4879 // CHECK-ERROR: error: invalid operand for instruction
4880 // CHECK-ERROR:        sqxtn h20, h17
4881 // CHECK-ERROR:                   ^
4882 // CHECK-ERROR: error: invalid operand for instruction
4883 // CHECK-ERROR:        sqxtn s19, s14
4884 // CHECK-ERROR:                   ^
4885
4886
4887 //----------------------------------------------------------------------
4888 // Scalar Unsigned Saturating Extract Narrow
4889 //----------------------------------------------------------------------
4890
4891     uqxtn b18, b18
4892     uqxtn h20, h17
4893     uqxtn s19, s14
4894
4895 // CHECK-ERROR: error: invalid operand for instruction
4896 // CHECK-ERROR:        uqxtn b18, b18
4897 // CHECK-ERROR:                   ^
4898 // CHECK-ERROR: error: invalid operand for instruction
4899 // CHECK-ERROR:        uqxtn h20, h17
4900 // CHECK-ERROR:                   ^
4901 // CHECK-ERROR: error: invalid operand for instruction
4902 // CHECK-ERROR:        uqxtn s19, s14
4903 // CHECK-ERROR:                   ^
4904
4905 //----------------------------------------------------------------------
4906 // Scalar Signed Shift Right (Immediate)
4907 //----------------------------------------------------------------------
4908         sshr d15, d16, #99
4909
4910 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4911 // CHECK-ERROR:        sshr d15, d16, #99
4912 // CHECK-ERROR:                       ^
4913
4914         sshr d15, s16, #31
4915
4916 // CHECK-ERROR: error: invalid operand for instruction
4917 // CHECK-ERROR:        sshr d15, s16, #31
4918 // CHECK-ERROR:                  ^
4919
4920 //----------------------------------------------------------------------
4921 // Scalar Unsigned Shift Right (Immediate)
4922 //----------------------------------------------------------------------
4923
4924         ushr d10, d17, #99
4925
4926 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4927 // CHECK-ERROR:        ushr d10, d17, #99
4928 // CHECK-ERROR:                       ^
4929
4930 //----------------------------------------------------------------------
4931 // Scalar Signed Rounding Shift Right (Immediate)
4932 //----------------------------------------------------------------------
4933
4934         srshr d19, d18, #99
4935
4936 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4937 // CHECK-ERROR:        srshr d19, d18, #99
4938 // CHECK-ERROR:                        ^
4939
4940 //----------------------------------------------------------------------
4941 // Scalar Unigned Rounding Shift Right (Immediate)
4942 //----------------------------------------------------------------------
4943
4944         urshr d20, d23, #99
4945
4946 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4947 // CHECK-ERROR:        urshr d20, d23, #99
4948 // CHECK-ERROR:                        ^
4949
4950 //----------------------------------------------------------------------
4951 // Scalar Signed Shift Right and Accumulate (Immediate)
4952 //----------------------------------------------------------------------
4953
4954         ssra d18, d12, #99
4955
4956 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4957 // CHECK-ERROR:        ssra d18, d12, #99
4958 // CHECK-ERROR:                       ^
4959
4960 //----------------------------------------------------------------------
4961 // Scalar Unsigned Shift Right and Accumulate (Immediate)
4962 //----------------------------------------------------------------------
4963
4964         usra d20, d13, #99
4965
4966 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4967 // CHECK-ERROR:        usra d20, d13, #99
4968 // CHECK-ERROR:                       ^
4969
4970 //----------------------------------------------------------------------
4971 // Scalar Signed Rounding Shift Right and Accumulate (Immediate)
4972 //----------------------------------------------------------------------
4973
4974         srsra d15, d11, #99
4975
4976 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4977 // CHECK-ERROR:        srsra d15, d11, #99
4978 // CHECK-ERROR:                        ^
4979
4980 //----------------------------------------------------------------------
4981 // Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
4982 //----------------------------------------------------------------------
4983
4984         ursra d18, d10, #99
4985
4986 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4987 // CHECK-ERROR:        ursra d18, d10, #99
4988 // CHECK-ERROR:                        ^
4989
4990 //----------------------------------------------------------------------
4991 // Scalar Shift Left (Immediate)
4992 //----------------------------------------------------------------------
4993
4994         shl d7, d10, #99
4995
4996 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
4997 // CHECK-ERROR:        shl d7, d10, #99
4998 // CHECK-ERROR:                     ^
4999
5000         shl d7, s16, #31
5001         
5002 // CHECK-ERROR: error: invalid operand for instruction
5003 // CHECK-ERROR:        shl d7, s16, #31
5004 // CHECK-ERROR:                ^
5005
5006 //----------------------------------------------------------------------
5007 // Signed Saturating Shift Left (Immediate)
5008 //----------------------------------------------------------------------
5009
5010         sqshl b11, b19, #99
5011         sqshl h13, h18, #99
5012         sqshl s14, s17, #99
5013         sqshl d15, d16, #99
5014
5015 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5016 // CHECK-ERROR:        sqshl b11, b19, #99
5017 // CHECK-ERROR:                        ^
5018 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5019 // CHECK-ERROR:        sqshl h13, h18, #99
5020 // CHECK-ERROR:                        ^
5021 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5022 // CHECK-ERROR:        sqshl s14, s17, #99
5023 // CHECK-ERROR:                        ^
5024 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5025 // CHECK-ERROR:        sqshl d15, d16, #99
5026 // CHECK-ERROR:                        ^
5027
5028 //----------------------------------------------------------------------
5029 // Unsigned Saturating Shift Left (Immediate)
5030 //----------------------------------------------------------------------
5031
5032         uqshl b18, b15, #99
5033         uqshl h11, h18, #99
5034         uqshl s14, s19, #99
5035         uqshl d15, d12, #99
5036
5037 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5038 // CHECK-ERROR:        uqshl b18, b15, #99
5039 // CHECK-ERROR:                        ^
5040 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5041 // CHECK-ERROR:        uqshl h11, h18, #99
5042 // CHECK-ERROR:                        ^
5043 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5044 // CHECK-ERROR:        uqshl s14, s19, #99
5045 // CHECK-ERROR:                        ^
5046 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5047 // CHECK-ERROR:        uqshl d15, d12, #99
5048 // CHECK-ERROR:                        ^
5049
5050 //----------------------------------------------------------------------
5051 // Signed Saturating Shift Left Unsigned (Immediate)
5052 //----------------------------------------------------------------------
5053
5054         sqshlu b15, b18, #99
5055         sqshlu h19, h17, #99
5056         sqshlu s16, s14, #99
5057         sqshlu d11, d13, #99
5058
5059 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5060 // CHECK-ERROR:        sqshlu  b15, b18, #99
5061 // CHECK-ERROR:                          ^
5062 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5063 // CHECK-ERROR:        sqshlu  h19, h17, #99
5064 // CHECK-ERROR:                          ^
5065 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5066 // CHECK-ERROR:        sqshlu  s16, s14, #99
5067 // CHECK-ERROR:                          ^
5068 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5069 // CHECK-ERROR:        sqshlu  d11, d13, #99
5070 // CHECK-ERROR:                          ^
5071
5072 //----------------------------------------------------------------------
5073 // Shift Right And Insert (Immediate)
5074 //----------------------------------------------------------------------
5075
5076         sri d10, d12, #99
5077
5078 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5079 // CHECK-ERROR:        sri d10, d12, #99
5080 // CHECK-ERROR:                      ^
5081
5082 //----------------------------------------------------------------------
5083 // Shift Left And Insert (Immediate)
5084 //----------------------------------------------------------------------
5085
5086         sli d10, d14, #99
5087
5088 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5089 // CHECK-ERROR:        sli d10, d14, #99
5090 // CHECK-ERROR:                      ^
5091
5092 //----------------------------------------------------------------------
5093 // Signed Saturating Shift Right Narrow (Immediate)
5094 //----------------------------------------------------------------------
5095
5096         sqshrn b10, h15, #99
5097         sqshrn h17, s10, #99
5098         sqshrn s18, d10, #99
5099
5100 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5101 // CHECK-ERROR:        sqshrn  b10, h15, #99
5102 // CHECK-ERROR:                          ^
5103 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5104 // CHECK-ERROR:        sqshrn  h17, s10, #99
5105 // CHECK-ERROR:                          ^
5106 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5107 // CHECK-ERROR:        sqshrn  s18, d10, #99
5108 // CHECK-ERROR:                          ^
5109         
5110 //----------------------------------------------------------------------
5111 // Unsigned Saturating Shift Right Narrow (Immediate)
5112 //----------------------------------------------------------------------
5113
5114         uqshrn b12, h10, #99
5115         uqshrn h10, s14, #99
5116         uqshrn s10, d12, #99
5117
5118 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5119 // CHECK-ERROR:        uqshrn  b12, h10, #99
5120 // CHECK-ERROR:                          ^
5121 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5122 // CHECK-ERROR:        uqshrn  h10, s14, #99
5123 // CHECK-ERROR:                          ^
5124 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5125 // CHECK-ERROR:        uqshrn  s10, d12, #99
5126 // CHECK-ERROR:                          ^
5127         
5128 //----------------------------------------------------------------------
5129 // Signed Saturating Rounded Shift Right Narrow (Immediate)
5130 //----------------------------------------------------------------------
5131
5132         sqrshrn b10, h13, #99
5133         sqrshrn h15, s10, #99
5134         sqrshrn s15, d12, #99
5135
5136 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5137 // CHECK-ERROR:        sqrshrn b10, h13, #99
5138 // CHECK-ERROR:                          ^
5139 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5140 // CHECK-ERROR:        sqrshrn h15, s10, #99
5141 // CHECK-ERROR:                          ^
5142 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5143 // CHECK-ERROR:        sqrshrn s15, d12, #99
5144 // CHECK-ERROR:                          ^
5145         
5146 //----------------------------------------------------------------------
5147 // Unsigned Saturating Rounded Shift Right Narrow (Immediate)
5148 //----------------------------------------------------------------------
5149
5150         uqrshrn b10, h12, #99
5151         uqrshrn h12, s10, #99
5152         uqrshrn s10, d10, #99
5153
5154 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5155 // CHECK-ERROR:        uqrshrn b10, h12, #99
5156 // CHECK-ERROR:                          ^
5157 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5158 // CHECK-ERROR:        uqrshrn h12, s10, #99
5159 // CHECK-ERROR:                          ^
5160 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5161 // CHECK-ERROR:        uqrshrn s10, d10, #99
5162 // CHECK-ERROR:                          ^
5163
5164 //----------------------------------------------------------------------
5165 // Signed Saturating Shift Right Unsigned Narrow (Immediate)
5166 //----------------------------------------------------------------------
5167
5168         sqshrun b15, h10, #99
5169         sqshrun h20, s14, #99
5170         sqshrun s10, d15, #99
5171
5172 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5173 // CHECK-ERROR:        sqshrun b15, h10, #99
5174 // CHECK-ERROR:                          ^
5175 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5176 // CHECK-ERROR:        sqshrun h20, s14, #99
5177 // CHECK-ERROR:                          ^
5178 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5179 // CHECK-ERROR:        sqshrun s10, d15, #99
5180 // CHECK-ERROR:                          ^
5181
5182 //----------------------------------------------------------------------
5183 // Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
5184 //----------------------------------------------------------------------
5185
5186         sqrshrun b17, h10, #99
5187         sqrshrun h10, s13, #99
5188         sqrshrun s22, d16, #99
5189
5190 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5191 // CHECK-ERROR:        sqrshrun b17, h10, #99
5192 // CHECK-ERROR:                           ^
5193 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5194 // CHECK-ERROR:        sqrshrun h10, s13, #99
5195 // CHECK-ERROR:                           ^
5196 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5197 // CHECK-ERROR:        sqrshrun s22, d16, #99
5198 // CHECK-ERROR:                           ^
5199
5200 //----------------------------------------------------------------------
5201 // Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
5202 //----------------------------------------------------------------------
5203
5204     scvtf s22, s13, #0
5205     scvtf s22, s13, #33
5206     scvtf d21, d12, #65
5207     scvtf d21, s12, #31
5208         
5209 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5210 // CHECK-ERROR:        scvtf s22, s13, #0
5211 // CHECK-ERROR:                        ^
5212 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5213 // CHECK-ERROR:        scvtf s22, s13, #33
5214 // CHECK-ERROR:                        ^
5215 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5216 // CHECK-ERROR:        scvtf d21, d12, #65
5217 // CHECK-ERROR:                        ^
5218 // CHECK-ERROR: error: invalid operand for instruction
5219 // CHECK-ERROR:        scvtf d21, s12, #31
5220 // CHECK-ERROR:                   ^
5221
5222 //----------------------------------------------------------------------
5223 // Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
5224 //----------------------------------------------------------------------
5225
5226     ucvtf s22, s13, #34
5227     ucvtf d21, d14, #65
5228     ucvtf d21, s14, #64
5229         
5230 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5231 // CHECK-ERROR:        ucvtf s22, s13, #34
5232 // CHECK-ERROR:                        ^
5233 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5234 // CHECK-ERROR:        ucvtf d21, d14, #65
5235 // CHECK-ERROR:                        ^
5236 // CHECK-ERROR: error: invalid operand for instruction
5237 // CHECK-ERROR:        ucvtf d21, s14, #64
5238 // CHECK-ERROR:                   ^
5239
5240 //------------------------------------------------------------------------------
5241 // Element reverse
5242 //------------------------------------------------------------------------------
5243          rev64 v6.2d, v8.2d
5244          rev32 v30.2s, v31.2s
5245          rev32 v30.4s, v31.4s
5246          rev32 v30.2d, v31.2d
5247          rev16 v21.4h, v1.4h
5248          rev16 v21.8h, v1.8h
5249          rev16 v21.2s, v1.2s
5250          rev16 v21.4s, v1.4s
5251          rev16 v21.2d, v1.2d
5252
5253 // CHECK-ERROR: error: invalid operand for instruction
5254 // CHECK-ERROR:         rev64 v6.2d, v8.2d
5255 // CHECK-ERROR:                  ^
5256 // CHECK-ERROR: error: invalid operand for instruction
5257 // CHECK-ERROR:         rev32 v30.2s, v31.2s
5258 // CHECK-ERROR:                   ^
5259 // CHECK-ERROR: error: invalid operand for instruction
5260 // CHECK-ERROR:         rev32 v30.4s, v31.4s
5261 // CHECK-ERROR:                   ^
5262 // CHECK-ERROR: error: invalid operand for instruction
5263 // CHECK-ERROR:         rev32 v30.2d, v31.2d
5264 // CHECK-ERROR:                   ^
5265 // CHECK-ERROR: error: invalid operand for instruction
5266 // CHECK-ERROR:         rev16 v21.4h, v1.4h
5267 // CHECK-ERROR:                   ^
5268 // CHECK-ERROR: error: invalid operand for instruction
5269 // CHECK-ERROR:         rev16 v21.8h, v1.8h
5270 // CHECK-ERROR:                   ^
5271 // CHECK-ERROR: error: invalid operand for instruction
5272 // CHECK-ERROR:         rev16 v21.2s, v1.2s
5273 // CHECK-ERROR:                   ^
5274 // CHECK-ERROR: error: invalid operand for instruction
5275 // CHECK-ERROR:         rev16 v21.4s, v1.4s
5276 // CHECK-ERROR:                   ^
5277 // CHECK-ERROR: error: invalid operand for instruction
5278 // CHECK-ERROR:         rev16 v21.2d, v1.2d
5279 // CHECK-ERROR:                   ^
5280
5281 //------------------------------------------------------------------------------
5282 // Signed integer pairwise add long
5283 //------------------------------------------------------------------------------
5284
5285          saddlp v3.8h, v21.8h
5286          saddlp v8.8b, v5.8b
5287          saddlp v9.8h, v1.4s
5288          saddlp v0.4s, v1.2d
5289
5290 // CHECK-ERROR: error: invalid operand for instruction
5291 // CHECK-ERROR:         saddlp v3.8h, v21.8h
5292 // CHECK-ERROR:                           ^
5293 // CHECK-ERROR: error: invalid operand for instruction
5294 // CHECK-ERROR:         saddlp v8.8b, v5.8b
5295 // CHECK-ERROR:                   ^
5296 // CHECK-ERROR: error: invalid operand for instruction
5297 // CHECK-ERROR:         saddlp v9.8h, v1.4s
5298 // CHECK-ERROR:                          ^
5299 // CHECK-ERROR: error: invalid operand for instruction
5300 // CHECK-ERROR:         saddlp v0.4s, v1.2d
5301 // CHECK-ERROR:                          ^
5302
5303 //------------------------------------------------------------------------------
5304 // Unsigned integer pairwise add long
5305 //------------------------------------------------------------------------------
5306
5307          uaddlp v3.8h, v21.8h
5308          uaddlp v8.8b, v5.8b
5309          uaddlp v9.8h, v1.4s
5310          uaddlp v0.4s, v1.2d
5311
5312 // CHECK-ERROR: error: invalid operand for instruction
5313 // CHECK-ERROR:         uaddlp v3.8h, v21.8h
5314 // CHECK-ERROR:                           ^
5315 // CHECK-ERROR: error: invalid operand for instruction
5316 // CHECK-ERROR:         uaddlp v8.8b, v5.8b
5317 // CHECK-ERROR:                   ^
5318 // CHECK-ERROR: error: invalid operand for instruction
5319 // CHECK-ERROR:         uaddlp v9.8h, v1.4s
5320 // CHECK-ERROR:                          ^
5321 // CHECK-ERROR: error: invalid operand for instruction
5322 // CHECK-ERROR:         uaddlp v0.4s, v1.2d
5323 // CHECK-ERROR:                          ^
5324
5325 //------------------------------------------------------------------------------
5326 // Signed integer pairwise add and accumulate long
5327 //------------------------------------------------------------------------------
5328
5329          sadalp v3.16b, v21.16b
5330          sadalp v8.4h, v5.4h
5331          sadalp v9.4s, v1.4s
5332          sadalp v0.4h, v1.2s
5333          sadalp v12.2d, v4.8h
5334
5335 // CHECK-ERROR: error: invalid operand for instruction
5336 // CHECK-ERROR:         sadalp v3.16b, v21.16b
5337 // CHECK-ERROR:                   ^
5338 // CHECK-ERROR: error: invalid operand for instruction
5339 // CHECK-ERROR:         sadalp v8.4h, v5.4h
5340 // CHECK-ERROR:                          ^
5341 // CHECK-ERROR: error: invalid operand for instruction
5342 // CHECK-ERROR:         sadalp v9.4s, v1.4s
5343 // CHECK-ERROR:                          ^
5344 // CHECK-ERROR: error: invalid operand for instruction
5345 // CHECK-ERROR:         sadalp v0.4h, v1.2s
5346 // CHECK-ERROR:                          ^
5347 // CHECK-ERROR: error: invalid operand for instruction
5348 // CHECK-ERROR:         sadalp v12.2d, v4.8h
5349 // CHECK-ERROR:                           ^
5350
5351 //------------------------------------------------------------------------------
5352 // Unsigned integer pairwise add and accumulate long
5353 //------------------------------------------------------------------------------
5354
5355          uadalp v3.16b, v21.16b
5356          uadalp v8.4h, v5.4h
5357          uadalp v9.4s, v1.4s
5358          uadalp v0.4h, v1.2s
5359          uadalp v12.2d, v4.8h
5360
5361 // CHECK-ERROR: error: invalid operand for instruction
5362 // CHECK-ERROR:         uadalp v3.16b, v21.16b
5363 // CHECK-ERROR:                   ^
5364 // CHECK-ERROR: error: invalid operand for instruction
5365 // CHECK-ERROR:         uadalp v8.4h, v5.4h
5366 // CHECK-ERROR:                          ^
5367 // CHECK-ERROR: error: invalid operand for instruction
5368 // CHECK-ERROR:         uadalp v9.4s, v1.4s
5369 // CHECK-ERROR:                          ^
5370 // CHECK-ERROR: error: invalid operand for instruction
5371 // CHECK-ERROR:         uadalp v0.4h, v1.2s
5372 // CHECK-ERROR:                          ^
5373 // CHECK-ERROR: error: invalid operand for instruction
5374 // CHECK-ERROR:         uadalp v12.2d, v4.8h
5375 // CHECK-ERROR:                           ^
5376
5377 //------------------------------------------------------------------------------
5378 // Signed integer saturating accumulate of unsigned value
5379 //------------------------------------------------------------------------------
5380
5381          suqadd v0.16b, v31.8b
5382          suqadd v1.8b, v9.8h
5383          suqadd v13.4h, v21.4s
5384          suqadd v4.2s, v0.2d
5385
5386 // CHECK-ERROR: error: invalid operand for instruction
5387 // CHECK-ERROR:         suqadd v0.16b, v31.8b
5388 // CHECK-ERROR:                        ^
5389 // CHECK-ERROR: error: invalid operand for instruction
5390 // CHECK-ERROR:         suqadd v1.8b, v9.8h
5391 // CHECK-ERROR:                       ^
5392 // CHECK-ERROR: error: invalid operand for instruction
5393 // CHECK-ERROR:         suqadd v13.4h, v21.4s
5394 // CHECK-ERROR:                        ^
5395 // CHECK-ERROR: error: invalid operand for instruction
5396 // CHECK-ERROR:         suqadd v4.2s, v0.2d
5397 // CHECK-ERROR:                       ^
5398
5399 //------------------------------------------------------------------------------
5400 // Unsigned integer saturating accumulate of signed value
5401 //------------------------------------------------------------------------------
5402
5403          usqadd v0.16b, v31.8b
5404          usqadd v2.8h, v4.4h
5405          usqadd v13.4h, v21.4s
5406          usqadd v4.2s, v0.2d
5407
5408 // CHECK-ERROR: error: invalid operand for instruction
5409 // CHECK-ERROR:         usqadd v0.16b, v31.8b
5410 // CHECK-ERROR:                        ^
5411 // CHECK-ERROR: error: invalid operand for instruction
5412 // CHECK-ERROR:         usqadd v2.8h, v4.4h
5413 // CHECK-ERROR:                       ^
5414 // CHECK-ERROR: error: invalid operand for instruction
5415 // CHECK-ERROR:         usqadd v13.4h, v21.4s
5416 // CHECK-ERROR:                        ^
5417 // CHECK-ERROR: error: invalid operand for instruction
5418 // CHECK-ERROR:         usqadd v4.2s, v0.2d
5419 // CHECK-ERROR:                       ^
5420
5421 //------------------------------------------------------------------------------
5422 // Integer saturating absolute
5423 //------------------------------------------------------------------------------
5424
5425          sqabs v0.16b, v31.8b
5426          sqabs v2.8h, v4.4h
5427          sqabs v6.4s, v8.2s
5428          sqabs v6.2d, v8.2s
5429
5430 // CHECK-ERROR: error: invalid operand for instruction
5431 // CHECK-ERROR:         sqabs v0.16b, v31.8b
5432 // CHECK-ERROR:                       ^
5433 // CHECK-ERROR: error: invalid operand for instruction
5434 // CHECK-ERROR:         sqabs v2.8h, v4.4h
5435 // CHECK-ERROR:                      ^
5436 // CHECK-ERROR: error: invalid operand for instruction
5437 // CHECK-ERROR:         sqabs v6.4s, v8.2s
5438 // CHECK-ERROR:                      ^
5439 // CHECK-ERROR: error: invalid operand for instruction
5440 // CHECK-ERROR:         sqabs v6.2d, v8.2s
5441 // CHECK-ERROR:                      ^
5442
5443 //------------------------------------------------------------------------------
5444 // Signed integer saturating negate
5445 //------------------------------------------------------------------------------
5446
5447          sqneg v0.16b, v31.8b
5448          sqneg v2.8h, v4.4h
5449          sqneg v6.4s, v8.2s
5450          sqneg v6.2d, v8.2s
5451
5452 // CHECK-ERROR: error: invalid operand for instruction
5453 // CHECK-ERROR:         sqneg v0.16b, v31.8b
5454 // CHECK-ERROR:                       ^
5455 // CHECK-ERROR: error: invalid operand for instruction
5456 // CHECK-ERROR:         sqneg v2.8h, v4.4h
5457 // CHECK-ERROR:                      ^
5458 // CHECK-ERROR: error: invalid operand for instruction
5459 // CHECK-ERROR:         sqneg v6.4s, v8.2s
5460 // CHECK-ERROR:                      ^
5461 // CHECK-ERROR: error: invalid operand for instruction
5462 // CHECK-ERROR:         sqneg v6.2d, v8.2s
5463 // CHECK-ERROR:                      ^
5464
5465 //------------------------------------------------------------------------------
5466 // Integer absolute
5467 //------------------------------------------------------------------------------
5468
5469          abs v0.16b, v31.8b
5470          abs v2.8h, v4.4h
5471          abs v6.4s, v8.2s
5472          abs v6.2d, v8.2s
5473
5474 // CHECK-ERROR: error: invalid operand for instruction
5475 // CHECK-ERROR:         abs v0.16b, v31.8b
5476 // CHECK-ERROR:                     ^
5477 // CHECK-ERROR: error: invalid operand for instruction
5478 // CHECK-ERROR:         abs v2.8h, v4.4h
5479 // CHECK-ERROR:                    ^
5480 // CHECK-ERROR: error: invalid operand for instruction
5481 // CHECK-ERROR:         abs v6.4s, v8.2s
5482 // CHECK-ERROR:                    ^
5483 // CHECK-ERROR: error: invalid operand for instruction
5484 // CHECK-ERROR:         abs v6.2d, v8.2s
5485 // CHECK-ERROR:                    ^
5486
5487 //------------------------------------------------------------------------------
5488 // Integer count leading sign bits
5489 //------------------------------------------------------------------------------
5490
5491          cls v0.2d, v31.2d
5492
5493 // CHECK-ERROR: error: invalid operand for instruction
5494 // CHECK-ERROR:         cls v0.2d, v31.2d
5495 // CHECK-ERROR:                ^
5496
5497 //------------------------------------------------------------------------------
5498 // Integer count leading zeros
5499 //------------------------------------------------------------------------------
5500
5501          clz v0.2d, v31.2d
5502
5503 // CHECK-ERROR: error: invalid operand for instruction
5504 // CHECK-ERROR:         clz v0.2d, v31.2d
5505 // CHECK-ERROR:                ^
5506
5507 //------------------------------------------------------------------------------
5508 // Population count
5509 //------------------------------------------------------------------------------
5510
5511          cnt v2.8h, v4.8h
5512          cnt v6.4s, v8.4s
5513          cnt v6.2d, v8.2d
5514          cnt v13.4h, v21.4h
5515          cnt v4.2s, v0.2s
5516
5517 // CHECK-ERROR: error: invalid operand for instruction
5518 // CHECK-ERROR:         cnt v2.8h, v4.8h
5519 // CHECK-ERROR:                ^
5520 // CHECK-ERROR: error: invalid operand for instruction
5521 // CHECK-ERROR:         cnt v6.4s, v8.4s
5522 // CHECK-ERROR:                ^
5523 // CHECK-ERROR: error: invalid operand for instruction
5524 // CHECK-ERROR:         cnt v6.2d, v8.2d
5525 // CHECK-ERROR:                ^
5526 // CHECK-ERROR: error: invalid operand for instruction
5527 // CHECK-ERROR:         cnt v13.4h, v21.4h
5528 // CHECK-ERROR:                 ^
5529 // CHECK-ERROR: error: invalid operand for instruction
5530 // CHECK-ERROR:         cnt v4.2s, v0.2s
5531 // CHECK-ERROR:                ^
5532
5533
5534 //------------------------------------------------------------------------------
5535 // Bitwise NOT
5536 //------------------------------------------------------------------------------
5537
5538          not v2.8h, v4.8h
5539          not v6.4s, v8.4s
5540          not v6.2d, v8.2d
5541          not v13.4h, v21.4h
5542          not v4.2s, v0.2s
5543
5544 // CHECK-ERROR: error: invalid operand for instruction
5545 // CHECK-ERROR:         not v2.8h, v4.8h
5546 // CHECK-ERROR:                ^
5547 // CHECK-ERROR: error: invalid operand for instruction
5548 // CHECK-ERROR:         not v6.4s, v8.4s
5549 // CHECK-ERROR:                ^
5550 // CHECK-ERROR: error: invalid operand for instruction
5551 // CHECK-ERROR:         not v6.2d, v8.2d
5552 // CHECK-ERROR:                ^
5553 // CHECK-ERROR: error: invalid operand for instruction
5554 // CHECK-ERROR:         not v13.4h, v21.4h
5555 // CHECK-ERROR:                 ^
5556 // CHECK-ERROR: error: invalid operand for instruction
5557 // CHECK-ERROR:         not v4.2s, v0.2s
5558 // CHECK-ERROR:                ^
5559
5560 //------------------------------------------------------------------------------
5561 // Bitwise reverse
5562 //------------------------------------------------------------------------------
5563
5564          rbit v2.8h, v4.8h
5565          rbit v6.4s, v8.4s
5566          rbit v6.2d, v8.2d
5567          rbit v13.4h, v21.4h
5568          rbit v4.2s, v0.2s
5569
5570 // CHECK-ERROR: error: invalid operand for instruction
5571 // CHECK-ERROR:         rbit v2.8h, v4.8h
5572 // CHECK-ERROR:                 ^
5573 // CHECK-ERROR: error: invalid operand for instruction
5574 // CHECK-ERROR:         rbit v6.4s, v8.4s
5575 // CHECK-ERROR:                 ^
5576 // CHECK-ERROR: error: invalid operand for instruction
5577 // CHECK-ERROR:         rbit v6.2d, v8.2d
5578 // CHECK-ERROR:                 ^
5579 // CHECK-ERROR: error: invalid operand for instruction
5580 // CHECK-ERROR:         rbit v13.4h, v21.4h
5581 // CHECK-ERROR:                  ^
5582 // CHECK-ERROR: error: invalid operand for instruction
5583 // CHECK-ERROR:         rbit v4.2s, v0.2s
5584 // CHECK-ERROR:                 ^
5585
5586 //------------------------------------------------------------------------------
5587 // Floating-point absolute
5588 //------------------------------------------------------------------------------
5589
5590          fabs v0.16b, v31.16b
5591          fabs v2.8h, v4.8h
5592          fabs v1.8b, v9.8b
5593          fabs v13.4h, v21.4h
5594
5595 // CHECK-ERROR: error: invalid operand for instruction
5596 // CHECK-ERROR:         fabs v0.16b, v31.16b
5597 // CHECK-ERROR:                 ^
5598 // CHECK-ERROR: error: invalid operand for instruction
5599 // CHECK-ERROR:         fabs v2.8h, v4.8h
5600 // CHECK-ERROR:                 ^
5601 // CHECK-ERROR: error: invalid operand for instruction
5602 // CHECK-ERROR:         fabs v1.8b, v9.8b
5603 // CHECK-ERROR:                 ^
5604 // CHECK-ERROR: error: invalid operand for instruction
5605 // CHECK-ERROR:         fabs v13.4h, v21.4h
5606 // CHECK-ERROR:                  ^
5607
5608 //------------------------------------------------------------------------------
5609 // Floating-point negate
5610 //------------------------------------------------------------------------------
5611
5612          fneg v0.16b, v31.16b
5613          fneg v2.8h, v4.8h
5614          fneg v1.8b, v9.8b
5615          fneg v13.4h, v21.4h
5616
5617 // CHECK-ERROR: error: invalid operand for instruction
5618 // CHECK-ERROR:         fneg v0.16b, v31.16b
5619 // CHECK-ERROR:                 ^
5620 // CHECK-ERROR: error: invalid operand for instruction
5621 // CHECK-ERROR:         fneg v2.8h, v4.8h
5622 // CHECK-ERROR:                 ^
5623 // CHECK-ERROR: error: invalid operand for instruction
5624 // CHECK-ERROR:         fneg v1.8b, v9.8b
5625 // CHECK-ERROR:                 ^
5626 // CHECK-ERROR: error: invalid operand for instruction
5627 // CHECK-ERROR:         fneg v13.4h, v21.4h
5628 // CHECK-ERROR:                  ^
5629
5630 //------------------------------------------------------------------------------
5631 // Integer extract and narrow
5632 //------------------------------------------------------------------------------
5633
5634          xtn v0.16b, v31.8h
5635          xtn v2.8h, v4.4s
5636          xtn v6.4s, v8.2d
5637          xtn2 v1.8b, v9.8h
5638          xtn2 v13.4h, v21.4s
5639          xtn2 v4.2s, v0.2d
5640
5641 // CHECK-ERROR: error: invalid operand for instruction
5642 // CHECK-ERROR:         xtn v0.16b, v31.8h
5643 // CHECK-ERROR:             ^
5644 // CHECK-ERROR: error: invalid operand for instruction
5645 // CHECK-ERROR:         xtn v2.8h, v4.4s
5646 // CHECK-ERROR:             ^
5647 // CHECK-ERROR: error: invalid operand for instruction
5648 // CHECK-ERROR:         xtn v6.4s, v8.2d
5649 // CHECK-ERROR:             ^
5650 // CHECK-ERROR: error: invalid operand for instruction
5651 // CHECK-ERROR:         xtn2 v1.8b, v9.8h
5652 // CHECK-ERROR:              ^
5653 // CHECK-ERROR: error: invalid operand for instruction
5654 // CHECK-ERROR:         xtn2 v13.4h, v21.4s
5655 // CHECK-ERROR:              ^
5656 // CHECK-ERROR: error: invalid operand for instruction
5657 // CHECK-ERROR:         xtn2 v4.2s, v0.2d
5658 // CHECK-ERROR:              ^
5659
5660 //------------------------------------------------------------------------------
5661 // Signed integer saturating extract and unsigned narrow
5662 //------------------------------------------------------------------------------
5663
5664          sqxtun v0.16b, v31.8h
5665          sqxtun v2.8h, v4.4s
5666          sqxtun v6.4s, v8.2d
5667          sqxtun2 v1.8b, v9.8h
5668          sqxtun2 v13.4h, v21.4s
5669          sqxtun2 v4.2s, v0.2d
5670
5671 // CHECK-ERROR: error: invalid operand for instruction
5672 // CHECK-ERROR:         sqxtun v0.16b, v31.8h
5673 // CHECK-ERROR:                ^
5674 // CHECK-ERROR: error: invalid operand for instruction
5675 // CHECK-ERROR:         sqxtun v2.8h, v4.4s
5676 // CHECK-ERROR:                ^
5677 // CHECK-ERROR: error: invalid operand for instruction
5678 // CHECK-ERROR:         sqxtun v6.4s, v8.2d
5679 // CHECK-ERROR:                ^
5680 // CHECK-ERROR: error: invalid operand for instruction
5681 // CHECK-ERROR:         sqxtun2 v1.8b, v9.8h
5682 // CHECK-ERROR:                 ^
5683 // CHECK-ERROR: error: invalid operand for instruction
5684 // CHECK-ERROR:         sqxtun2 v13.4h, v21.4s
5685 // CHECK-ERROR:                 ^
5686 // CHECK-ERROR: error: invalid operand for instruction
5687 // CHECK-ERROR:         sqxtun2 v4.2s, v0.2d
5688 // CHECK-ERROR:                 ^
5689
5690 //------------------------------------------------------------------------------
5691 // Signed integer saturating extract and narrow
5692 //------------------------------------------------------------------------------
5693
5694          sqxtn v0.16b, v31.8h
5695          sqxtn v2.8h, v4.4s
5696          sqxtn v6.4s, v8.2d
5697          sqxtn2 v1.8b, v9.8h
5698          sqxtn2 v13.4h, v21.4s
5699          sqxtn2 v4.2s, v0.2d
5700
5701 // CHECK-ERROR: error: invalid operand for instruction
5702 // CHECK-ERROR:         sqxtn v0.16b, v31.8h
5703 // CHECK-ERROR:               ^
5704 // CHECK-ERROR: error: invalid operand for instruction
5705 // CHECK-ERROR:         sqxtn v2.8h, v4.4s
5706 // CHECK-ERROR:               ^
5707 // CHECK-ERROR: error: invalid operand for instruction
5708 // CHECK-ERROR:         sqxtn v6.4s, v8.2d
5709 // CHECK-ERROR:               ^
5710 // CHECK-ERROR: error: invalid operand for instruction
5711 // CHECK-ERROR:         sqxtn2 v1.8b, v9.8h
5712 // CHECK-ERROR:                ^
5713 // CHECK-ERROR: error: invalid operand for instruction
5714 // CHECK-ERROR:         sqxtn2 v13.4h, v21.4s
5715 // CHECK-ERROR:                ^
5716 // CHECK-ERROR: error: invalid operand for instruction
5717 // CHECK-ERROR:         sqxtn2 v4.2s, v0.2d
5718 // CHECK-ERROR:                ^
5719
5720 //------------------------------------------------------------------------------
5721 // Unsigned integer saturating extract and narrow
5722 //------------------------------------------------------------------------------
5723
5724          uqxtn v0.16b, v31.8h
5725          uqxtn v2.8h, v4.4s
5726          uqxtn v6.4s, v8.2d
5727          uqxtn2 v1.8b, v9.8h
5728          uqxtn2 v13.4h, v21.4s
5729          uqxtn2 v4.2s, v0.2d
5730
5731 // CHECK-ERROR: error: invalid operand for instruction
5732 // CHECK-ERROR:         uqxtn v0.16b, v31.8h
5733 // CHECK-ERROR:               ^
5734 // CHECK-ERROR: error: invalid operand for instruction
5735 // CHECK-ERROR:         uqxtn v2.8h, v4.4s
5736 // CHECK-ERROR:               ^
5737 // CHECK-ERROR: error: invalid operand for instruction
5738 // CHECK-ERROR:         uqxtn v6.4s, v8.2d
5739 // CHECK-ERROR:               ^
5740 // CHECK-ERROR: error: invalid operand for instruction
5741 // CHECK-ERROR:         uqxtn2 v1.8b, v9.8h
5742 // CHECK-ERROR:                ^
5743 // CHECK-ERROR: error: invalid operand for instruction
5744 // CHECK-ERROR:         uqxtn2 v13.4h, v21.4s
5745 // CHECK-ERROR:                ^
5746 // CHECK-ERROR: error: invalid operand for instruction
5747 // CHECK-ERROR:         uqxtn2 v4.2s, v0.2d
5748 // CHECK-ERROR:                ^
5749
5750 //------------------------------------------------------------------------------
5751 // Integer shift left long
5752 //------------------------------------------------------------------------------
5753
5754          shll2 v2.8h, v4.16b, #7
5755          shll2 v6.4s, v8.8h, #15
5756          shll2 v6.2d, v8.4s, #31
5757          shll v2.8h, v4.16b, #8
5758          shll v6.4s, v8.8h, #16
5759          shll v6.2d, v8.4s, #32
5760          shll v2.8h, v4.8b, #8
5761          shll v6.4s, v8.4h, #16
5762          shll v6.2d, v8.2s, #32
5763          shll2 v2.8h, v4.8b, #5
5764          shll2 v6.4s, v8.4h, #14
5765          shll2 v6.2d, v8.2s, #1
5766
5767 // CHECK-ERROR: error: invalid operand for instruction
5768 // CHECK-ERROR:         shll2 v2.8h, v4.16b, #7
5769 // CHECK-ERROR:                              ^
5770 // CHECK-ERROR: error: invalid operand for instruction
5771 // CHECK-ERROR:         shll2 v6.4s, v8.8h, #15
5772 // CHECK-ERROR:                             ^
5773 // CHECK-ERROR: error: invalid operand for instruction
5774 // CHECK-ERROR:         shll2 v6.2d, v8.4s, #31
5775 // CHECK-ERROR:                             ^
5776 // CHECK-ERROR: error: invalid operand for instruction
5777 // CHECK-ERROR:         shll v2.8h, v4.16b, #8
5778 // CHECK-ERROR:                     ^
5779 // CHECK-ERROR: error: invalid operand for instruction
5780 // CHECK-ERROR:         shll v6.4s, v8.8h, #16
5781 // CHECK-ERROR:                     ^
5782 // CHECK-ERROR: error: invalid operand for instruction
5783 // CHECK-ERROR:         shll v6.2d, v8.4s, #32
5784 // CHECK-ERROR:                     ^
5785 // CHECK-ERROR: error: invalid operand for instruction
5786 // CHECK-ERROR:         shll2 v2.8h, v4.8b, #5
5787 // CHECK-ERROR:                      ^
5788 // CHECK-ERROR: error: invalid operand for instruction
5789 // CHECK-ERROR:         shll2 v6.4s, v8.4h, #14
5790 // CHECK-ERROR:                      ^
5791 // CHECK-ERROR: error: invalid operand for instruction
5792 // CHECK-ERROR:         shll2 v6.2d, v8.2s, #1
5793 // CHECK-ERROR:                      ^
5794
5795 //------------------------------------------------------------------------------
5796 // Floating-point convert downsize
5797 //------------------------------------------------------------------------------
5798
5799          fcvtn v2.8h, v4.4s
5800          fcvtn v6.4s, v8.2d
5801          fcvtn2 v13.4h, v21.4s
5802          fcvtn2 v4.2s, v0.2d
5803
5804 // CHECK-ERROR: error: invalid operand for instruction
5805 // CHECK-ERROR:         fcvtn v2.8h, v4.4s
5806 // CHECK-ERROR:               ^
5807 // CHECK-ERROR: error: invalid operand for instruction
5808 // CHECK-ERROR:         fcvtn v6.4s, v8.2d
5809 // CHECK-ERROR:               ^
5810 // CHECK-ERROR: error: invalid operand for instruction
5811 // CHECK-ERROR:         fcvtn2 v13.4h, v21.4s
5812 // CHECK-ERROR:                ^
5813 // CHECK-ERROR: error: invalid operand for instruction
5814 // CHECK-ERROR:         fcvtn2 v4.2s, v0.2d
5815 // CHECK-ERROR:                ^
5816
5817 //------------------------------------------------------------------------------
5818 // Floating-point convert downsize with inexact
5819 //------------------------------------------------------------------------------
5820
5821          fcvtxn v6.4s, v8.2d
5822          fcvtxn2 v4.2s, v0.2d
5823
5824 // CHECK-ERROR: error: invalid operand for instruction
5825 // CHECK-ERROR:         fcvtxn v6.4s, v8.2d
5826 // CHECK-ERROR:                ^
5827 // CHECK-ERROR: error: invalid operand for instruction
5828 // CHECK-ERROR:         fcvtxn2 v4.2s, v0.2d
5829 // CHECK-ERROR:                 ^
5830
5831 //------------------------------------------------------------------------------
5832 // Floating-point convert upsize
5833 //------------------------------------------------------------------------------
5834
5835          fcvtl2 v9.4s, v1.4h
5836          fcvtl2 v0.2d, v1.2s
5837          fcvtl v12.4s, v4.8h
5838          fcvtl v17.2d, v28.4s
5839
5840 // CHECK-ERROR: error: invalid operand for instruction
5841 // CHECK-ERROR:         fcvtl2 v9.4s, v1.4h
5842 // CHECK-ERROR:                       ^
5843 // CHECK-ERROR: error: invalid operand for instruction
5844 // CHECK-ERROR:         fcvtl2 v0.2d, v1.2s
5845 // CHECK-ERROR:                       ^
5846 // CHECK-ERROR: error: invalid operand for instruction
5847 // CHECK-ERROR:         fcvtl v12.4s, v4.8h
5848 // CHECK-ERROR:                       ^
5849 // CHECK-ERROR: error: invalid operand for instruction
5850 // CHECK-ERROR:         fcvtl v17.2d, v28.4s
5851 // CHECK-ERROR:                       ^
5852
5853 //------------------------------------------------------------------------------
5854 // Floating-point round to integral
5855 //------------------------------------------------------------------------------
5856
5857          frintn v0.16b, v31.16b
5858          frintn v2.8h, v4.8h
5859          frintn v1.8b, v9.8b
5860          frintn v13.4h, v21.4h
5861
5862          frinta v0.16b, v31.16b
5863          frinta v2.8h, v4.8h
5864          frinta v1.8b, v9.8b
5865          frinta v13.4h, v21.4h
5866
5867          frintp v0.16b, v31.16b
5868          frintp v2.8h, v4.8h
5869          frintp v1.8b, v9.8b
5870          frintp v13.4h, v21.4h
5871
5872          frintm v0.16b, v31.16b
5873          frintm v2.8h, v4.8h
5874          frintm v1.8b, v9.8b
5875          frintm v13.4h, v21.4h
5876
5877          frintx v0.16b, v31.16b
5878          frintx v2.8h, v4.8h
5879          frintx v1.8b, v9.8b
5880          frintx v13.4h, v21.4h
5881
5882          frintz v0.16b, v31.16b
5883          frintz v2.8h, v4.8h
5884          frintz v1.8b, v9.8b
5885          frintz v13.4h, v21.4h
5886
5887          frinti v0.16b, v31.16b
5888          frinti v2.8h, v4.8h
5889          frinti v1.8b, v9.8b
5890          frinti v13.4h, v21.4h
5891
5892          fcvtns v0.16b, v31.16b
5893          fcvtns v2.8h, v4.8h
5894          fcvtns v1.8b, v9.8b
5895          fcvtns v13.4h, v21.4h
5896
5897          fcvtnu v0.16b, v31.16b
5898          fcvtnu v2.8h, v4.8h
5899          fcvtnu v1.8b, v9.8b
5900          fcvtnu v13.4h, v21.4h
5901
5902          fcvtps v0.16b, v31.16b
5903          fcvtps v2.8h, v4.8h
5904          fcvtps v1.8b, v9.8b
5905          fcvtps v13.4h, v21.4h
5906
5907          fcvtpu v0.16b, v31.16b
5908          fcvtpu v2.8h, v4.8h
5909          fcvtpu v1.8b, v9.8b
5910          fcvtpu v13.4h, v21.4h
5911
5912          fcvtms v0.16b, v31.16b
5913          fcvtms v2.8h, v4.8h
5914          fcvtms v1.8b, v9.8b
5915          fcvtms v13.4h, v21.4h
5916
5917          fcvtmu v0.16b, v31.16b
5918          fcvtmu v2.8h, v4.8h
5919          fcvtmu v1.8b, v9.8b
5920          fcvtmu v13.4h, v21.4h
5921
5922          fcvtzs v0.16b, v31.16b
5923          fcvtzs v2.8h, v4.8h
5924          fcvtzs v1.8b, v9.8b
5925          fcvtzs v13.4h, v21.4h
5926
5927          fcvtzu v0.16b, v31.16b
5928          fcvtzu v2.8h, v4.8h
5929          fcvtzu v1.8b, v9.8b
5930          fcvtzu v13.4h, v21.4h
5931
5932          fcvtas v0.16b, v31.16b
5933          fcvtas v2.8h, v4.8h
5934          fcvtas v1.8b, v9.8b
5935          fcvtas v13.4h, v21.4h
5936
5937          fcvtau v0.16b, v31.16b
5938          fcvtau v2.8h, v4.8h
5939          fcvtau v1.8b, v9.8b
5940          fcvtau v13.4h, v21.4h
5941
5942          urecpe v0.16b, v31.16b
5943          urecpe v2.8h, v4.8h
5944          urecpe v1.8b, v9.8b
5945          urecpe v13.4h, v21.4h
5946          urecpe v1.2d, v9.2d
5947
5948          ursqrte v0.16b, v31.16b
5949          ursqrte v2.8h, v4.8h
5950          ursqrte v1.8b, v9.8b
5951          ursqrte v13.4h, v21.4h
5952          ursqrte v1.2d, v9.2d
5953
5954          scvtf v0.16b, v31.16b
5955          scvtf v2.8h, v4.8h
5956          scvtf v1.8b, v9.8b
5957          scvtf v13.4h, v21.4h
5958
5959          ucvtf v0.16b, v31.16b
5960          ucvtf v2.8h, v4.8h
5961          ucvtf v1.8b, v9.8b
5962          ucvtf v13.4h, v21.4h
5963
5964          frecpe v0.16b, v31.16b
5965          frecpe v2.8h, v4.8h
5966          frecpe v1.8b, v9.8b
5967          frecpe v13.4h, v21.4h
5968
5969          frsqrte v0.16b, v31.16b
5970          frsqrte v2.8h, v4.8h
5971          frsqrte v1.8b, v9.8b
5972          frsqrte v13.4h, v21.4h
5973
5974          fsqrt v0.16b, v31.16b
5975          fsqrt v2.8h, v4.8h
5976          fsqrt v1.8b, v9.8b
5977          fsqrt v13.4h, v21.4h
5978
5979 // CHECK-ERROR: error: invalid operand for instruction
5980 // CHECK-ERROR:         frintn v0.16b, v31.16b
5981 // CHECK-ERROR:                   ^
5982 // CHECK-ERROR: error: invalid operand for instruction
5983 // CHECK-ERROR:         frintn v2.8h, v4.8h
5984 // CHECK-ERROR:                   ^
5985 // CHECK-ERROR: error: invalid operand for instruction
5986 // CHECK-ERROR:         frintn v1.8b, v9.8b
5987 // CHECK-ERROR:                   ^
5988 // CHECK-ERROR: error: invalid operand for instruction
5989 // CHECK-ERROR:         frintn v13.4h, v21.4h
5990 // CHECK-ERROR:                    ^
5991 // CHECK-ERROR: error: invalid operand for instruction
5992 // CHECK-ERROR:         frinta v0.16b, v31.16b
5993 // CHECK-ERROR:                   ^
5994 // CHECK-ERROR: error: invalid operand for instruction
5995 // CHECK-ERROR:         frinta v2.8h, v4.8h
5996 // CHECK-ERROR:                   ^
5997 // CHECK-ERROR: error: invalid operand for instruction
5998 // CHECK-ERROR:         frinta v1.8b, v9.8b
5999 // CHECK-ERROR:                   ^
6000 // CHECK-ERROR: error: invalid operand for instruction
6001 // CHECK-ERROR:         frinta v13.4h, v21.4h
6002 // CHECK-ERROR:                    ^
6003 // CHECK-ERROR: error: invalid operand for instruction
6004 // CHECK-ERROR:         frintp v0.16b, v31.16b
6005 // CHECK-ERROR:                   ^
6006 // CHECK-ERROR: error: invalid operand for instruction
6007 // CHECK-ERROR:         frintp v2.8h, v4.8h
6008 // CHECK-ERROR:                   ^
6009 // CHECK-ERROR: error: invalid operand for instruction
6010 // CHECK-ERROR:         frintp v1.8b, v9.8b
6011 // CHECK-ERROR:                   ^
6012 // CHECK-ERROR: error: invalid operand for instruction
6013 // CHECK-ERROR:         frintp v13.4h, v21.4h
6014 // CHECK-ERROR:                    ^
6015 // CHECK-ERROR: error: invalid operand for instruction
6016 // CHECK-ERROR:         frintm v0.16b, v31.16b
6017 // CHECK-ERROR:                   ^
6018 // CHECK-ERROR: error: invalid operand for instruction
6019 // CHECK-ERROR:         frintm v2.8h, v4.8h
6020 // CHECK-ERROR:                   ^
6021 // CHECK-ERROR: error: invalid operand for instruction
6022 // CHECK-ERROR:         frintm v1.8b, v9.8b
6023 // CHECK-ERROR:                   ^
6024 // CHECK-ERROR: error: invalid operand for instruction
6025 // CHECK-ERROR:         frintm v13.4h, v21.4h
6026 // CHECK-ERROR:                    ^
6027 // CHECK-ERROR: error: invalid operand for instruction
6028 // CHECK-ERROR:         frintx v0.16b, v31.16b
6029 // CHECK-ERROR:                   ^
6030 // CHECK-ERROR: error: invalid operand for instruction
6031 // CHECK-ERROR:         frintx v2.8h, v4.8h
6032 // CHECK-ERROR:                   ^
6033 // CHECK-ERROR: error: invalid operand for instruction
6034 // CHECK-ERROR:         frintx v1.8b, v9.8b
6035 // CHECK-ERROR:                   ^
6036 // CHECK-ERROR: error: invalid operand for instruction
6037 // CHECK-ERROR:         frintx v13.4h, v21.4h
6038 // CHECK-ERROR:                    ^
6039 // CHECK-ERROR: error: invalid operand for instruction
6040 // CHECK-ERROR:         frintz v0.16b, v31.16b
6041 // CHECK-ERROR:                   ^
6042 // CHECK-ERROR: error: invalid operand for instruction
6043 // CHECK-ERROR:         frintz v2.8h, v4.8h
6044 // CHECK-ERROR:                   ^
6045 // CHECK-ERROR: error: invalid operand for instruction
6046 // CHECK-ERROR:         frintz v1.8b, v9.8b
6047 // CHECK-ERROR:                   ^
6048 // CHECK-ERROR: error: invalid operand for instruction
6049 // CHECK-ERROR:         frintz v13.4h, v21.4h
6050 // CHECK-ERROR:                    ^
6051 // CHECK-ERROR: error: invalid operand for instruction
6052 // CHECK-ERROR:         frinti v0.16b, v31.16b
6053 // CHECK-ERROR:                   ^
6054 // CHECK-ERROR: error: invalid operand for instruction
6055 // CHECK-ERROR:         frinti v2.8h, v4.8h
6056 // CHECK-ERROR:                   ^
6057 // CHECK-ERROR: error: invalid operand for instruction
6058 // CHECK-ERROR:         frinti v1.8b, v9.8b
6059 // CHECK-ERROR:                   ^
6060 // CHECK-ERROR: error: invalid operand for instruction
6061 // CHECK-ERROR:         frinti v13.4h, v21.4h
6062 // CHECK-ERROR:                    ^
6063 // CHECK-ERROR: error: invalid operand for instruction
6064 // CHECK-ERROR:         fcvtns v0.16b, v31.16b
6065 // CHECK-ERROR:                   ^
6066 // CHECK-ERROR: error: invalid operand for instruction
6067 // CHECK-ERROR:         fcvtns v2.8h, v4.8h
6068 // CHECK-ERROR:                   ^
6069 // CHECK-ERROR: error: invalid operand for instruction
6070 // CHECK-ERROR:         fcvtns v1.8b, v9.8b
6071 // CHECK-ERROR:                   ^
6072 // CHECK-ERROR: error: invalid operand for instruction
6073 // CHECK-ERROR:         fcvtns v13.4h, v21.4h
6074 // CHECK-ERROR:                    ^
6075 // CHECK-ERROR: error: invalid operand for instruction
6076 // CHECK-ERROR:         fcvtnu v0.16b, v31.16b
6077 // CHECK-ERROR:                   ^
6078 // CHECK-ERROR: error: invalid operand for instruction
6079 // CHECK-ERROR:         fcvtnu v2.8h, v4.8h
6080 // CHECK-ERROR:                   ^
6081 // CHECK-ERROR: error: invalid operand for instruction
6082 // CHECK-ERROR:         fcvtnu v1.8b, v9.8b
6083 // CHECK-ERROR:                   ^
6084 // CHECK-ERROR: error: invalid operand for instruction
6085 // CHECK-ERROR:         fcvtnu v13.4h, v21.4h
6086 // CHECK-ERROR:                    ^
6087 // CHECK-ERROR: error: invalid operand for instruction
6088 // CHECK-ERROR:         fcvtps v0.16b, v31.16b
6089 // CHECK-ERROR:                   ^
6090 // CHECK-ERROR: error: invalid operand for instruction
6091 // CHECK-ERROR:         fcvtps v2.8h, v4.8h
6092 // CHECK-ERROR:                   ^
6093 // CHECK-ERROR: error: invalid operand for instruction
6094 // CHECK-ERROR:         fcvtps v1.8b, v9.8b
6095 // CHECK-ERROR:                   ^
6096 // CHECK-ERROR: error: invalid operand for instruction
6097 // CHECK-ERROR:         fcvtps v13.4h, v21.4h
6098 // CHECK-ERROR:                    ^
6099 // CHECK-ERROR: error: invalid operand for instruction
6100 // CHECK-ERROR:         fcvtpu v0.16b, v31.16b
6101 // CHECK-ERROR:                   ^
6102 // CHECK-ERROR: error: invalid operand for instruction
6103 // CHECK-ERROR:         fcvtpu v2.8h, v4.8h
6104 // CHECK-ERROR:                   ^
6105 // CHECK-ERROR: error: invalid operand for instruction
6106 // CHECK-ERROR:         fcvtpu v1.8b, v9.8b
6107 // CHECK-ERROR:                   ^
6108 // CHECK-ERROR: error: invalid operand for instruction
6109 // CHECK-ERROR:         fcvtpu v13.4h, v21.4h
6110 // CHECK-ERROR:                    ^
6111 // CHECK-ERROR: error: invalid operand for instruction
6112 // CHECK-ERROR:         fcvtms v0.16b, v31.16b
6113 // CHECK-ERROR:                   ^
6114 // CHECK-ERROR: error: invalid operand for instruction
6115 // CHECK-ERROR:         fcvtms v2.8h, v4.8h
6116 // CHECK-ERROR:                   ^
6117 // CHECK-ERROR: error: invalid operand for instruction
6118 // CHECK-ERROR:         fcvtms v1.8b, v9.8b
6119 // CHECK-ERROR:                   ^
6120 // CHECK-ERROR: error: invalid operand for instruction
6121 // CHECK-ERROR:         fcvtms v13.4h, v21.4h
6122 // CHECK-ERROR:                    ^
6123 // CHECK-ERROR: error: invalid operand for instruction
6124 // CHECK-ERROR:         fcvtmu v0.16b, v31.16b
6125 // CHECK-ERROR:                   ^
6126 // CHECK-ERROR: error: invalid operand for instruction
6127 // CHECK-ERROR:         fcvtmu v2.8h, v4.8h
6128 // CHECK-ERROR:                   ^
6129 // CHECK-ERROR: error: invalid operand for instruction
6130 // CHECK-ERROR:         fcvtmu v1.8b, v9.8b
6131 // CHECK-ERROR:                   ^
6132 // CHECK-ERROR: error: invalid operand for instruction
6133 // CHECK-ERROR:         fcvtmu v13.4h, v21.4h
6134 // CHECK-ERROR:                    ^
6135 // CHECK-ERROR: error: invalid operand for instruction
6136 // CHECK-ERROR:         fcvtzs v0.16b, v31.16b
6137 // CHECK-ERROR:                   ^
6138 // CHECK-ERROR: error: invalid operand for instruction
6139 // CHECK-ERROR:         fcvtzs v2.8h, v4.8h
6140 // CHECK-ERROR:                   ^
6141 // CHECK-ERROR: error: invalid operand for instruction
6142 // CHECK-ERROR:         fcvtzs v1.8b, v9.8b
6143 // CHECK-ERROR:                   ^
6144 // CHECK-ERROR: error: invalid operand for instruction
6145 // CHECK-ERROR:         fcvtzs v13.4h, v21.4h
6146 // CHECK-ERROR:                    ^
6147 // CHECK-ERROR: error: invalid operand for instruction
6148 // CHECK-ERROR:         fcvtzu v0.16b, v31.16b
6149 // CHECK-ERROR:                   ^
6150 // CHECK-ERROR: error: invalid operand for instruction
6151 // CHECK-ERROR:         fcvtzu v2.8h, v4.8h
6152 // CHECK-ERROR:                   ^
6153 // CHECK-ERROR: error: invalid operand for instruction
6154 // CHECK-ERROR:         fcvtzu v1.8b, v9.8b
6155 // CHECK-ERROR:                   ^
6156 // CHECK-ERROR: error: invalid operand for instruction
6157 // CHECK-ERROR:         fcvtzu v13.4h, v21.4h
6158 // CHECK-ERROR:                    ^
6159 // CHECK-ERROR: error: invalid operand for instruction
6160 // CHECK-ERROR:         fcvtas v0.16b, v31.16b
6161 // CHECK-ERROR:                   ^
6162 // CHECK-ERROR: error: invalid operand for instruction
6163 // CHECK-ERROR:         fcvtas v2.8h, v4.8h
6164 // CHECK-ERROR:                   ^
6165 // CHECK-ERROR: error: invalid operand for instruction
6166 // CHECK-ERROR:         fcvtas v1.8b, v9.8b
6167 // CHECK-ERROR:                   ^
6168 // CHECK-ERROR: error: invalid operand for instruction
6169 // CHECK-ERROR:         fcvtas v13.4h, v21.4h
6170 // CHECK-ERROR:                    ^
6171 // CHECK-ERROR: error: invalid operand for instruction
6172 // CHECK-ERROR:         fcvtau v0.16b, v31.16b
6173 // CHECK-ERROR:                   ^
6174 // CHECK-ERROR: error: invalid operand for instruction
6175 // CHECK-ERROR:         fcvtau v2.8h, v4.8h
6176 // CHECK-ERROR:                   ^
6177 // CHECK-ERROR: error: invalid operand for instruction
6178 // CHECK-ERROR:         fcvtau v1.8b, v9.8b
6179 // CHECK-ERROR:                   ^
6180 // CHECK-ERROR: error: invalid operand for instruction
6181 // CHECK-ERROR:         fcvtau v13.4h, v21.4h
6182 // CHECK-ERROR:                    ^
6183 // CHECK-ERROR: error: invalid operand for instruction
6184 // CHECK-ERROR:         urecpe v0.16b, v31.16b
6185 // CHECK-ERROR:                   ^
6186 // CHECK-ERROR: error: invalid operand for instruction
6187 // CHECK-ERROR:         urecpe v2.8h, v4.8h
6188 // CHECK-ERROR:                   ^
6189 // CHECK-ERROR: error: invalid operand for instruction
6190 // CHECK-ERROR:         urecpe v1.8b, v9.8b
6191 // CHECK-ERROR:                   ^
6192 // CHECK-ERROR: error: invalid operand for instruction
6193 // CHECK-ERROR:         urecpe v13.4h, v21.4h
6194 // CHECK-ERROR:                    ^
6195 // CHECK-ERROR: error: invalid operand for instruction
6196 // CHECK-ERROR:         urecpe v1.2d, v9.2d
6197 // CHECK-ERROR:                   ^
6198 // CHECK-ERROR: error: invalid operand for instruction
6199 // CHECK-ERROR:         ursqrte v0.16b, v31.16b
6200 // CHECK-ERROR:                    ^
6201 // CHECK-ERROR: error: invalid operand for instruction
6202 // CHECK-ERROR:         ursqrte v2.8h, v4.8h
6203 // CHECK-ERROR:                    ^
6204 // CHECK-ERROR: error: invalid operand for instruction
6205 // CHECK-ERROR:         ursqrte v1.8b, v9.8b
6206 // CHECK-ERROR:                    ^
6207 // CHECK-ERROR: error: invalid operand for instruction
6208 // CHECK-ERROR:         ursqrte v13.4h, v21.4h
6209 // CHECK-ERROR:                     ^
6210 // CHECK-ERROR: error: invalid operand for instruction
6211 // CHECK-ERROR:         ursqrte v1.2d, v9.2d
6212 // CHECK-ERROR:                    ^
6213 // CHECK-ERROR: error: invalid operand for instruction
6214 // CHECK-ERROR:         scvtf v0.16b, v31.16b
6215 // CHECK-ERROR:                  ^
6216 // CHECK-ERROR: error: invalid operand for instruction
6217 // CHECK-ERROR:         scvtf v2.8h, v4.8h
6218 // CHECK-ERROR:                  ^
6219 // CHECK-ERROR: error: invalid operand for instruction
6220 // CHECK-ERROR:         scvtf v1.8b, v9.8b
6221 // CHECK-ERROR:                  ^
6222 // CHECK-ERROR: error: invalid operand for instruction
6223 // CHECK-ERROR:         scvtf v13.4h, v21.4h
6224 // CHECK-ERROR:                   ^
6225 // CHECK-ERROR: error: invalid operand for instruction
6226 // CHECK-ERROR:         ucvtf v0.16b, v31.16b
6227 // CHECK-ERROR:                  ^
6228 // CHECK-ERROR: error: invalid operand for instruction
6229 // CHECK-ERROR:         ucvtf v2.8h, v4.8h
6230 // CHECK-ERROR:                  ^
6231 // CHECK-ERROR: error: invalid operand for instruction
6232 // CHECK-ERROR:         ucvtf v1.8b, v9.8b
6233 // CHECK-ERROR:                  ^
6234 // CHECK-ERROR: error: invalid operand for instruction
6235 // CHECK-ERROR:         ucvtf v13.4h, v21.4h
6236 // CHECK-ERROR:                   ^
6237 // CHECK-ERROR: error: invalid operand for instruction
6238 // CHECK-ERROR:         frecpe v0.16b, v31.16b
6239 // CHECK-ERROR:                   ^
6240 // CHECK-ERROR: error: invalid operand for instruction
6241 // CHECK-ERROR:         frecpe v2.8h, v4.8h
6242 // CHECK-ERROR:                   ^
6243 // CHECK-ERROR: error: invalid operand for instruction
6244 // CHECK-ERROR:         frecpe v1.8b, v9.8b
6245 // CHECK-ERROR:                   ^
6246 // CHECK-ERROR: error: invalid operand for instruction
6247 // CHECK-ERROR:         frecpe v13.4h, v21.4h
6248 // CHECK-ERROR:                    ^
6249 // CHECK-ERROR: error: invalid operand for instruction
6250 // CHECK-ERROR:         frsqrte v0.16b, v31.16b
6251 // CHECK-ERROR:                    ^
6252 // CHECK-ERROR: error: invalid operand for instruction
6253 // CHECK-ERROR:         frsqrte v2.8h, v4.8h
6254 // CHECK-ERROR:                    ^
6255 // CHECK-ERROR: error: invalid operand for instruction
6256 // CHECK-ERROR:         frsqrte v1.8b, v9.8b
6257 // CHECK-ERROR:                    ^
6258 // CHECK-ERROR: error: invalid operand for instruction
6259 // CHECK-ERROR:         frsqrte v13.4h, v21.4h
6260 // CHECK-ERROR:                     ^
6261 // CHECK-ERROR: error: invalid operand for instruction
6262 // CHECK-ERROR:         fsqrt v0.16b, v31.16b
6263 // CHECK-ERROR:                  ^
6264 // CHECK-ERROR: error: invalid operand for instruction
6265 // CHECK-ERROR:         fsqrt v2.8h, v4.8h
6266 // CHECK-ERROR:                  ^
6267 // CHECK-ERROR: error: invalid operand for instruction
6268 // CHECK-ERROR:         fsqrt v1.8b, v9.8b
6269 // CHECK-ERROR:                  ^
6270 // CHECK-ERROR: error: invalid operand for instruction
6271 // CHECK-ERROR:         fsqrt v13.4h, v21.4h
6272 // CHECK-ERROR:                   ^
6273
6274 //----------------------------------------------------------------------
6275 // Scalar Floating-point Convert To Signed Fixed-point (Immediate)
6276 //----------------------------------------------------------------------
6277
6278     fcvtzs s21, s12, #0
6279     fcvtzs d21, d12, #65
6280     fcvtzs s21, d12, #1
6281
6282 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
6283 // CHECK-ERROR:        fcvtzs s21, s12, #0
6284 // CHECK-ERROR:                         ^
6285 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
6286 // CHECK-ERROR:        fcvtzs d21, d12, #65
6287 // CHECK-ERROR:                         ^
6288 // CHECK-ERROR: error: invalid operand for instruction
6289 // CHECK-ERROR:        fcvtzs s21, d12, #1
6290 // CHECK-ERROR:                    ^
6291
6292 //----------------------------------------------------------------------
6293 // Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
6294 //----------------------------------------------------------------------
6295
6296     fcvtzu s21, s12, #33
6297     fcvtzu d21, d12, #0
6298     fcvtzu s21, d12, #1
6299
6300 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
6301 // CHECK-ERROR:        fcvtzu s21, s12, #33
6302 // CHECK-ERROR:                         ^
6303 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
6304 // CHECK-ERROR:        fcvtzu d21, d12, #0
6305 // CHECK-ERROR:                         ^
6306 // CHECK-ERROR: error: invalid operand for instruction
6307 // CHECK-ERROR:        fcvtzu s21, d12, #1
6308 // CHECK-ERROR:                    ^
6309
6310 //----------------------------------------------------------------------
6311 // Scalar Unsigned Saturating Extract Narrow
6312 //----------------------------------------------------------------------
6313
6314         aese v0.8h, v1.8h
6315         aese v0.4s, v1.4s
6316         aese v0.2d, v1.2d
6317         aesd v0.8h, v1.8h
6318         aesmc v0.8h, v1.8h
6319         aesimc v0.8h, v1.8h
6320
6321 // CHECK:  error: invalid operand for instruction
6322 // CHECK:         aese v0.8h, v1.8h
6323 // CHECK:                 ^
6324 // CHECK:  error: invalid operand for instruction
6325 // CHECK:         aese v0.4s, v1.4s
6326 // CHECK:                 ^
6327 // CHECK:  error: invalid operand for instruction
6328 // CHECK:         aese v0.2d, v1.2d
6329 // CHECK:                 ^
6330 // CHECK:  error: invalid operand for instruction
6331 // CHECK:         aesd v0.8h, v1.8h
6332 // CHECK:                 ^
6333 // CHECK:  error: invalid operand for instruction
6334 // CHECK:         aesmc v0.8h, v1.8h
6335 // CHECK:                  ^
6336 // CHECK:  error: invalid operand for instruction
6337 // CHECK:         aesimc v0.8h, v1.8h
6338 // CHECK:                   ^
6339
6340         sha1h b0, b1
6341         sha1h h0, h1
6342         sha1h d0, d1
6343         sha1h q0, q1
6344         sha1su1 v0.16b, v1.16b
6345         sha1su1 v0.8h, v1.8h
6346         sha1su1 v0.2d, v1.2d
6347         sha256su0 v0.16b, v1.16b
6348
6349 // CHECK:  error: invalid operand for instruction
6350 // CHECK:         sha1h b0, b1
6351 // CHECK:               ^
6352 // CHECK:  error: invalid operand for instruction
6353 // CHECK:         sha1h h0, h1
6354 // CHECK:               ^
6355 // CHECK:  error: invalid operand for instruction
6356 // CHECK:         sha1h d0, d1
6357 // CHECK:               ^
6358 // CHECK:  error: invalid operand for instruction
6359 // CHECK:         sha1h q0, q1
6360 // CHECK:               ^
6361 // CHECK:  error: invalid operand for instruction
6362 // CHECK:         sha1su1 v0.16b, v1.16b
6363 // CHECK:                    ^
6364 // CHECK:  error: invalid operand for instruction
6365 // CHECK:         sha1su1 v0.8h, v1.8h
6366 // CHECK:                    ^
6367 // CHECK:  error: invalid operand for instruction
6368 // CHECK:         sha1su1 v0.2d, v1.2d
6369 // CHECK:                    ^
6370 // CHECK:  error: invalid operand for instruction
6371 // CHECK:         sha256su0 v0.16b, v1.16b
6372 // CHECK:                      ^
6373
6374         sha1c q0, q1, v2.4s
6375         sha1p q0, q1, v2.4s
6376         sha1m q0, q1, v2.4s
6377         sha1su0 v0.16b, v1.16b, v2.16b
6378         sha1su0 v0.8h, v1.8h, v2.8h
6379         sha1su0 v0.2d, v1.2d, v2.2d
6380         sha256h q0, q1, q2
6381         sha256h v0.4s, v1.4s, v2.4s
6382         sha256h2 q0, q1, q2
6383         sha256su1 v0.16b, v1.16b, v2.16b
6384
6385 // CHECK:  error: invalid operand for instruction
6386 // CHECK:         sha1c q0, q1, v2.4s
6387 // CHECK:                   ^
6388 // CHECK:  error: invalid operand for instruction
6389 // CHECK:         sha1p q0, q1, v2.4s
6390 // CHECK:                   ^
6391 // CHECK:  error: invalid operand for instruction
6392 // CHECK:         sha1m q0, q1, v2.4s
6393 // CHECK:                   ^
6394 // CHECK:  error: invalid operand for instruction
6395 // CHECK:         sha1su0 v0.16b, v1.16b, v2.16b
6396 // CHECK:                    ^
6397 // CHECK:  error: invalid operand for instruction
6398 // CHECK:         sha1su0 v0.8h, v1.8h, v2.8h
6399 // CHECK:                    ^
6400 // CHECK:  error: invalid operand for instruction
6401 // CHECK:         sha1su0 v0.2d, v1.2d, v2.2d
6402 // CHECK:                    ^
6403 // CHECK:  error: too few operands for instruction
6404 // CHECK:         sha256h q0, q1, q2
6405 // CHECK:         ^
6406 // CHECK:  error: invalid operand for instruction
6407 // CHECK:         sha256h v0.4s, v1.4s, v2.4s
6408 // CHECK:                    ^
6409 // CHECK:  error: too few operands for instruction
6410 // CHECK:         sha256h2 q0, q1, q2
6411 // CHECK:         ^
6412 // CHECK:  error: invalid operand for instruction
6413 // CHECK:         sha256su1 v0.16b, v1.16b, v2.16b
6414 // CHECK:                      ^
6415
6416 //----------------------------------------------------------------------
6417 // Bitwise extract
6418 //----------------------------------------------------------------------
6419
6420         ext v0.8b, v1.8b, v2.4h, #0x3
6421         ext v0.4h, v1.4h, v2.4h, #0x3
6422         ext v0.2s, v1.2s, v2.2s, #0x1
6423         ext v0.1d, v1.1d, v2.1d, #0x0
6424
6425 // CHECK-ERROR: error: invalid operand for instruction
6426 // CHECK-ERROR:         ext v0.8b, v1.8b, v2.4h, #0x3
6427 // CHECK-ERROR:                              ^
6428 // CHECK-ERROR: error: invalid operand for instruction
6429 // CHECK-ERROR:         ext v0.4h, v1.4h, v2.4h, #0x3
6430 // CHECK-ERROR:                ^
6431 // CHECK-ERROR: error: invalid operand for instruction
6432 // CHECK-ERROR:         ext v0.2s, v1.2s, v2.2s, #0x1
6433 // CHECK-ERROR:                ^
6434 // CHECK-ERROR: error: invalid operand for instruction
6435 // CHECK-ERROR:         ext v0.1d, v1.1d, v2.1d, #0x0
6436 // CHECK-ERROR:                ^
6437
6438         ext v0.16b, v1.16b, v2.8h, #0x3
6439         ext v0.8h, v1.8h, v2.8h, #0x3
6440         ext v0.4s, v1.4s, v2.4s, #0x1
6441         ext v0.2d, v1.2d, v2.2d, #0x0
6442
6443 // CHECK-ERROR: error: invalid operand for instruction
6444 // CHECK-ERROR:         ext v0.16b, v1.16b, v2.8h, #0x3
6445 // CHECK-ERROR:                                ^
6446 // CHECK-ERROR: error: invalid operand for instruction
6447 // CHECK-ERROR:         ext v0.8h, v1.8h, v2.8h, #0x3
6448 // CHECK-ERROR:                ^
6449 // CHECK-ERROR: error: invalid operand for instruction
6450 // CHECK-ERROR:         ext v0.4s, v1.4s, v2.4s, #0x1
6451 // CHECK-ERROR:                ^
6452 // CHECK-ERROR: error: invalid operand for instruction
6453 // CHECK-ERROR:         ext v0.2d, v1.2d, v2.2d, #0x0
6454 // CHECK-ERROR:                ^
6455
6456
6457 //----------------------------------------------------------------------
6458 // Permutation with 3 vectors
6459 //----------------------------------------------------------------------
6460
6461         uzp1 v0.16b, v1.8b, v2.8b
6462         uzp1 v0.8b, v1.4b, v2.4b
6463         uzp1 v0.8h, v1.4h, v2.4h
6464         uzp1 v0.4h, v1.2h, v2.2h
6465         uzp1 v0.4s, v1.2s, v2.2s
6466         uzp1 v0.2s, v1.1s, v2.1s
6467         uzp1 v0.2d, v1.1d, v2.1d
6468         uzp1 v0.1d, v1.1d, v2.1d
6469
6470 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
6471 // CHECK-ERROR         uzp1 v0.16b, v1.8b, v2.8b
6472 // CHECK-ERROR                      ^
6473 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
6474 // CHECK-ERROR         uzp1 v0.8b, v1.4b, v2.4b
6475 // CHECK-ERROR                     ^
6476 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
6477 // CHECK-ERROR         uzp1 v0.8h, v1.4h, v2.4h
6478 // CHECK-ERROR                     ^
6479 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
6480 // CHECK-ERROR         uzp1 v0.4h, v1.2h, v2.2h
6481 // CHECK-ERROR                     ^
6482 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
6483 // CHECK-ERROR         uzp1 v0.4s, v1.2s, v2.2s
6484 // CHECK-ERROR                     ^
6485 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
6486 // CHECK-ERROR         uzp1 v0.2s, v1.1s, v2.1s
6487 // CHECK-ERROR                     ^
6488 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
6489 // CHECK-ERROR         uzp1 v0.2d, v1.1d, v2.1d
6490 // CHECK-ERROR                     ^
6491 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
6492 // CHECK-ERROR         uzp1 v0.1d, v1.1d, v2.1d
6493 // CHECK-ERROR                 ^
6494
6495         uzp2 v0.16b, v1.8b, v2.8b
6496         uzp2 v0.8b, v1.4b, v2.4b
6497         uzp2 v0.8h, v1.4h, v2.4h
6498         uzp2 v0.4h, v1.2h, v2.2h
6499         uzp2 v0.4s, v1.2s, v2.2s
6500         uzp2 v0.2s, v1.1s, v2.1s
6501         uzp2 v0.2d, v1.1d, v2.1d
6502         uzp2 v0.1d, v1.1d, v2.1d
6503
6504 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
6505 // CHECK-ERROR         uzp2 v0.16b, v1.8b, v2.8b
6506 // CHECK-ERROR                      ^
6507 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
6508 // CHECK-ERROR         uzp2 v0.8b, v1.4b, v2.4b
6509 // CHECK-ERROR                     ^
6510 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
6511 // CHECK-ERROR         uzp2 v0.8h, v1.4h, v2.4h
6512 // CHECK-ERROR                     ^
6513 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
6514 // CHECK-ERROR         uzp2 v0.4h, v1.2h, v2.2h
6515 // CHECK-ERROR                     ^
6516 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
6517 // CHECK-ERROR         uzp2 v0.4s, v1.2s, v2.2s
6518 // CHECK-ERROR                     ^
6519 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
6520 // CHECK-ERROR         uzp2 v0.2s, v1.1s, v2.1s
6521 // CHECK-ERROR                     ^
6522 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
6523 // CHECK-ERROR         uzp2 v0.2d, v1.1d, v2.1d
6524 // CHECK-ERROR                     ^
6525 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
6526 // CHECK-ERROR         uzp2 v0.1d, v1.1d, v2.1d
6527 // CHECK-ERROR                 ^
6528
6529         zip1 v0.16b, v1.8b, v2.8b
6530         zip1 v0.8b, v1.4b, v2.4b
6531         zip1 v0.8h, v1.4h, v2.4h
6532         zip1 v0.4h, v1.2h, v2.2h
6533         zip1 v0.4s, v1.2s, v2.2s
6534         zip1 v0.2s, v1.1s, v2.1s
6535         zip1 v0.2d, v1.1d, v2.1d
6536         zip1 v0.1d, v1.1d, v2.1d
6537
6538 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
6539 // CHECK-ERROR         zip1 v0.16b, v1.8b, v2.8b
6540 // CHECK-ERROR                      ^
6541 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
6542 // CHECK-ERROR         zip1 v0.8b, v1.4b, v2.4b
6543 // CHECK-ERROR                     ^
6544 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
6545 // CHECK-ERROR         zip1 v0.8h, v1.4h, v2.4h
6546 // CHECK-ERROR                     ^
6547 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
6548 // CHECK-ERROR         zip1 v0.4h, v1.2h, v2.2h
6549 // CHECK-ERROR                     ^
6550 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
6551 // CHECK-ERROR         zip1 v0.4s, v1.2s, v2.2s
6552 // CHECK-ERROR                     ^
6553 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
6554 // CHECK-ERROR         zip1 v0.2s, v1.1s, v2.1s
6555 // CHECK-ERROR                     ^
6556 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
6557 // CHECK-ERROR         zip1 v0.2d, v1.1d, v2.1d
6558 // CHECK-ERROR                     ^
6559 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
6560 // CHECK-ERROR         zip1 v0.1d, v1.1d, v2.1d
6561 // CHECK-ERROR                 ^
6562
6563         zip2 v0.16b, v1.8b, v2.8b
6564         zip2 v0.8b, v1.4b, v2.4b
6565         zip2 v0.8h, v1.4h, v2.4h
6566         zip2 v0.4h, v1.2h, v2.2h
6567         zip2 v0.4s, v1.2s, v2.2s
6568         zip2 v0.2s, v1.1s, v2.1s
6569         zip2 v0.2d, v1.1d, v2.1d
6570         zip2 v0.1d, v1.1d, v2.1d
6571
6572 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
6573 // CHECK-ERROR         zip2 v0.16b, v1.8b, v2.8b
6574 // CHECK-ERROR                      ^
6575 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
6576 // CHECK-ERROR         zip2 v0.8b, v1.4b, v2.4b
6577 // CHECK-ERROR                     ^
6578 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
6579 // CHECK-ERROR         zip2 v0.8h, v1.4h, v2.4h
6580 // CHECK-ERROR                     ^
6581 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
6582 // CHECK-ERROR         zip2 v0.4h, v1.2h, v2.2h
6583 // CHECK-ERROR                     ^
6584 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
6585 // CHECK-ERROR         zip2 v0.4s, v1.2s, v2.2s
6586 // CHECK-ERROR                     ^
6587 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
6588 // CHECK-ERROR         zip2 v0.2s, v1.1s, v2.1s
6589 // CHECK-ERROR                     ^
6590 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
6591 // CHECK-ERROR         zip2 v0.2d, v1.1d, v2.1d
6592 // CHECK-ERROR                     ^
6593 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
6594 // CHECK-ERROR         zip2 v0.1d, v1.1d, v2.1d
6595 // CHECK-ERROR                 ^
6596
6597         trn1 v0.16b, v1.8b, v2.8b
6598         trn1 v0.8b, v1.4b, v2.4b
6599         trn1 v0.8h, v1.4h, v2.4h
6600         trn1 v0.4h, v1.2h, v2.2h
6601         trn1 v0.4s, v1.2s, v2.2s
6602         trn1 v0.2s, v1.1s, v2.1s
6603         trn1 v0.2d, v1.1d, v2.1d
6604         trn1 v0.1d, v1.1d, v2.1d
6605
6606 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
6607 // CHECK-ERROR         trn1 v0.16b, v1.8b, v2.8b
6608 // CHECK-ERROR                      ^
6609 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
6610 // CHECK-ERROR         trn1 v0.8b, v1.4b, v2.4b
6611 // CHECK-ERROR                     ^
6612 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
6613 // CHECK-ERROR         trn1 v0.8h, v1.4h, v2.4h
6614 // CHECK-ERROR                     ^
6615 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
6616 // CHECK-ERROR         trn1 v0.4h, v1.2h, v2.2h
6617 // CHECK-ERROR                     ^
6618 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
6619 // CHECK-ERROR         trn1 v0.4s, v1.2s, v2.2s
6620 // CHECK-ERROR                     ^
6621 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
6622 // CHECK-ERROR         trn1 v0.2s, v1.1s, v2.1s
6623 // CHECK-ERROR                     ^
6624 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
6625 // CHECK-ERROR         trn1 v0.2d, v1.1d, v2.1d
6626 // CHECK-ERROR                     ^
6627 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
6628 // CHECK-ERROR         trn1 v0.1d, v1.1d, v2.1d
6629 // CHECK-ERROR                 ^
6630
6631         trn2 v0.16b, v1.8b, v2.8b
6632         trn2 v0.8b, v1.4b, v2.4b
6633         trn2 v0.8h, v1.4h, v2.4h
6634         trn2 v0.4h, v1.2h, v2.2h
6635         trn2 v0.4s, v1.2s, v2.2s
6636         trn2 v0.2s, v1.1s, v2.1s
6637         trn2 v0.2d, v1.1d, v2.1d
6638         trn2 v0.1d, v1.1d, v2.1d
6639
6640 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
6641 // CHECK-ERROR         trn2 v0.16b, v1.8b, v2.8b
6642 // CHECK-ERROR                      ^
6643 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
6644 // CHECK-ERROR         trn2 v0.8b, v1.4b, v2.4b
6645 // CHECK-ERROR                     ^
6646 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
6647 // CHECK-ERROR         trn2 v0.8h, v1.4h, v2.4h
6648 // CHECK-ERROR                     ^
6649 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
6650 // CHECK-ERROR         trn2 v0.4h, v1.2h, v2.2h
6651 // CHECK-ERROR                     ^
6652 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
6653 // CHECK-ERROR         trn2 v0.4s, v1.2s, v2.2s
6654 // CHECK-ERROR                     ^
6655 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
6656 // CHECK-ERROR         trn2 v0.2s, v1.1s, v2.1s
6657 // CHECK-ERROR                     ^
6658 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
6659 // CHECK-ERROR         trn2 v0.2d, v1.1d, v2.1d
6660 // CHECK-ERROR                     ^
6661 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
6662 // CHECK-ERROR         trn2 v0.1d, v1.1d, v2.1d
6663 // CHECK-ERROR                 ^
6664
6665 //----------------------------------------------------------------------
6666 // Permutation with 3 vectors
6667 //----------------------------------------------------------------------
6668
6669         uzp1 v0.16b, v1.8b, v2.8b
6670         uzp1 v0.8b, v1.4b, v2.4b
6671         uzp1 v0.8h, v1.4h, v2.4h
6672         uzp1 v0.4h, v1.2h, v2.2h
6673         uzp1 v0.4s, v1.2s, v2.2s
6674         uzp1 v0.2s, v1.1s, v2.1s
6675         uzp1 v0.2d, v1.1d, v2.1d
6676         uzp1 v0.1d, v1.1d, v2.1d
6677
6678 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
6679 // CHECK-ERROR         uzp1 v0.16b, v1.8b, v2.8b
6680 // CHECK-ERROR                      ^
6681 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
6682 // CHECK-ERROR         uzp1 v0.8b, v1.4b, v2.4b
6683 // CHECK-ERROR                     ^
6684 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
6685 // CHECK-ERROR         uzp1 v0.8h, v1.4h, v2.4h
6686 // CHECK-ERROR                     ^
6687 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
6688 // CHECK-ERROR         uzp1 v0.4h, v1.2h, v2.2h
6689 // CHECK-ERROR                     ^
6690 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
6691 // CHECK-ERROR         uzp1 v0.4s, v1.2s, v2.2s
6692 // CHECK-ERROR                     ^
6693 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
6694 // CHECK-ERROR         uzp1 v0.2s, v1.1s, v2.1s
6695 // CHECK-ERROR                     ^
6696 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
6697 // CHECK-ERROR         uzp1 v0.2d, v1.1d, v2.1d
6698 // CHECK-ERROR                     ^
6699 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
6700 // CHECK-ERROR         uzp1 v0.1d, v1.1d, v2.1d
6701 // CHECK-ERROR                 ^
6702
6703         uzp2 v0.16b, v1.8b, v2.8b
6704         uzp2 v0.8b, v1.4b, v2.4b
6705         uzp2 v0.8h, v1.4h, v2.4h
6706         uzp2 v0.4h, v1.2h, v2.2h
6707         uzp2 v0.4s, v1.2s, v2.2s
6708         uzp2 v0.2s, v1.1s, v2.1s
6709         uzp2 v0.2d, v1.1d, v2.1d
6710         uzp2 v0.1d, v1.1d, v2.1d
6711
6712 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
6713 // CHECK-ERROR         uzp2 v0.16b, v1.8b, v2.8b
6714 // CHECK-ERROR                      ^
6715 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
6716 // CHECK-ERROR         uzp2 v0.8b, v1.4b, v2.4b
6717 // CHECK-ERROR                     ^
6718 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
6719 // CHECK-ERROR         uzp2 v0.8h, v1.4h, v2.4h
6720 // CHECK-ERROR                     ^
6721 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
6722 // CHECK-ERROR         uzp2 v0.4h, v1.2h, v2.2h
6723 // CHECK-ERROR                     ^
6724 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
6725 // CHECK-ERROR         uzp2 v0.4s, v1.2s, v2.2s
6726 // CHECK-ERROR                     ^
6727 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
6728 // CHECK-ERROR         uzp2 v0.2s, v1.1s, v2.1s
6729 // CHECK-ERROR                     ^
6730 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
6731 // CHECK-ERROR         uzp2 v0.2d, v1.1d, v2.1d
6732 // CHECK-ERROR                     ^
6733 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
6734 // CHECK-ERROR         uzp2 v0.1d, v1.1d, v2.1d
6735 // CHECK-ERROR                 ^
6736
6737         zip1 v0.16b, v1.8b, v2.8b
6738         zip1 v0.8b, v1.4b, v2.4b
6739         zip1 v0.8h, v1.4h, v2.4h
6740         zip1 v0.4h, v1.2h, v2.2h
6741         zip1 v0.4s, v1.2s, v2.2s
6742         zip1 v0.2s, v1.1s, v2.1s
6743         zip1 v0.2d, v1.1d, v2.1d
6744         zip1 v0.1d, v1.1d, v2.1d
6745
6746 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
6747 // CHECK-ERROR         zip1 v0.16b, v1.8b, v2.8b
6748 // CHECK-ERROR                      ^
6749 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
6750 // CHECK-ERROR         zip1 v0.8b, v1.4b, v2.4b
6751 // CHECK-ERROR                     ^
6752 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
6753 // CHECK-ERROR         zip1 v0.8h, v1.4h, v2.4h
6754 // CHECK-ERROR                     ^
6755 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
6756 // CHECK-ERROR         zip1 v0.4h, v1.2h, v2.2h
6757 // CHECK-ERROR                     ^
6758 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
6759 // CHECK-ERROR         zip1 v0.4s, v1.2s, v2.2s
6760 // CHECK-ERROR                     ^
6761 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
6762 // CHECK-ERROR         zip1 v0.2s, v1.1s, v2.1s
6763 // CHECK-ERROR                     ^
6764 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
6765 // CHECK-ERROR         zip1 v0.2d, v1.1d, v2.1d
6766 // CHECK-ERROR                     ^
6767 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
6768 // CHECK-ERROR         zip1 v0.1d, v1.1d, v2.1d
6769 // CHECK-ERROR                 ^
6770
6771         zip2 v0.16b, v1.8b, v2.8b
6772         zip2 v0.8b, v1.4b, v2.4b
6773         zip2 v0.8h, v1.4h, v2.4h
6774         zip2 v0.4h, v1.2h, v2.2h
6775         zip2 v0.4s, v1.2s, v2.2s
6776         zip2 v0.2s, v1.1s, v2.1s
6777         zip2 v0.2d, v1.1d, v2.1d
6778         zip2 v0.1d, v1.1d, v2.1d
6779
6780 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
6781 // CHECK-ERROR         zip2 v0.16b, v1.8b, v2.8b
6782 // CHECK-ERROR                      ^
6783 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
6784 // CHECK-ERROR         zip2 v0.8b, v1.4b, v2.4b
6785 // CHECK-ERROR                     ^
6786 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
6787 // CHECK-ERROR         zip2 v0.8h, v1.4h, v2.4h
6788 // CHECK-ERROR                     ^
6789 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
6790 // CHECK-ERROR         zip2 v0.4h, v1.2h, v2.2h
6791 // CHECK-ERROR                     ^
6792 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
6793 // CHECK-ERROR         zip2 v0.4s, v1.2s, v2.2s
6794 // CHECK-ERROR                     ^
6795 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
6796 // CHECK-ERROR         zip2 v0.2s, v1.1s, v2.1s
6797 // CHECK-ERROR                     ^
6798 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
6799 // CHECK-ERROR         zip2 v0.2d, v1.1d, v2.1d
6800 // CHECK-ERROR                     ^
6801 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
6802 // CHECK-ERROR         zip2 v0.1d, v1.1d, v2.1d
6803 // CHECK-ERROR                 ^
6804
6805         trn1 v0.16b, v1.8b, v2.8b
6806         trn1 v0.8b, v1.4b, v2.4b
6807         trn1 v0.8h, v1.4h, v2.4h
6808         trn1 v0.4h, v1.2h, v2.2h
6809         trn1 v0.4s, v1.2s, v2.2s
6810         trn1 v0.2s, v1.1s, v2.1s
6811         trn1 v0.2d, v1.1d, v2.1d
6812         trn1 v0.1d, v1.1d, v2.1d
6813
6814 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
6815 // CHECK-ERROR         trn1 v0.16b, v1.8b, v2.8b
6816 // CHECK-ERROR                      ^
6817 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
6818 // CHECK-ERROR         trn1 v0.8b, v1.4b, v2.4b
6819 // CHECK-ERROR                     ^
6820 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
6821 // CHECK-ERROR         trn1 v0.8h, v1.4h, v2.4h
6822 // CHECK-ERROR                     ^
6823 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
6824 // CHECK-ERROR         trn1 v0.4h, v1.2h, v2.2h
6825 // CHECK-ERROR                     ^
6826 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
6827 // CHECK-ERROR         trn1 v0.4s, v1.2s, v2.2s
6828 // CHECK-ERROR                     ^
6829 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
6830 // CHECK-ERROR         trn1 v0.2s, v1.1s, v2.1s
6831 // CHECK-ERROR                     ^
6832 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
6833 // CHECK-ERROR         trn1 v0.2d, v1.1d, v2.1d
6834 // CHECK-ERROR                     ^
6835 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
6836 // CHECK-ERROR         trn1 v0.1d, v1.1d, v2.1d
6837 // CHECK-ERROR                 ^
6838
6839         trn2 v0.16b, v1.8b, v2.8b
6840         trn2 v0.8b, v1.4b, v2.4b
6841         trn2 v0.8h, v1.4h, v2.4h
6842         trn2 v0.4h, v1.2h, v2.2h
6843         trn2 v0.4s, v1.2s, v2.2s
6844         trn2 v0.2s, v1.1s, v2.1s
6845         trn2 v0.2d, v1.1d, v2.1d
6846         trn2 v0.1d, v1.1d, v2.1d
6847
6848 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
6849 // CHECK-ERROR         trn2 v0.16b, v1.8b, v2.8b
6850 // CHECK-ERROR                      ^
6851 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
6852 // CHECK-ERROR         trn2 v0.8b, v1.4b, v2.4b
6853 // CHECK-ERROR                     ^
6854 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
6855 // CHECK-ERROR         trn2 v0.8h, v1.4h, v2.4h
6856 // CHECK-ERROR                     ^
6857 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
6858 // CHECK-ERROR         trn2 v0.4h, v1.2h, v2.2h
6859 // CHECK-ERROR                     ^
6860 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
6861 // CHECK-ERROR         trn2 v0.4s, v1.2s, v2.2s
6862 // CHECK-ERROR                     ^
6863 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
6864 // CHECK-ERROR         trn2 v0.2s, v1.1s, v2.1s
6865 // CHECK-ERROR                     ^
6866 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
6867 // CHECK-ERROR         trn2 v0.2d, v1.1d, v2.1d
6868 // CHECK-ERROR                     ^
6869 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
6870 // CHECK-ERROR         trn2 v0.1d, v1.1d, v2.1d
6871 // CHECK-ERROR                 ^
6872
6873 //----------------------------------------------------------------------
6874 // Floating Point  multiply (scalar, by element)
6875 //----------------------------------------------------------------------
6876       // mismatched and invalid vector types
6877       fmul    s0, s1, v1.h[0]
6878       fmul    h0, h1, v1.s[0]
6879       // invalid lane
6880       fmul    s2, s29, v10.s[4]
6881
6882 // CHECK-ERROR: error: invalid operand for instruction
6883 // CHECK-ERROR:          fmul    s0, s1, v1.h[0]
6884 // CHECK-ERROR:                             ^
6885 // CHECK-ERROR: error: invalid operand for instruction
6886 // CHECK-ERROR:          fmul    h0, h1, v1.s[0]
6887 // CHECK-ERROR:                  ^
6888 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6889 // CHECK-ERROR:          fmul    s2, s29, v10.s[4]
6890 // CHECK-ERROR:                                 ^
6891
6892 //----------------------------------------------------------------------
6893 // Floating Point  multiply extended (scalar, by element)
6894 //----------------------------------------------------------------------
6895       // mismatched and invalid vector types
6896       fmulx    d0, d1, v1.b[0]
6897       fmulx    h0, h1, v1.d[0]
6898       // invalid lane
6899       fmulx    d2, d29, v10.d[3]
6900
6901 // CHECK-ERROR: error: invalid operand for instruction
6902 // CHECK-ERROR:          fmulx    d0, d1, v1.b[0]
6903 // CHECK-ERROR:                              ^
6904 // CHECK-ERROR: error: invalid operand for instruction
6905 // CHECK-ERROR:          fmulx    h0, h1, v1.d[0]
6906 // CHECK-ERROR:                   ^
6907 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6908 // CHECK-ERROR:          fmulx    d2, d29, v10.d[3]
6909 // CHECK-ERROR:                                  ^
6910
6911 //----------------------------------------------------------------------
6912 // Floating Point fused multiply-add (scalar, by element)
6913 //----------------------------------------------------------------------
6914       // mismatched and invalid vector types
6915       fmla    b0, b1, v1.b[0]
6916       fmla    d30, s11, v1.d[1]
6917       // invalid lane
6918       fmla    s16, s22, v16.s[5]
6919
6920 // CHECK-ERROR: error: invalid operand for instruction
6921 // CHECK-ERROR:          fmla    b0, b1, v1.b[0]
6922 // CHECK-ERROR:                  ^
6923 // CHECK-ERROR: error: invalid operand for instruction
6924 // CHECK-ERROR:          fmla    d30, s11, v1.d[1]
6925 // CHECK-ERROR:                       ^
6926 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6927 // CHECK-ERROR:          fmla    s16, s22, v16.s[5]
6928 // CHECK-ERROR:                                  ^
6929
6930 //----------------------------------------------------------------------
6931 // Floating Point fused multiply-subtract (scalar, by element)
6932 //----------------------------------------------------------------------
6933     // mismatched and invalid vector types
6934     fmls    s29, h10, v28.s[1]
6935     fmls    h7, h17, v26.s[2]
6936     // invalid lane
6937     fmls    d16, d22, v16.d[-1]
6938
6939 // CHECK-ERROR: error: invalid operand for instruction
6940 // CHECK-ERROR:          fmls    s29, h10, v28.s[1]
6941 // CHECK-ERROR:                       ^
6942 // CHECK-ERROR: error: invalid operand for instruction
6943 // CHECK-ERROR:          fmls    h7, h17, v26.s[2]
6944 // CHECK-ERROR:                  ^
6945 // CHECK-ARM64-ERROR: error: vector lane must be an integer in range [0, 1]
6946 // CHECK-ERROR:          fmls    d16, d22, v16.d[-1]
6947 // CHECK-ERROR:                                  ^
6948
6949 //----------------------------------------------------------------------
6950 // Scalar Signed saturating doubling multiply-add long
6951 // (scalar, by element)
6952 //----------------------------------------------------------------------
6953     // mismatched and invalid vector types
6954     sqdmlal s0, h0, v0.s[0]
6955     sqdmlal s8, s9, v14.s[1]
6956     // invalid lane
6957     sqdmlal d4, s5, v1.s[5]
6958     // invalid vector index
6959     sqdmlal s0, h0, v17.h[0]
6960
6961 // CHECK-ERROR: error: invalid operand for instruction
6962 // CHECK-ERROR:          sqdmlal s0, h0, v0.s[0]
6963 // CHECK-ERROR:                             ^
6964 // CHECK-ERROR: error: invalid operand for instruction
6965 // CHECK-ERROR:          sqdmlal s8, s9, v14.s[1]
6966 // CHECK-ERROR:                  ^
6967 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6968 // CHECK-ERROR:          sqdmlal d4, s5, v1.s[5]
6969 // CHECK-ERROR:                               ^
6970 // CHECK-ERROR: error: invalid operand for instruction
6971 // CHECK-ERROR:          sqdmlal s0, h0, v17.h[0]
6972 // CHECK-ERROR:                           ^
6973
6974 //----------------------------------------------------------------------
6975 // Scalar Signed saturating doubling multiply-subtract long
6976 // (scalar, by element)
6977 //----------------------------------------------------------------------
6978     // mismatched and invalid vector types
6979     sqdmlsl s1, h1, v1.d[0]
6980     sqdmlsl d1, h1, v13.s[0]
6981     // invalid lane
6982     sqdmlsl d1, s1, v13.s[4]
6983     // invalid vector index
6984     sqdmlsl s1, h1, v20.h[7]
6985
6986 // CHECK-ERROR: error: invalid operand for instruction
6987 // CHECK-ERROR:          sqdmlsl s1, h1, v1.d[0]
6988 // CHECK-ERROR:                             ^
6989 // CHECK-ERROR: error: invalid operand for instruction
6990 // CHECK-ERROR:          sqdmlsl d1, h1, v13.s[0]
6991 // CHECK-ERROR:                      ^
6992 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6993 // CHECK-ERROR:          sqdmlsl d1, s1, v13.s[4]
6994 // CHECK-ERROR:                                ^
6995 // CHECK-ERROR: error: invalid operand for instruction
6996 // CHECK-ERROR:          sqdmlsl s1, h1, v20.h[7]
6997 // CHECK-ERROR:                           ^
6998
6999 //----------------------------------------------------------------------
7000 // Scalar Signed saturating doubling multiply long (scalar, by element)
7001 //----------------------------------------------------------------------
7002     // mismatched and invalid vector types
7003     // invalid lane
7004     // invalid vector index
7005     // mismatched and invalid vector types
7006     sqdmull s1, h1, v1.s[1]
7007     sqdmull s1, s1, v4.s[0]
7008     // invalid lane
7009     sqdmull s12, h17, v9.h[9]
7010     // invalid vector index
7011     sqdmull s1, h1, v16.h[5]
7012
7013 // CHECK-ERROR: error: invalid operand for instruction
7014 // CHECK-ERROR:          sqdmull s1, h1, v1.s[1]
7015 // CHECK-ERROR:                             ^
7016 // CHECK-ERROR: error: invalid operand for instruction
7017 // CHECK-ERROR:          sqdmull s1, s1, v4.s[0]
7018 // CHECK-ERROR:                  ^
7019 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7020 // CHECK-ERROR:          sqdmull s12, h17, v9.h[9]
7021 // CHECK-ERROR:                                 ^
7022 // CHECK-ERROR: error: invalid operand for instruction
7023 // CHECK-ERROR:          sqdmull s1, h1, v16.h[5]
7024 // CHECK-ERROR:                           ^
7025
7026 //----------------------------------------------------------------------
7027 // Scalar Signed saturating doubling multiply returning
7028 // high half (scalar, by element)
7029 //----------------------------------------------------------------------
7030     // mismatched and invalid vector types
7031     sqdmulh h0, s1, v0.h[0]
7032     sqdmulh s25, s26, v27.h[3]
7033     // invalid lane
7034     sqdmulh s25, s26, v27.s[4]
7035     // invalid vector index
7036     sqdmulh s0, h1, v30.h[0]
7037
7038 // CHECK-ERROR: error: invalid operand for instruction
7039 // CHECK-ERROR:          sqdmulh h0, s1, v0.h[0]
7040 // CHECK-ERROR:                      ^
7041 // CHECK-ERROR: error: invalid operand for instruction
7042 // CHECK-ERROR:          sqdmulh s25, s26, v27.h[3]
7043 // CHECK-ERROR:                  ^
7044 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7045 // CHECK-ERROR:          sqdmulh s25, s26, v27.s[4]
7046 // CHECK-ERROR:                                  ^
7047 // CHECK-ERROR: error: invalid operand for instruction
7048 // CHECK-ERROR:          sqdmulh s0, h1, v30.h[0]
7049 // CHECK-ERROR:                      ^
7050
7051 //----------------------------------------------------------------------
7052 // Scalar Signed saturating rounding doubling multiply
7053 // returning high half (scalar, by element)
7054 //----------------------------------------------------------------------
7055     // mismatched and invalid vector types
7056     sqrdmulh h31, h30, v14.s[2]
7057     sqrdmulh s5, h6, v7.s[2]
7058     // invalid lane
7059     sqrdmulh h31, h30, v14.h[9]
7060     // invalid vector index
7061     sqrdmulh h31, h30, v20.h[4]
7062
7063 // CHECK-ERROR: error: invalid operand for instruction
7064 // CHECK-ERROR:          sqrdmulh h31, h30, v14.s[2]
7065 // CHECK-ERROR:                                 ^
7066 // CHECK-ERROR: error: invalid operand for instruction
7067 // CHECK-ERROR:          sqrdmulh s5, h6, v7.s[2]
7068 // CHECK-ERROR:                       ^
7069 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7070 // CHECK-ERROR:          sqrdmulh h31, h30, v14.h[9]
7071 // CHECK-ERROR:                                 ^
7072 // CHECK-ERROR: error: invalid operand for instruction
7073 // CHECK-ERROR:          sqrdmulh h31, h30, v20.h[4]
7074 // CHECK-ERROR:                              ^
7075
7076 //----------------------------------------------------------------------
7077 // Scalar Duplicate element (scalar)
7078 //----------------------------------------------------------------------
7079       // mismatched and invalid vector types
7080       dup b0, v1.d[0]
7081       dup h0, v31.b[8]
7082       dup s0, v2.h[4]
7083       dup d0, v17.s[3]
7084       // invalid  lane
7085       dup d0, v17.d[4]
7086       dup s0, v1.s[7]
7087       dup h0, v31.h[16]
7088       dup b1, v3.b[16]
7089 // CHECK-ERROR: error: invalid operand for instruction
7090 // CHECK-ERROR:          dup b0, v1.d[0]
7091 // CHECK-ERROR:                     ^
7092 // CHECK-ERROR: error: invalid operand for instruction
7093 // CHECK-ERROR:          dup h0, v31.b[8]
7094 // CHECK-ERROR:                      ^
7095 // CHECK-ERROR: error: invalid operand for instruction
7096 // CHECK-ERROR:          dup s0, v2.h[4]
7097 // CHECK-ERROR:                     ^
7098 // CHECK-ERROR: error: invalid operand for instruction
7099 // CHECK-ERROR:          dup d0, v17.s[3]
7100 // CHECK-ERROR:                      ^
7101 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7102 // CHECK-ERROR:          dup d0, v17.d[4]
7103 // CHECK-ERROR:                        ^
7104 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7105 // CHECK-ERROR:          dup s0, v1.s[7]
7106 // CHECK-ERROR:                       ^
7107 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7108 // CHECK-ERROR:          dup h0, v31.h[16]
7109 // CHECK-ERROR:                        ^
7110 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7111 // CHECK-ERROR:          dup b1, v3.b[16]
7112 // CHECK-ERROR:                       ^
7113
7114 //----------------------------------------------------------------------
7115 // Table look up
7116 //----------------------------------------------------------------------
7117
7118         tbl v0.8b, {v1.8b}, v2.8b
7119         tbl v0.8b, {v1.8b, v2.8b}, v2.8b
7120         tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7121         tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7122         tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7123
7124 // CHECK-ERROR: error: invalid operand for instruction
7125 // CHECK-ERROR:        tbl v0.8b, {v1.8b}, v2.8b
7126 // CHECK-ERROR:                   ^
7127 // CHECK-ERROR: error: invalid operand for instruction
7128 // CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b}, v2.8b
7129 // CHECK-ERROR:                   ^
7130 // CHECK-ERROR: error: invalid operand for instruction
7131 // CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7132 // CHECK-ERROR:                   ^
7133 // CHECK-ERROR: error: invalid operand for instruction
7134 // CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7135 // CHECK-ERROR:                   ^
7136 // CHECK-ERROR: error: invalid number of vectors
7137 // CHECK-ERROR:        tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7138 // CHECK-ERROR:                                                    ^
7139
7140         tbx v0.8b, {v1.8b}, v2.8b
7141         tbx v0.8b, {v1.8b, v2.8b}, v2.8b
7142         tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7143         tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7144         tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7145
7146 // CHECK-ERROR: error: invalid operand for instruction
7147 // CHECK-ERROR:        tbx v0.8b, {v1.8b}, v2.8b
7148 // CHECK-ERROR:                   ^
7149 // CHECK-ERROR: error: invalid operand for instruction
7150 // CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b}, v2.8b
7151 // CHECK-ERROR:                   ^
7152 // CHECK-ERROR: error: invalid operand for instruction
7153 // CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7154 // CHECK-ERROR:                   ^
7155 // CHECK-ERROR: error: invalid operand for instruction
7156 // CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7157 // CHECK-ERROR:                   ^
7158 // CHECK-ERROR: error: invalid number of vectors
7159 // CHECK-ERROR:        tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7160 // CHECK-ERROR:                                                    ^
7161
7162 //----------------------------------------------------------------------
7163 // Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
7164 // Odd
7165 //----------------------------------------------------------------------
7166
7167     fcvtxn s0, s1
7168
7169 // CHECK-ERROR: error: invalid operand for instruction
7170 // CHECK-ERROR:        fcvtxn s0, s1
7171 // CHECK-ERROR:                   ^
7172
7173 //----------------------------------------------------------------------
7174 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
7175 // With Ties To Away
7176 //----------------------------------------------------------------------
7177
7178     fcvtas s0, d0
7179     fcvtas d0, s0
7180
7181 // CHECK-ERROR: error: invalid operand for instruction
7182 // CHECK-ERROR:        fcvtas s0, d0
7183 // CHECK-ERROR:                   ^
7184 // CHECK-ERROR: error: invalid operand for instruction
7185 // CHECK-ERROR:        fcvtas d0, s0
7186 // CHECK-ERROR:                   ^
7187
7188 //----------------------------------------------------------------------
7189 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
7190 // Nearest With Ties To Away
7191 //----------------------------------------------------------------------
7192
7193     fcvtau s0, d0
7194     fcvtau d0, s0
7195
7196 // CHECK-ERROR: error: invalid operand for instruction
7197 // CHECK-ERROR:        fcvtau s0, d0
7198 // CHECK-ERROR:                   ^
7199 // CHECK-ERROR: error: invalid operand for instruction
7200 // CHECK-ERROR:        fcvtau d0, s0
7201 // CHECK-ERROR:                   ^
7202
7203 //----------------------------------------------------------------------
7204 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
7205 // Minus Infinity
7206 //----------------------------------------------------------------------
7207
7208     fcvtms s0, d0
7209     fcvtms d0, s0
7210
7211 // CHECK-ERROR: error: invalid operand for instruction
7212 // CHECK-ERROR:        fcvtms s0, d0
7213 // CHECK-ERROR:                   ^
7214 // CHECK-ERROR: error: invalid operand for instruction
7215 // CHECK-ERROR:        fcvtms d0, s0
7216 // CHECK-ERROR:                   ^
7217
7218 //----------------------------------------------------------------------
7219 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7220 // Minus Infinity
7221 //----------------------------------------------------------------------
7222
7223     fcvtmu s0, d0
7224     fcvtmu d0, s0
7225
7226 // CHECK-ERROR: error: invalid operand for instruction
7227 // CHECK-ERROR:        fcvtmu s0, d0
7228 // CHECK-ERROR:                   ^
7229 // CHECK-ERROR: error: invalid operand for instruction
7230 // CHECK-ERROR:        fcvtmu d0, s0
7231 // CHECK-ERROR:                   ^
7232
7233 //----------------------------------------------------------------------
7234 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
7235 // With Ties To Even
7236 //----------------------------------------------------------------------
7237
7238     fcvtns s0, d0
7239     fcvtns d0, s0
7240
7241 // CHECK-ERROR: error: invalid operand for instruction
7242 // CHECK-ERROR:        fcvtns s0, d0
7243 // CHECK-ERROR:                   ^
7244 // CHECK-ERROR: error: invalid operand for instruction
7245 // CHECK-ERROR:        fcvtns d0, s0
7246 // CHECK-ERROR:                   ^
7247
7248 //----------------------------------------------------------------------
7249 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
7250 // Nearest With Ties To Even
7251 //----------------------------------------------------------------------
7252
7253     fcvtnu s0, d0
7254     fcvtnu d0, s0
7255
7256 // CHECK-ERROR: error: invalid operand for instruction
7257 // CHECK-ERROR:        fcvtnu s0, d0
7258 // CHECK-ERROR:                   ^
7259 // CHECK-ERROR: error: invalid operand for instruction
7260 // CHECK-ERROR:        fcvtnu d0, s0
7261 // CHECK-ERROR:                   ^
7262
7263 //----------------------------------------------------------------------
7264 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
7265 // Positive Infinity
7266 //----------------------------------------------------------------------
7267
7268     fcvtps s0, d0
7269     fcvtps d0, s0
7270
7271 // CHECK-ERROR: error: invalid operand for instruction
7272 // CHECK-ERROR:        fcvtps s0, d0
7273 // CHECK-ERROR:                   ^
7274 // CHECK-ERROR: error: invalid operand for instruction
7275 // CHECK-ERROR:        fcvtps d0, s0
7276 // CHECK-ERROR:                   ^
7277
7278 //----------------------------------------------------------------------
7279 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7280 // Positive Infinity
7281 //----------------------------------------------------------------------
7282
7283     fcvtpu s0, d0
7284     fcvtpu d0, s0
7285
7286 // CHECK-ERROR: error: invalid operand for instruction
7287 // CHECK-ERROR:        fcvtpu s0, d0
7288 // CHECK-ERROR:                   ^
7289 // CHECK-ERROR: error: invalid operand for instruction
7290 // CHECK-ERROR:        fcvtpu d0, s0
7291 // CHECK-ERROR:                   ^
7292
7293 //----------------------------------------------------------------------
7294 // Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
7295 //----------------------------------------------------------------------
7296
7297     fcvtzs s0, d0
7298     fcvtzs d0, s0
7299
7300 // CHECK-ERROR: error: invalid operand for instruction
7301 // CHECK-ERROR:        fcvtzs s0, d0
7302 // CHECK-ERROR:                   ^
7303 // CHECK-ERROR: error: invalid operand for instruction
7304 // CHECK-ERROR:        fcvtzs d0, s0
7305 // CHECK-ERROR:                   ^
7306
7307 //----------------------------------------------------------------------
7308 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 
7309 // Zero
7310 //----------------------------------------------------------------------
7311
7312     fcvtzu s0, d0
7313     fcvtzu d0, s0
7314
7315 // CHECK-ERROR: error: invalid operand for instruction
7316 // CHECK-ERROR:        fcvtzu s0, d0
7317 // CHECK-ERROR:                   ^
7318 // CHECK-ERROR: error: invalid operand for instruction
7319 // CHECK-ERROR:        fcvtzu d0, s0
7320 // CHECK-ERROR:                   ^
7321
7322 //----------------------------------------------------------------------
7323 // Scalar Floating-point Absolute Difference
7324 //----------------------------------------------------------------------
7325
7326
7327     fabd s29, d24, s20
7328     fabd d29, s24, d20
7329
7330 // CHECK-ERROR: error: invalid operand for instruction
7331 // CHECK-ERROR:        fabd s29, d24, s20
7332 // CHECK-ERROR:                  ^
7333 // CHECK-ERROR: error: invalid operand for instruction
7334 // CHECK-ERROR:        fabd d29, s24, d20
7335 // CHECK-ERROR:                  ^