1 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon < %s 2> %t
2 // RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s
4 //------------------------------------------------------------------------------
5 // Vector Integer Add/sub
6 //------------------------------------------------------------------------------
8 // Mismatched vector types
9 add v0.16b, v1.8b, v2.8b
10 sub v0.2d, v1.2d, v2.2s
12 // CHECK-ERROR: error: invalid operand for instruction
13 // CHECK-ERROR: add v0.16b, v1.8b, v2.8b
15 // CHECK-ERROR: error: invalid operand for instruction
16 // CHECK-ERROR: sub v0.2d, v1.2d, v2.2s
19 //------------------------------------------------------------------------------
20 // Vector Floating-Point Add/sub
21 //------------------------------------------------------------------------------
23 // Mismatched and invalid vector types
24 fadd v0.2d, v1.2s, v2.2s
25 fsub v0.4s, v1.2s, v2.4s
26 fsub v0.8b, v1.8b, v2.8b
28 // CHECK-ERROR: error: invalid operand for instruction
29 // CHECK-ERROR: fadd v0.2d, v1.2s, v2.2s
31 // CHECK-ERROR: error: invalid operand for instruction
32 // CHECK-ERROR: fsub v0.4s, v1.2s, v2.4s
34 // CHECK-ERROR: error: invalid operand for instruction
35 // CHECK-ERROR: fsub v0.8b, v1.8b, v2.8b
38 //----------------------------------------------------------------------
40 //----------------------------------------------------------------------
42 // Mismatched and invalid vector types
43 mul v0.16b, v1.8b, v2.8b
44 mul v0.2d, v1.2d, v2.2d
46 // CHECK-ERROR: error: invalid operand for instruction
47 // CHECK-ERROR: mul v0.16b, v1.8b, v2.8b
49 // CHECK-ERROR: error: invalid operand for instruction
50 // CHECK-ERROR: mul v0.2d, v1.2d, v2.2d
53 //----------------------------------------------------------------------
54 // Vector Floating-Point Mul/Div
55 //----------------------------------------------------------------------
56 // Mismatched vector types
57 fmul v0.16b, v1.8b, v2.8b
58 fdiv v0.2s, v1.2d, v2.2d
60 // CHECK-ERROR: error: invalid operand for instruction
61 // CHECK-ERROR: fmul v0.16b, v1.8b, v2.8b
63 // CHECK-ERROR: error: invalid operand for instruction
64 // CHECK-ERROR: fdiv v0.2s, v1.2d, v2.2d
67 //----------------------------------------------------------------------
68 // Vector And Orr Eor Bsl Bit Bif, Orn, Bic,
69 //----------------------------------------------------------------------
70 // Mismatched and invalid vector types
71 and v0.8b, v1.16b, v2.8b
72 orr v0.4h, v1.4h, v2.4h
73 eor v0.2s, v1.2s, v2.2s
74 bsl v0.8b, v1.16b, v2.8b
75 bsl v0.2s, v1.2s, v2.2s
76 bit v0.2d, v1.2d, v2.2d
77 bif v0.4h, v1.4h, v2.4h
78 orn v0.8b, v1.16b, v2.16b
79 bic v0.2d, v1.2d, v2.2d
81 // CHECK-ERROR: error: invalid operand for instruction
82 // CHECK-ERROR: and v0.8b, v1.16b, v2.8b
84 // CHECK-ERROR: error: invalid operand for instruction
85 // CHECK-ERROR: orr v0.4h, v1.4h, v2.4h
87 // CHECK-ERROR: error: invalid operand for instruction
88 // CHECK-ERROR: eor v0.2s, v1.2s, v2.2s
90 // CHECK-ERROR: error: invalid operand for instruction
91 // CHECK-ERROR: bsl v0.8b, v1.16b, v2.8b
93 // CHECK-ERROR: error: invalid operand for instruction
94 // CHECK-ERROR: bsl v0.2s, v1.2s, v2.2s
96 // CHECK-ERROR: error: invalid operand for instruction
97 // CHECK-ERROR: bit v0.2d, v1.2d, v2.2d
99 // CHECK-ERROR: error: invalid operand for instruction
100 // CHECK-ERROR: bif v0.4h, v1.4h, v2.4h
102 // CHECK-ERROR: error: invalid operand for instruction
103 // CHECK-ERROR: orn v0.8b, v1.16b, v2.16b
105 // CHECK-ERROR: error: invalid operand for instruction
106 // CHECK-ERROR: bic v0.2d, v1.2d, v2.2d
109 //----------------------------------------------------------------------
110 // Vector Integer Multiply-accumulate and Multiply-subtract
111 //----------------------------------------------------------------------
113 // Mismatched and invalid vector types
114 mla v0.16b, v1.8b, v2.8b
115 mls v0.2d, v1.2d, v2.2d
117 // CHECK-ERROR: error: invalid operand for instruction
118 // CHECK-ERROR: mla v0.16b, v1.8b, v2.8b
120 // CHECK-ERROR: error: invalid operand for instruction
121 // CHECK-ERROR: mls v0.2d, v1.2d, v2.2d
124 //----------------------------------------------------------------------
125 // Vector Floating-Point Multiply-accumulate and Multiply-subtract
126 //----------------------------------------------------------------------
127 // Mismatched vector types
128 fmla v0.2s, v1.2d, v2.2d
129 fmls v0.16b, v1.8b, v2.8b
131 // CHECK-ERROR: error: invalid operand for instruction
132 // CHECK-ERROR: fmla v0.2s, v1.2d, v2.2d
134 // CHECK-ERROR: error: invalid operand for instruction
135 // CHECK-ERROR: fmls v0.16b, v1.8b, v2.8b
139 //----------------------------------------------------------------------
140 // Vector Move Immediate Shifted
141 // Vector Move Inverted Immediate Shifted
142 // Vector Bitwise Bit Clear (AND NOT) - immediate
143 // Vector Bitwise OR - immedidate
144 //----------------------------------------------------------------------
145 // out of range immediate (0 to 0xff)
148 // out of range shift (0, 8, 16, 24 and 0, 8)
149 bic v15.4h, #1, lsl #7
150 orr v31.2s, #1, lsl #25
151 movi v5.4h, #10, lsl #16
152 // invalid vector type (2s, 4s, 4h, 8h)
153 movi v5.8b, #1, lsl #8
155 // CHECK-ERROR: error: invalid operand for instruction
156 // CHECK-ERROR: movi v0.2s, #-1
158 // CHECK-ERROR: error: invalid operand for instruction
159 // CHECK-ERROR: mvni v1.4s, #256
161 // CHECK-ERROR: error: invalid operand for instruction
162 // CHECK-ERROR: bic v15.4h, #1, lsl #7
164 // CHECK-ERROR: error: invalid operand for instruction
165 // CHECK-ERROR: orr v31.2s, #1, lsl #25
167 // CHECK-ERROR: error: invalid operand for instruction
168 // CHECK-ERROR: movi v5.4h, #10, lsl #16
170 // CHECK-ERROR: error: invalid operand for instruction
171 // CHECK-ERROR: movi v5.8b, #1, lsl #8
173 //----------------------------------------------------------------------
174 // Vector Move Immediate Masked
175 // Vector Move Inverted Immediate Masked
176 //----------------------------------------------------------------------
177 // out of range immediate (0 to 0xff)
178 movi v0.2s, #-1, msl #8
179 mvni v7.4s, #256, msl #16
180 // out of range shift (8, 16)
181 movi v3.2s, #1, msl #0
182 mvni v17.4s, #255, msl #32
183 // invalid vector type (2s, 4s)
184 movi v5.4h, #31, msl #8
186 // CHECK-ERROR: error: invalid operand for instruction
187 // CHECK-ERROR: movi v0.2s, #-1, msl #8
189 // CHECK-ERROR: error: invalid operand for instruction
190 // CHECK-ERROR: mvni v7.4s, #256, msl #16
192 // CHECK-ERROR: error: invalid operand for instruction
193 // CHECK-ERROR: movi v3.2s, #1, msl #0
195 // CHECK-ERROR: error: invalid operand for instruction
196 // CHECK-ERROR: mvni v17.4s, #255, msl #32
198 // CHECK-ERROR: error: invalid operand for instruction
199 // CHECK-ERROR: movi v5.4h, #31, msl #8
202 //----------------------------------------------------------------------
203 // Vector Immediate - per byte
204 //----------------------------------------------------------------------
205 // out of range immediate (0 to 0xff)
209 // CHECK-ERROR: error: invalid operand for instruction
210 // CHECK-ERROR: movi v0.8b, #-1
212 // CHECK-ERROR: error: invalid operand for instruction
213 // CHECK-ERROR: movi v1.16b, #256
217 //----------------------------------------------------------------------
218 // Vector Move Immediate - bytemask, per doubleword
219 //---------------------------------------------------------------------
220 // invalid bytemask (0x00 or 0xff)
221 movi v0.2d, #0x10ff00ff00ff00ff
223 // CHECK:ERROR: error: invalid operand for instruction
224 // CHECK:ERROR: movi v0.2d, #0x10ff00ff00ff00ff
227 //----------------------------------------------------------------------
228 // Vector Move Immediate - bytemask, one doubleword
229 //----------------------------------------------------------------------
230 // invalid bytemask (0x00 or 0xff)
231 movi v0.2d, #0xffff00ff001f00ff
233 // CHECK:ERROR: error: invalid operand for instruction
234 // CHECK:ERROR: movi v0.2d, #0xffff00ff001f00ff
236 //----------------------------------------------------------------------
237 // Vector Floating Point Move Immediate
238 //----------------------------------------------------------------------
239 // invalid vector type (2s, 4s, 2d)
242 // CHECK:ERROR: error: invalid operand for instruction
243 // CHECK:ERROR: fmov v0.4h, #1.0
246 //----------------------------------------------------------------------
247 // Vector Move - register
248 //----------------------------------------------------------------------
249 // invalid vector type (8b, 16b)
251 // CHECK:ERROR: error: invalid operand for instruction
252 // CHECK:ERROR: mov v0.2s, v31.8b
255 //----------------------------------------------------------------------
256 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
257 //----------------------------------------------------------------------
259 // Mismatched and invalid vector types (2d)
260 saba v0.16b, v1.8b, v2.8b
261 uaba v0.2d, v1.2d, v2.2d
263 // CHECK-ERROR: error: invalid operand for instruction
264 // CHECK-ERROR: saba v0.16b, v1.8b, v2.8b
266 // CHECK-ERROR: error: invalid operand for instruction
267 // CHECK-ERROR: uaba v0.2d, v1.2d, v2.2d
270 //----------------------------------------------------------------------
271 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
272 // Vector Absolute Difference (Signed, Unsigned)
274 // Mismatched and invalid vector types (2d)
275 uaba v0.16b, v1.8b, v2.8b
276 saba v0.2d, v1.2d, v2.2d
277 uabd v0.4s, v1.2s, v2.2s
278 sabd v0.4h, v1.8h, v8.8h
280 // CHECK-ERROR: error: invalid operand for instruction
281 // CHECK-ERROR: uaba v0.16b, v1.8b, v2.8b
283 // CHECK-ERROR: error: invalid operand for instruction
284 // CHECK-ERROR: saba v0.2d, v1.2d, v2.2d
286 // CHECK-ERROR: error: invalid operand for instruction
287 // CHECK-ERROR: uabd v0.4s, v1.2s, v2.2s
289 // CHECK-ERROR: error: invalid operand for instruction
290 // CHECK-ERROR: sabd v0.4h, v1.8h, v8.8h
293 //----------------------------------------------------------------------
294 // Vector Absolute Difference (Floating Point)
295 //----------------------------------------------------------------------
296 // Mismatched and invalid vector types
297 fabd v0.2s, v1.4s, v2.2d
298 fabd v0.4h, v1.4h, v2.4h
300 // CHECK-ERROR: error: invalid operand for instruction
301 // CHECK-ERROR: fabd v0.2s, v1.4s, v2.2d
303 // CHECK-ERROR: error: invalid operand for instruction
304 // CHECK-ERROR: fabd v0.4h, v1.4h, v2.4h
306 //----------------------------------------------------------------------
307 // Vector Multiply (Polynomial)
308 //----------------------------------------------------------------------
310 // Mismatched and invalid vector types
311 pmul v0.8b, v1.8b, v2.16b
312 pmul v0.2s, v1.2s, v2.2s
314 // CHECK-ERROR: error: invalid operand for instruction
315 // CHECK-ERROR: pmul v0.8b, v1.8b, v2.16b
317 // CHECK-ERROR: error: invalid operand for instruction
318 // CHECK-ERROR: pmul v0.2s, v1.2s, v2.2s
321 //----------------------------------------------------------------------
322 // Scalar Integer Add and Sub
323 //----------------------------------------------------------------------
325 // Mismatched registers
329 // CHECK-ERROR: error: invalid operand for instruction
330 // CHECK-ERROR: add d0, s1, d2
332 // CHECK-ERROR: error: invalid operand for instruction
333 // CHECK-ERROR: sub s1, d1, d2
336 //----------------------------------------------------------------------
337 // Vector Reciprocal Step (Floating Point)
338 //----------------------------------------------------------------------
340 // Mismatched and invalid vector types
341 frecps v0.4s, v1.2d, v2.4s
342 frecps v0.8h, v1.8h, v2.8h
344 // CHECK-ERROR: error: invalid operand for instruction
345 // CHECK-ERROR: frecps v0.4s, v1.2d, v2.4s
347 // CHECK-ERROR: error: invalid operand for instruction
348 // CHECK-ERROR: frecps v0.8h, v1.8h, v2.8h
351 //----------------------------------------------------------------------
352 // Vector Reciprocal Square Root Step (Floating Point)
353 //----------------------------------------------------------------------
355 // Mismatched and invalid vector types
356 frsqrts v0.2d, v1.2d, v2.2s
357 frsqrts v0.4h, v1.4h, v2.4h
359 // CHECK-ERROR: error: invalid operand for instruction
360 // CHECK-ERROR: frsqrts v0.2d, v1.2d, v2.2s
362 // CHECK-ERROR: error: invalid operand for instruction
363 // CHECK-ERROR: frsqrts v0.4h, v1.4h, v2.4h
367 //----------------------------------------------------------------------
368 // Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
369 //----------------------------------------------------------------------
371 // Mismatched and invalid vector types
372 facge v0.2d, v1.2s, v2.2d
373 facge v0.4h, v1.4h, v2.4h
374 facle v0.8h, v1.4h, v2.4h
376 // CHECK-ERROR: error: invalid operand for instruction
377 // CHECK-ERROR: facge v0.2d, v1.2s, v2.2d
379 // CHECK-ERROR: error: invalid operand for instruction
380 // CHECK-ERROR: facge v0.4h, v1.4h, v2.4h
382 // CHECK-ERROR: error: invalid operand for instruction
383 // CHECK-ERROR: facle v0.8h, v1.4h, v2.4h
385 //----------------------------------------------------------------------
386 // Vector Absolute Compare Mask Less Than (Floating Point)
387 //----------------------------------------------------------------------
389 // Mismatched and invalid vector types
390 facgt v0.2d, v1.2d, v2.4s
391 facgt v0.8h, v1.8h, v2.8h
392 faclt v0.8b, v1.8b, v2.8b
394 // CHECK-ERROR: error: invalid operand for instruction
395 // CHECK-ERROR: facgt v0.2d, v1.2d, v2.4s
397 // CHECK-ERROR: error: invalid operand for instruction
398 // CHECK-ERROR: facgt v0.8h, v1.8h, v2.8h
400 // CHECK-ERROR: error: invalid operand for instruction
401 // CHECK-ERROR: faclt v0.8b, v1.8b, v2.8b
405 //----------------------------------------------------------------------
406 // Vector Compare Mask Equal (Integer)
407 //----------------------------------------------------------------------
409 // Mismatched vector types
410 cmeq c0.2d, v1.2d, v2.2s
412 // CHECK-ERROR: error: invalid operand for instruction
413 // CHECK-ERROR: cmeq c0.2d, v1.2d, v2.2s
416 //----------------------------------------------------------------------
417 // Vector Compare Mask Higher or Same (Unsigned Integer)
418 // Vector Compare Mask Less or Same (Unsigned Integer)
419 // CMLS is alias for CMHS with operands reversed.
420 //----------------------------------------------------------------------
422 // Mismatched vector types
423 cmhs c0.4h, v1.8b, v2.8b
424 cmls c0.16b, v1.16b, v2.2d
426 // CHECK-ERROR: error: invalid operand for instruction
427 // CHECK-ERROR: cmhs c0.4h, v1.8b, v2.8b
429 // CHECK-ERROR: error: invalid operand for instruction
430 // CHECK-ERROR: cmls c0.16b, v1.16b, v2.2d
433 //----------------------------------------------------------------------
434 // Vector Compare Mask Greater Than or Equal (Integer)
435 // Vector Compare Mask Less Than or Equal (Integer)
436 // CMLE is alias for CMGE with operands reversed.
437 //----------------------------------------------------------------------
439 // Mismatched vector types
440 cmge c0.8h, v1.8b, v2.8b
441 cmle c0.4h, v1.2s, v2.2s
443 // CHECK-ERROR: error: invalid operand for instruction
444 // CHECK-ERROR: cmge c0.8h, v1.8b, v2.8b
446 // CHECK-ERROR: error: invalid operand for instruction
447 // CHECK-ERROR: cmle c0.4h, v1.2s, v2.2s
450 //----------------------------------------------------------------------
451 // Vector Compare Mask Higher (Unsigned Integer)
452 // Vector Compare Mask Lower (Unsigned Integer)
453 // CMLO is alias for CMHI with operands reversed.
454 //----------------------------------------------------------------------
456 // Mismatched vector types
457 cmhi c0.4s, v1.4s, v2.16b
458 cmlo c0.8b, v1.8b, v2.2s
460 // CHECK-ERROR: error: invalid operand for instruction
461 // CHECK-ERROR: cmhi c0.4s, v1.4s, v2.16b
463 // CHECK-ERROR: error: invalid operand for instruction
464 // CHECK-ERROR: cmlo c0.8b, v1.8b, v2.2s
467 //----------------------------------------------------------------------
468 // Vector Compare Mask Greater Than (Integer)
469 // Vector Compare Mask Less Than (Integer)
470 // CMLT is alias for CMGT with operands reversed.
471 //----------------------------------------------------------------------
473 // Mismatched vector types
474 cmgt c0.8b, v1.4s, v2.16b
475 cmlt c0.8h, v1.16b, v2.4s
477 // CHECK-ERROR: error: invalid operand for instruction
478 // CHECK-ERROR: cmgt c0.8b, v1.4s, v2.16b
480 // CHECK-ERROR: error: invalid operand for instruction
481 // CHECK-ERROR: cmlt c0.8h, v1.16b, v2.4s
484 //----------------------------------------------------------------------
485 // Vector Compare Mask Bitwise Test (Integer)
486 //----------------------------------------------------------------------
488 // Mismatched vector types
489 cmtst c0.16b, v1.16b, v2.4s
491 // CHECK-ERROR: error: invalid operand for instruction
492 // CHECK-ERROR: cmtst c0.16b, v1.16b, v2.4s
495 //----------------------------------------------------------------------
496 // Vector Compare Mask Equal (Floating Point)
497 //----------------------------------------------------------------------
499 // Mismatched and invalid vector types
500 fcmeq v0.2d, v1.2s, v2.2d
501 fcmeq v0.16b, v1.16b, v2.16b
502 fcmeq v0.8b, v1.4h, v2.4h
504 // CHECK-ERROR: error: invalid operand for instruction
505 // CHECK-ERROR: fcmeq v0.2d, v1.2s, v2.2d
507 // CHECK-ERROR: error: invalid operand for instruction
508 // CHECK-ERROR: fcmeq v0.16b, v1.16b, v2.16b
510 // CHECK-ERROR: error: invalid operand for instruction
511 // CHECK-ERROR: fcmeq v0.8b, v1.4h, v2.4h
514 //----------------------------------------------------------------------
515 // Vector Compare Mask Greater Than Or Equal (Floating Point)
516 // Vector Compare Mask Less Than Or Equal (Floating Point)
517 // FCMLE is alias for FCMGE with operands reversed.
518 //----------------------------------------------------------------------
520 // Mismatched and invalid vector types
521 fcmge v31.4s, v29.2s, v28.4s
522 fcmge v3.8b, v8.2s, v12.2s
523 fcmle v17.8h, v15.2d, v13.2d
525 // CHECK-ERROR: error: invalid operand for instruction
526 // CHECK-ERROR: fcmge v31.4s, v29.2s, v28.4s
528 // CHECK-ERROR: error: invalid operand for instruction
529 // CHECK-ERROR: fcmge v3.8b, v8.2s, v12.2s
531 // CHECK-ERROR: error: invalid operand for instruction
532 // CHECK-ERROR: fcmle v17.8h, v15.2d, v13.2d
535 //----------------------------------------------------------------------
536 // Vector Compare Mask Greater Than (Floating Point)
537 // Vector Compare Mask Less Than (Floating Point)
538 // FCMLT is alias for FCMGT with operands reversed.
539 //----------------------------------------------------------------------
541 // Mismatched and invalid vector types
542 fcmgt v0.2d, v31.2s, v16.2s
543 fcmgt v4.4s, v7.4s, v15.4h
544 fcmlt v29.2d, v5.2d, v2.16b
546 // CHECK-ERROR: error: invalid operand for instruction
547 // CHECK-ERROR: fcmgt v0.2d, v31.2s, v16.2s
549 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
550 // CHECK-ERROR: fcmgt v4.4s, v7.4s, v15.4h
552 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
553 // CHECK-ERROR: fcmlt v29.2d, v5.2d, v2.16b
556 //----------------------------------------------------------------------
557 // Vector Compare Mask Equal to Zero (Integer)
558 //----------------------------------------------------------------------
559 // Mismatched vector types and invalid imm
560 // Mismatched vector types
561 cmeq c0.2d, v1.2s, #0
562 cmeq c0.2d, v1.2d, #1
564 // CHECK-ERROR: error: invalid operand for instruction
565 // CHECK-ERROR: cmeq c0.2d, v1.2s, #0
567 // CHECK-ERROR: error: invalid operand for instruction
568 // CHECK-ERROR: cmeq c0.2d, v1.2d, #1
571 //----------------------------------------------------------------------
572 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
573 //----------------------------------------------------------------------
574 // Mismatched vector types and invalid imm
575 cmge c0.8h, v1.8b, #0
576 cmge c0.4s, v1.4s, #-1
578 // CHECK-ERROR: error: invalid operand for instruction
579 // CHECK-ERROR: cmge c0.8h, v1.8b, #0
581 // CHECK-ERROR: error: invalid operand for instruction
582 // CHECK-ERROR: cmge c0.4s, v1.4s, #-1
585 //----------------------------------------------------------------------
586 // Vector Compare Mask Greater Than Zero (Signed Integer)
587 //----------------------------------------------------------------------
588 // Mismatched vector types and invalid imm
589 cmgt c0.8b, v1.4s, #0
590 cmgt c0.8b, v1.8b, #-255
592 // CHECK-ERROR: error: invalid operand for instruction
593 // CHECK-ERROR: cmgt c0.8b, v1.4s, #0
595 // CHECK-ERROR: error: invalid operand for instruction
596 // CHECK-ERROR: cmgt c0.8b, v1.8b, #-255
599 //----------------------------------------------------------------------
600 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
601 //----------------------------------------------------------------------
602 // Mismatched vector types and invalid imm
603 cmle c0.4h, v1.2s, #0
604 cmle c0.16b, v1.16b, #16
606 // CHECK-ERROR: error: invalid operand for instruction
607 // CHECK-ERROR: cmle c0.4h, v1.2s, #0
609 // CHECK-ERROR: error: invalid operand for instruction
610 // CHECK-ERROR: cmle c0.16b, v1.16b, #16
612 //----------------------------------------------------------------------
613 // Vector Compare Mask Less Than Zero (Signed Integer)
614 //----------------------------------------------------------------------
615 // Mismatched vector types and invalid imm
616 cmlt c0.8h, v1.16b, #0
617 cmlt c0.8h, v1.8h, #-15
619 // CHECK-ERROR: error: invalid operand for instruction
620 // CHECK-ERROR: cmlt c0.8h, v1.16b, #0
622 // CHECK-ERROR: error: invalid operand for instruction
623 // CHECK-ERROR: cmlt c0.8h, v1.8h, #-15
626 //----------------------------------------------------------------------
627 // Vector Compare Mask Equal to Zero (Floating Point)
628 //----------------------------------------------------------------------
630 // Mismatched and invalid vector types, invalid imm
631 fcmeq v0.2d, v1.2s, #0.0
632 fcmeq v0.16b, v1.16b, #0.0
633 fcmeq v0.8b, v1.4h, #1.0
634 fcmeq v0.8b, v1.4h, #1
636 // CHECK-ERROR: error: invalid operand for instruction
637 // CHECK-ERROR: fcmeq v0.2d, v1.2s, #0.0
639 // CHECK-ERROR: error: invalid operand for instruction
640 // CHECK-ERROR: fcmeq v0.16b, v1.16b, #0.0
642 // CHECK-ERROR: error: invalid operand for instruction
643 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1.0
645 // CHECK-ERROR: error: Expected floating-point immediate
646 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1
648 //----------------------------------------------------------------------
649 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
650 //----------------------------------------------------------------------
652 // Mismatched and invalid vector types, invalid imm
653 fcmge v31.4s, v29.2s, #0.0
654 fcmge v3.8b, v8.2s, #0.0
655 fcmle v17.8h, v15.2d, #-1.0
656 fcmle v17.8h, v15.2d, #0
658 // CHECK-ERROR: error: invalid operand for instruction
659 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0
661 // CHECK-ERROR: error: invalid operand for instruction
662 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0
664 // CHECK-ERROR: error: invalid operand for instruction
665 // CHECK-ERROR: fcmle v17.8h, v15.2d, #-1.0
667 // CHECK-ERROR: error: Expected floating-point immediate
668 // CHECK-ERROR: fcmle v17.8h, v15.2d, #0
670 //----------------------------------------------------------------------
671 // Vector Compare Mask Greater Than Zero (Floating Point)
672 //----------------------------------------------------------------------
673 // Mismatched and invalid vector types, invalid imm
674 fcmgt v0.2d, v31.2s, #0.0
675 fcmgt v4.4s, v7.4h, #0.0
676 fcmlt v29.2d, v5.2d, #255.0
677 fcmlt v29.2d, v5.2d, #255
679 // CHECK-ERROR: error: invalid operand for instruction
680 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0
682 // CHECK-ERROR: error: invalid operand for instruction
683 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0
685 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
686 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255.0
688 // CHECK-ERROR: error: Expected floating-point immediate
689 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255
692 //----------------------------------------------------------------------
693 // Vector Compare Mask Less Than or Equal To Zero (Floating Point)
694 //----------------------------------------------------------------------
695 // Mismatched and invalid vector types, invalid imm
696 fcmge v31.4s, v29.2s, #0.0
697 fcmge v3.8b, v8.2s, #0.0
698 fcmle v17.2d, v15.2d, #15.0
699 fcmle v17.2d, v15.2d, #15
701 // CHECK-ERROR: error: invalid operand for instruction
702 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0
704 // CHECK-ERROR: error: invalid operand for instruction
705 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0
707 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
708 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15.0
710 // CHECK-ERROR: error: Expected floating-point immediate
711 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15
714 //----------------------------------------------------------------------
715 // Vector Compare Mask Less Than Zero (Floating Point)
716 //----------------------------------------------------------------------
717 // Mismatched and invalid vector types, invalid imm
718 fcmgt v0.2d, v31.2s, #0.0
719 fcmgt v4.4s, v7.4h, #0.0
720 fcmlt v29.2d, v5.2d, #16.0
721 fcmlt v29.2d, v5.2d, #2
723 // CHECK-ERROR: error: invalid operand for instruction
724 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0
726 // CHECK-ERROR: error: invalid operand for instruction
727 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0
729 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
730 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #16.0
732 // CHECK-ERROR: error: Expected floating-point immediate
733 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #2
736 /-----------------------------------------------------------------------
737 // Vector Integer Halving Add (Signed)
738 // Vector Integer Halving Add (Unsigned)
739 // Vector Integer Halving Sub (Signed)
740 // Vector Integer Halving Sub (Unsigned)
741 //----------------------------------------------------------------------
742 // Mismatched and invalid vector types (2d)
743 shadd v0.2d, v1.2d, v2.2d
744 uhadd v4.2s, v5.2s, v5.4h
745 shsub v11.4h, v12.8h, v13.4h
746 uhsub v31.16b, v29.8b, v28.8b
748 // CHECK-ERROR: error: invalid operand for instruction
749 // CHECK-ERROR: shadd v0.2d, v1.2d, v2.2d
751 // CHECK-ERROR: error: invalid operand for instruction
752 // CHECK-ERROR: uhadd v4.2s, v5.2s, v5.4h
754 // CHECK-ERROR: error: invalid operand for instruction
755 // CHECK-ERROR: shsub v11.4h, v12.8h, v13.4h
757 // CHECK-ERROR: error: invalid operand for instruction
758 // CHECK-ERROR: uhsub v31.16b, v29.8b, v28.8b
761 //----------------------------------------------------------------------
762 // Vector Integer Rouding Halving Add (Signed)
763 // Vector Integer Rouding Halving Add (Unsigned)
764 //----------------------------------------------------------------------
766 // Mismatched and invalid vector types (2d)
767 srhadd v0.2s, v1.2s, v2.2d
768 urhadd v0.16b, v1.16b, v2.8h
770 // CHECK-ERROR: error: invalid operand for instruction
771 // CHECK-ERROR: srhadd v0.2s, v1.2s, v2.2d
773 // CHECK-ERROR: error: invalid operand for instruction
774 // CHECK-ERROR: urhadd v0.16b, v1.16b, v2.8h
777 //----------------------------------------------------------------------
778 // Vector Integer Saturating Add (Signed)
779 // Vector Integer Saturating Add (Unsigned)
780 // Vector Integer Saturating Sub (Signed)
781 // Vector Integer Saturating Sub (Unsigned)
782 //----------------------------------------------------------------------
784 // Mismatched vector types
785 sqadd v0.2s, v1.2s, v2.2d
786 uqadd v31.8h, v1.4h, v2.4h
787 sqsub v10.8h, v1.16b, v2.16b
788 uqsub v31.8b, v1.8b, v2.4s
790 // CHECK-ERROR: error: invalid operand for instruction
791 // CHECK-ERROR: sqadd v0.2s, v1.2s, v2.2d
793 // CHECK-ERROR: error: invalid operand for instruction
794 // CHECK-ERROR: uqadd v31.8h, v1.4h, v2.4h
796 // CHECK-ERROR: error: invalid operand for instruction
797 // CHECK-ERROR: sqsub v10.8h, v1.16b, v2.16b
799 // CHECK-ERROR: error: invalid operand for instruction
800 // CHECK-ERROR: uqsub v31.8b, v1.8b, v2.4s
803 //----------------------------------------------------------------------
804 // Scalar Integer Saturating Add (Signed)
805 // Scalar Integer Saturating Add (Unsigned)
806 // Scalar Integer Saturating Sub (Signed)
807 // Scalar Integer Saturating Sub (Unsigned)
808 //----------------------------------------------------------------------
810 // Mismatched registers
816 // CHECK-ERROR: error: invalid operand for instruction
817 // CHECK-ERROR: sqadd d0, s31, d2
819 // CHECK-ERROR: error: invalid operand for instruction
820 // CHECK-ERROR: uqadd s0, s1, d2
822 // CHECK-ERROR: error: invalid operand for instruction
823 // CHECK-ERROR: sqsub b0, b2, s18
825 // CHECK-ERROR: error: invalid operand for instruction
826 // CHECK-ERROR: uqsub h1, h2, d2
830 //----------------------------------------------------------------------
831 // Vector Shift Left (Signed and Unsigned Integer)
832 //----------------------------------------------------------------------
833 // Mismatched vector types
834 sshl v0.4s, v15.2s, v16.2s
835 ushl v1.16b, v25.16b, v6.8h
837 // CHECK-ERROR: error: invalid operand for instruction
838 // CHECK-ERROR: sshl v0.4s, v15.2s, v16.2s
840 // CHECK-ERROR: error: invalid operand for instruction
841 // CHECK-ERROR: ushl v1.16b, v25.16b, v6.8h
844 //----------------------------------------------------------------------
845 // Vector Saturating Shift Left (Signed and Unsigned Integer)
846 //----------------------------------------------------------------------
847 // Mismatched vector types
848 sqshl v0.2s, v15.4s, v16.2d
849 uqshl v1.8b, v25.4h, v6.8h
851 // CHECK-ERROR: error: invalid operand for instruction
852 // CHECK-ERROR: sqshl v0.2s, v15.4s, v16.2d
854 // CHECK-ERROR: error: invalid operand for instruction
855 // CHECK-ERROR: uqshl v1.8b, v25.4h, v6.8h
858 //----------------------------------------------------------------------
859 // Vector Rouding Shift Left (Signed and Unsigned Integer)
860 //----------------------------------------------------------------------
861 // Mismatched vector types
862 srshl v0.8h, v15.8h, v16.16b
863 urshl v1.2d, v25.2d, v6.4s
865 // CHECK-ERROR: error: invalid operand for instruction
866 // CHECK-ERROR: srshl v0.8h, v15.8h, v16.16b
868 // CHECK-ERROR: error: invalid operand for instruction
869 // CHECK-ERROR: urshl v1.2d, v25.2d, v6.4s
872 //----------------------------------------------------------------------
873 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
874 //----------------------------------------------------------------------
875 // Mismatched vector types
876 sqrshl v0.2s, v15.8h, v16.16b
877 uqrshl v1.4h, v25.4h, v6.2d
879 // CHECK-ERROR: error: invalid operand for instruction
880 // CHECK-ERROR: sqrshl v0.2s, v15.8h, v16.16b
882 // CHECK-ERROR: error: invalid operand for instruction
883 // CHECK-ERROR: uqrshl v1.4h, v25.4h, v6.2d
886 //----------------------------------------------------------------------
887 // Scalar Integer Shift Left (Signed, Unsigned)
888 //----------------------------------------------------------------------
889 // Mismatched and invalid vector types
893 // CHECK-ERROR: error: invalid operand for instruction
894 // CHECK-ERROR: sshl d0, d1, s2
896 // CHECK-ERROR: error: invalid operand for instruction
897 // CHECK-ERROR: ushl b2, b0, b1
900 //----------------------------------------------------------------------
901 // Scalar Integer Saturating Shift Left (Signed, Unsigned)
902 //----------------------------------------------------------------------
904 // Mismatched vector types
910 // CHECK-ERROR: error: invalid operand for instruction
911 // CHECK-ERROR: sqshl b0, b1, s0
913 // CHECK-ERROR: error: invalid operand for instruction
914 // CHECK-ERROR: uqshl h0, h1, b0
916 // CHECK-ERROR: error: invalid operand for instruction
917 // CHECK-ERROR: sqshl s0, s1, h0
919 // CHECK-ERROR: error: invalid operand for instruction
920 // CHECK-ERROR: uqshl d0, d1, b0
923 //----------------------------------------------------------------------
924 // Scalar Integer Rouding Shift Left (Signed, Unsigned)
925 //----------------------------------------------------------------------
926 // Mismatched and invalid vector types
930 // CHECK-ERROR: error: invalid operand for instruction
931 // CHECK-ERROR: srshl h0, h1, h2
933 // CHECK-ERROR: error: invalid operand for instruction
934 // CHECK-ERROR: urshl s0, s1, s2
938 //----------------------------------------------------------------------
939 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
940 //----------------------------------------------------------------------
942 // Mismatched vector types
948 // CHECK-ERROR: error: invalid operand for instruction
949 // CHECK-ERROR: sqrshl b0, b1, s0
951 // CHECK-ERROR: error: invalid operand for instruction
952 // CHECK-ERROR: uqrshl h0, h1, b0
954 // CHECK-ERROR: error: invalid operand for instruction
955 // CHECK-ERROR: sqrshl s0, s1, h0
957 // CHECK-ERROR: error: invalid operand for instruction
958 // CHECK-ERROR: uqrshl d0, d1, b0
962 //----------------------------------------------------------------------
963 // Vector Maximum (Signed, Unsigned)
964 //----------------------------------------------------------------------
965 // Mismatched and invalid vector types
966 smax v0.2d, v1.2d, v2.2d
967 umax v0.4h, v1.4h, v2.2s
969 // CHECK-ERROR: error: invalid operand for instruction
970 // CHECK-ERROR: smax v0.2d, v1.2d, v2.2d
972 // CHECK-ERROR: error: invalid operand for instruction
973 // CHECK-ERROR: umax v0.4h, v1.4h, v2.2s
976 //----------------------------------------------------------------------
977 // Vector Minimum (Signed, Unsigned)
978 //----------------------------------------------------------------------
979 // Mismatched and invalid vector types
980 smin v0.2d, v1.2d, v2.2d
981 umin v0.2s, v1.2s, v2.8b
983 // CHECK-ERROR: error: invalid operand for instruction
984 // CHECK-ERROR: smin v0.2d, v1.2d, v2.2d
986 // CHECK-ERROR: error: invalid operand for instruction
987 // CHECK-ERROR: umin v0.2s, v1.2s, v2.8b
991 //----------------------------------------------------------------------
992 // Vector Maximum (Floating Point)
993 //----------------------------------------------------------------------
994 // Mismatched and invalid vector types
995 fmax v0.2s, v1.2s, v2.4s
996 fmax v0.8b, v1.8b, v2.8b
998 // CHECK-ERROR: error: invalid operand for instruction
999 // CHECK-ERROR: fmax v0.2s, v1.2s, v2.4s
1001 // CHECK-ERROR: error: invalid operand for instruction
1002 // CHECK-ERROR: fmax v0.8b, v1.8b, v2.8b
1004 //----------------------------------------------------------------------
1005 // Vector Minimum (Floating Point)
1006 //----------------------------------------------------------------------
1007 // Mismatched and invalid vector types
1008 fmin v0.4s, v1.4s, v2.2d
1009 fmin v0.8h, v1.8h, v2.8h
1011 // CHECK-ERROR: error: invalid operand for instruction
1012 // CHECK-ERROR: fmin v0.4s, v1.4s, v2.2d
1014 // CHECK-ERROR: error: invalid operand for instruction
1015 // CHECK-ERROR: fmin v0.8h, v1.8h, v2.8h
1018 //----------------------------------------------------------------------
1019 // Vector maxNum (Floating Point)
1020 //----------------------------------------------------------------------
1021 // Mismatched and invalid vector types
1022 fmaxnm v0.2s, v1.2s, v2.2d
1023 fmaxnm v0.4h, v1.8h, v2.4h
1025 // CHECK-ERROR: error: invalid operand for instruction
1026 // CHECK-ERROR: fmaxnm v0.2s, v1.2s, v2.2d
1028 // CHECK-ERROR: error: invalid operand for instruction
1029 // CHECK-ERROR: fmaxnm v0.4h, v1.8h, v2.4h
1032 //----------------------------------------------------------------------
1033 // Vector minNum (Floating Point)
1034 //----------------------------------------------------------------------
1035 // Mismatched and invalid vector types
1036 fminnm v0.4s, v1.2s, v2.4s
1037 fminnm v0.16b, v0.16b, v0.16b
1039 // CHECK-ERROR: error: invalid operand for instruction
1040 // CHECK-ERROR: fminnm v0.4s, v1.2s, v2.4s
1042 // CHECK-ERROR: error: invalid operand for instruction
1043 // CHECK-ERROR: fminnm v0.16b, v0.16b, v0.16b
1047 //----------------------------------------------------------------------
1048 // Vector Maximum Pairwise (Signed, Unsigned)
1049 //----------------------------------------------------------------------
1050 // Mismatched and invalid vector types
1051 smaxp v0.2d, v1.2d, v2.2d
1052 umaxp v0.4h, v1.4h, v2.2s
1054 // CHECK-ERROR: error: invalid operand for instruction
1055 // CHECK-ERROR: smaxp v0.2d, v1.2d, v2.2d
1057 // CHECK-ERROR: error: invalid operand for instruction
1058 // CHECK-ERROR: umaxp v0.4h, v1.4h, v2.2s
1061 //----------------------------------------------------------------------
1062 // Vector Minimum Pairwise (Signed, Unsigned)
1063 //----------------------------------------------------------------------
1064 // Mismatched and invalid vector types
1065 sminp v0.2d, v1.2d, v2.2d
1066 uminp v0.2s, v1.2s, v2.8b
1068 // CHECK-ERROR: error: invalid operand for instruction
1069 // CHECK-ERROR: sminp v0.2d, v1.2d, v2.2d
1071 // CHECK-ERROR: error: invalid operand for instruction
1072 // CHECK-ERROR: uminp v0.2s, v1.2s, v2.8b
1076 //----------------------------------------------------------------------
1077 // Vector Maximum Pairwise (Floating Point)
1078 //----------------------------------------------------------------------
1079 // Mismatched and invalid vector types
1080 fmaxp v0.2s, v1.2s, v2.4s
1081 fmaxp v0.8b, v1.8b, v2.8b
1083 // CHECK-ERROR: error: invalid operand for instruction
1084 // CHECK-ERROR: fmaxp v0.2s, v1.2s, v2.4s
1086 // CHECK-ERROR: error: invalid operand for instruction
1087 // CHECK-ERROR: fmaxp v0.8b, v1.8b, v2.8b
1089 //----------------------------------------------------------------------
1090 // Vector Minimum Pairwise (Floating Point)
1091 //----------------------------------------------------------------------
1092 // Mismatched and invalid vector types
1093 fminp v0.4s, v1.4s, v2.2d
1094 fminp v0.8h, v1.8h, v2.8h
1096 // CHECK-ERROR: error: invalid operand for instruction
1097 // CHECK-ERROR: fminp v0.4s, v1.4s, v2.2d
1099 // CHECK-ERROR: error: invalid operand for instruction
1100 // CHECK-ERROR: fminp v0.8h, v1.8h, v2.8h
1103 //----------------------------------------------------------------------
1104 // Vector maxNum Pairwise (Floating Point)
1105 //----------------------------------------------------------------------
1106 // Mismatched and invalid vector types
1107 fmaxnmp v0.2s, v1.2s, v2.2d
1108 fmaxnmp v0.4h, v1.8h, v2.4h
1110 // CHECK-ERROR: error: invalid operand for instruction
1111 // CHECK-ERROR: fmaxnmp v0.2s, v1.2s, v2.2d
1113 // CHECK-ERROR: error: invalid operand for instruction
1114 // CHECK-ERROR: fmaxnmp v0.4h, v1.8h, v2.4h
1117 //----------------------------------------------------------------------
1118 // Vector minNum Pairwise (Floating Point)
1119 //----------------------------------------------------------------------
1120 // Mismatched and invalid vector types
1121 fminnmp v0.4s, v1.2s, v2.4s
1122 fminnmp v0.16b, v0.16b, v0.16b
1124 // CHECK-ERROR: error: invalid operand for instruction
1125 // CHECK-ERROR: fminnmp v0.4s, v1.2s, v2.4s
1127 // CHECK-ERROR: error: invalid operand for instruction
1128 // CHECK-ERROR: fminnmp v0.16b, v0.16b, v0.16b
1132 //----------------------------------------------------------------------
1133 // Vector Add Pairwise (Integer)
1134 //----------------------------------------------------------------------
1136 // Mismatched vector types
1137 addp v0.16b, v1.8b, v2.8b
1139 // CHECK-ERROR: error: invalid operand for instruction
1140 // CHECK-ERROR: addp v0.16b, v1.8b, v2.8b
1143 //----------------------------------------------------------------------
1144 // Vector Add Pairwise (Floating Point)
1145 //----------------------------------------------------------------------
1146 // Mismatched and invalid vector types
1147 faddp v0.16b, v1.8b, v2.8b
1148 faddp v0.2d, v1.2d, v2.8h
1150 // CHECK-ERROR: error: invalid operand for instruction
1151 // CHECK-ERROR: faddp v0.16b, v1.8b, v2.8b
1153 // CHECK-ERROR: error: invalid operand for instruction
1154 // CHECK-ERROR: faddp v0.2d, v1.2d, v2.8h
1158 //----------------------------------------------------------------------
1159 // Vector Saturating Doubling Multiply High
1160 //----------------------------------------------------------------------
1161 // Mismatched and invalid vector types
1162 sqdmulh v2.4h, v25.8h, v3.4h
1163 sqdmulh v12.2d, v5.2d, v13.2d
1164 sqdmulh v3.8b, v1.8b, v30.8b
1166 // CHECK-ERROR: error: invalid operand for instruction
1167 // CHECK-ERROR: sqdmulh v2.4h, v25.8h, v3.4h
1169 // CHECK-ERROR: error: invalid operand for instruction
1170 // CHECK-ERROR: sqdmulh v12.2d, v5.2d, v13.2d
1172 // CHECK-ERROR: error: invalid operand for instruction
1173 // CHECK-ERROR: sqdmulh v3.8b, v1.8b, v30.8b
1176 //----------------------------------------------------------------------
1177 // Vector Saturating Rouding Doubling Multiply High
1178 //----------------------------------------------------------------------
1179 // Mismatched and invalid vector types
1180 sqrdmulh v2.2s, v25.4s, v3.4s
1181 sqrdmulh v12.16b, v5.16b, v13.16b
1182 sqrdmulh v3.4h, v1.4h, v30.2d
1185 // CHECK-ERROR: error: invalid operand for instruction
1186 // CHECK-ERROR: sqrdmulh v2.2s, v25.4s, v3.4s
1188 // CHECK-ERROR: error: invalid operand for instruction
1189 // CHECK-ERROR: sqrdmulh v12.16b, v5.16b, v13.16b
1191 // CHECK-ERROR: error: invalid operand for instruction
1192 // CHECK-ERROR: sqrdmulh v3.4h, v1.4h, v30.2d
1195 //----------------------------------------------------------------------
1196 // Vector Multiply Extended
1197 //----------------------------------------------------------------------
1198 // Mismatched and invalid vector types
1199 fmulx v21.2s, v5.2s, v13.2d
1200 fmulx v1.4h, v25.4h, v3.4h
1202 // CHECK-ERROR: error: invalid operand for instruction
1203 // CHECK-ERROR: fmulx v21.2s, v5.2s, v13.2d
1205 // CHECK-ERROR: error: invalid operand for instruction
1206 // CHECK-ERROR: fmulx v1.4h, v25.4h, v3.4h
1209 //------------------------------------------------------------------------------
1210 // Vector Shift Left by Immediate
1211 //------------------------------------------------------------------------------
1212 // Mismatched vector types and out of range
1213 shl v0.4s, v15,2s, #3
1214 shl v0.2d, v17.4s, #3
1215 shl v0.8b, v31.8b, #-1
1216 shl v0.8b, v31.8b, #8
1217 shl v0.4s, v21.4s, #32
1218 shl v0.2d, v1.2d, #64
1220 // CHECK-ERROR: error: expected comma before next operand
1221 // CHECK-ERROR: shl v0.4s, v15,2s, #3
1223 // CHECK-ERROR: error: invalid operand for instruction
1224 // CHECK-ERROR: shl v0.2d, v17.4s, #3
1226 // CHECK-ERROR: error: expected integer in range [0, 7]
1227 // CHECK-ERROR: shl v0.8b, v31.8b, #-1
1229 // CHECK-ERROR: error: expected integer in range [0, 7]
1230 // CHECK-ERROR: shl v0.8b, v31.8b, #8
1232 // CHECK-ERROR: error: expected integer in range [0, 31]
1233 // CHECK-ERROR: shl v0.4s, v21.4s, #32
1235 // CHECK-ERROR: error: expected integer in range [0, 63]
1236 // CHECK-ERROR: shl v0.2d, v1.2d, #64
1239 //----------------------------------------------------------------------
1240 // Vector Shift Left Long by Immediate
1241 //----------------------------------------------------------------------
1242 // Mismatched vector types
1243 sshll v0.4s, v15.2s, #3
1244 ushll v1.16b, v25.16b, #6
1245 sshll2 v0.2d, v3.8s, #15
1246 ushll2 v1.4s, v25.4s, #7
1249 sshll v0.8h, v1.8b, #-1
1250 sshll v0.8h, v1.8b, #9
1251 ushll v0.4s, v1.4h, #17
1252 ushll v0.2d, v1.2s, #33
1253 sshll2 v0.8h, v1.16b, #9
1254 sshll2 v0.4s, v1.8h, #17
1255 ushll2 v0.2d, v1.4s, #33
1257 // CHECK-ERROR: error: invalid operand for instruction
1258 // CHECK-ERROR: sshll v0.4s, v15.2s, #3
1260 // CHECK-ERROR: error: invalid operand for instruction
1261 // CHECK-ERROR: ushll v1.16b, v25.16b, #6
1263 // CHECK-ERROR: error: invalid operand for instruction
1264 // CHECK-ERROR: sshll2 v0.2d, v3.8s, #15
1266 // CHECK-ERROR: error: invalid operand for instruction
1267 // CHECK-ERROR: ushll2 v1.4s, v25.4s, #7
1269 // CHECK-ERROR: error: expected integer in range [0, 7]
1270 // CHECK-ERROR: sshll v0.8h, v1.8b, #-1
1272 // CHECK-ERROR: error: expected integer in range [0, 7]
1273 // CHECK-ERROR: sshll v0.8h, v1.8b, #9
1275 // CHECK-ERROR: error: expected integer in range [0, 15]
1276 // CHECK-ERROR: ushll v0.4s, v1.4h, #17
1278 // CHECK-ERROR: error: expected integer in range [0, 31]
1279 // CHECK-ERROR: ushll v0.2d, v1.2s, #33
1281 // CHECK-ERROR: error: expected integer in range [0, 7]
1282 // CHECK-ERROR: sshll2 v0.8h, v1.16b, #9
1284 // CHECK-ERROR: error: expected integer in range [0, 15]
1285 // CHECK-ERROR: sshll2 v0.4s, v1.8h, #17
1287 // CHECK-ERROR: error: expected integer in range [0, 31]
1288 // CHECK-ERROR: ushll2 v0.2d, v1.4s, #33
1292 //------------------------------------------------------------------------------
1293 // Vector shift right by immediate
1294 //------------------------------------------------------------------------------
1295 sshr v0.8b, v1.8h, #3
1296 sshr v0.4h, v1.4s, #3
1297 sshr v0.2s, v1.2d, #3
1298 sshr v0.16b, v1.16b, #9
1299 sshr v0.8h, v1.8h, #17
1300 sshr v0.4s, v1.4s, #33
1301 sshr v0.2d, v1.2d, #65
1303 // CHECK-ERROR: error: invalid operand for instruction
1304 // CHECK-ERROR: sshr v0.8b, v1.8h, #3
1306 // CHECK-ERROR: error: invalid operand for instruction
1307 // CHECK-ERROR: sshr v0.4h, v1.4s, #3
1309 // CHECK-ERROR: error: invalid operand for instruction
1310 // CHECK-ERROR: sshr v0.2s, v1.2d, #3
1312 // CHECK-ERROR: error: expected integer in range [1, 8]
1313 // CHECK-ERROR: sshr v0.16b, v1.16b, #9
1315 // CHECK-ERROR: error: expected integer in range [1, 16]
1316 // CHECK-ERROR: sshr v0.8h, v1.8h, #17
1318 // CHECK-ERROR: error: expected integer in range [1, 32]
1319 // CHECK-ERROR: sshr v0.4s, v1.4s, #33
1321 // CHECK-ERROR: error: expected integer in range [1, 64]
1322 // CHECK-ERROR: sshr v0.2d, v1.2d, #65
1325 //------------------------------------------------------------------------------
1326 // Vector shift right by immediate
1327 //------------------------------------------------------------------------------
1328 ushr v0.8b, v1.8h, #3
1329 ushr v0.4h, v1.4s, #3
1330 ushr v0.2s, v1.2d, #3
1331 ushr v0.16b, v1.16b, #9
1332 ushr v0.8h, v1.8h, #17
1333 ushr v0.4s, v1.4s, #33
1334 ushr v0.2d, v1.2d, #65
1336 // CHECK-ERROR: error: invalid operand for instruction
1337 // CHECK-ERROR: ushr v0.8b, v1.8h, #3
1339 // CHECK-ERROR: error: invalid operand for instruction
1340 // CHECK-ERROR: ushr v0.4h, v1.4s, #3
1342 // CHECK-ERROR: error: invalid operand for instruction
1343 // CHECK-ERROR: ushr v0.2s, v1.2d, #3
1345 // CHECK-ERROR: error: expected integer in range [1, 8]
1346 // CHECK-ERROR: ushr v0.16b, v1.16b, #9
1348 // CHECK-ERROR: error: expected integer in range [1, 16]
1349 // CHECK-ERROR: ushr v0.8h, v1.8h, #17
1351 // CHECK-ERROR: error: expected integer in range [1, 32]
1352 // CHECK-ERROR: ushr v0.4s, v1.4s, #33
1354 // CHECK-ERROR: error: expected integer in range [1, 64]
1355 // CHECK-ERROR: ushr v0.2d, v1.2d, #65
1358 //------------------------------------------------------------------------------
1359 // Vector shift right and accumulate by immediate
1360 //------------------------------------------------------------------------------
1361 ssra v0.8b, v1.8h, #3
1362 ssra v0.4h, v1.4s, #3
1363 ssra v0.2s, v1.2d, #3
1364 ssra v0.16b, v1.16b, #9
1365 ssra v0.8h, v1.8h, #17
1366 ssra v0.4s, v1.4s, #33
1367 ssra v0.2d, v1.2d, #65
1369 // CHECK-ERROR: error: invalid operand for instruction
1370 // CHECK-ERROR: ssra v0.8b, v1.8h, #3
1372 // CHECK-ERROR: error: invalid operand for instruction
1373 // CHECK-ERROR: ssra v0.4h, v1.4s, #3
1375 // CHECK-ERROR: error: invalid operand for instruction
1376 // CHECK-ERROR: ssra v0.2s, v1.2d, #3
1378 // CHECK-ERROR: error: expected integer in range [1, 8]
1379 // CHECK-ERROR: ssra v0.16b, v1.16b, #9
1381 // CHECK-ERROR: error: expected integer in range [1, 16]
1382 // CHECK-ERROR: ssra v0.8h, v1.8h, #17
1384 // CHECK-ERROR: error: expected integer in range [1, 32]
1385 // CHECK-ERROR: ssra v0.4s, v1.4s, #33
1387 // CHECK-ERROR: error: expected integer in range [1, 64]
1388 // CHECK-ERROR: ssra v0.2d, v1.2d, #65
1391 //------------------------------------------------------------------------------
1392 // Vector shift right and accumulate by immediate
1393 //------------------------------------------------------------------------------
1394 usra v0.8b, v1.8h, #3
1395 usra v0.4h, v1.4s, #3
1396 usra v0.2s, v1.2d, #3
1397 usra v0.16b, v1.16b, #9
1398 usra v0.8h, v1.8h, #17
1399 usra v0.4s, v1.4s, #33
1400 usra v0.2d, v1.2d, #65
1402 // CHECK-ERROR: error: invalid operand for instruction
1403 // CHECK-ERROR: usra v0.8b, v1.8h, #3
1405 // CHECK-ERROR: error: invalid operand for instruction
1406 // CHECK-ERROR: usra v0.4h, v1.4s, #3
1408 // CHECK-ERROR: error: invalid operand for instruction
1409 // CHECK-ERROR: usra v0.2s, v1.2d, #3
1411 // CHECK-ERROR: error: expected integer in range [1, 8]
1412 // CHECK-ERROR: usra v0.16b, v1.16b, #9
1414 // CHECK-ERROR: error: expected integer in range [1, 16]
1415 // CHECK-ERROR: usra v0.8h, v1.8h, #17
1417 // CHECK-ERROR: error: expected integer in range [1, 32]
1418 // CHECK-ERROR: usra v0.4s, v1.4s, #33
1420 // CHECK-ERROR: error: expected integer in range [1, 64]
1421 // CHECK-ERROR: usra v0.2d, v1.2d, #65
1424 //------------------------------------------------------------------------------
1425 // Vector rounding shift right by immediate
1426 //------------------------------------------------------------------------------
1427 srshr v0.8b, v1.8h, #3
1428 srshr v0.4h, v1.4s, #3
1429 srshr v0.2s, v1.2d, #3
1430 srshr v0.16b, v1.16b, #9
1431 srshr v0.8h, v1.8h, #17
1432 srshr v0.4s, v1.4s, #33
1433 srshr v0.2d, v1.2d, #65
1435 // CHECK-ERROR: error: invalid operand for instruction
1436 // CHECK-ERROR: srshr v0.8b, v1.8h, #3
1438 // CHECK-ERROR: error: invalid operand for instruction
1439 // CHECK-ERROR: srshr v0.4h, v1.4s, #3
1441 // CHECK-ERROR: error: invalid operand for instruction
1442 // CHECK-ERROR: srshr v0.2s, v1.2d, #3
1444 // CHECK-ERROR: error: expected integer in range [1, 8]
1445 // CHECK-ERROR: srshr v0.16b, v1.16b, #9
1447 // CHECK-ERROR: error: expected integer in range [1, 16]
1448 // CHECK-ERROR: srshr v0.8h, v1.8h, #17
1450 // CHECK-ERROR: error: expected integer in range [1, 32]
1451 // CHECK-ERROR: srshr v0.4s, v1.4s, #33
1453 // CHECK-ERROR: error: expected integer in range [1, 64]
1454 // CHECK-ERROR: srshr v0.2d, v1.2d, #65
1457 //------------------------------------------------------------------------------
1458 // Vecotr rounding shift right by immediate
1459 //------------------------------------------------------------------------------
1460 urshr v0.8b, v1.8h, #3
1461 urshr v0.4h, v1.4s, #3
1462 urshr v0.2s, v1.2d, #3
1463 urshr v0.16b, v1.16b, #9
1464 urshr v0.8h, v1.8h, #17
1465 urshr v0.4s, v1.4s, #33
1466 urshr v0.2d, v1.2d, #65
1468 // CHECK-ERROR: error: invalid operand for instruction
1469 // CHECK-ERROR: urshr v0.8b, v1.8h, #3
1471 // CHECK-ERROR: error: invalid operand for instruction
1472 // CHECK-ERROR: urshr v0.4h, v1.4s, #3
1474 // CHECK-ERROR: error: invalid operand for instruction
1475 // CHECK-ERROR: urshr v0.2s, v1.2d, #3
1477 // CHECK-ERROR: error: expected integer in range [1, 8]
1478 // CHECK-ERROR: urshr v0.16b, v1.16b, #9
1480 // CHECK-ERROR: error: expected integer in range [1, 16]
1481 // CHECK-ERROR: urshr v0.8h, v1.8h, #17
1483 // CHECK-ERROR: error: expected integer in range [1, 32]
1484 // CHECK-ERROR: urshr v0.4s, v1.4s, #33
1486 // CHECK-ERROR: error: expected integer in range [1, 64]
1487 // CHECK-ERROR: urshr v0.2d, v1.2d, #65
1490 //------------------------------------------------------------------------------
1491 // Vector rounding shift right and accumulate by immediate
1492 //------------------------------------------------------------------------------
1493 srsra v0.8b, v1.8h, #3
1494 srsra v0.4h, v1.4s, #3
1495 srsra v0.2s, v1.2d, #3
1496 srsra v0.16b, v1.16b, #9
1497 srsra v0.8h, v1.8h, #17
1498 srsra v0.4s, v1.4s, #33
1499 srsra v0.2d, v1.2d, #65
1501 // CHECK-ERROR: error: invalid operand for instruction
1502 // CHECK-ERROR: srsra v0.8b, v1.8h, #3
1504 // CHECK-ERROR: error: invalid operand for instruction
1505 // CHECK-ERROR: srsra v0.4h, v1.4s, #3
1507 // CHECK-ERROR: error: invalid operand for instruction
1508 // CHECK-ERROR: srsra v0.2s, v1.2d, #3
1510 // CHECK-ERROR: error: expected integer in range [1, 8]
1511 // CHECK-ERROR: srsra v0.16b, v1.16b, #9
1513 // CHECK-ERROR: error: expected integer in range [1, 16]
1514 // CHECK-ERROR: srsra v0.8h, v1.8h, #17
1516 // CHECK-ERROR: error: expected integer in range [1, 32]
1517 // CHECK-ERROR: srsra v0.4s, v1.4s, #33
1519 // CHECK-ERROR: error: expected integer in range [1, 64]
1520 // CHECK-ERROR: srsra v0.2d, v1.2d, #65
1523 //------------------------------------------------------------------------------
1524 // Vector rounding shift right and accumulate by immediate
1525 //------------------------------------------------------------------------------
1526 ursra v0.8b, v1.8h, #3
1527 ursra v0.4h, v1.4s, #3
1528 ursra v0.2s, v1.2d, #3
1529 ursra v0.16b, v1.16b, #9
1530 ursra v0.8h, v1.8h, #17
1531 ursra v0.4s, v1.4s, #33
1532 ursra v0.2d, v1.2d, #65
1534 // CHECK-ERROR: error: invalid operand for instruction
1535 // CHECK-ERROR: ursra v0.8b, v1.8h, #3
1537 // CHECK-ERROR: error: invalid operand for instruction
1538 // CHECK-ERROR: ursra v0.4h, v1.4s, #3
1540 // CHECK-ERROR: error: invalid operand for instruction
1541 // CHECK-ERROR: ursra v0.2s, v1.2d, #3
1543 // CHECK-ERROR: error: expected integer in range [1, 8]
1544 // CHECK-ERROR: ursra v0.16b, v1.16b, #9
1546 // CHECK-ERROR: error: expected integer in range [1, 16]
1547 // CHECK-ERROR: ursra v0.8h, v1.8h, #17
1549 // CHECK-ERROR: error: expected integer in range [1, 32]
1550 // CHECK-ERROR: ursra v0.4s, v1.4s, #33
1552 // CHECK-ERROR: error: expected integer in range [1, 64]
1553 // CHECK-ERROR: ursra v0.2d, v1.2d, #65
1556 //------------------------------------------------------------------------------
1557 // Vector shift right and insert by immediate
1558 //------------------------------------------------------------------------------
1559 sri v0.8b, v1.8h, #3
1560 sri v0.4h, v1.4s, #3
1561 sri v0.2s, v1.2d, #3
1562 sri v0.16b, v1.16b, #9
1563 sri v0.8h, v1.8h, #17
1564 sri v0.4s, v1.4s, #33
1565 sri v0.2d, v1.2d, #65
1567 // CHECK-ERROR: error: invalid operand for instruction
1568 // CHECK-ERROR: sri v0.8b, v1.8h, #3
1570 // CHECK-ERROR: error: invalid operand for instruction
1571 // CHECK-ERROR: sri v0.4h, v1.4s, #3
1573 // CHECK-ERROR: error: invalid operand for instruction
1574 // CHECK-ERROR: sri v0.2s, v1.2d, #3
1576 // CHECK-ERROR: error: expected integer in range [1, 8]
1577 // CHECK-ERROR: sri v0.16b, v1.16b, #9
1579 // CHECK-ERROR: error: expected integer in range [1, 16]
1580 // CHECK-ERROR: sri v0.8h, v1.8h, #17
1582 // CHECK-ERROR: error: expected integer in range [1, 32]
1583 // CHECK-ERROR: sri v0.4s, v1.4s, #33
1585 // CHECK-ERROR: error: expected integer in range [1, 64]
1586 // CHECK-ERROR: sri v0.2d, v1.2d, #65
1589 //------------------------------------------------------------------------------
1590 // Vector shift left and insert by immediate
1591 //------------------------------------------------------------------------------
1592 sli v0.8b, v1.8h, #3
1593 sli v0.4h, v1.4s, #3
1594 sli v0.2s, v1.2d, #3
1595 sli v0.16b, v1.16b, #8
1596 sli v0.8h, v1.8h, #16
1597 sli v0.4s, v1.4s, #32
1598 sli v0.2d, v1.2d, #64
1600 // CHECK-ERROR: error: invalid operand for instruction
1601 // CHECK-ERROR: sli v0.8b, v1.8h, #3
1603 // CHECK-ERROR: error: invalid operand for instruction
1604 // CHECK-ERROR: sli v0.4h, v1.4s, #3
1606 // CHECK-ERROR: error: invalid operand for instruction
1607 // CHECK-ERROR: sli v0.2s, v1.2d, #3
1609 // CHECK-ERROR: error: expected integer in range [0, 7]
1610 // CHECK-ERROR: sli v0.16b, v1.16b, #8
1612 // CHECK-ERROR: error: expected integer in range [0, 15]
1613 // CHECK-ERROR: sli v0.8h, v1.8h, #16
1615 // CHECK-ERROR: error: expected integer in range [0, 31]
1616 // CHECK-ERROR: sli v0.4s, v1.4s, #32
1618 // CHECK-ERROR: error: expected integer in range [0, 63]
1619 // CHECK-ERROR: sli v0.2d, v1.2d, #64
1622 //------------------------------------------------------------------------------
1623 // Vector saturating shift left unsigned by immediate
1624 //------------------------------------------------------------------------------
1625 sqshlu v0.8b, v1.8h, #3
1626 sqshlu v0.4h, v1.4s, #3
1627 sqshlu v0.2s, v1.2d, #3
1628 sqshlu v0.16b, v1.16b, #8
1629 sqshlu v0.8h, v1.8h, #16
1630 sqshlu v0.4s, v1.4s, #32
1631 sqshlu v0.2d, v1.2d, #64
1633 // CHECK-ERROR: error: invalid operand for instruction
1634 // CHECK-ERROR: sqshlu v0.8b, v1.8h, #3
1636 // CHECK-ERROR: error: invalid operand for instruction
1637 // CHECK-ERROR: sqshlu v0.4h, v1.4s, #3
1639 // CHECK-ERROR: error: invalid operand for instruction
1640 // CHECK-ERROR: sqshlu v0.2s, v1.2d, #3
1642 // CHECK-ERROR: error: expected integer in range [0, 7]
1643 // CHECK-ERROR: sqshlu v0.16b, v1.16b, #8
1645 // CHECK-ERROR: error: expected integer in range [0, 15]
1646 // CHECK-ERROR: sqshlu v0.8h, v1.8h, #16
1648 // CHECK-ERROR: error: expected integer in range [0, 31]
1649 // CHECK-ERROR: sqshlu v0.4s, v1.4s, #32
1651 // CHECK-ERROR: error: expected integer in range [0, 63]
1652 // CHECK-ERROR: sqshlu v0.2d, v1.2d, #64
1655 //------------------------------------------------------------------------------
1656 // Vector saturating shift left by immediate
1657 //------------------------------------------------------------------------------
1658 sqshl v0.8b, v1.8h, #3
1659 sqshl v0.4h, v1.4s, #3
1660 sqshl v0.2s, v1.2d, #3
1661 sqshl v0.16b, v1.16b, #8
1662 sqshl v0.8h, v1.8h, #16
1663 sqshl v0.4s, v1.4s, #32
1664 sqshl v0.2d, v1.2d, #64
1666 // CHECK-ERROR: error: invalid operand for instruction
1667 // CHECK-ERROR: sqshl v0.8b, v1.8h, #3
1669 // CHECK-ERROR: error: invalid operand for instruction
1670 // CHECK-ERROR: sqshl v0.4h, v1.4s, #3
1672 // CHECK-ERROR: error: invalid operand for instruction
1673 // CHECK-ERROR: sqshl v0.2s, v1.2d, #3
1675 // CHECK-ERROR: error: expected integer in range [0, 7]
1676 // CHECK-ERROR: sqshl v0.16b, v1.16b, #8
1678 // CHECK-ERROR: error: expected integer in range [0, 15]
1679 // CHECK-ERROR: sqshl v0.8h, v1.8h, #16
1681 // CHECK-ERROR: error: expected integer in range [0, 31]
1682 // CHECK-ERROR: sqshl v0.4s, v1.4s, #32
1684 // CHECK-ERROR: error: expected integer in range [0, 63]
1685 // CHECK-ERROR: sqshl v0.2d, v1.2d, #64
1688 //------------------------------------------------------------------------------
1689 // Vector saturating shift left by immediate
1690 //------------------------------------------------------------------------------
1691 uqshl v0.8b, v1.8h, #3
1692 uqshl v0.4h, v1.4s, #3
1693 uqshl v0.2s, v1.2d, #3
1694 uqshl v0.16b, v1.16b, #8
1695 uqshl v0.8h, v1.8h, #16
1696 uqshl v0.4s, v1.4s, #32
1697 uqshl v0.2d, v1.2d, #64
1699 // CHECK-ERROR: error: invalid operand for instruction
1700 // CHECK-ERROR: uqshl v0.8b, v1.8h, #3
1702 // CHECK-ERROR: error: invalid operand for instruction
1703 // CHECK-ERROR: uqshl v0.4h, v1.4s, #3
1705 // CHECK-ERROR: error: invalid operand for instruction
1706 // CHECK-ERROR: uqshl v0.2s, v1.2d, #3
1708 // CHECK-ERROR: error: expected integer in range [0, 7]
1709 // CHECK-ERROR: uqshl v0.16b, v1.16b, #8
1711 // CHECK-ERROR: error: expected integer in range [0, 15]
1712 // CHECK-ERROR: uqshl v0.8h, v1.8h, #16
1714 // CHECK-ERROR: error: expected integer in range [0, 31]
1715 // CHECK-ERROR: uqshl v0.4s, v1.4s, #32
1717 // CHECK-ERROR: error: expected integer in range [0, 63]
1718 // CHECK-ERROR: uqshl v0.2d, v1.2d, #64
1721 //------------------------------------------------------------------------------
1722 // Vector shift right narrow by immediate
1723 //------------------------------------------------------------------------------
1724 shrn v0.8b, v1.8b, #3
1725 shrn v0.4h, v1.4h, #3
1726 shrn v0.2s, v1.2s, #3
1727 shrn2 v0.16b, v1.8h, #17
1728 shrn2 v0.8h, v1.4s, #33
1729 shrn2 v0.4s, v1.2d, #65
1731 // CHECK-ERROR: error: invalid operand for instruction
1732 // CHECK-ERROR: shrn v0.8b, v1.8b, #3
1734 // CHECK-ERROR: error: invalid operand for instruction
1735 // CHECK-ERROR: shrn v0.4h, v1.4h, #3
1737 // CHECK-ERROR: error: invalid operand for instruction
1738 // CHECK-ERROR: shrn v0.2s, v1.2s, #3
1740 // CHECK-ERROR: error: expected integer in range [1, 8]
1741 // CHECK-ERROR: shrn2 v0.16b, v1.8h, #17
1743 // CHECK-ERROR: error: expected integer in range [1, 16]
1744 // CHECK-ERROR: shrn2 v0.8h, v1.4s, #33
1746 // CHECK-ERROR: error: expected integer in range [1, 32]
1747 // CHECK-ERROR: shrn2 v0.4s, v1.2d, #65
1750 //------------------------------------------------------------------------------
1751 // Vector saturating shift right unsigned narrow by immediate
1752 //------------------------------------------------------------------------------
1753 sqshrun v0.8b, v1.8b, #3
1754 sqshrun v0.4h, v1.4h, #3
1755 sqshrun v0.2s, v1.2s, #3
1756 sqshrun2 v0.16b, v1.8h, #17
1757 sqshrun2 v0.8h, v1.4s, #33
1758 sqshrun2 v0.4s, v1.2d, #65
1760 // CHECK-ERROR: error: invalid operand for instruction
1761 // CHECK-ERROR: sqshrun v0.8b, v1.8b, #3
1763 // CHECK-ERROR: error: invalid operand for instruction
1764 // CHECK-ERROR: sqshrun v0.4h, v1.4h, #3
1766 // CHECK-ERROR: error: invalid operand for instruction
1767 // CHECK-ERROR: sqshrun v0.2s, v1.2s, #3
1769 // CHECK-ERROR: error: expected integer in range [1, 8]
1770 // CHECK-ERROR: sqshrun2 v0.16b, v1.8h, #17
1772 // CHECK-ERROR: error: expected integer in range [1, 16]
1773 // CHECK-ERROR: sqshrun2 v0.8h, v1.4s, #33
1775 // CHECK-ERROR: error: expected integer in range [1, 32]
1776 // CHECK-ERROR: sqshrun2 v0.4s, v1.2d, #65
1779 //------------------------------------------------------------------------------
1780 // Vector rounding shift right narrow by immediate
1781 //------------------------------------------------------------------------------
1782 rshrn v0.8b, v1.8b, #3
1783 rshrn v0.4h, v1.4h, #3
1784 rshrn v0.2s, v1.2s, #3
1785 rshrn2 v0.16b, v1.8h, #17
1786 rshrn2 v0.8h, v1.4s, #33
1787 rshrn2 v0.4s, v1.2d, #65
1789 // CHECK-ERROR: error: invalid operand for instruction
1790 // CHECK-ERROR: rshrn v0.8b, v1.8b, #3
1792 // CHECK-ERROR: error: invalid operand for instruction
1793 // CHECK-ERROR: rshrn v0.4h, v1.4h, #3
1795 // CHECK-ERROR: error: invalid operand for instruction
1796 // CHECK-ERROR: rshrn v0.2s, v1.2s, #3
1798 // CHECK-ERROR: error: expected integer in range [1, 8]
1799 // CHECK-ERROR: rshrn2 v0.16b, v1.8h, #17
1801 // CHECK-ERROR: error: expected integer in range [1, 16]
1802 // CHECK-ERROR: rshrn2 v0.8h, v1.4s, #33
1804 // CHECK-ERROR: error: expected integer in range [1, 32]
1805 // CHECK-ERROR: rshrn2 v0.4s, v1.2d, #65
1808 //------------------------------------------------------------------------------
1809 // Vector saturating shift right rounded unsigned narrow by immediate
1810 //------------------------------------------------------------------------------
1811 sqrshrun v0.8b, v1.8b, #3
1812 sqrshrun v0.4h, v1.4h, #3
1813 sqrshrun v0.2s, v1.2s, #3
1814 sqrshrun2 v0.16b, v1.8h, #17
1815 sqrshrun2 v0.8h, v1.4s, #33
1816 sqrshrun2 v0.4s, v1.2d, #65
1818 // CHECK-ERROR: error: invalid operand for instruction
1819 // CHECK-ERROR: sqrshrun v0.8b, v1.8b, #3
1821 // CHECK-ERROR: error: invalid operand for instruction
1822 // CHECK-ERROR: sqrshrun v0.4h, v1.4h, #3
1824 // CHECK-ERROR: error: invalid operand for instruction
1825 // CHECK-ERROR: sqrshrun v0.2s, v1.2s, #3
1827 // CHECK-ERROR: error: expected integer in range [1, 8]
1828 // CHECK-ERROR: sqrshrun2 v0.16b, v1.8h, #17
1830 // CHECK-ERROR: error: expected integer in range [1, 16]
1831 // CHECK-ERROR: sqrshrun2 v0.8h, v1.4s, #33
1833 // CHECK-ERROR: error: expected integer in range [1, 32]
1834 // CHECK-ERROR: sqrshrun2 v0.4s, v1.2d, #65
1837 //------------------------------------------------------------------------------
1838 // Vector saturating shift right narrow by immediate
1839 //------------------------------------------------------------------------------
1840 sqshrn v0.8b, v1.8b, #3
1841 sqshrn v0.4h, v1.4h, #3
1842 sqshrn v0.2s, v1.2s, #3
1843 sqshrn2 v0.16b, v1.8h, #17
1844 sqshrn2 v0.8h, v1.4s, #33
1845 sqshrn2 v0.4s, v1.2d, #65
1847 // CHECK-ERROR: error: invalid operand for instruction
1848 // CHECK-ERROR: sqshrn v0.8b, v1.8b, #3
1850 // CHECK-ERROR: error: invalid operand for instruction
1851 // CHECK-ERROR: sqshrn v0.4h, v1.4h, #3
1853 // CHECK-ERROR: error: invalid operand for instruction
1854 // CHECK-ERROR: sqshrn v0.2s, v1.2s, #3
1856 // CHECK-ERROR: error: expected integer in range [1, 8]
1857 // CHECK-ERROR: sqshrn2 v0.16b, v1.8h, #17
1859 // CHECK-ERROR: error: expected integer in range [1, 16]
1860 // CHECK-ERROR: sqshrn2 v0.8h, v1.4s, #33
1862 // CHECK-ERROR: error: expected integer in range [1, 32]
1863 // CHECK-ERROR: sqshrn2 v0.4s, v1.2d, #65
1866 //------------------------------------------------------------------------------
1867 // Vector saturating shift right narrow by immediate
1868 //------------------------------------------------------------------------------
1869 uqshrn v0.8b, v1.8b, #3
1870 uqshrn v0.4h, v1.4h, #3
1871 uqshrn v0.2s, v1.2s, #3
1872 uqshrn2 v0.16b, v1.8h, #17
1873 uqshrn2 v0.8h, v1.4s, #33
1874 uqshrn2 v0.4s, v1.2d, #65
1876 // CHECK-ERROR: error: invalid operand for instruction
1877 // CHECK-ERROR: uqshrn v0.8b, v1.8b, #3
1879 // CHECK-ERROR: error: invalid operand for instruction
1880 // CHECK-ERROR: uqshrn v0.4h, v1.4h, #3
1882 // CHECK-ERROR: error: invalid operand for instruction
1883 // CHECK-ERROR: uqshrn v0.2s, v1.2s, #3
1885 // CHECK-ERROR: error: expected integer in range [1, 8]
1886 // CHECK-ERROR: uqshrn2 v0.16b, v1.8h, #17
1888 // CHECK-ERROR: error: expected integer in range [1, 16]
1889 // CHECK-ERROR: uqshrn2 v0.8h, v1.4s, #33
1891 // CHECK-ERROR: error: expected integer in range [1, 32]
1892 // CHECK-ERROR: uqshrn2 v0.4s, v1.2d, #65
1895 //------------------------------------------------------------------------------
1896 // Vector saturating shift right rounded narrow by immediate
1897 //------------------------------------------------------------------------------
1898 sqrshrn v0.8b, v1.8b, #3
1899 sqrshrn v0.4h, v1.4h, #3
1900 sqrshrn v0.2s, v1.2s, #3
1901 sqrshrn2 v0.16b, v1.8h, #17
1902 sqrshrn2 v0.8h, v1.4s, #33
1903 sqrshrn2 v0.4s, v1.2d, #65
1905 // CHECK-ERROR: error: invalid operand for instruction
1906 // CHECK-ERROR: sqrshrn v0.8b, v1.8b, #3
1908 // CHECK-ERROR: error: invalid operand for instruction
1909 // CHECK-ERROR: sqrshrn v0.4h, v1.4h, #3
1911 // CHECK-ERROR: error: invalid operand for instruction
1912 // CHECK-ERROR: sqrshrn v0.2s, v1.2s, #3
1914 // CHECK-ERROR: error: expected integer in range [1, 8]
1915 // CHECK-ERROR: sqrshrn2 v0.16b, v1.8h, #17
1917 // CHECK-ERROR: error: expected integer in range [1, 16]
1918 // CHECK-ERROR: sqrshrn2 v0.8h, v1.4s, #33
1920 // CHECK-ERROR: error: expected integer in range [1, 32]
1921 // CHECK-ERROR: sqrshrn2 v0.4s, v1.2d, #65
1924 //------------------------------------------------------------------------------
1925 // Vector saturating shift right rounded narrow by immediate
1926 //------------------------------------------------------------------------------
1927 uqrshrn v0.8b, v1.8b, #3
1928 uqrshrn v0.4h, v1.4h, #3
1929 uqrshrn v0.2s, v1.2s, #3
1930 uqrshrn2 v0.16b, v1.8h, #17
1931 uqrshrn2 v0.8h, v1.4s, #33
1932 uqrshrn2 v0.4s, v1.2d, #65
1934 // CHECK-ERROR: error: invalid operand for instruction
1935 // CHECK-ERROR: uqrshrn v0.8b, v1.8b, #3
1937 // CHECK-ERROR: error: invalid operand for instruction
1938 // CHECK-ERROR: uqrshrn v0.4h, v1.4h, #3
1940 // CHECK-ERROR: error: invalid operand for instruction
1941 // CHECK-ERROR: uqrshrn v0.2s, v1.2s, #3
1943 // CHECK-ERROR: error: expected integer in range [1, 8]
1944 // CHECK-ERROR: uqrshrn2 v0.16b, v1.8h, #17
1946 // CHECK-ERROR: error: expected integer in range [1, 16]
1947 // CHECK-ERROR: uqrshrn2 v0.8h, v1.4s, #33
1949 // CHECK-ERROR: error: expected integer in range [1, 32]
1950 // CHECK-ERROR: uqrshrn2 v0.4s, v1.2d, #65
1953 //------------------------------------------------------------------------------
1954 // Fixed-point convert to floating-point
1955 //------------------------------------------------------------------------------
1956 scvtf v0.2s, v1.2d, #3
1957 scvtf v0.4s, v1.4h, #3
1958 scvtf v0.2d, v1.2s, #3
1959 ucvtf v0.2s, v1.2s, #33
1960 ucvtf v0.4s, v1.4s, #33
1961 ucvtf v0.2d, v1.2d, #65
1963 // CHECK-ERROR: error: invalid operand for instruction
1964 // CHECK-ERROR: scvtf v0.2s, v1.2d, #3
1966 // CHECK-ERROR: error: invalid operand for instruction
1967 // CHECK-ERROR: scvtf v0.4s, v1.4h, #3
1969 // CHECK-ERROR: error: invalid operand for instruction
1970 // CHECK-ERROR: scvtf v0.2d, v1.2s, #3
1972 // CHECK-ERROR: error: expected integer in range [1, 32]
1973 // CHECK-ERROR: ucvtf v0.2s, v1.2s, #33
1975 // CHECK-ERROR: error: expected integer in range [1, 32]
1976 // CHECK-ERROR: ucvtf v0.4s, v1.4s, #33
1978 // CHECK-ERROR: error: expected integer in range [1, 64]
1979 // CHECK-ERROR: ucvtf v0.2d, v1.2d, #65
1982 //------------------------------------------------------------------------------
1983 // Floating-point convert to fixed-point
1984 //------------------------------------------------------------------------------
1985 fcvtzs v0.2s, v1.2d, #3
1986 fcvtzs v0.4s, v1.4h, #3
1987 fcvtzs v0.2d, v1.2s, #3
1988 fcvtzu v0.2s, v1.2s, #33
1989 fcvtzu v0.4s, v1.4s, #33
1990 fcvtzu v0.2d, v1.2d, #65
1992 // CHECK-ERROR: error: invalid operand for instruction
1993 // CHECK-ERROR: fcvtzs v0.2s, v1.2d, #3
1995 // CHECK-ERROR: error: invalid operand for instruction
1996 // CHECK-ERROR: fcvtzs v0.4s, v1.4h, #3
1998 // CHECK-ERROR: error: invalid operand for instruction
1999 // CHECK-ERROR: fcvtzs v0.2d, v1.2s, #3
2001 // CHECK-ERROR: error: expected integer in range [1, 32]
2002 // CHECK-ERROR: fcvtzu v0.2s, v1.2s, #33
2004 // CHECK-ERROR: error: expected integer in range [1, 32]
2005 // CHECK-ERROR: fcvtzu v0.4s, v1.4s, #33
2007 // CHECK-ERROR: error: expected integer in range [1, 64]
2008 // CHECK-ERROR: fcvtzu v0.2d, v1.2d, #65
2011 //----------------------------------------------------------------------
2012 // Vector operation on 3 operands with different types
2013 //----------------------------------------------------------------------
2015 // Mismatched and invalid vector types
2016 saddl v0.8h, v1.8h, v2.8b
2017 saddl v0.4s, v1.4s, v2.4h
2018 saddl v0.2d, v1.2d, v2.2s
2020 // CHECK-ERROR: error: invalid operand for instruction
2021 // CHECK-ERROR: saddl v0.8h, v1.8h, v2.8b
2023 // CHECK-ERROR: error: invalid operand for instruction
2024 // CHECK-ERROR: saddl v0.4s, v1.4s, v2.4h
2026 // CHECK-ERROR: error: invalid operand for instruction
2027 // CHECK-ERROR: saddl v0.2d, v1.2d, v2.2s
2030 saddl2 v0.4s, v1.8s, v2.8h
2031 saddl2 v0.8h, v1.16h, v2.16b
2032 saddl2 v0.2d, v1.4d, v2.4s
2034 // CHECK-ERROR: error: invalid operand for instruction
2035 // CHECK-ERROR: saddl2 v0.4s, v1.8s, v2.8h
2037 // CHECK-ERROR: error: invalid operand for instruction
2038 // CHECK-ERROR: saddl2 v0.8h, v1.16h, v2.16b
2040 // CHECK-ERROR: error: invalid operand for instruction
2041 // CHECK-ERROR: saddl2 v0.2d, v1.4d, v2.4s
2044 uaddl v0.8h, v1.8h, v2.8b
2045 uaddl v0.4s, v1.4s, v2.4h
2046 uaddl v0.2d, v1.2d, v2.2s
2048 // CHECK-ERROR: error: invalid operand for instruction
2049 // CHECK-ERROR: uaddl v0.8h, v1.8h, v2.8b
2051 // CHECK-ERROR: error: invalid operand for instruction
2052 // CHECK-ERROR: uaddl v0.4s, v1.4s, v2.4h
2054 // CHECK-ERROR: error: invalid operand for instruction
2055 // CHECK-ERROR: uaddl v0.2d, v1.2d, v2.2s
2058 uaddl2 v0.8h, v1.16h, v2.16b
2059 uaddl2 v0.4s, v1.8s, v2.8h
2060 uaddl2 v0.2d, v1.4d, v2.4s
2062 // CHECK-ERROR: error: invalid operand for instruction
2063 // CHECK-ERROR: uaddl2 v0.8h, v1.16h, v2.16b
2065 // CHECK-ERROR: error: invalid operand for instruction
2066 // CHECK-ERROR: uaddl2 v0.4s, v1.8s, v2.8h
2068 // CHECK-ERROR: error: invalid operand for instruction
2069 // CHECK-ERROR: uaddl2 v0.2d, v1.4d, v2.4s
2072 ssubl v0.8h, v1.8h, v2.8b
2073 ssubl v0.4s, v1.4s, v2.4h
2074 ssubl v0.2d, v1.2d, v2.2s
2076 // CHECK-ERROR: error: invalid operand for instruction
2077 // CHECK-ERROR: ssubl v0.8h, v1.8h, v2.8b
2079 // CHECK-ERROR: error: invalid operand for instruction
2080 // CHECK-ERROR: ssubl v0.4s, v1.4s, v2.4h
2082 // CHECK-ERROR: error: invalid operand for instruction
2083 // CHECK-ERROR: ssubl v0.2d, v1.2d, v2.2s
2086 ssubl2 v0.8h, v1.16h, v2.16b
2087 ssubl2 v0.4s, v1.8s, v2.8h
2088 ssubl2 v0.2d, v1.4d, v2.4s
2090 // CHECK-ERROR: error: invalid operand for instruction
2091 // CHECK-ERROR: ssubl2 v0.8h, v1.16h, v2.16b
2093 // CHECK-ERROR: error: invalid operand for instruction
2094 // CHECK-ERROR: ssubl2 v0.4s, v1.8s, v2.8h
2096 // CHECK-ERROR: error: invalid operand for instruction
2097 // CHECK-ERROR: ssubl2 v0.2d, v1.4d, v2.4s
2100 usubl v0.8h, v1.8h, v2.8b
2101 usubl v0.4s, v1.4s, v2.4h
2102 usubl v0.2d, v1.2d, v2.2s
2104 // CHECK-ERROR: error: invalid operand for instruction
2105 // CHECK-ERROR: usubl v0.8h, v1.8h, v2.8b
2107 // CHECK-ERROR: error: invalid operand for instruction
2108 // CHECK-ERROR: usubl v0.4s, v1.4s, v2.4h
2110 // CHECK-ERROR: error: invalid operand for instruction
2111 // CHECK-ERROR: usubl v0.2d, v1.2d, v2.2s
2114 usubl2 v0.8h, v1.16h, v2.16b
2115 usubl2 v0.4s, v1.8s, v2.8h
2116 usubl2 v0.2d, v1.4d, v2.4s
2118 // CHECK-ERROR: error: invalid operand for instruction
2119 // CHECK-ERROR: usubl2 v0.8h, v1.16h, v2.16b
2121 // CHECK-ERROR: error: invalid operand for instruction
2122 // CHECK-ERROR: usubl2 v0.4s, v1.8s, v2.8h
2124 // CHECK-ERROR: error: invalid operand for instruction
2125 // CHECK-ERROR: usubl2 v0.2d, v1.4d, v2.4s
2128 sabal v0.8h, v1.8h, v2.8b
2129 sabal v0.4s, v1.4s, v2.4h
2130 sabal v0.2d, v1.2d, v2.2s
2132 // CHECK-ERROR: error: invalid operand for instruction
2133 // CHECK-ERROR: sabal v0.8h, v1.8h, v2.8b
2135 // CHECK-ERROR: error: invalid operand for instruction
2136 // CHECK-ERROR: sabal v0.4s, v1.4s, v2.4h
2138 // CHECK-ERROR: error: invalid operand for instruction
2139 // CHECK-ERROR: sabal v0.2d, v1.2d, v2.2s
2142 sabal2 v0.8h, v1.16h, v2.16b
2143 sabal2 v0.4s, v1.8s, v2.8h
2144 sabal2 v0.2d, v1.4d, v2.4s
2146 // CHECK-ERROR: error: invalid operand for instruction
2147 // CHECK-ERROR: sabal2 v0.8h, v1.16h, v2.16b
2149 // CHECK-ERROR: error: invalid operand for instruction
2150 // CHECK-ERROR: sabal2 v0.4s, v1.8s, v2.8h
2152 // CHECK-ERROR: error: invalid operand for instruction
2153 // CHECK-ERROR: sabal2 v0.2d, v1.4d, v2.4s
2156 uabal v0.8h, v1.8h, v2.8b
2157 uabal v0.4s, v1.4s, v2.4h
2158 uabal v0.2d, v1.2d, v2.2s
2160 // CHECK-ERROR: error: invalid operand for instruction
2161 // CHECK-ERROR: uabal v0.8h, v1.8h, v2.8b
2163 // CHECK-ERROR: error: invalid operand for instruction
2164 // CHECK-ERROR: uabal v0.4s, v1.4s, v2.4h
2166 // CHECK-ERROR: error: invalid operand for instruction
2167 // CHECK-ERROR: uabal v0.2d, v1.2d, v2.2s
2170 uabal2 v0.8h, v1.16h, v2.16b
2171 uabal2 v0.4s, v1.8s, v2.8h
2172 uabal2 v0.2d, v1.4d, v2.4s
2174 // CHECK-ERROR: error: invalid operand for instruction
2175 // CHECK-ERROR: uabal2 v0.8h, v1.16h, v2.16b
2177 // CHECK-ERROR: error: invalid operand for instruction
2178 // CHECK-ERROR: uabal2 v0.4s, v1.8s, v2.8h
2180 // CHECK-ERROR: error: invalid operand for instruction
2181 // CHECK-ERROR: uabal2 v0.2d, v1.4d, v2.4s
2184 sabdl v0.8h, v1.8h, v2.8b
2185 sabdl v0.4s, v1.4s, v2.4h
2186 sabdl v0.2d, v1.2d, v2.2s
2188 // CHECK-ERROR: error: invalid operand for instruction
2189 // CHECK-ERROR: sabdl v0.8h, v1.8h, v2.8b
2191 // CHECK-ERROR: error: invalid operand for instruction
2192 // CHECK-ERROR: sabdl v0.4s, v1.4s, v2.4h
2194 // CHECK-ERROR: error: invalid operand for instruction
2195 // CHECK-ERROR: sabdl v0.2d, v1.2d, v2.2s
2198 sabdl2 v0.8h, v1.16h, v2.16b
2199 sabdl2 v0.4s, v1.8s, v2.8h
2200 sabdl2 v0.2d, v1.4d, v2.4s
2202 // CHECK-ERROR: error: invalid operand for instruction
2203 // CHECK-ERROR: sabdl2 v0.8h, v1.16h, v2.16b
2205 // CHECK-ERROR: error: invalid operand for instruction
2206 // CHECK-ERROR: sabdl2 v0.4s, v1.8s, v2.8h
2208 // CHECK-ERROR: error: invalid operand for instruction
2209 // CHECK-ERROR: sabdl2 v0.2d, v1.4d, v2.4s
2212 uabdl v0.8h, v1.8h, v2.8b
2213 uabdl v0.4s, v1.4s, v2.4h
2214 uabdl v0.2d, v1.2d, v2.2s
2216 // CHECK-ERROR: error: invalid operand for instruction
2217 // CHECK-ERROR: uabdl v0.8h, v1.8h, v2.8b
2219 // CHECK-ERROR: error: invalid operand for instruction
2220 // CHECK-ERROR: uabdl v0.4s, v1.4s, v2.4h
2222 // CHECK-ERROR: error: invalid operand for instruction
2223 // CHECK-ERROR: uabdl v0.2d, v1.2d, v2.2s
2226 uabdl2 v0.8h, v1.16h, v2.16b
2227 uabdl2 v0.4s, v1.8s, v2.8h
2228 uabdl2 v0.2d, v1.4d, v2.4s
2230 // CHECK-ERROR: error: invalid operand for instruction
2231 // CHECK-ERROR: uabdl2 v0.8h, v1.16h, v2.16b
2233 // CHECK-ERROR: error: invalid operand for instruction
2234 // CHECK-ERROR: uabdl2 v0.4s, v1.8s, v2.8h
2236 // CHECK-ERROR: error: invalid operand for instruction
2237 // CHECK-ERROR: uabdl2 v0.2d, v1.4d, v2.4s
2240 smlal v0.8h, v1.8h, v2.8b
2241 smlal v0.4s, v1.4s, v2.4h
2242 smlal v0.2d, v1.2d, v2.2s
2244 // CHECK-ERROR: error: invalid operand for instruction
2245 // CHECK-ERROR: smlal v0.8h, v1.8h, v2.8b
2247 // CHECK-ERROR: error: invalid operand for instruction
2248 // CHECK-ERROR: smlal v0.4s, v1.4s, v2.4h
2250 // CHECK-ERROR: error: invalid operand for instruction
2251 // CHECK-ERROR: smlal v0.2d, v1.2d, v2.2s
2254 smlal2 v0.8h, v1.16h, v2.16b
2255 smlal2 v0.4s, v1.8s, v2.8h
2256 smlal2 v0.2d, v1.4d, v2.4s
2258 // CHECK-ERROR: error: invalid operand for instruction
2259 // CHECK-ERROR: smlal2 v0.8h, v1.16h, v2.16b
2261 // CHECK-ERROR: error: invalid operand for instruction
2262 // CHECK-ERROR: smlal2 v0.4s, v1.8s, v2.8h
2264 // CHECK-ERROR: error: invalid operand for instruction
2265 // CHECK-ERROR: smlal2 v0.2d, v1.4d, v2.4s
2268 umlal v0.8h, v1.8h, v2.8b
2269 umlal v0.4s, v1.4s, v2.4h
2270 umlal v0.2d, v1.2d, v2.2s
2272 // CHECK-ERROR: error: invalid operand for instruction
2273 // CHECK-ERROR: umlal v0.8h, v1.8h, v2.8b
2275 // CHECK-ERROR: error: invalid operand for instruction
2276 // CHECK-ERROR: umlal v0.4s, v1.4s, v2.4h
2278 // CHECK-ERROR: error: invalid operand for instruction
2279 // CHECK-ERROR: umlal v0.2d, v1.2d, v2.2s
2282 umlal2 v0.8h, v1.16h, v2.16b
2283 umlal2 v0.4s, v1.8s, v2.8h
2284 umlal2 v0.2d, v1.4d, v2.4s
2286 // CHECK-ERROR: error: invalid operand for instruction
2287 // CHECK-ERROR: umlal2 v0.8h, v1.16h, v2.16b
2289 // CHECK-ERROR: error: invalid operand for instruction
2290 // CHECK-ERROR: umlal2 v0.4s, v1.8s, v2.8h
2292 // CHECK-ERROR: error: invalid operand for instruction
2293 // CHECK-ERROR: umlal2 v0.2d, v1.4d, v2.4s
2296 smlsl v0.8h, v1.8h, v2.8b
2297 smlsl v0.4s, v1.4s, v2.4h
2298 smlsl v0.2d, v1.2d, v2.2s
2300 // CHECK-ERROR: error: invalid operand for instruction
2301 // CHECK-ERROR: smlsl v0.8h, v1.8h, v2.8b
2303 // CHECK-ERROR: error: invalid operand for instruction
2304 // CHECK-ERROR: smlsl v0.4s, v1.4s, v2.4h
2306 // CHECK-ERROR: error: invalid operand for instruction
2307 // CHECK-ERROR: smlsl v0.2d, v1.2d, v2.2s
2310 smlsl2 v0.8h, v1.16h, v2.16b
2311 smlsl2 v0.4s, v1.8s, v2.8h
2312 smlsl2 v0.2d, v1.4d, v2.4s
2314 // CHECK-ERROR: error: invalid operand for instruction
2315 // CHECK-ERROR: smlsl2 v0.8h, v1.16h, v2.16b
2317 // CHECK-ERROR: error: invalid operand for instruction
2318 // CHECK-ERROR: smlsl2 v0.4s, v1.8s, v2.8h
2320 // CHECK-ERROR: error: invalid operand for instruction
2321 // CHECK-ERROR: smlsl2 v0.2d, v1.4d, v2.4s
2324 umlsl v0.8h, v1.8h, v2.8b
2325 umlsl v0.4s, v1.4s, v2.4h
2326 umlsl v0.2d, v1.2d, v2.2s
2328 // CHECK-ERROR: error: invalid operand for instruction
2329 // CHECK-ERROR: umlsl v0.8h, v1.8h, v2.8b
2331 // CHECK-ERROR: error: invalid operand for instruction
2332 // CHECK-ERROR: umlsl v0.4s, v1.4s, v2.4h
2334 // CHECK-ERROR: error: invalid operand for instruction
2335 // CHECK-ERROR: umlsl v0.2d, v1.2d, v2.2s
2338 umlsl2 v0.8h, v1.16h, v2.16b
2339 umlsl2 v0.4s, v1.8s, v2.8h
2340 umlsl2 v0.2d, v1.4d, v2.4s
2342 // CHECK-ERROR: error: invalid operand for instruction
2343 // CHECK-ERROR: umlsl2 v0.8h, v1.16h, v2.16b
2345 // CHECK-ERROR: error: invalid operand for instruction
2346 // CHECK-ERROR: umlsl2 v0.4s, v1.8s, v2.8h
2348 // CHECK-ERROR: error: invalid operand for instruction
2349 // CHECK-ERROR: umlsl2 v0.2d, v1.4d, v2.4s
2352 smull v0.8h, v1.8h, v2.8b
2353 smull v0.4s, v1.4s, v2.4h
2354 smull v0.2d, v1.2d, v2.2s
2356 // CHECK-ERROR: error: invalid operand for instruction
2357 // CHECK-ERROR: smull v0.8h, v1.8h, v2.8b
2359 // CHECK-ERROR: error: invalid operand for instruction
2360 // CHECK-ERROR: smull v0.4s, v1.4s, v2.4h
2362 // CHECK-ERROR: error: invalid operand for instruction
2363 // CHECK-ERROR: smull v0.2d, v1.2d, v2.2s
2366 smull2 v0.8h, v1.16h, v2.16b
2367 smull2 v0.4s, v1.8s, v2.8h
2368 smull2 v0.2d, v1.4d, v2.4s
2370 // CHECK-ERROR: error: invalid operand for instruction
2371 // CHECK-ERROR: smull2 v0.8h, v1.16h, v2.16b
2373 // CHECK-ERROR: error: invalid operand for instruction
2374 // CHECK-ERROR: smull2 v0.4s, v1.8s, v2.8h
2376 // CHECK-ERROR: error: invalid operand for instruction
2377 // CHECK-ERROR: smull2 v0.2d, v1.4d, v2.4s
2380 umull v0.8h, v1.8h, v2.8b
2381 umull v0.4s, v1.4s, v2.4h
2382 umull v0.2d, v1.2d, v2.2s
2384 // CHECK-ERROR: error: invalid operand for instruction
2385 // CHECK-ERROR: umull v0.8h, v1.8h, v2.8b
2387 // CHECK-ERROR: error: invalid operand for instruction
2388 // CHECK-ERROR: umull v0.4s, v1.4s, v2.4h
2390 // CHECK-ERROR: error: invalid operand for instruction
2391 // CHECK-ERROR: umull v0.2d, v1.2d, v2.2s
2394 umull2 v0.8h, v1.16h, v2.16b
2395 umull2 v0.4s, v1.8s, v2.8h
2396 umull2 v0.2d, v1.4d, v2.4s
2398 // CHECK-ERROR: error: invalid operand for instruction
2399 // CHECK-ERROR: umull2 v0.8h, v1.16h, v2.16b
2401 // CHECK-ERROR: error: invalid operand for instruction
2402 // CHECK-ERROR: umull2 v0.4s, v1.8s, v2.8h
2404 // CHECK-ERROR: error: invalid operand for instruction
2405 // CHECK-ERROR: umull2 v0.2d, v1.4d, v2.4s
2408 //------------------------------------------------------------------------------
2410 //------------------------------------------------------------------------------
2412 sqdmlal v0.4s, v1.4s, v2.4h
2413 sqdmlal v0.2d, v1.2d, v2.2s
2415 // CHECK-ERROR: error: invalid operand for instruction
2416 // CHECK-ERROR: sqdmlal v0.4s, v1.4s, v2.4h
2418 // CHECK-ERROR: error: invalid operand for instruction
2419 // CHECK-ERROR: sqdmlal v0.2d, v1.2d, v2.2s
2422 sqdmlal2 v0.4s, v1.8s, v2.8h
2423 sqdmlal2 v0.2d, v1.4d, v2.4s
2425 // CHECK-ERROR: error: invalid operand for instruction
2426 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8s, v2.8h
2428 // CHECK-ERROR: error: invalid operand for instruction
2429 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4d, v2.4s
2432 // Mismatched vector types
2433 sqdmlal v0.8h, v1.8b, v2.8b
2434 sqdmlal2 v0.8h, v1.16b, v2.16b
2436 // CHECK-ERROR: error: invalid operand for instruction
2437 // CHECK-ERROR: sqdmlal v0.8h, v1.8b, v2.8b
2439 // CHECK-ERROR: error: invalid operand for instruction
2440 // CHECK-ERROR: sqdmlal2 v0.8h, v1.16b, v2.16b
2443 sqdmlsl v0.4s, v1.4s, v2.4h
2444 sqdmlsl v0.2d, v1.2d, v2.2s
2446 // CHECK-ERROR: error: invalid operand for instruction
2447 // CHECK-ERROR: sqdmlsl v0.4s, v1.4s, v2.4h
2449 // CHECK-ERROR: error: invalid operand for instruction
2450 // CHECK-ERROR: sqdmlsl v0.2d, v1.2d, v2.2s
2453 sqdmlsl2 v0.4s, v1.8s, v2.8h
2454 sqdmlsl2 v0.2d, v1.4d, v2.4s
2456 // CHECK-ERROR: error: invalid operand for instruction
2457 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8s, v2.8h
2459 // CHECK-ERROR: error: invalid operand for instruction
2460 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4d, v2.4s
2463 // Mismatched vector types
2464 sqdmlsl v0.8h, v1.8b, v2.8b
2465 sqdmlsl2 v0.8h, v1.16b, v2.16b
2467 // CHECK-ERROR: error: invalid operand for instruction
2468 // CHECK-ERROR: sqdmlsl v0.8h, v1.8b, v2.8b
2470 // CHECK-ERROR: error: invalid operand for instruction
2471 // CHECK-ERROR: sqdmlsl2 v0.8h, v1.16b, v2.16b
2475 sqdmull v0.4s, v1.4s, v2.4h
2476 sqdmull v0.2d, v1.2d, v2.2s
2478 // CHECK-ERROR: error: invalid operand for instruction
2479 // CHECK-ERROR: sqdmull v0.4s, v1.4s, v2.4h
2481 // CHECK-ERROR: error: invalid operand for instruction
2482 // CHECK-ERROR: sqdmull v0.2d, v1.2d, v2.2s
2485 sqdmull2 v0.4s, v1.8s, v2.8h
2486 sqdmull2 v0.2d, v1.4d, v2.4s
2488 // CHECK-ERROR: error: invalid operand for instruction
2489 // CHECK-ERROR: sqdmull2 v0.4s, v1.8s, v2.8h
2491 // CHECK-ERROR: error: invalid operand for instruction
2492 // CHECK-ERROR: sqdmull2 v0.2d, v1.4d, v2.4s
2495 // Mismatched vector types
2496 sqdmull v0.8h, v1.8b, v2.8b
2497 sqdmull2 v0.8h, v1.16b, v2.16b
2499 // CHECK-ERROR: error: invalid operand for instruction
2500 // CHECK-ERROR: sqdmull v0.8h, v1.8b, v2.8b
2502 // CHECK-ERROR: error: invalid operand for instruction
2503 // CHECK-ERROR: sqdmull2 v0.8h, v1.16b, v2.16b
2507 //------------------------------------------------------------------------------
2509 //------------------------------------------------------------------------------
2511 pmull v0.8h, v1.8h, v2.8b
2513 // CHECK-ERROR: error: invalid operand for instruction
2514 // CHECK-ERROR: pmull v0.8h, v1.8h, v2.8b
2517 // Mismatched vector types
2518 pmull v0.4s, v1.4h, v2.4h
2519 pmull v0.2d, v1.2s, v2.2s
2521 // CHECK-ERROR: error: invalid operand for instruction
2522 // CHECK-ERROR: pmull v0.4s, v1.4h, v2.4h
2524 // CHECK-ERROR: error: invalid operand for instruction
2525 // CHECK-ERROR: pmull v0.2d, v1.2s, v2.2s
2529 pmull2 v0.8h, v1.16h, v2.16b
2531 // CHECK-ERROR: error: invalid operand for instruction
2532 // CHECK-ERROR: pmull2 v0.8h, v1.16h, v2.16b
2535 // Mismatched vector types
2536 pmull2 v0.4s, v1.8h v2.8h
2537 pmull2 v0.2d, v1.4s, v2.4s
2539 // CHECK-ERROR: error: expected comma before next operand
2540 // CHECK-ERROR: pmull2 v0.4s, v1.8h v2.8h
2542 // CHECK-ERROR: error: invalid operand for instruction
2543 // CHECK-ERROR: pmull2 v0.2d, v1.4s, v2.4s
2546 //------------------------------------------------------------------------------
2548 //------------------------------------------------------------------------------
2550 saddw v0.8h, v1.8h, v2.8h
2551 saddw v0.4s, v1.4s, v2.4s
2552 saddw v0.2d, v1.2d, v2.2d
2554 // CHECK-ERROR: error: invalid operand for instruction
2555 // CHECK-ERROR: saddw v0.8h, v1.8h, v2.8h
2557 // CHECK-ERROR: error: invalid operand for instruction
2558 // CHECK-ERROR: saddw v0.4s, v1.4s, v2.4s
2560 // CHECK-ERROR: error: invalid operand for instruction
2561 // CHECK-ERROR: saddw v0.2d, v1.2d, v2.2d
2564 saddw2 v0.8h, v1.8h, v2.16h
2565 saddw2 v0.4s, v1.4s, v2.8s
2566 saddw2 v0.2d, v1.2d, v2.4d
2568 // CHECK-ERROR: error: invalid operand for instruction
2569 // CHECK-ERROR: saddw2 v0.8h, v1.8h, v2.16h
2571 // CHECK-ERROR: error: invalid operand for instruction
2572 // CHECK-ERROR: saddw2 v0.4s, v1.4s, v2.8s
2574 // CHECK-ERROR: error: invalid operand for instruction
2575 // CHECK-ERROR: saddw2 v0.2d, v1.2d, v2.4d
2578 uaddw v0.8h, v1.8h, v2.8h
2579 uaddw v0.4s, v1.4s, v2.4s
2580 uaddw v0.2d, v1.2d, v2.2d
2582 // CHECK-ERROR: error: invalid operand for instruction
2583 // CHECK-ERROR: uaddw v0.8h, v1.8h, v2.8h
2585 // CHECK-ERROR: error: invalid operand for instruction
2586 // CHECK-ERROR: uaddw v0.4s, v1.4s, v2.4s
2588 // CHECK-ERROR: error: invalid operand for instruction
2589 // CHECK-ERROR: uaddw v0.2d, v1.2d, v2.2d
2592 uaddw2 v0.8h, v1.8h, v2.16h
2593 uaddw2 v0.4s, v1.4s, v2.8s
2594 uaddw2 v0.2d, v1.2d, v2.4d
2596 // CHECK-ERROR: error: invalid operand for instruction
2597 // CHECK-ERROR: uaddw2 v0.8h, v1.8h, v2.16h
2599 // CHECK-ERROR: error: invalid operand for instruction
2600 // CHECK-ERROR: uaddw2 v0.4s, v1.4s, v2.8s
2602 // CHECK-ERROR: error: invalid operand for instruction
2603 // CHECK-ERROR: uaddw2 v0.2d, v1.2d, v2.4d
2606 ssubw v0.8h, v1.8h, v2.8h
2607 ssubw v0.4s, v1.4s, v2.4s
2608 ssubw v0.2d, v1.2d, v2.2d
2610 // CHECK-ERROR: error: invalid operand for instruction
2611 // CHECK-ERROR: ssubw v0.8h, v1.8h, v2.8h
2613 // CHECK-ERROR: error: invalid operand for instruction
2614 // CHECK-ERROR: ssubw v0.4s, v1.4s, v2.4s
2616 // CHECK-ERROR: error: invalid operand for instruction
2617 // CHECK-ERROR: ssubw v0.2d, v1.2d, v2.2d
2620 ssubw2 v0.8h, v1.8h, v2.16h
2621 ssubw2 v0.4s, v1.4s, v2.8s
2622 ssubw2 v0.2d, v1.2d, v2.4d
2624 // CHECK-ERROR: error: invalid operand for instruction
2625 // CHECK-ERROR: ssubw2 v0.8h, v1.8h, v2.16h
2627 // CHECK-ERROR: error: invalid operand for instruction
2628 // CHECK-ERROR: ssubw2 v0.4s, v1.4s, v2.8s
2630 // CHECK-ERROR: error: invalid operand for instruction
2631 // CHECK-ERROR: ssubw2 v0.2d, v1.2d, v2.4d
2634 usubw v0.8h, v1.8h, v2.8h
2635 usubw v0.4s, v1.4s, v2.4s
2636 usubw v0.2d, v1.2d, v2.2d
2638 // CHECK-ERROR: error: invalid operand for instruction
2639 // CHECK-ERROR: usubw v0.8h, v1.8h, v2.8h
2641 // CHECK-ERROR: error: invalid operand for instruction
2642 // CHECK-ERROR: usubw v0.4s, v1.4s, v2.4s
2644 // CHECK-ERROR: error: invalid operand for instruction
2645 // CHECK-ERROR: usubw v0.2d, v1.2d, v2.2d
2648 usubw2 v0.8h, v1.8h, v2.16h
2649 usubw2 v0.4s, v1.4s, v2.8s
2650 usubw2 v0.2d, v1.2d, v2.4d
2652 // CHECK-ERROR: error: invalid operand for instruction
2653 // CHECK-ERROR: usubw2 v0.8h, v1.8h, v2.16h
2655 // CHECK-ERROR: error: invalid operand for instruction
2656 // CHECK-ERROR: usubw2 v0.4s, v1.4s, v2.8s
2658 // CHECK-ERROR: error: invalid operand for instruction
2659 // CHECK-ERROR: usubw2 v0.2d, v1.2d, v2.4d
2662 //------------------------------------------------------------------------------
2664 //------------------------------------------------------------------------------
2666 addhn v0.8b, v1.8h, v2.8d
2667 addhn v0.4h, v1.4s, v2.4h
2668 addhn v0.2s, v1.2d, v2.2s
2670 // CHECK-ERROR: error: invalid operand for instruction
2671 // CHECK-ERROR: addhn v0.8b, v1.8h, v2.8d
2673 // CHECK-ERROR: error: invalid operand for instruction
2674 // CHECK-ERROR: addhn v0.4h, v1.4s, v2.4h
2676 // CHECK-ERROR: error: invalid operand for instruction
2677 // CHECK-ERROR: addhn v0.2s, v1.2d, v2.2s
2680 addhn2 v0.16b, v1.8h, v2.8b
2681 addhn2 v0.8h, v1.4s, v2.4h
2682 addhn2 v0.4s, v1.2d, v2.2s
2684 // CHECK-ERROR: error: invalid operand for instruction
2685 // CHECK-ERROR: addhn2 v0.16b, v1.8h, v2.8b
2687 // CHECK-ERROR: error: invalid operand for instruction
2688 // CHECK-ERROR: addhn2 v0.8h, v1.4s, v2.4h
2690 // CHECK-ERROR: error: invalid operand for instruction
2691 // CHECK-ERROR: addhn2 v0.4s, v1.2d, v2.2s
2694 raddhn v0.8b, v1.8h, v2.8b
2695 raddhn v0.4h, v1.4s, v2.4h
2696 raddhn v0.2s, v1.2d, v2.2s
2698 // CHECK-ERROR: error: invalid operand for instruction
2699 // CHECK-ERROR: raddhn v0.8b, v1.8h, v2.8b
2701 // CHECK-ERROR: error: invalid operand for instruction
2702 // CHECK-ERROR: raddhn v0.4h, v1.4s, v2.4h
2704 // CHECK-ERROR: error: invalid operand for instruction
2705 // CHECK-ERROR: raddhn v0.2s, v1.2d, v2.2s
2708 raddhn2 v0.16b, v1.8h, v2.8b
2709 raddhn2 v0.8h, v1.4s, v2.4h
2710 raddhn2 v0.4s, v1.2d, v2.2s
2712 // CHECK-ERROR: error: invalid operand for instruction
2713 // CHECK-ERROR: raddhn2 v0.16b, v1.8h, v2.8b
2715 // CHECK-ERROR: error: invalid operand for instruction
2716 // CHECK-ERROR: raddhn2 v0.8h, v1.4s, v2.4h
2718 // CHECK-ERROR: error: invalid operand for instruction
2719 // CHECK-ERROR: raddhn2 v0.4s, v1.2d, v2.2s
2722 rsubhn v0.8b, v1.8h, v2.8b
2723 rsubhn v0.4h, v1.4s, v2.4h
2724 rsubhn v0.2s, v1.2d, v2.2s
2726 // CHECK-ERROR: error: invalid operand for instruction
2727 // CHECK-ERROR: rsubhn v0.8b, v1.8h, v2.8b
2729 // CHECK-ERROR: error: invalid operand for instruction
2730 // CHECK-ERROR: rsubhn v0.4h, v1.4s, v2.4h
2732 // CHECK-ERROR: error: invalid operand for instruction
2733 // CHECK-ERROR: rsubhn v0.2s, v1.2d, v2.2s
2736 rsubhn2 v0.16b, v1.8h, v2.8b
2737 rsubhn2 v0.8h, v1.4s, v2.4h
2738 rsubhn2 v0.4s, v1.2d, v2.2s
2740 // CHECK-ERROR: error: invalid operand for instruction
2741 // CHECK-ERROR: rsubhn2 v0.16b, v1.8h, v2.8b
2743 // CHECK-ERROR: error: invalid operand for instruction
2744 // CHECK-ERROR: rsubhn2 v0.8h, v1.4s, v2.4h
2746 // CHECK-ERROR: error: invalid operand for instruction
2747 // CHECK-ERROR: rsubhn2 v0.4s, v1.2d, v2.2s
2750 //----------------------------------------------------------------------
2751 // Scalar Reduce Add Pairwise (Integer)
2752 //----------------------------------------------------------------------
2753 // invalid vector types
2757 // CHECK-ERROR: error: invalid operand for instruction
2758 // CHECK-ERROR: addp s0, d1.2d
2760 // CHECK-ERROR: error: invalid operand for instruction
2761 // CHECK-ERROR: addp d0, d1.2s
2764 //----------------------------------------------------------------------
2765 // Scalar Reduce Add Pairwise (Floating Point)
2766 //----------------------------------------------------------------------
2767 // invalid vector types
2771 // CHECK-ERROR: error: invalid operand for instruction
2772 // CHECK-ERROR: faddp s0, d1.2d
2774 // CHECK-ERROR: error: invalid operand for instruction
2775 // CHECK-ERROR: faddp d0, d1.2s
2778 //----------------------------------------------------------------------
2779 // Scalar Reduce Maximum Pairwise (Floating Point)
2780 //----------------------------------------------------------------------
2781 // mismatched and invalid vector types
2786 // CHECK-ERROR: error: invalid operand for instruction
2787 // CHECK-ERROR: fmaxp s0, v1.2d
2789 // CHECK-ERROR: error: invalid operand for instruction
2790 // CHECK-ERROR: fmaxp d31, v2.2s
2792 // CHECK-ERROR: error: invalid operand for instruction
2793 // CHECK-ERROR: fmaxp h3, v2.2s
2797 //----------------------------------------------------------------------
2798 // Scalar Reduce Minimum Pairwise (Floating Point)
2799 //----------------------------------------------------------------------
2800 // mismatched and invalid vector types
2805 // CHECK-ERROR: error: invalid operand for instruction
2806 // CHECK-ERROR: fminp s0, v1.4h
2808 // CHECK-ERROR: error: invalid operand for instruction
2809 // CHECK-ERROR: fminp d31, v2.8h
2811 // CHECK-ERROR: error: invalid operand for instruction
2812 // CHECK-ERROR: fminp b3, v2.2s
2816 //----------------------------------------------------------------------
2817 // Scalar Reduce maxNum Pairwise (Floating Point)
2818 //----------------------------------------------------------------------
2819 // mismatched and invalid vector types
2822 fmaxnmp v1.2s, v2.2s
2824 // CHECK-ERROR: error: invalid operand for instruction
2825 // CHECK-ERROR: fmaxnmp s0, v1.8b
2827 // CHECK-ERROR: error: invalid operand for instruction
2828 // CHECK-ERROR: fmaxnmp d31, v2.16b
2830 // CHECK-ERROR: error: too few operands for instruction
2831 // CHECK-ERROR: fmaxnmp v1.2s, v2.2s
2834 //----------------------------------------------------------------------
2835 // Scalar Reduce minNum Pairwise (Floating Point)
2836 //----------------------------------------------------------------------
2837 // mismatched and invalid vector types
2840 fminnmp v1.4s, v2.2d
2842 // CHECK-ERROR: error: invalid operand for instruction
2843 // CHECK-ERROR: fminnmp s0, v1.2d
2845 // CHECK-ERROR: error: invalid operand for instruction
2846 // CHECK-ERROR: fminnmp d31, v2.4s
2848 // CHECK-ERROR: error: invalid operand for instruction
2849 // CHECK-ERROR: fminnmp v1.4s, v2.2d