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
216 //----------------------------------------------------------------------
217 // Scalar Floating-point Reciprocal Estimate
218 //----------------------------------------------------------------------
223 // CHECK-ERROR: error: invalid operand for instruction
224 // CHECK-ERROR: frecpe s19, h14
226 // CHECK-ERROR: error: invalid operand for instruction
227 // CHECK-ERROR: frecpe d13, s13
230 //----------------------------------------------------------------------
231 // Scalar Floating-point Reciprocal Exponent
232 //----------------------------------------------------------------------
237 // CHECK-ERROR: error: invalid operand for instruction
238 // CHECK-ERROR: frecpx s18, h10
240 // CHECK-ERROR: error: invalid operand for instruction
241 // CHECK-ERROR: frecpx d16, s19
244 //----------------------------------------------------------------------
245 // Scalar Floating-point Reciprocal Square Root Estimate
246 //----------------------------------------------------------------------
251 // CHECK-ERROR: error: invalid operand for instruction
252 // CHECK-ERROR: frsqrte s22, h13
254 // CHECK-ERROR: error: invalid operand for instruction
255 // CHECK-ERROR: frsqrte d21, s12
258 //----------------------------------------------------------------------
259 // Vector Move Immediate - bytemask, per doubleword
260 //---------------------------------------------------------------------
261 // invalid bytemask (0x00 or 0xff)
262 movi v0.2d, #0x10ff00ff00ff00ff
264 // CHECK:ERROR: error: invalid operand for instruction
265 // CHECK:ERROR: movi v0.2d, #0x10ff00ff00ff00ff
268 //----------------------------------------------------------------------
269 // Vector Move Immediate - bytemask, one doubleword
270 //----------------------------------------------------------------------
271 // invalid bytemask (0x00 or 0xff)
272 movi v0.2d, #0xffff00ff001f00ff
274 // CHECK:ERROR: error: invalid operand for instruction
275 // CHECK:ERROR: movi v0.2d, #0xffff00ff001f00ff
277 //----------------------------------------------------------------------
278 // Vector Floating Point Move Immediate
279 //----------------------------------------------------------------------
280 // invalid vector type (2s, 4s, 2d)
283 // CHECK:ERROR: error: invalid operand for instruction
284 // CHECK:ERROR: fmov v0.4h, #1.0
287 //----------------------------------------------------------------------
288 // Vector Move - register
289 //----------------------------------------------------------------------
290 // invalid vector type (8b, 16b)
292 // CHECK:ERROR: error: invalid operand for instruction
293 // CHECK:ERROR: mov v0.2s, v31.8b
296 //----------------------------------------------------------------------
297 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
298 //----------------------------------------------------------------------
300 // Mismatched and invalid vector types (2d)
301 saba v0.16b, v1.8b, v2.8b
302 uaba v0.2d, v1.2d, v2.2d
304 // CHECK-ERROR: error: invalid operand for instruction
305 // CHECK-ERROR: saba v0.16b, v1.8b, v2.8b
307 // CHECK-ERROR: error: invalid operand for instruction
308 // CHECK-ERROR: uaba v0.2d, v1.2d, v2.2d
311 //----------------------------------------------------------------------
312 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
313 // Vector Absolute Difference (Signed, Unsigned)
315 // Mismatched and invalid vector types (2d)
316 uaba v0.16b, v1.8b, v2.8b
317 saba v0.2d, v1.2d, v2.2d
318 uabd v0.4s, v1.2s, v2.2s
319 sabd v0.4h, v1.8h, v8.8h
321 // CHECK-ERROR: error: invalid operand for instruction
322 // CHECK-ERROR: uaba v0.16b, v1.8b, v2.8b
324 // CHECK-ERROR: error: invalid operand for instruction
325 // CHECK-ERROR: saba v0.2d, v1.2d, v2.2d
327 // CHECK-ERROR: error: invalid operand for instruction
328 // CHECK-ERROR: uabd v0.4s, v1.2s, v2.2s
330 // CHECK-ERROR: error: invalid operand for instruction
331 // CHECK-ERROR: sabd v0.4h, v1.8h, v8.8h
334 //----------------------------------------------------------------------
335 // Vector Absolute Difference (Floating Point)
336 //----------------------------------------------------------------------
337 // Mismatched and invalid vector types
338 fabd v0.2s, v1.4s, v2.2d
339 fabd v0.4h, v1.4h, v2.4h
341 // CHECK-ERROR: error: invalid operand for instruction
342 // CHECK-ERROR: fabd v0.2s, v1.4s, v2.2d
344 // CHECK-ERROR: error: invalid operand for instruction
345 // CHECK-ERROR: fabd v0.4h, v1.4h, v2.4h
347 //----------------------------------------------------------------------
348 // Vector Multiply (Polynomial)
349 //----------------------------------------------------------------------
351 // Mismatched and invalid vector types
352 pmul v0.8b, v1.8b, v2.16b
353 pmul v0.2s, v1.2s, v2.2s
355 // CHECK-ERROR: error: invalid operand for instruction
356 // CHECK-ERROR: pmul v0.8b, v1.8b, v2.16b
358 // CHECK-ERROR: error: invalid operand for instruction
359 // CHECK-ERROR: pmul v0.2s, v1.2s, v2.2s
362 //----------------------------------------------------------------------
363 // Scalar Integer Add and Sub
364 //----------------------------------------------------------------------
366 // Mismatched registers
370 // CHECK-ERROR: error: invalid operand for instruction
371 // CHECK-ERROR: add d0, s1, d2
373 // CHECK-ERROR: error: invalid operand for instruction
374 // CHECK-ERROR: sub s1, d1, d2
377 //----------------------------------------------------------------------
378 // Vector Reciprocal Step (Floating Point)
379 //----------------------------------------------------------------------
381 // Mismatched and invalid vector types
382 frecps v0.4s, v1.2d, v2.4s
383 frecps v0.8h, v1.8h, v2.8h
385 // CHECK-ERROR: error: invalid operand for instruction
386 // CHECK-ERROR: frecps v0.4s, v1.2d, v2.4s
388 // CHECK-ERROR: error: invalid operand for instruction
389 // CHECK-ERROR: frecps v0.8h, v1.8h, v2.8h
392 //----------------------------------------------------------------------
393 // Vector Reciprocal Square Root Step (Floating Point)
394 //----------------------------------------------------------------------
396 // Mismatched and invalid vector types
397 frsqrts v0.2d, v1.2d, v2.2s
398 frsqrts v0.4h, v1.4h, v2.4h
400 // CHECK-ERROR: error: invalid operand for instruction
401 // CHECK-ERROR: frsqrts v0.2d, v1.2d, v2.2s
403 // CHECK-ERROR: error: invalid operand for instruction
404 // CHECK-ERROR: frsqrts v0.4h, v1.4h, v2.4h
408 //----------------------------------------------------------------------
409 // Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
410 //----------------------------------------------------------------------
412 // Mismatched and invalid vector types
413 facge v0.2d, v1.2s, v2.2d
414 facge v0.4h, v1.4h, v2.4h
415 facle v0.8h, v1.4h, v2.4h
417 // CHECK-ERROR: error: invalid operand for instruction
418 // CHECK-ERROR: facge v0.2d, v1.2s, v2.2d
420 // CHECK-ERROR: error: invalid operand for instruction
421 // CHECK-ERROR: facge v0.4h, v1.4h, v2.4h
423 // CHECK-ERROR: error: invalid operand for instruction
424 // CHECK-ERROR: facle v0.8h, v1.4h, v2.4h
426 //----------------------------------------------------------------------
427 // Vector Absolute Compare Mask Less Than (Floating Point)
428 //----------------------------------------------------------------------
430 // Mismatched and invalid vector types
431 facgt v0.2d, v1.2d, v2.4s
432 facgt v0.8h, v1.8h, v2.8h
433 faclt v0.8b, v1.8b, v2.8b
435 // CHECK-ERROR: error: invalid operand for instruction
436 // CHECK-ERROR: facgt v0.2d, v1.2d, v2.4s
438 // CHECK-ERROR: error: invalid operand for instruction
439 // CHECK-ERROR: facgt v0.8h, v1.8h, v2.8h
441 // CHECK-ERROR: error: invalid operand for instruction
442 // CHECK-ERROR: faclt v0.8b, v1.8b, v2.8b
446 //----------------------------------------------------------------------
447 // Vector Compare Mask Equal (Integer)
448 //----------------------------------------------------------------------
450 // Mismatched vector types
451 cmeq c0.2d, v1.2d, v2.2s
453 // CHECK-ERROR: error: invalid operand for instruction
454 // CHECK-ERROR: cmeq c0.2d, v1.2d, v2.2s
457 //----------------------------------------------------------------------
458 // Vector Compare Mask Higher or Same (Unsigned Integer)
459 // Vector Compare Mask Less or Same (Unsigned Integer)
460 // CMLS is alias for CMHS with operands reversed.
461 //----------------------------------------------------------------------
463 // Mismatched vector types
464 cmhs c0.4h, v1.8b, v2.8b
465 cmls c0.16b, v1.16b, v2.2d
467 // CHECK-ERROR: error: invalid operand for instruction
468 // CHECK-ERROR: cmhs c0.4h, v1.8b, v2.8b
470 // CHECK-ERROR: error: invalid operand for instruction
471 // CHECK-ERROR: cmls c0.16b, v1.16b, v2.2d
474 //----------------------------------------------------------------------
475 // Vector Compare Mask Greater Than or Equal (Integer)
476 // Vector Compare Mask Less Than or Equal (Integer)
477 // CMLE is alias for CMGE with operands reversed.
478 //----------------------------------------------------------------------
480 // Mismatched vector types
481 cmge c0.8h, v1.8b, v2.8b
482 cmle c0.4h, v1.2s, v2.2s
484 // CHECK-ERROR: error: invalid operand for instruction
485 // CHECK-ERROR: cmge c0.8h, v1.8b, v2.8b
487 // CHECK-ERROR: error: invalid operand for instruction
488 // CHECK-ERROR: cmle c0.4h, v1.2s, v2.2s
491 //----------------------------------------------------------------------
492 // Vector Compare Mask Higher (Unsigned Integer)
493 // Vector Compare Mask Lower (Unsigned Integer)
494 // CMLO is alias for CMHI with operands reversed.
495 //----------------------------------------------------------------------
497 // Mismatched vector types
498 cmhi c0.4s, v1.4s, v2.16b
499 cmlo c0.8b, v1.8b, v2.2s
501 // CHECK-ERROR: error: invalid operand for instruction
502 // CHECK-ERROR: cmhi c0.4s, v1.4s, v2.16b
504 // CHECK-ERROR: error: invalid operand for instruction
505 // CHECK-ERROR: cmlo c0.8b, v1.8b, v2.2s
508 //----------------------------------------------------------------------
509 // Vector Compare Mask Greater Than (Integer)
510 // Vector Compare Mask Less Than (Integer)
511 // CMLT is alias for CMGT with operands reversed.
512 //----------------------------------------------------------------------
514 // Mismatched vector types
515 cmgt c0.8b, v1.4s, v2.16b
516 cmlt c0.8h, v1.16b, v2.4s
518 // CHECK-ERROR: error: invalid operand for instruction
519 // CHECK-ERROR: cmgt c0.8b, v1.4s, v2.16b
521 // CHECK-ERROR: error: invalid operand for instruction
522 // CHECK-ERROR: cmlt c0.8h, v1.16b, v2.4s
525 //----------------------------------------------------------------------
526 // Vector Compare Mask Bitwise Test (Integer)
527 //----------------------------------------------------------------------
529 // Mismatched vector types
530 cmtst c0.16b, v1.16b, v2.4s
532 // CHECK-ERROR: error: invalid operand for instruction
533 // CHECK-ERROR: cmtst c0.16b, v1.16b, v2.4s
536 //----------------------------------------------------------------------
537 // Vector Compare Mask Equal (Floating Point)
538 //----------------------------------------------------------------------
540 // Mismatched and invalid vector types
541 fcmeq v0.2d, v1.2s, v2.2d
542 fcmeq v0.16b, v1.16b, v2.16b
543 fcmeq v0.8b, v1.4h, v2.4h
545 // CHECK-ERROR: error: invalid operand for instruction
546 // CHECK-ERROR: fcmeq v0.2d, v1.2s, v2.2d
548 // CHECK-ERROR: error: invalid operand for instruction
549 // CHECK-ERROR: fcmeq v0.16b, v1.16b, v2.16b
551 // CHECK-ERROR: error: invalid operand for instruction
552 // CHECK-ERROR: fcmeq v0.8b, v1.4h, v2.4h
555 //----------------------------------------------------------------------
556 // Vector Compare Mask Greater Than Or Equal (Floating Point)
557 // Vector Compare Mask Less Than Or Equal (Floating Point)
558 // FCMLE is alias for FCMGE with operands reversed.
559 //----------------------------------------------------------------------
561 // Mismatched and invalid vector types
562 fcmge v31.4s, v29.2s, v28.4s
563 fcmge v3.8b, v8.2s, v12.2s
564 fcmle v17.8h, v15.2d, v13.2d
566 // CHECK-ERROR: error: invalid operand for instruction
567 // CHECK-ERROR: fcmge v31.4s, v29.2s, v28.4s
569 // CHECK-ERROR: error: invalid operand for instruction
570 // CHECK-ERROR: fcmge v3.8b, v8.2s, v12.2s
572 // CHECK-ERROR: error: invalid operand for instruction
573 // CHECK-ERROR: fcmle v17.8h, v15.2d, v13.2d
576 //----------------------------------------------------------------------
577 // Vector Compare Mask Greater Than (Floating Point)
578 // Vector Compare Mask Less Than (Floating Point)
579 // FCMLT is alias for FCMGT with operands reversed.
580 //----------------------------------------------------------------------
582 // Mismatched and invalid vector types
583 fcmgt v0.2d, v31.2s, v16.2s
584 fcmgt v4.4s, v7.4s, v15.4h
585 fcmlt v29.2d, v5.2d, v2.16b
587 // CHECK-ERROR: error: invalid operand for instruction
588 // CHECK-ERROR: fcmgt v0.2d, v31.2s, v16.2s
590 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
591 // CHECK-ERROR: fcmgt v4.4s, v7.4s, v15.4h
593 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
594 // CHECK-ERROR: fcmlt v29.2d, v5.2d, v2.16b
597 //----------------------------------------------------------------------
598 // Vector Compare Mask Equal to Zero (Integer)
599 //----------------------------------------------------------------------
600 // Mismatched vector types and invalid imm
601 // Mismatched vector types
602 cmeq c0.2d, v1.2s, #0
603 cmeq c0.2d, v1.2d, #1
605 // CHECK-ERROR: error: invalid operand for instruction
606 // CHECK-ERROR: cmeq c0.2d, v1.2s, #0
608 // CHECK-ERROR: error: invalid operand for instruction
609 // CHECK-ERROR: cmeq c0.2d, v1.2d, #1
612 //----------------------------------------------------------------------
613 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
614 //----------------------------------------------------------------------
615 // Mismatched vector types and invalid imm
616 cmge c0.8h, v1.8b, #0
617 cmge c0.4s, v1.4s, #-1
619 // CHECK-ERROR: error: invalid operand for instruction
620 // CHECK-ERROR: cmge c0.8h, v1.8b, #0
622 // CHECK-ERROR: error: invalid operand for instruction
623 // CHECK-ERROR: cmge c0.4s, v1.4s, #-1
626 //----------------------------------------------------------------------
627 // Vector Compare Mask Greater Than Zero (Signed Integer)
628 //----------------------------------------------------------------------
629 // Mismatched vector types and invalid imm
630 cmgt c0.8b, v1.4s, #0
631 cmgt c0.8b, v1.8b, #-255
633 // CHECK-ERROR: error: invalid operand for instruction
634 // CHECK-ERROR: cmgt c0.8b, v1.4s, #0
636 // CHECK-ERROR: error: invalid operand for instruction
637 // CHECK-ERROR: cmgt c0.8b, v1.8b, #-255
640 //----------------------------------------------------------------------
641 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
642 //----------------------------------------------------------------------
643 // Mismatched vector types and invalid imm
644 cmle c0.4h, v1.2s, #0
645 cmle c0.16b, v1.16b, #16
647 // CHECK-ERROR: error: invalid operand for instruction
648 // CHECK-ERROR: cmle c0.4h, v1.2s, #0
650 // CHECK-ERROR: error: invalid operand for instruction
651 // CHECK-ERROR: cmle c0.16b, v1.16b, #16
653 //----------------------------------------------------------------------
654 // Vector Compare Mask Less Than Zero (Signed Integer)
655 //----------------------------------------------------------------------
656 // Mismatched vector types and invalid imm
657 cmlt c0.8h, v1.16b, #0
658 cmlt c0.8h, v1.8h, #-15
660 // CHECK-ERROR: error: invalid operand for instruction
661 // CHECK-ERROR: cmlt c0.8h, v1.16b, #0
663 // CHECK-ERROR: error: invalid operand for instruction
664 // CHECK-ERROR: cmlt c0.8h, v1.8h, #-15
667 //----------------------------------------------------------------------
668 // Vector Compare Mask Equal to Zero (Floating Point)
669 //----------------------------------------------------------------------
671 // Mismatched and invalid vector types, invalid imm
672 fcmeq v0.2d, v1.2s, #0.0
673 fcmeq v0.16b, v1.16b, #0.0
674 fcmeq v0.8b, v1.4h, #1.0
675 fcmeq v0.8b, v1.4h, #1
677 // CHECK-ERROR: error: invalid operand for instruction
678 // CHECK-ERROR: fcmeq v0.2d, v1.2s, #0.0
680 // CHECK-ERROR: error: invalid operand for instruction
681 // CHECK-ERROR: fcmeq v0.16b, v1.16b, #0.0
683 // CHECK-ERROR: error: invalid operand for instruction
684 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1.0
686 // CHECK-ERROR: error: Expected floating-point immediate
687 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1
689 //----------------------------------------------------------------------
690 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
691 //----------------------------------------------------------------------
693 // Mismatched and invalid vector types, invalid imm
694 fcmge v31.4s, v29.2s, #0.0
695 fcmge v3.8b, v8.2s, #0.0
696 fcmle v17.8h, v15.2d, #-1.0
697 fcmle v17.8h, v15.2d, #0
699 // CHECK-ERROR: error: invalid operand for instruction
700 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0
702 // CHECK-ERROR: error: invalid operand for instruction
703 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0
705 // CHECK-ERROR: error: invalid operand for instruction
706 // CHECK-ERROR: fcmle v17.8h, v15.2d, #-1.0
708 // CHECK-ERROR: error: Expected floating-point immediate
709 // CHECK-ERROR: fcmle v17.8h, v15.2d, #0
711 //----------------------------------------------------------------------
712 // Vector Compare Mask Greater Than Zero (Floating Point)
713 //----------------------------------------------------------------------
714 // Mismatched and invalid vector types, invalid imm
715 fcmgt v0.2d, v31.2s, #0.0
716 fcmgt v4.4s, v7.4h, #0.0
717 fcmlt v29.2d, v5.2d, #255.0
718 fcmlt v29.2d, v5.2d, #255
720 // CHECK-ERROR: error: invalid operand for instruction
721 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0
723 // CHECK-ERROR: error: invalid operand for instruction
724 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0
726 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
727 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255.0
729 // CHECK-ERROR: error: Expected floating-point immediate
730 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255
733 //----------------------------------------------------------------------
734 // Vector Compare Mask Less Than or Equal To Zero (Floating Point)
735 //----------------------------------------------------------------------
736 // Mismatched and invalid vector types, invalid imm
737 fcmge v31.4s, v29.2s, #0.0
738 fcmge v3.8b, v8.2s, #0.0
739 fcmle v17.2d, v15.2d, #15.0
740 fcmle v17.2d, v15.2d, #15
742 // CHECK-ERROR: error: invalid operand for instruction
743 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0
745 // CHECK-ERROR: error: invalid operand for instruction
746 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0
748 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
749 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15.0
751 // CHECK-ERROR: error: Expected floating-point immediate
752 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15
755 //----------------------------------------------------------------------
756 // Vector Compare Mask Less Than Zero (Floating Point)
757 //----------------------------------------------------------------------
758 // Mismatched and invalid vector types, invalid imm
759 fcmgt v0.2d, v31.2s, #0.0
760 fcmgt v4.4s, v7.4h, #0.0
761 fcmlt v29.2d, v5.2d, #16.0
762 fcmlt v29.2d, v5.2d, #2
764 // CHECK-ERROR: error: invalid operand for instruction
765 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0
767 // CHECK-ERROR: error: invalid operand for instruction
768 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0
770 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type
771 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #16.0
773 // CHECK-ERROR: error: Expected floating-point immediate
774 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #2
777 /-----------------------------------------------------------------------
778 // Vector Integer Halving Add (Signed)
779 // Vector Integer Halving Add (Unsigned)
780 // Vector Integer Halving Sub (Signed)
781 // Vector Integer Halving Sub (Unsigned)
782 //----------------------------------------------------------------------
783 // Mismatched and invalid vector types (2d)
784 shadd v0.2d, v1.2d, v2.2d
785 uhadd v4.2s, v5.2s, v5.4h
786 shsub v11.4h, v12.8h, v13.4h
787 uhsub v31.16b, v29.8b, v28.8b
789 // CHECK-ERROR: error: invalid operand for instruction
790 // CHECK-ERROR: shadd v0.2d, v1.2d, v2.2d
792 // CHECK-ERROR: error: invalid operand for instruction
793 // CHECK-ERROR: uhadd v4.2s, v5.2s, v5.4h
795 // CHECK-ERROR: error: invalid operand for instruction
796 // CHECK-ERROR: shsub v11.4h, v12.8h, v13.4h
798 // CHECK-ERROR: error: invalid operand for instruction
799 // CHECK-ERROR: uhsub v31.16b, v29.8b, v28.8b
802 //----------------------------------------------------------------------
803 // Vector Integer Rouding Halving Add (Signed)
804 // Vector Integer Rouding Halving Add (Unsigned)
805 //----------------------------------------------------------------------
807 // Mismatched and invalid vector types (2d)
808 srhadd v0.2s, v1.2s, v2.2d
809 urhadd v0.16b, v1.16b, v2.8h
811 // CHECK-ERROR: error: invalid operand for instruction
812 // CHECK-ERROR: srhadd v0.2s, v1.2s, v2.2d
814 // CHECK-ERROR: error: invalid operand for instruction
815 // CHECK-ERROR: urhadd v0.16b, v1.16b, v2.8h
818 //----------------------------------------------------------------------
819 // Vector Integer Saturating Add (Signed)
820 // Vector Integer Saturating Add (Unsigned)
821 // Vector Integer Saturating Sub (Signed)
822 // Vector Integer Saturating Sub (Unsigned)
823 //----------------------------------------------------------------------
825 // Mismatched vector types
826 sqadd v0.2s, v1.2s, v2.2d
827 uqadd v31.8h, v1.4h, v2.4h
828 sqsub v10.8h, v1.16b, v2.16b
829 uqsub v31.8b, v1.8b, v2.4s
831 // CHECK-ERROR: error: invalid operand for instruction
832 // CHECK-ERROR: sqadd v0.2s, v1.2s, v2.2d
834 // CHECK-ERROR: error: invalid operand for instruction
835 // CHECK-ERROR: uqadd v31.8h, v1.4h, v2.4h
837 // CHECK-ERROR: error: invalid operand for instruction
838 // CHECK-ERROR: sqsub v10.8h, v1.16b, v2.16b
840 // CHECK-ERROR: error: invalid operand for instruction
841 // CHECK-ERROR: uqsub v31.8b, v1.8b, v2.4s
844 //----------------------------------------------------------------------
845 // Scalar Integer Saturating Add (Signed)
846 // Scalar Integer Saturating Add (Unsigned)
847 // Scalar Integer Saturating Sub (Signed)
848 // Scalar Integer Saturating Sub (Unsigned)
849 //----------------------------------------------------------------------
851 // Mismatched registers
857 // CHECK-ERROR: error: invalid operand for instruction
858 // CHECK-ERROR: sqadd d0, s31, d2
860 // CHECK-ERROR: error: invalid operand for instruction
861 // CHECK-ERROR: uqadd s0, s1, d2
863 // CHECK-ERROR: error: invalid operand for instruction
864 // CHECK-ERROR: sqsub b0, b2, s18
866 // CHECK-ERROR: error: invalid operand for instruction
867 // CHECK-ERROR: uqsub h1, h2, d2
870 //----------------------------------------------------------------------
871 // Scalar Integer Saturating Doubling Multiply Half High (Signed)
872 //----------------------------------------------------------------------
874 sqdmulh h10, s11, h12
877 // CHECK-ERROR: error: invalid operand for instruction
878 // CHECK-ERROR: sqdmulh h10, s11, h12
880 // CHECK-ERROR: error: invalid operand for instruction
881 // CHECK-ERROR: sqdmulh s20, h21, s2
884 //------------------------------------------------------------------------
885 // Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed)
886 //------------------------------------------------------------------------
888 sqrdmulh h10, s11, h12
889 sqrdmulh s20, h21, s2
891 // CHECK-ERROR: error: invalid operand for instruction
892 // CHECK-ERROR: sqrdmulh h10, s11, h12
894 // CHECK-ERROR: error: invalid operand for instruction
895 // CHECK-ERROR: sqrdmulh s20, h21, s2
898 //----------------------------------------------------------------------
899 // Vector Shift Left (Signed and Unsigned Integer)
900 //----------------------------------------------------------------------
901 // Mismatched vector types
902 sshl v0.4s, v15.2s, v16.2s
903 ushl v1.16b, v25.16b, v6.8h
905 // CHECK-ERROR: error: invalid operand for instruction
906 // CHECK-ERROR: sshl v0.4s, v15.2s, v16.2s
908 // CHECK-ERROR: error: invalid operand for instruction
909 // CHECK-ERROR: ushl v1.16b, v25.16b, v6.8h
912 //----------------------------------------------------------------------
913 // Vector Saturating Shift Left (Signed and Unsigned Integer)
914 //----------------------------------------------------------------------
915 // Mismatched vector types
916 sqshl v0.2s, v15.4s, v16.2d
917 uqshl v1.8b, v25.4h, v6.8h
919 // CHECK-ERROR: error: invalid operand for instruction
920 // CHECK-ERROR: sqshl v0.2s, v15.4s, v16.2d
922 // CHECK-ERROR: error: invalid operand for instruction
923 // CHECK-ERROR: uqshl v1.8b, v25.4h, v6.8h
926 //----------------------------------------------------------------------
927 // Vector Rouding Shift Left (Signed and Unsigned Integer)
928 //----------------------------------------------------------------------
929 // Mismatched vector types
930 srshl v0.8h, v15.8h, v16.16b
931 urshl v1.2d, v25.2d, v6.4s
933 // CHECK-ERROR: error: invalid operand for instruction
934 // CHECK-ERROR: srshl v0.8h, v15.8h, v16.16b
936 // CHECK-ERROR: error: invalid operand for instruction
937 // CHECK-ERROR: urshl v1.2d, v25.2d, v6.4s
940 //----------------------------------------------------------------------
941 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
942 //----------------------------------------------------------------------
943 // Mismatched vector types
944 sqrshl v0.2s, v15.8h, v16.16b
945 uqrshl v1.4h, v25.4h, v6.2d
947 // CHECK-ERROR: error: invalid operand for instruction
948 // CHECK-ERROR: sqrshl v0.2s, v15.8h, v16.16b
950 // CHECK-ERROR: error: invalid operand for instruction
951 // CHECK-ERROR: uqrshl v1.4h, v25.4h, v6.2d
954 //----------------------------------------------------------------------
955 // Scalar Integer Shift Left (Signed, Unsigned)
956 //----------------------------------------------------------------------
957 // Mismatched and invalid vector types
961 // CHECK-ERROR: error: invalid operand for instruction
962 // CHECK-ERROR: sshl d0, d1, s2
964 // CHECK-ERROR: error: invalid operand for instruction
965 // CHECK-ERROR: ushl b2, b0, b1
968 //----------------------------------------------------------------------
969 // Scalar Integer Saturating Shift Left (Signed, Unsigned)
970 //----------------------------------------------------------------------
972 // Mismatched vector types
978 // CHECK-ERROR: error: invalid operand for instruction
979 // CHECK-ERROR: sqshl b0, s1, b0
981 // CHECK-ERROR: error: invalid operand for instruction
982 // CHECK-ERROR: uqshl h0, b1, h0
984 // CHECK-ERROR: error: invalid operand for instruction
985 // CHECK-ERROR: sqshl s0, h1, s0
987 // CHECK-ERROR: error: invalid operand for instruction
988 // CHECK-ERROR: uqshl d0, b1, d0
991 //----------------------------------------------------------------------
992 // Scalar Integer Rouding Shift Left (Signed, Unsigned)
993 //----------------------------------------------------------------------
994 // Mismatched and invalid vector types
998 // CHECK-ERROR: error: invalid operand for instruction
999 // CHECK-ERROR: srshl h0, h1, h2
1001 // CHECK-ERROR: error: invalid operand for instruction
1002 // CHECK-ERROR: urshl s0, s1, s2
1006 //----------------------------------------------------------------------
1007 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
1008 //----------------------------------------------------------------------
1010 // Mismatched vector types
1016 // CHECK-ERROR: error: invalid operand for instruction
1017 // CHECK-ERROR: sqrshl b0, b1, s0
1019 // CHECK-ERROR: error: invalid operand for instruction
1020 // CHECK-ERROR: uqrshl h0, h1, b0
1022 // CHECK-ERROR: error: invalid operand for instruction
1023 // CHECK-ERROR: sqrshl s0, s1, h0
1025 // CHECK-ERROR: error: invalid operand for instruction
1026 // CHECK-ERROR: uqrshl d0, d1, b0
1030 //----------------------------------------------------------------------
1031 // Vector Maximum (Signed, Unsigned)
1032 //----------------------------------------------------------------------
1033 // Mismatched and invalid vector types
1034 smax v0.2d, v1.2d, v2.2d
1035 umax v0.4h, v1.4h, v2.2s
1037 // CHECK-ERROR: error: invalid operand for instruction
1038 // CHECK-ERROR: smax v0.2d, v1.2d, v2.2d
1040 // CHECK-ERROR: error: invalid operand for instruction
1041 // CHECK-ERROR: umax v0.4h, v1.4h, v2.2s
1044 //----------------------------------------------------------------------
1045 // Vector Minimum (Signed, Unsigned)
1046 //----------------------------------------------------------------------
1047 // Mismatched and invalid vector types
1048 smin v0.2d, v1.2d, v2.2d
1049 umin v0.2s, v1.2s, v2.8b
1051 // CHECK-ERROR: error: invalid operand for instruction
1052 // CHECK-ERROR: smin v0.2d, v1.2d, v2.2d
1054 // CHECK-ERROR: error: invalid operand for instruction
1055 // CHECK-ERROR: umin v0.2s, v1.2s, v2.8b
1059 //----------------------------------------------------------------------
1060 // Vector Maximum (Floating Point)
1061 //----------------------------------------------------------------------
1062 // Mismatched and invalid vector types
1063 fmax v0.2s, v1.2s, v2.4s
1064 fmax v0.8b, v1.8b, v2.8b
1066 // CHECK-ERROR: error: invalid operand for instruction
1067 // CHECK-ERROR: fmax v0.2s, v1.2s, v2.4s
1069 // CHECK-ERROR: error: invalid operand for instruction
1070 // CHECK-ERROR: fmax v0.8b, v1.8b, v2.8b
1072 //----------------------------------------------------------------------
1073 // Vector Minimum (Floating Point)
1074 //----------------------------------------------------------------------
1075 // Mismatched and invalid vector types
1076 fmin v0.4s, v1.4s, v2.2d
1077 fmin v0.8h, v1.8h, v2.8h
1079 // CHECK-ERROR: error: invalid operand for instruction
1080 // CHECK-ERROR: fmin v0.4s, v1.4s, v2.2d
1082 // CHECK-ERROR: error: invalid operand for instruction
1083 // CHECK-ERROR: fmin v0.8h, v1.8h, v2.8h
1086 //----------------------------------------------------------------------
1087 // Vector maxNum (Floating Point)
1088 //----------------------------------------------------------------------
1089 // Mismatched and invalid vector types
1090 fmaxnm v0.2s, v1.2s, v2.2d
1091 fmaxnm v0.4h, v1.8h, v2.4h
1093 // CHECK-ERROR: error: invalid operand for instruction
1094 // CHECK-ERROR: fmaxnm v0.2s, v1.2s, v2.2d
1096 // CHECK-ERROR: error: invalid operand for instruction
1097 // CHECK-ERROR: fmaxnm v0.4h, v1.8h, v2.4h
1100 //----------------------------------------------------------------------
1101 // Vector minNum (Floating Point)
1102 //----------------------------------------------------------------------
1103 // Mismatched and invalid vector types
1104 fminnm v0.4s, v1.2s, v2.4s
1105 fminnm v0.16b, v0.16b, v0.16b
1107 // CHECK-ERROR: error: invalid operand for instruction
1108 // CHECK-ERROR: fminnm v0.4s, v1.2s, v2.4s
1110 // CHECK-ERROR: error: invalid operand for instruction
1111 // CHECK-ERROR: fminnm v0.16b, v0.16b, v0.16b
1115 //----------------------------------------------------------------------
1116 // Vector Maximum Pairwise (Signed, Unsigned)
1117 //----------------------------------------------------------------------
1118 // Mismatched and invalid vector types
1119 smaxp v0.2d, v1.2d, v2.2d
1120 umaxp v0.4h, v1.4h, v2.2s
1122 // CHECK-ERROR: error: invalid operand for instruction
1123 // CHECK-ERROR: smaxp v0.2d, v1.2d, v2.2d
1125 // CHECK-ERROR: error: invalid operand for instruction
1126 // CHECK-ERROR: umaxp v0.4h, v1.4h, v2.2s
1129 //----------------------------------------------------------------------
1130 // Vector Minimum Pairwise (Signed, Unsigned)
1131 //----------------------------------------------------------------------
1132 // Mismatched and invalid vector types
1133 sminp v0.2d, v1.2d, v2.2d
1134 uminp v0.2s, v1.2s, v2.8b
1136 // CHECK-ERROR: error: invalid operand for instruction
1137 // CHECK-ERROR: sminp v0.2d, v1.2d, v2.2d
1139 // CHECK-ERROR: error: invalid operand for instruction
1140 // CHECK-ERROR: uminp v0.2s, v1.2s, v2.8b
1144 //----------------------------------------------------------------------
1145 // Vector Maximum Pairwise (Floating Point)
1146 //----------------------------------------------------------------------
1147 // Mismatched and invalid vector types
1148 fmaxp v0.2s, v1.2s, v2.4s
1149 fmaxp v0.8b, v1.8b, v2.8b
1151 // CHECK-ERROR: error: invalid operand for instruction
1152 // CHECK-ERROR: fmaxp v0.2s, v1.2s, v2.4s
1154 // CHECK-ERROR: error: invalid operand for instruction
1155 // CHECK-ERROR: fmaxp v0.8b, v1.8b, v2.8b
1157 //----------------------------------------------------------------------
1158 // Vector Minimum Pairwise (Floating Point)
1159 //----------------------------------------------------------------------
1160 // Mismatched and invalid vector types
1161 fminp v0.4s, v1.4s, v2.2d
1162 fminp v0.8h, v1.8h, v2.8h
1164 // CHECK-ERROR: error: invalid operand for instruction
1165 // CHECK-ERROR: fminp v0.4s, v1.4s, v2.2d
1167 // CHECK-ERROR: error: invalid operand for instruction
1168 // CHECK-ERROR: fminp v0.8h, v1.8h, v2.8h
1171 //----------------------------------------------------------------------
1172 // Vector maxNum Pairwise (Floating Point)
1173 //----------------------------------------------------------------------
1174 // Mismatched and invalid vector types
1175 fmaxnmp v0.2s, v1.2s, v2.2d
1176 fmaxnmp v0.4h, v1.8h, v2.4h
1178 // CHECK-ERROR: error: invalid operand for instruction
1179 // CHECK-ERROR: fmaxnmp v0.2s, v1.2s, v2.2d
1181 // CHECK-ERROR: error: invalid operand for instruction
1182 // CHECK-ERROR: fmaxnmp v0.4h, v1.8h, v2.4h
1185 //----------------------------------------------------------------------
1186 // Vector minNum Pairwise (Floating Point)
1187 //----------------------------------------------------------------------
1188 // Mismatched and invalid vector types
1189 fminnmp v0.4s, v1.2s, v2.4s
1190 fminnmp v0.16b, v0.16b, v0.16b
1192 // CHECK-ERROR: error: invalid operand for instruction
1193 // CHECK-ERROR: fminnmp v0.4s, v1.2s, v2.4s
1195 // CHECK-ERROR: error: invalid operand for instruction
1196 // CHECK-ERROR: fminnmp v0.16b, v0.16b, v0.16b
1200 //----------------------------------------------------------------------
1201 // Vector Add Pairwise (Integer)
1202 //----------------------------------------------------------------------
1204 // Mismatched vector types
1205 addp v0.16b, v1.8b, v2.8b
1207 // CHECK-ERROR: error: invalid operand for instruction
1208 // CHECK-ERROR: addp v0.16b, v1.8b, v2.8b
1211 //----------------------------------------------------------------------
1212 // Vector Add Pairwise (Floating Point)
1213 //----------------------------------------------------------------------
1214 // Mismatched and invalid vector types
1215 faddp v0.16b, v1.8b, v2.8b
1216 faddp v0.2d, v1.2d, v2.8h
1218 // CHECK-ERROR: error: invalid operand for instruction
1219 // CHECK-ERROR: faddp v0.16b, v1.8b, v2.8b
1221 // CHECK-ERROR: error: invalid operand for instruction
1222 // CHECK-ERROR: faddp v0.2d, v1.2d, v2.8h
1226 //----------------------------------------------------------------------
1227 // Vector Saturating Doubling Multiply High
1228 //----------------------------------------------------------------------
1229 // Mismatched and invalid vector types
1230 sqdmulh v2.4h, v25.8h, v3.4h
1231 sqdmulh v12.2d, v5.2d, v13.2d
1232 sqdmulh v3.8b, v1.8b, v30.8b
1234 // CHECK-ERROR: error: invalid operand for instruction
1235 // CHECK-ERROR: sqdmulh v2.4h, v25.8h, v3.4h
1237 // CHECK-ERROR: error: invalid operand for instruction
1238 // CHECK-ERROR: sqdmulh v12.2d, v5.2d, v13.2d
1240 // CHECK-ERROR: error: invalid operand for instruction
1241 // CHECK-ERROR: sqdmulh v3.8b, v1.8b, v30.8b
1244 //----------------------------------------------------------------------
1245 // Vector Saturating Rouding Doubling Multiply High
1246 //----------------------------------------------------------------------
1247 // Mismatched and invalid vector types
1248 sqrdmulh v2.2s, v25.4s, v3.4s
1249 sqrdmulh v12.16b, v5.16b, v13.16b
1250 sqrdmulh v3.4h, v1.4h, v30.2d
1253 // CHECK-ERROR: error: invalid operand for instruction
1254 // CHECK-ERROR: sqrdmulh v2.2s, v25.4s, v3.4s
1256 // CHECK-ERROR: error: invalid operand for instruction
1257 // CHECK-ERROR: sqrdmulh v12.16b, v5.16b, v13.16b
1259 // CHECK-ERROR: error: invalid operand for instruction
1260 // CHECK-ERROR: sqrdmulh v3.4h, v1.4h, v30.2d
1263 //----------------------------------------------------------------------
1264 // Vector Multiply Extended
1265 //----------------------------------------------------------------------
1266 // Mismatched and invalid vector types
1267 fmulx v21.2s, v5.2s, v13.2d
1268 fmulx v1.4h, v25.4h, v3.4h
1270 // CHECK-ERROR: error: invalid operand for instruction
1271 // CHECK-ERROR: fmulx v21.2s, v5.2s, v13.2d
1273 // CHECK-ERROR: error: invalid operand for instruction
1274 // CHECK-ERROR: fmulx v1.4h, v25.4h, v3.4h
1277 //------------------------------------------------------------------------------
1278 // Vector Shift Left by Immediate
1279 //------------------------------------------------------------------------------
1280 // Mismatched vector types and out of range
1281 shl v0.4s, v15,2s, #3
1282 shl v0.2d, v17.4s, #3
1283 shl v0.8b, v31.8b, #-1
1284 shl v0.8b, v31.8b, #8
1285 shl v0.4s, v21.4s, #32
1286 shl v0.2d, v1.2d, #64
1288 // CHECK-ERROR: error: expected comma before next operand
1289 // CHECK-ERROR: shl v0.4s, v15,2s, #3
1291 // CHECK-ERROR: error: invalid operand for instruction
1292 // CHECK-ERROR: shl v0.2d, v17.4s, #3
1294 // CHECK-ERROR: error: expected integer in range [0, 7]
1295 // CHECK-ERROR: shl v0.8b, v31.8b, #-1
1297 // CHECK-ERROR: error: expected integer in range [0, 7]
1298 // CHECK-ERROR: shl v0.8b, v31.8b, #8
1300 // CHECK-ERROR: error: expected integer in range [0, 31]
1301 // CHECK-ERROR: shl v0.4s, v21.4s, #32
1303 // CHECK-ERROR: error: expected integer in range [0, 63]
1304 // CHECK-ERROR: shl v0.2d, v1.2d, #64
1307 //----------------------------------------------------------------------
1308 // Vector Shift Left Long by Immediate
1309 //----------------------------------------------------------------------
1310 // Mismatched vector types
1311 sshll v0.4s, v15.2s, #3
1312 ushll v1.16b, v25.16b, #6
1313 sshll2 v0.2d, v3.8s, #15
1314 ushll2 v1.4s, v25.4s, #7
1317 sshll v0.8h, v1.8b, #-1
1318 sshll v0.8h, v1.8b, #9
1319 ushll v0.4s, v1.4h, #17
1320 ushll v0.2d, v1.2s, #33
1321 sshll2 v0.8h, v1.16b, #9
1322 sshll2 v0.4s, v1.8h, #17
1323 ushll2 v0.2d, v1.4s, #33
1325 // CHECK-ERROR: error: invalid operand for instruction
1326 // CHECK-ERROR: sshll v0.4s, v15.2s, #3
1328 // CHECK-ERROR: error: invalid operand for instruction
1329 // CHECK-ERROR: ushll v1.16b, v25.16b, #6
1331 // CHECK-ERROR: error: invalid operand for instruction
1332 // CHECK-ERROR: sshll2 v0.2d, v3.8s, #15
1334 // CHECK-ERROR: error: invalid operand for instruction
1335 // CHECK-ERROR: ushll2 v1.4s, v25.4s, #7
1337 // CHECK-ERROR: error: expected integer in range [0, 7]
1338 // CHECK-ERROR: sshll v0.8h, v1.8b, #-1
1340 // CHECK-ERROR: error: expected integer in range [0, 7]
1341 // CHECK-ERROR: sshll v0.8h, v1.8b, #9
1343 // CHECK-ERROR: error: expected integer in range [0, 15]
1344 // CHECK-ERROR: ushll v0.4s, v1.4h, #17
1346 // CHECK-ERROR: error: expected integer in range [0, 31]
1347 // CHECK-ERROR: ushll v0.2d, v1.2s, #33
1349 // CHECK-ERROR: error: expected integer in range [0, 7]
1350 // CHECK-ERROR: sshll2 v0.8h, v1.16b, #9
1352 // CHECK-ERROR: error: expected integer in range [0, 15]
1353 // CHECK-ERROR: sshll2 v0.4s, v1.8h, #17
1355 // CHECK-ERROR: error: expected integer in range [0, 31]
1356 // CHECK-ERROR: ushll2 v0.2d, v1.4s, #33
1360 //------------------------------------------------------------------------------
1361 // Vector shift right by immediate
1362 //------------------------------------------------------------------------------
1363 sshr v0.8b, v1.8h, #3
1364 sshr v0.4h, v1.4s, #3
1365 sshr v0.2s, v1.2d, #3
1366 sshr v0.16b, v1.16b, #9
1367 sshr v0.8h, v1.8h, #17
1368 sshr v0.4s, v1.4s, #33
1369 sshr v0.2d, v1.2d, #65
1371 // CHECK-ERROR: error: invalid operand for instruction
1372 // CHECK-ERROR: sshr v0.8b, v1.8h, #3
1374 // CHECK-ERROR: error: invalid operand for instruction
1375 // CHECK-ERROR: sshr v0.4h, v1.4s, #3
1377 // CHECK-ERROR: error: invalid operand for instruction
1378 // CHECK-ERROR: sshr v0.2s, v1.2d, #3
1380 // CHECK-ERROR: error: expected integer in range [1, 8]
1381 // CHECK-ERROR: sshr v0.16b, v1.16b, #9
1383 // CHECK-ERROR: error: expected integer in range [1, 16]
1384 // CHECK-ERROR: sshr v0.8h, v1.8h, #17
1386 // CHECK-ERROR: error: expected integer in range [1, 32]
1387 // CHECK-ERROR: sshr v0.4s, v1.4s, #33
1389 // CHECK-ERROR: error: expected integer in range [1, 64]
1390 // CHECK-ERROR: sshr v0.2d, v1.2d, #65
1393 //------------------------------------------------------------------------------
1394 // Vector shift right by immediate
1395 //------------------------------------------------------------------------------
1396 ushr v0.8b, v1.8h, #3
1397 ushr v0.4h, v1.4s, #3
1398 ushr v0.2s, v1.2d, #3
1399 ushr v0.16b, v1.16b, #9
1400 ushr v0.8h, v1.8h, #17
1401 ushr v0.4s, v1.4s, #33
1402 ushr v0.2d, v1.2d, #65
1404 // CHECK-ERROR: error: invalid operand for instruction
1405 // CHECK-ERROR: ushr v0.8b, v1.8h, #3
1407 // CHECK-ERROR: error: invalid operand for instruction
1408 // CHECK-ERROR: ushr v0.4h, v1.4s, #3
1410 // CHECK-ERROR: error: invalid operand for instruction
1411 // CHECK-ERROR: ushr v0.2s, v1.2d, #3
1413 // CHECK-ERROR: error: expected integer in range [1, 8]
1414 // CHECK-ERROR: ushr v0.16b, v1.16b, #9
1416 // CHECK-ERROR: error: expected integer in range [1, 16]
1417 // CHECK-ERROR: ushr v0.8h, v1.8h, #17
1419 // CHECK-ERROR: error: expected integer in range [1, 32]
1420 // CHECK-ERROR: ushr v0.4s, v1.4s, #33
1422 // CHECK-ERROR: error: expected integer in range [1, 64]
1423 // CHECK-ERROR: ushr v0.2d, v1.2d, #65
1426 //------------------------------------------------------------------------------
1427 // Vector shift right and accumulate by immediate
1428 //------------------------------------------------------------------------------
1429 ssra v0.8b, v1.8h, #3
1430 ssra v0.4h, v1.4s, #3
1431 ssra v0.2s, v1.2d, #3
1432 ssra v0.16b, v1.16b, #9
1433 ssra v0.8h, v1.8h, #17
1434 ssra v0.4s, v1.4s, #33
1435 ssra v0.2d, v1.2d, #65
1437 // CHECK-ERROR: error: invalid operand for instruction
1438 // CHECK-ERROR: ssra v0.8b, v1.8h, #3
1440 // CHECK-ERROR: error: invalid operand for instruction
1441 // CHECK-ERROR: ssra v0.4h, v1.4s, #3
1443 // CHECK-ERROR: error: invalid operand for instruction
1444 // CHECK-ERROR: ssra v0.2s, v1.2d, #3
1446 // CHECK-ERROR: error: expected integer in range [1, 8]
1447 // CHECK-ERROR: ssra v0.16b, v1.16b, #9
1449 // CHECK-ERROR: error: expected integer in range [1, 16]
1450 // CHECK-ERROR: ssra v0.8h, v1.8h, #17
1452 // CHECK-ERROR: error: expected integer in range [1, 32]
1453 // CHECK-ERROR: ssra v0.4s, v1.4s, #33
1455 // CHECK-ERROR: error: expected integer in range [1, 64]
1456 // CHECK-ERROR: ssra v0.2d, v1.2d, #65
1459 //------------------------------------------------------------------------------
1460 // Vector shift right and accumulate by immediate
1461 //------------------------------------------------------------------------------
1462 usra v0.8b, v1.8h, #3
1463 usra v0.4h, v1.4s, #3
1464 usra v0.2s, v1.2d, #3
1465 usra v0.16b, v1.16b, #9
1466 usra v0.8h, v1.8h, #17
1467 usra v0.4s, v1.4s, #33
1468 usra v0.2d, v1.2d, #65
1470 // CHECK-ERROR: error: invalid operand for instruction
1471 // CHECK-ERROR: usra v0.8b, v1.8h, #3
1473 // CHECK-ERROR: error: invalid operand for instruction
1474 // CHECK-ERROR: usra v0.4h, v1.4s, #3
1476 // CHECK-ERROR: error: invalid operand for instruction
1477 // CHECK-ERROR: usra v0.2s, v1.2d, #3
1479 // CHECK-ERROR: error: expected integer in range [1, 8]
1480 // CHECK-ERROR: usra v0.16b, v1.16b, #9
1482 // CHECK-ERROR: error: expected integer in range [1, 16]
1483 // CHECK-ERROR: usra v0.8h, v1.8h, #17
1485 // CHECK-ERROR: error: expected integer in range [1, 32]
1486 // CHECK-ERROR: usra v0.4s, v1.4s, #33
1488 // CHECK-ERROR: error: expected integer in range [1, 64]
1489 // CHECK-ERROR: usra v0.2d, v1.2d, #65
1492 //------------------------------------------------------------------------------
1493 // Vector rounding shift right by immediate
1494 //------------------------------------------------------------------------------
1495 srshr v0.8b, v1.8h, #3
1496 srshr v0.4h, v1.4s, #3
1497 srshr v0.2s, v1.2d, #3
1498 srshr v0.16b, v1.16b, #9
1499 srshr v0.8h, v1.8h, #17
1500 srshr v0.4s, v1.4s, #33
1501 srshr v0.2d, v1.2d, #65
1503 // CHECK-ERROR: error: invalid operand for instruction
1504 // CHECK-ERROR: srshr v0.8b, v1.8h, #3
1506 // CHECK-ERROR: error: invalid operand for instruction
1507 // CHECK-ERROR: srshr v0.4h, v1.4s, #3
1509 // CHECK-ERROR: error: invalid operand for instruction
1510 // CHECK-ERROR: srshr v0.2s, v1.2d, #3
1512 // CHECK-ERROR: error: expected integer in range [1, 8]
1513 // CHECK-ERROR: srshr v0.16b, v1.16b, #9
1515 // CHECK-ERROR: error: expected integer in range [1, 16]
1516 // CHECK-ERROR: srshr v0.8h, v1.8h, #17
1518 // CHECK-ERROR: error: expected integer in range [1, 32]
1519 // CHECK-ERROR: srshr v0.4s, v1.4s, #33
1521 // CHECK-ERROR: error: expected integer in range [1, 64]
1522 // CHECK-ERROR: srshr v0.2d, v1.2d, #65
1525 //------------------------------------------------------------------------------
1526 // Vecotr rounding shift right by immediate
1527 //------------------------------------------------------------------------------
1528 urshr v0.8b, v1.8h, #3
1529 urshr v0.4h, v1.4s, #3
1530 urshr v0.2s, v1.2d, #3
1531 urshr v0.16b, v1.16b, #9
1532 urshr v0.8h, v1.8h, #17
1533 urshr v0.4s, v1.4s, #33
1534 urshr v0.2d, v1.2d, #65
1536 // CHECK-ERROR: error: invalid operand for instruction
1537 // CHECK-ERROR: urshr v0.8b, v1.8h, #3
1539 // CHECK-ERROR: error: invalid operand for instruction
1540 // CHECK-ERROR: urshr v0.4h, v1.4s, #3
1542 // CHECK-ERROR: error: invalid operand for instruction
1543 // CHECK-ERROR: urshr v0.2s, v1.2d, #3
1545 // CHECK-ERROR: error: expected integer in range [1, 8]
1546 // CHECK-ERROR: urshr v0.16b, v1.16b, #9
1548 // CHECK-ERROR: error: expected integer in range [1, 16]
1549 // CHECK-ERROR: urshr v0.8h, v1.8h, #17
1551 // CHECK-ERROR: error: expected integer in range [1, 32]
1552 // CHECK-ERROR: urshr v0.4s, v1.4s, #33
1554 // CHECK-ERROR: error: expected integer in range [1, 64]
1555 // CHECK-ERROR: urshr v0.2d, v1.2d, #65
1558 //------------------------------------------------------------------------------
1559 // Vector rounding shift right and accumulate by immediate
1560 //------------------------------------------------------------------------------
1561 srsra v0.8b, v1.8h, #3
1562 srsra v0.4h, v1.4s, #3
1563 srsra v0.2s, v1.2d, #3
1564 srsra v0.16b, v1.16b, #9
1565 srsra v0.8h, v1.8h, #17
1566 srsra v0.4s, v1.4s, #33
1567 srsra v0.2d, v1.2d, #65
1569 // CHECK-ERROR: error: invalid operand for instruction
1570 // CHECK-ERROR: srsra v0.8b, v1.8h, #3
1572 // CHECK-ERROR: error: invalid operand for instruction
1573 // CHECK-ERROR: srsra v0.4h, v1.4s, #3
1575 // CHECK-ERROR: error: invalid operand for instruction
1576 // CHECK-ERROR: srsra v0.2s, v1.2d, #3
1578 // CHECK-ERROR: error: expected integer in range [1, 8]
1579 // CHECK-ERROR: srsra v0.16b, v1.16b, #9
1581 // CHECK-ERROR: error: expected integer in range [1, 16]
1582 // CHECK-ERROR: srsra v0.8h, v1.8h, #17
1584 // CHECK-ERROR: error: expected integer in range [1, 32]
1585 // CHECK-ERROR: srsra v0.4s, v1.4s, #33
1587 // CHECK-ERROR: error: expected integer in range [1, 64]
1588 // CHECK-ERROR: srsra v0.2d, v1.2d, #65
1591 //------------------------------------------------------------------------------
1592 // Vector rounding shift right and accumulate by immediate
1593 //------------------------------------------------------------------------------
1594 ursra v0.8b, v1.8h, #3
1595 ursra v0.4h, v1.4s, #3
1596 ursra v0.2s, v1.2d, #3
1597 ursra v0.16b, v1.16b, #9
1598 ursra v0.8h, v1.8h, #17
1599 ursra v0.4s, v1.4s, #33
1600 ursra v0.2d, v1.2d, #65
1602 // CHECK-ERROR: error: invalid operand for instruction
1603 // CHECK-ERROR: ursra v0.8b, v1.8h, #3
1605 // CHECK-ERROR: error: invalid operand for instruction
1606 // CHECK-ERROR: ursra v0.4h, v1.4s, #3
1608 // CHECK-ERROR: error: invalid operand for instruction
1609 // CHECK-ERROR: ursra v0.2s, v1.2d, #3
1611 // CHECK-ERROR: error: expected integer in range [1, 8]
1612 // CHECK-ERROR: ursra v0.16b, v1.16b, #9
1614 // CHECK-ERROR: error: expected integer in range [1, 16]
1615 // CHECK-ERROR: ursra v0.8h, v1.8h, #17
1617 // CHECK-ERROR: error: expected integer in range [1, 32]
1618 // CHECK-ERROR: ursra v0.4s, v1.4s, #33
1620 // CHECK-ERROR: error: expected integer in range [1, 64]
1621 // CHECK-ERROR: ursra v0.2d, v1.2d, #65
1624 //------------------------------------------------------------------------------
1625 // Vector shift right and insert by immediate
1626 //------------------------------------------------------------------------------
1627 sri v0.8b, v1.8h, #3
1628 sri v0.4h, v1.4s, #3
1629 sri v0.2s, v1.2d, #3
1630 sri v0.16b, v1.16b, #9
1631 sri v0.8h, v1.8h, #17
1632 sri v0.4s, v1.4s, #33
1633 sri v0.2d, v1.2d, #65
1635 // CHECK-ERROR: error: invalid operand for instruction
1636 // CHECK-ERROR: sri v0.8b, v1.8h, #3
1638 // CHECK-ERROR: error: invalid operand for instruction
1639 // CHECK-ERROR: sri v0.4h, v1.4s, #3
1641 // CHECK-ERROR: error: invalid operand for instruction
1642 // CHECK-ERROR: sri v0.2s, v1.2d, #3
1644 // CHECK-ERROR: error: expected integer in range [1, 8]
1645 // CHECK-ERROR: sri v0.16b, v1.16b, #9
1647 // CHECK-ERROR: error: expected integer in range [1, 16]
1648 // CHECK-ERROR: sri v0.8h, v1.8h, #17
1650 // CHECK-ERROR: error: expected integer in range [1, 32]
1651 // CHECK-ERROR: sri v0.4s, v1.4s, #33
1653 // CHECK-ERROR: error: expected integer in range [1, 64]
1654 // CHECK-ERROR: sri v0.2d, v1.2d, #65
1657 //------------------------------------------------------------------------------
1658 // Vector shift left and insert by immediate
1659 //------------------------------------------------------------------------------
1660 sli v0.8b, v1.8h, #3
1661 sli v0.4h, v1.4s, #3
1662 sli v0.2s, v1.2d, #3
1663 sli v0.16b, v1.16b, #8
1664 sli v0.8h, v1.8h, #16
1665 sli v0.4s, v1.4s, #32
1666 sli v0.2d, v1.2d, #64
1668 // CHECK-ERROR: error: invalid operand for instruction
1669 // CHECK-ERROR: sli v0.8b, v1.8h, #3
1671 // CHECK-ERROR: error: invalid operand for instruction
1672 // CHECK-ERROR: sli v0.4h, v1.4s, #3
1674 // CHECK-ERROR: error: invalid operand for instruction
1675 // CHECK-ERROR: sli v0.2s, v1.2d, #3
1677 // CHECK-ERROR: error: expected integer in range [0, 7]
1678 // CHECK-ERROR: sli v0.16b, v1.16b, #8
1680 // CHECK-ERROR: error: expected integer in range [0, 15]
1681 // CHECK-ERROR: sli v0.8h, v1.8h, #16
1683 // CHECK-ERROR: error: expected integer in range [0, 31]
1684 // CHECK-ERROR: sli v0.4s, v1.4s, #32
1686 // CHECK-ERROR: error: expected integer in range [0, 63]
1687 // CHECK-ERROR: sli v0.2d, v1.2d, #64
1690 //------------------------------------------------------------------------------
1691 // Vector saturating shift left unsigned by immediate
1692 //------------------------------------------------------------------------------
1693 sqshlu v0.8b, v1.8h, #3
1694 sqshlu v0.4h, v1.4s, #3
1695 sqshlu v0.2s, v1.2d, #3
1696 sqshlu v0.16b, v1.16b, #8
1697 sqshlu v0.8h, v1.8h, #16
1698 sqshlu v0.4s, v1.4s, #32
1699 sqshlu v0.2d, v1.2d, #64
1701 // CHECK-ERROR: error: invalid operand for instruction
1702 // CHECK-ERROR: sqshlu v0.8b, v1.8h, #3
1704 // CHECK-ERROR: error: invalid operand for instruction
1705 // CHECK-ERROR: sqshlu v0.4h, v1.4s, #3
1707 // CHECK-ERROR: error: invalid operand for instruction
1708 // CHECK-ERROR: sqshlu v0.2s, v1.2d, #3
1710 // CHECK-ERROR: error: expected integer in range [0, 7]
1711 // CHECK-ERROR: sqshlu v0.16b, v1.16b, #8
1713 // CHECK-ERROR: error: expected integer in range [0, 15]
1714 // CHECK-ERROR: sqshlu v0.8h, v1.8h, #16
1716 // CHECK-ERROR: error: expected integer in range [0, 31]
1717 // CHECK-ERROR: sqshlu v0.4s, v1.4s, #32
1719 // CHECK-ERROR: error: expected integer in range [0, 63]
1720 // CHECK-ERROR: sqshlu v0.2d, v1.2d, #64
1723 //------------------------------------------------------------------------------
1724 // Vector saturating shift left by immediate
1725 //------------------------------------------------------------------------------
1726 sqshl v0.8b, v1.8h, #3
1727 sqshl v0.4h, v1.4s, #3
1728 sqshl v0.2s, v1.2d, #3
1729 sqshl v0.16b, v1.16b, #8
1730 sqshl v0.8h, v1.8h, #16
1731 sqshl v0.4s, v1.4s, #32
1732 sqshl v0.2d, v1.2d, #64
1734 // CHECK-ERROR: error: invalid operand for instruction
1735 // CHECK-ERROR: sqshl v0.8b, v1.8h, #3
1737 // CHECK-ERROR: error: invalid operand for instruction
1738 // CHECK-ERROR: sqshl v0.4h, v1.4s, #3
1740 // CHECK-ERROR: error: invalid operand for instruction
1741 // CHECK-ERROR: sqshl v0.2s, v1.2d, #3
1743 // CHECK-ERROR: error: expected integer in range [0, 7]
1744 // CHECK-ERROR: sqshl v0.16b, v1.16b, #8
1746 // CHECK-ERROR: error: expected integer in range [0, 15]
1747 // CHECK-ERROR: sqshl v0.8h, v1.8h, #16
1749 // CHECK-ERROR: error: expected integer in range [0, 31]
1750 // CHECK-ERROR: sqshl v0.4s, v1.4s, #32
1752 // CHECK-ERROR: error: expected integer in range [0, 63]
1753 // CHECK-ERROR: sqshl v0.2d, v1.2d, #64
1756 //------------------------------------------------------------------------------
1757 // Vector saturating shift left by immediate
1758 //------------------------------------------------------------------------------
1759 uqshl v0.8b, v1.8h, #3
1760 uqshl v0.4h, v1.4s, #3
1761 uqshl v0.2s, v1.2d, #3
1762 uqshl v0.16b, v1.16b, #8
1763 uqshl v0.8h, v1.8h, #16
1764 uqshl v0.4s, v1.4s, #32
1765 uqshl v0.2d, v1.2d, #64
1767 // CHECK-ERROR: error: invalid operand for instruction
1768 // CHECK-ERROR: uqshl v0.8b, v1.8h, #3
1770 // CHECK-ERROR: error: invalid operand for instruction
1771 // CHECK-ERROR: uqshl v0.4h, v1.4s, #3
1773 // CHECK-ERROR: error: invalid operand for instruction
1774 // CHECK-ERROR: uqshl v0.2s, v1.2d, #3
1776 // CHECK-ERROR: error: expected integer in range [0, 7]
1777 // CHECK-ERROR: uqshl v0.16b, v1.16b, #8
1779 // CHECK-ERROR: error: expected integer in range [0, 15]
1780 // CHECK-ERROR: uqshl v0.8h, v1.8h, #16
1782 // CHECK-ERROR: error: expected integer in range [0, 31]
1783 // CHECK-ERROR: uqshl v0.4s, v1.4s, #32
1785 // CHECK-ERROR: error: expected integer in range [0, 63]
1786 // CHECK-ERROR: uqshl v0.2d, v1.2d, #64
1789 //------------------------------------------------------------------------------
1790 // Vector shift right narrow by immediate
1791 //------------------------------------------------------------------------------
1792 shrn v0.8b, v1.8b, #3
1793 shrn v0.4h, v1.4h, #3
1794 shrn v0.2s, v1.2s, #3
1795 shrn2 v0.16b, v1.8h, #17
1796 shrn2 v0.8h, v1.4s, #33
1797 shrn2 v0.4s, v1.2d, #65
1799 // CHECK-ERROR: error: invalid operand for instruction
1800 // CHECK-ERROR: shrn v0.8b, v1.8b, #3
1802 // CHECK-ERROR: error: invalid operand for instruction
1803 // CHECK-ERROR: shrn v0.4h, v1.4h, #3
1805 // CHECK-ERROR: error: invalid operand for instruction
1806 // CHECK-ERROR: shrn v0.2s, v1.2s, #3
1808 // CHECK-ERROR: error: expected integer in range [1, 8]
1809 // CHECK-ERROR: shrn2 v0.16b, v1.8h, #17
1811 // CHECK-ERROR: error: expected integer in range [1, 16]
1812 // CHECK-ERROR: shrn2 v0.8h, v1.4s, #33
1814 // CHECK-ERROR: error: expected integer in range [1, 32]
1815 // CHECK-ERROR: shrn2 v0.4s, v1.2d, #65
1818 //------------------------------------------------------------------------------
1819 // Vector saturating shift right unsigned narrow by immediate
1820 //------------------------------------------------------------------------------
1821 sqshrun v0.8b, v1.8b, #3
1822 sqshrun v0.4h, v1.4h, #3
1823 sqshrun v0.2s, v1.2s, #3
1824 sqshrun2 v0.16b, v1.8h, #17
1825 sqshrun2 v0.8h, v1.4s, #33
1826 sqshrun2 v0.4s, v1.2d, #65
1828 // CHECK-ERROR: error: invalid operand for instruction
1829 // CHECK-ERROR: sqshrun v0.8b, v1.8b, #3
1831 // CHECK-ERROR: error: invalid operand for instruction
1832 // CHECK-ERROR: sqshrun v0.4h, v1.4h, #3
1834 // CHECK-ERROR: error: invalid operand for instruction
1835 // CHECK-ERROR: sqshrun v0.2s, v1.2s, #3
1837 // CHECK-ERROR: error: expected integer in range [1, 8]
1838 // CHECK-ERROR: sqshrun2 v0.16b, v1.8h, #17
1840 // CHECK-ERROR: error: expected integer in range [1, 16]
1841 // CHECK-ERROR: sqshrun2 v0.8h, v1.4s, #33
1843 // CHECK-ERROR: error: expected integer in range [1, 32]
1844 // CHECK-ERROR: sqshrun2 v0.4s, v1.2d, #65
1847 //------------------------------------------------------------------------------
1848 // Vector rounding shift right narrow by immediate
1849 //------------------------------------------------------------------------------
1850 rshrn v0.8b, v1.8b, #3
1851 rshrn v0.4h, v1.4h, #3
1852 rshrn v0.2s, v1.2s, #3
1853 rshrn2 v0.16b, v1.8h, #17
1854 rshrn2 v0.8h, v1.4s, #33
1855 rshrn2 v0.4s, v1.2d, #65
1857 // CHECK-ERROR: error: invalid operand for instruction
1858 // CHECK-ERROR: rshrn v0.8b, v1.8b, #3
1860 // CHECK-ERROR: error: invalid operand for instruction
1861 // CHECK-ERROR: rshrn v0.4h, v1.4h, #3
1863 // CHECK-ERROR: error: invalid operand for instruction
1864 // CHECK-ERROR: rshrn v0.2s, v1.2s, #3
1866 // CHECK-ERROR: error: expected integer in range [1, 8]
1867 // CHECK-ERROR: rshrn2 v0.16b, v1.8h, #17
1869 // CHECK-ERROR: error: expected integer in range [1, 16]
1870 // CHECK-ERROR: rshrn2 v0.8h, v1.4s, #33
1872 // CHECK-ERROR: error: expected integer in range [1, 32]
1873 // CHECK-ERROR: rshrn2 v0.4s, v1.2d, #65
1876 //------------------------------------------------------------------------------
1877 // Vector saturating shift right rounded unsigned narrow by immediate
1878 //------------------------------------------------------------------------------
1879 sqrshrun v0.8b, v1.8b, #3
1880 sqrshrun v0.4h, v1.4h, #3
1881 sqrshrun v0.2s, v1.2s, #3
1882 sqrshrun2 v0.16b, v1.8h, #17
1883 sqrshrun2 v0.8h, v1.4s, #33
1884 sqrshrun2 v0.4s, v1.2d, #65
1886 // CHECK-ERROR: error: invalid operand for instruction
1887 // CHECK-ERROR: sqrshrun v0.8b, v1.8b, #3
1889 // CHECK-ERROR: error: invalid operand for instruction
1890 // CHECK-ERROR: sqrshrun v0.4h, v1.4h, #3
1892 // CHECK-ERROR: error: invalid operand for instruction
1893 // CHECK-ERROR: sqrshrun v0.2s, v1.2s, #3
1895 // CHECK-ERROR: error: expected integer in range [1, 8]
1896 // CHECK-ERROR: sqrshrun2 v0.16b, v1.8h, #17
1898 // CHECK-ERROR: error: expected integer in range [1, 16]
1899 // CHECK-ERROR: sqrshrun2 v0.8h, v1.4s, #33
1901 // CHECK-ERROR: error: expected integer in range [1, 32]
1902 // CHECK-ERROR: sqrshrun2 v0.4s, v1.2d, #65
1905 //------------------------------------------------------------------------------
1906 // Vector saturating shift right narrow by immediate
1907 //------------------------------------------------------------------------------
1908 sqshrn v0.8b, v1.8b, #3
1909 sqshrn v0.4h, v1.4h, #3
1910 sqshrn v0.2s, v1.2s, #3
1911 sqshrn2 v0.16b, v1.8h, #17
1912 sqshrn2 v0.8h, v1.4s, #33
1913 sqshrn2 v0.4s, v1.2d, #65
1915 // CHECK-ERROR: error: invalid operand for instruction
1916 // CHECK-ERROR: sqshrn v0.8b, v1.8b, #3
1918 // CHECK-ERROR: error: invalid operand for instruction
1919 // CHECK-ERROR: sqshrn v0.4h, v1.4h, #3
1921 // CHECK-ERROR: error: invalid operand for instruction
1922 // CHECK-ERROR: sqshrn v0.2s, v1.2s, #3
1924 // CHECK-ERROR: error: expected integer in range [1, 8]
1925 // CHECK-ERROR: sqshrn2 v0.16b, v1.8h, #17
1927 // CHECK-ERROR: error: expected integer in range [1, 16]
1928 // CHECK-ERROR: sqshrn2 v0.8h, v1.4s, #33
1930 // CHECK-ERROR: error: expected integer in range [1, 32]
1931 // CHECK-ERROR: sqshrn2 v0.4s, v1.2d, #65
1934 //------------------------------------------------------------------------------
1935 // Vector saturating shift right narrow by immediate
1936 //------------------------------------------------------------------------------
1937 uqshrn v0.8b, v1.8b, #3
1938 uqshrn v0.4h, v1.4h, #3
1939 uqshrn v0.2s, v1.2s, #3
1940 uqshrn2 v0.16b, v1.8h, #17
1941 uqshrn2 v0.8h, v1.4s, #33
1942 uqshrn2 v0.4s, v1.2d, #65
1944 // CHECK-ERROR: error: invalid operand for instruction
1945 // CHECK-ERROR: uqshrn v0.8b, v1.8b, #3
1947 // CHECK-ERROR: error: invalid operand for instruction
1948 // CHECK-ERROR: uqshrn v0.4h, v1.4h, #3
1950 // CHECK-ERROR: error: invalid operand for instruction
1951 // CHECK-ERROR: uqshrn v0.2s, v1.2s, #3
1953 // CHECK-ERROR: error: expected integer in range [1, 8]
1954 // CHECK-ERROR: uqshrn2 v0.16b, v1.8h, #17
1956 // CHECK-ERROR: error: expected integer in range [1, 16]
1957 // CHECK-ERROR: uqshrn2 v0.8h, v1.4s, #33
1959 // CHECK-ERROR: error: expected integer in range [1, 32]
1960 // CHECK-ERROR: uqshrn2 v0.4s, v1.2d, #65
1963 //------------------------------------------------------------------------------
1964 // Vector saturating shift right rounded narrow by immediate
1965 //------------------------------------------------------------------------------
1966 sqrshrn v0.8b, v1.8b, #3
1967 sqrshrn v0.4h, v1.4h, #3
1968 sqrshrn v0.2s, v1.2s, #3
1969 sqrshrn2 v0.16b, v1.8h, #17
1970 sqrshrn2 v0.8h, v1.4s, #33
1971 sqrshrn2 v0.4s, v1.2d, #65
1973 // CHECK-ERROR: error: invalid operand for instruction
1974 // CHECK-ERROR: sqrshrn v0.8b, v1.8b, #3
1976 // CHECK-ERROR: error: invalid operand for instruction
1977 // CHECK-ERROR: sqrshrn v0.4h, v1.4h, #3
1979 // CHECK-ERROR: error: invalid operand for instruction
1980 // CHECK-ERROR: sqrshrn v0.2s, v1.2s, #3
1982 // CHECK-ERROR: error: expected integer in range [1, 8]
1983 // CHECK-ERROR: sqrshrn2 v0.16b, v1.8h, #17
1985 // CHECK-ERROR: error: expected integer in range [1, 16]
1986 // CHECK-ERROR: sqrshrn2 v0.8h, v1.4s, #33
1988 // CHECK-ERROR: error: expected integer in range [1, 32]
1989 // CHECK-ERROR: sqrshrn2 v0.4s, v1.2d, #65
1992 //------------------------------------------------------------------------------
1993 // Vector saturating shift right rounded narrow by immediate
1994 //------------------------------------------------------------------------------
1995 uqrshrn v0.8b, v1.8b, #3
1996 uqrshrn v0.4h, v1.4h, #3
1997 uqrshrn v0.2s, v1.2s, #3
1998 uqrshrn2 v0.16b, v1.8h, #17
1999 uqrshrn2 v0.8h, v1.4s, #33
2000 uqrshrn2 v0.4s, v1.2d, #65
2002 // CHECK-ERROR: error: invalid operand for instruction
2003 // CHECK-ERROR: uqrshrn v0.8b, v1.8b, #3
2005 // CHECK-ERROR: error: invalid operand for instruction
2006 // CHECK-ERROR: uqrshrn v0.4h, v1.4h, #3
2008 // CHECK-ERROR: error: invalid operand for instruction
2009 // CHECK-ERROR: uqrshrn v0.2s, v1.2s, #3
2011 // CHECK-ERROR: error: expected integer in range [1, 8]
2012 // CHECK-ERROR: uqrshrn2 v0.16b, v1.8h, #17
2014 // CHECK-ERROR: error: expected integer in range [1, 16]
2015 // CHECK-ERROR: uqrshrn2 v0.8h, v1.4s, #33
2017 // CHECK-ERROR: error: expected integer in range [1, 32]
2018 // CHECK-ERROR: uqrshrn2 v0.4s, v1.2d, #65
2021 //------------------------------------------------------------------------------
2022 // Fixed-point convert to floating-point
2023 //------------------------------------------------------------------------------
2024 scvtf v0.2s, v1.2d, #3
2025 scvtf v0.4s, v1.4h, #3
2026 scvtf v0.2d, v1.2s, #3
2027 ucvtf v0.2s, v1.2s, #33
2028 ucvtf v0.4s, v1.4s, #33
2029 ucvtf v0.2d, v1.2d, #65
2031 // CHECK-ERROR: error: invalid operand for instruction
2032 // CHECK-ERROR: scvtf v0.2s, v1.2d, #3
2034 // CHECK-ERROR: error: invalid operand for instruction
2035 // CHECK-ERROR: scvtf v0.4s, v1.4h, #3
2037 // CHECK-ERROR: error: invalid operand for instruction
2038 // CHECK-ERROR: scvtf v0.2d, v1.2s, #3
2040 // CHECK-ERROR: error: expected integer in range [1, 32]
2041 // CHECK-ERROR: ucvtf v0.2s, v1.2s, #33
2043 // CHECK-ERROR: error: expected integer in range [1, 32]
2044 // CHECK-ERROR: ucvtf v0.4s, v1.4s, #33
2046 // CHECK-ERROR: error: expected integer in range [1, 64]
2047 // CHECK-ERROR: ucvtf v0.2d, v1.2d, #65
2050 //------------------------------------------------------------------------------
2051 // Floating-point convert to fixed-point
2052 //------------------------------------------------------------------------------
2053 fcvtzs v0.2s, v1.2d, #3
2054 fcvtzs v0.4s, v1.4h, #3
2055 fcvtzs v0.2d, v1.2s, #3
2056 fcvtzu v0.2s, v1.2s, #33
2057 fcvtzu v0.4s, v1.4s, #33
2058 fcvtzu v0.2d, v1.2d, #65
2060 // CHECK-ERROR: error: invalid operand for instruction
2061 // CHECK-ERROR: fcvtzs v0.2s, v1.2d, #3
2063 // CHECK-ERROR: error: invalid operand for instruction
2064 // CHECK-ERROR: fcvtzs v0.4s, v1.4h, #3
2066 // CHECK-ERROR: error: invalid operand for instruction
2067 // CHECK-ERROR: fcvtzs v0.2d, v1.2s, #3
2069 // CHECK-ERROR: error: expected integer in range [1, 32]
2070 // CHECK-ERROR: fcvtzu v0.2s, v1.2s, #33
2072 // CHECK-ERROR: error: expected integer in range [1, 32]
2073 // CHECK-ERROR: fcvtzu v0.4s, v1.4s, #33
2075 // CHECK-ERROR: error: expected integer in range [1, 64]
2076 // CHECK-ERROR: fcvtzu v0.2d, v1.2d, #65
2079 //----------------------------------------------------------------------
2080 // Vector operation on 3 operands with different types
2081 //----------------------------------------------------------------------
2083 // Mismatched and invalid vector types
2084 saddl v0.8h, v1.8h, v2.8b
2085 saddl v0.4s, v1.4s, v2.4h
2086 saddl v0.2d, v1.2d, v2.2s
2088 // CHECK-ERROR: error: invalid operand for instruction
2089 // CHECK-ERROR: saddl v0.8h, v1.8h, v2.8b
2091 // CHECK-ERROR: error: invalid operand for instruction
2092 // CHECK-ERROR: saddl v0.4s, v1.4s, v2.4h
2094 // CHECK-ERROR: error: invalid operand for instruction
2095 // CHECK-ERROR: saddl v0.2d, v1.2d, v2.2s
2098 saddl2 v0.4s, v1.8s, v2.8h
2099 saddl2 v0.8h, v1.16h, v2.16b
2100 saddl2 v0.2d, v1.4d, v2.4s
2102 // CHECK-ERROR: error: invalid operand for instruction
2103 // CHECK-ERROR: saddl2 v0.4s, v1.8s, v2.8h
2105 // CHECK-ERROR: error: invalid operand for instruction
2106 // CHECK-ERROR: saddl2 v0.8h, v1.16h, v2.16b
2108 // CHECK-ERROR: error: invalid operand for instruction
2109 // CHECK-ERROR: saddl2 v0.2d, v1.4d, v2.4s
2112 uaddl v0.8h, v1.8h, v2.8b
2113 uaddl v0.4s, v1.4s, v2.4h
2114 uaddl v0.2d, v1.2d, v2.2s
2116 // CHECK-ERROR: error: invalid operand for instruction
2117 // CHECK-ERROR: uaddl v0.8h, v1.8h, v2.8b
2119 // CHECK-ERROR: error: invalid operand for instruction
2120 // CHECK-ERROR: uaddl v0.4s, v1.4s, v2.4h
2122 // CHECK-ERROR: error: invalid operand for instruction
2123 // CHECK-ERROR: uaddl v0.2d, v1.2d, v2.2s
2126 uaddl2 v0.8h, v1.16h, v2.16b
2127 uaddl2 v0.4s, v1.8s, v2.8h
2128 uaddl2 v0.2d, v1.4d, v2.4s
2130 // CHECK-ERROR: error: invalid operand for instruction
2131 // CHECK-ERROR: uaddl2 v0.8h, v1.16h, v2.16b
2133 // CHECK-ERROR: error: invalid operand for instruction
2134 // CHECK-ERROR: uaddl2 v0.4s, v1.8s, v2.8h
2136 // CHECK-ERROR: error: invalid operand for instruction
2137 // CHECK-ERROR: uaddl2 v0.2d, v1.4d, v2.4s
2140 ssubl v0.8h, v1.8h, v2.8b
2141 ssubl v0.4s, v1.4s, v2.4h
2142 ssubl v0.2d, v1.2d, v2.2s
2144 // CHECK-ERROR: error: invalid operand for instruction
2145 // CHECK-ERROR: ssubl v0.8h, v1.8h, v2.8b
2147 // CHECK-ERROR: error: invalid operand for instruction
2148 // CHECK-ERROR: ssubl v0.4s, v1.4s, v2.4h
2150 // CHECK-ERROR: error: invalid operand for instruction
2151 // CHECK-ERROR: ssubl v0.2d, v1.2d, v2.2s
2154 ssubl2 v0.8h, v1.16h, v2.16b
2155 ssubl2 v0.4s, v1.8s, v2.8h
2156 ssubl2 v0.2d, v1.4d, v2.4s
2158 // CHECK-ERROR: error: invalid operand for instruction
2159 // CHECK-ERROR: ssubl2 v0.8h, v1.16h, v2.16b
2161 // CHECK-ERROR: error: invalid operand for instruction
2162 // CHECK-ERROR: ssubl2 v0.4s, v1.8s, v2.8h
2164 // CHECK-ERROR: error: invalid operand for instruction
2165 // CHECK-ERROR: ssubl2 v0.2d, v1.4d, v2.4s
2168 usubl v0.8h, v1.8h, v2.8b
2169 usubl v0.4s, v1.4s, v2.4h
2170 usubl v0.2d, v1.2d, v2.2s
2172 // CHECK-ERROR: error: invalid operand for instruction
2173 // CHECK-ERROR: usubl v0.8h, v1.8h, v2.8b
2175 // CHECK-ERROR: error: invalid operand for instruction
2176 // CHECK-ERROR: usubl v0.4s, v1.4s, v2.4h
2178 // CHECK-ERROR: error: invalid operand for instruction
2179 // CHECK-ERROR: usubl v0.2d, v1.2d, v2.2s
2182 usubl2 v0.8h, v1.16h, v2.16b
2183 usubl2 v0.4s, v1.8s, v2.8h
2184 usubl2 v0.2d, v1.4d, v2.4s
2186 // CHECK-ERROR: error: invalid operand for instruction
2187 // CHECK-ERROR: usubl2 v0.8h, v1.16h, v2.16b
2189 // CHECK-ERROR: error: invalid operand for instruction
2190 // CHECK-ERROR: usubl2 v0.4s, v1.8s, v2.8h
2192 // CHECK-ERROR: error: invalid operand for instruction
2193 // CHECK-ERROR: usubl2 v0.2d, v1.4d, v2.4s
2196 sabal v0.8h, v1.8h, v2.8b
2197 sabal v0.4s, v1.4s, v2.4h
2198 sabal v0.2d, v1.2d, v2.2s
2200 // CHECK-ERROR: error: invalid operand for instruction
2201 // CHECK-ERROR: sabal v0.8h, v1.8h, v2.8b
2203 // CHECK-ERROR: error: invalid operand for instruction
2204 // CHECK-ERROR: sabal v0.4s, v1.4s, v2.4h
2206 // CHECK-ERROR: error: invalid operand for instruction
2207 // CHECK-ERROR: sabal v0.2d, v1.2d, v2.2s
2210 sabal2 v0.8h, v1.16h, v2.16b
2211 sabal2 v0.4s, v1.8s, v2.8h
2212 sabal2 v0.2d, v1.4d, v2.4s
2214 // CHECK-ERROR: error: invalid operand for instruction
2215 // CHECK-ERROR: sabal2 v0.8h, v1.16h, v2.16b
2217 // CHECK-ERROR: error: invalid operand for instruction
2218 // CHECK-ERROR: sabal2 v0.4s, v1.8s, v2.8h
2220 // CHECK-ERROR: error: invalid operand for instruction
2221 // CHECK-ERROR: sabal2 v0.2d, v1.4d, v2.4s
2224 uabal v0.8h, v1.8h, v2.8b
2225 uabal v0.4s, v1.4s, v2.4h
2226 uabal v0.2d, v1.2d, v2.2s
2228 // CHECK-ERROR: error: invalid operand for instruction
2229 // CHECK-ERROR: uabal v0.8h, v1.8h, v2.8b
2231 // CHECK-ERROR: error: invalid operand for instruction
2232 // CHECK-ERROR: uabal v0.4s, v1.4s, v2.4h
2234 // CHECK-ERROR: error: invalid operand for instruction
2235 // CHECK-ERROR: uabal v0.2d, v1.2d, v2.2s
2238 uabal2 v0.8h, v1.16h, v2.16b
2239 uabal2 v0.4s, v1.8s, v2.8h
2240 uabal2 v0.2d, v1.4d, v2.4s
2242 // CHECK-ERROR: error: invalid operand for instruction
2243 // CHECK-ERROR: uabal2 v0.8h, v1.16h, v2.16b
2245 // CHECK-ERROR: error: invalid operand for instruction
2246 // CHECK-ERROR: uabal2 v0.4s, v1.8s, v2.8h
2248 // CHECK-ERROR: error: invalid operand for instruction
2249 // CHECK-ERROR: uabal2 v0.2d, v1.4d, v2.4s
2252 sabdl v0.8h, v1.8h, v2.8b
2253 sabdl v0.4s, v1.4s, v2.4h
2254 sabdl v0.2d, v1.2d, v2.2s
2256 // CHECK-ERROR: error: invalid operand for instruction
2257 // CHECK-ERROR: sabdl v0.8h, v1.8h, v2.8b
2259 // CHECK-ERROR: error: invalid operand for instruction
2260 // CHECK-ERROR: sabdl v0.4s, v1.4s, v2.4h
2262 // CHECK-ERROR: error: invalid operand for instruction
2263 // CHECK-ERROR: sabdl v0.2d, v1.2d, v2.2s
2266 sabdl2 v0.8h, v1.16h, v2.16b
2267 sabdl2 v0.4s, v1.8s, v2.8h
2268 sabdl2 v0.2d, v1.4d, v2.4s
2270 // CHECK-ERROR: error: invalid operand for instruction
2271 // CHECK-ERROR: sabdl2 v0.8h, v1.16h, v2.16b
2273 // CHECK-ERROR: error: invalid operand for instruction
2274 // CHECK-ERROR: sabdl2 v0.4s, v1.8s, v2.8h
2276 // CHECK-ERROR: error: invalid operand for instruction
2277 // CHECK-ERROR: sabdl2 v0.2d, v1.4d, v2.4s
2280 uabdl v0.8h, v1.8h, v2.8b
2281 uabdl v0.4s, v1.4s, v2.4h
2282 uabdl v0.2d, v1.2d, v2.2s
2284 // CHECK-ERROR: error: invalid operand for instruction
2285 // CHECK-ERROR: uabdl v0.8h, v1.8h, v2.8b
2287 // CHECK-ERROR: error: invalid operand for instruction
2288 // CHECK-ERROR: uabdl v0.4s, v1.4s, v2.4h
2290 // CHECK-ERROR: error: invalid operand for instruction
2291 // CHECK-ERROR: uabdl v0.2d, v1.2d, v2.2s
2294 uabdl2 v0.8h, v1.16h, v2.16b
2295 uabdl2 v0.4s, v1.8s, v2.8h
2296 uabdl2 v0.2d, v1.4d, v2.4s
2298 // CHECK-ERROR: error: invalid operand for instruction
2299 // CHECK-ERROR: uabdl2 v0.8h, v1.16h, v2.16b
2301 // CHECK-ERROR: error: invalid operand for instruction
2302 // CHECK-ERROR: uabdl2 v0.4s, v1.8s, v2.8h
2304 // CHECK-ERROR: error: invalid operand for instruction
2305 // CHECK-ERROR: uabdl2 v0.2d, v1.4d, v2.4s
2308 smlal v0.8h, v1.8h, v2.8b
2309 smlal v0.4s, v1.4s, v2.4h
2310 smlal v0.2d, v1.2d, v2.2s
2312 // CHECK-ERROR: error: invalid operand for instruction
2313 // CHECK-ERROR: smlal v0.8h, v1.8h, v2.8b
2315 // CHECK-ERROR: error: invalid operand for instruction
2316 // CHECK-ERROR: smlal v0.4s, v1.4s, v2.4h
2318 // CHECK-ERROR: error: invalid operand for instruction
2319 // CHECK-ERROR: smlal v0.2d, v1.2d, v2.2s
2322 smlal2 v0.8h, v1.16h, v2.16b
2323 smlal2 v0.4s, v1.8s, v2.8h
2324 smlal2 v0.2d, v1.4d, v2.4s
2326 // CHECK-ERROR: error: invalid operand for instruction
2327 // CHECK-ERROR: smlal2 v0.8h, v1.16h, v2.16b
2329 // CHECK-ERROR: error: invalid operand for instruction
2330 // CHECK-ERROR: smlal2 v0.4s, v1.8s, v2.8h
2332 // CHECK-ERROR: error: invalid operand for instruction
2333 // CHECK-ERROR: smlal2 v0.2d, v1.4d, v2.4s
2336 umlal v0.8h, v1.8h, v2.8b
2337 umlal v0.4s, v1.4s, v2.4h
2338 umlal v0.2d, v1.2d, v2.2s
2340 // CHECK-ERROR: error: invalid operand for instruction
2341 // CHECK-ERROR: umlal v0.8h, v1.8h, v2.8b
2343 // CHECK-ERROR: error: invalid operand for instruction
2344 // CHECK-ERROR: umlal v0.4s, v1.4s, v2.4h
2346 // CHECK-ERROR: error: invalid operand for instruction
2347 // CHECK-ERROR: umlal v0.2d, v1.2d, v2.2s
2350 umlal2 v0.8h, v1.16h, v2.16b
2351 umlal2 v0.4s, v1.8s, v2.8h
2352 umlal2 v0.2d, v1.4d, v2.4s
2354 // CHECK-ERROR: error: invalid operand for instruction
2355 // CHECK-ERROR: umlal2 v0.8h, v1.16h, v2.16b
2357 // CHECK-ERROR: error: invalid operand for instruction
2358 // CHECK-ERROR: umlal2 v0.4s, v1.8s, v2.8h
2360 // CHECK-ERROR: error: invalid operand for instruction
2361 // CHECK-ERROR: umlal2 v0.2d, v1.4d, v2.4s
2364 smlsl v0.8h, v1.8h, v2.8b
2365 smlsl v0.4s, v1.4s, v2.4h
2366 smlsl v0.2d, v1.2d, v2.2s
2368 // CHECK-ERROR: error: invalid operand for instruction
2369 // CHECK-ERROR: smlsl v0.8h, v1.8h, v2.8b
2371 // CHECK-ERROR: error: invalid operand for instruction
2372 // CHECK-ERROR: smlsl v0.4s, v1.4s, v2.4h
2374 // CHECK-ERROR: error: invalid operand for instruction
2375 // CHECK-ERROR: smlsl v0.2d, v1.2d, v2.2s
2378 smlsl2 v0.8h, v1.16h, v2.16b
2379 smlsl2 v0.4s, v1.8s, v2.8h
2380 smlsl2 v0.2d, v1.4d, v2.4s
2382 // CHECK-ERROR: error: invalid operand for instruction
2383 // CHECK-ERROR: smlsl2 v0.8h, v1.16h, v2.16b
2385 // CHECK-ERROR: error: invalid operand for instruction
2386 // CHECK-ERROR: smlsl2 v0.4s, v1.8s, v2.8h
2388 // CHECK-ERROR: error: invalid operand for instruction
2389 // CHECK-ERROR: smlsl2 v0.2d, v1.4d, v2.4s
2392 umlsl v0.8h, v1.8h, v2.8b
2393 umlsl v0.4s, v1.4s, v2.4h
2394 umlsl v0.2d, v1.2d, v2.2s
2396 // CHECK-ERROR: error: invalid operand for instruction
2397 // CHECK-ERROR: umlsl v0.8h, v1.8h, v2.8b
2399 // CHECK-ERROR: error: invalid operand for instruction
2400 // CHECK-ERROR: umlsl v0.4s, v1.4s, v2.4h
2402 // CHECK-ERROR: error: invalid operand for instruction
2403 // CHECK-ERROR: umlsl v0.2d, v1.2d, v2.2s
2406 umlsl2 v0.8h, v1.16h, v2.16b
2407 umlsl2 v0.4s, v1.8s, v2.8h
2408 umlsl2 v0.2d, v1.4d, v2.4s
2410 // CHECK-ERROR: error: invalid operand for instruction
2411 // CHECK-ERROR: umlsl2 v0.8h, v1.16h, v2.16b
2413 // CHECK-ERROR: error: invalid operand for instruction
2414 // CHECK-ERROR: umlsl2 v0.4s, v1.8s, v2.8h
2416 // CHECK-ERROR: error: invalid operand for instruction
2417 // CHECK-ERROR: umlsl2 v0.2d, v1.4d, v2.4s
2420 smull v0.8h, v1.8h, v2.8b
2421 smull v0.4s, v1.4s, v2.4h
2422 smull v0.2d, v1.2d, v2.2s
2424 // CHECK-ERROR: error: invalid operand for instruction
2425 // CHECK-ERROR: smull v0.8h, v1.8h, v2.8b
2427 // CHECK-ERROR: error: invalid operand for instruction
2428 // CHECK-ERROR: smull v0.4s, v1.4s, v2.4h
2430 // CHECK-ERROR: error: invalid operand for instruction
2431 // CHECK-ERROR: smull v0.2d, v1.2d, v2.2s
2434 smull2 v0.8h, v1.16h, v2.16b
2435 smull2 v0.4s, v1.8s, v2.8h
2436 smull2 v0.2d, v1.4d, v2.4s
2438 // CHECK-ERROR: error: invalid operand for instruction
2439 // CHECK-ERROR: smull2 v0.8h, v1.16h, v2.16b
2441 // CHECK-ERROR: error: invalid operand for instruction
2442 // CHECK-ERROR: smull2 v0.4s, v1.8s, v2.8h
2444 // CHECK-ERROR: error: invalid operand for instruction
2445 // CHECK-ERROR: smull2 v0.2d, v1.4d, v2.4s
2448 umull v0.8h, v1.8h, v2.8b
2449 umull v0.4s, v1.4s, v2.4h
2450 umull v0.2d, v1.2d, v2.2s
2452 // CHECK-ERROR: error: invalid operand for instruction
2453 // CHECK-ERROR: umull v0.8h, v1.8h, v2.8b
2455 // CHECK-ERROR: error: invalid operand for instruction
2456 // CHECK-ERROR: umull v0.4s, v1.4s, v2.4h
2458 // CHECK-ERROR: error: invalid operand for instruction
2459 // CHECK-ERROR: umull v0.2d, v1.2d, v2.2s
2462 umull2 v0.8h, v1.16h, v2.16b
2463 umull2 v0.4s, v1.8s, v2.8h
2464 umull2 v0.2d, v1.4d, v2.4s
2466 // CHECK-ERROR: error: invalid operand for instruction
2467 // CHECK-ERROR: umull2 v0.8h, v1.16h, v2.16b
2469 // CHECK-ERROR: error: invalid operand for instruction
2470 // CHECK-ERROR: umull2 v0.4s, v1.8s, v2.8h
2472 // CHECK-ERROR: error: invalid operand for instruction
2473 // CHECK-ERROR: umull2 v0.2d, v1.4d, v2.4s
2476 //------------------------------------------------------------------------------
2478 //------------------------------------------------------------------------------
2480 sqdmlal v0.4s, v1.4s, v2.4h
2481 sqdmlal v0.2d, v1.2d, v2.2s
2483 // CHECK-ERROR: error: invalid operand for instruction
2484 // CHECK-ERROR: sqdmlal v0.4s, v1.4s, v2.4h
2486 // CHECK-ERROR: error: invalid operand for instruction
2487 // CHECK-ERROR: sqdmlal v0.2d, v1.2d, v2.2s
2490 sqdmlal2 v0.4s, v1.8s, v2.8h
2491 sqdmlal2 v0.2d, v1.4d, v2.4s
2493 // CHECK-ERROR: error: invalid operand for instruction
2494 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8s, v2.8h
2496 // CHECK-ERROR: error: invalid operand for instruction
2497 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4d, v2.4s
2500 // Mismatched vector types
2501 sqdmlal v0.8h, v1.8b, v2.8b
2502 sqdmlal2 v0.8h, v1.16b, v2.16b
2504 // CHECK-ERROR: error: invalid operand for instruction
2505 // CHECK-ERROR: sqdmlal v0.8h, v1.8b, v2.8b
2507 // CHECK-ERROR: error: invalid operand for instruction
2508 // CHECK-ERROR: sqdmlal2 v0.8h, v1.16b, v2.16b
2511 sqdmlsl v0.4s, v1.4s, v2.4h
2512 sqdmlsl v0.2d, v1.2d, v2.2s
2514 // CHECK-ERROR: error: invalid operand for instruction
2515 // CHECK-ERROR: sqdmlsl v0.4s, v1.4s, v2.4h
2517 // CHECK-ERROR: error: invalid operand for instruction
2518 // CHECK-ERROR: sqdmlsl v0.2d, v1.2d, v2.2s
2521 sqdmlsl2 v0.4s, v1.8s, v2.8h
2522 sqdmlsl2 v0.2d, v1.4d, v2.4s
2524 // CHECK-ERROR: error: invalid operand for instruction
2525 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8s, v2.8h
2527 // CHECK-ERROR: error: invalid operand for instruction
2528 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4d, v2.4s
2531 // Mismatched vector types
2532 sqdmlsl v0.8h, v1.8b, v2.8b
2533 sqdmlsl2 v0.8h, v1.16b, v2.16b
2535 // CHECK-ERROR: error: invalid operand for instruction
2536 // CHECK-ERROR: sqdmlsl v0.8h, v1.8b, v2.8b
2538 // CHECK-ERROR: error: invalid operand for instruction
2539 // CHECK-ERROR: sqdmlsl2 v0.8h, v1.16b, v2.16b
2543 sqdmull v0.4s, v1.4s, v2.4h
2544 sqdmull v0.2d, v1.2d, v2.2s
2546 // CHECK-ERROR: error: invalid operand for instruction
2547 // CHECK-ERROR: sqdmull v0.4s, v1.4s, v2.4h
2549 // CHECK-ERROR: error: invalid operand for instruction
2550 // CHECK-ERROR: sqdmull v0.2d, v1.2d, v2.2s
2553 sqdmull2 v0.4s, v1.8s, v2.8h
2554 sqdmull2 v0.2d, v1.4d, v2.4s
2556 // CHECK-ERROR: error: invalid operand for instruction
2557 // CHECK-ERROR: sqdmull2 v0.4s, v1.8s, v2.8h
2559 // CHECK-ERROR: error: invalid operand for instruction
2560 // CHECK-ERROR: sqdmull2 v0.2d, v1.4d, v2.4s
2563 // Mismatched vector types
2564 sqdmull v0.8h, v1.8b, v2.8b
2565 sqdmull2 v0.8h, v1.16b, v2.16b
2567 // CHECK-ERROR: error: invalid operand for instruction
2568 // CHECK-ERROR: sqdmull v0.8h, v1.8b, v2.8b
2570 // CHECK-ERROR: error: invalid operand for instruction
2571 // CHECK-ERROR: sqdmull2 v0.8h, v1.16b, v2.16b
2575 //------------------------------------------------------------------------------
2577 //------------------------------------------------------------------------------
2579 pmull v0.8h, v1.8h, v2.8b
2581 // CHECK-ERROR: error: invalid operand for instruction
2582 // CHECK-ERROR: pmull v0.8h, v1.8h, v2.8b
2585 // Mismatched vector types
2586 pmull v0.4s, v1.4h, v2.4h
2587 pmull v0.2d, v1.2s, v2.2s
2589 // CHECK-ERROR: error: invalid operand for instruction
2590 // CHECK-ERROR: pmull v0.4s, v1.4h, v2.4h
2592 // CHECK-ERROR: error: invalid operand for instruction
2593 // CHECK-ERROR: pmull v0.2d, v1.2s, v2.2s
2597 pmull2 v0.8h, v1.16h, v2.16b
2599 // CHECK-ERROR: error: invalid operand for instruction
2600 // CHECK-ERROR: pmull2 v0.8h, v1.16h, v2.16b
2603 // Mismatched vector types
2604 pmull2 v0.4s, v1.8h v2.8h
2605 pmull2 v0.2d, v1.4s, v2.4s
2607 // CHECK-ERROR: error: expected comma before next operand
2608 // CHECK-ERROR: pmull2 v0.4s, v1.8h v2.8h
2610 // CHECK-ERROR: error: invalid operand for instruction
2611 // CHECK-ERROR: pmull2 v0.2d, v1.4s, v2.4s
2614 //------------------------------------------------------------------------------
2616 //------------------------------------------------------------------------------
2618 saddw v0.8h, v1.8h, v2.8h
2619 saddw v0.4s, v1.4s, v2.4s
2620 saddw v0.2d, v1.2d, v2.2d
2622 // CHECK-ERROR: error: invalid operand for instruction
2623 // CHECK-ERROR: saddw v0.8h, v1.8h, v2.8h
2625 // CHECK-ERROR: error: invalid operand for instruction
2626 // CHECK-ERROR: saddw v0.4s, v1.4s, v2.4s
2628 // CHECK-ERROR: error: invalid operand for instruction
2629 // CHECK-ERROR: saddw v0.2d, v1.2d, v2.2d
2632 saddw2 v0.8h, v1.8h, v2.16h
2633 saddw2 v0.4s, v1.4s, v2.8s
2634 saddw2 v0.2d, v1.2d, v2.4d
2636 // CHECK-ERROR: error: invalid operand for instruction
2637 // CHECK-ERROR: saddw2 v0.8h, v1.8h, v2.16h
2639 // CHECK-ERROR: error: invalid operand for instruction
2640 // CHECK-ERROR: saddw2 v0.4s, v1.4s, v2.8s
2642 // CHECK-ERROR: error: invalid operand for instruction
2643 // CHECK-ERROR: saddw2 v0.2d, v1.2d, v2.4d
2646 uaddw v0.8h, v1.8h, v2.8h
2647 uaddw v0.4s, v1.4s, v2.4s
2648 uaddw v0.2d, v1.2d, v2.2d
2650 // CHECK-ERROR: error: invalid operand for instruction
2651 // CHECK-ERROR: uaddw v0.8h, v1.8h, v2.8h
2653 // CHECK-ERROR: error: invalid operand for instruction
2654 // CHECK-ERROR: uaddw v0.4s, v1.4s, v2.4s
2656 // CHECK-ERROR: error: invalid operand for instruction
2657 // CHECK-ERROR: uaddw v0.2d, v1.2d, v2.2d
2660 uaddw2 v0.8h, v1.8h, v2.16h
2661 uaddw2 v0.4s, v1.4s, v2.8s
2662 uaddw2 v0.2d, v1.2d, v2.4d
2664 // CHECK-ERROR: error: invalid operand for instruction
2665 // CHECK-ERROR: uaddw2 v0.8h, v1.8h, v2.16h
2667 // CHECK-ERROR: error: invalid operand for instruction
2668 // CHECK-ERROR: uaddw2 v0.4s, v1.4s, v2.8s
2670 // CHECK-ERROR: error: invalid operand for instruction
2671 // CHECK-ERROR: uaddw2 v0.2d, v1.2d, v2.4d
2674 ssubw v0.8h, v1.8h, v2.8h
2675 ssubw v0.4s, v1.4s, v2.4s
2676 ssubw v0.2d, v1.2d, v2.2d
2678 // CHECK-ERROR: error: invalid operand for instruction
2679 // CHECK-ERROR: ssubw v0.8h, v1.8h, v2.8h
2681 // CHECK-ERROR: error: invalid operand for instruction
2682 // CHECK-ERROR: ssubw v0.4s, v1.4s, v2.4s
2684 // CHECK-ERROR: error: invalid operand for instruction
2685 // CHECK-ERROR: ssubw v0.2d, v1.2d, v2.2d
2688 ssubw2 v0.8h, v1.8h, v2.16h
2689 ssubw2 v0.4s, v1.4s, v2.8s
2690 ssubw2 v0.2d, v1.2d, v2.4d
2692 // CHECK-ERROR: error: invalid operand for instruction
2693 // CHECK-ERROR: ssubw2 v0.8h, v1.8h, v2.16h
2695 // CHECK-ERROR: error: invalid operand for instruction
2696 // CHECK-ERROR: ssubw2 v0.4s, v1.4s, v2.8s
2698 // CHECK-ERROR: error: invalid operand for instruction
2699 // CHECK-ERROR: ssubw2 v0.2d, v1.2d, v2.4d
2702 usubw v0.8h, v1.8h, v2.8h
2703 usubw v0.4s, v1.4s, v2.4s
2704 usubw v0.2d, v1.2d, v2.2d
2706 // CHECK-ERROR: error: invalid operand for instruction
2707 // CHECK-ERROR: usubw v0.8h, v1.8h, v2.8h
2709 // CHECK-ERROR: error: invalid operand for instruction
2710 // CHECK-ERROR: usubw v0.4s, v1.4s, v2.4s
2712 // CHECK-ERROR: error: invalid operand for instruction
2713 // CHECK-ERROR: usubw v0.2d, v1.2d, v2.2d
2716 usubw2 v0.8h, v1.8h, v2.16h
2717 usubw2 v0.4s, v1.4s, v2.8s
2718 usubw2 v0.2d, v1.2d, v2.4d
2720 // CHECK-ERROR: error: invalid operand for instruction
2721 // CHECK-ERROR: usubw2 v0.8h, v1.8h, v2.16h
2723 // CHECK-ERROR: error: invalid operand for instruction
2724 // CHECK-ERROR: usubw2 v0.4s, v1.4s, v2.8s
2726 // CHECK-ERROR: error: invalid operand for instruction
2727 // CHECK-ERROR: usubw2 v0.2d, v1.2d, v2.4d
2730 //------------------------------------------------------------------------------
2732 //------------------------------------------------------------------------------
2734 addhn v0.8b, v1.8h, v2.8d
2735 addhn v0.4h, v1.4s, v2.4h
2736 addhn v0.2s, v1.2d, v2.2s
2738 // CHECK-ERROR: error: invalid operand for instruction
2739 // CHECK-ERROR: addhn v0.8b, v1.8h, v2.8d
2741 // CHECK-ERROR: error: invalid operand for instruction
2742 // CHECK-ERROR: addhn v0.4h, v1.4s, v2.4h
2744 // CHECK-ERROR: error: invalid operand for instruction
2745 // CHECK-ERROR: addhn v0.2s, v1.2d, v2.2s
2748 addhn2 v0.16b, v1.8h, v2.8b
2749 addhn2 v0.8h, v1.4s, v2.4h
2750 addhn2 v0.4s, v1.2d, v2.2s
2752 // CHECK-ERROR: error: invalid operand for instruction
2753 // CHECK-ERROR: addhn2 v0.16b, v1.8h, v2.8b
2755 // CHECK-ERROR: error: invalid operand for instruction
2756 // CHECK-ERROR: addhn2 v0.8h, v1.4s, v2.4h
2758 // CHECK-ERROR: error: invalid operand for instruction
2759 // CHECK-ERROR: addhn2 v0.4s, v1.2d, v2.2s
2762 raddhn v0.8b, v1.8h, v2.8b
2763 raddhn v0.4h, v1.4s, v2.4h
2764 raddhn v0.2s, v1.2d, v2.2s
2766 // CHECK-ERROR: error: invalid operand for instruction
2767 // CHECK-ERROR: raddhn v0.8b, v1.8h, v2.8b
2769 // CHECK-ERROR: error: invalid operand for instruction
2770 // CHECK-ERROR: raddhn v0.4h, v1.4s, v2.4h
2772 // CHECK-ERROR: error: invalid operand for instruction
2773 // CHECK-ERROR: raddhn v0.2s, v1.2d, v2.2s
2776 raddhn2 v0.16b, v1.8h, v2.8b
2777 raddhn2 v0.8h, v1.4s, v2.4h
2778 raddhn2 v0.4s, v1.2d, v2.2s
2780 // CHECK-ERROR: error: invalid operand for instruction
2781 // CHECK-ERROR: raddhn2 v0.16b, v1.8h, v2.8b
2783 // CHECK-ERROR: error: invalid operand for instruction
2784 // CHECK-ERROR: raddhn2 v0.8h, v1.4s, v2.4h
2786 // CHECK-ERROR: error: invalid operand for instruction
2787 // CHECK-ERROR: raddhn2 v0.4s, v1.2d, v2.2s
2790 rsubhn v0.8b, v1.8h, v2.8b
2791 rsubhn v0.4h, v1.4s, v2.4h
2792 rsubhn v0.2s, v1.2d, v2.2s
2794 // CHECK-ERROR: error: invalid operand for instruction
2795 // CHECK-ERROR: rsubhn v0.8b, v1.8h, v2.8b
2797 // CHECK-ERROR: error: invalid operand for instruction
2798 // CHECK-ERROR: rsubhn v0.4h, v1.4s, v2.4h
2800 // CHECK-ERROR: error: invalid operand for instruction
2801 // CHECK-ERROR: rsubhn v0.2s, v1.2d, v2.2s
2804 rsubhn2 v0.16b, v1.8h, v2.8b
2805 rsubhn2 v0.8h, v1.4s, v2.4h
2806 rsubhn2 v0.4s, v1.2d, v2.2s
2808 // CHECK-ERROR: error: invalid operand for instruction
2809 // CHECK-ERROR: rsubhn2 v0.16b, v1.8h, v2.8b
2811 // CHECK-ERROR: error: invalid operand for instruction
2812 // CHECK-ERROR: rsubhn2 v0.8h, v1.4s, v2.4h
2814 // CHECK-ERROR: error: invalid operand for instruction
2815 // CHECK-ERROR: rsubhn2 v0.4s, v1.2d, v2.2s
2818 //----------------------------------------------------------------------
2819 // Scalar Reduce Add Pairwise (Integer)
2820 //----------------------------------------------------------------------
2821 // invalid vector types
2825 // CHECK-ERROR: error: invalid operand for instruction
2826 // CHECK-ERROR: addp s0, d1.2d
2828 // CHECK-ERROR: error: invalid operand for instruction
2829 // CHECK-ERROR: addp d0, d1.2s
2832 //----------------------------------------------------------------------
2833 // Scalar Reduce Add Pairwise (Floating Point)
2834 //----------------------------------------------------------------------
2835 // invalid vector types
2839 // CHECK-ERROR: error: invalid operand for instruction
2840 // CHECK-ERROR: faddp s0, d1.2d
2842 // CHECK-ERROR: error: invalid operand for instruction
2843 // CHECK-ERROR: faddp d0, d1.2s
2846 //----------------------------------------------------------------------
2847 // Scalar Reduce Maximum Pairwise (Floating Point)
2848 //----------------------------------------------------------------------
2849 // mismatched and invalid vector types
2854 // CHECK-ERROR: error: invalid operand for instruction
2855 // CHECK-ERROR: fmaxp s0, v1.2d
2857 // CHECK-ERROR: error: invalid operand for instruction
2858 // CHECK-ERROR: fmaxp d31, v2.2s
2860 // CHECK-ERROR: error: invalid operand for instruction
2861 // CHECK-ERROR: fmaxp h3, v2.2s
2865 //----------------------------------------------------------------------
2866 // Scalar Reduce Minimum Pairwise (Floating Point)
2867 //----------------------------------------------------------------------
2868 // mismatched and invalid vector types
2873 // CHECK-ERROR: error: invalid operand for instruction
2874 // CHECK-ERROR: fminp s0, v1.4h
2876 // CHECK-ERROR: error: invalid operand for instruction
2877 // CHECK-ERROR: fminp d31, v2.8h
2879 // CHECK-ERROR: error: invalid operand for instruction
2880 // CHECK-ERROR: fminp b3, v2.2s
2884 //----------------------------------------------------------------------
2885 // Scalar Reduce maxNum Pairwise (Floating Point)
2886 //----------------------------------------------------------------------
2887 // mismatched and invalid vector types
2890 fmaxnmp v1.2s, v2.2s
2892 // CHECK-ERROR: error: invalid operand for instruction
2893 // CHECK-ERROR: fmaxnmp s0, v1.8b
2895 // CHECK-ERROR: error: invalid operand for instruction
2896 // CHECK-ERROR: fmaxnmp d31, v2.16b
2898 // CHECK-ERROR: error: too few operands for instruction
2899 // CHECK-ERROR: fmaxnmp v1.2s, v2.2s
2902 //----------------------------------------------------------------------
2903 // Scalar Reduce minNum Pairwise (Floating Point)
2904 //----------------------------------------------------------------------
2905 // mismatched and invalid vector types
2908 fminnmp v1.4s, v2.2d
2910 // CHECK-ERROR: error: invalid operand for instruction
2911 // CHECK-ERROR: fminnmp s0, v1.2d
2913 // CHECK-ERROR: error: invalid operand for instruction
2914 // CHECK-ERROR: fminnmp d31, v2.4s
2916 // CHECK-ERROR: error: invalid operand for instruction
2917 // CHECK-ERROR: fminnmp v1.4s, v2.2d
2920 mla v0.2d, v1.2d, v16.d[1]
2921 mla v0.2s, v1.2s, v2.s[4]
2922 mla v0.4s, v1.4s, v2.s[4]
2923 mla v0.2h, v1.2h, v2.h[1]
2924 mla v0.4h, v1.4h, v2.h[8]
2925 mla v0.8h, v1.8h, v2.h[8]
2926 mla v0.4h, v1.4h, v16.h[2]
2927 mla v0.8h, v1.8h, v16.h[2]
2929 // CHECK-ERROR: error: invalid operand for instruction
2930 // CHECK-ERROR: mla v0.2d, v1.2d, v16.d[1]
2932 // CHECK-ERROR: error: lane number incompatible with layout
2933 // CHECK-ERROR: mla v0.2s, v1.2s, v2.s[4]
2935 // CHECK-ERROR: error: lane number incompatible with layout
2936 // CHECK-ERROR: mla v0.4s, v1.4s, v2.s[4]
2938 // CHECK-ERROR: error: invalid operand for instruction
2939 // CHECK-ERROR: mla v0.2h, v1.2h, v2.h[1]
2941 // CHECK-ERROR: error: lane number incompatible with layout
2942 // CHECK-ERROR: mla v0.4h, v1.4h, v2.h[8]
2944 // CHECK-ERROR: error: lane number incompatible with layout
2945 // CHECK-ERROR: mla v0.8h, v1.8h, v2.h[8]
2947 // CHECK-ERROR: error: invalid operand for instruction
2948 // CHECK-ERROR: mla v0.4h, v1.4h, v16.h[2]
2950 // CHECK-ERROR: error: invalid operand for instruction
2951 // CHECK-ERROR: mla v0.8h, v1.8h, v16.h[2]
2954 mls v0.2d, v1.2d, v16.d[1]
2955 mls v0.2s, v1.2s, v2.s[4]
2956 mls v0.4s, v1.4s, v2.s[4]
2957 mls v0.2h, v1.2h, v2.h[1]
2958 mls v0.4h, v1.4h, v2.h[8]
2959 mls v0.8h, v1.8h, v2.h[8]
2960 mls v0.4h, v1.4h, v16.h[2]
2961 mls v0.8h, v1.8h, v16.h[2]
2963 // CHECK-ERROR: error: invalid operand for instruction
2964 // CHECK-ERROR: mls v0.2d, v1.2d, v16.d[1]
2966 // CHECK-ERROR: error: lane number incompatible with layout
2967 // CHECK-ERROR: mls v0.2s, v1.2s, v2.s[4]
2969 // CHECK-ERROR: error: lane number incompatible with layout
2970 // CHECK-ERROR: mls v0.4s, v1.4s, v2.s[4]
2972 // CHECK-ERROR: error: invalid operand for instruction
2973 // CHECK-ERROR: mls v0.2h, v1.2h, v2.h[1]
2975 // CHECK-ERROR: error: lane number incompatible with layout
2976 // CHECK-ERROR: mls v0.4h, v1.4h, v2.h[8]
2978 // CHECK-ERROR: error: lane number incompatible with layout
2979 // CHECK-ERROR: mls v0.8h, v1.8h, v2.h[8]
2981 // CHECK-ERROR: error: invalid operand for instruction
2982 // CHECK-ERROR: mls v0.4h, v1.4h, v16.h[2]
2984 // CHECK-ERROR: error: invalid operand for instruction
2985 // CHECK-ERROR: mls v0.8h, v1.8h, v16.h[2]
2988 fmla v0.4h, v1.4h, v2.h[2]
2989 fmla v0.8h, v1.8h, v2.h[2]
2990 fmla v0.2s, v1.2s, v2.s[4]
2991 fmla v0.2s, v1.2s, v22.s[4]
2992 fmla v3.4s, v8.4s, v2.s[4]
2993 fmla v3.4s, v8.4s, v22.s[4]
2994 fmla v0.2d, v1.2d, v2.d[2]
2995 fmla v0.2d, v1.2d, v22.d[2]
2997 // CHECK-ERROR: error: invalid operand for instruction
2998 // CHECK-ERROR: fmla v0.4h, v1.4h, v2.h[2]
3000 // CHECK-ERROR: error: invalid operand for instruction
3001 // CHECK-ERROR: fmla v0.8h, v1.8h, v2.h[2]
3003 // CHECK-ERROR: error: lane number incompatible with layout
3004 // CHECK-ERROR: fmla v0.2s, v1.2s, v2.s[4]
3006 // CHECK-ERROR: error: lane number incompatible with layout
3007 // CHECK-ERROR: fmla v0.2s, v1.2s, v22.s[4]
3009 // CHECK-ERROR: error: lane number incompatible with layout
3010 // CHECK-ERROR: fmla v3.4s, v8.4s, v2.s[4]
3012 // CHECK-ERROR: error: lane number incompatible with layout
3013 // CHECK-ERROR: fmla v3.4s, v8.4s, v22.s[4]
3015 // CHECK-ERROR: error: lane number incompatible with layout
3016 // CHECK-ERROR: fmla v0.2d, v1.2d, v2.d[2]
3018 // CHECK-ERROR: error: lane number incompatible with layout
3019 // CHECK-ERROR: fmla v0.2d, v1.2d, v22.d[2]
3022 fmls v0.4h, v1.4h, v2.h[2]
3023 fmls v0.8h, v1.8h, v2.h[2]
3024 fmls v0.2s, v1.2s, v2.s[4]
3025 fmls v0.2s, v1.2s, v22.s[4]
3026 fmls v3.4s, v8.4s, v2.s[4]
3027 fmls v3.4s, v8.4s, v22.s[4]
3028 fmls v0.2d, v1.2d, v2.d[2]
3029 fmls v0.2d, v1.2d, v22.d[2]
3031 // CHECK-ERROR: error: invalid operand for instruction
3032 // CHECK-ERROR: fmls v0.4h, v1.4h, v2.h[2]
3034 // CHECK-ERROR: error: invalid operand for instruction
3035 // CHECK-ERROR: fmls v0.8h, v1.8h, v2.h[2]
3037 // CHECK-ERROR: error: lane number incompatible with layout
3038 // CHECK-ERROR: fmls v0.2s, v1.2s, v2.s[4]
3040 // CHECK-ERROR: error: lane number incompatible with layout
3041 // CHECK-ERROR: fmls v0.2s, v1.2s, v22.s[4]
3043 // CHECK-ERROR: error: lane number incompatible with layout
3044 // CHECK-ERROR: fmls v3.4s, v8.4s, v2.s[4]
3046 // CHECK-ERROR: error: lane number incompatible with layout
3047 // CHECK-ERROR: fmls v3.4s, v8.4s, v22.s[4]
3049 // CHECK-ERROR: error: lane number incompatible with layout
3050 // CHECK-ERROR: fmls v0.2d, v1.2d, v2.d[2]
3052 // CHECK-ERROR: error: lane number incompatible with layout
3053 // CHECK-ERROR: fmls v0.2d, v1.2d, v22.d[2]
3056 smlal v0.4h, v1.4h, v2.h[2]
3057 smlal v0.4s, v1.4h, v2.h[8]
3058 smlal v0.4s, v1.4h, v16.h[2]
3059 smlal v0.2s, v1.2s, v2.s[4]
3060 smlal v0.2d, v1.2s, v2.s[4]
3061 smlal v0.2d, v1.2s, v22.s[4]
3062 smlal2 v0.4h, v1.8h, v1.h[2]
3063 smlal2 v0.4s, v1.8h, v1.h[8]
3064 smlal2 v0.4s, v1.8h, v16.h[2]
3065 smlal2 v0.2s, v1.4s, v1.s[2]
3066 smlal2 v0.2d, v1.4s, v1.s[4]
3067 smlal2 v0.2d, v1.4s, v22.s[4]
3069 // CHECK-ERROR: error: invalid operand for instruction
3070 // CHECK-ERROR: smlal v0.4h, v1.4h, v2.h[2]
3072 // CHECK-ERROR: error: lane number incompatible with layout
3073 // CHECK-ERROR: smlal v0.4s, v1.4h, v2.h[8]
3075 // CHECK-ERROR: error: invalid operand for instruction
3076 // CHECK-ERROR: smlal v0.4s, v1.4h, v16.h[2]
3078 // CHECK-ERROR: error: lane number incompatible with layout
3079 // CHECK-ERROR: smlal v0.2s, v1.2s, v2.s[4]
3081 // CHECK-ERROR: error: lane number incompatible with layout
3082 // CHECK-ERROR: smlal v0.2d, v1.2s, v2.s[4]
3084 // CHECK-ERROR: error: lane number incompatible with layout
3085 // CHECK-ERROR: smlal v0.2d, v1.2s, v22.s[4]
3087 // CHECK-ERROR: error: invalid operand for instruction
3088 // CHECK-ERROR: smlal2 v0.4h, v1.8h, v1.h[2]
3090 // CHECK-ERROR: error: lane number incompatible with layout
3091 // CHECK-ERROR: smlal2 v0.4s, v1.8h, v1.h[8]
3093 // CHECK-ERROR: error: invalid operand for instruction
3094 // CHECK-ERROR: smlal2 v0.4s, v1.8h, v16.h[2]
3096 // CHECK-ERROR: error: invalid operand for instruction
3097 // CHECK-ERROR: smlal2 v0.2s, v1.4s, v1.s[2]
3099 // CHECK-ERROR: error: lane number incompatible with layout
3100 // CHECK-ERROR: smlal2 v0.2d, v1.4s, v1.s[4]
3102 // CHECK-ERROR: error: lane number incompatible with layout
3103 // CHECK-ERROR: smlal2 v0.2d, v1.4s, v22.s[4]
3106 smlsl v0.4h, v1.4h, v2.h[2]
3107 smlsl v0.4s, v1.4h, v2.h[8]
3108 smlsl v0.4s, v1.4h, v16.h[2]
3109 smlsl v0.2s, v1.2s, v2.s[4]
3110 smlsl v0.2d, v1.2s, v2.s[4]
3111 smlsl v0.2d, v1.2s, v22.s[4]
3112 smlsl2 v0.4h, v1.8h, v1.h[2]
3113 smlsl2 v0.4s, v1.8h, v1.h[8]
3114 smlsl2 v0.4s, v1.8h, v16.h[2]
3115 smlsl2 v0.2s, v1.4s, v1.s[2]
3116 smlsl2 v0.2d, v1.4s, v1.s[4]
3117 smlsl2 v0.2d, v1.4s, v22.s[4]
3119 // CHECK-ERROR: error: invalid operand for instruction
3120 // CHECK-ERROR: smlsl v0.4h, v1.4h, v2.h[2]
3122 // CHECK-ERROR: error: lane number incompatible with layout
3123 // CHECK-ERROR: smlsl v0.4s, v1.4h, v2.h[8]
3125 // CHECK-ERROR: error: invalid operand for instruction
3126 // CHECK-ERROR: smlsl v0.4s, v1.4h, v16.h[2]
3128 // CHECK-ERROR: error: lane number incompatible with layout
3129 // CHECK-ERROR: smlsl v0.2s, v1.2s, v2.s[4]
3131 // CHECK-ERROR: error: lane number incompatible with layout
3132 // CHECK-ERROR: smlsl v0.2d, v1.2s, v2.s[4]
3134 // CHECK-ERROR: error: lane number incompatible with layout
3135 // CHECK-ERROR: smlsl v0.2d, v1.2s, v22.s[4]
3137 // CHECK-ERROR: error: invalid operand for instruction
3138 // CHECK-ERROR: smlsl2 v0.4h, v1.8h, v1.h[2]
3140 // CHECK-ERROR: error: lane number incompatible with layout
3141 // CHECK-ERROR: smlsl2 v0.4s, v1.8h, v1.h[8]
3143 // CHECK-ERROR: error: invalid operand for instruction
3144 // CHECK-ERROR: smlsl2 v0.4s, v1.8h, v16.h[2]
3146 // CHECK-ERROR: error: invalid operand for instruction
3147 // CHECK-ERROR: smlsl2 v0.2s, v1.4s, v1.s[2]
3149 // CHECK-ERROR: error: lane number incompatible with layout
3150 // CHECK-ERROR: smlsl2 v0.2d, v1.4s, v1.s[4]
3152 // CHECK-ERROR: error: lane number incompatible with layout
3153 // CHECK-ERROR: smlsl2 v0.2d, v1.4s, v22.s[4]
3156 umlal v0.4h, v1.4h, v2.h[2]
3157 umlal v0.4s, v1.4h, v2.h[8]
3158 umlal v0.4s, v1.4h, v16.h[2]
3159 umlal v0.2s, v1.2s, v2.s[4]
3160 umlal v0.2d, v1.2s, v2.s[4]
3161 umlal v0.2d, v1.2s, v22.s[4]
3162 umlal2 v0.4h, v1.8h, v1.h[2]
3163 umlal2 v0.4s, v1.8h, v1.h[8]
3164 umlal2 v0.4s, v1.8h, v16.h[2]
3165 umlal2 v0.2s, v1.4s, v1.s[2]
3166 umlal2 v0.2d, v1.4s, v1.s[4]
3167 umlal2 v0.2d, v1.4s, v22.s[4]
3169 // CHECK-ERROR: error: invalid operand for instruction
3170 // CHECK-ERROR: umlal v0.4h, v1.4h, v2.h[2]
3172 // CHECK-ERROR: error: lane number incompatible with layout
3173 // CHECK-ERROR: umlal v0.4s, v1.4h, v2.h[8]
3175 // CHECK-ERROR: error: invalid operand for instruction
3176 // CHECK-ERROR: umlal v0.4s, v1.4h, v16.h[2]
3178 // CHECK-ERROR: error: lane number incompatible with layout
3179 // CHECK-ERROR: umlal v0.2s, v1.2s, v2.s[4]
3181 // CHECK-ERROR: error: lane number incompatible with layout
3182 // CHECK-ERROR: umlal v0.2d, v1.2s, v2.s[4]
3184 // CHECK-ERROR: error: lane number incompatible with layout
3185 // CHECK-ERROR: umlal v0.2d, v1.2s, v22.s[4]
3187 // CHECK-ERROR: error: invalid operand for instruction
3188 // CHECK-ERROR: umlal2 v0.4h, v1.8h, v1.h[2]
3190 // CHECK-ERROR: error: lane number incompatible with layout
3191 // CHECK-ERROR: umlal2 v0.4s, v1.8h, v1.h[8]
3193 // CHECK-ERROR: error: invalid operand for instruction
3194 // CHECK-ERROR: umlal2 v0.4s, v1.8h, v16.h[2]
3196 // CHECK-ERROR: error: invalid operand for instruction
3197 // CHECK-ERROR: umlal2 v0.2s, v1.4s, v1.s[2]
3199 // CHECK-ERROR: error: lane number incompatible with layout
3200 // CHECK-ERROR: umlal2 v0.2d, v1.4s, v1.s[4]
3202 // CHECK-ERROR: error: lane number incompatible with layout
3203 // CHECK-ERROR: umlal2 v0.2d, v1.4s, v22.s[4]
3206 umlsl v0.4h, v1.4h, v2.h[2]
3207 umlsl v0.4s, v1.4h, v2.h[8]
3208 umlsl v0.4s, v1.4h, v16.h[2]
3209 umlsl v0.2s, v1.2s, v2.s[4]
3210 umlsl v0.2d, v1.2s, v2.s[4]
3211 umlsl v0.2d, v1.2s, v22.s[4]
3212 umlsl2 v0.4h, v1.8h, v1.h[2]
3213 umlsl2 v0.4s, v1.8h, v1.h[8]
3214 umlsl2 v0.4s, v1.8h, v16.h[2]
3215 umlsl2 v0.2s, v1.4s, v1.s[2]
3216 umlsl2 v0.2d, v1.4s, v1.s[4]
3217 umlsl2 v0.2d, v1.4s, v22.s[4]
3219 // CHECK-ERROR: error: invalid operand for instruction
3220 // CHECK-ERROR: umlsl v0.4h, v1.4h, v2.h[2]
3222 // CHECK-ERROR: error: lane number incompatible with layout
3223 // CHECK-ERROR: umlsl v0.4s, v1.4h, v2.h[8]
3225 // CHECK-ERROR: error: invalid operand for instruction
3226 // CHECK-ERROR: umlsl v0.4s, v1.4h, v16.h[2]
3228 // CHECK-ERROR: error: lane number incompatible with layout
3229 // CHECK-ERROR: umlsl v0.2s, v1.2s, v2.s[4]
3231 // CHECK-ERROR: error: lane number incompatible with layout
3232 // CHECK-ERROR: umlsl v0.2d, v1.2s, v2.s[4]
3234 // CHECK-ERROR: error: lane number incompatible with layout
3235 // CHECK-ERROR: umlsl v0.2d, v1.2s, v22.s[4]
3237 // CHECK-ERROR: error: invalid operand for instruction
3238 // CHECK-ERROR: umlsl2 v0.4h, v1.8h, v1.h[2]
3240 // CHECK-ERROR: error: lane number incompatible with layout
3241 // CHECK-ERROR: umlsl2 v0.4s, v1.8h, v1.h[8]
3243 // CHECK-ERROR: error: invalid operand for instruction
3244 // CHECK-ERROR: umlsl2 v0.4s, v1.8h, v16.h[2]
3246 // CHECK-ERROR: error: invalid operand for instruction
3247 // CHECK-ERROR: umlsl2 v0.2s, v1.4s, v1.s[2]
3249 // CHECK-ERROR: error: lane number incompatible with layout
3250 // CHECK-ERROR: umlsl2 v0.2d, v1.4s, v1.s[4]
3252 // CHECK-ERROR: error: lane number incompatible with layout
3253 // CHECK-ERROR: umlsl2 v0.2d, v1.4s, v22.s[4]
3256 sqdmlal v0.4h, v1.4h, v2.h[2]
3257 sqdmlal v0.4s, v1.4h, v2.h[8]
3258 sqdmlal v0.4s, v1.4h, v16.h[2]
3259 sqdmlal v0.2s, v1.2s, v2.s[4]
3260 sqdmlal v0.2d, v1.2s, v2.s[4]
3261 sqdmlal v0.2d, v1.2s, v22.s[4]
3262 sqdmlal2 v0.4h, v1.8h, v1.h[2]
3263 sqdmlal2 v0.4s, v1.8h, v1.h[8]
3264 sqdmlal2 v0.4s, v1.8h, v16.h[2]
3265 sqdmlal2 v0.2s, v1.4s, v1.s[2]
3266 sqdmlal2 v0.2d, v1.4s, v1.s[4]
3267 sqdmlal2 v0.2d, v1.4s, v22.s[4]
3269 // CHECK-ERROR: error: invalid operand for instruction
3270 // CHECK-ERROR: sqdmlal v0.4h, v1.4h, v2.h[2]
3272 // CHECK-ERROR: error: lane number incompatible with layout
3273 // CHECK-ERROR: sqdmlal v0.4s, v1.4h, v2.h[8]
3275 // CHECK-ERROR: error: invalid operand for instruction
3276 // CHECK-ERROR: sqdmlal v0.4s, v1.4h, v16.h[2]
3278 // CHECK-ERROR: error: lane number incompatible with layout
3279 // CHECK-ERROR: sqdmlal v0.2s, v1.2s, v2.s[4]
3281 // CHECK-ERROR: error: lane number incompatible with layout
3282 // CHECK-ERROR: sqdmlal v0.2d, v1.2s, v2.s[4]
3284 // CHECK-ERROR: error: lane number incompatible with layout
3285 // CHECK-ERROR: sqdmlal v0.2d, v1.2s, v22.s[4]
3287 // CHECK-ERROR: error: invalid operand for instruction
3288 // CHECK-ERROR: sqdmlal2 v0.4h, v1.8h, v1.h[2]
3290 // CHECK-ERROR: error: lane number incompatible with layout
3291 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v1.h[8]
3293 // CHECK-ERROR: error: invalid operand for instruction
3294 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v16.h[2]
3296 // CHECK-ERROR: error: invalid operand for instruction
3297 // CHECK-ERROR: sqdmlal2 v0.2s, v1.4s, v1.s[2]
3299 // CHECK-ERROR: error: lane number incompatible with layout
3300 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v1.s[4]
3302 // CHECK-ERROR: error: lane number incompatible with layout
3303 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v22.s[4]
3306 sqdmlsl v0.4h, v1.4h, v2.h[2]
3307 sqdmlsl v0.4s, v1.4h, v2.h[8]
3308 sqdmlsl v0.4s, v1.4h, v16.h[2]
3309 sqdmlsl v0.2s, v1.2s, v2.s[4]
3310 sqdmlsl v0.2d, v1.2s, v2.s[4]
3311 sqdmlsl v0.2d, v1.2s, v22.s[4]
3312 sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3313 sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3314 sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3315 sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3316 sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3317 sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3319 // CHECK-ERROR: error: invalid operand for instruction
3320 // CHECK-ERROR: sqdmlsl v0.4h, v1.4h, v2.h[2]
3322 // CHECK-ERROR: error: lane number incompatible with layout
3323 // CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v2.h[8]
3325 // CHECK-ERROR: error: invalid operand for instruction
3326 // CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v16.h[2]
3328 // CHECK-ERROR: error: lane number incompatible with layout
3329 // CHECK-ERROR: sqdmlsl v0.2s, v1.2s, v2.s[4]
3331 // CHECK-ERROR: error: lane number incompatible with layout
3332 // CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v2.s[4]
3334 // CHECK-ERROR: error: lane number incompatible with layout
3335 // CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v22.s[4]
3337 // CHECK-ERROR: error: invalid operand for instruction
3338 // CHECK-ERROR: sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3340 // CHECK-ERROR: error: lane number incompatible with layout
3341 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3343 // CHECK-ERROR: error: invalid operand for instruction
3344 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3346 // CHECK-ERROR: error: invalid operand for instruction
3347 // CHECK-ERROR: sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3349 // CHECK-ERROR: error: lane number incompatible with layout
3350 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3352 // CHECK-ERROR: error: lane number incompatible with layout
3353 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3356 mul v0.4h, v1.4h, v2.h[8]
3357 mul v0.4h, v1.4h, v16.h[8]
3358 mul v0.8h, v1.8h, v2.h[8]
3359 mul v0.8h, v1.8h, v16.h[8]
3360 mul v0.2s, v1.2s, v2.s[4]
3361 mul v0.2s, v1.2s, v22.s[4]
3362 mul v0.4s, v1.4s, v2.s[4]
3363 mul v0.4s, v1.4s, v22.s[4]
3364 mul v0.2d, v1.2d, v2.d[1]
3366 // CHECK-ERROR: error: lane number incompatible with layout
3367 // CHECK-ERROR: mul v0.4h, v1.4h, v2.h[8]
3369 // CHECK-ERROR: error: lane number incompatible with layout
3370 // CHECK-ERROR: mul v0.4h, v1.4h, v16.h[8]
3372 // CHECK-ERROR: error: lane number incompatible with layout
3373 // CHECK-ERROR: mul v0.8h, v1.8h, v2.h[8]
3375 // CHECK-ERROR: error: lane number incompatible with layout
3376 // CHECK-ERROR: mul v0.8h, v1.8h, v16.h[8]
3378 // CHECK-ERROR: error: lane number incompatible with layout
3379 // CHECK-ERROR: mul v0.2s, v1.2s, v2.s[4]
3381 // CHECK-ERROR: error: lane number incompatible with layout
3382 // CHECK-ERROR: mul v0.2s, v1.2s, v22.s[4]
3384 // CHECK-ERROR: error: lane number incompatible with layout
3385 // CHECK-ERROR: mul v0.4s, v1.4s, v2.s[4]
3387 // CHECK-ERROR: error: lane number incompatible with layout
3388 // CHECK-ERROR: mul v0.4s, v1.4s, v22.s[4]
3391 fmul v0.4h, v1.4h, v2.h[4]
3392 fmul v0.2s, v1.2s, v2.s[4]
3393 fmul v0.2s, v1.2s, v22.s[4]
3394 fmul v0.4s, v1.4s, v2.s[4]
3395 fmul v0.4s, v1.4s, v22.s[4]
3396 fmul v0.2d, v1.2d, v2.d[2]
3397 fmul v0.2d, v1.2d, v22.d[2]
3399 // CHECK-ERROR: error: invalid operand for instruction
3400 // CHECK-ERROR: mul v0.2d, v1.2d, v2.d[1]
3402 // CHECK-ERROR: error: invalid operand for instruction
3403 // CHECK-ERROR: fmul v0.4h, v1.4h, v2.h[4]
3405 // CHECK-ERROR: error: lane number incompatible with layout
3406 // CHECK-ERROR: fmul v0.2s, v1.2s, v2.s[4]
3408 // CHECK-ERROR: error: lane number incompatible with layout
3409 // CHECK-ERROR: fmul v0.2s, v1.2s, v22.s[4]
3411 // CHECK-ERROR: error: lane number incompatible with layout
3412 // CHECK-ERROR: fmul v0.4s, v1.4s, v2.s[4]
3414 // CHECK-ERROR: error: lane number incompatible with layout
3415 // CHECK-ERROR: fmul v0.4s, v1.4s, v22.s[4]
3417 // CHECK-ERROR: error: lane number incompatible with layout
3418 // CHECK-ERROR: fmul v0.2d, v1.2d, v2.d[2]
3420 // CHECK-ERROR: error: lane number incompatible with layout
3421 // CHECK-ERROR: fmul v0.2d, v1.2d, v22.d[2]
3424 fmulx v0.4h, v1.4h, v2.h[4]
3425 fmulx v0.2s, v1.2s, v2.s[4]
3426 fmulx v0.2s, v1.2s, v22.s[4]
3427 fmulx v0.4s, v1.4s, v2.s[4]
3428 fmulx v0.4s, v1.4s, v22.s[4]
3429 fmulx v0.2d, v1.2d, v2.d[2]
3430 fmulx v0.2d, v1.2d, v22.d[2]
3432 // CHECK-ERROR: error: invalid operand for instruction
3433 // CHECK-ERROR: fmulx v0.4h, v1.4h, v2.h[4]
3435 // CHECK-ERROR: error: lane number incompatible with layout
3436 // CHECK-ERROR: fmulx v0.2s, v1.2s, v2.s[4]
3438 // CHECK-ERROR: error: lane number incompatible with layout
3439 // CHECK-ERROR: fmulx v0.2s, v1.2s, v22.s[4]
3441 // CHECK-ERROR: error: lane number incompatible with layout
3442 // CHECK-ERROR: fmulx v0.4s, v1.4s, v2.s[4]
3444 // CHECK-ERROR: error: lane number incompatible with layout
3445 // CHECK-ERROR: fmulx v0.4s, v1.4s, v22.s[4]
3447 // CHECK-ERROR: error: lane number incompatible with layout
3448 // CHECK-ERROR: fmulx v0.2d, v1.2d, v2.d[2]
3450 // CHECK-ERROR: error: lane number incompatible with layout
3451 // CHECK-ERROR: fmulx v0.2d, v1.2d, v22.d[2]
3454 smull v0.4h, v1.4h, v2.h[2]
3455 smull v0.4s, v1.4h, v2.h[8]
3456 smull v0.4s, v1.4h, v16.h[4]
3457 smull v0.2s, v1.2s, v2.s[2]
3458 smull v0.2d, v1.2s, v2.s[4]
3459 smull v0.2d, v1.2s, v22.s[4]
3460 smull2 v0.4h, v1.8h, v2.h[2]
3461 smull2 v0.4s, v1.8h, v2.h[8]
3462 smull2 v0.4s, v1.8h, v16.h[4]
3463 smull2 v0.2s, v1.4s, v2.s[2]
3464 smull2 v0.2d, v1.4s, v2.s[4]
3465 smull2 v0.2d, v1.4s, v22.s[4]
3467 // CHECK-ERROR: error: invalid operand for instruction
3468 // CHECK-ERROR: smull v0.4h, v1.4h, v2.h[2]
3470 // CHECK-ERROR: error: lane number incompatible with layout
3471 // CHECK-ERROR: smull v0.4s, v1.4h, v2.h[8]
3473 // CHECK-ERROR: error: invalid operand for instruction
3474 // CHECK-ERROR: smull v0.4s, v1.4h, v16.h[4]
3476 // CHECK-ERROR: error: invalid operand for instruction
3477 // CHECK-ERROR: smull v0.2s, v1.2s, v2.s[2]
3479 // CHECK-ERROR: error: lane number incompatible with layout
3480 // CHECK-ERROR: smull v0.2d, v1.2s, v2.s[4]
3482 // CHECK-ERROR: error: lane number incompatible with layout
3483 // CHECK-ERROR: smull v0.2d, v1.2s, v22.s[4]
3485 // CHECK-ERROR: error: invalid operand for instruction
3486 // CHECK-ERROR: smull2 v0.4h, v1.8h, v2.h[2]
3488 // CHECK-ERROR: error: lane number incompatible with layout
3489 // CHECK-ERROR: smull2 v0.4s, v1.8h, v2.h[8]
3491 // CHECK-ERROR: error: invalid operand for instruction
3492 // CHECK-ERROR: smull2 v0.4s, v1.8h, v16.h[4]
3494 // CHECK-ERROR: error: invalid operand for instruction
3495 // CHECK-ERROR: smull2 v0.2s, v1.4s, v2.s[2]
3497 // CHECK-ERROR: error: lane number incompatible with layout
3498 // CHECK-ERROR: smull2 v0.2d, v1.4s, v2.s[4]
3500 // CHECK-ERROR: error: lane number incompatible with layout
3501 // CHECK-ERROR: smull2 v0.2d, v1.4s, v22.s[4]
3504 umull v0.4h, v1.4h, v2.h[2]
3505 umull v0.4s, v1.4h, v2.h[8]
3506 umull v0.4s, v1.4h, v16.h[4]
3507 umull v0.2s, v1.2s, v2.s[2]
3508 umull v0.2d, v1.2s, v2.s[4]
3509 umull v0.2d, v1.2s, v22.s[4]
3510 umull2 v0.4h, v1.8h, v2.h[2]
3511 umull2 v0.4s, v1.8h, v2.h[8]
3512 umull2 v0.4s, v1.8h, v16.h[4]
3513 umull2 v0.2s, v1.4s, v2.s[2]
3514 umull2 v0.2d, v1.4s, v2.s[4]
3515 umull2 v0.2d, v1.4s, v22.s[4]
3517 // CHECK-ERROR: error: invalid operand for instruction
3518 // CHECK-ERROR: umull v0.4h, v1.4h, v2.h[2]
3520 // CHECK-ERROR: error: lane number incompatible with layout
3521 // CHECK-ERROR: umull v0.4s, v1.4h, v2.h[8]
3523 // CHECK-ERROR: error: invalid operand for instruction
3524 // CHECK-ERROR: umull v0.4s, v1.4h, v16.h[4]
3526 // CHECK-ERROR: error: invalid operand for instruction
3527 // CHECK-ERROR: umull v0.2s, v1.2s, v2.s[2]
3529 // CHECK-ERROR: error: lane number incompatible with layout
3530 // CHECK-ERROR: umull v0.2d, v1.2s, v2.s[4]
3532 // CHECK-ERROR: error: lane number incompatible with layout
3533 // CHECK-ERROR: umull v0.2d, v1.2s, v22.s[4]
3535 // CHECK-ERROR: error: invalid operand for instruction
3536 // CHECK-ERROR: umull2 v0.4h, v1.8h, v2.h[2]
3538 // CHECK-ERROR: error: lane number incompatible with layout
3539 // CHECK-ERROR: umull2 v0.4s, v1.8h, v2.h[8]
3541 // CHECK-ERROR: error: invalid operand for instruction
3542 // CHECK-ERROR: umull2 v0.4s, v1.8h, v16.h[4]
3544 // CHECK-ERROR: error: invalid operand for instruction
3545 // CHECK-ERROR: umull2 v0.2s, v1.4s, v2.s[2]
3547 // CHECK-ERROR: error: lane number incompatible with layout
3548 // CHECK-ERROR: umull2 v0.2d, v1.4s, v2.s[4]
3550 // CHECK-ERROR: error: lane number incompatible with layout
3551 // CHECK-ERROR: umull2 v0.2d, v1.4s, v22.s[4]
3554 sqdmull v0.4h, v1.4h, v2.h[2]
3555 sqdmull v0.4s, v1.4h, v2.h[8]
3556 sqdmull v0.4s, v1.4h, v16.h[4]
3557 sqdmull v0.2s, v1.2s, v2.s[2]
3558 sqdmull v0.2d, v1.2s, v2.s[4]
3559 sqdmull v0.2d, v1.2s, v22.s[4]
3560 sqdmull2 v0.4h, v1.8h, v2.h[2]
3561 sqdmull2 v0.4s, v1.8h, v2.h[8]
3562 sqdmull2 v0.4s, v1.8h, v16.h[4]
3563 sqdmull2 v0.2s, v1.4s, v2.s[2]
3564 sqdmull2 v0.2d, v1.4s, v2.s[4]
3565 sqdmull2 v0.2d, v1.4s, v22.s[4]
3567 // CHECK-ERROR: error: invalid operand for instruction
3568 // CHECK-ERROR: sqdmull v0.4h, v1.4h, v2.h[2]
3570 // CHECK-ERROR: error: lane number incompatible with layout
3571 // CHECK-ERROR: sqdmull v0.4s, v1.4h, v2.h[8]
3573 // CHECK-ERROR: error: invalid operand for instruction
3574 // CHECK-ERROR: sqdmull v0.4s, v1.4h, v16.h[4]
3576 // CHECK-ERROR: error: invalid operand for instruction
3577 // CHECK-ERROR: sqdmull v0.2s, v1.2s, v2.s[2]
3579 // CHECK-ERROR: error: lane number incompatible with layout
3580 // CHECK-ERROR: sqdmull v0.2d, v1.2s, v2.s[4]
3582 // CHECK-ERROR: error: lane number incompatible with layout
3583 // CHECK-ERROR: sqdmull v0.2d, v1.2s, v22.s[4]
3585 // CHECK-ERROR: error: invalid operand for instruction
3586 // CHECK-ERROR: sqdmull2 v0.4h, v1.8h, v2.h[2]
3588 // CHECK-ERROR: error: lane number incompatible with layout
3589 // CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v2.h[8]
3591 // CHECK-ERROR: error: invalid operand for instruction
3592 // CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v16.h[4]
3594 // CHECK-ERROR: error: invalid operand for instruction
3595 // CHECK-ERROR: sqdmull2 v0.2s, v1.4s, v2.s[2]
3597 // CHECK-ERROR: error: lane number incompatible with layout
3598 // CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v2.s[4]
3600 // CHECK-ERROR: error: lane number incompatible with layout
3601 // CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v22.s[4]
3604 sqdmulh v0.4h, v1.4h, v2.h[8]
3605 sqdmulh v0.4h, v1.4h, v16.h[2]
3606 sqdmulh v0.8h, v1.8h, v2.h[8]
3607 sqdmulh v0.8h, v1.8h, v16.h[2]
3608 sqdmulh v0.2s, v1.2s, v2.s[4]
3609 sqdmulh v0.2s, v1.2s, v22.s[4]
3610 sqdmulh v0.4s, v1.4s, v2.s[4]
3611 sqdmulh v0.4s, v1.4s, v22.s[4]
3612 sqdmulh v0.2d, v1.2d, v22.d[1]
3614 // CHECK-ERROR: error: lane number incompatible with layout
3615 // CHECK-ERROR: sqdmulh v0.4h, v1.4h, v2.h[8]
3617 // CHECK-ERROR: error: invalid operand for instruction
3618 // CHECK-ERROR: sqdmulh v0.4h, v1.4h, v16.h[2]
3620 // CHECK-ERROR: error: lane number incompatible with layout
3621 // CHECK-ERROR: sqdmulh v0.8h, v1.8h, v2.h[8]
3623 // CHECK-ERROR: error: invalid operand for instruction
3624 // CHECK-ERROR: sqdmulh v0.8h, v1.8h, v16.h[2]
3626 // CHECK-ERROR: error: lane number incompatible with layout
3627 // CHECK-ERROR: sqdmulh v0.2s, v1.2s, v2.s[4]
3629 // CHECK-ERROR: error: lane number incompatible with layout
3630 // CHECK-ERROR: sqdmulh v0.2s, v1.2s, v22.s[4]
3632 // CHECK-ERROR: error: lane number incompatible with layout
3633 // CHECK-ERROR: sqdmulh v0.4s, v1.4s, v2.s[4]
3635 // CHECK-ERROR: error: lane number incompatible with layout
3636 // CHECK-ERROR: sqdmulh v0.4s, v1.4s, v22.s[4]
3638 // CHECK-ERROR: error: invalid operand for instruction
3639 // CHECK-ERROR: sqdmulh v0.2d, v1.2d, v22.d[1]
3642 sqrdmulh v0.4h, v1.4h, v2.h[8]
3643 sqrdmulh v0.4h, v1.4h, v16.h[2]
3644 sqrdmulh v0.8h, v1.8h, v2.h[8]
3645 sqrdmulh v0.8h, v1.8h, v16.h[2]
3646 sqrdmulh v0.2s, v1.2s, v2.s[4]
3647 sqrdmulh v0.2s, v1.2s, v22.s[4]
3648 sqrdmulh v0.4s, v1.4s, v2.s[4]
3649 sqrdmulh v0.4s, v1.4s, v22.s[4]
3650 sqrdmulh v0.2d, v1.2d, v22.d[1]
3652 // CHECK-ERROR: error: lane number incompatible with layout
3653 // CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v2.h[8]
3655 // CHECK-ERROR: error: invalid operand for instruction
3656 // CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v16.h[2]
3658 // CHECK-ERROR: error: lane number incompatible with layout
3659 // CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v2.h[8]
3661 // CHECK-ERROR: error: invalid operand for instruction
3662 // CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v16.h[2]
3664 // CHECK-ERROR: error: lane number incompatible with layout
3665 // CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v2.s[4]
3667 // CHECK-ERROR: error: lane number incompatible with layout
3668 // CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v22.s[4]
3670 // CHECK-ERROR: error: lane number incompatible with layout
3671 // CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v2.s[4]
3673 // CHECK-ERROR: error: lane number incompatible with layout
3674 // CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v22.s[4]
3676 // CHECK-ERROR: error: invalid operand for instruction
3677 // CHECK-ERROR: sqrdmulh v0.2d, v1.2d, v22.d[1]
3680 //----------------------------------------------------------------------
3682 //----------------------------------------------------------------------
3692 // CHECK-ERROR: error: invalid operand for instruction
3693 // CHECK-ERROR: saddlv b0, v1.8b
3695 // CHECK-ERROR: error: invalid operand for instruction
3696 // CHECK-ERROR: saddlv b0, v1.16b
3698 // CHECK-ERROR: error: invalid operand for instruction
3699 // CHECK-ERROR: saddlv h0, v1.4h
3701 // CHECK-ERROR: error: invalid operand for instruction
3702 // CHECK-ERROR: saddlv h0, v1.8h
3704 // CHECK-ERROR: error: invalid operand for instruction
3705 // CHECK-ERROR: saddlv s0, v1.2s
3707 // CHECK-ERROR: error: invalid operand for instruction
3708 // CHECK-ERROR: saddlv s0, v1.4s
3710 // CHECK-ERROR: error: invalid operand for instruction
3711 // CHECK-ERROR: saddlv d0, v1.2s
3722 // CHECK-ERROR: error: invalid operand for instruction
3723 // CHECK-ERROR: uaddlv b0, v1.8b
3725 // CHECK-ERROR: error: invalid operand for instruction
3726 // CHECK-ERROR: uaddlv b0, v1.16b
3728 // CHECK-ERROR: error: invalid operand for instruction
3729 // CHECK-ERROR: uaddlv h0, v1.4h
3731 // CHECK-ERROR: error: invalid operand for instruction
3732 // CHECK-ERROR: uaddlv h0, v1.8h
3734 // CHECK-ERROR: error: invalid operand for instruction
3735 // CHECK-ERROR: uaddlv s0, v1.2s
3737 // CHECK-ERROR: error: invalid operand for instruction
3738 // CHECK-ERROR: uaddlv s0, v1.4s
3740 // CHECK-ERROR: error: invalid operand for instruction
3741 // CHECK-ERROR: uaddlv d0, v1.2s
3750 // CHECK-ERROR: error: invalid operand for instruction
3751 // CHECK-ERROR: smaxv s0, v1.2s
3753 // CHECK-ERROR: error: invalid operand for instruction
3754 // CHECK-ERROR: sminv s0, v1.2s
3756 // CHECK-ERROR: error: invalid operand for instruction
3757 // CHECK-ERROR: umaxv s0, v1.2s
3759 // CHECK-ERROR: error: invalid operand for instruction
3760 // CHECK-ERROR: uminv s0, v1.2s
3762 // CHECK-ERROR: error: invalid operand for instruction
3763 // CHECK-ERROR: addv s0, v1.2s
3772 // CHECK-ERROR: error: invalid operand for instruction
3773 // CHECK-ERROR: smaxv d0, v1.2d
3775 // CHECK-ERROR: error: invalid operand for instruction
3776 // CHECK-ERROR: sminv d0, v1.2d
3778 // CHECK-ERROR: error: invalid operand for instruction
3779 // CHECK-ERROR: umaxv d0, v1.2d
3781 // CHECK-ERROR: error: invalid operand for instruction
3782 // CHECK-ERROR: uminv d0, v1.2d
3784 // CHECK-ERROR: error: invalid operand for instruction
3785 // CHECK-ERROR: addv d0, v1.2d
3793 // CHECK-ERROR: error: invalid operand for instruction
3794 // CHECK-ERROR: fmaxnmv b0, v1.16b
3796 // CHECK-ERROR: error: invalid operand for instruction
3797 // CHECK-ERROR: fminnmv b0, v1.16b
3799 // CHECK-ERROR: error: invalid operand for instruction
3800 // CHECK-ERROR: fmaxv b0, v1.16b
3802 // CHECK-ERROR: error: invalid operand for instruction
3803 // CHECK-ERROR: fminv b0, v1.16b
3811 // CHECK-ERROR: error: invalid operand for instruction
3812 // CHECK-ERROR: fmaxnmv h0, v1.8h
3814 // CHECK-ERROR: error: invalid operand for instruction
3815 // CHECK-ERROR: fminnmv h0, v1.8h
3817 // CHECK-ERROR: error: invalid operand for instruction
3818 // CHECK-ERROR: fmaxv h0, v1.8h
3820 // CHECK-ERROR: error: invalid operand for instruction
3821 // CHECK-ERROR: fminv h0, v1.8h
3829 // CHECK-ERROR: error: invalid operand for instruction
3830 // CHECK-ERROR: fmaxnmv d0, v1.2d
3832 // CHECK-ERROR: error: invalid operand for instruction
3833 // CHECK-ERROR: fminnmv d0, v1.2d
3835 // CHECK-ERROR: error: invalid operand for instruction
3836 // CHECK-ERROR: fmaxv d0, v1.2d
3838 // CHECK-ERROR: error: invalid operand for instruction
3839 // CHECK-ERROR: fminv d0, v1.2d
3842 //----------------------------------------------------------------------
3843 // Floating-point Multiply Extended
3844 //----------------------------------------------------------------------
3849 // CHECK-ERROR: error: invalid operand for instruction
3850 // CHECK-ERROR: fmulx s20, h22, s15
3852 // CHECK-ERROR: error: invalid operand for instruction
3853 // CHECK-ERROR: fmulx d23, d11, s1
3856 //----------------------------------------------------------------------
3857 // Floating-point Reciprocal Step
3858 //----------------------------------------------------------------------
3860 frecps s21, s16, h13
3861 frecps d22, s30, d21
3863 // CHECK-ERROR: error: invalid operand for instruction
3864 // CHECK-ERROR: frecps s21, s16, h13
3866 // CHECK-ERROR: error: invalid operand for instruction
3867 // CHECK-ERROR: frecps d22, s30, d21
3870 //----------------------------------------------------------------------
3871 // Floating-point Reciprocal Square Root Step
3872 //----------------------------------------------------------------------
3874 frsqrts s21, h5, s12
3875 frsqrts d8, s22, d18
3877 // CHECK-ERROR: error: invalid operand for instruction
3878 // CHECK-ERROR: frsqrts s21, h5, s12
3880 // CHECK-ERROR: error: invalid operand for instruction
3881 // CHECK-ERROR: frsqrts d8, s22, d18
3884 //----------------------------------------------------------------------
3885 // Vector load/store multiple N-element structure (class SIMD lselem)
3886 //----------------------------------------------------------------------
3891 // CHECK-ERROR: error: expected vector type register
3892 // CHECK-ERROR: ld1 {x3}, [x2]
3894 // CHECK-ERROR: error: expected vector type register
3895 // CHECK-ERROR: ld1 {v4}, [x0]
3897 // CHECK-ERROR: error: expected vector type register
3898 // CHECK-ERROR: ld1 {v32.16b}, [x0]
3900 // CHECK-ERROR: error: invalid operand for instruction
3901 // CHECK-ERROR: ld1 {v15.8h}, [x32]
3904 ld1 {v0.16b, v2.16b}, [x0]
3905 ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3906 ld1 v0.8b, v1.8b}, [x0]
3907 ld1 {v0.8h-v4.8h}, [x0]
3908 ld1 {v1.8h-v1.8h}, [x0]
3909 ld1 {v15.8h-v17.4h}, [x15]
3910 ld1 {v0.8b-v2.8b, [x0]
3911 // CHECK-ERROR: error: invalid space between two vectors
3912 // CHECK-ERROR: ld1 {v0.16b, v2.16b}, [x0]
3914 // CHECK-ERROR: error: invalid number of vectors
3915 // CHECK-ERROR: ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3917 // CHECK-ERROR: error: '{' expected
3918 // CHECK-ERROR: ld1 v0.8b, v1.8b}, [x0]
3920 // CHECK-ERROR: error: invalid number of vectors
3921 // CHECK-ERROR: ld1 {v0.8h-v4.8h}, [x0]
3923 // CHECK-ERROR: error: invalid number of vectors
3924 // CHECK-ERROR: ld1 {v1.8h-v1.8h}, [x0]
3926 // CHECK-ERROR: error: expected the same vector layout
3927 // CHECK-ERROR: ld1 {v15.8h-v17.4h}, [x15]
3929 // CHECK-ERROR: error: '}' expected
3930 // CHECK-ERROR: ld1 {v0.8b-v2.8b, [x0]
3933 ld2 {v15.8h, v16.4h}, [x15]
3934 ld2 {v0.8b, v2.8b}, [x0]
3935 ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3936 ld2 {v15.8h-v16.4h}, [x15]
3937 ld2 {v0.2d-v2.2d}, [x0]
3938 // CHECK-ERROR: error: invalid space between two vectors
3939 // CHECK-ERROR: ld2 {v15.8h, v16.4h}, [x15]
3941 // CHECK-ERROR: error: invalid space between two vectors
3942 // CHECK-ERROR: ld2 {v0.8b, v2.8b}, [x0]
3944 // CHECK-ERROR: error: invalid operand for instruction
3945 // CHECK-ERROR: ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3947 // CHECK-ERROR: error: expected the same vector layout
3948 // CHECK-ERROR: ld2 {v15.8h-v16.4h}, [x15]
3950 // CHECK-ERROR: error: invalid operand for instruction
3951 // CHECK-ERROR: ld2 {v0.2d-v2.2d}, [x0]
3954 ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3955 ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3956 ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3957 ld3 {v15.8h-v17.4h}, [x15]
3958 ld3 {v31.4s-v2.4s}, [sp]
3959 // CHECK-ERROR: error: invalid space between two vectors
3960 // CHECK-ERROR: ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3962 // CHECK-ERROR: error: expected vector type register
3963 // CHECK-ERROR: ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3965 // CHECK-ERROR: error: invalid space between two vectors
3966 // CHECK-ERROR: ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3968 // CHECK-ERROR: error: expected the same vector layout
3969 // CHECK-ERROR: ld3 {v15.8h-v17.4h}, [x15]
3971 // CHECK-ERROR: error: invalid operand for instruction
3972 // CHECK-ERROR: ld3 {v31.4s-v2.4s}, [sp]
3975 ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
3976 ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
3977 ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
3978 ld4 {v15.8h-v18.4h}, [x15]
3979 ld4 {v31.2s-v1.2s}, [x31]
3980 // CHECK-ERROR: error: invalid space between two vectors
3981 // CHECK-ERROR: ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
3983 // CHECK-ERROR: error: invalid space between two vectors
3984 // CHECK-ERROR: ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
3986 // CHECK-ERROR: error: invalid number of vectors
3987 // CHECK-ERROR: ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
3989 // CHECK-ERROR: error: expected the same vector layout
3990 // CHECK-ERROR: ld4 {v15.8h-v18.4h}, [x15]
3992 // CHECK-ERROR: error: invalid operand for instruction
3993 // CHECK-ERROR: ld4 {v31.2s-v1.2s}, [x31]
4000 // CHECK-ERROR: error: expected vector type register
4001 // CHECK-ERROR: st1 {x3}, [x2]
4003 // CHECK-ERROR: error: expected vector type register
4004 // CHECK-ERROR: st1 {v4}, [x0]
4006 // CHECK-ERROR: error: expected vector type register
4007 // CHECK-ERROR: st1 {v32.16b}, [x0]
4009 // CHECK-ERROR: error: invalid operand for instruction
4010 // CHECK-ERROR: st1 {v15.8h}, [x32]
4013 st1 {v0.16b, v2.16b}, [x0]
4014 st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4015 st1 v0.8b, v1.8b}, [x0]
4016 st1 {v0.8h-v4.8h}, [x0]
4017 st1 {v1.8h-v1.8h}, [x0]
4018 st1 {v15.8h-v17.4h}, [x15]
4019 st1 {v0.8b-v2.8b, [x0]
4020 // CHECK-ERROR: error: invalid space between two vectors
4021 // CHECK-ERROR: st1 {v0.16b, v2.16b}, [x0]
4023 // CHECK-ERROR: error: invalid number of vectors
4024 // CHECK-ERROR: st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4026 // CHECK-ERROR: error: '{' expected
4027 // CHECK-ERROR: st1 v0.8b, v1.8b}, [x0]
4029 // CHECK-ERROR: error: invalid number of vectors
4030 // CHECK-ERROR: st1 {v0.8h-v4.8h}, [x0]
4032 // CHECK-ERROR: error: invalid number of vectors
4033 // CHECK-ERROR: st1 {v1.8h-v1.8h}, [x0]
4035 // CHECK-ERROR: error: expected the same vector layout
4036 // CHECK-ERROR: st1 {v15.8h-v17.4h}, [x15]
4038 // CHECK-ERROR: error: '}' expected
4039 // CHECK-ERROR: st1 {v0.8b-v2.8b, [x0]
4042 st2 {v15.8h, v16.4h}, [x15]
4043 st2 {v0.8b, v2.8b}, [x0]
4044 st2 {v15.4h, v16.4h, v17.4h}, [x30]
4045 st2 {v15.8h-v16.4h}, [x15]
4046 st2 {v0.2d-v2.2d}, [x0]
4047 // CHECK-ERROR: error: invalid space between two vectors
4048 // CHECK-ERROR: st2 {v15.8h, v16.4h}, [x15]
4050 // CHECK-ERROR: error: invalid space between two vectors
4051 // CHECK-ERROR: st2 {v0.8b, v2.8b}, [x0]
4053 // CHECK-ERROR: error: invalid operand for instruction
4054 // CHECK-ERROR: st2 {v15.4h, v16.4h, v17.4h}, [x30]
4056 // CHECK-ERROR: error: expected the same vector layout
4057 // CHECK-ERROR: st2 {v15.8h-v16.4h}, [x15]
4059 // CHECK-ERROR: error: invalid operand for instruction
4060 // CHECK-ERROR: st2 {v0.2d-v2.2d}, [x0]
4063 st3 {v15.8h, v16.8h, v17.4h}, [x15]
4064 st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4065 st3 {v0.8b, v2.8b, v3.8b}, [x0]
4066 st3 {v15.8h-v17.4h}, [x15]
4067 st3 {v31.4s-v2.4s}, [sp]
4068 // CHECK-ERROR: error: invalid space between two vectors
4069 // CHECK-ERROR: st3 {v15.8h, v16.8h, v17.4h}, [x15]
4071 // CHECK-ERROR: error: expected vector type register
4072 // CHECK-ERROR: st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4074 // CHECK-ERROR: error: invalid space between two vectors
4075 // CHECK-ERROR: st3 {v0.8b, v2.8b, v3.8b}, [x0]
4077 // CHECK-ERROR: error: expected the same vector layout
4078 // CHECK-ERROR: st3 {v15.8h-v17.4h}, [x15]
4080 // CHECK-ERROR: error: invalid operand for instruction
4081 // CHECK-ERROR: st3 {v31.4s-v2.4s}, [sp]
4084 st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4085 st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4086 st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4087 st4 {v15.8h-v18.4h}, [x15]
4088 st4 {v31.2s-v1.2s}, [x31]
4089 // CHECK-ERROR: error: invalid space between two vectors
4090 // CHECK-ERROR: st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4092 // CHECK-ERROR: error: invalid space between two vectors
4093 // CHECK-ERROR: st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4095 // CHECK-ERROR: error: invalid number of vectors
4096 // CHECK-ERROR: st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4098 // CHECK-ERROR: error: expected the same vector layout
4099 // CHECK-ERROR: st4 {v15.8h-v18.4h}, [x15]
4101 // CHECK-ERROR: error: invalid operand for instruction
4102 // CHECK-ERROR: st4 {v31.2s-v1.2s}, [x31]
4105 //----------------------------------------------------------------------
4106 // Vector post-index load/store multiple N-element structure
4107 // (class SIMD lselem-post)
4108 //----------------------------------------------------------------------
4109 ld1 {v0.16b}, [x0], #8
4110 ld1 {v0.8h, v1.16h}, [x0], x1
4111 ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4112 // CHECK-ERROR: error: invalid operand for instruction
4113 // CHECK-ERROR: ld1 {v0.16b}, [x0], #8
4115 // CHECK-ERROR: error: expected vector type register
4116 // CHECK-ERROR: ld1 {v0.8h, v1.16h}, [x0], x1
4118 // CHECK-ERROR: error: invalid operand for instruction
4119 // CHECK-ERROR: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4122 ld2 {v0.16b, v1.16b}, [x0], #16
4123 ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4124 ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4125 // CHECK-ERROR: error: invalid operand for instruction
4126 // CHECK-ERROR: ld2 {v0.16b, v1.16b}, [x0], #16
4128 // CHECK-ERROR: error: invalid operand for instruction
4129 // CHECK-ERROR: ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4131 // CHECK-ERROR: error: invalid space between two vectors
4132 // CHECK-ERROR: ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4135 st1 {v0.16b}, [x0], #8
4136 st1 {v0.8h, v1.16h}, [x0], x1
4137 st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4138 // CHECK-ERROR: error: invalid operand for instruction
4139 // CHECK-ERROR: st1 {v0.16b}, [x0], #8
4141 // CHECK-ERROR: error: expected vector type register
4142 // CHECK-ERROR: st1 {v0.8h, v1.16h}, [x0], x1
4144 // CHECK-ERROR: error: invalid operand for instruction
4145 // CHECK-ERROR: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4148 st2 {v0.16b, v1.16b}, [x0], #16
4149 st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4150 st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4151 // CHECK-ERROR: error: invalid operand for instruction
4152 // CHECK-ERROR: st2 {v0.16b, v1.16b}, [x0], #16
4154 // CHECK-ERROR: error: invalid operand for instruction
4155 // CHECK-ERROR: st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4157 // CHECK-ERROR: error: invalid space between two vectors
4158 // CHECK-ERROR: st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4170 // CHECK-ERROR: error: lane number incompatible with layout
4171 // CHECK-ERROR: ins v2.b[16], w1
4173 // CHECK-ERROR: error: lane number incompatible with layout
4174 // CHECK-ERROR: ins v7.h[8], w14
4176 // CHECK-ERROR: error: lane number incompatible with layout
4177 // CHECK-ERROR: ins v20.s[5], w30
4179 // CHECK-ERROR: error: lane number incompatible with layout
4180 // CHECK-ERROR: ins v1.d[2], x7
4182 // CHECK-ERROR: error: invalid operand for instruction
4183 // CHECK-ERROR: ins v2.b[3], b1
4185 // CHECK-ERROR: error: invalid operand for instruction
4186 // CHECK-ERROR: ins v7.h[2], h14
4188 // CHECK-ERROR: error: invalid operand for instruction
4189 // CHECK-ERROR: ins v20.s[1], s30
4191 // CHECK-ERROR: error: invalid operand for instruction
4192 // CHECK-ERROR: ins v1.d[0], d7
4206 // CHECK-ERROR error: lane number incompatible with layout
4207 // CHECK-ERROR smov w1, v0.b[16]
4209 // CHECK-ERROR error: lane number incompatible with layout
4210 // CHECK-ERROR smov w14, v6.h[8]
4212 // CHECK-ERROR error: lane number incompatible with layout
4213 // CHECK-ERROR smov x1, v0.b[16]
4215 // CHECK-ERROR error: lane number incompatible with layout
4216 // CHECK-ERROR smov x14, v6.h[8]
4218 // CHECK-ERROR error: lane number incompatible with layout
4219 // CHECK-ERROR smov x20, v9.s[5]
4221 // CHECK-ERROR error: invalid operand for instruction
4222 // CHECK-ERROR smov w1, v0.d[0]
4224 // CHECK-ERROR error: invalid operand for instruction
4225 // CHECK-ERROR smov w14, v6.d[1]
4227 // CHECK-ERROR error: invalid operand for instruction
4228 // CHECK-ERROR smov x1, v0.d[0]
4230 // CHECK-ERROR error: invalid operand for instruction
4231 // CHECK-ERROR smov x14, v6.d[1]
4233 // CHECK-ERROR error: invalid operand for instruction
4234 // CHECK-ERROR smov x20, v9.d[0]
4245 // CHECK-ERROR error: lane number incompatible with layout
4246 // CHECK-ERROR umov w1, v0.b[16]
4248 // CHECK-ERROR error: lane number incompatible with layout
4249 // CHECK-ERROR umov w14, v6.h[8]
4251 // CHECK-ERROR error: lane number incompatible with layout
4252 // CHECK-ERROR umov w20, v9.s[5]
4254 // CHECK-ERROR error: lane number incompatible with layout
4255 // CHECK-ERROR umov x7, v18.d[3]
4257 // CHECK-ERROR error: invalid operand for instruction
4258 // CHECK-ERROR umov w1, v0.d[0]
4260 // CHECK-ERROR error: invalid operand for instruction
4261 // CHECK-ERROR umov s20, v9.s[2]
4263 // CHECK-ERROR error: invalid operand for instruction
4264 // CHECK-ERROR umov d7, v18.d[1]
4267 Ins v1.h[2], v3.b[6]
4268 Ins v6.h[7], v7.s[2]
4269 Ins v15.d[0], v22.s[2]
4270 Ins v0.d[0], v4.b[1]
4272 // CHECK-ERROR error: invalid operand for instruction
4273 // CHECK-ERROR Ins v1.h[2], v3.b[6]
4275 // CHECK-ERROR error: invalid operand for instruction
4276 // CHECK-ERROR Ins v6.h[7], v7.s[2]
4278 // CHECK-ERROR error: invalid operand for instruction
4279 // CHECK-ERROR Ins v15.d[0], v22.s[2]
4281 // CHECK-ERROR error: invalid operand for instruction
4282 // CHECK-ERROR Ins v0.d[0], v4.b[1]
4287 dup v17.2d, v20.s[0]
4290 dup v17.4s, v20.d[0]
4293 // CHECK-ERROR error: invalid operand for instruction
4294 // CHECK-ERROR dup v1.8h, v2.b[2]
4296 // CHECK-ERROR error: invalid operand for instruction
4297 // CHECK-ERROR dup v11.4s, v7.h[7]
4299 // CHECK-ERROR error: invalid operand for instruction
4300 // CHECK-ERROR dup v17.2d, v20.s[0]
4302 // CHECK-ERROR error: invalid operand for instruction
4303 // CHECK-ERROR dup v1.16b, v2.h[2]
4305 // CHECK-ERROR invalid operand for instruction
4306 // CHECK-ERROR dup v11.8h, v7.s[3]
4308 // CHECK-ERROR invalid operand for instruction
4309 // CHECK-ERROR dup v17.4s, v20.d[0]
4311 // CHECK-ERROR invalid operand for instruction
4312 // CHECK-ERROR dup v5.2d, v1.b[1]
4323 // CHECK-ERROR error: invalid operand for instruction
4324 // CHECK-ERROR dup v1.8b, b1
4326 // CHECK-ERROR error: invalid operand for instruction
4327 // CHECK-ERROR dup v11.4h, h14
4329 // CHECK-ERROR error: invalid operand for instruction
4330 // CHECK-ERROR dup v17.2s, s30
4332 // CHECK-ERROR error: invalid operand for instruction
4333 // CHECK-ERROR dup v1.16b, d2
4335 // CHECK-ERROR error: invalid operand for instruction
4336 // CHECK-ERROR dup v11.8s, w16
4338 // CHECK-ERROR error: invalid operand for instruction
4339 // CHECK-ERROR dup v17.4d, w28
4341 // CHECK-ERROR error: invalid operand for instruction
4342 // CHECK-ERROR dup v5.2d, w0
4345 //----------------------------------------------------------------------
4346 // Scalar Compare Bitwise Equal
4347 //----------------------------------------------------------------------
4351 // CHECK-ERROR: error: invalid operand for instruction
4352 // CHECK-ERROR: cmeq b20, d21, d22
4355 //----------------------------------------------------------------------
4356 // Scalar Compare Bitwise Equal To Zero
4357 //----------------------------------------------------------------------
4361 // CHECK-ERROR: error: invalid operand for instruction
4362 // CHECK-ERROR: cmeq d20, b21, #0
4365 //----------------------------------------------------------------------
4366 // Scalar Compare Unsigned Higher Or Same
4367 //----------------------------------------------------------------------
4371 // CHECK-ERROR: error: invalid operand for instruction
4372 // CHECK-ERROR: cmhs b20, d21, d22
4376 //----------------------------------------------------------------------
4377 // Scalar Compare Signed Greather Than Or Equal
4378 //----------------------------------------------------------------------
4382 // CHECK-ERROR: error: invalid operand for instruction
4383 // CHECK-ERROR: cmge b20, d21, d22
4386 //----------------------------------------------------------------------
4387 // Scalar Compare Signed Greather Than Or Equal To Zero
4388 //----------------------------------------------------------------------
4392 // CHECK-ERROR: error: invalid operand for instruction
4393 // CHECK-ERROR: cmge d20, b21, #0
4396 //----------------------------------------------------------------------
4397 // Scalar Compare Unsigned Higher
4398 //----------------------------------------------------------------------
4402 // CHECK-ERROR: error: invalid operand for instruction
4403 // CHECK-ERROR: cmhi b20, d21, d22
4406 //----------------------------------------------------------------------
4407 // Scalar Compare Signed Greater Than
4408 //----------------------------------------------------------------------
4412 // CHECK-ERROR: error: invalid operand for instruction
4413 // CHECK-ERROR: cmgt b20, d21, d22
4416 //----------------------------------------------------------------------
4417 // Scalar Compare Signed Greater Than Zero
4418 //----------------------------------------------------------------------
4422 // CHECK-ERROR: error: invalid operand for instruction
4423 // CHECK-ERROR: cmgt d20, b21, #0
4426 //----------------------------------------------------------------------
4427 // Scalar Compare Signed Less Than Or Equal To Zero
4428 //----------------------------------------------------------------------
4432 // CHECK-ERROR: error: invalid operand for instruction
4433 // CHECK-ERROR: cmle d20, b21, #0
4436 //----------------------------------------------------------------------
4437 // Scalar Compare Less Than Zero
4438 //----------------------------------------------------------------------
4442 // CHECK-ERROR: error: invalid operand for instruction
4443 // CHECK-ERROR: cmlt d20, b21, #0
4446 //----------------------------------------------------------------------
4447 // Scalar Compare Bitwise Test Bits
4448 //----------------------------------------------------------------------
4452 // CHECK-ERROR: error: invalid operand for instruction
4453 // CHECK-ERROR: cmtst b20, d21, d22
4456 //----------------------------------------------------------------------
4457 // Scalar Floating-point Compare Mask Equal
4458 //----------------------------------------------------------------------
4463 // CHECK-ERROR: error: invalid operand for instruction
4464 // CHECK-ERROR: fcmeq s10, h11, s12
4466 // CHECK-ERROR: error: invalid operand for instruction
4467 // CHECK-ERROR: fcmeq d20, s21, d22
4470 //----------------------------------------------------------------------
4471 // Scalar Floating-point Compare Mask Equal To Zero
4472 //----------------------------------------------------------------------
4474 fcmeq h10, s11, #0.0
4475 fcmeq d20, s21, #0.0
4477 // CHECK-ERROR: error: invalid operand for instruction
4478 // CHECK-ERROR: fcmeq h10, s11, #0.0
4480 // CHECK-ERROR: error: invalid operand for instruction
4481 // CHECK-ERROR: fcmeq d20, s21, #0.0
4484 //----------------------------------------------------------------------
4485 // Scalar Floating-point Compare Mask Greater Than Or Equal
4486 //----------------------------------------------------------------------
4491 // CHECK-ERROR: error: invalid operand for instruction
4492 // CHECK-ERROR: fcmge s10, h11, s12
4494 // CHECK-ERROR: error: invalid operand for instruction
4495 // CHECK-ERROR: fcmge d20, s21, d22
4498 //----------------------------------------------------------------------
4499 // Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
4500 //----------------------------------------------------------------------
4502 fcmge h10, s11, #0.0
4503 fcmge d20, s21, #0.0
4505 // CHECK-ERROR: error: invalid operand for instruction
4506 // CHECK-ERROR: fcmge h10, s11, #0.0
4508 // CHECK-ERROR: error: invalid operand for instruction
4509 // CHECK-ERROR: fcmge d20, s21, #0.0
4512 //----------------------------------------------------------------------
4513 // Scalar Floating-point Compare Mask Greather Than
4514 //----------------------------------------------------------------------
4519 // CHECK-ERROR: error: invalid operand for instruction
4520 // CHECK-ERROR: fcmgt s10, h11, s12
4522 // CHECK-ERROR: error: invalid operand for instruction
4523 // CHECK-ERROR: fcmgt d20, s21, d22
4526 //----------------------------------------------------------------------
4527 // Scalar Floating-point Compare Mask Greather Than Zero
4528 //----------------------------------------------------------------------
4530 fcmgt h10, s11, #0.0
4531 fcmgt d20, s21, #0.0
4533 // CHECK-ERROR: error: invalid operand for instruction
4534 // CHECK-ERROR: fcmgt h10, s11, #0.0
4536 // CHECK-ERROR: error: invalid operand for instruction
4537 // CHECK-ERROR: fcmgt d20, s21, #0.0
4540 //----------------------------------------------------------------------
4541 // Scalar Floating-point Compare Mask Less Than Or Equal To Zero
4542 //----------------------------------------------------------------------
4544 fcmle h10, s11, #0.0
4545 fcmle d20, s21, #0.0
4547 // CHECK-ERROR: error: invalid operand for instruction
4548 // CHECK-ERROR: fcmle h10, s11, #0.0
4550 // CHECK-ERROR: error: invalid operand for instruction
4551 // CHECK-ERROR: fcmle d20, s21, #0.0
4554 //----------------------------------------------------------------------
4555 // Scalar Floating-point Compare Mask Less Than
4556 //----------------------------------------------------------------------
4558 fcmlt h10, s11, #0.0
4559 fcmlt d20, s21, #0.0
4561 // CHECK-ERROR: error: invalid operand for instruction
4562 // CHECK-ERROR: fcmlt h10, s11, #0.0
4564 // CHECK-ERROR: error: invalid operand for instruction
4565 // CHECK-ERROR: fcmlt d20, s21, #0.0
4568 //----------------------------------------------------------------------
4569 // Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
4570 //----------------------------------------------------------------------
4575 // CHECK-ERROR: error: invalid operand for instruction
4576 // CHECK-ERROR: facge s10, h11, s12
4578 // CHECK-ERROR: error: invalid operand for instruction
4579 // CHECK-ERROR: facge d20, s21, d22
4582 //----------------------------------------------------------------------
4583 // Scalar Floating-point Absolute Compare Mask Greater Than
4584 //----------------------------------------------------------------------
4589 // CHECK-ERROR: error: invalid operand for instruction
4590 // CHECK-ERROR: facgt s10, h11, s12
4592 // CHECK-ERROR: error: invalid operand for instruction
4593 // CHECK-ERROR: facgt d20, d21, s22
4596 //----------------------------------------------------------------------
4597 // Scalar Signed Saturating Accumulated of Unsigned Value
4598 //----------------------------------------------------------------------
4605 // CHECK-ERROR: error: invalid operand for instruction
4606 // CHECK-ERROR: suqadd b0, h1
4608 // CHECK-ERROR: error: invalid operand for instruction
4609 // CHECK-ERROR: suqadd h0, s1
4611 // CHECK-ERROR: error: invalid operand for instruction
4612 // CHECK-ERROR: suqadd s0, d1
4614 // CHECK-ERROR: error: invalid operand for instruction
4615 // CHECK-ERROR: suqadd d0, b0
4618 //----------------------------------------------------------------------
4619 // Scalar Unsigned Saturating Accumulated of Signed Value
4620 //----------------------------------------------------------------------
4627 // CHECK-ERROR: error: invalid operand for instruction
4628 // CHECK-ERROR: usqadd b0, h1
4630 // CHECK-ERROR: error: invalid operand for instruction
4631 // CHECK-ERROR: usqadd h0, s1
4633 // CHECK-ERROR: error: invalid operand for instruction
4634 // CHECK-ERROR: usqadd s0, d1
4636 // CHECK-ERROR: error: invalid operand for instruction
4637 // CHECK-ERROR: usqadd d0, b1
4640 //----------------------------------------------------------------------
4641 // Scalar Absolute Value
4642 //----------------------------------------------------------------------
4646 // CHECK-ERROR: error: invalid operand for instruction
4647 // CHECK-ERROR: abs d29, s24
4650 //----------------------------------------------------------------------
4652 //----------------------------------------------------------------------
4656 // CHECK-ERROR: error: invalid operand for instruction
4657 // CHECK-ERROR: neg d29, s24
4660 //----------------------------------------------------------------------
4661 // Signed Saturating Doubling Multiply-Add Long
4662 //----------------------------------------------------------------------
4664 sqdmlal s17, h27, s12
4665 sqdmlal d19, s24, d12
4667 // CHECK-ERROR: error: invalid operand for instruction
4668 // CHECK-ERROR: sqdmlal s17, h27, s12
4670 // CHECK-ERROR: error: too few operands for instruction
4671 // CHECK-ERROR: sqdmlal d19, s24, d12
4674 //----------------------------------------------------------------------
4675 // Signed Saturating Doubling Multiply-Subtract Long
4676 //----------------------------------------------------------------------
4678 sqdmlsl s14, h12, s25
4679 sqdmlsl d12, s23, d13
4681 // CHECK-ERROR: error: invalid operand for instruction
4682 // CHECK-ERROR: sqdmlsl s14, h12, s25
4684 // CHECK-ERROR: error: too few operands for instruction
4685 // CHECK-ERROR: sqdmlsl d12, s23, d13
4688 //----------------------------------------------------------------------
4689 // Signed Saturating Doubling Multiply Long
4690 //----------------------------------------------------------------------
4692 sqdmull s12, h22, s12
4693 sqdmull d15, s22, d12
4695 // CHECK-ERROR: error: invalid operand for instruction
4696 // CHECK-ERROR: sqdmull s12, h22, s12
4698 // CHECK-ERROR: error: too few operands for instruction
4699 // CHECK-ERROR: sqdmull d15, s22, d12
4702 //----------------------------------------------------------------------
4703 // Scalar Signed Saturating Extract Unsigned Narrow
4704 //----------------------------------------------------------------------
4710 // CHECK-ERROR: error: invalid operand for instruction
4711 // CHECK-ERROR: sqxtun b19, b14
4713 // CHECK-ERROR: error: invalid operand for instruction
4714 // CHECK-ERROR: sqxtun h21, h15
4716 // CHECK-ERROR: error: invalid operand for instruction
4717 // CHECK-ERROR: sqxtun s20, s12
4720 //----------------------------------------------------------------------
4721 // Scalar Signed Saturating Extract Signed Narrow
4722 //----------------------------------------------------------------------
4728 // CHECK-ERROR: error: invalid operand for instruction
4729 // CHECK-ERROR: sqxtn b18, b18
4731 // CHECK-ERROR: error: invalid operand for instruction
4732 // CHECK-ERROR: sqxtn h20, h17
4734 // CHECK-ERROR: error: invalid operand for instruction
4735 // CHECK-ERROR: sqxtn s19, s14
4739 //----------------------------------------------------------------------
4740 // Scalar Unsigned Saturating Extract Narrow
4741 //----------------------------------------------------------------------
4747 // CHECK-ERROR: error: invalid operand for instruction
4748 // CHECK-ERROR: uqxtn b18, b18
4750 // CHECK-ERROR: error: invalid operand for instruction
4751 // CHECK-ERROR: uqxtn h20, h17
4753 // CHECK-ERROR: error: invalid operand for instruction
4754 // CHECK-ERROR: uqxtn s19, s14
4757 //----------------------------------------------------------------------
4758 // Scalar Signed Shift Right (Immediate)
4759 //----------------------------------------------------------------------
4762 // CHECK-ERROR: error: expected integer in range [1, 64]
4763 // CHECK-ERROR: sshr d15, d16, #99
4768 // CHECK-ERROR: error: invalid operand for instruction
4769 // CHECK-ERROR: sshr d15, s16, #31
4772 //----------------------------------------------------------------------
4773 // Scalar Unsigned Shift Right (Immediate)
4774 //----------------------------------------------------------------------
4778 // CHECK-ERROR: error: expected integer in range [1, 64]
4779 // CHECK-ERROR: ushr d10, d17, #99
4782 //----------------------------------------------------------------------
4783 // Scalar Signed Rounding Shift Right (Immediate)
4784 //----------------------------------------------------------------------
4788 // CHECK-ERROR: error: expected integer in range [1, 64]
4789 // CHECK-ERROR: srshr d19, d18, #99
4792 //----------------------------------------------------------------------
4793 // Scalar Unigned Rounding Shift Right (Immediate)
4794 //----------------------------------------------------------------------
4798 // CHECK-ERROR: error: expected integer in range [1, 64]
4799 // CHECK-ERROR: urshr d20, d23, #99
4802 //----------------------------------------------------------------------
4803 // Scalar Signed Shift Right and Accumulate (Immediate)
4804 //----------------------------------------------------------------------
4808 // CHECK-ERROR: error: expected integer in range [1, 64]
4809 // CHECK-ERROR: ssra d18, d12, #99
4812 //----------------------------------------------------------------------
4813 // Scalar Unsigned Shift Right and Accumulate (Immediate)
4814 //----------------------------------------------------------------------
4818 // CHECK-ERROR: error: expected integer in range [1, 64]
4819 // CHECK-ERROR: usra d20, d13, #99
4822 //----------------------------------------------------------------------
4823 // Scalar Signed Rounding Shift Right and Accumulate (Immediate)
4824 //----------------------------------------------------------------------
4828 // CHECK-ERROR: error: expected integer in range [1, 64]
4829 // CHECK-ERROR: srsra d15, d11, #99
4832 //----------------------------------------------------------------------
4833 // Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
4834 //----------------------------------------------------------------------
4838 // CHECK-ERROR: error: expected integer in range [1, 64]
4839 // CHECK-ERROR: ursra d18, d10, #99
4842 //----------------------------------------------------------------------
4843 // Scalar Shift Left (Immediate)
4844 //----------------------------------------------------------------------
4848 // CHECK-ERROR: error: expected integer in range [0, 63]
4849 // CHECK-ERROR: shl d7, d10, #99
4854 // CHECK-ERROR: error: invalid operand for instruction
4855 // CHECK-ERROR: shl d7, s16, #31
4858 //----------------------------------------------------------------------
4859 // Signed Saturating Shift Left (Immediate)
4860 //----------------------------------------------------------------------
4867 // CHECK-ERROR: error: expected integer in range [0, 7]
4868 // CHECK-ERROR: sqshl b11, b19, #99
4870 // CHECK-ERROR: error: expected integer in range [0, 15]
4871 // CHECK-ERROR: sqshl h13, h18, #99
4873 // CHECK-ERROR: error: expected integer in range [0, 31]
4874 // CHECK-ERROR: sqshl s14, s17, #99
4876 // CHECK-ERROR: error: expected integer in range [0, 63]
4877 // CHECK-ERROR: sqshl d15, d16, #99
4880 //----------------------------------------------------------------------
4881 // Unsigned Saturating Shift Left (Immediate)
4882 //----------------------------------------------------------------------
4889 // CHECK-ERROR: error: expected integer in range [0, 7]
4890 // CHECK-ERROR: uqshl b18, b15, #99
4892 // CHECK-ERROR: error: expected integer in range [0, 15]
4893 // CHECK-ERROR: uqshl h11, h18, #99
4895 // CHECK-ERROR: error: expected integer in range [0, 31]
4896 // CHECK-ERROR: uqshl s14, s19, #99
4898 // CHECK-ERROR: error: expected integer in range [0, 63]
4899 // CHECK-ERROR: uqshl d15, d12, #99
4902 //----------------------------------------------------------------------
4903 // Signed Saturating Shift Left Unsigned (Immediate)
4904 //----------------------------------------------------------------------
4906 sqshlu b15, b18, #99
4907 sqshlu h19, h17, #99
4908 sqshlu s16, s14, #99
4909 sqshlu d11, d13, #99
4911 // CHECK-ERROR: error: expected integer in range [0, 7]
4912 // CHECK-ERROR: sqshlu b15, b18, #99
4914 // CHECK-ERROR: error: expected integer in range [0, 15]
4915 // CHECK-ERROR: sqshlu h19, h17, #99
4917 // CHECK-ERROR: error: expected integer in range [0, 31]
4918 // CHECK-ERROR: sqshlu s16, s14, #99
4920 // CHECK-ERROR: error: expected integer in range [0, 63]
4921 // CHECK-ERROR: sqshlu d11, d13, #99
4924 //----------------------------------------------------------------------
4925 // Shift Right And Insert (Immediate)
4926 //----------------------------------------------------------------------
4930 // CHECK-ERROR: error: expected integer in range [1, 64]
4931 // CHECK-ERROR: sri d10, d12, #99
4934 //----------------------------------------------------------------------
4935 // Shift Left And Insert (Immediate)
4936 //----------------------------------------------------------------------
4940 // CHECK-ERROR: error: expected integer in range [0, 63]
4941 // CHECK-ERROR: sli d10, d14, #99
4944 //----------------------------------------------------------------------
4945 // Signed Saturating Shift Right Narrow (Immediate)
4946 //----------------------------------------------------------------------
4948 sqshrn b10, h15, #99
4949 sqshrn h17, s10, #99
4950 sqshrn s18, d10, #99
4952 // CHECK-ERROR: error: expected integer in range [1, 8]
4953 // CHECK-ERROR: sqshrn b10, h15, #99
4955 // CHECK-ERROR: error: expected integer in range [1, 16]
4956 // CHECK-ERROR: sqshrn h17, s10, #99
4958 // CHECK-ERROR: error: expected integer in range [1, 32]
4959 // CHECK-ERROR: sqshrn s18, d10, #99
4962 //----------------------------------------------------------------------
4963 // Unsigned Saturating Shift Right Narrow (Immediate)
4964 //----------------------------------------------------------------------
4966 uqshrn b12, h10, #99
4967 uqshrn h10, s14, #99
4968 uqshrn s10, d12, #99
4970 // CHECK-ERROR: error: expected integer in range [1, 8]
4971 // CHECK-ERROR: uqshrn b12, h10, #99
4973 // CHECK-ERROR: error: expected integer in range [1, 16]
4974 // CHECK-ERROR: uqshrn h10, s14, #99
4976 // CHECK-ERROR: error: expected integer in range [1, 32]
4977 // CHECK-ERROR: uqshrn s10, d12, #99
4980 //----------------------------------------------------------------------
4981 // Signed Saturating Rounded Shift Right Narrow (Immediate)
4982 //----------------------------------------------------------------------
4984 sqrshrn b10, h13, #99
4985 sqrshrn h15, s10, #99
4986 sqrshrn s15, d12, #99
4988 // CHECK-ERROR: error: expected integer in range [1, 8]
4989 // CHECK-ERROR: sqrshrn b10, h13, #99
4991 // CHECK-ERROR: error: expected integer in range [1, 16]
4992 // CHECK-ERROR: sqrshrn h15, s10, #99
4994 // CHECK-ERROR: error: expected integer in range [1, 32]
4995 // CHECK-ERROR: sqrshrn s15, d12, #99
4998 //----------------------------------------------------------------------
4999 // Unsigned Saturating Rounded Shift Right Narrow (Immediate)
5000 //----------------------------------------------------------------------
5002 uqrshrn b10, h12, #99
5003 uqrshrn h12, s10, #99
5004 uqrshrn s10, d10, #99
5006 // CHECK-ERROR: error: expected integer in range [1, 8]
5007 // CHECK-ERROR: uqrshrn b10, h12, #99
5009 // CHECK-ERROR: error: expected integer in range [1, 16]
5010 // CHECK-ERROR: uqrshrn h12, s10, #99
5012 // CHECK-ERROR: error: expected integer in range [1, 32]
5013 // CHECK-ERROR: uqrshrn s10, d10, #99
5016 //----------------------------------------------------------------------
5017 // Signed Saturating Shift Right Unsigned Narrow (Immediate)
5018 //----------------------------------------------------------------------
5020 sqshrun b15, h10, #99
5021 sqshrun h20, s14, #99
5022 sqshrun s10, d15, #99
5024 // CHECK-ERROR: error: expected integer in range [1, 8]
5025 // CHECK-ERROR: sqshrun b15, h10, #99
5027 // CHECK-ERROR: error: expected integer in range [1, 16]
5028 // CHECK-ERROR: sqshrun h20, s14, #99
5030 // CHECK-ERROR: error: expected integer in range [1, 32]
5031 // CHECK-ERROR: sqshrun s10, d15, #99
5034 //----------------------------------------------------------------------
5035 // Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
5036 //----------------------------------------------------------------------
5038 sqrshrun b17, h10, #99
5039 sqrshrun h10, s13, #99
5040 sqrshrun s22, d16, #99
5042 // CHECK-ERROR: error: expected integer in range [1, 8]
5043 // CHECK-ERROR: sqrshrun b17, h10, #99
5045 // CHECK-ERROR: error: expected integer in range [1, 16]
5046 // CHECK-ERROR: sqrshrun h10, s13, #99
5048 // CHECK-ERROR: error: expected integer in range [1, 32]
5049 // CHECK-ERROR: sqrshrun s22, d16, #99
5052 //----------------------------------------------------------------------
5053 // Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
5054 //----------------------------------------------------------------------
5061 // CHECK-ERROR: error: expected integer in range [1, 32]
5062 // CHECK-ERROR: scvtf s22, s13, #0
5064 // CHECK-ERROR: error: expected integer in range [1, 32]
5065 // CHECK-ERROR: scvtf s22, s13, #33
5067 // CHECK-ERROR: error: expected integer in range [1, 64]
5068 // CHECK-ERROR: scvtf d21, d12, #65
5070 // CHECK-ERROR: error: invalid operand for instruction
5071 // CHECK-ERROR: scvtf d21, s12, #31
5074 //----------------------------------------------------------------------
5075 // Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
5076 //----------------------------------------------------------------------
5082 // CHECK-ERROR: error: expected integer in range [1, 32]
5083 // CHECK-ERROR: ucvtf s22, s13, #34
5085 // CHECK-ERROR: error: expected integer in range [1, 64]
5086 // CHECK-ERROR: ucvtf d21, d14, #65
5088 // CHECK-ERROR: error: invalid operand for instruction
5089 // CHECK-ERROR: ucvtf d21, s14, #64
5092 //------------------------------------------------------------------------------
5094 //------------------------------------------------------------------------------
5096 rev32 v30.2s, v31.2s
5097 rev32 v30.4s, v31.4s
5098 rev32 v30.2d, v31.2d
5105 // CHECK-ERROR: error: invalid operand for instruction
5106 // CHECK-ERROR: rev64 v6.2d, v8.2d
5108 // CHECK-ERROR: error: invalid operand for instruction
5109 // CHECK-ERROR: rev32 v30.2s, v31.2s
5111 // CHECK-ERROR: error: invalid operand for instruction
5112 // CHECK-ERROR: rev32 v30.4s, v31.4s
5114 // CHECK-ERROR: error: invalid operand for instruction
5115 // CHECK-ERROR: rev32 v30.2d, v31.2d
5117 // CHECK-ERROR: error: invalid operand for instruction
5118 // CHECK-ERROR: rev16 v21.4h, v1.4h
5120 // CHECK-ERROR: error: invalid operand for instruction
5121 // CHECK-ERROR: rev16 v21.8h, v1.8h
5123 // CHECK-ERROR: error: invalid operand for instruction
5124 // CHECK-ERROR: rev16 v21.2s, v1.2s
5126 // CHECK-ERROR: error: invalid operand for instruction
5127 // CHECK-ERROR: rev16 v21.4s, v1.4s
5129 // CHECK-ERROR: error: invalid operand for instruction
5130 // CHECK-ERROR: rev16 v21.2d, v1.2d
5133 //------------------------------------------------------------------------------
5134 // Signed integer pairwise add long
5135 //------------------------------------------------------------------------------
5137 saddlp v3.8h, v21.8h
5142 // CHECK-ERROR: error: invalid operand for instruction
5143 // CHECK-ERROR: saddlp v3.8h, v21.8h
5145 // CHECK-ERROR: error: invalid operand for instruction
5146 // CHECK-ERROR: saddlp v8.8b, v5.8b
5148 // CHECK-ERROR: error: invalid operand for instruction
5149 // CHECK-ERROR: saddlp v9.8h, v1.4s
5151 // CHECK-ERROR: error: invalid operand for instruction
5152 // CHECK-ERROR: saddlp v0.4s, v1.2d
5155 //------------------------------------------------------------------------------
5156 // Unsigned integer pairwise add long
5157 //------------------------------------------------------------------------------
5159 uaddlp v3.8h, v21.8h
5164 // CHECK-ERROR: error: invalid operand for instruction
5165 // CHECK-ERROR: uaddlp v3.8h, v21.8h
5167 // CHECK-ERROR: error: invalid operand for instruction
5168 // CHECK-ERROR: uaddlp v8.8b, v5.8b
5170 // CHECK-ERROR: error: invalid operand for instruction
5171 // CHECK-ERROR: uaddlp v9.8h, v1.4s
5173 // CHECK-ERROR: error: invalid operand for instruction
5174 // CHECK-ERROR: uaddlp v0.4s, v1.2d
5177 //------------------------------------------------------------------------------
5178 // Signed integer pairwise add and accumulate long
5179 //------------------------------------------------------------------------------
5181 sadalp v3.16b, v21.16b
5185 sadalp v12.2d, v4.8h
5187 // CHECK-ERROR: error: invalid operand for instruction
5188 // CHECK-ERROR: sadalp v3.16b, v21.16b
5190 // CHECK-ERROR: error: invalid operand for instruction
5191 // CHECK-ERROR: sadalp v8.4h, v5.4h
5193 // CHECK-ERROR: error: invalid operand for instruction
5194 // CHECK-ERROR: sadalp v9.4s, v1.4s
5196 // CHECK-ERROR: error: invalid operand for instruction
5197 // CHECK-ERROR: sadalp v0.4h, v1.2s
5199 // CHECK-ERROR: error: invalid operand for instruction
5200 // CHECK-ERROR: sadalp v12.2d, v4.8h
5203 //------------------------------------------------------------------------------
5204 // Unsigned integer pairwise add and accumulate long
5205 //------------------------------------------------------------------------------
5207 uadalp v3.16b, v21.16b
5211 uadalp v12.2d, v4.8h
5213 // CHECK-ERROR: error: invalid operand for instruction
5214 // CHECK-ERROR: uadalp v3.16b, v21.16b
5216 // CHECK-ERROR: error: invalid operand for instruction
5217 // CHECK-ERROR: uadalp v8.4h, v5.4h
5219 // CHECK-ERROR: error: invalid operand for instruction
5220 // CHECK-ERROR: uadalp v9.4s, v1.4s
5222 // CHECK-ERROR: error: invalid operand for instruction
5223 // CHECK-ERROR: uadalp v0.4h, v1.2s
5225 // CHECK-ERROR: error: invalid operand for instruction
5226 // CHECK-ERROR: uadalp v12.2d, v4.8h
5229 //------------------------------------------------------------------------------
5230 // Signed integer saturating accumulate of unsigned value
5231 //------------------------------------------------------------------------------
5233 suqadd v0.16b, v31.8b
5235 suqadd v13.4h, v21.4s
5238 // CHECK-ERROR: error: invalid operand for instruction
5239 // CHECK-ERROR: suqadd v0.16b, v31.8b
5241 // CHECK-ERROR: error: invalid operand for instruction
5242 // CHECK-ERROR: suqadd v1.8b, v9.8h
5244 // CHECK-ERROR: error: invalid operand for instruction
5245 // CHECK-ERROR: suqadd v13.4h, v21.4s
5247 // CHECK-ERROR: error: invalid operand for instruction
5248 // CHECK-ERROR: suqadd v4.2s, v0.2d
5251 //------------------------------------------------------------------------------
5252 // Unsigned integer saturating accumulate of signed value
5253 //------------------------------------------------------------------------------
5255 usqadd v0.16b, v31.8b
5257 usqadd v13.4h, v21.4s
5260 // CHECK-ERROR: error: invalid operand for instruction
5261 // CHECK-ERROR: usqadd v0.16b, v31.8b
5263 // CHECK-ERROR: error: invalid operand for instruction
5264 // CHECK-ERROR: usqadd v2.8h, v4.4h
5266 // CHECK-ERROR: error: invalid operand for instruction
5267 // CHECK-ERROR: usqadd v13.4h, v21.4s
5269 // CHECK-ERROR: error: invalid operand for instruction
5270 // CHECK-ERROR: usqadd v4.2s, v0.2d
5273 //------------------------------------------------------------------------------
5274 // Integer saturating absolute
5275 //------------------------------------------------------------------------------
5277 sqabs v0.16b, v31.8b
5282 // CHECK-ERROR: error: invalid operand for instruction
5283 // CHECK-ERROR: sqabs v0.16b, v31.8b
5285 // CHECK-ERROR: error: invalid operand for instruction
5286 // CHECK-ERROR: sqabs v2.8h, v4.4h
5288 // CHECK-ERROR: error: invalid operand for instruction
5289 // CHECK-ERROR: sqabs v6.4s, v8.2s
5291 // CHECK-ERROR: error: invalid operand for instruction
5292 // CHECK-ERROR: sqabs v6.2d, v8.2s
5295 //------------------------------------------------------------------------------
5296 // Signed integer saturating negate
5297 //------------------------------------------------------------------------------
5299 sqneg v0.16b, v31.8b
5304 // CHECK-ERROR: error: invalid operand for instruction
5305 // CHECK-ERROR: sqneg v0.16b, v31.8b
5307 // CHECK-ERROR: error: invalid operand for instruction
5308 // CHECK-ERROR: sqneg v2.8h, v4.4h
5310 // CHECK-ERROR: error: invalid operand for instruction
5311 // CHECK-ERROR: sqneg v6.4s, v8.2s
5313 // CHECK-ERROR: error: invalid operand for instruction
5314 // CHECK-ERROR: sqneg v6.2d, v8.2s
5317 //------------------------------------------------------------------------------
5319 //------------------------------------------------------------------------------
5326 // CHECK-ERROR: error: invalid operand for instruction
5327 // CHECK-ERROR: abs v0.16b, v31.8b
5329 // CHECK-ERROR: error: invalid operand for instruction
5330 // CHECK-ERROR: abs v2.8h, v4.4h
5332 // CHECK-ERROR: error: invalid operand for instruction
5333 // CHECK-ERROR: abs v6.4s, v8.2s
5335 // CHECK-ERROR: error: invalid operand for instruction
5336 // CHECK-ERROR: abs v6.2d, v8.2s
5339 //------------------------------------------------------------------------------
5340 // Integer count leading sign bits
5341 //------------------------------------------------------------------------------
5345 // CHECK-ERROR: error: invalid operand for instruction
5346 // CHECK-ERROR: cls v0.2d, v31.2d
5349 //------------------------------------------------------------------------------
5350 // Integer count leading zeros
5351 //------------------------------------------------------------------------------
5355 // CHECK-ERROR: error: invalid operand for instruction
5356 // CHECK-ERROR: clz v0.2d, v31.2d
5359 //------------------------------------------------------------------------------
5361 //------------------------------------------------------------------------------
5369 // CHECK-ERROR: error: invalid operand for instruction
5370 // CHECK-ERROR: cnt v2.8h, v4.8h
5372 // CHECK-ERROR: error: invalid operand for instruction
5373 // CHECK-ERROR: cnt v6.4s, v8.4s
5375 // CHECK-ERROR: error: invalid operand for instruction
5376 // CHECK-ERROR: cnt v6.2d, v8.2d
5378 // CHECK-ERROR: error: invalid operand for instruction
5379 // CHECK-ERROR: cnt v13.4h, v21.4h
5381 // CHECK-ERROR: error: invalid operand for instruction
5382 // CHECK-ERROR: cnt v4.2s, v0.2s
5386 //------------------------------------------------------------------------------
5388 //------------------------------------------------------------------------------
5396 // CHECK-ERROR: error: invalid operand for instruction
5397 // CHECK-ERROR: not v2.8h, v4.8h
5399 // CHECK-ERROR: error: invalid operand for instruction
5400 // CHECK-ERROR: not v6.4s, v8.4s
5402 // CHECK-ERROR: error: invalid operand for instruction
5403 // CHECK-ERROR: not v6.2d, v8.2d
5405 // CHECK-ERROR: error: invalid operand for instruction
5406 // CHECK-ERROR: not v13.4h, v21.4h
5408 // CHECK-ERROR: error: invalid operand for instruction
5409 // CHECK-ERROR: not v4.2s, v0.2s
5412 //------------------------------------------------------------------------------
5414 //------------------------------------------------------------------------------
5422 // CHECK-ERROR: error: invalid operand for instruction
5423 // CHECK-ERROR: rbit v2.8h, v4.8h
5425 // CHECK-ERROR: error: invalid operand for instruction
5426 // CHECK-ERROR: rbit v6.4s, v8.4s
5428 // CHECK-ERROR: error: invalid operand for instruction
5429 // CHECK-ERROR: rbit v6.2d, v8.2d
5431 // CHECK-ERROR: error: invalid operand for instruction
5432 // CHECK-ERROR: rbit v13.4h, v21.4h
5434 // CHECK-ERROR: error: invalid operand for instruction
5435 // CHECK-ERROR: rbit v4.2s, v0.2s
5438 //------------------------------------------------------------------------------
5439 // Floating-point absolute
5440 //------------------------------------------------------------------------------
5442 fabs v0.16b, v31.16b
5447 // CHECK-ERROR: error: invalid operand for instruction
5448 // CHECK-ERROR: fabs v0.16b, v31.16b
5450 // CHECK-ERROR: error: invalid operand for instruction
5451 // CHECK-ERROR: fabs v2.8h, v4.8h
5453 // CHECK-ERROR: error: invalid operand for instruction
5454 // CHECK-ERROR: fabs v1.8b, v9.8b
5456 // CHECK-ERROR: error: invalid operand for instruction
5457 // CHECK-ERROR: fabs v13.4h, v21.4h
5460 //------------------------------------------------------------------------------
5461 // Floating-point negate
5462 //------------------------------------------------------------------------------
5464 fneg v0.16b, v31.16b
5469 // CHECK-ERROR: error: invalid operand for instruction
5470 // CHECK-ERROR: fneg v0.16b, v31.16b
5472 // CHECK-ERROR: error: invalid operand for instruction
5473 // CHECK-ERROR: fneg v2.8h, v4.8h
5475 // CHECK-ERROR: error: invalid operand for instruction
5476 // CHECK-ERROR: fneg v1.8b, v9.8b
5478 // CHECK-ERROR: error: invalid operand for instruction
5479 // CHECK-ERROR: fneg v13.4h, v21.4h
5482 //------------------------------------------------------------------------------
5483 // Integer extract and narrow
5484 //------------------------------------------------------------------------------
5493 // CHECK-ERROR: error: invalid operand for instruction
5494 // CHECK-ERROR: xtn v0.16b, v31.8h
5496 // CHECK-ERROR: error: invalid operand for instruction
5497 // CHECK-ERROR: xtn v2.8h, v4.4s
5499 // CHECK-ERROR: error: invalid operand for instruction
5500 // CHECK-ERROR: xtn v6.4s, v8.2d
5502 // CHECK-ERROR: error: invalid operand for instruction
5503 // CHECK-ERROR: xtn2 v1.8b, v9.8h
5505 // CHECK-ERROR: error: invalid operand for instruction
5506 // CHECK-ERROR: xtn2 v13.4h, v21.4s
5508 // CHECK-ERROR: error: invalid operand for instruction
5509 // CHECK-ERROR: xtn2 v4.2s, v0.2d
5512 //------------------------------------------------------------------------------
5513 // Signed integer saturating extract and unsigned narrow
5514 //------------------------------------------------------------------------------
5516 sqxtun v0.16b, v31.8h
5519 sqxtun2 v1.8b, v9.8h
5520 sqxtun2 v13.4h, v21.4s
5521 sqxtun2 v4.2s, v0.2d
5523 // CHECK-ERROR: error: invalid operand for instruction
5524 // CHECK-ERROR: sqxtun v0.16b, v31.8h
5526 // CHECK-ERROR: error: invalid operand for instruction
5527 // CHECK-ERROR: sqxtun v2.8h, v4.4s
5529 // CHECK-ERROR: error: invalid operand for instruction
5530 // CHECK-ERROR: sqxtun v6.4s, v8.2d
5532 // CHECK-ERROR: error: invalid operand for instruction
5533 // CHECK-ERROR: sqxtun2 v1.8b, v9.8h
5535 // CHECK-ERROR: error: invalid operand for instruction
5536 // CHECK-ERROR: sqxtun2 v13.4h, v21.4s
5538 // CHECK-ERROR: error: invalid operand for instruction
5539 // CHECK-ERROR: sqxtun2 v4.2s, v0.2d
5542 //------------------------------------------------------------------------------
5543 // Signed integer saturating extract and narrow
5544 //------------------------------------------------------------------------------
5546 sqxtn v0.16b, v31.8h
5550 sqxtn2 v13.4h, v21.4s
5553 // CHECK-ERROR: error: invalid operand for instruction
5554 // CHECK-ERROR: sqxtn v0.16b, v31.8h
5556 // CHECK-ERROR: error: invalid operand for instruction
5557 // CHECK-ERROR: sqxtn v2.8h, v4.4s
5559 // CHECK-ERROR: error: invalid operand for instruction
5560 // CHECK-ERROR: sqxtn v6.4s, v8.2d
5562 // CHECK-ERROR: error: invalid operand for instruction
5563 // CHECK-ERROR: sqxtn2 v1.8b, v9.8h
5565 // CHECK-ERROR: error: invalid operand for instruction
5566 // CHECK-ERROR: sqxtn2 v13.4h, v21.4s
5568 // CHECK-ERROR: error: invalid operand for instruction
5569 // CHECK-ERROR: sqxtn2 v4.2s, v0.2d
5572 //------------------------------------------------------------------------------
5573 // Unsigned integer saturating extract and narrow
5574 //------------------------------------------------------------------------------
5576 uqxtn v0.16b, v31.8h
5580 uqxtn2 v13.4h, v21.4s
5583 // CHECK-ERROR: error: invalid operand for instruction
5584 // CHECK-ERROR: uqxtn v0.16b, v31.8h
5586 // CHECK-ERROR: error: invalid operand for instruction
5587 // CHECK-ERROR: uqxtn v2.8h, v4.4s
5589 // CHECK-ERROR: error: invalid operand for instruction
5590 // CHECK-ERROR: uqxtn v6.4s, v8.2d
5592 // CHECK-ERROR: error: invalid operand for instruction
5593 // CHECK-ERROR: uqxtn2 v1.8b, v9.8h
5595 // CHECK-ERROR: error: invalid operand for instruction
5596 // CHECK-ERROR: uqxtn2 v13.4h, v21.4s
5598 // CHECK-ERROR: error: invalid operand for instruction
5599 // CHECK-ERROR: uqxtn2 v4.2s, v0.2d
5602 //------------------------------------------------------------------------------
5603 // Integer shift left long
5604 //------------------------------------------------------------------------------
5606 shll2 v2.8h, v4.16b, #7
5607 shll2 v6.4s, v8.8h, #15
5608 shll2 v6.2d, v8.4s, #31
5609 shll v2.8h, v4.16b, #8
5610 shll v6.4s, v8.8h, #16
5611 shll v6.2d, v8.4s, #32
5612 shll v2.8h, v4.8b, #8
5613 shll v6.4s, v8.4h, #16
5614 shll v6.2d, v8.2s, #32
5615 shll2 v2.8h, v4.8b, #5
5616 shll2 v6.4s, v8.4h, #14
5617 shll2 v6.2d, v8.2s, #1
5619 // CHECK-ERROR: error: invalid operand for instruction
5620 // CHECK-ERROR: shll2 v2.8h, v4.16b, #7
5622 // CHECK-ERROR: error: invalid operand for instruction
5623 // CHECK-ERROR: shll2 v6.4s, v8.8h, #15
5625 // CHECK-ERROR: error: invalid operand for instruction
5626 // CHECK-ERROR: shll2 v6.2d, v8.4s, #31
5628 // CHECK-ERROR: error: invalid operand for instruction
5629 // CHECK-ERROR: shll v2.8h, v4.16b, #8
5631 // CHECK-ERROR: error: invalid operand for instruction
5632 // CHECK-ERROR: shll v6.4s, v8.8h, #16
5634 // CHECK-ERROR: error: invalid operand for instruction
5635 // CHECK-ERROR: shll v6.2d, v8.4s, #32
5637 // CHECK-ERROR: error: invalid operand for instruction
5638 // CHECK-ERROR: shll2 v2.8h, v4.8b, #5
5640 // CHECK-ERROR: error: invalid operand for instruction
5641 // CHECK-ERROR: shll2 v6.4s, v8.4h, #14
5643 // CHECK-ERROR: error: invalid operand for instruction
5644 // CHECK-ERROR: shll2 v6.2d, v8.2s, #1
5647 //------------------------------------------------------------------------------
5648 // Floating-point convert downsize
5649 //------------------------------------------------------------------------------
5653 fcvtn2 v13.4h, v21.4s
5656 // CHECK-ERROR: error: invalid operand for instruction
5657 // CHECK-ERROR: fcvtn v2.8h, v4.4s
5659 // CHECK-ERROR: error: invalid operand for instruction
5660 // CHECK-ERROR: fcvtn v6.4s, v8.2d
5662 // CHECK-ERROR: error: invalid operand for instruction
5663 // CHECK-ERROR: fcvtn2 v13.4h, v21.4s
5665 // CHECK-ERROR: error: invalid operand for instruction
5666 // CHECK-ERROR: fcvtn2 v4.2s, v0.2d
5669 //------------------------------------------------------------------------------
5670 // Floating-point convert downsize with inexact
5671 //------------------------------------------------------------------------------
5674 fcvtxn2 v4.2s, v0.2d
5676 // CHECK-ERROR: error: invalid operand for instruction
5677 // CHECK-ERROR: fcvtxn v6.4s, v8.2d
5679 // CHECK-ERROR: error: invalid operand for instruction
5680 // CHECK-ERROR: fcvtxn2 v4.2s, v0.2d
5683 //------------------------------------------------------------------------------
5684 // Floating-point convert upsize
5685 //------------------------------------------------------------------------------
5690 fcvtl v17.2d, v28.4s
5692 // CHECK-ERROR: error: invalid operand for instruction
5693 // CHECK-ERROR: fcvtl2 v9.4s, v1.4h
5695 // CHECK-ERROR: error: invalid operand for instruction
5696 // CHECK-ERROR: fcvtl2 v0.2d, v1.2s
5698 // CHECK-ERROR: error: invalid operand for instruction
5699 // CHECK-ERROR: fcvtl v12.4s, v4.8h
5701 // CHECK-ERROR: error: invalid operand for instruction
5702 // CHECK-ERROR: fcvtl v17.2d, v28.4s
5705 //------------------------------------------------------------------------------
5706 // Floating-point round to integral
5707 //------------------------------------------------------------------------------
5709 frintn v0.16b, v31.16b
5712 frintn v13.4h, v21.4h
5714 frinta v0.16b, v31.16b
5717 frinta v13.4h, v21.4h
5719 frintp v0.16b, v31.16b
5722 frintp v13.4h, v21.4h
5724 frintm v0.16b, v31.16b
5727 frintm v13.4h, v21.4h
5729 frintx v0.16b, v31.16b
5732 frintx v13.4h, v21.4h
5734 frintz v0.16b, v31.16b
5737 frintz v13.4h, v21.4h
5739 frinti v0.16b, v31.16b
5742 frinti v13.4h, v21.4h
5744 fcvtns v0.16b, v31.16b
5747 fcvtns v13.4h, v21.4h
5749 fcvtnu v0.16b, v31.16b
5752 fcvtnu v13.4h, v21.4h
5754 fcvtps v0.16b, v31.16b
5757 fcvtps v13.4h, v21.4h
5759 fcvtpu v0.16b, v31.16b
5762 fcvtpu v13.4h, v21.4h
5764 fcvtms v0.16b, v31.16b
5767 fcvtms v13.4h, v21.4h
5769 fcvtmu v0.16b, v31.16b
5772 fcvtmu v13.4h, v21.4h
5774 fcvtzs v0.16b, v31.16b
5777 fcvtzs v13.4h, v21.4h
5779 fcvtzu v0.16b, v31.16b
5782 fcvtzu v13.4h, v21.4h
5784 fcvtas v0.16b, v31.16b
5787 fcvtas v13.4h, v21.4h
5789 fcvtau v0.16b, v31.16b
5792 fcvtau v13.4h, v21.4h
5794 urecpe v0.16b, v31.16b
5797 urecpe v13.4h, v21.4h
5800 ursqrte v0.16b, v31.16b
5801 ursqrte v2.8h, v4.8h
5802 ursqrte v1.8b, v9.8b
5803 ursqrte v13.4h, v21.4h
5804 ursqrte v1.2d, v9.2d
5806 scvtf v0.16b, v31.16b
5809 scvtf v13.4h, v21.4h
5811 ucvtf v0.16b, v31.16b
5814 ucvtf v13.4h, v21.4h
5816 frecpe v0.16b, v31.16b
5819 frecpe v13.4h, v21.4h
5821 frsqrte v0.16b, v31.16b
5822 frsqrte v2.8h, v4.8h
5823 frsqrte v1.8b, v9.8b
5824 frsqrte v13.4h, v21.4h
5826 fsqrt v0.16b, v31.16b
5829 fsqrt v13.4h, v21.4h
5831 // CHECK-ERROR: error: invalid operand for instruction
5832 // CHECK-ERROR: frintn v0.16b, v31.16b
5834 // CHECK-ERROR: error: invalid operand for instruction
5835 // CHECK-ERROR: frintn v2.8h, v4.8h
5837 // CHECK-ERROR: error: invalid operand for instruction
5838 // CHECK-ERROR: frintn v1.8b, v9.8b
5840 // CHECK-ERROR: error: invalid operand for instruction
5841 // CHECK-ERROR: frintn v13.4h, v21.4h
5843 // CHECK-ERROR: error: invalid operand for instruction
5844 // CHECK-ERROR: frinta v0.16b, v31.16b
5846 // CHECK-ERROR: error: invalid operand for instruction
5847 // CHECK-ERROR: frinta v2.8h, v4.8h
5849 // CHECK-ERROR: error: invalid operand for instruction
5850 // CHECK-ERROR: frinta v1.8b, v9.8b
5852 // CHECK-ERROR: error: invalid operand for instruction
5853 // CHECK-ERROR: frinta v13.4h, v21.4h
5855 // CHECK-ERROR: error: invalid operand for instruction
5856 // CHECK-ERROR: frintp v0.16b, v31.16b
5858 // CHECK-ERROR: error: invalid operand for instruction
5859 // CHECK-ERROR: frintp v2.8h, v4.8h
5861 // CHECK-ERROR: error: invalid operand for instruction
5862 // CHECK-ERROR: frintp v1.8b, v9.8b
5864 // CHECK-ERROR: error: invalid operand for instruction
5865 // CHECK-ERROR: frintp v13.4h, v21.4h
5867 // CHECK-ERROR: error: invalid operand for instruction
5868 // CHECK-ERROR: frintm v0.16b, v31.16b
5870 // CHECK-ERROR: error: invalid operand for instruction
5871 // CHECK-ERROR: frintm v2.8h, v4.8h
5873 // CHECK-ERROR: error: invalid operand for instruction
5874 // CHECK-ERROR: frintm v1.8b, v9.8b
5876 // CHECK-ERROR: error: invalid operand for instruction
5877 // CHECK-ERROR: frintm v13.4h, v21.4h
5879 // CHECK-ERROR: error: invalid operand for instruction
5880 // CHECK-ERROR: frintx v0.16b, v31.16b
5882 // CHECK-ERROR: error: invalid operand for instruction
5883 // CHECK-ERROR: frintx v2.8h, v4.8h
5885 // CHECK-ERROR: error: invalid operand for instruction
5886 // CHECK-ERROR: frintx v1.8b, v9.8b
5888 // CHECK-ERROR: error: invalid operand for instruction
5889 // CHECK-ERROR: frintx v13.4h, v21.4h
5891 // CHECK-ERROR: error: invalid operand for instruction
5892 // CHECK-ERROR: frintz v0.16b, v31.16b
5894 // CHECK-ERROR: error: invalid operand for instruction
5895 // CHECK-ERROR: frintz v2.8h, v4.8h
5897 // CHECK-ERROR: error: invalid operand for instruction
5898 // CHECK-ERROR: frintz v1.8b, v9.8b
5900 // CHECK-ERROR: error: invalid operand for instruction
5901 // CHECK-ERROR: frintz v13.4h, v21.4h
5903 // CHECK-ERROR: error: invalid operand for instruction
5904 // CHECK-ERROR: frinti v0.16b, v31.16b
5906 // CHECK-ERROR: error: invalid operand for instruction
5907 // CHECK-ERROR: frinti v2.8h, v4.8h
5909 // CHECK-ERROR: error: invalid operand for instruction
5910 // CHECK-ERROR: frinti v1.8b, v9.8b
5912 // CHECK-ERROR: error: invalid operand for instruction
5913 // CHECK-ERROR: frinti v13.4h, v21.4h
5915 // CHECK-ERROR: error: invalid operand for instruction
5916 // CHECK-ERROR: fcvtns v0.16b, v31.16b
5918 // CHECK-ERROR: error: invalid operand for instruction
5919 // CHECK-ERROR: fcvtns v2.8h, v4.8h
5921 // CHECK-ERROR: error: invalid operand for instruction
5922 // CHECK-ERROR: fcvtns v1.8b, v9.8b
5924 // CHECK-ERROR: error: invalid operand for instruction
5925 // CHECK-ERROR: fcvtns v13.4h, v21.4h
5927 // CHECK-ERROR: error: invalid operand for instruction
5928 // CHECK-ERROR: fcvtnu v0.16b, v31.16b
5930 // CHECK-ERROR: error: invalid operand for instruction
5931 // CHECK-ERROR: fcvtnu v2.8h, v4.8h
5933 // CHECK-ERROR: error: invalid operand for instruction
5934 // CHECK-ERROR: fcvtnu v1.8b, v9.8b
5936 // CHECK-ERROR: error: invalid operand for instruction
5937 // CHECK-ERROR: fcvtnu v13.4h, v21.4h
5939 // CHECK-ERROR: error: invalid operand for instruction
5940 // CHECK-ERROR: fcvtps v0.16b, v31.16b
5942 // CHECK-ERROR: error: invalid operand for instruction
5943 // CHECK-ERROR: fcvtps v2.8h, v4.8h
5945 // CHECK-ERROR: error: invalid operand for instruction
5946 // CHECK-ERROR: fcvtps v1.8b, v9.8b
5948 // CHECK-ERROR: error: invalid operand for instruction
5949 // CHECK-ERROR: fcvtps v13.4h, v21.4h
5951 // CHECK-ERROR: error: invalid operand for instruction
5952 // CHECK-ERROR: fcvtpu v0.16b, v31.16b
5954 // CHECK-ERROR: error: invalid operand for instruction
5955 // CHECK-ERROR: fcvtpu v2.8h, v4.8h
5957 // CHECK-ERROR: error: invalid operand for instruction
5958 // CHECK-ERROR: fcvtpu v1.8b, v9.8b
5960 // CHECK-ERROR: error: invalid operand for instruction
5961 // CHECK-ERROR: fcvtpu v13.4h, v21.4h
5963 // CHECK-ERROR: error: invalid operand for instruction
5964 // CHECK-ERROR: fcvtms v0.16b, v31.16b
5966 // CHECK-ERROR: error: invalid operand for instruction
5967 // CHECK-ERROR: fcvtms v2.8h, v4.8h
5969 // CHECK-ERROR: error: invalid operand for instruction
5970 // CHECK-ERROR: fcvtms v1.8b, v9.8b
5972 // CHECK-ERROR: error: invalid operand for instruction
5973 // CHECK-ERROR: fcvtms v13.4h, v21.4h
5975 // CHECK-ERROR: error: invalid operand for instruction
5976 // CHECK-ERROR: fcvtmu v0.16b, v31.16b
5978 // CHECK-ERROR: error: invalid operand for instruction
5979 // CHECK-ERROR: fcvtmu v2.8h, v4.8h
5981 // CHECK-ERROR: error: invalid operand for instruction
5982 // CHECK-ERROR: fcvtmu v1.8b, v9.8b
5984 // CHECK-ERROR: error: invalid operand for instruction
5985 // CHECK-ERROR: fcvtmu v13.4h, v21.4h
5987 // CHECK-ERROR: error: invalid operand for instruction
5988 // CHECK-ERROR: fcvtzs v0.16b, v31.16b
5990 // CHECK-ERROR: error: invalid operand for instruction
5991 // CHECK-ERROR: fcvtzs v2.8h, v4.8h
5993 // CHECK-ERROR: error: invalid operand for instruction
5994 // CHECK-ERROR: fcvtzs v1.8b, v9.8b
5996 // CHECK-ERROR: error: invalid operand for instruction
5997 // CHECK-ERROR: fcvtzs v13.4h, v21.4h
5999 // CHECK-ERROR: error: invalid operand for instruction
6000 // CHECK-ERROR: fcvtzu v0.16b, v31.16b
6002 // CHECK-ERROR: error: invalid operand for instruction
6003 // CHECK-ERROR: fcvtzu v2.8h, v4.8h
6005 // CHECK-ERROR: error: invalid operand for instruction
6006 // CHECK-ERROR: fcvtzu v1.8b, v9.8b
6008 // CHECK-ERROR: error: invalid operand for instruction
6009 // CHECK-ERROR: fcvtzu v13.4h, v21.4h
6011 // CHECK-ERROR: error: invalid operand for instruction
6012 // CHECK-ERROR: fcvtas v0.16b, v31.16b
6014 // CHECK-ERROR: error: invalid operand for instruction
6015 // CHECK-ERROR: fcvtas v2.8h, v4.8h
6017 // CHECK-ERROR: error: invalid operand for instruction
6018 // CHECK-ERROR: fcvtas v1.8b, v9.8b
6020 // CHECK-ERROR: error: invalid operand for instruction
6021 // CHECK-ERROR: fcvtas v13.4h, v21.4h
6023 // CHECK-ERROR: error: invalid operand for instruction
6024 // CHECK-ERROR: fcvtau v0.16b, v31.16b
6026 // CHECK-ERROR: error: invalid operand for instruction
6027 // CHECK-ERROR: fcvtau v2.8h, v4.8h
6029 // CHECK-ERROR: error: invalid operand for instruction
6030 // CHECK-ERROR: fcvtau v1.8b, v9.8b
6032 // CHECK-ERROR: error: invalid operand for instruction
6033 // CHECK-ERROR: fcvtau v13.4h, v21.4h
6035 // CHECK-ERROR: error: invalid operand for instruction
6036 // CHECK-ERROR: urecpe v0.16b, v31.16b
6038 // CHECK-ERROR: error: invalid operand for instruction
6039 // CHECK-ERROR: urecpe v2.8h, v4.8h
6041 // CHECK-ERROR: error: invalid operand for instruction
6042 // CHECK-ERROR: urecpe v1.8b, v9.8b
6044 // CHECK-ERROR: error: invalid operand for instruction
6045 // CHECK-ERROR: urecpe v13.4h, v21.4h
6047 // CHECK-ERROR: error: invalid operand for instruction
6048 // CHECK-ERROR: urecpe v1.2d, v9.2d
6050 // CHECK-ERROR: error: invalid operand for instruction
6051 // CHECK-ERROR: ursqrte v0.16b, v31.16b
6053 // CHECK-ERROR: error: invalid operand for instruction
6054 // CHECK-ERROR: ursqrte v2.8h, v4.8h
6056 // CHECK-ERROR: error: invalid operand for instruction
6057 // CHECK-ERROR: ursqrte v1.8b, v9.8b
6059 // CHECK-ERROR: error: invalid operand for instruction
6060 // CHECK-ERROR: ursqrte v13.4h, v21.4h
6062 // CHECK-ERROR: error: invalid operand for instruction
6063 // CHECK-ERROR: ursqrte v1.2d, v9.2d
6065 // CHECK-ERROR: error: invalid operand for instruction
6066 // CHECK-ERROR: scvtf v0.16b, v31.16b
6068 // CHECK-ERROR: error: invalid operand for instruction
6069 // CHECK-ERROR: scvtf v2.8h, v4.8h
6071 // CHECK-ERROR: error: invalid operand for instruction
6072 // CHECK-ERROR: scvtf v1.8b, v9.8b
6074 // CHECK-ERROR: error: invalid operand for instruction
6075 // CHECK-ERROR: scvtf v13.4h, v21.4h
6077 // CHECK-ERROR: error: invalid operand for instruction
6078 // CHECK-ERROR: ucvtf v0.16b, v31.16b
6080 // CHECK-ERROR: error: invalid operand for instruction
6081 // CHECK-ERROR: ucvtf v2.8h, v4.8h
6083 // CHECK-ERROR: error: invalid operand for instruction
6084 // CHECK-ERROR: ucvtf v1.8b, v9.8b
6086 // CHECK-ERROR: error: invalid operand for instruction
6087 // CHECK-ERROR: ucvtf v13.4h, v21.4h
6089 // CHECK-ERROR: error: invalid operand for instruction
6090 // CHECK-ERROR: frecpe v0.16b, v31.16b
6092 // CHECK-ERROR: error: invalid operand for instruction
6093 // CHECK-ERROR: frecpe v2.8h, v4.8h
6095 // CHECK-ERROR: error: invalid operand for instruction
6096 // CHECK-ERROR: frecpe v1.8b, v9.8b
6098 // CHECK-ERROR: error: invalid operand for instruction
6099 // CHECK-ERROR: frecpe v13.4h, v21.4h
6101 // CHECK-ERROR: error: invalid operand for instruction
6102 // CHECK-ERROR: frsqrte v0.16b, v31.16b
6104 // CHECK-ERROR: error: invalid operand for instruction
6105 // CHECK-ERROR: frsqrte v2.8h, v4.8h
6107 // CHECK-ERROR: error: invalid operand for instruction
6108 // CHECK-ERROR: frsqrte v1.8b, v9.8b
6110 // CHECK-ERROR: error: invalid operand for instruction
6111 // CHECK-ERROR: frsqrte v13.4h, v21.4h
6113 // CHECK-ERROR: error: invalid operand for instruction
6114 // CHECK-ERROR: fsqrt v0.16b, v31.16b
6116 // CHECK-ERROR: error: invalid operand for instruction
6117 // CHECK-ERROR: fsqrt v2.8h, v4.8h
6119 // CHECK-ERROR: error: invalid operand for instruction
6120 // CHECK-ERROR: fsqrt v1.8b, v9.8b
6122 // CHECK-ERROR: error: invalid operand for instruction
6123 // CHECK-ERROR: fsqrt v13.4h, v21.4h
6126 //----------------------------------------------------------------------
6127 // Scalar Floating-point Convert To Signed Fixed-point (Immediate)
6128 //----------------------------------------------------------------------
6131 fcvtzs d21, d12, #65
6134 // CHECK-ERROR: error: expected integer in range [1, 32]
6135 // CHECK-ERROR: fcvtzs s21, s12, #0
6137 // CHECK-ERROR: error: expected integer in range [1, 64]
6138 // CHECK-ERROR: fcvtzs d21, d12, #65
6140 // CHECK-ERROR: error: invalid operand for instruction
6141 // CHECK-ERROR: fcvtzs s21, d12, #1
6144 //----------------------------------------------------------------------
6145 // Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
6146 //----------------------------------------------------------------------
6148 fcvtzu s21, s12, #33
6152 // CHECK-ERROR: error: expected integer in range [1, 32]
6153 // CHECK-ERROR: fcvtzu s21, s12, #33
6155 // CHECK-ERROR: error: expected integer in range [1, 64]
6156 // CHECK-ERROR: fcvtzu d21, d12, #0
6158 // CHECK-ERROR: error: invalid operand for instruction
6159 // CHECK-ERROR: fcvtzu s21, d12, #1
6162 //----------------------------------------------------------------------
6163 // Scalar Unsigned Saturating Extract Narrow
6164 //----------------------------------------------------------------------
6173 // CHECK: error: invalid operand for instruction
6174 // CHECK: aese v0.8h, v1.8h
6176 // CHECK: error: invalid operand for instruction
6177 // CHECK: aese v0.4s, v1.4s
6179 // CHECK: error: invalid operand for instruction
6180 // CHECK: aese v0.2d, v1.2d
6182 // CHECK: error: invalid operand for instruction
6183 // CHECK: aesd v0.8h, v1.8h
6185 // CHECK: error: invalid operand for instruction
6186 // CHECK: aesmc v0.8h, v1.8h
6188 // CHECK: error: invalid operand for instruction
6189 // CHECK: aesimc v0.8h, v1.8h
6196 sha1su1 v0.16b, v1.16b
6197 sha1su1 v0.8h, v1.8h
6198 sha1su1 v0.2d, v1.2d
6199 sha256su0 v0.16b, v1.16b
6201 // CHECK: error: invalid operand for instruction
6202 // CHECK: sha1h b0, b1
6204 // CHECK: error: invalid operand for instruction
6205 // CHECK: sha1h h0, h1
6207 // CHECK: error: invalid operand for instruction
6208 // CHECK: sha1h d0, d1
6210 // CHECK: error: invalid operand for instruction
6211 // CHECK: sha1h q0, q1
6213 // CHECK: error: invalid operand for instruction
6214 // CHECK: sha1su1 v0.16b, v1.16b
6216 // CHECK: error: invalid operand for instruction
6217 // CHECK: sha1su1 v0.8h, v1.8h
6219 // CHECK: error: invalid operand for instruction
6220 // CHECK: sha1su1 v0.2d, v1.2d
6222 // CHECK: error: invalid operand for instruction
6223 // CHECK: sha256su0 v0.16b, v1.16b
6229 sha1su0 v0.16b, v1.16b, v2.16b
6230 sha1su0 v0.8h, v1.8h, v2.8h
6231 sha1su0 v0.2d, v1.2d, v2.2d
6233 sha256h v0.4s, v1.4s, v2.4s
6235 sha256su1 v0.16b, v1.16b, v2.16b
6237 // CHECK: error: invalid operand for instruction
6238 // CHECK: sha1c q0, q1, v2.4s
6240 // CHECK: error: invalid operand for instruction
6241 // CHECK: sha1p q0, q1, v2.4s
6243 // CHECK: error: invalid operand for instruction
6244 // CHECK: sha1m q0, q1, v2.4s
6246 // CHECK: error: invalid operand for instruction
6247 // CHECK: sha1su0 v0.16b, v1.16b, v2.16b
6249 // CHECK: error: invalid operand for instruction
6250 // CHECK: sha1su0 v0.8h, v1.8h, v2.8h
6252 // CHECK: error: invalid operand for instruction
6253 // CHECK: sha1su0 v0.2d, v1.2d, v2.2d
6255 // CHECK: error: too few operands for instruction
6256 // CHECK: sha256h q0, q1, q2
6258 // CHECK: error: invalid operand for instruction
6259 // CHECK: sha256h v0.4s, v1.4s, v2.4s
6261 // CHECK: error: too few operands for instruction
6262 // CHECK: sha256h2 q0, q1, q2
6264 // CHECK: error: invalid operand for instruction
6265 // CHECK: sha256su1 v0.16b, v1.16b, v2.16b
6268 //----------------------------------------------------------------------
6270 //----------------------------------------------------------------------
6272 ext v0.8b, v1.8b, v2.4h, #0x3
6273 ext v0.4h, v1.4h, v2.4h, #0x3
6274 ext v0.2s, v1.2s, v2.2s, #0x1
6275 ext v0.1d, v1.1d, v2.1d, #0x0
6277 // CHECK-ERROR: error: invalid operand for instruction
6278 // CHECK-ERROR: ext v0.8b, v1.8b, v2.4h, #0x3
6280 // CHECK-ERROR: error: invalid operand for instruction
6281 // CHECK-ERROR: ext v0.4h, v1.4h, v2.4h, #0x3
6283 // CHECK-ERROR: error: invalid operand for instruction
6284 // CHECK-ERROR: ext v0.2s, v1.2s, v2.2s, #0x1
6286 // CHECK-ERROR: error: invalid operand for instruction
6287 // CHECK-ERROR: ext v0.1d, v1.1d, v2.1d, #0x0
6290 ext v0.16b, v1.16b, v2.8h, #0x3
6291 ext v0.8h, v1.8h, v2.8h, #0x3
6292 ext v0.4s, v1.4s, v2.4s, #0x1
6293 ext v0.2d, v1.2d, v2.2d, #0x0
6295 // CHECK-ERROR: error: invalid operand for instruction
6296 // CHECK-ERROR: ext v0.16b, v1.16b, v2.8h, #0x3
6298 // CHECK-ERROR: error: invalid operand for instruction
6299 // CHECK-ERROR: ext v0.8h, v1.8h, v2.8h, #0x3
6301 // CHECK-ERROR: error: invalid operand for instruction
6302 // CHECK-ERROR: ext v0.4s, v1.4s, v2.4s, #0x1
6304 // CHECK-ERROR: error: invalid operand for instruction
6305 // CHECK-ERROR: ext v0.2d, v1.2d, v2.2d, #0x0
6309 //----------------------------------------------------------------------
6310 // Permutation with 3 vectors
6311 //----------------------------------------------------------------------
6313 uzp1 v0.16b, v1.8b, v2.8b
6314 uzp1 v0.8b, v1.4b, v2.4b
6315 uzp1 v0.8h, v1.4h, v2.4h
6316 uzp1 v0.4h, v1.2h, v2.2h
6317 uzp1 v0.4s, v1.2s, v2.2s
6318 uzp1 v0.2s, v1.1s, v2.1s
6319 uzp1 v0.2d, v1.1d, v2.1d
6320 uzp1 v0.1d, v1.1d, v2.1d
6322 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
6323 // CHECK-ERROR uzp1 v0.16b, v1.8b, v2.8b
6325 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
6326 // CHECK-ERROR uzp1 v0.8b, v1.4b, v2.4b
6328 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
6329 // CHECK-ERROR uzp1 v0.8h, v1.4h, v2.4h
6331 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
6332 // CHECK-ERROR uzp1 v0.4h, v1.2h, v2.2h
6334 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
6335 // CHECK-ERROR uzp1 v0.4s, v1.2s, v2.2s
6337 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
6338 // CHECK-ERROR uzp1 v0.2s, v1.1s, v2.1s
6340 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
6341 // CHECK-ERROR uzp1 v0.2d, v1.1d, v2.1d
6343 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
6344 // CHECK-ERROR uzp1 v0.1d, v1.1d, v2.1d
6347 uzp2 v0.16b, v1.8b, v2.8b
6348 uzp2 v0.8b, v1.4b, v2.4b
6349 uzp2 v0.8h, v1.4h, v2.4h
6350 uzp2 v0.4h, v1.2h, v2.2h
6351 uzp2 v0.4s, v1.2s, v2.2s
6352 uzp2 v0.2s, v1.1s, v2.1s
6353 uzp2 v0.2d, v1.1d, v2.1d
6354 uzp2 v0.1d, v1.1d, v2.1d
6356 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
6357 // CHECK-ERROR uzp2 v0.16b, v1.8b, v2.8b
6359 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
6360 // CHECK-ERROR uzp2 v0.8b, v1.4b, v2.4b
6362 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
6363 // CHECK-ERROR uzp2 v0.8h, v1.4h, v2.4h
6365 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
6366 // CHECK-ERROR uzp2 v0.4h, v1.2h, v2.2h
6368 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
6369 // CHECK-ERROR uzp2 v0.4s, v1.2s, v2.2s
6371 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
6372 // CHECK-ERROR uzp2 v0.2s, v1.1s, v2.1s
6374 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
6375 // CHECK-ERROR uzp2 v0.2d, v1.1d, v2.1d
6377 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
6378 // CHECK-ERROR uzp2 v0.1d, v1.1d, v2.1d
6381 zip1 v0.16b, v1.8b, v2.8b
6382 zip1 v0.8b, v1.4b, v2.4b
6383 zip1 v0.8h, v1.4h, v2.4h
6384 zip1 v0.4h, v1.2h, v2.2h
6385 zip1 v0.4s, v1.2s, v2.2s
6386 zip1 v0.2s, v1.1s, v2.1s
6387 zip1 v0.2d, v1.1d, v2.1d
6388 zip1 v0.1d, v1.1d, v2.1d
6390 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
6391 // CHECK-ERROR zip1 v0.16b, v1.8b, v2.8b
6393 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
6394 // CHECK-ERROR zip1 v0.8b, v1.4b, v2.4b
6396 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
6397 // CHECK-ERROR zip1 v0.8h, v1.4h, v2.4h
6399 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
6400 // CHECK-ERROR zip1 v0.4h, v1.2h, v2.2h
6402 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
6403 // CHECK-ERROR zip1 v0.4s, v1.2s, v2.2s
6405 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
6406 // CHECK-ERROR zip1 v0.2s, v1.1s, v2.1s
6408 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
6409 // CHECK-ERROR zip1 v0.2d, v1.1d, v2.1d
6411 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
6412 // CHECK-ERROR zip1 v0.1d, v1.1d, v2.1d
6415 zip2 v0.16b, v1.8b, v2.8b
6416 zip2 v0.8b, v1.4b, v2.4b
6417 zip2 v0.8h, v1.4h, v2.4h
6418 zip2 v0.4h, v1.2h, v2.2h
6419 zip2 v0.4s, v1.2s, v2.2s
6420 zip2 v0.2s, v1.1s, v2.1s
6421 zip2 v0.2d, v1.1d, v2.1d
6422 zip2 v0.1d, v1.1d, v2.1d
6424 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
6425 // CHECK-ERROR zip2 v0.16b, v1.8b, v2.8b
6427 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
6428 // CHECK-ERROR zip2 v0.8b, v1.4b, v2.4b
6430 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
6431 // CHECK-ERROR zip2 v0.8h, v1.4h, v2.4h
6433 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
6434 // CHECK-ERROR zip2 v0.4h, v1.2h, v2.2h
6436 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
6437 // CHECK-ERROR zip2 v0.4s, v1.2s, v2.2s
6439 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
6440 // CHECK-ERROR zip2 v0.2s, v1.1s, v2.1s
6442 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
6443 // CHECK-ERROR zip2 v0.2d, v1.1d, v2.1d
6445 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
6446 // CHECK-ERROR zip2 v0.1d, v1.1d, v2.1d
6449 trn1 v0.16b, v1.8b, v2.8b
6450 trn1 v0.8b, v1.4b, v2.4b
6451 trn1 v0.8h, v1.4h, v2.4h
6452 trn1 v0.4h, v1.2h, v2.2h
6453 trn1 v0.4s, v1.2s, v2.2s
6454 trn1 v0.2s, v1.1s, v2.1s
6455 trn1 v0.2d, v1.1d, v2.1d
6456 trn1 v0.1d, v1.1d, v2.1d
6458 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
6459 // CHECK-ERROR trn1 v0.16b, v1.8b, v2.8b
6461 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
6462 // CHECK-ERROR trn1 v0.8b, v1.4b, v2.4b
6464 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
6465 // CHECK-ERROR trn1 v0.8h, v1.4h, v2.4h
6467 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
6468 // CHECK-ERROR trn1 v0.4h, v1.2h, v2.2h
6470 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
6471 // CHECK-ERROR trn1 v0.4s, v1.2s, v2.2s
6473 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
6474 // CHECK-ERROR trn1 v0.2s, v1.1s, v2.1s
6476 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
6477 // CHECK-ERROR trn1 v0.2d, v1.1d, v2.1d
6479 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
6480 // CHECK-ERROR trn1 v0.1d, v1.1d, v2.1d
6483 trn2 v0.16b, v1.8b, v2.8b
6484 trn2 v0.8b, v1.4b, v2.4b
6485 trn2 v0.8h, v1.4h, v2.4h
6486 trn2 v0.4h, v1.2h, v2.2h
6487 trn2 v0.4s, v1.2s, v2.2s
6488 trn2 v0.2s, v1.1s, v2.1s
6489 trn2 v0.2d, v1.1d, v2.1d
6490 trn2 v0.1d, v1.1d, v2.1d
6492 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
6493 // CHECK-ERROR trn2 v0.16b, v1.8b, v2.8b
6495 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
6496 // CHECK-ERROR trn2 v0.8b, v1.4b, v2.4b
6498 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
6499 // CHECK-ERROR trn2 v0.8h, v1.4h, v2.4h
6501 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
6502 // CHECK-ERROR trn2 v0.4h, v1.2h, v2.2h
6504 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
6505 // CHECK-ERROR trn2 v0.4s, v1.2s, v2.2s
6507 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
6508 // CHECK-ERROR trn2 v0.2s, v1.1s, v2.1s
6510 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
6511 // CHECK-ERROR trn2 v0.2d, v1.1d, v2.1d
6513 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
6514 // CHECK-ERROR trn2 v0.1d, v1.1d, v2.1d
6517 //----------------------------------------------------------------------
6518 // Permutation with 3 vectors
6519 //----------------------------------------------------------------------
6521 uzp1 v0.16b, v1.8b, v2.8b
6522 uzp1 v0.8b, v1.4b, v2.4b
6523 uzp1 v0.8h, v1.4h, v2.4h
6524 uzp1 v0.4h, v1.2h, v2.2h
6525 uzp1 v0.4s, v1.2s, v2.2s
6526 uzp1 v0.2s, v1.1s, v2.1s
6527 uzp1 v0.2d, v1.1d, v2.1d
6528 uzp1 v0.1d, v1.1d, v2.1d
6530 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
6531 // CHECK-ERROR uzp1 v0.16b, v1.8b, v2.8b
6533 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
6534 // CHECK-ERROR uzp1 v0.8b, v1.4b, v2.4b
6536 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
6537 // CHECK-ERROR uzp1 v0.8h, v1.4h, v2.4h
6539 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
6540 // CHECK-ERROR uzp1 v0.4h, v1.2h, v2.2h
6542 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
6543 // CHECK-ERROR uzp1 v0.4s, v1.2s, v2.2s
6545 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
6546 // CHECK-ERROR uzp1 v0.2s, v1.1s, v2.1s
6548 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
6549 // CHECK-ERROR uzp1 v0.2d, v1.1d, v2.1d
6551 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
6552 // CHECK-ERROR uzp1 v0.1d, v1.1d, v2.1d
6555 uzp2 v0.16b, v1.8b, v2.8b
6556 uzp2 v0.8b, v1.4b, v2.4b
6557 uzp2 v0.8h, v1.4h, v2.4h
6558 uzp2 v0.4h, v1.2h, v2.2h
6559 uzp2 v0.4s, v1.2s, v2.2s
6560 uzp2 v0.2s, v1.1s, v2.1s
6561 uzp2 v0.2d, v1.1d, v2.1d
6562 uzp2 v0.1d, v1.1d, v2.1d
6564 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
6565 // CHECK-ERROR uzp2 v0.16b, v1.8b, v2.8b
6567 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
6568 // CHECK-ERROR uzp2 v0.8b, v1.4b, v2.4b
6570 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
6571 // CHECK-ERROR uzp2 v0.8h, v1.4h, v2.4h
6573 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
6574 // CHECK-ERROR uzp2 v0.4h, v1.2h, v2.2h
6576 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
6577 // CHECK-ERROR uzp2 v0.4s, v1.2s, v2.2s
6579 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
6580 // CHECK-ERROR uzp2 v0.2s, v1.1s, v2.1s
6582 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
6583 // CHECK-ERROR uzp2 v0.2d, v1.1d, v2.1d
6585 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
6586 // CHECK-ERROR uzp2 v0.1d, v1.1d, v2.1d
6589 zip1 v0.16b, v1.8b, v2.8b
6590 zip1 v0.8b, v1.4b, v2.4b
6591 zip1 v0.8h, v1.4h, v2.4h
6592 zip1 v0.4h, v1.2h, v2.2h
6593 zip1 v0.4s, v1.2s, v2.2s
6594 zip1 v0.2s, v1.1s, v2.1s
6595 zip1 v0.2d, v1.1d, v2.1d
6596 zip1 v0.1d, v1.1d, v2.1d
6598 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
6599 // CHECK-ERROR zip1 v0.16b, v1.8b, v2.8b
6601 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
6602 // CHECK-ERROR zip1 v0.8b, v1.4b, v2.4b
6604 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
6605 // CHECK-ERROR zip1 v0.8h, v1.4h, v2.4h
6607 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
6608 // CHECK-ERROR zip1 v0.4h, v1.2h, v2.2h
6610 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
6611 // CHECK-ERROR zip1 v0.4s, v1.2s, v2.2s
6613 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
6614 // CHECK-ERROR zip1 v0.2s, v1.1s, v2.1s
6616 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
6617 // CHECK-ERROR zip1 v0.2d, v1.1d, v2.1d
6619 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
6620 // CHECK-ERROR zip1 v0.1d, v1.1d, v2.1d
6623 zip2 v0.16b, v1.8b, v2.8b
6624 zip2 v0.8b, v1.4b, v2.4b
6625 zip2 v0.8h, v1.4h, v2.4h
6626 zip2 v0.4h, v1.2h, v2.2h
6627 zip2 v0.4s, v1.2s, v2.2s
6628 zip2 v0.2s, v1.1s, v2.1s
6629 zip2 v0.2d, v1.1d, v2.1d
6630 zip2 v0.1d, v1.1d, v2.1d
6632 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
6633 // CHECK-ERROR zip2 v0.16b, v1.8b, v2.8b
6635 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
6636 // CHECK-ERROR zip2 v0.8b, v1.4b, v2.4b
6638 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
6639 // CHECK-ERROR zip2 v0.8h, v1.4h, v2.4h
6641 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
6642 // CHECK-ERROR zip2 v0.4h, v1.2h, v2.2h
6644 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
6645 // CHECK-ERROR zip2 v0.4s, v1.2s, v2.2s
6647 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
6648 // CHECK-ERROR zip2 v0.2s, v1.1s, v2.1s
6650 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
6651 // CHECK-ERROR zip2 v0.2d, v1.1d, v2.1d
6653 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
6654 // CHECK-ERROR zip2 v0.1d, v1.1d, v2.1d
6657 trn1 v0.16b, v1.8b, v2.8b
6658 trn1 v0.8b, v1.4b, v2.4b
6659 trn1 v0.8h, v1.4h, v2.4h
6660 trn1 v0.4h, v1.2h, v2.2h
6661 trn1 v0.4s, v1.2s, v2.2s
6662 trn1 v0.2s, v1.1s, v2.1s
6663 trn1 v0.2d, v1.1d, v2.1d
6664 trn1 v0.1d, v1.1d, v2.1d
6666 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
6667 // CHECK-ERROR trn1 v0.16b, v1.8b, v2.8b
6669 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
6670 // CHECK-ERROR trn1 v0.8b, v1.4b, v2.4b
6672 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
6673 // CHECK-ERROR trn1 v0.8h, v1.4h, v2.4h
6675 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
6676 // CHECK-ERROR trn1 v0.4h, v1.2h, v2.2h
6678 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
6679 // CHECK-ERROR trn1 v0.4s, v1.2s, v2.2s
6681 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
6682 // CHECK-ERROR trn1 v0.2s, v1.1s, v2.1s
6684 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
6685 // CHECK-ERROR trn1 v0.2d, v1.1d, v2.1d
6687 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
6688 // CHECK-ERROR trn1 v0.1d, v1.1d, v2.1d
6691 trn2 v0.16b, v1.8b, v2.8b
6692 trn2 v0.8b, v1.4b, v2.4b
6693 trn2 v0.8h, v1.4h, v2.4h
6694 trn2 v0.4h, v1.2h, v2.2h
6695 trn2 v0.4s, v1.2s, v2.2s
6696 trn2 v0.2s, v1.1s, v2.1s
6697 trn2 v0.2d, v1.1d, v2.1d
6698 trn2 v0.1d, v1.1d, v2.1d
6700 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
6701 // CHECK-ERROR trn2 v0.16b, v1.8b, v2.8b
6703 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
6704 // CHECK-ERROR trn2 v0.8b, v1.4b, v2.4b
6706 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
6707 // CHECK-ERROR trn2 v0.8h, v1.4h, v2.4h
6709 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
6710 // CHECK-ERROR trn2 v0.4h, v1.2h, v2.2h
6712 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
6713 // CHECK-ERROR trn2 v0.4s, v1.2s, v2.2s
6715 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
6716 // CHECK-ERROR trn2 v0.2s, v1.1s, v2.1s
6718 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
6719 // CHECK-ERROR trn2 v0.2d, v1.1d, v2.1d
6721 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
6722 // CHECK-ERROR trn2 v0.1d, v1.1d, v2.1d
6725 //----------------------------------------------------------------------
6726 // Floating Point multiply (scalar, by element)
6727 //----------------------------------------------------------------------
6728 // mismatched and invalid vector types
6729 fmul s0, s1, v1.h[0]
6730 fmul h0, h1, v1.s[0]
6732 fmul s2, s29, v10.s[4]
6734 // CHECK-ERROR: error: invalid operand for instruction
6735 // CHECK-ERROR: fmul s0, s1, v1.h[0]
6737 // CHECK-ERROR: error: invalid operand for instruction
6738 // CHECK-ERROR: fmul h0, h1, v1.s[0]
6740 // CHECK-ERROR: error: lane number incompatible with layout
6741 // CHECK-ERROR: fmul s2, s29, v10.s[4]
6744 //----------------------------------------------------------------------
6745 // Floating Point multiply extended (scalar, by element)
6746 //----------------------------------------------------------------------
6747 // mismatched and invalid vector types
6748 fmulx d0, d1, v1.b[0]
6749 fmulx h0, h1, v1.d[0]
6751 fmulx d2, d29, v10.d[3]
6753 // CHECK-ERROR: error: invalid operand for instruction
6754 // CHECK-ERROR: fmulx d0, d1, v1.b[0]
6756 // CHECK-ERROR: error: invalid operand for instruction
6757 // CHECK-ERROR: fmulx h0, h1, v1.d[0]
6759 // CHECK-ERROR: error: lane number incompatible with layout
6760 // CHECK-ERROR: fmulx d2, d29, v10.d[3]
6763 //----------------------------------------------------------------------
6764 // Floating Point fused multiply-add (scalar, by element)
6765 //----------------------------------------------------------------------
6766 // mismatched and invalid vector types
6767 fmla b0, b1, v1.b[0]
6768 fmla d30, s11, v1.d[1]
6770 fmla s16, s22, v16.s[5]
6772 // CHECK-ERROR: error: invalid operand for instruction
6773 // CHECK-ERROR: fmla b0, b1, v1.b[0]
6775 // CHECK-ERROR: error: invalid operand for instruction
6776 // CHECK-ERROR: fmla d30, s11, v1.d[1]
6778 // CHECK-ERROR: error: lane number incompatible with layout
6779 // CHECK-ERROR: fmla s16, s22, v16.s[5]
6782 //----------------------------------------------------------------------
6783 // Floating Point fused multiply-subtract (scalar, by element)
6784 //----------------------------------------------------------------------
6785 // mismatched and invalid vector types
6786 fmls s29, h10, v28.s[1]
6787 fmls h7, h17, v26.s[2]
6789 fmls d16, d22, v16.d[-1]
6791 // CHECK-ERROR: error: invalid operand for instruction
6792 // CHECK-ERROR: fmls s29, h10, v28.s[1]
6794 // CHECK-ERROR: error: invalid operand for instruction
6795 // CHECK-ERROR: fmls h7, h17, v26.s[2]
6797 // CHECK-ERROR: error: expected lane number
6798 // CHECK-ERROR: fmls d16, d22, v16.d[-1]
6801 //----------------------------------------------------------------------
6802 // Scalar Signed saturating doubling multiply-add long
6803 // (scalar, by element)
6804 //----------------------------------------------------------------------
6805 // mismatched and invalid vector types
6806 sqdmlal s0, h0, v0.s[0]
6807 sqdmlal s8, s9, v14.s[1]
6809 sqdmlal s4, s5, v1.s[5]
6810 // invalid vector index
6811 sqdmlal s0, h0, v17.h[0]
6813 // CHECK-ERROR: error: invalid operand for instruction
6814 // CHECK-ERROR: sqdmlal s0, h0, v0.s[0]
6816 // CHECK-ERROR: error: invalid operand for instruction
6817 // CHECK-ERROR: sqdmlal s8, s9, v14.s[1]
6819 // CHECK-ERROR: error: lane number incompatible with layout
6820 // CHECK-ERROR: sqdmlal s4, s5, v1.s[5]
6822 // CHECK-ERROR: error: invalid operand for instruction
6823 // CHECK-ERROR: sqdmlal s0, h0, v17.h[0]
6826 //----------------------------------------------------------------------
6827 // Scalar Signed saturating doubling multiply-subtract long
6828 // (scalar, by element)
6829 //----------------------------------------------------------------------
6830 // mismatched and invalid vector types
6831 sqdmlsl s1, h1, v1.d[0]
6832 sqdmlsl d1, h1, v13.s[0]
6834 sqdmlsl d1, s1, v13.s[4]
6835 // invalid vector index
6836 sqdmlsl s1, h1, v20.h[7]
6838 // CHECK-ERROR: error: invalid operand for instruction
6839 // CHECK-ERROR: sqdmlsl s1, h1, v1.d[0]
6841 // CHECK-ERROR: error: invalid operand for instruction
6842 // CHECK-ERROR: sqdmlsl d1, h1, v13.s[0]
6844 // CHECK-ERROR: error: lane number incompatible with layout
6845 // CHECK-ERROR: sqdmlsl d1, s1, v13.s[4]
6847 // CHECK-ERROR: error: invalid operand for instruction
6848 // CHECK-ERROR: sqdmlsl s1, h1, v20.h[7]
6851 //----------------------------------------------------------------------
6852 // Scalar Signed saturating doubling multiply long (scalar, by element)
6853 //----------------------------------------------------------------------
6854 // mismatched and invalid vector types
6856 // invalid vector index
6857 // mismatched and invalid vector types
6858 sqdmull s1, h1, v1.s[1]
6859 sqdmull s1, s1, v4.s[0]
6861 sqdmull s12, h17, v9.h[9]
6862 // invalid vector index
6863 sqdmull s1, h1, v16.h[5]
6865 // CHECK-ERROR: error: invalid operand for instruction
6866 // CHECK-ERROR: sqdmull s1, h1, v1.s[1]
6868 // CHECK-ERROR: error: invalid operand for instruction
6869 // CHECK-ERROR: sqdmull s1, s1, v4.s[0]
6871 // CHECK-ERROR: error: lane number incompatible with layout
6872 // CHECK-ERROR: sqdmull s12, h17, v9.h[9]
6874 // CHECK-ERROR: error: invalid operand for instruction
6875 // CHECK-ERROR: sqdmull s1, h1, v16.h[5]
6878 //----------------------------------------------------------------------
6879 // Scalar Signed saturating doubling multiply returning
6880 // high half (scalar, by element)
6881 //----------------------------------------------------------------------
6882 // mismatched and invalid vector types
6883 sqdmulh h0, s1, v0.h[0]
6884 sqdmulh s25, s26, v27.h[3]
6886 sqdmulh s25, s26, v27.s[4]
6887 // invalid vector index
6888 sqdmulh s0, h1, v30.h[0]
6890 // CHECK-ERROR: error: invalid operand for instruction
6891 // CHECK-ERROR: sqdmulh h0, s1, v0.h[0]
6893 // CHECK-ERROR: error: invalid operand for instruction
6894 // CHECK-ERROR: sqdmulh s25, s26, v27.h[3]
6896 // CHECK-ERROR: error: lane number incompatible with layout
6897 // CHECK-ERROR: sqdmulh s25, s26, v27.s[4]
6899 // CHECK-ERROR: error: invalid operand for instruction
6900 // CHECK-ERROR: sqdmulh s0, h1, v30.h[0]
6903 //----------------------------------------------------------------------
6904 // Scalar Signed saturating rounding doubling multiply
6905 // returning high half (scalar, by element)
6906 //----------------------------------------------------------------------
6907 // mismatched and invalid vector types
6908 sqrdmulh h31, h30, v14.s[2]
6909 sqrdmulh s5, h6, v7.s[2]
6911 sqrdmulh h31, h30, v14.h[9]
6912 // invalid vector index
6913 sqrdmulh h31, h30, v20.h[4]
6915 // CHECK-ERROR: error: invalid operand for instruction
6916 // CHECK-ERROR: sqrdmulh h31, h30, v14.s[2]
6918 // CHECK-ERROR: error: invalid operand for instruction
6919 // CHECK-ERROR: sqrdmulh s5, h6, v7.s[2]
6921 // CHECK-ERROR: error: lane number incompatible with layout
6922 // CHECK-ERROR: sqrdmulh h31, h30, v14.h[9]
6924 // CHECK-ERROR: error: invalid operand for instruction
6925 // CHECK-ERROR: sqrdmulh h31, h30, v20.h[4]
6928 //----------------------------------------------------------------------
6929 // Scalar Duplicate element (scalar)
6930 //----------------------------------------------------------------------
6931 // mismatched and invalid vector types
6941 // CHECK-ERROR: error: invalid operand for instruction
6942 // CHECK-ERROR: dup b0, v1.d[0]
6944 // CHECK-ERROR: error: invalid operand for instruction
6945 // CHECK-ERROR: dup h0, v31.b[8]
6947 // CHECK-ERROR: error: invalid operand for instruction
6948 // CHECK-ERROR: dup s0, v2.h[4]
6950 // CHECK-ERROR: error: invalid operand for instruction
6951 // CHECK-ERROR: dup d0, v17.s[3]
6953 // CHECK-ERROR: error: lane number incompatible with layout
6954 // CHECK-ERROR: dup d0, v17.d[4]
6956 // CHECK-ERROR: error: lane number incompatible with layout
6957 // CHECK-ERROR: dup s0, v1.s[7]
6959 // CHECK-ERROR: error: lane number incompatible with layout
6960 // CHECK-ERROR: dup h0, v31.h[16]
6962 // CHECK-ERROR: error: lane number incompatible with layout
6963 // CHECK-ERROR: dup b1, v3.b[16]
6966 //----------------------------------------------------------------------
6968 //----------------------------------------------------------------------
6970 tbl v0.8b, {v1.8b}, v2.8b
6971 tbl v0.8b, {v1.8b, v2.8b}, v2.8b
6972 tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
6973 tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
6974 tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
6976 // CHECK-ERROR: error: invalid operand for instruction
6977 // CHECK-ERROR: tbl v0.8b, {v1.8b}, v2.8b
6979 // CHECK-ERROR: error: invalid operand for instruction
6980 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b}, v2.8b
6982 // CHECK-ERROR: error: invalid operand for instruction
6983 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
6985 // CHECK-ERROR: error: invalid operand for instruction
6986 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
6988 // CHECK-ERROR: error: invalid number of vectors
6989 // CHECK-ERROR: tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
6992 tbx v0.8b, {v1.8b}, v2.8b
6993 tbx v0.8b, {v1.8b, v2.8b}, v2.8b
6994 tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
6995 tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
6996 tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
6998 // CHECK-ERROR: error: invalid operand for instruction
6999 // CHECK-ERROR: tbx v0.8b, {v1.8b}, v2.8b
7001 // CHECK-ERROR: error: invalid operand for instruction
7002 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b}, v2.8b
7004 // CHECK-ERROR: error: invalid operand for instruction
7005 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7007 // CHECK-ERROR: error: invalid operand for instruction
7008 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7010 // CHECK-ERROR: error: invalid number of vectors
7011 // CHECK-ERROR: tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b