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
591 // CHECK-ERROR: error: invalid operand for instruction
592 // CHECK-ERROR: fcmgt v4.4s, v7.4s, v15.4h
594 // CHECK-ERROR: error: invalid operand for instruction
595 // CHECK-ERROR: fcmlt v29.2d, v5.2d, v2.16b
598 //----------------------------------------------------------------------
599 // Vector Compare Mask Equal to Zero (Integer)
600 //----------------------------------------------------------------------
601 // Mismatched vector types and invalid imm
602 // Mismatched vector types
603 cmeq c0.2d, v1.2s, #0
604 cmeq c0.2d, v1.2d, #1
606 // CHECK-ERROR: error: invalid operand for instruction
607 // CHECK-ERROR: cmeq c0.2d, v1.2s, #0
609 // CHECK-ERROR: error: invalid operand for instruction
610 // CHECK-ERROR: cmeq c0.2d, v1.2d, #1
613 //----------------------------------------------------------------------
614 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
615 //----------------------------------------------------------------------
616 // Mismatched vector types and invalid imm
617 cmge c0.8h, v1.8b, #0
618 cmge c0.4s, v1.4s, #-1
620 // CHECK-ERROR: error: invalid operand for instruction
621 // CHECK-ERROR: cmge c0.8h, v1.8b, #0
623 // CHECK-ERROR: error: invalid operand for instruction
624 // CHECK-ERROR: cmge c0.4s, v1.4s, #-1
627 //----------------------------------------------------------------------
628 // Vector Compare Mask Greater Than Zero (Signed Integer)
629 //----------------------------------------------------------------------
630 // Mismatched vector types and invalid imm
631 cmgt c0.8b, v1.4s, #0
632 cmgt c0.8b, v1.8b, #-255
634 // CHECK-ERROR: error: invalid operand for instruction
635 // CHECK-ERROR: cmgt c0.8b, v1.4s, #0
637 // CHECK-ERROR: error: invalid operand for instruction
638 // CHECK-ERROR: cmgt c0.8b, v1.8b, #-255
641 //----------------------------------------------------------------------
642 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
643 //----------------------------------------------------------------------
644 // Mismatched vector types and invalid imm
645 cmle c0.4h, v1.2s, #0
646 cmle c0.16b, v1.16b, #16
648 // CHECK-ERROR: error: invalid operand for instruction
649 // CHECK-ERROR: cmle c0.4h, v1.2s, #0
651 // CHECK-ERROR: error: invalid operand for instruction
652 // CHECK-ERROR: cmle c0.16b, v1.16b, #16
654 //----------------------------------------------------------------------
655 // Vector Compare Mask Less Than Zero (Signed Integer)
656 //----------------------------------------------------------------------
657 // Mismatched vector types and invalid imm
658 cmlt c0.8h, v1.16b, #0
659 cmlt c0.8h, v1.8h, #-15
661 // CHECK-ERROR: error: invalid operand for instruction
662 // CHECK-ERROR: cmlt c0.8h, v1.16b, #0
664 // CHECK-ERROR: error: invalid operand for instruction
665 // CHECK-ERROR: cmlt c0.8h, v1.8h, #-15
668 //----------------------------------------------------------------------
669 // Vector Compare Mask Equal to Zero (Floating Point)
670 //----------------------------------------------------------------------
672 // Mismatched and invalid vector types, invalid imm
673 fcmeq v0.2d, v1.2s, #0.0
674 fcmeq v0.16b, v1.16b, #0.0
675 fcmeq v0.8b, v1.4h, #1.0
676 fcmeq v0.8b, v1.4h, #1
678 // CHECK-ERROR: error: invalid operand for instruction
679 // CHECK-ERROR: fcmeq v0.2d, v1.2s, #0.0
681 // CHECK-ERROR: error: invalid operand for instruction
682 // CHECK-ERROR: fcmeq v0.16b, v1.16b, #0.0
686 // CHECK-ERROR: error: expected floating-point constant #0.0
687 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1.0
689 // CHECK-ERROR: error: invalid operand for instruction
690 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1
693 //----------------------------------------------------------------------
694 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
695 //----------------------------------------------------------------------
697 // Mismatched and invalid vector types, invalid imm
698 fcmge v31.4s, v29.2s, #0.0
699 fcmge v3.8b, v8.2s, #0.0
700 fcmle v17.8h, v15.2d, #-1.0
701 fcmle v17.8h, v15.2d, #2
703 // CHECK-ERROR: error: invalid operand for instruction
704 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0
706 // CHECK-ERROR: error: invalid operand for instruction
707 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0
711 // CHECK-ERROR: error: expected floating-point constant #0.0
712 // CHECK-ERROR: fcmle v17.8h, v15.2d, #-1.0
714 // CHECK-ERROR: error: invalid operand for instruction
715 // CHECK-ERROR: fcmle v17.8h, v15.2d, #2
718 //----------------------------------------------------------------------
719 // Vector Compare Mask Greater Than Zero (Floating Point)
720 //----------------------------------------------------------------------
721 // Mismatched and invalid vector types, invalid imm
722 fcmgt v0.2d, v31.2s, #0.0
723 fcmgt v4.4s, v7.4h, #0.0
724 fcmlt v29.2d, v5.2d, #255.0
725 fcmlt v29.2d, v5.2d, #255
727 // CHECK-ERROR: error: invalid operand for instruction
728 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0
730 // CHECK-ERROR: error: invalid operand for instruction
731 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0
735 // CHECK-ERROR: error: expected floating-point constant #0.0
736 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255.0
738 // CHECK-ERROR: error: invalid operand for instruction
739 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255
742 //----------------------------------------------------------------------
743 // Vector Compare Mask Less Than or Equal To Zero (Floating Point)
744 //----------------------------------------------------------------------
745 // Mismatched and invalid vector types, invalid imm
746 fcmge v31.4s, v29.2s, #0.0
747 fcmge v3.8b, v8.2s, #0.0
748 fcmle v17.2d, v15.2d, #15.0
749 fcmle v17.2d, v15.2d, #15
751 // CHECK-ERROR: error: invalid operand for instruction
752 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0
754 // CHECK-ERROR: error: invalid operand for instruction
755 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0
759 // CHECK-ERROR: error: expected floating-point constant #0.0
760 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15.0
762 // CHECK-ERROR: error: invalid operand for instruction
763 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15
766 //----------------------------------------------------------------------
767 // Vector Compare Mask Less Than Zero (Floating Point)
768 //----------------------------------------------------------------------
769 // Mismatched and invalid vector types, invalid imm
770 fcmgt v0.2d, v31.2s, #0.0
771 fcmgt v4.4s, v7.4h, #0.0
772 fcmlt v29.2d, v5.2d, #16.0
773 fcmlt v29.2d, v5.2d, #2
775 // CHECK-ERROR: error: invalid operand for instruction
776 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0
778 // CHECK-ERROR: error: invalid operand for instruction
779 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0
783 // CHECK-ERROR: error: expected floating-point constant #0.0
784 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #16.0
786 // CHECK-ERROR: error: invalid operand for instruction
787 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #2
790 /-----------------------------------------------------------------------
791 // Vector Integer Halving Add (Signed)
792 // Vector Integer Halving Add (Unsigned)
793 // Vector Integer Halving Sub (Signed)
794 // Vector Integer Halving Sub (Unsigned)
795 //----------------------------------------------------------------------
796 // Mismatched and invalid vector types (2d)
797 shadd v0.2d, v1.2d, v2.2d
798 uhadd v4.2s, v5.2s, v5.4h
799 shsub v11.4h, v12.8h, v13.4h
800 uhsub v31.16b, v29.8b, v28.8b
802 // CHECK-ERROR: error: invalid operand for instruction
803 // CHECK-ERROR: shadd v0.2d, v1.2d, v2.2d
805 // CHECK-ERROR: error: invalid operand for instruction
806 // CHECK-ERROR: uhadd v4.2s, v5.2s, v5.4h
808 // CHECK-ERROR: error: invalid operand for instruction
809 // CHECK-ERROR: shsub v11.4h, v12.8h, v13.4h
811 // CHECK-ERROR: error: invalid operand for instruction
812 // CHECK-ERROR: uhsub v31.16b, v29.8b, v28.8b
815 //----------------------------------------------------------------------
816 // Vector Integer Rouding Halving Add (Signed)
817 // Vector Integer Rouding Halving Add (Unsigned)
818 //----------------------------------------------------------------------
820 // Mismatched and invalid vector types (2d)
821 srhadd v0.2s, v1.2s, v2.2d
822 urhadd v0.16b, v1.16b, v2.8h
824 // CHECK-ERROR: error: invalid operand for instruction
825 // CHECK-ERROR: srhadd v0.2s, v1.2s, v2.2d
827 // CHECK-ERROR: error: invalid operand for instruction
828 // CHECK-ERROR: urhadd v0.16b, v1.16b, v2.8h
831 //----------------------------------------------------------------------
832 // Vector Integer Saturating Add (Signed)
833 // Vector Integer Saturating Add (Unsigned)
834 // Vector Integer Saturating Sub (Signed)
835 // Vector Integer Saturating Sub (Unsigned)
836 //----------------------------------------------------------------------
838 // Mismatched vector types
839 sqadd v0.2s, v1.2s, v2.2d
840 uqadd v31.8h, v1.4h, v2.4h
841 sqsub v10.8h, v1.16b, v2.16b
842 uqsub v31.8b, v1.8b, v2.4s
844 // CHECK-ERROR: error: invalid operand for instruction
845 // CHECK-ERROR: sqadd v0.2s, v1.2s, v2.2d
847 // CHECK-ERROR: error: invalid operand for instruction
848 // CHECK-ERROR: uqadd v31.8h, v1.4h, v2.4h
850 // CHECK-ERROR: error: invalid operand for instruction
851 // CHECK-ERROR: sqsub v10.8h, v1.16b, v2.16b
853 // CHECK-ERROR: error: invalid operand for instruction
854 // CHECK-ERROR: uqsub v31.8b, v1.8b, v2.4s
857 //----------------------------------------------------------------------
858 // Scalar Integer Saturating Add (Signed)
859 // Scalar Integer Saturating Add (Unsigned)
860 // Scalar Integer Saturating Sub (Signed)
861 // Scalar Integer Saturating Sub (Unsigned)
862 //----------------------------------------------------------------------
864 // Mismatched registers
870 // CHECK-ERROR: error: invalid operand for instruction
871 // CHECK-ERROR: sqadd d0, s31, d2
873 // CHECK-ERROR: error: invalid operand for instruction
874 // CHECK-ERROR: uqadd s0, s1, d2
876 // CHECK-ERROR: error: invalid operand for instruction
877 // CHECK-ERROR: sqsub b0, b2, s18
879 // CHECK-ERROR: error: invalid operand for instruction
880 // CHECK-ERROR: uqsub h1, h2, d2
883 //----------------------------------------------------------------------
884 // Scalar Integer Saturating Doubling Multiply Half High (Signed)
885 //----------------------------------------------------------------------
887 sqdmulh h10, s11, h12
890 // CHECK-ERROR: error: invalid operand for instruction
891 // CHECK-ERROR: sqdmulh h10, s11, h12
893 // CHECK-ERROR: error: invalid operand for instruction
894 // CHECK-ERROR: sqdmulh s20, h21, s2
897 //------------------------------------------------------------------------
898 // Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed)
899 //------------------------------------------------------------------------
901 sqrdmulh h10, s11, h12
902 sqrdmulh s20, h21, s2
904 // CHECK-ERROR: error: invalid operand for instruction
905 // CHECK-ERROR: sqrdmulh h10, s11, h12
907 // CHECK-ERROR: error: invalid operand for instruction
908 // CHECK-ERROR: sqrdmulh s20, h21, s2
911 //----------------------------------------------------------------------
912 // Vector Shift Left (Signed and Unsigned Integer)
913 //----------------------------------------------------------------------
914 // Mismatched vector types
915 sshl v0.4s, v15.2s, v16.2s
916 ushl v1.16b, v25.16b, v6.8h
918 // CHECK-ERROR: error: invalid operand for instruction
919 // CHECK-ERROR: sshl v0.4s, v15.2s, v16.2s
921 // CHECK-ERROR: error: invalid operand for instruction
922 // CHECK-ERROR: ushl v1.16b, v25.16b, v6.8h
925 //----------------------------------------------------------------------
926 // Vector Saturating Shift Left (Signed and Unsigned Integer)
927 //----------------------------------------------------------------------
928 // Mismatched vector types
929 sqshl v0.2s, v15.4s, v16.2d
930 uqshl v1.8b, v25.4h, v6.8h
932 // CHECK-ERROR: error: invalid operand for instruction
933 // CHECK-ERROR: sqshl v0.2s, v15.4s, v16.2d
935 // CHECK-ERROR: error: invalid operand for instruction
936 // CHECK-ERROR: uqshl v1.8b, v25.4h, v6.8h
939 //----------------------------------------------------------------------
940 // Vector Rouding Shift Left (Signed and Unsigned Integer)
941 //----------------------------------------------------------------------
942 // Mismatched vector types
943 srshl v0.8h, v15.8h, v16.16b
944 urshl v1.2d, v25.2d, v6.4s
946 // CHECK-ERROR: error: invalid operand for instruction
947 // CHECK-ERROR: srshl v0.8h, v15.8h, v16.16b
949 // CHECK-ERROR: error: invalid operand for instruction
950 // CHECK-ERROR: urshl v1.2d, v25.2d, v6.4s
953 //----------------------------------------------------------------------
954 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
955 //----------------------------------------------------------------------
956 // Mismatched vector types
957 sqrshl v0.2s, v15.8h, v16.16b
958 uqrshl v1.4h, v25.4h, v6.2d
960 // CHECK-ERROR: error: invalid operand for instruction
961 // CHECK-ERROR: sqrshl v0.2s, v15.8h, v16.16b
963 // CHECK-ERROR: error: invalid operand for instruction
964 // CHECK-ERROR: uqrshl v1.4h, v25.4h, v6.2d
967 //----------------------------------------------------------------------
968 // Scalar Integer Shift Left (Signed, Unsigned)
969 //----------------------------------------------------------------------
970 // Mismatched and invalid vector types
974 // CHECK-ERROR: error: invalid operand for instruction
975 // CHECK-ERROR: sshl d0, d1, s2
977 // CHECK-ERROR: error: invalid operand for instruction
978 // CHECK-ERROR: ushl b2, b0, b1
981 //----------------------------------------------------------------------
982 // Scalar Integer Saturating Shift Left (Signed, Unsigned)
983 //----------------------------------------------------------------------
985 // Mismatched vector types
991 // CHECK-ERROR: error: invalid operand for instruction
992 // CHECK-ERROR: sqshl b0, s1, b0
994 // CHECK-ERROR: error: invalid operand for instruction
995 // CHECK-ERROR: uqshl h0, b1, h0
997 // CHECK-ERROR: error: invalid operand for instruction
998 // CHECK-ERROR: sqshl s0, h1, s0
1000 // CHECK-ERROR: error: invalid operand for instruction
1001 // CHECK-ERROR: uqshl d0, b1, d0
1004 //----------------------------------------------------------------------
1005 // Scalar Integer Rouding Shift Left (Signed, Unsigned)
1006 //----------------------------------------------------------------------
1007 // Mismatched and invalid vector types
1011 // CHECK-ERROR: error: invalid operand for instruction
1012 // CHECK-ERROR: srshl h0, h1, h2
1014 // CHECK-ERROR: error: invalid operand for instruction
1015 // CHECK-ERROR: urshl s0, s1, s2
1019 //----------------------------------------------------------------------
1020 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
1021 //----------------------------------------------------------------------
1023 // Mismatched vector types
1029 // CHECK-ERROR: error: invalid operand for instruction
1030 // CHECK-ERROR: sqrshl b0, b1, s0
1032 // CHECK-ERROR: error: invalid operand for instruction
1033 // CHECK-ERROR: uqrshl h0, h1, b0
1035 // CHECK-ERROR: error: invalid operand for instruction
1036 // CHECK-ERROR: sqrshl s0, s1, h0
1038 // CHECK-ERROR: error: invalid operand for instruction
1039 // CHECK-ERROR: uqrshl d0, d1, b0
1043 //----------------------------------------------------------------------
1044 // Vector Maximum (Signed, Unsigned)
1045 //----------------------------------------------------------------------
1046 // Mismatched and invalid vector types
1047 smax v0.2d, v1.2d, v2.2d
1048 umax v0.4h, v1.4h, v2.2s
1050 // CHECK-ERROR: error: invalid operand for instruction
1051 // CHECK-ERROR: smax v0.2d, v1.2d, v2.2d
1053 // CHECK-ERROR: error: invalid operand for instruction
1054 // CHECK-ERROR: umax v0.4h, v1.4h, v2.2s
1057 //----------------------------------------------------------------------
1058 // Vector Minimum (Signed, Unsigned)
1059 //----------------------------------------------------------------------
1060 // Mismatched and invalid vector types
1061 smin v0.2d, v1.2d, v2.2d
1062 umin v0.2s, v1.2s, v2.8b
1064 // CHECK-ERROR: error: invalid operand for instruction
1065 // CHECK-ERROR: smin v0.2d, v1.2d, v2.2d
1067 // CHECK-ERROR: error: invalid operand for instruction
1068 // CHECK-ERROR: umin v0.2s, v1.2s, v2.8b
1072 //----------------------------------------------------------------------
1073 // Vector Maximum (Floating Point)
1074 //----------------------------------------------------------------------
1075 // Mismatched and invalid vector types
1076 fmax v0.2s, v1.2s, v2.4s
1077 fmax v0.8b, v1.8b, v2.8b
1079 // CHECK-ERROR: error: invalid operand for instruction
1080 // CHECK-ERROR: fmax v0.2s, v1.2s, v2.4s
1082 // CHECK-ERROR: error: invalid operand for instruction
1083 // CHECK-ERROR: fmax v0.8b, v1.8b, v2.8b
1085 //----------------------------------------------------------------------
1086 // Vector Minimum (Floating Point)
1087 //----------------------------------------------------------------------
1088 // Mismatched and invalid vector types
1089 fmin v0.4s, v1.4s, v2.2d
1090 fmin v0.8h, v1.8h, v2.8h
1092 // CHECK-ERROR: error: invalid operand for instruction
1093 // CHECK-ERROR: fmin v0.4s, v1.4s, v2.2d
1095 // CHECK-ERROR: error: invalid operand for instruction
1096 // CHECK-ERROR: fmin v0.8h, v1.8h, v2.8h
1099 //----------------------------------------------------------------------
1100 // Vector maxNum (Floating Point)
1101 //----------------------------------------------------------------------
1102 // Mismatched and invalid vector types
1103 fmaxnm v0.2s, v1.2s, v2.2d
1104 fmaxnm v0.4h, v1.8h, v2.4h
1106 // CHECK-ERROR: error: invalid operand for instruction
1107 // CHECK-ERROR: fmaxnm v0.2s, v1.2s, v2.2d
1109 // CHECK-ERROR: error: invalid operand for instruction
1110 // CHECK-ERROR: fmaxnm v0.4h, v1.8h, v2.4h
1113 //----------------------------------------------------------------------
1114 // Vector minNum (Floating Point)
1115 //----------------------------------------------------------------------
1116 // Mismatched and invalid vector types
1117 fminnm v0.4s, v1.2s, v2.4s
1118 fminnm v0.16b, v0.16b, v0.16b
1120 // CHECK-ERROR: error: invalid operand for instruction
1121 // CHECK-ERROR: fminnm v0.4s, v1.2s, v2.4s
1123 // CHECK-ERROR: error: invalid operand for instruction
1124 // CHECK-ERROR: fminnm v0.16b, v0.16b, v0.16b
1128 //----------------------------------------------------------------------
1129 // Vector Maximum Pairwise (Signed, Unsigned)
1130 //----------------------------------------------------------------------
1131 // Mismatched and invalid vector types
1132 smaxp v0.2d, v1.2d, v2.2d
1133 umaxp v0.4h, v1.4h, v2.2s
1135 // CHECK-ERROR: error: invalid operand for instruction
1136 // CHECK-ERROR: smaxp v0.2d, v1.2d, v2.2d
1138 // CHECK-ERROR: error: invalid operand for instruction
1139 // CHECK-ERROR: umaxp v0.4h, v1.4h, v2.2s
1142 //----------------------------------------------------------------------
1143 // Vector Minimum Pairwise (Signed, Unsigned)
1144 //----------------------------------------------------------------------
1145 // Mismatched and invalid vector types
1146 sminp v0.2d, v1.2d, v2.2d
1147 uminp v0.2s, v1.2s, v2.8b
1149 // CHECK-ERROR: error: invalid operand for instruction
1150 // CHECK-ERROR: sminp v0.2d, v1.2d, v2.2d
1152 // CHECK-ERROR: error: invalid operand for instruction
1153 // CHECK-ERROR: uminp v0.2s, v1.2s, v2.8b
1157 //----------------------------------------------------------------------
1158 // Vector Maximum Pairwise (Floating Point)
1159 //----------------------------------------------------------------------
1160 // Mismatched and invalid vector types
1161 fmaxp v0.2s, v1.2s, v2.4s
1162 fmaxp v0.8b, v1.8b, v2.8b
1164 // CHECK-ERROR: error: invalid operand for instruction
1165 // CHECK-ERROR: fmaxp v0.2s, v1.2s, v2.4s
1167 // CHECK-ERROR: error: invalid operand for instruction
1168 // CHECK-ERROR: fmaxp v0.8b, v1.8b, v2.8b
1170 //----------------------------------------------------------------------
1171 // Vector Minimum Pairwise (Floating Point)
1172 //----------------------------------------------------------------------
1173 // Mismatched and invalid vector types
1174 fminp v0.4s, v1.4s, v2.2d
1175 fminp v0.8h, v1.8h, v2.8h
1177 // CHECK-ERROR: error: invalid operand for instruction
1178 // CHECK-ERROR: fminp v0.4s, v1.4s, v2.2d
1180 // CHECK-ERROR: error: invalid operand for instruction
1181 // CHECK-ERROR: fminp v0.8h, v1.8h, v2.8h
1184 //----------------------------------------------------------------------
1185 // Vector maxNum Pairwise (Floating Point)
1186 //----------------------------------------------------------------------
1187 // Mismatched and invalid vector types
1188 fmaxnmp v0.2s, v1.2s, v2.2d
1189 fmaxnmp v0.4h, v1.8h, v2.4h
1191 // CHECK-ERROR: error: invalid operand for instruction
1192 // CHECK-ERROR: fmaxnmp v0.2s, v1.2s, v2.2d
1194 // CHECK-ERROR: error: invalid operand for instruction
1195 // CHECK-ERROR: fmaxnmp v0.4h, v1.8h, v2.4h
1198 //----------------------------------------------------------------------
1199 // Vector minNum Pairwise (Floating Point)
1200 //----------------------------------------------------------------------
1201 // Mismatched and invalid vector types
1202 fminnmp v0.4s, v1.2s, v2.4s
1203 fminnmp v0.16b, v0.16b, v0.16b
1205 // CHECK-ERROR: error: invalid operand for instruction
1206 // CHECK-ERROR: fminnmp v0.4s, v1.2s, v2.4s
1208 // CHECK-ERROR: error: invalid operand for instruction
1209 // CHECK-ERROR: fminnmp v0.16b, v0.16b, v0.16b
1213 //----------------------------------------------------------------------
1214 // Vector Add Pairwise (Integer)
1215 //----------------------------------------------------------------------
1217 // Mismatched vector types
1218 addp v0.16b, v1.8b, v2.8b
1220 // CHECK-ERROR: error: invalid operand for instruction
1221 // CHECK-ERROR: addp v0.16b, v1.8b, v2.8b
1224 //----------------------------------------------------------------------
1225 // Vector Add Pairwise (Floating Point)
1226 //----------------------------------------------------------------------
1227 // Mismatched and invalid vector types
1228 faddp v0.16b, v1.8b, v2.8b
1229 faddp v0.2d, v1.2d, v2.8h
1231 // CHECK-ERROR: error: invalid operand for instruction
1232 // CHECK-ERROR: faddp v0.16b, v1.8b, v2.8b
1234 // CHECK-ERROR: error: invalid operand for instruction
1235 // CHECK-ERROR: faddp v0.2d, v1.2d, v2.8h
1239 //----------------------------------------------------------------------
1240 // Vector Saturating Doubling Multiply High
1241 //----------------------------------------------------------------------
1242 // Mismatched and invalid vector types
1243 sqdmulh v2.4h, v25.8h, v3.4h
1244 sqdmulh v12.2d, v5.2d, v13.2d
1245 sqdmulh v3.8b, v1.8b, v30.8b
1247 // CHECK-ERROR: error: invalid operand for instruction
1248 // CHECK-ERROR: sqdmulh v2.4h, v25.8h, v3.4h
1250 // CHECK-ERROR: error: invalid operand for instruction
1251 // CHECK-ERROR: sqdmulh v12.2d, v5.2d, v13.2d
1253 // CHECK-ERROR: error: invalid operand for instruction
1254 // CHECK-ERROR: sqdmulh v3.8b, v1.8b, v30.8b
1257 //----------------------------------------------------------------------
1258 // Vector Saturating Rouding Doubling Multiply High
1259 //----------------------------------------------------------------------
1260 // Mismatched and invalid vector types
1261 sqrdmulh v2.2s, v25.4s, v3.4s
1262 sqrdmulh v12.16b, v5.16b, v13.16b
1263 sqrdmulh v3.4h, v1.4h, v30.2d
1266 // CHECK-ERROR: error: invalid operand for instruction
1267 // CHECK-ERROR: sqrdmulh v2.2s, v25.4s, v3.4s
1269 // CHECK-ERROR: error: invalid operand for instruction
1270 // CHECK-ERROR: sqrdmulh v12.16b, v5.16b, v13.16b
1272 // CHECK-ERROR: error: invalid operand for instruction
1273 // CHECK-ERROR: sqrdmulh v3.4h, v1.4h, v30.2d
1276 //----------------------------------------------------------------------
1277 // Vector Multiply Extended
1278 //----------------------------------------------------------------------
1279 // Mismatched and invalid vector types
1280 fmulx v21.2s, v5.2s, v13.2d
1281 fmulx v1.4h, v25.4h, v3.4h
1283 // CHECK-ERROR: error: invalid operand for instruction
1284 // CHECK-ERROR: fmulx v21.2s, v5.2s, v13.2d
1286 // CHECK-ERROR: error: invalid operand for instruction
1287 // CHECK-ERROR: fmulx v1.4h, v25.4h, v3.4h
1290 //------------------------------------------------------------------------------
1291 // Vector Shift Left by Immediate
1292 //------------------------------------------------------------------------------
1293 // Mismatched vector types and out of range
1294 shl v0.4s, v15,2s, #3
1295 shl v0.2d, v17.4s, #3
1296 shl v0.8b, v31.8b, #-1
1297 shl v0.8b, v31.8b, #8
1298 shl v0.4s, v21.4s, #32
1299 shl v0.2d, v1.2d, #64
1302 // CHECK-ERROR: error: unexpected token in argument list
1303 // CHECK-ERROR: shl v0.4s, v15,2s, #3
1306 // CHECK-ERROR: error: invalid operand for instruction
1307 // CHECK-ERROR: shl v0.2d, v17.4s, #3
1309 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1310 // CHECK-ERROR: shl v0.8b, v31.8b, #-1
1312 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1313 // CHECK-ERROR: shl v0.8b, v31.8b, #8
1315 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1316 // CHECK-ERROR: shl v0.4s, v21.4s, #32
1318 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1319 // CHECK-ERROR: shl v0.2d, v1.2d, #64
1322 //----------------------------------------------------------------------
1323 // Vector Shift Left Long by Immediate
1324 //----------------------------------------------------------------------
1325 // Mismatched vector types
1326 sshll v0.4s, v15.2s, #3
1327 ushll v1.16b, v25.16b, #6
1328 sshll2 v0.2d, v3.8s, #15
1329 ushll2 v1.4s, v25.4s, #7
1332 sshll v0.8h, v1.8b, #-1
1333 sshll v0.8h, v1.8b, #9
1334 ushll v0.4s, v1.4h, #17
1335 ushll v0.2d, v1.2s, #33
1336 sshll2 v0.8h, v1.16b, #9
1337 sshll2 v0.4s, v1.8h, #17
1338 ushll2 v0.2d, v1.4s, #33
1340 // CHECK-ERROR: error: invalid operand for instruction
1341 // CHECK-ERROR: sshll v0.4s, v15.2s, #3
1343 // CHECK-ERROR: error: invalid operand for instruction
1344 // CHECK-ERROR: ushll v1.16b, v25.16b, #6
1346 // CHECK-ERROR: error: invalid operand for instruction
1347 // CHECK-ERROR: sshll2 v0.2d, v3.8s, #15
1349 // CHECK-ERROR: error: invalid operand for instruction
1350 // CHECK-ERROR: ushll2 v1.4s, v25.4s, #7
1352 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1353 // CHECK-ERROR: sshll v0.8h, v1.8b, #-1
1355 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1356 // CHECK-ERROR: sshll v0.8h, v1.8b, #9
1358 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1359 // CHECK-ERROR: ushll v0.4s, v1.4h, #17
1361 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1362 // CHECK-ERROR: ushll v0.2d, v1.2s, #33
1364 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1365 // CHECK-ERROR: sshll2 v0.8h, v1.16b, #9
1367 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1368 // CHECK-ERROR: sshll2 v0.4s, v1.8h, #17
1370 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1371 // CHECK-ERROR: ushll2 v0.2d, v1.4s, #33
1375 //------------------------------------------------------------------------------
1376 // Vector shift right by immediate
1377 //------------------------------------------------------------------------------
1378 sshr v0.8b, v1.8h, #3
1379 sshr v0.4h, v1.4s, #3
1380 sshr v0.2s, v1.2d, #3
1381 sshr v0.16b, v1.16b, #9
1382 sshr v0.8h, v1.8h, #17
1383 sshr v0.4s, v1.4s, #33
1384 sshr v0.2d, v1.2d, #65
1386 // CHECK-ERROR: error: invalid operand for instruction
1387 // CHECK-ERROR: sshr v0.8b, v1.8h, #3
1389 // CHECK-ERROR: error: invalid operand for instruction
1390 // CHECK-ERROR: sshr v0.4h, v1.4s, #3
1392 // CHECK-ERROR: error: invalid operand for instruction
1393 // CHECK-ERROR: sshr v0.2s, v1.2d, #3
1395 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1396 // CHECK-ERROR: sshr v0.16b, v1.16b, #9
1398 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1399 // CHECK-ERROR: sshr v0.8h, v1.8h, #17
1401 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1402 // CHECK-ERROR: sshr v0.4s, v1.4s, #33
1404 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1405 // CHECK-ERROR: sshr v0.2d, v1.2d, #65
1408 //------------------------------------------------------------------------------
1409 // Vector shift right by immediate
1410 //------------------------------------------------------------------------------
1411 ushr v0.8b, v1.8h, #3
1412 ushr v0.4h, v1.4s, #3
1413 ushr v0.2s, v1.2d, #3
1414 ushr v0.16b, v1.16b, #9
1415 ushr v0.8h, v1.8h, #17
1416 ushr v0.4s, v1.4s, #33
1417 ushr v0.2d, v1.2d, #65
1419 // CHECK-ERROR: error: invalid operand for instruction
1420 // CHECK-ERROR: ushr v0.8b, v1.8h, #3
1422 // CHECK-ERROR: error: invalid operand for instruction
1423 // CHECK-ERROR: ushr v0.4h, v1.4s, #3
1425 // CHECK-ERROR: error: invalid operand for instruction
1426 // CHECK-ERROR: ushr v0.2s, v1.2d, #3
1428 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1429 // CHECK-ERROR: ushr v0.16b, v1.16b, #9
1431 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1432 // CHECK-ERROR: ushr v0.8h, v1.8h, #17
1434 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1435 // CHECK-ERROR: ushr v0.4s, v1.4s, #33
1437 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1438 // CHECK-ERROR: ushr v0.2d, v1.2d, #65
1441 //------------------------------------------------------------------------------
1442 // Vector shift right and accumulate by immediate
1443 //------------------------------------------------------------------------------
1444 ssra v0.8b, v1.8h, #3
1445 ssra v0.4h, v1.4s, #3
1446 ssra v0.2s, v1.2d, #3
1447 ssra v0.16b, v1.16b, #9
1448 ssra v0.8h, v1.8h, #17
1449 ssra v0.4s, v1.4s, #33
1450 ssra v0.2d, v1.2d, #65
1452 // CHECK-ERROR: error: invalid operand for instruction
1453 // CHECK-ERROR: ssra v0.8b, v1.8h, #3
1455 // CHECK-ERROR: error: invalid operand for instruction
1456 // CHECK-ERROR: ssra v0.4h, v1.4s, #3
1458 // CHECK-ERROR: error: invalid operand for instruction
1459 // CHECK-ERROR: ssra v0.2s, v1.2d, #3
1461 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1462 // CHECK-ERROR: ssra v0.16b, v1.16b, #9
1464 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1465 // CHECK-ERROR: ssra v0.8h, v1.8h, #17
1467 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1468 // CHECK-ERROR: ssra v0.4s, v1.4s, #33
1470 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1471 // CHECK-ERROR: ssra v0.2d, v1.2d, #65
1474 //------------------------------------------------------------------------------
1475 // Vector shift right and accumulate by immediate
1476 //------------------------------------------------------------------------------
1477 usra v0.8b, v1.8h, #3
1478 usra v0.4h, v1.4s, #3
1479 usra v0.2s, v1.2d, #3
1480 usra v0.16b, v1.16b, #9
1481 usra v0.8h, v1.8h, #17
1482 usra v0.4s, v1.4s, #33
1483 usra v0.2d, v1.2d, #65
1485 // CHECK-ERROR: error: invalid operand for instruction
1486 // CHECK-ERROR: usra v0.8b, v1.8h, #3
1488 // CHECK-ERROR: error: invalid operand for instruction
1489 // CHECK-ERROR: usra v0.4h, v1.4s, #3
1491 // CHECK-ERROR: error: invalid operand for instruction
1492 // CHECK-ERROR: usra v0.2s, v1.2d, #3
1494 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1495 // CHECK-ERROR: usra v0.16b, v1.16b, #9
1497 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1498 // CHECK-ERROR: usra v0.8h, v1.8h, #17
1500 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1501 // CHECK-ERROR: usra v0.4s, v1.4s, #33
1503 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1504 // CHECK-ERROR: usra v0.2d, v1.2d, #65
1507 //------------------------------------------------------------------------------
1508 // Vector rounding shift right by immediate
1509 //------------------------------------------------------------------------------
1510 srshr v0.8b, v1.8h, #3
1511 srshr v0.4h, v1.4s, #3
1512 srshr v0.2s, v1.2d, #3
1513 srshr v0.16b, v1.16b, #9
1514 srshr v0.8h, v1.8h, #17
1515 srshr v0.4s, v1.4s, #33
1516 srshr v0.2d, v1.2d, #65
1518 // CHECK-ERROR: error: invalid operand for instruction
1519 // CHECK-ERROR: srshr v0.8b, v1.8h, #3
1521 // CHECK-ERROR: error: invalid operand for instruction
1522 // CHECK-ERROR: srshr v0.4h, v1.4s, #3
1524 // CHECK-ERROR: error: invalid operand for instruction
1525 // CHECK-ERROR: srshr v0.2s, v1.2d, #3
1527 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1528 // CHECK-ERROR: srshr v0.16b, v1.16b, #9
1530 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1531 // CHECK-ERROR: srshr v0.8h, v1.8h, #17
1533 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1534 // CHECK-ERROR: srshr v0.4s, v1.4s, #33
1536 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1537 // CHECK-ERROR: srshr v0.2d, v1.2d, #65
1540 //------------------------------------------------------------------------------
1541 // Vecotr rounding shift right by immediate
1542 //------------------------------------------------------------------------------
1543 urshr v0.8b, v1.8h, #3
1544 urshr v0.4h, v1.4s, #3
1545 urshr v0.2s, v1.2d, #3
1546 urshr v0.16b, v1.16b, #9
1547 urshr v0.8h, v1.8h, #17
1548 urshr v0.4s, v1.4s, #33
1549 urshr v0.2d, v1.2d, #65
1551 // CHECK-ERROR: error: invalid operand for instruction
1552 // CHECK-ERROR: urshr v0.8b, v1.8h, #3
1554 // CHECK-ERROR: error: invalid operand for instruction
1555 // CHECK-ERROR: urshr v0.4h, v1.4s, #3
1557 // CHECK-ERROR: error: invalid operand for instruction
1558 // CHECK-ERROR: urshr v0.2s, v1.2d, #3
1560 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1561 // CHECK-ERROR: urshr v0.16b, v1.16b, #9
1563 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1564 // CHECK-ERROR: urshr v0.8h, v1.8h, #17
1566 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1567 // CHECK-ERROR: urshr v0.4s, v1.4s, #33
1569 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1570 // CHECK-ERROR: urshr v0.2d, v1.2d, #65
1573 //------------------------------------------------------------------------------
1574 // Vector rounding shift right and accumulate by immediate
1575 //------------------------------------------------------------------------------
1576 srsra v0.8b, v1.8h, #3
1577 srsra v0.4h, v1.4s, #3
1578 srsra v0.2s, v1.2d, #3
1579 srsra v0.16b, v1.16b, #9
1580 srsra v0.8h, v1.8h, #17
1581 srsra v0.4s, v1.4s, #33
1582 srsra v0.2d, v1.2d, #65
1584 // CHECK-ERROR: error: invalid operand for instruction
1585 // CHECK-ERROR: srsra v0.8b, v1.8h, #3
1587 // CHECK-ERROR: error: invalid operand for instruction
1588 // CHECK-ERROR: srsra v0.4h, v1.4s, #3
1590 // CHECK-ERROR: error: invalid operand for instruction
1591 // CHECK-ERROR: srsra v0.2s, v1.2d, #3
1593 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1594 // CHECK-ERROR: srsra v0.16b, v1.16b, #9
1596 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1597 // CHECK-ERROR: srsra v0.8h, v1.8h, #17
1599 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1600 // CHECK-ERROR: srsra v0.4s, v1.4s, #33
1602 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1603 // CHECK-ERROR: srsra v0.2d, v1.2d, #65
1606 //------------------------------------------------------------------------------
1607 // Vector rounding shift right and accumulate by immediate
1608 //------------------------------------------------------------------------------
1609 ursra v0.8b, v1.8h, #3
1610 ursra v0.4h, v1.4s, #3
1611 ursra v0.2s, v1.2d, #3
1612 ursra v0.16b, v1.16b, #9
1613 ursra v0.8h, v1.8h, #17
1614 ursra v0.4s, v1.4s, #33
1615 ursra v0.2d, v1.2d, #65
1617 // CHECK-ERROR: error: invalid operand for instruction
1618 // CHECK-ERROR: ursra v0.8b, v1.8h, #3
1620 // CHECK-ERROR: error: invalid operand for instruction
1621 // CHECK-ERROR: ursra v0.4h, v1.4s, #3
1623 // CHECK-ERROR: error: invalid operand for instruction
1624 // CHECK-ERROR: ursra v0.2s, v1.2d, #3
1626 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1627 // CHECK-ERROR: ursra v0.16b, v1.16b, #9
1629 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1630 // CHECK-ERROR: ursra v0.8h, v1.8h, #17
1632 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1633 // CHECK-ERROR: ursra v0.4s, v1.4s, #33
1635 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1636 // CHECK-ERROR: ursra v0.2d, v1.2d, #65
1639 //------------------------------------------------------------------------------
1640 // Vector shift right and insert by immediate
1641 //------------------------------------------------------------------------------
1642 sri v0.8b, v1.8h, #3
1643 sri v0.4h, v1.4s, #3
1644 sri v0.2s, v1.2d, #3
1645 sri v0.16b, v1.16b, #9
1646 sri v0.8h, v1.8h, #17
1647 sri v0.4s, v1.4s, #33
1648 sri v0.2d, v1.2d, #65
1650 // CHECK-ERROR: error: invalid operand for instruction
1651 // CHECK-ERROR: sri v0.8b, v1.8h, #3
1653 // CHECK-ERROR: error: invalid operand for instruction
1654 // CHECK-ERROR: sri v0.4h, v1.4s, #3
1656 // CHECK-ERROR: error: invalid operand for instruction
1657 // CHECK-ERROR: sri v0.2s, v1.2d, #3
1659 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1660 // CHECK-ERROR: sri v0.16b, v1.16b, #9
1662 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1663 // CHECK-ERROR: sri v0.8h, v1.8h, #17
1665 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1666 // CHECK-ERROR: sri v0.4s, v1.4s, #33
1668 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1669 // CHECK-ERROR: sri v0.2d, v1.2d, #65
1672 //------------------------------------------------------------------------------
1673 // Vector shift left and insert by immediate
1674 //------------------------------------------------------------------------------
1675 sli v0.8b, v1.8h, #3
1676 sli v0.4h, v1.4s, #3
1677 sli v0.2s, v1.2d, #3
1678 sli v0.16b, v1.16b, #8
1679 sli v0.8h, v1.8h, #16
1680 sli v0.4s, v1.4s, #32
1681 sli v0.2d, v1.2d, #64
1683 // CHECK-ERROR: error: invalid operand for instruction
1684 // CHECK-ERROR: sli v0.8b, v1.8h, #3
1686 // CHECK-ERROR: error: invalid operand for instruction
1687 // CHECK-ERROR: sli v0.4h, v1.4s, #3
1689 // CHECK-ERROR: error: invalid operand for instruction
1690 // CHECK-ERROR: sli v0.2s, v1.2d, #3
1692 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1693 // CHECK-ERROR: sli v0.16b, v1.16b, #8
1695 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1696 // CHECK-ERROR: sli v0.8h, v1.8h, #16
1698 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1699 // CHECK-ERROR: sli v0.4s, v1.4s, #32
1701 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1702 // CHECK-ERROR: sli v0.2d, v1.2d, #64
1705 //------------------------------------------------------------------------------
1706 // Vector saturating shift left unsigned by immediate
1707 //------------------------------------------------------------------------------
1708 sqshlu v0.8b, v1.8h, #3
1709 sqshlu v0.4h, v1.4s, #3
1710 sqshlu v0.2s, v1.2d, #3
1711 sqshlu v0.16b, v1.16b, #8
1712 sqshlu v0.8h, v1.8h, #16
1713 sqshlu v0.4s, v1.4s, #32
1714 sqshlu v0.2d, v1.2d, #64
1716 // CHECK-ERROR: error: invalid operand for instruction
1717 // CHECK-ERROR: sqshlu v0.8b, v1.8h, #3
1719 // CHECK-ERROR: error: invalid operand for instruction
1720 // CHECK-ERROR: sqshlu v0.4h, v1.4s, #3
1722 // CHECK-ERROR: error: invalid operand for instruction
1723 // CHECK-ERROR: sqshlu v0.2s, v1.2d, #3
1725 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1726 // CHECK-ERROR: sqshlu v0.16b, v1.16b, #8
1728 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1729 // CHECK-ERROR: sqshlu v0.8h, v1.8h, #16
1731 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1732 // CHECK-ERROR: sqshlu v0.4s, v1.4s, #32
1734 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1735 // CHECK-ERROR: sqshlu v0.2d, v1.2d, #64
1738 //------------------------------------------------------------------------------
1739 // Vector saturating shift left by immediate
1740 //------------------------------------------------------------------------------
1741 sqshl v0.8b, v1.8h, #3
1742 sqshl v0.4h, v1.4s, #3
1743 sqshl v0.2s, v1.2d, #3
1744 sqshl v0.16b, v1.16b, #8
1745 sqshl v0.8h, v1.8h, #16
1746 sqshl v0.4s, v1.4s, #32
1747 sqshl v0.2d, v1.2d, #64
1749 // CHECK-ERROR: error: invalid operand for instruction
1750 // CHECK-ERROR: sqshl v0.8b, v1.8h, #3
1752 // CHECK-ERROR: error: invalid operand for instruction
1753 // CHECK-ERROR: sqshl v0.4h, v1.4s, #3
1755 // CHECK-ERROR: error: invalid operand for instruction
1756 // CHECK-ERROR: sqshl v0.2s, v1.2d, #3
1758 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1759 // CHECK-ERROR: sqshl v0.16b, v1.16b, #8
1761 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1762 // CHECK-ERROR: sqshl v0.8h, v1.8h, #16
1764 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1765 // CHECK-ERROR: sqshl v0.4s, v1.4s, #32
1767 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1768 // CHECK-ERROR: sqshl v0.2d, v1.2d, #64
1771 //------------------------------------------------------------------------------
1772 // Vector saturating shift left by immediate
1773 //------------------------------------------------------------------------------
1774 uqshl v0.8b, v1.8h, #3
1775 uqshl v0.4h, v1.4s, #3
1776 uqshl v0.2s, v1.2d, #3
1777 uqshl v0.16b, v1.16b, #8
1778 uqshl v0.8h, v1.8h, #16
1779 uqshl v0.4s, v1.4s, #32
1780 uqshl v0.2d, v1.2d, #64
1782 // CHECK-ERROR: error: invalid operand for instruction
1783 // CHECK-ERROR: uqshl v0.8b, v1.8h, #3
1785 // CHECK-ERROR: error: invalid operand for instruction
1786 // CHECK-ERROR: uqshl v0.4h, v1.4s, #3
1788 // CHECK-ERROR: error: invalid operand for instruction
1789 // CHECK-ERROR: uqshl v0.2s, v1.2d, #3
1791 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1792 // CHECK-ERROR: uqshl v0.16b, v1.16b, #8
1794 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1795 // CHECK-ERROR: uqshl v0.8h, v1.8h, #16
1797 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1798 // CHECK-ERROR: uqshl v0.4s, v1.4s, #32
1800 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1801 // CHECK-ERROR: uqshl v0.2d, v1.2d, #64
1804 //------------------------------------------------------------------------------
1805 // Vector shift right narrow by immediate
1806 //------------------------------------------------------------------------------
1807 shrn v0.8b, v1.8b, #3
1808 shrn v0.4h, v1.4h, #3
1809 shrn v0.2s, v1.2s, #3
1810 shrn2 v0.16b, v1.8h, #17
1811 shrn2 v0.8h, v1.4s, #33
1812 shrn2 v0.4s, v1.2d, #65
1814 // CHECK-ERROR: error: invalid operand for instruction
1815 // CHECK-ERROR: shrn v0.8b, v1.8b, #3
1817 // CHECK-ERROR: error: invalid operand for instruction
1818 // CHECK-ERROR: shrn v0.4h, v1.4h, #3
1820 // CHECK-ERROR: error: invalid operand for instruction
1821 // CHECK-ERROR: shrn v0.2s, v1.2s, #3
1823 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1824 // CHECK-ERROR: shrn2 v0.16b, v1.8h, #17
1826 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1827 // CHECK-ERROR: shrn2 v0.8h, v1.4s, #33
1829 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1830 // CHECK-ERROR: shrn2 v0.4s, v1.2d, #65
1833 //------------------------------------------------------------------------------
1834 // Vector saturating shift right unsigned narrow by immediate
1835 //------------------------------------------------------------------------------
1836 sqshrun v0.8b, v1.8b, #3
1837 sqshrun v0.4h, v1.4h, #3
1838 sqshrun v0.2s, v1.2s, #3
1839 sqshrun2 v0.16b, v1.8h, #17
1840 sqshrun2 v0.8h, v1.4s, #33
1841 sqshrun2 v0.4s, v1.2d, #65
1843 // CHECK-ERROR: error: invalid operand for instruction
1844 // CHECK-ERROR: sqshrun v0.8b, v1.8b, #3
1846 // CHECK-ERROR: error: invalid operand for instruction
1847 // CHECK-ERROR: sqshrun v0.4h, v1.4h, #3
1849 // CHECK-ERROR: error: invalid operand for instruction
1850 // CHECK-ERROR: sqshrun v0.2s, v1.2s, #3
1852 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1853 // CHECK-ERROR: sqshrun2 v0.16b, v1.8h, #17
1855 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1856 // CHECK-ERROR: sqshrun2 v0.8h, v1.4s, #33
1858 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1859 // CHECK-ERROR: sqshrun2 v0.4s, v1.2d, #65
1862 //------------------------------------------------------------------------------
1863 // Vector rounding shift right narrow by immediate
1864 //------------------------------------------------------------------------------
1865 rshrn v0.8b, v1.8b, #3
1866 rshrn v0.4h, v1.4h, #3
1867 rshrn v0.2s, v1.2s, #3
1868 rshrn2 v0.16b, v1.8h, #17
1869 rshrn2 v0.8h, v1.4s, #33
1870 rshrn2 v0.4s, v1.2d, #65
1872 // CHECK-ERROR: error: invalid operand for instruction
1873 // CHECK-ERROR: rshrn v0.8b, v1.8b, #3
1875 // CHECK-ERROR: error: invalid operand for instruction
1876 // CHECK-ERROR: rshrn v0.4h, v1.4h, #3
1878 // CHECK-ERROR: error: invalid operand for instruction
1879 // CHECK-ERROR: rshrn v0.2s, v1.2s, #3
1881 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1882 // CHECK-ERROR: rshrn2 v0.16b, v1.8h, #17
1884 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1885 // CHECK-ERROR: rshrn2 v0.8h, v1.4s, #33
1887 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1888 // CHECK-ERROR: rshrn2 v0.4s, v1.2d, #65
1891 //------------------------------------------------------------------------------
1892 // Vector saturating shift right rounded unsigned narrow by immediate
1893 //------------------------------------------------------------------------------
1894 sqrshrun v0.8b, v1.8b, #3
1895 sqrshrun v0.4h, v1.4h, #3
1896 sqrshrun v0.2s, v1.2s, #3
1897 sqrshrun2 v0.16b, v1.8h, #17
1898 sqrshrun2 v0.8h, v1.4s, #33
1899 sqrshrun2 v0.4s, v1.2d, #65
1901 // CHECK-ERROR: error: invalid operand for instruction
1902 // CHECK-ERROR: sqrshrun v0.8b, v1.8b, #3
1904 // CHECK-ERROR: error: invalid operand for instruction
1905 // CHECK-ERROR: sqrshrun v0.4h, v1.4h, #3
1907 // CHECK-ERROR: error: invalid operand for instruction
1908 // CHECK-ERROR: sqrshrun v0.2s, v1.2s, #3
1910 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1911 // CHECK-ERROR: sqrshrun2 v0.16b, v1.8h, #17
1913 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1914 // CHECK-ERROR: sqrshrun2 v0.8h, v1.4s, #33
1916 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1917 // CHECK-ERROR: sqrshrun2 v0.4s, v1.2d, #65
1920 //------------------------------------------------------------------------------
1921 // Vector saturating shift right narrow by immediate
1922 //------------------------------------------------------------------------------
1923 sqshrn v0.8b, v1.8b, #3
1924 sqshrn v0.4h, v1.4h, #3
1925 sqshrn v0.2s, v1.2s, #3
1926 sqshrn2 v0.16b, v1.8h, #17
1927 sqshrn2 v0.8h, v1.4s, #33
1928 sqshrn2 v0.4s, v1.2d, #65
1930 // CHECK-ERROR: error: invalid operand for instruction
1931 // CHECK-ERROR: sqshrn v0.8b, v1.8b, #3
1933 // CHECK-ERROR: error: invalid operand for instruction
1934 // CHECK-ERROR: sqshrn v0.4h, v1.4h, #3
1936 // CHECK-ERROR: error: invalid operand for instruction
1937 // CHECK-ERROR: sqshrn v0.2s, v1.2s, #3
1939 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1940 // CHECK-ERROR: sqshrn2 v0.16b, v1.8h, #17
1942 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1943 // CHECK-ERROR: sqshrn2 v0.8h, v1.4s, #33
1945 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1946 // CHECK-ERROR: sqshrn2 v0.4s, v1.2d, #65
1949 //------------------------------------------------------------------------------
1950 // Vector saturating shift right narrow by immediate
1951 //------------------------------------------------------------------------------
1952 uqshrn v0.8b, v1.8b, #3
1953 uqshrn v0.4h, v1.4h, #3
1954 uqshrn v0.2s, v1.2s, #3
1955 uqshrn2 v0.16b, v1.8h, #17
1956 uqshrn2 v0.8h, v1.4s, #33
1957 uqshrn2 v0.4s, v1.2d, #65
1959 // CHECK-ERROR: error: invalid operand for instruction
1960 // CHECK-ERROR: uqshrn v0.8b, v1.8b, #3
1962 // CHECK-ERROR: error: invalid operand for instruction
1963 // CHECK-ERROR: uqshrn v0.4h, v1.4h, #3
1965 // CHECK-ERROR: error: invalid operand for instruction
1966 // CHECK-ERROR: uqshrn v0.2s, v1.2s, #3
1968 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1969 // CHECK-ERROR: uqshrn2 v0.16b, v1.8h, #17
1971 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1972 // CHECK-ERROR: uqshrn2 v0.8h, v1.4s, #33
1974 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1975 // CHECK-ERROR: uqshrn2 v0.4s, v1.2d, #65
1978 //------------------------------------------------------------------------------
1979 // Vector saturating shift right rounded narrow by immediate
1980 //------------------------------------------------------------------------------
1981 sqrshrn v0.8b, v1.8b, #3
1982 sqrshrn v0.4h, v1.4h, #3
1983 sqrshrn v0.2s, v1.2s, #3
1984 sqrshrn2 v0.16b, v1.8h, #17
1985 sqrshrn2 v0.8h, v1.4s, #33
1986 sqrshrn2 v0.4s, v1.2d, #65
1988 // CHECK-ERROR: error: invalid operand for instruction
1989 // CHECK-ERROR: sqrshrn v0.8b, v1.8b, #3
1991 // CHECK-ERROR: error: invalid operand for instruction
1992 // CHECK-ERROR: sqrshrn v0.4h, v1.4h, #3
1994 // CHECK-ERROR: error: invalid operand for instruction
1995 // CHECK-ERROR: sqrshrn v0.2s, v1.2s, #3
1997 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1998 // CHECK-ERROR: sqrshrn2 v0.16b, v1.8h, #17
2000 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
2001 // CHECK-ERROR: sqrshrn2 v0.8h, v1.4s, #33
2003 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2004 // CHECK-ERROR: sqrshrn2 v0.4s, v1.2d, #65
2007 //------------------------------------------------------------------------------
2008 // Vector saturating shift right rounded narrow by immediate
2009 //------------------------------------------------------------------------------
2010 uqrshrn v0.8b, v1.8b, #3
2011 uqrshrn v0.4h, v1.4h, #3
2012 uqrshrn v0.2s, v1.2s, #3
2013 uqrshrn2 v0.16b, v1.8h, #17
2014 uqrshrn2 v0.8h, v1.4s, #33
2015 uqrshrn2 v0.4s, v1.2d, #65
2017 // CHECK-ERROR: error: invalid operand for instruction
2018 // CHECK-ERROR: uqrshrn v0.8b, v1.8b, #3
2020 // CHECK-ERROR: error: invalid operand for instruction
2021 // CHECK-ERROR: uqrshrn v0.4h, v1.4h, #3
2023 // CHECK-ERROR: error: invalid operand for instruction
2024 // CHECK-ERROR: uqrshrn v0.2s, v1.2s, #3
2026 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
2027 // CHECK-ERROR: uqrshrn2 v0.16b, v1.8h, #17
2029 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
2030 // CHECK-ERROR: uqrshrn2 v0.8h, v1.4s, #33
2032 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2033 // CHECK-ERROR: uqrshrn2 v0.4s, v1.2d, #65
2036 //------------------------------------------------------------------------------
2037 // Fixed-point convert to floating-point
2038 //------------------------------------------------------------------------------
2039 scvtf v0.2s, v1.2d, #3
2040 scvtf v0.4s, v1.4h, #3
2041 scvtf v0.2d, v1.2s, #3
2042 ucvtf v0.2s, v1.2s, #33
2043 ucvtf v0.4s, v1.4s, #33
2044 ucvtf v0.2d, v1.2d, #65
2046 // CHECK-ERROR: error: invalid operand for instruction
2047 // CHECK-ERROR: scvtf v0.2s, v1.2d, #3
2049 // CHECK-ERROR: error: invalid operand for instruction
2050 // CHECK-ERROR: scvtf v0.4s, v1.4h, #3
2052 // CHECK-ERROR: error: invalid operand for instruction
2053 // CHECK-ERROR: scvtf v0.2d, v1.2s, #3
2055 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2056 // CHECK-ERROR: ucvtf v0.2s, v1.2s, #33
2058 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2059 // CHECK-ERROR: ucvtf v0.4s, v1.4s, #33
2061 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
2062 // CHECK-ERROR: ucvtf v0.2d, v1.2d, #65
2065 //------------------------------------------------------------------------------
2066 // Floating-point convert to fixed-point
2067 //------------------------------------------------------------------------------
2068 fcvtzs v0.2s, v1.2d, #3
2069 fcvtzs v0.4s, v1.4h, #3
2070 fcvtzs v0.2d, v1.2s, #3
2071 fcvtzu v0.2s, v1.2s, #33
2072 fcvtzu v0.4s, v1.4s, #33
2073 fcvtzu v0.2d, v1.2d, #65
2075 // CHECK-ERROR: error: invalid operand for instruction
2076 // CHECK-ERROR: fcvtzs v0.2s, v1.2d, #3
2078 // CHECK-ERROR: error: invalid operand for instruction
2079 // CHECK-ERROR: fcvtzs v0.4s, v1.4h, #3
2081 // CHECK-ERROR: error: invalid operand for instruction
2082 // CHECK-ERROR: fcvtzs v0.2d, v1.2s, #3
2084 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2085 // CHECK-ERROR: fcvtzu v0.2s, v1.2s, #33
2087 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2088 // CHECK-ERROR: fcvtzu v0.4s, v1.4s, #33
2090 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
2091 // CHECK-ERROR: fcvtzu v0.2d, v1.2d, #65
2094 //----------------------------------------------------------------------
2095 // Vector operation on 3 operands with different types
2096 //----------------------------------------------------------------------
2098 // Mismatched and invalid vector types
2099 saddl v0.8h, v1.8h, v2.8b
2100 saddl v0.4s, v1.4s, v2.4h
2101 saddl v0.2d, v1.2d, v2.2s
2103 // CHECK-ERROR: error: invalid operand for instruction
2104 // CHECK-ERROR: saddl v0.8h, v1.8h, v2.8b
2106 // CHECK-ERROR: error: invalid operand for instruction
2107 // CHECK-ERROR: saddl v0.4s, v1.4s, v2.4h
2109 // CHECK-ERROR: error: invalid operand for instruction
2110 // CHECK-ERROR: saddl v0.2d, v1.2d, v2.2s
2113 saddl2 v0.4s, v1.8s, v2.8h
2114 saddl2 v0.8h, v1.16h, v2.16b
2115 saddl2 v0.2d, v1.4d, v2.4s
2117 // CHECK-ERROR: error: invalid operand for instruction
2118 // CHECK-ERROR: saddl2 v0.4s, v1.8s, v2.8h
2120 // CHECK-ERROR: error: invalid operand for instruction
2121 // CHECK-ERROR: saddl2 v0.8h, v1.16h, v2.16b
2123 // CHECK-ERROR: error: invalid operand for instruction
2124 // CHECK-ERROR: saddl2 v0.2d, v1.4d, v2.4s
2127 uaddl v0.8h, v1.8h, v2.8b
2128 uaddl v0.4s, v1.4s, v2.4h
2129 uaddl v0.2d, v1.2d, v2.2s
2131 // CHECK-ERROR: error: invalid operand for instruction
2132 // CHECK-ERROR: uaddl v0.8h, v1.8h, v2.8b
2134 // CHECK-ERROR: error: invalid operand for instruction
2135 // CHECK-ERROR: uaddl v0.4s, v1.4s, v2.4h
2137 // CHECK-ERROR: error: invalid operand for instruction
2138 // CHECK-ERROR: uaddl v0.2d, v1.2d, v2.2s
2141 uaddl2 v0.8h, v1.16h, v2.16b
2142 uaddl2 v0.4s, v1.8s, v2.8h
2143 uaddl2 v0.2d, v1.4d, v2.4s
2145 // CHECK-ERROR: error: invalid operand for instruction
2146 // CHECK-ERROR: uaddl2 v0.8h, v1.16h, v2.16b
2148 // CHECK-ERROR: error: invalid operand for instruction
2149 // CHECK-ERROR: uaddl2 v0.4s, v1.8s, v2.8h
2151 // CHECK-ERROR: error: invalid operand for instruction
2152 // CHECK-ERROR: uaddl2 v0.2d, v1.4d, v2.4s
2155 ssubl v0.8h, v1.8h, v2.8b
2156 ssubl v0.4s, v1.4s, v2.4h
2157 ssubl v0.2d, v1.2d, v2.2s
2159 // CHECK-ERROR: error: invalid operand for instruction
2160 // CHECK-ERROR: ssubl v0.8h, v1.8h, v2.8b
2162 // CHECK-ERROR: error: invalid operand for instruction
2163 // CHECK-ERROR: ssubl v0.4s, v1.4s, v2.4h
2165 // CHECK-ERROR: error: invalid operand for instruction
2166 // CHECK-ERROR: ssubl v0.2d, v1.2d, v2.2s
2169 ssubl2 v0.8h, v1.16h, v2.16b
2170 ssubl2 v0.4s, v1.8s, v2.8h
2171 ssubl2 v0.2d, v1.4d, v2.4s
2173 // CHECK-ERROR: error: invalid operand for instruction
2174 // CHECK-ERROR: ssubl2 v0.8h, v1.16h, v2.16b
2176 // CHECK-ERROR: error: invalid operand for instruction
2177 // CHECK-ERROR: ssubl2 v0.4s, v1.8s, v2.8h
2179 // CHECK-ERROR: error: invalid operand for instruction
2180 // CHECK-ERROR: ssubl2 v0.2d, v1.4d, v2.4s
2183 usubl v0.8h, v1.8h, v2.8b
2184 usubl v0.4s, v1.4s, v2.4h
2185 usubl v0.2d, v1.2d, v2.2s
2187 // CHECK-ERROR: error: invalid operand for instruction
2188 // CHECK-ERROR: usubl v0.8h, v1.8h, v2.8b
2190 // CHECK-ERROR: error: invalid operand for instruction
2191 // CHECK-ERROR: usubl v0.4s, v1.4s, v2.4h
2193 // CHECK-ERROR: error: invalid operand for instruction
2194 // CHECK-ERROR: usubl v0.2d, v1.2d, v2.2s
2197 usubl2 v0.8h, v1.16h, v2.16b
2198 usubl2 v0.4s, v1.8s, v2.8h
2199 usubl2 v0.2d, v1.4d, v2.4s
2201 // CHECK-ERROR: error: invalid operand for instruction
2202 // CHECK-ERROR: usubl2 v0.8h, v1.16h, v2.16b
2204 // CHECK-ERROR: error: invalid operand for instruction
2205 // CHECK-ERROR: usubl2 v0.4s, v1.8s, v2.8h
2207 // CHECK-ERROR: error: invalid operand for instruction
2208 // CHECK-ERROR: usubl2 v0.2d, v1.4d, v2.4s
2211 sabal v0.8h, v1.8h, v2.8b
2212 sabal v0.4s, v1.4s, v2.4h
2213 sabal v0.2d, v1.2d, v2.2s
2215 // CHECK-ERROR: error: invalid operand for instruction
2216 // CHECK-ERROR: sabal v0.8h, v1.8h, v2.8b
2218 // CHECK-ERROR: error: invalid operand for instruction
2219 // CHECK-ERROR: sabal v0.4s, v1.4s, v2.4h
2221 // CHECK-ERROR: error: invalid operand for instruction
2222 // CHECK-ERROR: sabal v0.2d, v1.2d, v2.2s
2225 sabal2 v0.8h, v1.16h, v2.16b
2226 sabal2 v0.4s, v1.8s, v2.8h
2227 sabal2 v0.2d, v1.4d, v2.4s
2229 // CHECK-ERROR: error: invalid operand for instruction
2230 // CHECK-ERROR: sabal2 v0.8h, v1.16h, v2.16b
2232 // CHECK-ERROR: error: invalid operand for instruction
2233 // CHECK-ERROR: sabal2 v0.4s, v1.8s, v2.8h
2235 // CHECK-ERROR: error: invalid operand for instruction
2236 // CHECK-ERROR: sabal2 v0.2d, v1.4d, v2.4s
2239 uabal v0.8h, v1.8h, v2.8b
2240 uabal v0.4s, v1.4s, v2.4h
2241 uabal v0.2d, v1.2d, v2.2s
2243 // CHECK-ERROR: error: invalid operand for instruction
2244 // CHECK-ERROR: uabal v0.8h, v1.8h, v2.8b
2246 // CHECK-ERROR: error: invalid operand for instruction
2247 // CHECK-ERROR: uabal v0.4s, v1.4s, v2.4h
2249 // CHECK-ERROR: error: invalid operand for instruction
2250 // CHECK-ERROR: uabal v0.2d, v1.2d, v2.2s
2253 uabal2 v0.8h, v1.16h, v2.16b
2254 uabal2 v0.4s, v1.8s, v2.8h
2255 uabal2 v0.2d, v1.4d, v2.4s
2257 // CHECK-ERROR: error: invalid operand for instruction
2258 // CHECK-ERROR: uabal2 v0.8h, v1.16h, v2.16b
2260 // CHECK-ERROR: error: invalid operand for instruction
2261 // CHECK-ERROR: uabal2 v0.4s, v1.8s, v2.8h
2263 // CHECK-ERROR: error: invalid operand for instruction
2264 // CHECK-ERROR: uabal2 v0.2d, v1.4d, v2.4s
2267 sabdl v0.8h, v1.8h, v2.8b
2268 sabdl v0.4s, v1.4s, v2.4h
2269 sabdl v0.2d, v1.2d, v2.2s
2271 // CHECK-ERROR: error: invalid operand for instruction
2272 // CHECK-ERROR: sabdl v0.8h, v1.8h, v2.8b
2274 // CHECK-ERROR: error: invalid operand for instruction
2275 // CHECK-ERROR: sabdl v0.4s, v1.4s, v2.4h
2277 // CHECK-ERROR: error: invalid operand for instruction
2278 // CHECK-ERROR: sabdl v0.2d, v1.2d, v2.2s
2281 sabdl2 v0.8h, v1.16h, v2.16b
2282 sabdl2 v0.4s, v1.8s, v2.8h
2283 sabdl2 v0.2d, v1.4d, v2.4s
2285 // CHECK-ERROR: error: invalid operand for instruction
2286 // CHECK-ERROR: sabdl2 v0.8h, v1.16h, v2.16b
2288 // CHECK-ERROR: error: invalid operand for instruction
2289 // CHECK-ERROR: sabdl2 v0.4s, v1.8s, v2.8h
2291 // CHECK-ERROR: error: invalid operand for instruction
2292 // CHECK-ERROR: sabdl2 v0.2d, v1.4d, v2.4s
2295 uabdl v0.8h, v1.8h, v2.8b
2296 uabdl v0.4s, v1.4s, v2.4h
2297 uabdl v0.2d, v1.2d, v2.2s
2299 // CHECK-ERROR: error: invalid operand for instruction
2300 // CHECK-ERROR: uabdl v0.8h, v1.8h, v2.8b
2302 // CHECK-ERROR: error: invalid operand for instruction
2303 // CHECK-ERROR: uabdl v0.4s, v1.4s, v2.4h
2305 // CHECK-ERROR: error: invalid operand for instruction
2306 // CHECK-ERROR: uabdl v0.2d, v1.2d, v2.2s
2309 uabdl2 v0.8h, v1.16h, v2.16b
2310 uabdl2 v0.4s, v1.8s, v2.8h
2311 uabdl2 v0.2d, v1.4d, v2.4s
2313 // CHECK-ERROR: error: invalid operand for instruction
2314 // CHECK-ERROR: uabdl2 v0.8h, v1.16h, v2.16b
2316 // CHECK-ERROR: error: invalid operand for instruction
2317 // CHECK-ERROR: uabdl2 v0.4s, v1.8s, v2.8h
2319 // CHECK-ERROR: error: invalid operand for instruction
2320 // CHECK-ERROR: uabdl2 v0.2d, v1.4d, v2.4s
2323 smlal v0.8h, v1.8h, v2.8b
2324 smlal v0.4s, v1.4s, v2.4h
2325 smlal v0.2d, v1.2d, v2.2s
2327 // CHECK-ERROR: error: invalid operand for instruction
2328 // CHECK-ERROR: smlal v0.8h, v1.8h, v2.8b
2330 // CHECK-ERROR: error: invalid operand for instruction
2331 // CHECK-ERROR: smlal v0.4s, v1.4s, v2.4h
2333 // CHECK-ERROR: error: invalid operand for instruction
2334 // CHECK-ERROR: smlal v0.2d, v1.2d, v2.2s
2337 smlal2 v0.8h, v1.16h, v2.16b
2338 smlal2 v0.4s, v1.8s, v2.8h
2339 smlal2 v0.2d, v1.4d, v2.4s
2341 // CHECK-ERROR: error: invalid operand for instruction
2342 // CHECK-ERROR: smlal2 v0.8h, v1.16h, v2.16b
2344 // CHECK-ERROR: error: invalid operand for instruction
2345 // CHECK-ERROR: smlal2 v0.4s, v1.8s, v2.8h
2347 // CHECK-ERROR: error: invalid operand for instruction
2348 // CHECK-ERROR: smlal2 v0.2d, v1.4d, v2.4s
2351 umlal v0.8h, v1.8h, v2.8b
2352 umlal v0.4s, v1.4s, v2.4h
2353 umlal v0.2d, v1.2d, v2.2s
2355 // CHECK-ERROR: error: invalid operand for instruction
2356 // CHECK-ERROR: umlal v0.8h, v1.8h, v2.8b
2358 // CHECK-ERROR: error: invalid operand for instruction
2359 // CHECK-ERROR: umlal v0.4s, v1.4s, v2.4h
2361 // CHECK-ERROR: error: invalid operand for instruction
2362 // CHECK-ERROR: umlal v0.2d, v1.2d, v2.2s
2365 umlal2 v0.8h, v1.16h, v2.16b
2366 umlal2 v0.4s, v1.8s, v2.8h
2367 umlal2 v0.2d, v1.4d, v2.4s
2369 // CHECK-ERROR: error: invalid operand for instruction
2370 // CHECK-ERROR: umlal2 v0.8h, v1.16h, v2.16b
2372 // CHECK-ERROR: error: invalid operand for instruction
2373 // CHECK-ERROR: umlal2 v0.4s, v1.8s, v2.8h
2375 // CHECK-ERROR: error: invalid operand for instruction
2376 // CHECK-ERROR: umlal2 v0.2d, v1.4d, v2.4s
2379 smlsl v0.8h, v1.8h, v2.8b
2380 smlsl v0.4s, v1.4s, v2.4h
2381 smlsl v0.2d, v1.2d, v2.2s
2383 // CHECK-ERROR: error: invalid operand for instruction
2384 // CHECK-ERROR: smlsl v0.8h, v1.8h, v2.8b
2386 // CHECK-ERROR: error: invalid operand for instruction
2387 // CHECK-ERROR: smlsl v0.4s, v1.4s, v2.4h
2389 // CHECK-ERROR: error: invalid operand for instruction
2390 // CHECK-ERROR: smlsl v0.2d, v1.2d, v2.2s
2393 smlsl2 v0.8h, v1.16h, v2.16b
2394 smlsl2 v0.4s, v1.8s, v2.8h
2395 smlsl2 v0.2d, v1.4d, v2.4s
2397 // CHECK-ERROR: error: invalid operand for instruction
2398 // CHECK-ERROR: smlsl2 v0.8h, v1.16h, v2.16b
2400 // CHECK-ERROR: error: invalid operand for instruction
2401 // CHECK-ERROR: smlsl2 v0.4s, v1.8s, v2.8h
2403 // CHECK-ERROR: error: invalid operand for instruction
2404 // CHECK-ERROR: smlsl2 v0.2d, v1.4d, v2.4s
2407 umlsl v0.8h, v1.8h, v2.8b
2408 umlsl v0.4s, v1.4s, v2.4h
2409 umlsl v0.2d, v1.2d, v2.2s
2411 // CHECK-ERROR: error: invalid operand for instruction
2412 // CHECK-ERROR: umlsl v0.8h, v1.8h, v2.8b
2414 // CHECK-ERROR: error: invalid operand for instruction
2415 // CHECK-ERROR: umlsl v0.4s, v1.4s, v2.4h
2417 // CHECK-ERROR: error: invalid operand for instruction
2418 // CHECK-ERROR: umlsl v0.2d, v1.2d, v2.2s
2421 umlsl2 v0.8h, v1.16h, v2.16b
2422 umlsl2 v0.4s, v1.8s, v2.8h
2423 umlsl2 v0.2d, v1.4d, v2.4s
2425 // CHECK-ERROR: error: invalid operand for instruction
2426 // CHECK-ERROR: umlsl2 v0.8h, v1.16h, v2.16b
2428 // CHECK-ERROR: error: invalid operand for instruction
2429 // CHECK-ERROR: umlsl2 v0.4s, v1.8s, v2.8h
2431 // CHECK-ERROR: error: invalid operand for instruction
2432 // CHECK-ERROR: umlsl2 v0.2d, v1.4d, v2.4s
2435 smull v0.8h, v1.8h, v2.8b
2436 smull v0.4s, v1.4s, v2.4h
2437 smull v0.2d, v1.2d, v2.2s
2439 // CHECK-ERROR: error: invalid operand for instruction
2440 // CHECK-ERROR: smull v0.8h, v1.8h, v2.8b
2442 // CHECK-ERROR: error: invalid operand for instruction
2443 // CHECK-ERROR: smull v0.4s, v1.4s, v2.4h
2445 // CHECK-ERROR: error: invalid operand for instruction
2446 // CHECK-ERROR: smull v0.2d, v1.2d, v2.2s
2449 smull2 v0.8h, v1.16h, v2.16b
2450 smull2 v0.4s, v1.8s, v2.8h
2451 smull2 v0.2d, v1.4d, v2.4s
2453 // CHECK-ERROR: error: invalid operand for instruction
2454 // CHECK-ERROR: smull2 v0.8h, v1.16h, v2.16b
2456 // CHECK-ERROR: error: invalid operand for instruction
2457 // CHECK-ERROR: smull2 v0.4s, v1.8s, v2.8h
2459 // CHECK-ERROR: error: invalid operand for instruction
2460 // CHECK-ERROR: smull2 v0.2d, v1.4d, v2.4s
2463 umull v0.8h, v1.8h, v2.8b
2464 umull v0.4s, v1.4s, v2.4h
2465 umull v0.2d, v1.2d, v2.2s
2467 // CHECK-ERROR: error: invalid operand for instruction
2468 // CHECK-ERROR: umull v0.8h, v1.8h, v2.8b
2470 // CHECK-ERROR: error: invalid operand for instruction
2471 // CHECK-ERROR: umull v0.4s, v1.4s, v2.4h
2473 // CHECK-ERROR: error: invalid operand for instruction
2474 // CHECK-ERROR: umull v0.2d, v1.2d, v2.2s
2477 umull2 v0.8h, v1.16h, v2.16b
2478 umull2 v0.4s, v1.8s, v2.8h
2479 umull2 v0.2d, v1.4d, v2.4s
2481 // CHECK-ERROR: error: invalid operand for instruction
2482 // CHECK-ERROR: umull2 v0.8h, v1.16h, v2.16b
2484 // CHECK-ERROR: error: invalid operand for instruction
2485 // CHECK-ERROR: umull2 v0.4s, v1.8s, v2.8h
2487 // CHECK-ERROR: error: invalid operand for instruction
2488 // CHECK-ERROR: umull2 v0.2d, v1.4d, v2.4s
2491 //------------------------------------------------------------------------------
2493 //------------------------------------------------------------------------------
2495 sqdmlal v0.4s, v1.4s, v2.4h
2496 sqdmlal v0.2d, v1.2d, v2.2s
2498 // CHECK-ERROR: error: invalid operand for instruction
2499 // CHECK-ERROR: sqdmlal v0.4s, v1.4s, v2.4h
2501 // CHECK-ERROR: error: invalid operand for instruction
2502 // CHECK-ERROR: sqdmlal v0.2d, v1.2d, v2.2s
2505 sqdmlal2 v0.4s, v1.8s, v2.8h
2506 sqdmlal2 v0.2d, v1.4d, v2.4s
2508 // CHECK-ERROR: error: invalid operand for instruction
2509 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8s, v2.8h
2511 // CHECK-ERROR: error: invalid operand for instruction
2512 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4d, v2.4s
2515 // Mismatched vector types
2516 sqdmlal v0.8h, v1.8b, v2.8b
2517 sqdmlal2 v0.8h, v1.16b, v2.16b
2519 // CHECK-ERROR: error: invalid operand for instruction
2520 // CHECK-ERROR: sqdmlal v0.8h, v1.8b, v2.8b
2522 // CHECK-ERROR: error: invalid operand for instruction
2523 // CHECK-ERROR: sqdmlal2 v0.8h, v1.16b, v2.16b
2526 sqdmlsl v0.4s, v1.4s, v2.4h
2527 sqdmlsl v0.2d, v1.2d, v2.2s
2529 // CHECK-ERROR: error: invalid operand for instruction
2530 // CHECK-ERROR: sqdmlsl v0.4s, v1.4s, v2.4h
2532 // CHECK-ERROR: error: invalid operand for instruction
2533 // CHECK-ERROR: sqdmlsl v0.2d, v1.2d, v2.2s
2536 sqdmlsl2 v0.4s, v1.8s, v2.8h
2537 sqdmlsl2 v0.2d, v1.4d, v2.4s
2539 // CHECK-ERROR: error: invalid operand for instruction
2540 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8s, v2.8h
2542 // CHECK-ERROR: error: invalid operand for instruction
2543 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4d, v2.4s
2546 // Mismatched vector types
2547 sqdmlsl v0.8h, v1.8b, v2.8b
2548 sqdmlsl2 v0.8h, v1.16b, v2.16b
2550 // CHECK-ERROR: error: invalid operand for instruction
2551 // CHECK-ERROR: sqdmlsl v0.8h, v1.8b, v2.8b
2553 // CHECK-ERROR: error: invalid operand for instruction
2554 // CHECK-ERROR: sqdmlsl2 v0.8h, v1.16b, v2.16b
2558 sqdmull v0.4s, v1.4s, v2.4h
2559 sqdmull v0.2d, v1.2d, v2.2s
2561 // CHECK-ERROR: error: invalid operand for instruction
2562 // CHECK-ERROR: sqdmull v0.4s, v1.4s, v2.4h
2564 // CHECK-ERROR: error: invalid operand for instruction
2565 // CHECK-ERROR: sqdmull v0.2d, v1.2d, v2.2s
2568 sqdmull2 v0.4s, v1.8s, v2.8h
2569 sqdmull2 v0.2d, v1.4d, v2.4s
2571 // CHECK-ERROR: error: invalid operand for instruction
2572 // CHECK-ERROR: sqdmull2 v0.4s, v1.8s, v2.8h
2574 // CHECK-ERROR: error: invalid operand for instruction
2575 // CHECK-ERROR: sqdmull2 v0.2d, v1.4d, v2.4s
2578 // Mismatched vector types
2579 sqdmull v0.8h, v1.8b, v2.8b
2580 sqdmull2 v0.8h, v1.16b, v2.16b
2582 // CHECK-ERROR: error: invalid operand for instruction
2583 // CHECK-ERROR: sqdmull v0.8h, v1.8b, v2.8b
2585 // CHECK-ERROR: error: invalid operand for instruction
2586 // CHECK-ERROR: sqdmull2 v0.8h, v1.16b, v2.16b
2590 //------------------------------------------------------------------------------
2592 //------------------------------------------------------------------------------
2594 pmull v0.8h, v1.8h, v2.8b
2596 // CHECK-ERROR: error: invalid operand for instruction
2597 // CHECK-ERROR: pmull v0.8h, v1.8h, v2.8b
2600 pmull v0.1q, v1.2d, v2.2d
2602 // CHECK-ERROR: error: invalid operand for instruction
2603 // CHECK-ERROR: pmull v0.1q, v1.2d, v2.2d
2606 // Mismatched vector types
2607 pmull v0.4s, v1.4h, v2.4h
2608 pmull v0.2d, v1.2s, v2.2s
2610 // CHECK-ERROR: error: invalid operand for instruction
2611 // CHECK-ERROR: pmull v0.4s, v1.4h, v2.4h
2613 // CHECK-ERROR: error: invalid operand for instruction
2614 // CHECK-ERROR: pmull v0.2d, v1.2s, v2.2s
2618 pmull2 v0.8h, v1.16h, v2.16b
2620 // CHECK-ERROR: error: invalid operand for instruction
2621 // CHECK-ERROR: pmull2 v0.8h, v1.16h, v2.16b
2624 pmull2 v0.q, v1.2d, v2.2d
2626 // CHECK-ERROR: error: invalid operand for instruction
2627 // CHECK-ERROR: pmull2 v0.q, v1.2d, v2.2d
2630 // Mismatched vector types
2631 pmull2 v0.4s, v1.8h v2.8h
2632 pmull2 v0.2d, v1.4s, v2.4s
2635 // CHECK-ERROR: error: unexpected token in argument list
2636 // CHECK-ERROR: pmull2 v0.4s, v1.8h v2.8h
2639 // CHECK-ERROR: error: invalid operand for instruction
2640 // CHECK-ERROR: pmull2 v0.2d, v1.4s, v2.4s
2643 //------------------------------------------------------------------------------
2645 //------------------------------------------------------------------------------
2647 saddw v0.8h, v1.8h, v2.8h
2648 saddw v0.4s, v1.4s, v2.4s
2649 saddw v0.2d, v1.2d, v2.2d
2651 // CHECK-ERROR: error: invalid operand for instruction
2652 // CHECK-ERROR: saddw v0.8h, v1.8h, v2.8h
2654 // CHECK-ERROR: error: invalid operand for instruction
2655 // CHECK-ERROR: saddw v0.4s, v1.4s, v2.4s
2657 // CHECK-ERROR: error: invalid operand for instruction
2658 // CHECK-ERROR: saddw v0.2d, v1.2d, v2.2d
2661 saddw2 v0.8h, v1.8h, v2.16h
2662 saddw2 v0.4s, v1.4s, v2.8s
2663 saddw2 v0.2d, v1.2d, v2.4d
2665 // CHECK-ERROR: error: invalid operand for instruction
2666 // CHECK-ERROR: saddw2 v0.8h, v1.8h, v2.16h
2668 // CHECK-ERROR: error: invalid operand for instruction
2669 // CHECK-ERROR: saddw2 v0.4s, v1.4s, v2.8s
2671 // CHECK-ERROR: error: invalid operand for instruction
2672 // CHECK-ERROR: saddw2 v0.2d, v1.2d, v2.4d
2675 uaddw v0.8h, v1.8h, v2.8h
2676 uaddw v0.4s, v1.4s, v2.4s
2677 uaddw v0.2d, v1.2d, v2.2d
2679 // CHECK-ERROR: error: invalid operand for instruction
2680 // CHECK-ERROR: uaddw v0.8h, v1.8h, v2.8h
2682 // CHECK-ERROR: error: invalid operand for instruction
2683 // CHECK-ERROR: uaddw v0.4s, v1.4s, v2.4s
2685 // CHECK-ERROR: error: invalid operand for instruction
2686 // CHECK-ERROR: uaddw v0.2d, v1.2d, v2.2d
2689 uaddw2 v0.8h, v1.8h, v2.16h
2690 uaddw2 v0.4s, v1.4s, v2.8s
2691 uaddw2 v0.2d, v1.2d, v2.4d
2693 // CHECK-ERROR: error: invalid operand for instruction
2694 // CHECK-ERROR: uaddw2 v0.8h, v1.8h, v2.16h
2696 // CHECK-ERROR: error: invalid operand for instruction
2697 // CHECK-ERROR: uaddw2 v0.4s, v1.4s, v2.8s
2699 // CHECK-ERROR: error: invalid operand for instruction
2700 // CHECK-ERROR: uaddw2 v0.2d, v1.2d, v2.4d
2703 ssubw v0.8h, v1.8h, v2.8h
2704 ssubw v0.4s, v1.4s, v2.4s
2705 ssubw v0.2d, v1.2d, v2.2d
2707 // CHECK-ERROR: error: invalid operand for instruction
2708 // CHECK-ERROR: ssubw v0.8h, v1.8h, v2.8h
2710 // CHECK-ERROR: error: invalid operand for instruction
2711 // CHECK-ERROR: ssubw v0.4s, v1.4s, v2.4s
2713 // CHECK-ERROR: error: invalid operand for instruction
2714 // CHECK-ERROR: ssubw v0.2d, v1.2d, v2.2d
2717 ssubw2 v0.8h, v1.8h, v2.16h
2718 ssubw2 v0.4s, v1.4s, v2.8s
2719 ssubw2 v0.2d, v1.2d, v2.4d
2721 // CHECK-ERROR: error: invalid operand for instruction
2722 // CHECK-ERROR: ssubw2 v0.8h, v1.8h, v2.16h
2724 // CHECK-ERROR: error: invalid operand for instruction
2725 // CHECK-ERROR: ssubw2 v0.4s, v1.4s, v2.8s
2727 // CHECK-ERROR: error: invalid operand for instruction
2728 // CHECK-ERROR: ssubw2 v0.2d, v1.2d, v2.4d
2731 usubw v0.8h, v1.8h, v2.8h
2732 usubw v0.4s, v1.4s, v2.4s
2733 usubw v0.2d, v1.2d, v2.2d
2735 // CHECK-ERROR: error: invalid operand for instruction
2736 // CHECK-ERROR: usubw v0.8h, v1.8h, v2.8h
2738 // CHECK-ERROR: error: invalid operand for instruction
2739 // CHECK-ERROR: usubw v0.4s, v1.4s, v2.4s
2741 // CHECK-ERROR: error: invalid operand for instruction
2742 // CHECK-ERROR: usubw v0.2d, v1.2d, v2.2d
2745 usubw2 v0.8h, v1.8h, v2.16h
2746 usubw2 v0.4s, v1.4s, v2.8s
2747 usubw2 v0.2d, v1.2d, v2.4d
2749 // CHECK-ERROR: error: invalid operand for instruction
2750 // CHECK-ERROR: usubw2 v0.8h, v1.8h, v2.16h
2752 // CHECK-ERROR: error: invalid operand for instruction
2753 // CHECK-ERROR: usubw2 v0.4s, v1.4s, v2.8s
2755 // CHECK-ERROR: error: invalid operand for instruction
2756 // CHECK-ERROR: usubw2 v0.2d, v1.2d, v2.4d
2759 //------------------------------------------------------------------------------
2761 //------------------------------------------------------------------------------
2763 addhn v0.8b, v1.8h, v2.8d
2764 addhn v0.4h, v1.4s, v2.4h
2765 addhn v0.2s, v1.2d, v2.2s
2767 // CHECK-ERROR: error: invalid operand for instruction
2768 // CHECK-ERROR: addhn v0.8b, v1.8h, v2.8d
2770 // CHECK-ERROR: error: invalid operand for instruction
2771 // CHECK-ERROR: addhn v0.4h, v1.4s, v2.4h
2773 // CHECK-ERROR: error: invalid operand for instruction
2774 // CHECK-ERROR: addhn v0.2s, v1.2d, v2.2s
2777 addhn2 v0.16b, v1.8h, v2.8b
2778 addhn2 v0.8h, v1.4s, v2.4h
2779 addhn2 v0.4s, v1.2d, v2.2s
2781 // CHECK-ERROR: error: invalid operand for instruction
2782 // CHECK-ERROR: addhn2 v0.16b, v1.8h, v2.8b
2784 // CHECK-ERROR: error: invalid operand for instruction
2785 // CHECK-ERROR: addhn2 v0.8h, v1.4s, v2.4h
2787 // CHECK-ERROR: error: invalid operand for instruction
2788 // CHECK-ERROR: addhn2 v0.4s, v1.2d, v2.2s
2791 raddhn v0.8b, v1.8h, v2.8b
2792 raddhn v0.4h, v1.4s, v2.4h
2793 raddhn v0.2s, v1.2d, v2.2s
2795 // CHECK-ERROR: error: invalid operand for instruction
2796 // CHECK-ERROR: raddhn v0.8b, v1.8h, v2.8b
2798 // CHECK-ERROR: error: invalid operand for instruction
2799 // CHECK-ERROR: raddhn v0.4h, v1.4s, v2.4h
2801 // CHECK-ERROR: error: invalid operand for instruction
2802 // CHECK-ERROR: raddhn v0.2s, v1.2d, v2.2s
2805 raddhn2 v0.16b, v1.8h, v2.8b
2806 raddhn2 v0.8h, v1.4s, v2.4h
2807 raddhn2 v0.4s, v1.2d, v2.2s
2809 // CHECK-ERROR: error: invalid operand for instruction
2810 // CHECK-ERROR: raddhn2 v0.16b, v1.8h, v2.8b
2812 // CHECK-ERROR: error: invalid operand for instruction
2813 // CHECK-ERROR: raddhn2 v0.8h, v1.4s, v2.4h
2815 // CHECK-ERROR: error: invalid operand for instruction
2816 // CHECK-ERROR: raddhn2 v0.4s, v1.2d, v2.2s
2819 rsubhn v0.8b, v1.8h, v2.8b
2820 rsubhn v0.4h, v1.4s, v2.4h
2821 rsubhn v0.2s, v1.2d, v2.2s
2823 // CHECK-ERROR: error: invalid operand for instruction
2824 // CHECK-ERROR: rsubhn v0.8b, v1.8h, v2.8b
2826 // CHECK-ERROR: error: invalid operand for instruction
2827 // CHECK-ERROR: rsubhn v0.4h, v1.4s, v2.4h
2829 // CHECK-ERROR: error: invalid operand for instruction
2830 // CHECK-ERROR: rsubhn v0.2s, v1.2d, v2.2s
2833 rsubhn2 v0.16b, v1.8h, v2.8b
2834 rsubhn2 v0.8h, v1.4s, v2.4h
2835 rsubhn2 v0.4s, v1.2d, v2.2s
2837 // CHECK-ERROR: error: invalid operand for instruction
2838 // CHECK-ERROR: rsubhn2 v0.16b, v1.8h, v2.8b
2840 // CHECK-ERROR: error: invalid operand for instruction
2841 // CHECK-ERROR: rsubhn2 v0.8h, v1.4s, v2.4h
2843 // CHECK-ERROR: error: invalid operand for instruction
2844 // CHECK-ERROR: rsubhn2 v0.4s, v1.2d, v2.2s
2847 //----------------------------------------------------------------------
2848 // Scalar Reduce Add Pairwise (Integer)
2849 //----------------------------------------------------------------------
2850 // invalid vector types
2854 // CHECK-ERROR: error: invalid operand for instruction
2855 // CHECK-ERROR: addp s0, d1.2d
2857 // CHECK-ERROR: error: invalid operand for instruction
2858 // CHECK-ERROR: addp d0, d1.2s
2861 //----------------------------------------------------------------------
2862 // Scalar Reduce Add Pairwise (Floating Point)
2863 //----------------------------------------------------------------------
2864 // invalid vector types
2868 // CHECK-ERROR: error: invalid operand for instruction
2869 // CHECK-ERROR: faddp s0, d1.2d
2871 // CHECK-ERROR: error: invalid operand for instruction
2872 // CHECK-ERROR: faddp d0, d1.2s
2875 //----------------------------------------------------------------------
2876 // Scalar Reduce Maximum Pairwise (Floating Point)
2877 //----------------------------------------------------------------------
2878 // mismatched and invalid vector types
2883 // CHECK-ERROR: error: invalid operand for instruction
2884 // CHECK-ERROR: fmaxp s0, v1.2d
2886 // CHECK-ERROR: error: invalid operand for instruction
2887 // CHECK-ERROR: fmaxp d31, v2.2s
2889 // CHECK-ERROR: error: invalid operand for instruction
2890 // CHECK-ERROR: fmaxp h3, v2.2s
2894 //----------------------------------------------------------------------
2895 // Scalar Reduce Minimum Pairwise (Floating Point)
2896 //----------------------------------------------------------------------
2897 // mismatched and invalid vector types
2902 // CHECK-ERROR: error: invalid operand for instruction
2903 // CHECK-ERROR: fminp s0, v1.4h
2905 // CHECK-ERROR: error: invalid operand for instruction
2906 // CHECK-ERROR: fminp d31, v2.8h
2908 // CHECK-ERROR: error: invalid operand for instruction
2909 // CHECK-ERROR: fminp b3, v2.2s
2913 //----------------------------------------------------------------------
2914 // Scalar Reduce maxNum Pairwise (Floating Point)
2915 //----------------------------------------------------------------------
2916 // mismatched and invalid vector types
2919 fmaxnmp v1.2s, v2.2s
2921 // CHECK-ERROR: error: invalid operand for instruction
2922 // CHECK-ERROR: fmaxnmp s0, v1.8b
2924 // CHECK-ERROR: error: invalid operand for instruction
2925 // CHECK-ERROR: fmaxnmp d31, v2.16b
2927 // CHECK-ERROR: error: too few operands for instruction
2928 // CHECK-ERROR: fmaxnmp v1.2s, v2.2s
2931 //----------------------------------------------------------------------
2932 // Scalar Reduce minNum Pairwise (Floating Point)
2933 //----------------------------------------------------------------------
2934 // mismatched and invalid vector types
2937 fminnmp v1.4s, v2.2d
2939 // CHECK-ERROR: error: invalid operand for instruction
2940 // CHECK-ERROR: fminnmp s0, v1.2d
2942 // CHECK-ERROR: error: invalid operand for instruction
2943 // CHECK-ERROR: fminnmp d31, v2.4s
2945 // CHECK-ERROR: error: invalid operand for instruction
2946 // CHECK-ERROR: fminnmp v1.4s, v2.2d
2949 mla v0.2d, v1.2d, v16.d[1]
2950 mla v0.2s, v1.2s, v2.s[4]
2951 mla v0.4s, v1.4s, v2.s[4]
2952 mla v0.2h, v1.2h, v2.h[1]
2953 mla v0.4h, v1.4h, v2.h[8]
2954 mla v0.8h, v1.8h, v2.h[8]
2955 mla v0.4h, v1.4h, v16.h[2]
2956 mla v0.8h, v1.8h, v16.h[2]
2958 // CHECK-ERROR: error: invalid operand for instruction
2959 // CHECK-ERROR: mla v0.2d, v1.2d, v16.d[1]
2961 // CHECK-ERROR: vector lane must be an integer in range
2962 // CHECK-ERROR: mla v0.2s, v1.2s, v2.s[4]
2964 // CHECK-ERROR: vector lane must be an integer in range
2965 // CHECK-ERROR: mla v0.4s, v1.4s, v2.s[4]
2967 // CHECK-ERROR: error: invalid operand for instruction
2968 // CHECK-ERROR: mla v0.2h, v1.2h, v2.h[1]
2970 // CHECK-ERROR: vector lane must be an integer in range
2971 // CHECK-ERROR: mla v0.4h, v1.4h, v2.h[8]
2973 // CHECK-ERROR: vector lane must be an integer in range
2974 // CHECK-ERROR: mla v0.8h, v1.8h, v2.h[8]
2976 // CHECK-ERROR: error: invalid operand for instruction
2977 // CHECK-ERROR: mla v0.4h, v1.4h, v16.h[2]
2979 // CHECK-ERROR: error: invalid operand for instruction
2980 // CHECK-ERROR: mla v0.8h, v1.8h, v16.h[2]
2983 mls v0.2d, v1.2d, v16.d[1]
2984 mls v0.2s, v1.2s, v2.s[4]
2985 mls v0.4s, v1.4s, v2.s[4]
2986 mls v0.2h, v1.2h, v2.h[1]
2987 mls v0.4h, v1.4h, v2.h[8]
2988 mls v0.8h, v1.8h, v2.h[8]
2989 mls v0.4h, v1.4h, v16.h[2]
2990 mls v0.8h, v1.8h, v16.h[2]
2992 // CHECK-ERROR: error: invalid operand for instruction
2993 // CHECK-ERROR: mls v0.2d, v1.2d, v16.d[1]
2995 // CHECK-ERROR: vector lane must be an integer in range
2996 // CHECK-ERROR: mls v0.2s, v1.2s, v2.s[4]
2998 // CHECK-ERROR: vector lane must be an integer in range
2999 // CHECK-ERROR: mls v0.4s, v1.4s, v2.s[4]
3001 // CHECK-ERROR: error: invalid operand for instruction
3002 // CHECK-ERROR: mls v0.2h, v1.2h, v2.h[1]
3004 // CHECK-ERROR: vector lane must be an integer in range
3005 // CHECK-ERROR: mls v0.4h, v1.4h, v2.h[8]
3007 // CHECK-ERROR: vector lane must be an integer in range
3008 // CHECK-ERROR: mls v0.8h, v1.8h, v2.h[8]
3010 // CHECK-ERROR: error: invalid operand for instruction
3011 // CHECK-ERROR: mls v0.4h, v1.4h, v16.h[2]
3013 // CHECK-ERROR: error: invalid operand for instruction
3014 // CHECK-ERROR: mls v0.8h, v1.8h, v16.h[2]
3017 fmla v0.4h, v1.4h, v2.h[2]
3018 fmla v0.8h, v1.8h, v2.h[2]
3019 fmla v0.2s, v1.2s, v2.s[4]
3020 fmla v0.2s, v1.2s, v22.s[4]
3021 fmla v3.4s, v8.4s, v2.s[4]
3022 fmla v3.4s, v8.4s, v22.s[4]
3023 fmla v0.2d, v1.2d, v2.d[2]
3024 fmla v0.2d, v1.2d, v22.d[2]
3026 // CHECK-ERROR: error: invalid operand for instruction
3027 // CHECK-ERROR: fmla v0.4h, v1.4h, v2.h[2]
3029 // CHECK-ERROR: error: invalid operand for instruction
3030 // CHECK-ERROR: fmla v0.8h, v1.8h, v2.h[2]
3032 // CHECK-ERROR: vector lane must be an integer in range
3033 // CHECK-ERROR: fmla v0.2s, v1.2s, v2.s[4]
3035 // CHECK-ERROR: vector lane must be an integer in range
3036 // CHECK-ERROR: fmla v0.2s, v1.2s, v22.s[4]
3038 // CHECK-ERROR: vector lane must be an integer in range
3039 // CHECK-ERROR: fmla v3.4s, v8.4s, v2.s[4]
3041 // CHECK-ERROR: vector lane must be an integer in range
3042 // CHECK-ERROR: fmla v3.4s, v8.4s, v22.s[4]
3044 // CHECK-ERROR: vector lane must be an integer in range
3045 // CHECK-ERROR: fmla v0.2d, v1.2d, v2.d[2]
3047 // CHECK-ERROR: vector lane must be an integer in range
3048 // CHECK-ERROR: fmla v0.2d, v1.2d, v22.d[2]
3051 fmls v0.4h, v1.4h, v2.h[2]
3052 fmls v0.8h, v1.8h, v2.h[2]
3053 fmls v0.2s, v1.2s, v2.s[4]
3054 fmls v0.2s, v1.2s, v22.s[4]
3055 fmls v3.4s, v8.4s, v2.s[4]
3056 fmls v3.4s, v8.4s, v22.s[4]
3057 fmls v0.2d, v1.2d, v2.d[2]
3058 fmls v0.2d, v1.2d, v22.d[2]
3060 // CHECK-ERROR: error: invalid operand for instruction
3061 // CHECK-ERROR: fmls v0.4h, v1.4h, v2.h[2]
3063 // CHECK-ERROR: error: invalid operand for instruction
3064 // CHECK-ERROR: fmls v0.8h, v1.8h, v2.h[2]
3066 // CHECK-ERROR: vector lane must be an integer in range
3067 // CHECK-ERROR: fmls v0.2s, v1.2s, v2.s[4]
3069 // CHECK-ERROR: vector lane must be an integer in range
3070 // CHECK-ERROR: fmls v0.2s, v1.2s, v22.s[4]
3072 // CHECK-ERROR: vector lane must be an integer in range
3073 // CHECK-ERROR: fmls v3.4s, v8.4s, v2.s[4]
3075 // CHECK-ERROR: vector lane must be an integer in range
3076 // CHECK-ERROR: fmls v3.4s, v8.4s, v22.s[4]
3078 // CHECK-ERROR: vector lane must be an integer in range
3079 // CHECK-ERROR: fmls v0.2d, v1.2d, v2.d[2]
3081 // CHECK-ERROR: vector lane must be an integer in range
3082 // CHECK-ERROR: fmls v0.2d, v1.2d, v22.d[2]
3085 smlal v0.4h, v1.4h, v2.h[2]
3086 smlal v0.4s, v1.4h, v2.h[8]
3087 smlal v0.4s, v1.4h, v16.h[2]
3088 smlal v0.2s, v1.2s, v2.s[1]
3089 smlal v0.2d, v1.2s, v2.s[4]
3090 smlal v0.2d, v1.2s, v22.s[4]
3091 smlal2 v0.4h, v1.8h, v1.h[2]
3092 smlal2 v0.4s, v1.8h, v1.h[8]
3093 smlal2 v0.4s, v1.8h, v16.h[2]
3094 smlal2 v0.2s, v1.4s, v1.s[2]
3095 smlal2 v0.2d, v1.4s, v1.s[4]
3096 smlal2 v0.2d, v1.4s, v22.s[4]
3098 // CHECK-ERROR: error: invalid operand for instruction
3099 // CHECK-ERROR: smlal v0.4h, v1.4h, v2.h[2]
3101 // CHECK-ERROR: vector lane must be an integer in range
3102 // CHECK-ERROR: smlal v0.4s, v1.4h, v2.h[8]
3104 // CHECK-ERROR: error: invalid operand for instruction
3105 // CHECK-ERROR: smlal v0.4s, v1.4h, v16.h[2]
3107 // CHECK-ERROR: error: invalid operand for instruction
3108 // CHECK-ERROR: smlal v0.2s, v1.2s, v2.s[1]
3110 // CHECK-ERROR: vector lane must be an integer in range
3111 // CHECK-ERROR: smlal v0.2d, v1.2s, v2.s[4]
3113 // CHECK-ERROR: vector lane must be an integer in range
3114 // CHECK-ERROR: smlal v0.2d, v1.2s, v22.s[4]
3116 // CHECK-ERROR: error: invalid operand for instruction
3117 // CHECK-ERROR: smlal2 v0.4h, v1.8h, v1.h[2]
3119 // CHECK-ERROR: vector lane must be an integer in range
3120 // CHECK-ERROR: smlal2 v0.4s, v1.8h, v1.h[8]
3122 // CHECK-ERROR: error: invalid operand for instruction
3123 // CHECK-ERROR: smlal2 v0.4s, v1.8h, v16.h[2]
3125 // CHECK-ERROR: error: invalid operand for instruction
3126 // CHECK-ERROR: smlal2 v0.2s, v1.4s, v1.s[2]
3128 // CHECK-ERROR: vector lane must be an integer in range
3129 // CHECK-ERROR: smlal2 v0.2d, v1.4s, v1.s[4]
3131 // CHECK-ERROR: vector lane must be an integer in range
3132 // CHECK-ERROR: smlal2 v0.2d, v1.4s, v22.s[4]
3135 smlsl v0.4h, v1.4h, v2.h[2]
3136 smlsl v0.4s, v1.4h, v2.h[8]
3137 smlsl v0.4s, v1.4h, v16.h[2]
3138 smlsl v0.2s, v1.2s, v2.s[1]
3139 smlsl v0.2d, v1.2s, v2.s[4]
3140 smlsl v0.2d, v1.2s, v22.s[4]
3141 smlsl2 v0.4h, v1.8h, v1.h[2]
3142 smlsl2 v0.4s, v1.8h, v1.h[8]
3143 smlsl2 v0.4s, v1.8h, v16.h[2]
3144 smlsl2 v0.2s, v1.4s, v1.s[2]
3145 smlsl2 v0.2d, v1.4s, v1.s[4]
3146 smlsl2 v0.2d, v1.4s, v22.s[4]
3148 // CHECK-ERROR: error: invalid operand for instruction
3149 // CHECK-ERROR: smlsl v0.4h, v1.4h, v2.h[2]
3151 // CHECK-ERROR: vector lane must be an integer in range
3152 // CHECK-ERROR: smlsl v0.4s, v1.4h, v2.h[8]
3154 // CHECK-ERROR: error: invalid operand for instruction
3155 // CHECK-ERROR: smlsl v0.4s, v1.4h, v16.h[2]
3157 // CHECK-ERROR: error: invalid operand for instruction
3158 // CHECK-ERROR: smlsl v0.2s, v1.2s, v2.s[1]
3160 // CHECK-ERROR: vector lane must be an integer in range
3161 // CHECK-ERROR: smlsl v0.2d, v1.2s, v2.s[4]
3163 // CHECK-ERROR: vector lane must be an integer in range
3164 // CHECK-ERROR: smlsl v0.2d, v1.2s, v22.s[4]
3166 // CHECK-ERROR: error: invalid operand for instruction
3167 // CHECK-ERROR: smlsl2 v0.4h, v1.8h, v1.h[2]
3169 // CHECK-ERROR: vector lane must be an integer in range
3170 // CHECK-ERROR: smlsl2 v0.4s, v1.8h, v1.h[8]
3172 // CHECK-ERROR: error: invalid operand for instruction
3173 // CHECK-ERROR: smlsl2 v0.4s, v1.8h, v16.h[2]
3175 // CHECK-ERROR: error: invalid operand for instruction
3176 // CHECK-ERROR: smlsl2 v0.2s, v1.4s, v1.s[2]
3178 // CHECK-ERROR: vector lane must be an integer in range
3179 // CHECK-ERROR: smlsl2 v0.2d, v1.4s, v1.s[4]
3181 // CHECK-ERROR: vector lane must be an integer in range
3182 // CHECK-ERROR: smlsl2 v0.2d, v1.4s, v22.s[4]
3185 umlal v0.4h, v1.4h, v2.h[2]
3186 umlal v0.4s, v1.4h, v2.h[8]
3187 umlal v0.4s, v1.4h, v16.h[2]
3188 umlal v0.2s, v1.2s, v2.s[1]
3189 umlal v0.2d, v1.2s, v2.s[4]
3190 umlal v0.2d, v1.2s, v22.s[4]
3191 umlal2 v0.4h, v1.8h, v1.h[2]
3192 umlal2 v0.4s, v1.8h, v1.h[8]
3193 umlal2 v0.4s, v1.8h, v16.h[2]
3194 umlal2 v0.2s, v1.4s, v1.s[2]
3195 umlal2 v0.2d, v1.4s, v1.s[4]
3196 umlal2 v0.2d, v1.4s, v22.s[4]
3198 // CHECK-ERROR: error: invalid operand for instruction
3199 // CHECK-ERROR: umlal v0.4h, v1.4h, v2.h[2]
3201 // CHECK-ERROR: vector lane must be an integer in range
3202 // CHECK-ERROR: umlal v0.4s, v1.4h, v2.h[8]
3204 // CHECK-ERROR: error: invalid operand for instruction
3205 // CHECK-ERROR: umlal v0.4s, v1.4h, v16.h[2]
3207 // CHECK-ERROR: error: invalid operand for instruction
3208 // CHECK-ERROR: umlal v0.2s, v1.2s, v2.s[1]
3210 // CHECK-ERROR: vector lane must be an integer in range
3211 // CHECK-ERROR: umlal v0.2d, v1.2s, v2.s[4]
3213 // CHECK-ERROR: vector lane must be an integer in range
3214 // CHECK-ERROR: umlal v0.2d, v1.2s, v22.s[4]
3216 // CHECK-ERROR: error: invalid operand for instruction
3217 // CHECK-ERROR: umlal2 v0.4h, v1.8h, v1.h[2]
3219 // CHECK-ERROR: vector lane must be an integer in range
3220 // CHECK-ERROR: umlal2 v0.4s, v1.8h, v1.h[8]
3222 // CHECK-ERROR: error: invalid operand for instruction
3223 // CHECK-ERROR: umlal2 v0.4s, v1.8h, v16.h[2]
3225 // CHECK-ERROR: error: invalid operand for instruction
3226 // CHECK-ERROR: umlal2 v0.2s, v1.4s, v1.s[2]
3228 // CHECK-ERROR: vector lane must be an integer in range
3229 // CHECK-ERROR: umlal2 v0.2d, v1.4s, v1.s[4]
3231 // CHECK-ERROR: vector lane must be an integer in range
3232 // CHECK-ERROR: umlal2 v0.2d, v1.4s, v22.s[4]
3235 umlsl v0.4h, v1.4h, v2.h[2]
3236 umlsl v0.4s, v1.4h, v2.h[8]
3237 umlsl v0.4s, v1.4h, v16.h[2]
3238 umlsl v0.2s, v1.2s, v2.s[3]
3239 umlsl v0.2d, v1.2s, v2.s[4]
3240 umlsl v0.2d, v1.2s, v22.s[4]
3241 umlsl2 v0.4h, v1.8h, v1.h[2]
3242 umlsl2 v0.4s, v1.8h, v1.h[8]
3243 umlsl2 v0.4s, v1.8h, v16.h[2]
3244 umlsl2 v0.2s, v1.4s, v1.s[2]
3245 umlsl2 v0.2d, v1.4s, v1.s[4]
3246 umlsl2 v0.2d, v1.4s, v22.s[4]
3248 // CHECK-ERROR: error: invalid operand for instruction
3249 // CHECK-ERROR: umlsl v0.4h, v1.4h, v2.h[2]
3251 // CHECK-ERROR: vector lane must be an integer in range
3252 // CHECK-ERROR: umlsl v0.4s, v1.4h, v2.h[8]
3254 // CHECK-ERROR: error: invalid operand for instruction
3255 // CHECK-ERROR: umlsl v0.4s, v1.4h, v16.h[2]
3257 // CHECK-ERROR: error: invalid operand for instruction
3258 // CHECK-ERROR: umlsl v0.2s, v1.2s, v2.s[3]
3260 // CHECK-ERROR: vector lane must be an integer in range
3261 // CHECK-ERROR: umlsl v0.2d, v1.2s, v2.s[4]
3263 // CHECK-ERROR: vector lane must be an integer in range
3264 // CHECK-ERROR: umlsl v0.2d, v1.2s, v22.s[4]
3266 // CHECK-ERROR: error: invalid operand for instruction
3267 // CHECK-ERROR: umlsl2 v0.4h, v1.8h, v1.h[2]
3269 // CHECK-ERROR: vector lane must be an integer in range
3270 // CHECK-ERROR: umlsl2 v0.4s, v1.8h, v1.h[8]
3272 // CHECK-ERROR: error: invalid operand for instruction
3273 // CHECK-ERROR: umlsl2 v0.4s, v1.8h, v16.h[2]
3275 // CHECK-ERROR: error: invalid operand for instruction
3276 // CHECK-ERROR: umlsl2 v0.2s, v1.4s, v1.s[2]
3278 // CHECK-ERROR: vector lane must be an integer in range
3279 // CHECK-ERROR: umlsl2 v0.2d, v1.4s, v1.s[4]
3281 // CHECK-ERROR: vector lane must be an integer in range
3282 // CHECK-ERROR: umlsl2 v0.2d, v1.4s, v22.s[4]
3285 sqdmlal v0.4h, v1.4h, v2.h[2]
3286 sqdmlal v0.4s, v1.4h, v2.h[8]
3287 sqdmlal v0.4s, v1.4h, v16.h[2]
3288 sqdmlal v0.2s, v1.2s, v2.s[3]
3289 sqdmlal v0.2d, v1.2s, v2.s[4]
3290 sqdmlal v0.2d, v1.2s, v22.s[4]
3291 sqdmlal2 v0.4h, v1.8h, v1.h[2]
3292 sqdmlal2 v0.4s, v1.8h, v1.h[8]
3293 sqdmlal2 v0.4s, v1.8h, v16.h[2]
3294 sqdmlal2 v0.2s, v1.4s, v1.s[2]
3295 sqdmlal2 v0.2d, v1.4s, v1.s[4]
3296 sqdmlal2 v0.2d, v1.4s, v22.s[4]
3298 // CHECK-ERROR: error: invalid operand for instruction
3299 // CHECK-ERROR: sqdmlal v0.4h, v1.4h, v2.h[2]
3301 // CHECK-ERROR: vector lane must be an integer in range
3302 // CHECK-ERROR: sqdmlal v0.4s, v1.4h, v2.h[8]
3304 // CHECK-ERROR: error: invalid operand for instruction
3305 // CHECK-ERROR: sqdmlal v0.4s, v1.4h, v16.h[2]
3307 // CHECK-ERROR: error: invalid operand for instruction
3308 // CHECK-ERROR: sqdmlal v0.2s, v1.2s, v2.s[3]
3310 // CHECK-ERROR: vector lane must be an integer in range
3311 // CHECK-ERROR: sqdmlal v0.2d, v1.2s, v2.s[4]
3313 // CHECK-ERROR: vector lane must be an integer in range
3314 // CHECK-ERROR: sqdmlal v0.2d, v1.2s, v22.s[4]
3316 // CHECK-ERROR: error: invalid operand for instruction
3317 // CHECK-ERROR: sqdmlal2 v0.4h, v1.8h, v1.h[2]
3319 // CHECK-ERROR: vector lane must be an integer in range
3320 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v1.h[8]
3322 // CHECK-ERROR: error: invalid operand for instruction
3323 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v16.h[2]
3325 // CHECK-ERROR: error: invalid operand for instruction
3326 // CHECK-ERROR: sqdmlal2 v0.2s, v1.4s, v1.s[2]
3328 // CHECK-ERROR: vector lane must be an integer in range
3329 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v1.s[4]
3331 // CHECK-ERROR: vector lane must be an integer in range
3332 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v22.s[4]
3335 sqdmlsl v0.4h, v1.4h, v2.h[2]
3336 sqdmlsl v0.4s, v1.4h, v2.h[8]
3337 sqdmlsl v0.4s, v1.4h, v16.h[2]
3338 sqdmlsl v0.2s, v1.2s, v2.s[3]
3339 sqdmlsl v0.2d, v1.2s, v2.s[4]
3340 sqdmlsl v0.2d, v1.2s, v22.s[4]
3341 sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3342 sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3343 sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3344 sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3345 sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3346 sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3348 // CHECK-ERROR: error: invalid operand for instruction
3349 // CHECK-ERROR: sqdmlsl v0.4h, v1.4h, v2.h[2]
3351 // CHECK-ERROR: vector lane must be an integer in range
3352 // CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v2.h[8]
3354 // CHECK-ERROR: error: invalid operand for instruction
3355 // CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v16.h[2]
3357 // CHECK-ERROR: error: invalid operand for instruction
3358 // CHECK-ERROR: sqdmlsl v0.2s, v1.2s, v2.s[3]
3360 // CHECK-ERROR: vector lane must be an integer in range
3361 // CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v2.s[4]
3363 // CHECK-ERROR: vector lane must be an integer in range
3364 // CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v22.s[4]
3366 // CHECK-ERROR: error: invalid operand for instruction
3367 // CHECK-ERROR: sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3369 // CHECK-ERROR: vector lane must be an integer in range
3370 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3372 // CHECK-ERROR: error: invalid operand for instruction
3373 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3375 // CHECK-ERROR: error: invalid operand for instruction
3376 // CHECK-ERROR: sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3378 // CHECK-ERROR: vector lane must be an integer in range
3379 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3381 // CHECK-ERROR: vector lane must be an integer in range
3382 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3385 mul v0.4h, v1.4h, v2.h[8]
3386 mul v0.4h, v1.4h, v16.h[8]
3387 mul v0.8h, v1.8h, v2.h[8]
3388 mul v0.8h, v1.8h, v16.h[8]
3389 mul v0.2s, v1.2s, v2.s[4]
3390 mul v0.2s, v1.2s, v22.s[4]
3391 mul v0.4s, v1.4s, v2.s[4]
3392 mul v0.4s, v1.4s, v22.s[4]
3393 mul v0.2d, v1.2d, v2.d[1]
3395 // CHECK-ERROR: vector lane must be an integer in range
3396 // CHECK-ERROR: mul v0.4h, v1.4h, v2.h[8]
3398 // CHECK-ERROR: error: invalid operand for instruction
3399 // CHECK-ERROR: mul v0.4h, v1.4h, v16.h[8]
3401 // CHECK-ERROR: vector lane must be an integer in range
3402 // CHECK-ERROR: mul v0.8h, v1.8h, v2.h[8]
3404 // CHECK-ERROR: invalid operand for instruction
3405 // CHECK-ERROR: mul v0.8h, v1.8h, v16.h[8]
3407 // CHECK-ERROR: vector lane must be an integer in range
3408 // CHECK-ERROR: mul v0.2s, v1.2s, v2.s[4]
3410 // CHECK-ERROR: vector lane must be an integer in range
3411 // CHECK-ERROR: mul v0.2s, v1.2s, v22.s[4]
3413 // CHECK-ERROR: vector lane must be an integer in range
3414 // CHECK-ERROR: mul v0.4s, v1.4s, v2.s[4]
3416 // CHECK-ERROR: vector lane must be an integer in range
3417 // CHECK-ERROR: mul v0.4s, v1.4s, v22.s[4]
3420 fmul v0.4h, v1.4h, v2.h[4]
3421 fmul v0.2s, v1.2s, v2.s[4]
3422 fmul v0.2s, v1.2s, v22.s[4]
3423 fmul v0.4s, v1.4s, v2.s[4]
3424 fmul v0.4s, v1.4s, v22.s[4]
3425 fmul v0.2d, v1.2d, v2.d[2]
3426 fmul v0.2d, v1.2d, v22.d[2]
3428 // CHECK-ERROR: error: invalid operand for instruction
3429 // CHECK-ERROR: mul v0.2d, v1.2d, v2.d[1]
3431 // CHECK-ERROR: error: invalid operand for instruction
3432 // CHECK-ERROR: fmul v0.4h, v1.4h, v2.h[4]
3434 // CHECK-ERROR: vector lane must be an integer in range
3435 // CHECK-ERROR: fmul v0.2s, v1.2s, v2.s[4]
3437 // CHECK-ERROR: vector lane must be an integer in range
3438 // CHECK-ERROR: fmul v0.2s, v1.2s, v22.s[4]
3440 // CHECK-ERROR: vector lane must be an integer in range
3441 // CHECK-ERROR: fmul v0.4s, v1.4s, v2.s[4]
3443 // CHECK-ERROR: vector lane must be an integer in range
3444 // CHECK-ERROR: fmul v0.4s, v1.4s, v22.s[4]
3446 // CHECK-ERROR: vector lane must be an integer in range
3447 // CHECK-ERROR: fmul v0.2d, v1.2d, v2.d[2]
3449 // CHECK-ERROR: vector lane must be an integer in range
3450 // CHECK-ERROR: fmul v0.2d, v1.2d, v22.d[2]
3453 fmulx v0.4h, v1.4h, v2.h[4]
3454 fmulx v0.2s, v1.2s, v2.s[4]
3455 fmulx v0.2s, v1.2s, v22.s[4]
3456 fmulx v0.4s, v1.4s, v2.s[4]
3457 fmulx v0.4s, v1.4s, v22.s[4]
3458 fmulx v0.2d, v1.2d, v2.d[2]
3459 fmulx v0.2d, v1.2d, v22.d[2]
3461 // CHECK-ERROR: error: invalid operand for instruction
3462 // CHECK-ERROR: fmulx v0.4h, v1.4h, v2.h[4]
3464 // CHECK-ERROR: vector lane must be an integer in range
3465 // CHECK-ERROR: fmulx v0.2s, v1.2s, v2.s[4]
3467 // CHECK-ERROR: vector lane must be an integer in range
3468 // CHECK-ERROR: fmulx v0.2s, v1.2s, v22.s[4]
3470 // CHECK-ERROR: vector lane must be an integer in range
3471 // CHECK-ERROR: fmulx v0.4s, v1.4s, v2.s[4]
3473 // CHECK-ERROR: vector lane must be an integer in range
3474 // CHECK-ERROR: fmulx v0.4s, v1.4s, v22.s[4]
3476 // CHECK-ERROR: vector lane must be an integer in range
3477 // CHECK-ERROR: fmulx v0.2d, v1.2d, v2.d[2]
3479 // CHECK-ERROR: vector lane must be an integer in range
3480 // CHECK-ERROR: fmulx v0.2d, v1.2d, v22.d[2]
3483 smull v0.4h, v1.4h, v2.h[2]
3484 smull v0.4s, v1.4h, v2.h[8]
3485 smull v0.4s, v1.4h, v16.h[4]
3486 smull v0.2s, v1.2s, v2.s[2]
3487 smull v0.2d, v1.2s, v2.s[4]
3488 smull v0.2d, v1.2s, v22.s[4]
3489 smull2 v0.4h, v1.8h, v2.h[2]
3490 smull2 v0.4s, v1.8h, v2.h[8]
3491 smull2 v0.4s, v1.8h, v16.h[4]
3492 smull2 v0.2s, v1.4s, v2.s[2]
3493 smull2 v0.2d, v1.4s, v2.s[4]
3494 smull2 v0.2d, v1.4s, v22.s[4]
3496 // CHECK-ERROR: error: invalid operand for instruction
3497 // CHECK-ERROR: smull v0.4h, v1.4h, v2.h[2]
3499 // CHECK-ERROR: vector lane must be an integer in range
3500 // CHECK-ERROR: smull v0.4s, v1.4h, v2.h[8]
3502 // CHECK-ERROR: error: invalid operand for instruction
3503 // CHECK-ERROR: smull v0.4s, v1.4h, v16.h[4]
3505 // CHECK-ERROR: error: invalid operand for instruction
3506 // CHECK-ERROR: smull v0.2s, v1.2s, v2.s[2]
3508 // CHECK-ERROR: vector lane must be an integer in range
3509 // CHECK-ERROR: smull v0.2d, v1.2s, v2.s[4]
3511 // CHECK-ERROR: vector lane must be an integer in range
3512 // CHECK-ERROR: smull v0.2d, v1.2s, v22.s[4]
3514 // CHECK-ERROR: error: invalid operand for instruction
3515 // CHECK-ERROR: smull2 v0.4h, v1.8h, v2.h[2]
3517 // CHECK-ERROR: vector lane must be an integer in range
3518 // CHECK-ERROR: smull2 v0.4s, v1.8h, v2.h[8]
3520 // CHECK-ERROR: error: invalid operand for instruction
3521 // CHECK-ERROR: smull2 v0.4s, v1.8h, v16.h[4]
3523 // CHECK-ERROR: error: invalid operand for instruction
3524 // CHECK-ERROR: smull2 v0.2s, v1.4s, v2.s[2]
3526 // CHECK-ERROR: vector lane must be an integer in range
3527 // CHECK-ERROR: smull2 v0.2d, v1.4s, v2.s[4]
3529 // CHECK-ERROR: vector lane must be an integer in range
3530 // CHECK-ERROR: smull2 v0.2d, v1.4s, v22.s[4]
3533 umull v0.4h, v1.4h, v2.h[2]
3534 umull v0.4s, v1.4h, v2.h[8]
3535 umull v0.4s, v1.4h, v16.h[4]
3536 umull v0.2s, v1.2s, v2.s[2]
3537 umull v0.2d, v1.2s, v2.s[4]
3538 umull v0.2d, v1.2s, v22.s[4]
3539 umull2 v0.4h, v1.8h, v2.h[2]
3540 umull2 v0.4s, v1.8h, v2.h[8]
3541 umull2 v0.4s, v1.8h, v16.h[4]
3542 umull2 v0.2s, v1.4s, v2.s[2]
3543 umull2 v0.2d, v1.4s, v2.s[4]
3544 umull2 v0.2d, v1.4s, v22.s[4]
3546 // CHECK-ERROR: error: invalid operand for instruction
3547 // CHECK-ERROR: umull v0.4h, v1.4h, v2.h[2]
3549 // CHECK-ERROR: vector lane must be an integer in range
3550 // CHECK-ERROR: umull v0.4s, v1.4h, v2.h[8]
3552 // CHECK-ERROR: error: invalid operand for instruction
3553 // CHECK-ERROR: umull v0.4s, v1.4h, v16.h[4]
3555 // CHECK-ERROR: error: invalid operand for instruction
3556 // CHECK-ERROR: umull v0.2s, v1.2s, v2.s[2]
3558 // CHECK-ERROR: vector lane must be an integer in range
3559 // CHECK-ERROR: umull v0.2d, v1.2s, v2.s[4]
3561 // CHECK-ERROR: vector lane must be an integer in range
3562 // CHECK-ERROR: umull v0.2d, v1.2s, v22.s[4]
3564 // CHECK-ERROR: error: invalid operand for instruction
3565 // CHECK-ERROR: umull2 v0.4h, v1.8h, v2.h[2]
3567 // CHECK-ERROR: vector lane must be an integer in range
3568 // CHECK-ERROR: umull2 v0.4s, v1.8h, v2.h[8]
3570 // CHECK-ERROR: error: invalid operand for instruction
3571 // CHECK-ERROR: umull2 v0.4s, v1.8h, v16.h[4]
3573 // CHECK-ERROR: error: invalid operand for instruction
3574 // CHECK-ERROR: umull2 v0.2s, v1.4s, v2.s[2]
3576 // CHECK-ERROR: vector lane must be an integer in range
3577 // CHECK-ERROR: umull2 v0.2d, v1.4s, v2.s[4]
3579 // CHECK-ERROR: vector lane must be an integer in range
3580 // CHECK-ERROR: umull2 v0.2d, v1.4s, v22.s[4]
3583 sqdmull v0.4h, v1.4h, v2.h[2]
3584 sqdmull v0.4s, v1.4h, v2.h[8]
3585 sqdmull v0.4s, v1.4h, v16.h[4]
3586 sqdmull v0.2s, v1.2s, v2.s[2]
3587 sqdmull v0.2d, v1.2s, v2.s[4]
3588 sqdmull v0.2d, v1.2s, v22.s[4]
3589 sqdmull2 v0.4h, v1.8h, v2.h[2]
3590 sqdmull2 v0.4s, v1.8h, v2.h[8]
3591 sqdmull2 v0.4s, v1.8h, v16.h[4]
3592 sqdmull2 v0.2s, v1.4s, v2.s[2]
3593 sqdmull2 v0.2d, v1.4s, v2.s[4]
3594 sqdmull2 v0.2d, v1.4s, v22.s[4]
3596 // CHECK-ERROR: error: invalid operand for instruction
3597 // CHECK-ERROR: sqdmull v0.4h, v1.4h, v2.h[2]
3599 // CHECK-ERROR: vector lane must be an integer in range
3600 // CHECK-ERROR: sqdmull v0.4s, v1.4h, v2.h[8]
3602 // CHECK-ERROR: error: invalid operand for instruction
3603 // CHECK-ERROR: sqdmull v0.4s, v1.4h, v16.h[4]
3605 // CHECK-ERROR: error: invalid operand for instruction
3606 // CHECK-ERROR: sqdmull v0.2s, v1.2s, v2.s[2]
3608 // CHECK-ERROR: vector lane must be an integer in range
3609 // CHECK-ERROR: sqdmull v0.2d, v1.2s, v2.s[4]
3611 // CHECK-ERROR: vector lane must be an integer in range
3612 // CHECK-ERROR: sqdmull v0.2d, v1.2s, v22.s[4]
3614 // CHECK-ERROR: error: invalid operand for instruction
3615 // CHECK-ERROR: sqdmull2 v0.4h, v1.8h, v2.h[2]
3617 // CHECK-ERROR: vector lane must be an integer in range
3618 // CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v2.h[8]
3620 // CHECK-ERROR: error: invalid operand for instruction
3621 // CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v16.h[4]
3623 // CHECK-ERROR: error: invalid operand for instruction
3624 // CHECK-ERROR: sqdmull2 v0.2s, v1.4s, v2.s[2]
3626 // CHECK-ERROR: vector lane must be an integer in range
3627 // CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v2.s[4]
3629 // CHECK-ERROR: vector lane must be an integer in range
3630 // CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v22.s[4]
3633 sqdmulh v0.4h, v1.4h, v2.h[8]
3634 sqdmulh v0.4h, v1.4h, v16.h[2]
3635 sqdmulh v0.8h, v1.8h, v2.h[8]
3636 sqdmulh v0.8h, v1.8h, v16.h[2]
3637 sqdmulh v0.2s, v1.2s, v2.s[4]
3638 sqdmulh v0.2s, v1.2s, v22.s[4]
3639 sqdmulh v0.4s, v1.4s, v2.s[4]
3640 sqdmulh v0.4s, v1.4s, v22.s[4]
3641 sqdmulh v0.2d, v1.2d, v22.d[1]
3643 // CHECK-ERROR: vector lane must be an integer in range
3644 // CHECK-ERROR: sqdmulh v0.4h, v1.4h, v2.h[8]
3646 // CHECK-ERROR: error: invalid operand for instruction
3647 // CHECK-ERROR: sqdmulh v0.4h, v1.4h, v16.h[2]
3649 // CHECK-ERROR: vector lane must be an integer in range
3650 // CHECK-ERROR: sqdmulh v0.8h, v1.8h, v2.h[8]
3652 // CHECK-ERROR: error: invalid operand for instruction
3653 // CHECK-ERROR: sqdmulh v0.8h, v1.8h, v16.h[2]
3655 // CHECK-ERROR: vector lane must be an integer in range
3656 // CHECK-ERROR: sqdmulh v0.2s, v1.2s, v2.s[4]
3658 // CHECK-ERROR: vector lane must be an integer in range
3659 // CHECK-ERROR: sqdmulh v0.2s, v1.2s, v22.s[4]
3661 // CHECK-ERROR: vector lane must be an integer in range
3662 // CHECK-ERROR: sqdmulh v0.4s, v1.4s, v2.s[4]
3664 // CHECK-ERROR: vector lane must be an integer in range
3665 // CHECK-ERROR: sqdmulh v0.4s, v1.4s, v22.s[4]
3667 // CHECK-ERROR: error: invalid operand for instruction
3668 // CHECK-ERROR: sqdmulh v0.2d, v1.2d, v22.d[1]
3671 sqrdmulh v0.4h, v1.4h, v2.h[8]
3672 sqrdmulh v0.4h, v1.4h, v16.h[2]
3673 sqrdmulh v0.8h, v1.8h, v2.h[8]
3674 sqrdmulh v0.8h, v1.8h, v16.h[2]
3675 sqrdmulh v0.2s, v1.2s, v2.s[4]
3676 sqrdmulh v0.2s, v1.2s, v22.s[4]
3677 sqrdmulh v0.4s, v1.4s, v2.s[4]
3678 sqrdmulh v0.4s, v1.4s, v22.s[4]
3679 sqrdmulh v0.2d, v1.2d, v22.d[1]
3681 // CHECK-ERROR: vector lane must be an integer in range
3682 // CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v2.h[8]
3684 // CHECK-ERROR: error: invalid operand for instruction
3685 // CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v16.h[2]
3687 // CHECK-ERROR: vector lane must be an integer in range
3688 // CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v2.h[8]
3690 // CHECK-ERROR: error: invalid operand for instruction
3691 // CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v16.h[2]
3693 // CHECK-ERROR: vector lane must be an integer in range
3694 // CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v2.s[4]
3696 // CHECK-ERROR: vector lane must be an integer in range
3697 // CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v22.s[4]
3699 // CHECK-ERROR: vector lane must be an integer in range
3700 // CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v2.s[4]
3702 // CHECK-ERROR: vector lane must be an integer in range
3703 // CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v22.s[4]
3705 // CHECK-ERROR: error: invalid operand for instruction
3706 // CHECK-ERROR: sqrdmulh v0.2d, v1.2d, v22.d[1]
3709 //----------------------------------------------------------------------
3711 //----------------------------------------------------------------------
3721 // CHECK-ERROR: error: invalid operand for instruction
3722 // CHECK-ERROR: saddlv b0, v1.8b
3724 // CHECK-ERROR: error: invalid operand for instruction
3725 // CHECK-ERROR: saddlv b0, v1.16b
3727 // CHECK-ERROR: error: invalid operand for instruction
3728 // CHECK-ERROR: saddlv h0, v1.4h
3730 // CHECK-ERROR: error: invalid operand for instruction
3731 // CHECK-ERROR: saddlv h0, v1.8h
3733 // CHECK-ERROR: error: invalid operand for instruction
3734 // CHECK-ERROR: saddlv s0, v1.2s
3736 // CHECK-ERROR: error: invalid operand for instruction
3737 // CHECK-ERROR: saddlv s0, v1.4s
3739 // CHECK-ERROR: error: invalid operand for instruction
3740 // CHECK-ERROR: saddlv d0, v1.2s
3751 // CHECK-ERROR: error: invalid operand for instruction
3752 // CHECK-ERROR: uaddlv b0, v1.8b
3754 // CHECK-ERROR: error: invalid operand for instruction
3755 // CHECK-ERROR: uaddlv b0, v1.16b
3757 // CHECK-ERROR: error: invalid operand for instruction
3758 // CHECK-ERROR: uaddlv h0, v1.4h
3760 // CHECK-ERROR: error: invalid operand for instruction
3761 // CHECK-ERROR: uaddlv h0, v1.8h
3763 // CHECK-ERROR: error: invalid operand for instruction
3764 // CHECK-ERROR: uaddlv s0, v1.2s
3766 // CHECK-ERROR: error: invalid operand for instruction
3767 // CHECK-ERROR: uaddlv s0, v1.4s
3769 // CHECK-ERROR: error: invalid operand for instruction
3770 // CHECK-ERROR: uaddlv d0, v1.2s
3779 // CHECK-ERROR: error: invalid operand for instruction
3780 // CHECK-ERROR: smaxv s0, v1.2s
3782 // CHECK-ERROR: error: invalid operand for instruction
3783 // CHECK-ERROR: sminv s0, v1.2s
3785 // CHECK-ERROR: error: invalid operand for instruction
3786 // CHECK-ERROR: umaxv s0, v1.2s
3788 // CHECK-ERROR: error: invalid operand for instruction
3789 // CHECK-ERROR: uminv s0, v1.2s
3791 // CHECK-ERROR: error: invalid operand for instruction
3792 // CHECK-ERROR: addv s0, v1.2s
3801 // CHECK-ERROR: error: invalid operand for instruction
3802 // CHECK-ERROR: smaxv d0, v1.2d
3804 // CHECK-ERROR: error: invalid operand for instruction
3805 // CHECK-ERROR: sminv d0, v1.2d
3807 // CHECK-ERROR: error: invalid operand for instruction
3808 // CHECK-ERROR: umaxv d0, v1.2d
3810 // CHECK-ERROR: error: invalid operand for instruction
3811 // CHECK-ERROR: uminv d0, v1.2d
3813 // CHECK-ERROR: error: invalid operand for instruction
3814 // CHECK-ERROR: addv d0, v1.2d
3822 // CHECK-ERROR: error: invalid operand for instruction
3823 // CHECK-ERROR: fmaxnmv b0, v1.16b
3825 // CHECK-ERROR: error: invalid operand for instruction
3826 // CHECK-ERROR: fminnmv b0, v1.16b
3828 // CHECK-ERROR: error: invalid operand for instruction
3829 // CHECK-ERROR: fmaxv b0, v1.16b
3831 // CHECK-ERROR: error: invalid operand for instruction
3832 // CHECK-ERROR: fminv b0, v1.16b
3840 // CHECK-ERROR: error: invalid operand for instruction
3841 // CHECK-ERROR: fmaxnmv h0, v1.8h
3843 // CHECK-ERROR: error: invalid operand for instruction
3844 // CHECK-ERROR: fminnmv h0, v1.8h
3846 // CHECK-ERROR: error: invalid operand for instruction
3847 // CHECK-ERROR: fmaxv h0, v1.8h
3849 // CHECK-ERROR: error: invalid operand for instruction
3850 // CHECK-ERROR: fminv h0, v1.8h
3858 // CHECK-ERROR: error: invalid operand for instruction
3859 // CHECK-ERROR: fmaxnmv d0, v1.2d
3861 // CHECK-ERROR: error: invalid operand for instruction
3862 // CHECK-ERROR: fminnmv d0, v1.2d
3864 // CHECK-ERROR: error: invalid operand for instruction
3865 // CHECK-ERROR: fmaxv d0, v1.2d
3867 // CHECK-ERROR: error: invalid operand for instruction
3868 // CHECK-ERROR: fminv d0, v1.2d
3871 //----------------------------------------------------------------------
3872 // Floating-point Multiply Extended
3873 //----------------------------------------------------------------------
3878 // CHECK-ERROR: error: invalid operand for instruction
3879 // CHECK-ERROR: fmulx s20, h22, s15
3881 // CHECK-ERROR: error: invalid operand for instruction
3882 // CHECK-ERROR: fmulx d23, d11, s1
3885 //----------------------------------------------------------------------
3886 // Floating-point Reciprocal Step
3887 //----------------------------------------------------------------------
3889 frecps s21, s16, h13
3890 frecps d22, s30, d21
3892 // CHECK-ERROR: error: invalid operand for instruction
3893 // CHECK-ERROR: frecps s21, s16, h13
3895 // CHECK-ERROR: error: invalid operand for instruction
3896 // CHECK-ERROR: frecps d22, s30, d21
3899 //----------------------------------------------------------------------
3900 // Floating-point Reciprocal Square Root Step
3901 //----------------------------------------------------------------------
3903 frsqrts s21, h5, s12
3904 frsqrts d8, s22, d18
3906 // CHECK-ERROR: error: invalid operand for instruction
3907 // CHECK-ERROR: frsqrts s21, h5, s12
3909 // CHECK-ERROR: error: invalid operand for instruction
3910 // CHECK-ERROR: frsqrts d8, s22, d18
3913 //----------------------------------------------------------------------
3914 // Vector load/store multiple N-element structure (class SIMD lselem)
3915 //----------------------------------------------------------------------
3920 // CHECK-ERROR: error: vector register expected
3921 // CHECK-ERROR: ld1 {x3}, [x2]
3923 // CHECK-ERROR: error: invalid operand for instruction
3924 // CHECK-ERROR: ld1 {v4}, [x0]
3926 // CHECK-ERROR: error: vector register expected
3927 // CHECK-ERROR: ld1 {v32.16b}, [x0]
3929 // CHECK-ERROR: error: invalid operand for instruction
3930 // CHECK-ERROR: ld1 {v15.8h}, [x32]
3933 ld1 {v0.16b, v2.16b}, [x0]
3934 ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3935 ld1 v0.8b, v1.8b}, [x0]
3936 ld1 {v0.8h-v4.8h}, [x0]
3937 ld1 {v1.8h-v1.8h}, [x0]
3938 ld1 {v15.8h-v17.4h}, [x15]
3939 ld1 {v0.8b-v2.8b, [x0]
3940 // CHECK-ERROR: error: registers must be sequential
3941 // CHECK-ERROR: ld1 {v0.16b, v2.16b}, [x0]
3943 // CHECK-ERROR: error: invalid number of vectors
3944 // CHECK-ERROR: ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3946 // CHECK-ERROR: error: unexpected token in argument list
3947 // CHECK-ERROR: ld1 v0.8b, v1.8b}, [x0]
3949 // CHECK-ERROR: error: invalid number of vectors
3950 // CHECK-ERROR: ld1 {v0.8h-v4.8h}, [x0]
3952 // CHECK-ERROR: error: invalid number of vectors
3953 // CHECK-ERROR: ld1 {v1.8h-v1.8h}, [x0]
3955 // CHECK-ERROR: error: mismatched register size suffix
3956 // CHECK-ERROR: ld1 {v15.8h-v17.4h}, [x15]
3958 // CHECK-ERROR: error: '}' expected
3959 // CHECK-ERROR: ld1 {v0.8b-v2.8b, [x0]
3962 ld2 {v15.8h, v16.4h}, [x15]
3963 ld2 {v0.8b, v2.8b}, [x0]
3964 ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3965 ld2 {v15.8h-v16.4h}, [x15]
3966 ld2 {v0.2d-v2.2d}, [x0]
3967 // CHECK-ERROR: error: mismatched register size suffix
3968 // CHECK-ERROR: ld2 {v15.8h, v16.4h}, [x15]
3970 // CHECK-ERROR: error: registers must be sequential
3971 // CHECK-ERROR: ld2 {v0.8b, v2.8b}, [x0]
3973 // CHECK-ERROR: ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3975 // CHECK-ERROR: error: mismatched register size suffix
3976 // CHECK-ERROR: ld2 {v15.8h-v16.4h}, [x15]
3978 // CHECK-ERROR: error: invalid operand for instruction
3979 // CHECK-ERROR: ld2 {v0.2d-v2.2d}, [x0]
3982 ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3983 ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3984 ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3985 ld3 {v15.8h-v17.4h}, [x15]
3986 ld3 {v31.4s-v2.4s}, [sp]
3987 // CHECK-ERROR: error: mismatched register size suffix
3988 // CHECK-ERROR: ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3990 // CHECK-ERROR: error: mismatched register size suffix
3991 // CHECK-ERROR: ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3993 // CHECK-ERROR: error: registers must be sequential
3994 // CHECK-ERROR: ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3996 // CHECK-ERROR: error: mismatched register size suffix
3997 // CHECK-ERROR: ld3 {v15.8h-v17.4h}, [x15]
3999 // CHECK-ERROR: error: invalid operand for instruction
4000 // CHECK-ERROR: ld3 {v31.4s-v2.4s}, [sp]
4003 ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4004 ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4005 ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4006 ld4 {v15.8h-v18.4h}, [x15]
4007 ld4 {v31.2s-v1.2s}, [x31]
4008 // CHECK-ERROR: error: mismatched register size suffix
4009 // CHECK-ERROR: ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4011 // CHECK-ERROR: error: registers must be sequential
4012 // CHECK-ERROR: ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4014 // CHECK-ERROR: error: invalid number of vectors
4015 // CHECK-ERROR: ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4017 // CHECK-ERROR: error: mismatched register size suffix
4018 // CHECK-ERROR: ld4 {v15.8h-v18.4h}, [x15]
4020 // CHECK-ERROR: error: invalid operand for instruction
4021 // CHECK-ERROR: ld4 {v31.2s-v1.2s}, [x31]
4028 // CHECK-ERROR: error: vector register expected
4029 // CHECK-ERROR: st1 {x3}, [x2]
4031 // CHECK-ERROR: error: invalid operand for instruction
4032 // CHECK-ERROR: st1 {v4}, [x0]
4034 // CHECK-ERROR: error: vector register expected
4035 // CHECK-ERROR: st1 {v32.16b}, [x0]
4037 // CHECK-ERROR: error: invalid operand for instruction
4038 // CHECK-ERROR: st1 {v15.8h}, [x32]
4041 st1 {v0.16b, v2.16b}, [x0]
4042 st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4043 st1 v0.8b, v1.8b}, [x0]
4044 st1 {v0.8h-v4.8h}, [x0]
4045 st1 {v1.8h-v1.8h}, [x0]
4046 st1 {v15.8h-v17.4h}, [x15]
4047 st1 {v0.8b-v2.8b, [x0]
4048 // CHECK-ERROR: error: registers must be sequential
4049 // CHECK-ERROR: st1 {v0.16b, v2.16b}, [x0]
4051 // CHECK-ERROR: error: invalid number of vectors
4052 // CHECK-ERROR: st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4054 // CHECK-ERROR: error: unexpected token in argument list
4055 // CHECK-ERROR: st1 v0.8b, v1.8b}, [x0]
4057 // CHECK-ERROR: error: invalid number of vectors
4058 // CHECK-ERROR: st1 {v0.8h-v4.8h}, [x0]
4060 // CHECK-ERROR: error: invalid number of vectors
4061 // CHECK-ERROR: st1 {v1.8h-v1.8h}, [x0]
4063 // CHECK-ERROR: error: mismatched register size suffix
4064 // CHECK-ERROR: st1 {v15.8h-v17.4h}, [x15]
4066 // CHECK-ERROR: error: '}' expected
4067 // CHECK-ERROR: st1 {v0.8b-v2.8b, [x0]
4070 st2 {v15.8h, v16.4h}, [x15]
4071 st2 {v0.8b, v2.8b}, [x0]
4072 st2 {v15.4h, v16.4h, v17.4h}, [x30]
4073 st2 {v15.8h-v16.4h}, [x15]
4074 st2 {v0.2d-v2.2d}, [x0]
4075 // CHECK-ERROR: error: mismatched register size suffix
4076 // CHECK-ERROR: st2 {v15.8h, v16.4h}, [x15]
4078 // CHECK-ERROR: error: registers must be sequential
4079 // CHECK-ERROR: st2 {v0.8b, v2.8b}, [x0]
4081 // CHECK-ERROR: error: invalid operand for instruction
4082 // CHECK-ERROR: st2 {v15.4h, v16.4h, v17.4h}, [x30]
4084 // CHECK-ERROR: error: mismatched register size suffix
4085 // CHECK-ERROR: st2 {v15.8h-v16.4h}, [x15]
4087 // CHECK-ERROR: error: invalid operand for instruction
4088 // CHECK-ERROR: st2 {v0.2d-v2.2d}, [x0]
4091 st3 {v15.8h, v16.8h, v17.4h}, [x15]
4092 st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4093 st3 {v0.8b, v2.8b, v3.8b}, [x0]
4094 st3 {v15.8h-v17.4h}, [x15]
4095 st3 {v31.4s-v2.4s}, [sp]
4096 // CHECK-ERROR: error: mismatched register size suffix
4097 // CHECK-ERROR: st3 {v15.8h, v16.8h, v17.4h}, [x15]
4099 // CHECK-ERROR: error: mismatched register size suffix
4100 // CHECK-ERROR: st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4102 // CHECK-ERROR: error: registers must be sequential
4103 // CHECK-ERROR: st3 {v0.8b, v2.8b, v3.8b}, [x0]
4105 // CHECK-ERROR: error: mismatched register size suffix
4106 // CHECK-ERROR: st3 {v15.8h-v17.4h}, [x15]
4108 // CHECK-ERROR: error: invalid operand for instruction
4109 // CHECK-ERROR: st3 {v31.4s-v2.4s}, [sp]
4112 st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4113 st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4114 st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4115 st4 {v15.8h-v18.4h}, [x15]
4116 st4 {v31.2s-v1.2s}, [x31]
4117 // CHECK-ERROR: error: mismatched register size suffix
4118 // CHECK-ERROR: st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4120 // CHECK-ERROR: error: registers must be sequential
4121 // CHECK-ERROR: st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4123 // CHECK-ERROR: error: invalid number of vectors
4124 // CHECK-ERROR: st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4126 // CHECK-ERROR: error: mismatched register size suffix
4127 // CHECK-ERROR: st4 {v15.8h-v18.4h}, [x15]
4129 // CHECK-ERROR: error: invalid operand for instruction
4130 // CHECK-ERROR: st4 {v31.2s-v1.2s}, [x31]
4133 //----------------------------------------------------------------------
4134 // Vector post-index load/store multiple N-element structure
4135 // (class SIMD lselem-post)
4136 //----------------------------------------------------------------------
4137 ld1 {v0.16b}, [x0], #8
4138 ld1 {v0.8h, v1.16h}, [x0], x1
4139 ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4140 // CHECK-ERROR: error: invalid operand for instruction
4141 // CHECK-ERROR: ld1 {v0.16b}, [x0], #8
4143 // CHECK-ERROR: error: invalid vector kind qualifier
4144 // CHECK-ERROR: ld1 {v0.8h, v1.16h}, [x0], x1
4146 // CHECK-ERROR: error: invalid operand for instruction
4147 // CHECK-ERROR: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4150 ld2 {v0.16b, v1.16b}, [x0], #16
4151 ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4152 ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4153 // CHECK-ERROR: error: invalid operand for instruction
4154 // CHECK-ERROR: ld2 {v0.16b, v1.16b}, [x0], #16
4156 // CHECK-ERROR: error: invalid operand for instruction
4157 // CHECK-ERROR: ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4159 // CHECK-ERROR: error: mismatched register size suffix
4160 // CHECK-ERROR: ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4163 st1 {v0.16b}, [x0], #8
4164 st1 {v0.8h, v1.16h}, [x0], x1
4165 st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4166 // CHECK-ERROR: error: invalid operand for instruction
4167 // CHECK-ERROR: st1 {v0.16b}, [x0], #8
4169 // CHECK-ERROR: error: invalid vector kind qualifier
4170 // CHECK-ERROR: st1 {v0.8h, v1.16h}, [x0], x1
4172 // CHECK-ERROR: error: invalid operand for instruction
4173 // CHECK-ERROR: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4176 st2 {v0.16b, v1.16b}, [x0], #16
4177 st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4178 st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4179 // CHECK-ERROR: error: invalid operand for instruction
4180 // CHECK-ERROR: st2 {v0.16b, v1.16b}, [x0], #16
4182 // CHECK-ERROR: error: invalid operand for instruction
4183 // CHECK-ERROR: st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4185 // CHECK-ERROR: error: mismatched register size suffix
4186 // CHECK-ERROR: st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4189 //------------------------------------------------------------------------------
4190 // Load single N-element structure to all lanes of N consecutive
4191 // registers (N = 1,2,3,4)
4192 //------------------------------------------------------------------------------
4194 ld2r {v31.4s, v0.2s}, [sp]
4195 ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
4196 ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
4197 // CHECK-ERROR: error: vector register expected
4198 // CHECK-ERROR: ld1r {x1}, [x0]
4200 // CHECK-ERROR: error: mismatched register size suffix
4201 // CHECK-ERROR: ld2r {v31.4s, v0.2s}, [sp]
4203 // CHECK-ERROR: error: invalid operand for instruction
4204 // CHECK-ERROR: ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
4206 // CHECK-ERROR: error: mismatched register size suffix
4207 // CHECK-ERROR: ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
4210 //------------------------------------------------------------------------------
4211 // Load/Store single N-element structure to/from one lane of N consecutive
4212 // registers (N = 1, 2,3,4)
4213 //------------------------------------------------------------------------------
4214 ld1 {v0.b}[16], [x0]
4215 ld2 {v15.h, v16.h}[8], [x15]
4216 ld3 {v31.s, v0.s, v1.s}[-1], [sp]
4217 ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4218 // CHECK-ERROR: vector lane must be an integer in range
4219 // CHECK-ERROR: ld1 {v0.b}[16], [x0]
4221 // CHECK-ERROR: vector lane must be an integer in range
4222 // CHECK-ERROR: ld2 {v15.h, v16.h}[8], [x15]
4224 // CHECK-ERROR: error: vector lane must be an integer in range
4225 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.s}[-1], [sp]
4227 // CHECK-ERROR: vector lane must be an integer in range
4228 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4231 st1 {v0.d}[16], [x0]
4232 st2 {v31.s, v0.s}[3], [8]
4233 st3 {v15.h, v16.h, v17.h}[-1], [x15]
4234 st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4235 // CHECK-ERROR: vector lane must be an integer in range
4236 // CHECK-ERROR: st1 {v0.d}[16], [x0]
4238 // CHECK-ERROR: error: invalid operand for instruction
4239 // CHECK-ERROR: st2 {v31.s, v0.s}[3], [8]
4241 // CHECK-ERROR: error: vector lane must be an integer in range
4242 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[-1], [x15]
4244 // CHECK-ERROR: vector lane must be an integer in range
4245 // CHECK-ERROR: st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4248 //------------------------------------------------------------------------------
4249 // Post-index of load single N-element structure to all lanes of N consecutive
4250 // registers (N = 1,2,3,4)
4251 //------------------------------------------------------------------------------
4252 ld1r {v15.8h}, [x15], #5
4253 ld2r {v0.2d, v1.2d}, [x0], #7
4254 ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
4255 ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
4256 // CHECK-ERROR: error: invalid operand for instruction
4257 // CHECK-ERROR: ld1r {v15.8h}, [x15], #5
4259 // CHECK-ERROR: error: invalid operand for instruction
4260 // CHECK-ERROR: ld2r {v0.2d, v1.2d}, [x0], #7
4262 // CHECK-ERROR: error: invalid operand for instruction
4263 // CHECK-ERROR: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
4265 // CHECK-ERROR: error: invalid operand for instruction
4266 // CHECK-ERROR: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
4269 //------------------------------------------------------------------------------
4270 // Post-index of Load/Store single N-element structure to/from one lane of N
4271 // consecutive registers (N = 1, 2,3,4)
4272 //------------------------------------------------------------------------------
4273 ld1 {v0.b}[0], [x0], #2
4274 ld2 {v15.h, v16.h}[0], [x15], #3
4275 ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
4276 ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
4277 // CHECK-ERROR: error: invalid operand for instruction
4278 // CHECK-ERROR: ld1 {v0.b}[0], [x0], #2
4280 // CHECK-ERROR: error: invalid operand for instruction
4281 // CHECK-ERROR: ld2 {v15.h, v16.h}[0], [x15], #3
4283 // CHECK-ERROR: error: mismatched register size suffix
4284 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
4286 // CHECK-ERROR: error: invalid operand for instruction
4287 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
4290 st1 {v0.d}[0], [x0], #7
4291 st2 {v31.s, v0.s}[0], [sp], #6
4292 st3 {v15.h, v16.h, v17.h}[0], [x15], #8
4293 st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
4294 // CHECK-ERROR: error: invalid operand for instruction
4295 // CHECK-ERROR: st1 {v0.d}[0], [x0], #7
4297 // CHECK-ERROR: error: invalid operand for instruction
4298 // CHECK-ERROR: st2 {v31.s, v0.s}[0], [sp], #6
4300 // CHECK-ERROR: error: invalid operand for instruction
4301 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[0], [x15], #8
4303 // CHECK-ERROR: error: invalid operand for instruction
4304 // CHECK-ERROR: st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
4317 // CHECK-ERROR: vector lane must be an integer in range
4318 // CHECK-ERROR: ins v2.b[16], w1
4320 // CHECK-ERROR: vector lane must be an integer in range
4321 // CHECK-ERROR: ins v7.h[8], w14
4323 // CHECK-ERROR: vector lane must be an integer in range
4324 // CHECK-ERROR: ins v20.s[5], w30
4326 // CHECK-ERROR: vector lane must be an integer in range
4327 // CHECK-ERROR: ins v1.d[2], x7
4329 // CHECK-ERROR: error: invalid operand for instruction
4330 // CHECK-ERROR: ins v2.b[3], b1
4332 // CHECK-ERROR: error: invalid operand for instruction
4333 // CHECK-ERROR: ins v7.h[2], h14
4335 // CHECK-ERROR: error: invalid operand for instruction
4336 // CHECK-ERROR: ins v20.s[1], s30
4338 // CHECK-ERROR: error: invalid operand for instruction
4339 // CHECK-ERROR: ins v1.d[0], d7
4353 // CHECK-ERROR: vector lane must be an integer in range
4354 // CHECK-ERROR: smov w1, v0.b[16]
4356 // CHECK-ERROR: vector lane must be an integer in range
4357 // CHECK-ERROR: smov w14, v6.h[8]
4359 // CHECK-ERROR: vector lane must be an integer in range
4360 // CHECK-ERROR: smov x1, v0.b[16]
4362 // CHECK-ERROR: vector lane must be an integer in range
4363 // CHECK-ERROR: smov x14, v6.h[8]
4365 // CHECK-ERROR: vector lane must be an integer in range
4366 // CHECK-ERROR: smov x20, v9.s[5]
4368 // CHECK-ERROR: error: invalid operand for instruction
4369 // CHECK-ERROR: smov w1, v0.d[0]
4371 // CHECK-ERROR: error: invalid operand for instruction
4372 // CHECK-ERROR: smov w14, v6.d[1]
4374 // CHECK-ERROR: error: invalid operand for instruction
4375 // CHECK-ERROR: smov x1, v0.d[0]
4377 // CHECK-ERROR: error: invalid operand for instruction
4378 // CHECK-ERROR: smov x14, v6.d[1]
4380 // CHECK-ERROR: error: invalid operand for instruction
4381 // CHECK-ERROR: smov x20, v9.d[0]
4392 // CHECK-ERROR: vector lane must be an integer in range
4393 // CHECK-ERROR: umov w1, v0.b[16]
4395 // CHECK-ERROR: vector lane must be an integer in range
4396 // CHECK-ERROR: umov w14, v6.h[8]
4398 // CHECK-ERROR: vector lane must be an integer in range
4399 // CHECK-ERROR: umov w20, v9.s[5]
4401 // CHECK-ERROR: vector lane must be an integer in range
4402 // CHECK-ERROR: umov x7, v18.d[3]
4404 // CHECK-ERROR: error: invalid operand for instruction
4405 // CHECK-ERROR: umov w1, v0.d[0]
4407 // CHECK-ERROR: error: invalid operand for instruction
4408 // CHECK-ERROR: umov s20, v9.s[2]
4410 // CHECK-ERROR: error: invalid operand for instruction
4411 // CHECK-ERROR: umov d7, v18.d[1]
4414 Ins v1.h[2], v3.b[6]
4415 Ins v6.h[7], v7.s[2]
4416 Ins v15.d[0], v22.s[2]
4417 Ins v0.d[0], v4.b[1]
4419 // CHECK-ERROR: error: invalid operand for instruction
4420 // CHECK-ERROR: Ins v1.h[2], v3.b[6]
4422 // CHECK-ERROR: error: invalid operand for instruction
4423 // CHECK-ERROR: Ins v6.h[7], v7.s[2]
4425 // CHECK-ERROR: error: invalid operand for instruction
4426 // CHECK-ERROR: Ins v15.d[0], v22.s[2]
4428 // CHECK-ERROR: error: invalid operand for instruction
4429 // CHECK-ERROR: Ins v0.d[0], v4.b[1]
4434 dup v17.2d, v20.s[0]
4437 dup v17.4s, v20.d[0]
4440 // CHECK-ERROR: error: invalid operand for instruction
4441 // CHECK-ERROR: dup v1.8h, v2.b[2]
4443 // CHECK-ERROR: error: invalid operand for instruction
4444 // CHECK-ERROR: dup v11.4s, v7.h[7]
4446 // CHECK-ERROR: error: invalid operand for instruction
4447 // CHECK-ERROR: dup v17.2d, v20.s[0]
4449 // CHECK-ERROR: error: invalid operand for instruction
4450 // CHECK-ERROR: dup v1.16b, v2.h[2]
4452 // CHECK-ERROR: invalid operand for instruction
4453 // CHECK-ERROR: dup v11.8h, v7.s[3]
4455 // CHECK-ERROR: invalid operand for instruction
4456 // CHECK-ERROR: dup v17.4s, v20.d[0]
4458 // CHECK-ERROR: invalid operand for instruction
4459 // CHECK-ERROR: dup v5.2d, v1.b[1]
4470 // CHECK-ERROR: error: invalid operand for instruction
4471 // CHECK-ERROR: dup v1.8b, b1
4473 // CHECK-ERROR: error: invalid operand for instruction
4474 // CHECK-ERROR: dup v11.4h, h14
4476 // CHECK-ERROR: error: invalid operand for instruction
4477 // CHECK-ERROR: dup v17.2s, s30
4479 // CHECK-ERROR: error: invalid operand for instruction
4480 // CHECK-ERROR: dup v1.16b, d2
4482 // CHECK-ERROR: error: invalid operand for instruction
4483 // CHECK-ERROR: dup v11.8s, w16
4485 // CHECK-ERROR: error: invalid operand for instruction
4486 // CHECK-ERROR: dup v17.4d, w28
4488 // CHECK-ERROR: error: invalid operand for instruction
4489 // CHECK-ERROR: dup v5.2d, w0
4492 //----------------------------------------------------------------------
4493 // Scalar Compare Bitwise Equal
4494 //----------------------------------------------------------------------
4498 // CHECK-ERROR: error: invalid operand for instruction
4499 // CHECK-ERROR: cmeq b20, d21, d22
4502 //----------------------------------------------------------------------
4503 // Scalar Compare Bitwise Equal To Zero
4504 //----------------------------------------------------------------------
4508 // CHECK-ERROR: error: invalid operand for instruction
4509 // CHECK-ERROR: cmeq d20, b21, #0
4512 //----------------------------------------------------------------------
4513 // Scalar Compare Unsigned Higher Or Same
4514 //----------------------------------------------------------------------
4518 // CHECK-ERROR: error: invalid operand for instruction
4519 // CHECK-ERROR: cmhs b20, d21, d22
4523 //----------------------------------------------------------------------
4524 // Scalar Compare Signed Greather Than Or Equal
4525 //----------------------------------------------------------------------
4529 // CHECK-ERROR: error: invalid operand for instruction
4530 // CHECK-ERROR: cmge b20, d21, d22
4533 //----------------------------------------------------------------------
4534 // Scalar Compare Signed Greather Than Or Equal To Zero
4535 //----------------------------------------------------------------------
4539 // CHECK-ERROR: error: invalid operand for instruction
4540 // CHECK-ERROR: cmge d20, b21, #0
4543 //----------------------------------------------------------------------
4544 // Scalar Compare Unsigned Higher
4545 //----------------------------------------------------------------------
4549 // CHECK-ERROR: error: invalid operand for instruction
4550 // CHECK-ERROR: cmhi b20, d21, d22
4553 //----------------------------------------------------------------------
4554 // Scalar Compare Signed Greater Than
4555 //----------------------------------------------------------------------
4559 // CHECK-ERROR: error: invalid operand for instruction
4560 // CHECK-ERROR: cmgt b20, d21, d22
4563 //----------------------------------------------------------------------
4564 // Scalar Compare Signed Greater Than Zero
4565 //----------------------------------------------------------------------
4569 // CHECK-ERROR: error: invalid operand for instruction
4570 // CHECK-ERROR: cmgt d20, b21, #0
4573 //----------------------------------------------------------------------
4574 // Scalar Compare Signed Less Than Or Equal To Zero
4575 //----------------------------------------------------------------------
4579 // CHECK-ERROR: error: invalid operand for instruction
4580 // CHECK-ERROR: cmle d20, b21, #0
4583 //----------------------------------------------------------------------
4584 // Scalar Compare Less Than Zero
4585 //----------------------------------------------------------------------
4589 // CHECK-ERROR: error: invalid operand for instruction
4590 // CHECK-ERROR: cmlt d20, b21, #0
4593 //----------------------------------------------------------------------
4594 // Scalar Compare Bitwise Test Bits
4595 //----------------------------------------------------------------------
4599 // CHECK-ERROR: error: invalid operand for instruction
4600 // CHECK-ERROR: cmtst b20, d21, d22
4603 //----------------------------------------------------------------------
4604 // Scalar Floating-point Compare Mask Equal
4605 //----------------------------------------------------------------------
4610 // CHECK-ERROR: error: invalid operand for instruction
4611 // CHECK-ERROR: fcmeq s10, h11, s12
4613 // CHECK-ERROR: error: invalid operand for instruction
4614 // CHECK-ERROR: fcmeq d20, s21, d22
4617 //----------------------------------------------------------------------
4618 // Scalar Floating-point Compare Mask Equal To Zero
4619 //----------------------------------------------------------------------
4621 fcmeq h10, s11, #0.0
4622 fcmeq d20, s21, #0.0
4624 // CHECK-ERROR: error: invalid operand for instruction
4625 // CHECK-ERROR: fcmeq h10, s11, #0.0
4627 // CHECK-ERROR: error: invalid operand for instruction
4628 // CHECK-ERROR: fcmeq d20, s21, #0.0
4631 //----------------------------------------------------------------------
4632 // Scalar Floating-point Compare Mask Greater Than Or Equal
4633 //----------------------------------------------------------------------
4638 // CHECK-ERROR: error: invalid operand for instruction
4639 // CHECK-ERROR: fcmge s10, h11, s12
4641 // CHECK-ERROR: error: invalid operand for instruction
4642 // CHECK-ERROR: fcmge d20, s21, d22
4645 //----------------------------------------------------------------------
4646 // Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
4647 //----------------------------------------------------------------------
4649 fcmge h10, s11, #0.0
4650 fcmge d20, s21, #0.0
4652 // CHECK-ERROR: error: invalid operand for instruction
4653 // CHECK-ERROR: fcmge h10, s11, #0.0
4655 // CHECK-ERROR: error: invalid operand for instruction
4656 // CHECK-ERROR: fcmge d20, s21, #0.0
4659 //----------------------------------------------------------------------
4660 // Scalar Floating-point Compare Mask Greather Than
4661 //----------------------------------------------------------------------
4666 // CHECK-ERROR: error: invalid operand for instruction
4667 // CHECK-ERROR: fcmgt s10, h11, s12
4669 // CHECK-ERROR: error: invalid operand for instruction
4670 // CHECK-ERROR: fcmgt d20, s21, d22
4673 //----------------------------------------------------------------------
4674 // Scalar Floating-point Compare Mask Greather Than Zero
4675 //----------------------------------------------------------------------
4677 fcmgt h10, s11, #0.0
4678 fcmgt d20, s21, #0.0
4680 // CHECK-ERROR: error: invalid operand for instruction
4681 // CHECK-ERROR: fcmgt h10, s11, #0.0
4683 // CHECK-ERROR: error: invalid operand for instruction
4684 // CHECK-ERROR: fcmgt d20, s21, #0.0
4687 //----------------------------------------------------------------------
4688 // Scalar Floating-point Compare Mask Less Than Or Equal To Zero
4689 //----------------------------------------------------------------------
4691 fcmle h10, s11, #0.0
4692 fcmle d20, s21, #0.0
4694 // CHECK-ERROR: error: invalid operand for instruction
4695 // CHECK-ERROR: fcmle h10, s11, #0.0
4697 // CHECK-ERROR: error: invalid operand for instruction
4698 // CHECK-ERROR: fcmle d20, s21, #0.0
4701 //----------------------------------------------------------------------
4702 // Scalar Floating-point Compare Mask Less Than
4703 //----------------------------------------------------------------------
4705 fcmlt h10, s11, #0.0
4706 fcmlt d20, s21, #0.0
4708 // CHECK-ERROR: error: invalid operand for instruction
4709 // CHECK-ERROR: fcmlt h10, s11, #0.0
4711 // CHECK-ERROR: error: invalid operand for instruction
4712 // CHECK-ERROR: fcmlt d20, s21, #0.0
4715 //----------------------------------------------------------------------
4716 // Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
4717 //----------------------------------------------------------------------
4722 // CHECK-ERROR: error: invalid operand for instruction
4723 // CHECK-ERROR: facge s10, h11, s12
4725 // CHECK-ERROR: error: invalid operand for instruction
4726 // CHECK-ERROR: facge d20, s21, d22
4729 //----------------------------------------------------------------------
4730 // Scalar Floating-point Absolute Compare Mask Greater Than
4731 //----------------------------------------------------------------------
4736 // CHECK-ERROR: error: invalid operand for instruction
4737 // CHECK-ERROR: facgt s10, h11, s12
4739 // CHECK-ERROR: error: invalid operand for instruction
4740 // CHECK-ERROR: facgt d20, d21, s22
4743 //----------------------------------------------------------------------
4744 // Scalar Signed Saturating Accumulated of Unsigned Value
4745 //----------------------------------------------------------------------
4752 // CHECK-ERROR: error: invalid operand for instruction
4753 // CHECK-ERROR: suqadd b0, h1
4755 // CHECK-ERROR: error: invalid operand for instruction
4756 // CHECK-ERROR: suqadd h0, s1
4758 // CHECK-ERROR: error: invalid operand for instruction
4759 // CHECK-ERROR: suqadd s0, d1
4761 // CHECK-ERROR: error: invalid operand for instruction
4762 // CHECK-ERROR: suqadd d0, b0
4765 //----------------------------------------------------------------------
4766 // Scalar Unsigned Saturating Accumulated of Signed Value
4767 //----------------------------------------------------------------------
4774 // CHECK-ERROR: error: invalid operand for instruction
4775 // CHECK-ERROR: usqadd b0, h1
4777 // CHECK-ERROR: error: invalid operand for instruction
4778 // CHECK-ERROR: usqadd h0, s1
4780 // CHECK-ERROR: error: invalid operand for instruction
4781 // CHECK-ERROR: usqadd s0, d1
4783 // CHECK-ERROR: error: invalid operand for instruction
4784 // CHECK-ERROR: usqadd d0, b1
4787 //----------------------------------------------------------------------
4788 // Scalar Absolute Value
4789 //----------------------------------------------------------------------
4793 // CHECK-ERROR: error: invalid operand for instruction
4794 // CHECK-ERROR: abs d29, s24
4797 //----------------------------------------------------------------------
4799 //----------------------------------------------------------------------
4803 // CHECK-ERROR: error: invalid operand for instruction
4804 // CHECK-ERROR: neg d29, s24
4807 //----------------------------------------------------------------------
4808 // Signed Saturating Doubling Multiply-Add Long
4809 //----------------------------------------------------------------------
4811 sqdmlal s17, h27, s12
4812 sqdmlal d19, s24, d12
4814 // CHECK-ERROR: error: invalid operand for instruction
4815 // CHECK-ERROR: sqdmlal s17, h27, s12
4817 // CHECK-ERROR: error: invalid operand for instruction
4818 // CHECK-ERROR: sqdmlal d19, s24, d12
4821 //----------------------------------------------------------------------
4822 // Signed Saturating Doubling Multiply-Subtract Long
4823 //----------------------------------------------------------------------
4825 sqdmlsl s14, h12, s25
4826 sqdmlsl d12, s23, d13
4828 // CHECK-ERROR: error: invalid operand for instruction
4829 // CHECK-ERROR: sqdmlsl s14, h12, s25
4831 // CHECK-ERROR: error: invalid operand for instruction
4832 // CHECK-ERROR: sqdmlsl d12, s23, d13
4835 //----------------------------------------------------------------------
4836 // Signed Saturating Doubling Multiply Long
4837 //----------------------------------------------------------------------
4839 sqdmull s12, h22, s12
4840 sqdmull d15, s22, d12
4842 // CHECK-ERROR: error: invalid operand for instruction
4843 // CHECK-ERROR: sqdmull s12, h22, s12
4845 // CHECK-ERROR: error: invalid operand for instruction
4846 // CHECK-ERROR: sqdmull d15, s22, d12
4849 //----------------------------------------------------------------------
4850 // Scalar Signed Saturating Extract Unsigned Narrow
4851 //----------------------------------------------------------------------
4857 // CHECK-ERROR: error: invalid operand for instruction
4858 // CHECK-ERROR: sqxtun b19, b14
4860 // CHECK-ERROR: error: invalid operand for instruction
4861 // CHECK-ERROR: sqxtun h21, h15
4863 // CHECK-ERROR: error: invalid operand for instruction
4864 // CHECK-ERROR: sqxtun s20, s12
4867 //----------------------------------------------------------------------
4868 // Scalar Signed Saturating Extract Signed Narrow
4869 //----------------------------------------------------------------------
4875 // CHECK-ERROR: error: invalid operand for instruction
4876 // CHECK-ERROR: sqxtn b18, b18
4878 // CHECK-ERROR: error: invalid operand for instruction
4879 // CHECK-ERROR: sqxtn h20, h17
4881 // CHECK-ERROR: error: invalid operand for instruction
4882 // CHECK-ERROR: sqxtn s19, s14
4886 //----------------------------------------------------------------------
4887 // Scalar Unsigned Saturating Extract Narrow
4888 //----------------------------------------------------------------------
4894 // CHECK-ERROR: error: invalid operand for instruction
4895 // CHECK-ERROR: uqxtn b18, b18
4897 // CHECK-ERROR: error: invalid operand for instruction
4898 // CHECK-ERROR: uqxtn h20, h17
4900 // CHECK-ERROR: error: invalid operand for instruction
4901 // CHECK-ERROR: uqxtn s19, s14
4904 //----------------------------------------------------------------------
4905 // Scalar Signed Shift Right (Immediate)
4906 //----------------------------------------------------------------------
4909 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4910 // CHECK-ERROR: sshr d15, d16, #99
4915 // CHECK-ERROR: error: invalid operand for instruction
4916 // CHECK-ERROR: sshr d15, s16, #31
4919 //----------------------------------------------------------------------
4920 // Scalar Unsigned Shift Right (Immediate)
4921 //----------------------------------------------------------------------
4925 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4926 // CHECK-ERROR: ushr d10, d17, #99
4929 //----------------------------------------------------------------------
4930 // Scalar Signed Rounding Shift Right (Immediate)
4931 //----------------------------------------------------------------------
4935 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4936 // CHECK-ERROR: srshr d19, d18, #99
4939 //----------------------------------------------------------------------
4940 // Scalar Unigned Rounding Shift Right (Immediate)
4941 //----------------------------------------------------------------------
4945 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4946 // CHECK-ERROR: urshr d20, d23, #99
4949 //----------------------------------------------------------------------
4950 // Scalar Signed Shift Right and Accumulate (Immediate)
4951 //----------------------------------------------------------------------
4955 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4956 // CHECK-ERROR: ssra d18, d12, #99
4959 //----------------------------------------------------------------------
4960 // Scalar Unsigned Shift Right and Accumulate (Immediate)
4961 //----------------------------------------------------------------------
4965 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4966 // CHECK-ERROR: usra d20, d13, #99
4969 //----------------------------------------------------------------------
4970 // Scalar Signed Rounding Shift Right and Accumulate (Immediate)
4971 //----------------------------------------------------------------------
4975 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4976 // CHECK-ERROR: srsra d15, d11, #99
4979 //----------------------------------------------------------------------
4980 // Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
4981 //----------------------------------------------------------------------
4985 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4986 // CHECK-ERROR: ursra d18, d10, #99
4989 //----------------------------------------------------------------------
4990 // Scalar Shift Left (Immediate)
4991 //----------------------------------------------------------------------
4995 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
4996 // CHECK-ERROR: shl d7, d10, #99
5001 // CHECK-ERROR: error: invalid operand for instruction
5002 // CHECK-ERROR: shl d7, s16, #31
5005 //----------------------------------------------------------------------
5006 // Signed Saturating Shift Left (Immediate)
5007 //----------------------------------------------------------------------
5014 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5015 // CHECK-ERROR: sqshl b11, b19, #99
5017 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5018 // CHECK-ERROR: sqshl h13, h18, #99
5020 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5021 // CHECK-ERROR: sqshl s14, s17, #99
5023 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5024 // CHECK-ERROR: sqshl d15, d16, #99
5027 //----------------------------------------------------------------------
5028 // Unsigned Saturating Shift Left (Immediate)
5029 //----------------------------------------------------------------------
5036 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5037 // CHECK-ERROR: uqshl b18, b15, #99
5039 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5040 // CHECK-ERROR: uqshl h11, h18, #99
5042 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5043 // CHECK-ERROR: uqshl s14, s19, #99
5045 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5046 // CHECK-ERROR: uqshl d15, d12, #99
5049 //----------------------------------------------------------------------
5050 // Signed Saturating Shift Left Unsigned (Immediate)
5051 //----------------------------------------------------------------------
5053 sqshlu b15, b18, #99
5054 sqshlu h19, h17, #99
5055 sqshlu s16, s14, #99
5056 sqshlu d11, d13, #99
5058 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5059 // CHECK-ERROR: sqshlu b15, b18, #99
5061 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5062 // CHECK-ERROR: sqshlu h19, h17, #99
5064 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5065 // CHECK-ERROR: sqshlu s16, s14, #99
5067 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5068 // CHECK-ERROR: sqshlu d11, d13, #99
5071 //----------------------------------------------------------------------
5072 // Shift Right And Insert (Immediate)
5073 //----------------------------------------------------------------------
5077 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5078 // CHECK-ERROR: sri d10, d12, #99
5081 //----------------------------------------------------------------------
5082 // Shift Left And Insert (Immediate)
5083 //----------------------------------------------------------------------
5087 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5088 // CHECK-ERROR: sli d10, d14, #99
5091 //----------------------------------------------------------------------
5092 // Signed Saturating Shift Right Narrow (Immediate)
5093 //----------------------------------------------------------------------
5095 sqshrn b10, h15, #99
5096 sqshrn h17, s10, #99
5097 sqshrn s18, d10, #99
5099 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5100 // CHECK-ERROR: sqshrn b10, h15, #99
5102 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5103 // CHECK-ERROR: sqshrn h17, s10, #99
5105 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5106 // CHECK-ERROR: sqshrn s18, d10, #99
5109 //----------------------------------------------------------------------
5110 // Unsigned Saturating Shift Right Narrow (Immediate)
5111 //----------------------------------------------------------------------
5113 uqshrn b12, h10, #99
5114 uqshrn h10, s14, #99
5115 uqshrn s10, d12, #99
5117 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5118 // CHECK-ERROR: uqshrn b12, h10, #99
5120 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5121 // CHECK-ERROR: uqshrn h10, s14, #99
5123 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5124 // CHECK-ERROR: uqshrn s10, d12, #99
5127 //----------------------------------------------------------------------
5128 // Signed Saturating Rounded Shift Right Narrow (Immediate)
5129 //----------------------------------------------------------------------
5131 sqrshrn b10, h13, #99
5132 sqrshrn h15, s10, #99
5133 sqrshrn s15, d12, #99
5135 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5136 // CHECK-ERROR: sqrshrn b10, h13, #99
5138 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5139 // CHECK-ERROR: sqrshrn h15, s10, #99
5141 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5142 // CHECK-ERROR: sqrshrn s15, d12, #99
5145 //----------------------------------------------------------------------
5146 // Unsigned Saturating Rounded Shift Right Narrow (Immediate)
5147 //----------------------------------------------------------------------
5149 uqrshrn b10, h12, #99
5150 uqrshrn h12, s10, #99
5151 uqrshrn s10, d10, #99
5153 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5154 // CHECK-ERROR: uqrshrn b10, h12, #99
5156 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5157 // CHECK-ERROR: uqrshrn h12, s10, #99
5159 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5160 // CHECK-ERROR: uqrshrn s10, d10, #99
5163 //----------------------------------------------------------------------
5164 // Signed Saturating Shift Right Unsigned Narrow (Immediate)
5165 //----------------------------------------------------------------------
5167 sqshrun b15, h10, #99
5168 sqshrun h20, s14, #99
5169 sqshrun s10, d15, #99
5171 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5172 // CHECK-ERROR: sqshrun b15, h10, #99
5174 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5175 // CHECK-ERROR: sqshrun h20, s14, #99
5177 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5178 // CHECK-ERROR: sqshrun s10, d15, #99
5181 //----------------------------------------------------------------------
5182 // Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
5183 //----------------------------------------------------------------------
5185 sqrshrun b17, h10, #99
5186 sqrshrun h10, s13, #99
5187 sqrshrun s22, d16, #99
5189 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5190 // CHECK-ERROR: sqrshrun b17, h10, #99
5192 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5193 // CHECK-ERROR: sqrshrun h10, s13, #99
5195 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5196 // CHECK-ERROR: sqrshrun s22, d16, #99
5199 //----------------------------------------------------------------------
5200 // Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
5201 //----------------------------------------------------------------------
5208 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5209 // CHECK-ERROR: scvtf s22, s13, #0
5211 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5212 // CHECK-ERROR: scvtf s22, s13, #33
5214 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5215 // CHECK-ERROR: scvtf d21, d12, #65
5217 // CHECK-ERROR: error: invalid operand for instruction
5218 // CHECK-ERROR: scvtf d21, s12, #31
5221 //----------------------------------------------------------------------
5222 // Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
5223 //----------------------------------------------------------------------
5229 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5230 // CHECK-ERROR: ucvtf s22, s13, #34
5232 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5233 // CHECK-ERROR: ucvtf d21, d14, #65
5235 // CHECK-ERROR: error: invalid operand for instruction
5236 // CHECK-ERROR: ucvtf d21, s14, #64
5239 //------------------------------------------------------------------------------
5241 //------------------------------------------------------------------------------
5243 rev32 v30.2s, v31.2s
5244 rev32 v30.4s, v31.4s
5245 rev32 v30.2d, v31.2d
5252 // CHECK-ERROR: error: invalid operand for instruction
5253 // CHECK-ERROR: rev64 v6.2d, v8.2d
5255 // CHECK-ERROR: error: invalid operand for instruction
5256 // CHECK-ERROR: rev32 v30.2s, v31.2s
5258 // CHECK-ERROR: error: invalid operand for instruction
5259 // CHECK-ERROR: rev32 v30.4s, v31.4s
5261 // CHECK-ERROR: error: invalid operand for instruction
5262 // CHECK-ERROR: rev32 v30.2d, v31.2d
5264 // CHECK-ERROR: error: invalid operand for instruction
5265 // CHECK-ERROR: rev16 v21.4h, v1.4h
5267 // CHECK-ERROR: error: invalid operand for instruction
5268 // CHECK-ERROR: rev16 v21.8h, v1.8h
5270 // CHECK-ERROR: error: invalid operand for instruction
5271 // CHECK-ERROR: rev16 v21.2s, v1.2s
5273 // CHECK-ERROR: error: invalid operand for instruction
5274 // CHECK-ERROR: rev16 v21.4s, v1.4s
5276 // CHECK-ERROR: error: invalid operand for instruction
5277 // CHECK-ERROR: rev16 v21.2d, v1.2d
5280 //------------------------------------------------------------------------------
5281 // Signed integer pairwise add long
5282 //------------------------------------------------------------------------------
5284 saddlp v3.8h, v21.8h
5289 // CHECK-ERROR: error: invalid operand for instruction
5290 // CHECK-ERROR: saddlp v3.8h, v21.8h
5292 // CHECK-ERROR: error: invalid operand for instruction
5293 // CHECK-ERROR: saddlp v8.8b, v5.8b
5295 // CHECK-ERROR: error: invalid operand for instruction
5296 // CHECK-ERROR: saddlp v9.8h, v1.4s
5298 // CHECK-ERROR: error: invalid operand for instruction
5299 // CHECK-ERROR: saddlp v0.4s, v1.2d
5302 //------------------------------------------------------------------------------
5303 // Unsigned integer pairwise add long
5304 //------------------------------------------------------------------------------
5306 uaddlp v3.8h, v21.8h
5311 // CHECK-ERROR: error: invalid operand for instruction
5312 // CHECK-ERROR: uaddlp v3.8h, v21.8h
5314 // CHECK-ERROR: error: invalid operand for instruction
5315 // CHECK-ERROR: uaddlp v8.8b, v5.8b
5317 // CHECK-ERROR: error: invalid operand for instruction
5318 // CHECK-ERROR: uaddlp v9.8h, v1.4s
5320 // CHECK-ERROR: error: invalid operand for instruction
5321 // CHECK-ERROR: uaddlp v0.4s, v1.2d
5324 //------------------------------------------------------------------------------
5325 // Signed integer pairwise add and accumulate long
5326 //------------------------------------------------------------------------------
5328 sadalp v3.16b, v21.16b
5332 sadalp v12.2d, v4.8h
5334 // CHECK-ERROR: error: invalid operand for instruction
5335 // CHECK-ERROR: sadalp v3.16b, v21.16b
5337 // CHECK-ERROR: error: invalid operand for instruction
5338 // CHECK-ERROR: sadalp v8.4h, v5.4h
5340 // CHECK-ERROR: error: invalid operand for instruction
5341 // CHECK-ERROR: sadalp v9.4s, v1.4s
5343 // CHECK-ERROR: error: invalid operand for instruction
5344 // CHECK-ERROR: sadalp v0.4h, v1.2s
5346 // CHECK-ERROR: error: invalid operand for instruction
5347 // CHECK-ERROR: sadalp v12.2d, v4.8h
5350 //------------------------------------------------------------------------------
5351 // Unsigned integer pairwise add and accumulate long
5352 //------------------------------------------------------------------------------
5354 uadalp v3.16b, v21.16b
5358 uadalp v12.2d, v4.8h
5360 // CHECK-ERROR: error: invalid operand for instruction
5361 // CHECK-ERROR: uadalp v3.16b, v21.16b
5363 // CHECK-ERROR: error: invalid operand for instruction
5364 // CHECK-ERROR: uadalp v8.4h, v5.4h
5366 // CHECK-ERROR: error: invalid operand for instruction
5367 // CHECK-ERROR: uadalp v9.4s, v1.4s
5369 // CHECK-ERROR: error: invalid operand for instruction
5370 // CHECK-ERROR: uadalp v0.4h, v1.2s
5372 // CHECK-ERROR: error: invalid operand for instruction
5373 // CHECK-ERROR: uadalp v12.2d, v4.8h
5376 //------------------------------------------------------------------------------
5377 // Signed integer saturating accumulate of unsigned value
5378 //------------------------------------------------------------------------------
5380 suqadd v0.16b, v31.8b
5382 suqadd v13.4h, v21.4s
5385 // CHECK-ERROR: error: invalid operand for instruction
5386 // CHECK-ERROR: suqadd v0.16b, v31.8b
5388 // CHECK-ERROR: error: invalid operand for instruction
5389 // CHECK-ERROR: suqadd v1.8b, v9.8h
5391 // CHECK-ERROR: error: invalid operand for instruction
5392 // CHECK-ERROR: suqadd v13.4h, v21.4s
5394 // CHECK-ERROR: error: invalid operand for instruction
5395 // CHECK-ERROR: suqadd v4.2s, v0.2d
5398 //------------------------------------------------------------------------------
5399 // Unsigned integer saturating accumulate of signed value
5400 //------------------------------------------------------------------------------
5402 usqadd v0.16b, v31.8b
5404 usqadd v13.4h, v21.4s
5407 // CHECK-ERROR: error: invalid operand for instruction
5408 // CHECK-ERROR: usqadd v0.16b, v31.8b
5410 // CHECK-ERROR: error: invalid operand for instruction
5411 // CHECK-ERROR: usqadd v2.8h, v4.4h
5413 // CHECK-ERROR: error: invalid operand for instruction
5414 // CHECK-ERROR: usqadd v13.4h, v21.4s
5416 // CHECK-ERROR: error: invalid operand for instruction
5417 // CHECK-ERROR: usqadd v4.2s, v0.2d
5420 //------------------------------------------------------------------------------
5421 // Integer saturating absolute
5422 //------------------------------------------------------------------------------
5424 sqabs v0.16b, v31.8b
5429 // CHECK-ERROR: error: invalid operand for instruction
5430 // CHECK-ERROR: sqabs v0.16b, v31.8b
5432 // CHECK-ERROR: error: invalid operand for instruction
5433 // CHECK-ERROR: sqabs v2.8h, v4.4h
5435 // CHECK-ERROR: error: invalid operand for instruction
5436 // CHECK-ERROR: sqabs v6.4s, v8.2s
5438 // CHECK-ERROR: error: invalid operand for instruction
5439 // CHECK-ERROR: sqabs v6.2d, v8.2s
5442 //------------------------------------------------------------------------------
5443 // Signed integer saturating negate
5444 //------------------------------------------------------------------------------
5446 sqneg v0.16b, v31.8b
5451 // CHECK-ERROR: error: invalid operand for instruction
5452 // CHECK-ERROR: sqneg v0.16b, v31.8b
5454 // CHECK-ERROR: error: invalid operand for instruction
5455 // CHECK-ERROR: sqneg v2.8h, v4.4h
5457 // CHECK-ERROR: error: invalid operand for instruction
5458 // CHECK-ERROR: sqneg v6.4s, v8.2s
5460 // CHECK-ERROR: error: invalid operand for instruction
5461 // CHECK-ERROR: sqneg v6.2d, v8.2s
5464 //------------------------------------------------------------------------------
5466 //------------------------------------------------------------------------------
5473 // CHECK-ERROR: error: invalid operand for instruction
5474 // CHECK-ERROR: abs v0.16b, v31.8b
5476 // CHECK-ERROR: error: invalid operand for instruction
5477 // CHECK-ERROR: abs v2.8h, v4.4h
5479 // CHECK-ERROR: error: invalid operand for instruction
5480 // CHECK-ERROR: abs v6.4s, v8.2s
5482 // CHECK-ERROR: error: invalid operand for instruction
5483 // CHECK-ERROR: abs v6.2d, v8.2s
5486 //------------------------------------------------------------------------------
5487 // Integer count leading sign bits
5488 //------------------------------------------------------------------------------
5492 // CHECK-ERROR: error: invalid operand for instruction
5493 // CHECK-ERROR: cls v0.2d, v31.2d
5496 //------------------------------------------------------------------------------
5497 // Integer count leading zeros
5498 //------------------------------------------------------------------------------
5502 // CHECK-ERROR: error: invalid operand for instruction
5503 // CHECK-ERROR: clz v0.2d, v31.2d
5506 //------------------------------------------------------------------------------
5508 //------------------------------------------------------------------------------
5516 // CHECK-ERROR: error: invalid operand for instruction
5517 // CHECK-ERROR: cnt v2.8h, v4.8h
5519 // CHECK-ERROR: error: invalid operand for instruction
5520 // CHECK-ERROR: cnt v6.4s, v8.4s
5522 // CHECK-ERROR: error: invalid operand for instruction
5523 // CHECK-ERROR: cnt v6.2d, v8.2d
5525 // CHECK-ERROR: error: invalid operand for instruction
5526 // CHECK-ERROR: cnt v13.4h, v21.4h
5528 // CHECK-ERROR: error: invalid operand for instruction
5529 // CHECK-ERROR: cnt v4.2s, v0.2s
5533 //------------------------------------------------------------------------------
5535 //------------------------------------------------------------------------------
5543 // CHECK-ERROR: error: invalid operand for instruction
5544 // CHECK-ERROR: not v2.8h, v4.8h
5546 // CHECK-ERROR: error: invalid operand for instruction
5547 // CHECK-ERROR: not v6.4s, v8.4s
5549 // CHECK-ERROR: error: invalid operand for instruction
5550 // CHECK-ERROR: not v6.2d, v8.2d
5552 // CHECK-ERROR: error: invalid operand for instruction
5553 // CHECK-ERROR: not v13.4h, v21.4h
5555 // CHECK-ERROR: error: invalid operand for instruction
5556 // CHECK-ERROR: not v4.2s, v0.2s
5559 //------------------------------------------------------------------------------
5561 //------------------------------------------------------------------------------
5569 // CHECK-ERROR: error: invalid operand for instruction
5570 // CHECK-ERROR: rbit v2.8h, v4.8h
5572 // CHECK-ERROR: error: invalid operand for instruction
5573 // CHECK-ERROR: rbit v6.4s, v8.4s
5575 // CHECK-ERROR: error: invalid operand for instruction
5576 // CHECK-ERROR: rbit v6.2d, v8.2d
5578 // CHECK-ERROR: error: invalid operand for instruction
5579 // CHECK-ERROR: rbit v13.4h, v21.4h
5581 // CHECK-ERROR: error: invalid operand for instruction
5582 // CHECK-ERROR: rbit v4.2s, v0.2s
5585 //------------------------------------------------------------------------------
5586 // Floating-point absolute
5587 //------------------------------------------------------------------------------
5589 fabs v0.16b, v31.16b
5594 // CHECK-ERROR: error: invalid operand for instruction
5595 // CHECK-ERROR: fabs v0.16b, v31.16b
5597 // CHECK-ERROR: error: invalid operand for instruction
5598 // CHECK-ERROR: fabs v2.8h, v4.8h
5600 // CHECK-ERROR: error: invalid operand for instruction
5601 // CHECK-ERROR: fabs v1.8b, v9.8b
5603 // CHECK-ERROR: error: invalid operand for instruction
5604 // CHECK-ERROR: fabs v13.4h, v21.4h
5607 //------------------------------------------------------------------------------
5608 // Floating-point negate
5609 //------------------------------------------------------------------------------
5611 fneg v0.16b, v31.16b
5616 // CHECK-ERROR: error: invalid operand for instruction
5617 // CHECK-ERROR: fneg v0.16b, v31.16b
5619 // CHECK-ERROR: error: invalid operand for instruction
5620 // CHECK-ERROR: fneg v2.8h, v4.8h
5622 // CHECK-ERROR: error: invalid operand for instruction
5623 // CHECK-ERROR: fneg v1.8b, v9.8b
5625 // CHECK-ERROR: error: invalid operand for instruction
5626 // CHECK-ERROR: fneg v13.4h, v21.4h
5629 //------------------------------------------------------------------------------
5630 // Integer extract and narrow
5631 //------------------------------------------------------------------------------
5640 // CHECK-ERROR: error: invalid operand for instruction
5641 // CHECK-ERROR: xtn v0.16b, v31.8h
5643 // CHECK-ERROR: error: invalid operand for instruction
5644 // CHECK-ERROR: xtn v2.8h, v4.4s
5646 // CHECK-ERROR: error: invalid operand for instruction
5647 // CHECK-ERROR: xtn v6.4s, v8.2d
5649 // CHECK-ERROR: error: invalid operand for instruction
5650 // CHECK-ERROR: xtn2 v1.8b, v9.8h
5652 // CHECK-ERROR: error: invalid operand for instruction
5653 // CHECK-ERROR: xtn2 v13.4h, v21.4s
5655 // CHECK-ERROR: error: invalid operand for instruction
5656 // CHECK-ERROR: xtn2 v4.2s, v0.2d
5659 //------------------------------------------------------------------------------
5660 // Signed integer saturating extract and unsigned narrow
5661 //------------------------------------------------------------------------------
5663 sqxtun v0.16b, v31.8h
5666 sqxtun2 v1.8b, v9.8h
5667 sqxtun2 v13.4h, v21.4s
5668 sqxtun2 v4.2s, v0.2d
5670 // CHECK-ERROR: error: invalid operand for instruction
5671 // CHECK-ERROR: sqxtun v0.16b, v31.8h
5673 // CHECK-ERROR: error: invalid operand for instruction
5674 // CHECK-ERROR: sqxtun v2.8h, v4.4s
5676 // CHECK-ERROR: error: invalid operand for instruction
5677 // CHECK-ERROR: sqxtun v6.4s, v8.2d
5679 // CHECK-ERROR: error: invalid operand for instruction
5680 // CHECK-ERROR: sqxtun2 v1.8b, v9.8h
5682 // CHECK-ERROR: error: invalid operand for instruction
5683 // CHECK-ERROR: sqxtun2 v13.4h, v21.4s
5685 // CHECK-ERROR: error: invalid operand for instruction
5686 // CHECK-ERROR: sqxtun2 v4.2s, v0.2d
5689 //------------------------------------------------------------------------------
5690 // Signed integer saturating extract and narrow
5691 //------------------------------------------------------------------------------
5693 sqxtn v0.16b, v31.8h
5697 sqxtn2 v13.4h, v21.4s
5700 // CHECK-ERROR: error: invalid operand for instruction
5701 // CHECK-ERROR: sqxtn v0.16b, v31.8h
5703 // CHECK-ERROR: error: invalid operand for instruction
5704 // CHECK-ERROR: sqxtn v2.8h, v4.4s
5706 // CHECK-ERROR: error: invalid operand for instruction
5707 // CHECK-ERROR: sqxtn v6.4s, v8.2d
5709 // CHECK-ERROR: error: invalid operand for instruction
5710 // CHECK-ERROR: sqxtn2 v1.8b, v9.8h
5712 // CHECK-ERROR: error: invalid operand for instruction
5713 // CHECK-ERROR: sqxtn2 v13.4h, v21.4s
5715 // CHECK-ERROR: error: invalid operand for instruction
5716 // CHECK-ERROR: sqxtn2 v4.2s, v0.2d
5719 //------------------------------------------------------------------------------
5720 // Unsigned integer saturating extract and narrow
5721 //------------------------------------------------------------------------------
5723 uqxtn v0.16b, v31.8h
5727 uqxtn2 v13.4h, v21.4s
5730 // CHECK-ERROR: error: invalid operand for instruction
5731 // CHECK-ERROR: uqxtn v0.16b, v31.8h
5733 // CHECK-ERROR: error: invalid operand for instruction
5734 // CHECK-ERROR: uqxtn v2.8h, v4.4s
5736 // CHECK-ERROR: error: invalid operand for instruction
5737 // CHECK-ERROR: uqxtn v6.4s, v8.2d
5739 // CHECK-ERROR: error: invalid operand for instruction
5740 // CHECK-ERROR: uqxtn2 v1.8b, v9.8h
5742 // CHECK-ERROR: error: invalid operand for instruction
5743 // CHECK-ERROR: uqxtn2 v13.4h, v21.4s
5745 // CHECK-ERROR: error: invalid operand for instruction
5746 // CHECK-ERROR: uqxtn2 v4.2s, v0.2d
5749 //------------------------------------------------------------------------------
5750 // Integer shift left long
5751 //------------------------------------------------------------------------------
5753 shll2 v2.8h, v4.16b, #7
5754 shll2 v6.4s, v8.8h, #15
5755 shll2 v6.2d, v8.4s, #31
5756 shll v2.8h, v4.16b, #8
5757 shll v6.4s, v8.8h, #16
5758 shll v6.2d, v8.4s, #32
5759 shll v2.8h, v4.8b, #8
5760 shll v6.4s, v8.4h, #16
5761 shll v6.2d, v8.2s, #32
5762 shll2 v2.8h, v4.8b, #5
5763 shll2 v6.4s, v8.4h, #14
5764 shll2 v6.2d, v8.2s, #1
5766 // CHECK-ERROR: error: invalid operand for instruction
5767 // CHECK-ERROR: shll2 v2.8h, v4.16b, #7
5769 // CHECK-ERROR: error: invalid operand for instruction
5770 // CHECK-ERROR: shll2 v6.4s, v8.8h, #15
5772 // CHECK-ERROR: error: invalid operand for instruction
5773 // CHECK-ERROR: shll2 v6.2d, v8.4s, #31
5775 // CHECK-ERROR: error: invalid operand for instruction
5776 // CHECK-ERROR: shll v2.8h, v4.16b, #8
5778 // CHECK-ERROR: error: invalid operand for instruction
5779 // CHECK-ERROR: shll v6.4s, v8.8h, #16
5781 // CHECK-ERROR: error: invalid operand for instruction
5782 // CHECK-ERROR: shll v6.2d, v8.4s, #32
5784 // CHECK-ERROR: error: invalid operand for instruction
5785 // CHECK-ERROR: shll2 v2.8h, v4.8b, #5
5787 // CHECK-ERROR: error: invalid operand for instruction
5788 // CHECK-ERROR: shll2 v6.4s, v8.4h, #14
5790 // CHECK-ERROR: error: invalid operand for instruction
5791 // CHECK-ERROR: shll2 v6.2d, v8.2s, #1
5794 //------------------------------------------------------------------------------
5795 // Floating-point convert downsize
5796 //------------------------------------------------------------------------------
5800 fcvtn2 v13.4h, v21.4s
5803 // CHECK-ERROR: error: invalid operand for instruction
5804 // CHECK-ERROR: fcvtn v2.8h, v4.4s
5806 // CHECK-ERROR: error: invalid operand for instruction
5807 // CHECK-ERROR: fcvtn v6.4s, v8.2d
5809 // CHECK-ERROR: error: invalid operand for instruction
5810 // CHECK-ERROR: fcvtn2 v13.4h, v21.4s
5812 // CHECK-ERROR: error: invalid operand for instruction
5813 // CHECK-ERROR: fcvtn2 v4.2s, v0.2d
5816 //------------------------------------------------------------------------------
5817 // Floating-point convert downsize with inexact
5818 //------------------------------------------------------------------------------
5821 fcvtxn2 v4.2s, v0.2d
5823 // CHECK-ERROR: error: invalid operand for instruction
5824 // CHECK-ERROR: fcvtxn v6.4s, v8.2d
5826 // CHECK-ERROR: error: invalid operand for instruction
5827 // CHECK-ERROR: fcvtxn2 v4.2s, v0.2d
5830 //------------------------------------------------------------------------------
5831 // Floating-point convert upsize
5832 //------------------------------------------------------------------------------
5837 fcvtl v17.2d, v28.4s
5839 // CHECK-ERROR: error: invalid operand for instruction
5840 // CHECK-ERROR: fcvtl2 v9.4s, v1.4h
5842 // CHECK-ERROR: error: invalid operand for instruction
5843 // CHECK-ERROR: fcvtl2 v0.2d, v1.2s
5845 // CHECK-ERROR: error: invalid operand for instruction
5846 // CHECK-ERROR: fcvtl v12.4s, v4.8h
5848 // CHECK-ERROR: error: invalid operand for instruction
5849 // CHECK-ERROR: fcvtl v17.2d, v28.4s
5852 //------------------------------------------------------------------------------
5853 // Floating-point round to integral
5854 //------------------------------------------------------------------------------
5856 frintn v0.16b, v31.16b
5859 frintn v13.4h, v21.4h
5861 frinta v0.16b, v31.16b
5864 frinta v13.4h, v21.4h
5866 frintp v0.16b, v31.16b
5869 frintp v13.4h, v21.4h
5871 frintm v0.16b, v31.16b
5874 frintm v13.4h, v21.4h
5876 frintx v0.16b, v31.16b
5879 frintx v13.4h, v21.4h
5881 frintz v0.16b, v31.16b
5884 frintz v13.4h, v21.4h
5886 frinti v0.16b, v31.16b
5889 frinti v13.4h, v21.4h
5891 fcvtns v0.16b, v31.16b
5894 fcvtns v13.4h, v21.4h
5896 fcvtnu v0.16b, v31.16b
5899 fcvtnu v13.4h, v21.4h
5901 fcvtps v0.16b, v31.16b
5904 fcvtps v13.4h, v21.4h
5906 fcvtpu v0.16b, v31.16b
5909 fcvtpu v13.4h, v21.4h
5911 fcvtms v0.16b, v31.16b
5914 fcvtms v13.4h, v21.4h
5916 fcvtmu v0.16b, v31.16b
5919 fcvtmu v13.4h, v21.4h
5921 fcvtzs v0.16b, v31.16b
5924 fcvtzs v13.4h, v21.4h
5926 fcvtzu v0.16b, v31.16b
5929 fcvtzu v13.4h, v21.4h
5931 fcvtas v0.16b, v31.16b
5934 fcvtas v13.4h, v21.4h
5936 fcvtau v0.16b, v31.16b
5939 fcvtau v13.4h, v21.4h
5941 urecpe v0.16b, v31.16b
5944 urecpe v13.4h, v21.4h
5947 ursqrte v0.16b, v31.16b
5948 ursqrte v2.8h, v4.8h
5949 ursqrte v1.8b, v9.8b
5950 ursqrte v13.4h, v21.4h
5951 ursqrte v1.2d, v9.2d
5953 scvtf v0.16b, v31.16b
5956 scvtf v13.4h, v21.4h
5958 ucvtf v0.16b, v31.16b
5961 ucvtf v13.4h, v21.4h
5963 frecpe v0.16b, v31.16b
5966 frecpe v13.4h, v21.4h
5968 frsqrte v0.16b, v31.16b
5969 frsqrte v2.8h, v4.8h
5970 frsqrte v1.8b, v9.8b
5971 frsqrte v13.4h, v21.4h
5973 fsqrt v0.16b, v31.16b
5976 fsqrt v13.4h, v21.4h
5978 // CHECK-ERROR: error: invalid operand for instruction
5979 // CHECK-ERROR: frintn v0.16b, v31.16b
5981 // CHECK-ERROR: error: invalid operand for instruction
5982 // CHECK-ERROR: frintn v2.8h, v4.8h
5984 // CHECK-ERROR: error: invalid operand for instruction
5985 // CHECK-ERROR: frintn v1.8b, v9.8b
5987 // CHECK-ERROR: error: invalid operand for instruction
5988 // CHECK-ERROR: frintn v13.4h, v21.4h
5990 // CHECK-ERROR: error: invalid operand for instruction
5991 // CHECK-ERROR: frinta v0.16b, v31.16b
5993 // CHECK-ERROR: error: invalid operand for instruction
5994 // CHECK-ERROR: frinta v2.8h, v4.8h
5996 // CHECK-ERROR: error: invalid operand for instruction
5997 // CHECK-ERROR: frinta v1.8b, v9.8b
5999 // CHECK-ERROR: error: invalid operand for instruction
6000 // CHECK-ERROR: frinta v13.4h, v21.4h
6002 // CHECK-ERROR: error: invalid operand for instruction
6003 // CHECK-ERROR: frintp v0.16b, v31.16b
6005 // CHECK-ERROR: error: invalid operand for instruction
6006 // CHECK-ERROR: frintp v2.8h, v4.8h
6008 // CHECK-ERROR: error: invalid operand for instruction
6009 // CHECK-ERROR: frintp v1.8b, v9.8b
6011 // CHECK-ERROR: error: invalid operand for instruction
6012 // CHECK-ERROR: frintp v13.4h, v21.4h
6014 // CHECK-ERROR: error: invalid operand for instruction
6015 // CHECK-ERROR: frintm v0.16b, v31.16b
6017 // CHECK-ERROR: error: invalid operand for instruction
6018 // CHECK-ERROR: frintm v2.8h, v4.8h
6020 // CHECK-ERROR: error: invalid operand for instruction
6021 // CHECK-ERROR: frintm v1.8b, v9.8b
6023 // CHECK-ERROR: error: invalid operand for instruction
6024 // CHECK-ERROR: frintm v13.4h, v21.4h
6026 // CHECK-ERROR: error: invalid operand for instruction
6027 // CHECK-ERROR: frintx v0.16b, v31.16b
6029 // CHECK-ERROR: error: invalid operand for instruction
6030 // CHECK-ERROR: frintx v2.8h, v4.8h
6032 // CHECK-ERROR: error: invalid operand for instruction
6033 // CHECK-ERROR: frintx v1.8b, v9.8b
6035 // CHECK-ERROR: error: invalid operand for instruction
6036 // CHECK-ERROR: frintx v13.4h, v21.4h
6038 // CHECK-ERROR: error: invalid operand for instruction
6039 // CHECK-ERROR: frintz v0.16b, v31.16b
6041 // CHECK-ERROR: error: invalid operand for instruction
6042 // CHECK-ERROR: frintz v2.8h, v4.8h
6044 // CHECK-ERROR: error: invalid operand for instruction
6045 // CHECK-ERROR: frintz v1.8b, v9.8b
6047 // CHECK-ERROR: error: invalid operand for instruction
6048 // CHECK-ERROR: frintz v13.4h, v21.4h
6050 // CHECK-ERROR: error: invalid operand for instruction
6051 // CHECK-ERROR: frinti v0.16b, v31.16b
6053 // CHECK-ERROR: error: invalid operand for instruction
6054 // CHECK-ERROR: frinti v2.8h, v4.8h
6056 // CHECK-ERROR: error: invalid operand for instruction
6057 // CHECK-ERROR: frinti v1.8b, v9.8b
6059 // CHECK-ERROR: error: invalid operand for instruction
6060 // CHECK-ERROR: frinti v13.4h, v21.4h
6062 // CHECK-ERROR: error: invalid operand for instruction
6063 // CHECK-ERROR: fcvtns v0.16b, v31.16b
6065 // CHECK-ERROR: error: invalid operand for instruction
6066 // CHECK-ERROR: fcvtns v2.8h, v4.8h
6068 // CHECK-ERROR: error: invalid operand for instruction
6069 // CHECK-ERROR: fcvtns v1.8b, v9.8b
6071 // CHECK-ERROR: error: invalid operand for instruction
6072 // CHECK-ERROR: fcvtns v13.4h, v21.4h
6074 // CHECK-ERROR: error: invalid operand for instruction
6075 // CHECK-ERROR: fcvtnu v0.16b, v31.16b
6077 // CHECK-ERROR: error: invalid operand for instruction
6078 // CHECK-ERROR: fcvtnu v2.8h, v4.8h
6080 // CHECK-ERROR: error: invalid operand for instruction
6081 // CHECK-ERROR: fcvtnu v1.8b, v9.8b
6083 // CHECK-ERROR: error: invalid operand for instruction
6084 // CHECK-ERROR: fcvtnu v13.4h, v21.4h
6086 // CHECK-ERROR: error: invalid operand for instruction
6087 // CHECK-ERROR: fcvtps v0.16b, v31.16b
6089 // CHECK-ERROR: error: invalid operand for instruction
6090 // CHECK-ERROR: fcvtps v2.8h, v4.8h
6092 // CHECK-ERROR: error: invalid operand for instruction
6093 // CHECK-ERROR: fcvtps v1.8b, v9.8b
6095 // CHECK-ERROR: error: invalid operand for instruction
6096 // CHECK-ERROR: fcvtps v13.4h, v21.4h
6098 // CHECK-ERROR: error: invalid operand for instruction
6099 // CHECK-ERROR: fcvtpu v0.16b, v31.16b
6101 // CHECK-ERROR: error: invalid operand for instruction
6102 // CHECK-ERROR: fcvtpu v2.8h, v4.8h
6104 // CHECK-ERROR: error: invalid operand for instruction
6105 // CHECK-ERROR: fcvtpu v1.8b, v9.8b
6107 // CHECK-ERROR: error: invalid operand for instruction
6108 // CHECK-ERROR: fcvtpu v13.4h, v21.4h
6110 // CHECK-ERROR: error: invalid operand for instruction
6111 // CHECK-ERROR: fcvtms v0.16b, v31.16b
6113 // CHECK-ERROR: error: invalid operand for instruction
6114 // CHECK-ERROR: fcvtms v2.8h, v4.8h
6116 // CHECK-ERROR: error: invalid operand for instruction
6117 // CHECK-ERROR: fcvtms v1.8b, v9.8b
6119 // CHECK-ERROR: error: invalid operand for instruction
6120 // CHECK-ERROR: fcvtms v13.4h, v21.4h
6122 // CHECK-ERROR: error: invalid operand for instruction
6123 // CHECK-ERROR: fcvtmu v0.16b, v31.16b
6125 // CHECK-ERROR: error: invalid operand for instruction
6126 // CHECK-ERROR: fcvtmu v2.8h, v4.8h
6128 // CHECK-ERROR: error: invalid operand for instruction
6129 // CHECK-ERROR: fcvtmu v1.8b, v9.8b
6131 // CHECK-ERROR: error: invalid operand for instruction
6132 // CHECK-ERROR: fcvtmu v13.4h, v21.4h
6134 // CHECK-ERROR: error: invalid operand for instruction
6135 // CHECK-ERROR: fcvtzs v0.16b, v31.16b
6137 // CHECK-ERROR: error: invalid operand for instruction
6138 // CHECK-ERROR: fcvtzs v2.8h, v4.8h
6140 // CHECK-ERROR: error: invalid operand for instruction
6141 // CHECK-ERROR: fcvtzs v1.8b, v9.8b
6143 // CHECK-ERROR: error: invalid operand for instruction
6144 // CHECK-ERROR: fcvtzs v13.4h, v21.4h
6146 // CHECK-ERROR: error: invalid operand for instruction
6147 // CHECK-ERROR: fcvtzu v0.16b, v31.16b
6149 // CHECK-ERROR: error: invalid operand for instruction
6150 // CHECK-ERROR: fcvtzu v2.8h, v4.8h
6152 // CHECK-ERROR: error: invalid operand for instruction
6153 // CHECK-ERROR: fcvtzu v1.8b, v9.8b
6155 // CHECK-ERROR: error: invalid operand for instruction
6156 // CHECK-ERROR: fcvtzu v13.4h, v21.4h
6158 // CHECK-ERROR: error: invalid operand for instruction
6159 // CHECK-ERROR: fcvtas v0.16b, v31.16b
6161 // CHECK-ERROR: error: invalid operand for instruction
6162 // CHECK-ERROR: fcvtas v2.8h, v4.8h
6164 // CHECK-ERROR: error: invalid operand for instruction
6165 // CHECK-ERROR: fcvtas v1.8b, v9.8b
6167 // CHECK-ERROR: error: invalid operand for instruction
6168 // CHECK-ERROR: fcvtas v13.4h, v21.4h
6170 // CHECK-ERROR: error: invalid operand for instruction
6171 // CHECK-ERROR: fcvtau v0.16b, v31.16b
6173 // CHECK-ERROR: error: invalid operand for instruction
6174 // CHECK-ERROR: fcvtau v2.8h, v4.8h
6176 // CHECK-ERROR: error: invalid operand for instruction
6177 // CHECK-ERROR: fcvtau v1.8b, v9.8b
6179 // CHECK-ERROR: error: invalid operand for instruction
6180 // CHECK-ERROR: fcvtau v13.4h, v21.4h
6182 // CHECK-ERROR: error: invalid operand for instruction
6183 // CHECK-ERROR: urecpe v0.16b, v31.16b
6185 // CHECK-ERROR: error: invalid operand for instruction
6186 // CHECK-ERROR: urecpe v2.8h, v4.8h
6188 // CHECK-ERROR: error: invalid operand for instruction
6189 // CHECK-ERROR: urecpe v1.8b, v9.8b
6191 // CHECK-ERROR: error: invalid operand for instruction
6192 // CHECK-ERROR: urecpe v13.4h, v21.4h
6194 // CHECK-ERROR: error: invalid operand for instruction
6195 // CHECK-ERROR: urecpe v1.2d, v9.2d
6197 // CHECK-ERROR: error: invalid operand for instruction
6198 // CHECK-ERROR: ursqrte v0.16b, v31.16b
6200 // CHECK-ERROR: error: invalid operand for instruction
6201 // CHECK-ERROR: ursqrte v2.8h, v4.8h
6203 // CHECK-ERROR: error: invalid operand for instruction
6204 // CHECK-ERROR: ursqrte v1.8b, v9.8b
6206 // CHECK-ERROR: error: invalid operand for instruction
6207 // CHECK-ERROR: ursqrte v13.4h, v21.4h
6209 // CHECK-ERROR: error: invalid operand for instruction
6210 // CHECK-ERROR: ursqrte v1.2d, v9.2d
6212 // CHECK-ERROR: error: invalid operand for instruction
6213 // CHECK-ERROR: scvtf v0.16b, v31.16b
6215 // CHECK-ERROR: error: invalid operand for instruction
6216 // CHECK-ERROR: scvtf v2.8h, v4.8h
6218 // CHECK-ERROR: error: invalid operand for instruction
6219 // CHECK-ERROR: scvtf v1.8b, v9.8b
6221 // CHECK-ERROR: error: invalid operand for instruction
6222 // CHECK-ERROR: scvtf v13.4h, v21.4h
6224 // CHECK-ERROR: error: invalid operand for instruction
6225 // CHECK-ERROR: ucvtf v0.16b, v31.16b
6227 // CHECK-ERROR: error: invalid operand for instruction
6228 // CHECK-ERROR: ucvtf v2.8h, v4.8h
6230 // CHECK-ERROR: error: invalid operand for instruction
6231 // CHECK-ERROR: ucvtf v1.8b, v9.8b
6233 // CHECK-ERROR: error: invalid operand for instruction
6234 // CHECK-ERROR: ucvtf v13.4h, v21.4h
6236 // CHECK-ERROR: error: invalid operand for instruction
6237 // CHECK-ERROR: frecpe v0.16b, v31.16b
6239 // CHECK-ERROR: error: invalid operand for instruction
6240 // CHECK-ERROR: frecpe v2.8h, v4.8h
6242 // CHECK-ERROR: error: invalid operand for instruction
6243 // CHECK-ERROR: frecpe v1.8b, v9.8b
6245 // CHECK-ERROR: error: invalid operand for instruction
6246 // CHECK-ERROR: frecpe v13.4h, v21.4h
6248 // CHECK-ERROR: error: invalid operand for instruction
6249 // CHECK-ERROR: frsqrte v0.16b, v31.16b
6251 // CHECK-ERROR: error: invalid operand for instruction
6252 // CHECK-ERROR: frsqrte v2.8h, v4.8h
6254 // CHECK-ERROR: error: invalid operand for instruction
6255 // CHECK-ERROR: frsqrte v1.8b, v9.8b
6257 // CHECK-ERROR: error: invalid operand for instruction
6258 // CHECK-ERROR: frsqrte v13.4h, v21.4h
6260 // CHECK-ERROR: error: invalid operand for instruction
6261 // CHECK-ERROR: fsqrt v0.16b, v31.16b
6263 // CHECK-ERROR: error: invalid operand for instruction
6264 // CHECK-ERROR: fsqrt v2.8h, v4.8h
6266 // CHECK-ERROR: error: invalid operand for instruction
6267 // CHECK-ERROR: fsqrt v1.8b, v9.8b
6269 // CHECK-ERROR: error: invalid operand for instruction
6270 // CHECK-ERROR: fsqrt v13.4h, v21.4h
6273 //----------------------------------------------------------------------
6274 // Scalar Floating-point Convert To Signed Fixed-point (Immediate)
6275 //----------------------------------------------------------------------
6278 fcvtzs d21, d12, #65
6281 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
6282 // CHECK-ERROR: fcvtzs s21, s12, #0
6284 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
6285 // CHECK-ERROR: fcvtzs d21, d12, #65
6287 // CHECK-ERROR: error: invalid operand for instruction
6288 // CHECK-ERROR: fcvtzs s21, d12, #1
6291 //----------------------------------------------------------------------
6292 // Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
6293 //----------------------------------------------------------------------
6295 fcvtzu s21, s12, #33
6299 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
6300 // CHECK-ERROR: fcvtzu s21, s12, #33
6302 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
6303 // CHECK-ERROR: fcvtzu d21, d12, #0
6305 // CHECK-ERROR: error: invalid operand for instruction
6306 // CHECK-ERROR: fcvtzu s21, d12, #1
6309 //----------------------------------------------------------------------
6310 // Scalar Unsigned Saturating Extract Narrow
6311 //----------------------------------------------------------------------
6320 // CHECK: error: invalid operand for instruction
6321 // CHECK: aese v0.8h, v1.8h
6323 // CHECK: error: invalid operand for instruction
6324 // CHECK: aese v0.4s, v1.4s
6326 // CHECK: error: invalid operand for instruction
6327 // CHECK: aese v0.2d, v1.2d
6329 // CHECK: error: invalid operand for instruction
6330 // CHECK: aesd v0.8h, v1.8h
6332 // CHECK: error: invalid operand for instruction
6333 // CHECK: aesmc v0.8h, v1.8h
6335 // CHECK: error: invalid operand for instruction
6336 // CHECK: aesimc v0.8h, v1.8h
6343 sha1su1 v0.16b, v1.16b
6344 sha1su1 v0.8h, v1.8h
6345 sha1su1 v0.2d, v1.2d
6346 sha256su0 v0.16b, v1.16b
6348 // CHECK: error: invalid operand for instruction
6349 // CHECK: sha1h b0, b1
6351 // CHECK: error: invalid operand for instruction
6352 // CHECK: sha1h h0, h1
6354 // CHECK: error: invalid operand for instruction
6355 // CHECK: sha1h d0, d1
6357 // CHECK: error: invalid operand for instruction
6358 // CHECK: sha1h q0, q1
6360 // CHECK: error: invalid operand for instruction
6361 // CHECK: sha1su1 v0.16b, v1.16b
6363 // CHECK: error: invalid operand for instruction
6364 // CHECK: sha1su1 v0.8h, v1.8h
6366 // CHECK: error: invalid operand for instruction
6367 // CHECK: sha1su1 v0.2d, v1.2d
6369 // CHECK: error: invalid operand for instruction
6370 // CHECK: sha256su0 v0.16b, v1.16b
6376 sha1su0 v0.16b, v1.16b, v2.16b
6377 sha1su0 v0.8h, v1.8h, v2.8h
6378 sha1su0 v0.2d, v1.2d, v2.2d
6380 sha256h v0.4s, v1.4s, v2.4s
6382 sha256su1 v0.16b, v1.16b, v2.16b
6384 // CHECK: error: invalid operand for instruction
6385 // CHECK: sha1c q0, q1, v2.4s
6387 // CHECK: error: invalid operand for instruction
6388 // CHECK: sha1p q0, q1, v2.4s
6390 // CHECK: error: invalid operand for instruction
6391 // CHECK: sha1m q0, q1, v2.4s
6393 // CHECK: error: invalid operand for instruction
6394 // CHECK: sha1su0 v0.16b, v1.16b, v2.16b
6396 // CHECK: error: invalid operand for instruction
6397 // CHECK: sha1su0 v0.8h, v1.8h, v2.8h
6399 // CHECK: error: invalid operand for instruction
6400 // CHECK: sha1su0 v0.2d, v1.2d, v2.2d
6402 // CHECK: error: too few operands for instruction
6403 // CHECK: sha256h q0, q1, q2
6405 // CHECK: error: invalid operand for instruction
6406 // CHECK: sha256h v0.4s, v1.4s, v2.4s
6408 // CHECK: error: too few operands for instruction
6409 // CHECK: sha256h2 q0, q1, q2
6411 // CHECK: error: invalid operand for instruction
6412 // CHECK: sha256su1 v0.16b, v1.16b, v2.16b
6415 //----------------------------------------------------------------------
6417 //----------------------------------------------------------------------
6419 ext v0.8b, v1.8b, v2.4h, #0x3
6420 ext v0.4h, v1.4h, v2.4h, #0x3
6421 ext v0.2s, v1.2s, v2.2s, #0x1
6422 ext v0.1d, v1.1d, v2.1d, #0x0
6424 // CHECK-ERROR: error: invalid operand for instruction
6425 // CHECK-ERROR: ext v0.8b, v1.8b, v2.4h, #0x3
6427 // CHECK-ERROR: error: invalid operand for instruction
6428 // CHECK-ERROR: ext v0.4h, v1.4h, v2.4h, #0x3
6430 // CHECK-ERROR: error: invalid operand for instruction
6431 // CHECK-ERROR: ext v0.2s, v1.2s, v2.2s, #0x1
6433 // CHECK-ERROR: error: invalid operand for instruction
6434 // CHECK-ERROR: ext v0.1d, v1.1d, v2.1d, #0x0
6437 ext v0.16b, v1.16b, v2.8h, #0x3
6438 ext v0.8h, v1.8h, v2.8h, #0x3
6439 ext v0.4s, v1.4s, v2.4s, #0x1
6440 ext v0.2d, v1.2d, v2.2d, #0x0
6442 // CHECK-ERROR: error: invalid operand for instruction
6443 // CHECK-ERROR: ext v0.16b, v1.16b, v2.8h, #0x3
6445 // CHECK-ERROR: error: invalid operand for instruction
6446 // CHECK-ERROR: ext v0.8h, v1.8h, v2.8h, #0x3
6448 // CHECK-ERROR: error: invalid operand for instruction
6449 // CHECK-ERROR: ext v0.4s, v1.4s, v2.4s, #0x1
6451 // CHECK-ERROR: error: invalid operand for instruction
6452 // CHECK-ERROR: ext v0.2d, v1.2d, v2.2d, #0x0
6456 //----------------------------------------------------------------------
6457 // Permutation with 3 vectors
6458 //----------------------------------------------------------------------
6460 uzp1 v0.16b, v1.8b, v2.8b
6461 uzp1 v0.8b, v1.4b, v2.4b
6462 uzp1 v0.8h, v1.4h, v2.4h
6463 uzp1 v0.4h, v1.2h, v2.2h
6464 uzp1 v0.4s, v1.2s, v2.2s
6465 uzp1 v0.2s, v1.1s, v2.1s
6466 uzp1 v0.2d, v1.1d, v2.1d
6467 uzp1 v0.1d, v1.1d, v2.1d
6469 // CHECK-ERROR: error: invalid operand for instruction
6470 // CHECK-ERROR: uzp1 v0.16b, v1.8b, v2.8b
6472 // CHECK-ERROR: error: invalid operand for instruction
6473 // CHECK-ERROR: uzp1 v0.8b, v1.4b, v2.4b
6475 // CHECK-ERROR: error: invalid operand for instruction
6476 // CHECK-ERROR: uzp1 v0.8h, v1.4h, v2.4h
6478 // CHECK-ERROR: error: invalid operand for instruction
6479 // CHECK-ERROR: uzp1 v0.4h, v1.2h, v2.2h
6481 // CHECK-ERROR: error: invalid operand for instruction
6482 // CHECK-ERROR: uzp1 v0.4s, v1.2s, v2.2s
6484 // CHECK-ERROR: error: invalid operand for instruction
6485 // CHECK-ERROR: uzp1 v0.2s, v1.1s, v2.1s
6487 // CHECK-ERROR: error: invalid operand for instruction
6488 // CHECK-ERROR: uzp1 v0.2d, v1.1d, v2.1d
6490 // CHECK-ERROR: error: invalid operand for instruction
6491 // CHECK-ERROR: uzp1 v0.1d, v1.1d, v2.1d
6494 uzp2 v0.16b, v1.8b, v2.8b
6495 uzp2 v0.8b, v1.4b, v2.4b
6496 uzp2 v0.8h, v1.4h, v2.4h
6497 uzp2 v0.4h, v1.2h, v2.2h
6498 uzp2 v0.4s, v1.2s, v2.2s
6499 uzp2 v0.2s, v1.1s, v2.1s
6500 uzp2 v0.2d, v1.1d, v2.1d
6501 uzp2 v0.1d, v1.1d, v2.1d
6503 // CHECK-ERROR: error: invalid operand for instruction
6504 // CHECK-ERROR: uzp2 v0.16b, v1.8b, v2.8b
6506 // CHECK-ERROR: error: invalid operand for instruction
6507 // CHECK-ERROR: uzp2 v0.8b, v1.4b, v2.4b
6509 // CHECK-ERROR: error: invalid operand for instruction
6510 // CHECK-ERROR: uzp2 v0.8h, v1.4h, v2.4h
6512 // CHECK-ERROR: error: invalid operand for instruction
6513 // CHECK-ERROR: uzp2 v0.4h, v1.2h, v2.2h
6515 // CHECK-ERROR: error: invalid operand for instruction
6516 // CHECK-ERROR: uzp2 v0.4s, v1.2s, v2.2s
6518 // CHECK-ERROR: error: invalid operand for instruction
6519 // CHECK-ERROR: uzp2 v0.2s, v1.1s, v2.1s
6521 // CHECK-ERROR: error: invalid operand for instruction
6522 // CHECK-ERROR: uzp2 v0.2d, v1.1d, v2.1d
6524 // CHECK-ERROR: error: invalid operand for instruction
6525 // CHECK-ERROR: uzp2 v0.1d, v1.1d, v2.1d
6528 zip1 v0.16b, v1.8b, v2.8b
6529 zip1 v0.8b, v1.4b, v2.4b
6530 zip1 v0.8h, v1.4h, v2.4h
6531 zip1 v0.4h, v1.2h, v2.2h
6532 zip1 v0.4s, v1.2s, v2.2s
6533 zip1 v0.2s, v1.1s, v2.1s
6534 zip1 v0.2d, v1.1d, v2.1d
6535 zip1 v0.1d, v1.1d, v2.1d
6537 // CHECK-ERROR: error: invalid operand for instruction
6538 // CHECK-ERROR: zip1 v0.16b, v1.8b, v2.8b
6540 // CHECK-ERROR: error: invalid operand for instruction
6541 // CHECK-ERROR: zip1 v0.8b, v1.4b, v2.4b
6543 // CHECK-ERROR: error: invalid operand for instruction
6544 // CHECK-ERROR: zip1 v0.8h, v1.4h, v2.4h
6546 // CHECK-ERROR: error: invalid operand for instruction
6547 // CHECK-ERROR: zip1 v0.4h, v1.2h, v2.2h
6549 // CHECK-ERROR: error: invalid operand for instruction
6550 // CHECK-ERROR: zip1 v0.4s, v1.2s, v2.2s
6552 // CHECK-ERROR: error: invalid operand for instruction
6553 // CHECK-ERROR: zip1 v0.2s, v1.1s, v2.1s
6555 // CHECK-ERROR: error: invalid operand for instruction
6556 // CHECK-ERROR: zip1 v0.2d, v1.1d, v2.1d
6558 // CHECK-ERROR: error: invalid operand for instruction
6559 // CHECK-ERROR: zip1 v0.1d, v1.1d, v2.1d
6562 zip2 v0.16b, v1.8b, v2.8b
6563 zip2 v0.8b, v1.4b, v2.4b
6564 zip2 v0.8h, v1.4h, v2.4h
6565 zip2 v0.4h, v1.2h, v2.2h
6566 zip2 v0.4s, v1.2s, v2.2s
6567 zip2 v0.2s, v1.1s, v2.1s
6568 zip2 v0.2d, v1.1d, v2.1d
6569 zip2 v0.1d, v1.1d, v2.1d
6571 // CHECK-ERROR: error: invalid operand for instruction
6572 // CHECK-ERROR: zip2 v0.16b, v1.8b, v2.8b
6574 // CHECK-ERROR: error: invalid operand for instruction
6575 // CHECK-ERROR: zip2 v0.8b, v1.4b, v2.4b
6577 // CHECK-ERROR: error: invalid operand for instruction
6578 // CHECK-ERROR: zip2 v0.8h, v1.4h, v2.4h
6580 // CHECK-ERROR: error: invalid operand for instruction
6581 // CHECK-ERROR: zip2 v0.4h, v1.2h, v2.2h
6583 // CHECK-ERROR: error: invalid operand for instruction
6584 // CHECK-ERROR: zip2 v0.4s, v1.2s, v2.2s
6586 // CHECK-ERROR: error: invalid operand for instruction
6587 // CHECK-ERROR: zip2 v0.2s, v1.1s, v2.1s
6589 // CHECK-ERROR: error: invalid operand for instruction
6590 // CHECK-ERROR: zip2 v0.2d, v1.1d, v2.1d
6592 // CHECK-ERROR: error: invalid operand for instruction
6593 // CHECK-ERROR: zip2 v0.1d, v1.1d, v2.1d
6596 trn1 v0.16b, v1.8b, v2.8b
6597 trn1 v0.8b, v1.4b, v2.4b
6598 trn1 v0.8h, v1.4h, v2.4h
6599 trn1 v0.4h, v1.2h, v2.2h
6600 trn1 v0.4s, v1.2s, v2.2s
6601 trn1 v0.2s, v1.1s, v2.1s
6602 trn1 v0.2d, v1.1d, v2.1d
6603 trn1 v0.1d, v1.1d, v2.1d
6605 // CHECK-ERROR: error: invalid operand for instruction
6606 // CHECK-ERROR: trn1 v0.16b, v1.8b, v2.8b
6608 // CHECK-ERROR: error: invalid operand for instruction
6609 // CHECK-ERROR: trn1 v0.8b, v1.4b, v2.4b
6611 // CHECK-ERROR: error: invalid operand for instruction
6612 // CHECK-ERROR: trn1 v0.8h, v1.4h, v2.4h
6614 // CHECK-ERROR: error: invalid operand for instruction
6615 // CHECK-ERROR: trn1 v0.4h, v1.2h, v2.2h
6617 // CHECK-ERROR: error: invalid operand for instruction
6618 // CHECK-ERROR: trn1 v0.4s, v1.2s, v2.2s
6620 // CHECK-ERROR: error: invalid operand for instruction
6621 // CHECK-ERROR: trn1 v0.2s, v1.1s, v2.1s
6623 // CHECK-ERROR: error: invalid operand for instruction
6624 // CHECK-ERROR: trn1 v0.2d, v1.1d, v2.1d
6626 // CHECK-ERROR: error: invalid operand for instruction
6627 // CHECK-ERROR: trn1 v0.1d, v1.1d, v2.1d
6630 trn2 v0.16b, v1.8b, v2.8b
6631 trn2 v0.8b, v1.4b, v2.4b
6632 trn2 v0.8h, v1.4h, v2.4h
6633 trn2 v0.4h, v1.2h, v2.2h
6634 trn2 v0.4s, v1.2s, v2.2s
6635 trn2 v0.2s, v1.1s, v2.1s
6636 trn2 v0.2d, v1.1d, v2.1d
6637 trn2 v0.1d, v1.1d, v2.1d
6639 // CHECK-ERROR: error: invalid operand for instruction
6640 // CHECK-ERROR: trn2 v0.16b, v1.8b, v2.8b
6642 // CHECK-ERROR: error: invalid operand for instruction
6643 // CHECK-ERROR: trn2 v0.8b, v1.4b, v2.4b
6645 // CHECK-ERROR: error: invalid operand for instruction
6646 // CHECK-ERROR: trn2 v0.8h, v1.4h, v2.4h
6648 // CHECK-ERROR: error: invalid operand for instruction
6649 // CHECK-ERROR: trn2 v0.4h, v1.2h, v2.2h
6651 // CHECK-ERROR: error: invalid operand for instruction
6652 // CHECK-ERROR: trn2 v0.4s, v1.2s, v2.2s
6654 // CHECK-ERROR: error: invalid operand for instruction
6655 // CHECK-ERROR: trn2 v0.2s, v1.1s, v2.1s
6657 // CHECK-ERROR: error: invalid operand for instruction
6658 // CHECK-ERROR: trn2 v0.2d, v1.1d, v2.1d
6660 // CHECK-ERROR: error: invalid operand for instruction
6661 // CHECK-ERROR: trn2 v0.1d, v1.1d, v2.1d
6664 //----------------------------------------------------------------------
6665 // Permutation with 3 vectors
6666 //----------------------------------------------------------------------
6668 uzp1 v0.16b, v1.8b, v2.8b
6669 uzp1 v0.8b, v1.4b, v2.4b
6670 uzp1 v0.8h, v1.4h, v2.4h
6671 uzp1 v0.4h, v1.2h, v2.2h
6672 uzp1 v0.4s, v1.2s, v2.2s
6673 uzp1 v0.2s, v1.1s, v2.1s
6674 uzp1 v0.2d, v1.1d, v2.1d
6675 uzp1 v0.1d, v1.1d, v2.1d
6677 // CHECK-ERROR: error: invalid operand for instruction
6678 // CHECK-ERROR: uzp1 v0.16b, v1.8b, v2.8b
6680 // CHECK-ERROR: error: invalid operand for instruction
6681 // CHECK-ERROR: uzp1 v0.8b, v1.4b, v2.4b
6683 // CHECK-ERROR: error: invalid operand for instruction
6684 // CHECK-ERROR: uzp1 v0.8h, v1.4h, v2.4h
6686 // CHECK-ERROR: error: invalid operand for instruction
6687 // CHECK-ERROR: uzp1 v0.4h, v1.2h, v2.2h
6689 // CHECK-ERROR: error: invalid operand for instruction
6690 // CHECK-ERROR: uzp1 v0.4s, v1.2s, v2.2s
6692 // CHECK-ERROR: error: invalid operand for instruction
6693 // CHECK-ERROR: uzp1 v0.2s, v1.1s, v2.1s
6695 // CHECK-ERROR: error: invalid operand for instruction
6696 // CHECK-ERROR: uzp1 v0.2d, v1.1d, v2.1d
6698 // CHECK-ERROR: error: invalid operand for instruction
6699 // CHECK-ERROR: uzp1 v0.1d, v1.1d, v2.1d
6702 uzp2 v0.16b, v1.8b, v2.8b
6703 uzp2 v0.8b, v1.4b, v2.4b
6704 uzp2 v0.8h, v1.4h, v2.4h
6705 uzp2 v0.4h, v1.2h, v2.2h
6706 uzp2 v0.4s, v1.2s, v2.2s
6707 uzp2 v0.2s, v1.1s, v2.1s
6708 uzp2 v0.2d, v1.1d, v2.1d
6709 uzp2 v0.1d, v1.1d, v2.1d
6711 // CHECK-ERROR: error: invalid operand for instruction
6712 // CHECK-ERROR: uzp2 v0.16b, v1.8b, v2.8b
6714 // CHECK-ERROR: error: invalid operand for instruction
6715 // CHECK-ERROR: uzp2 v0.8b, v1.4b, v2.4b
6717 // CHECK-ERROR: error: invalid operand for instruction
6718 // CHECK-ERROR: uzp2 v0.8h, v1.4h, v2.4h
6720 // CHECK-ERROR: error: invalid operand for instruction
6721 // CHECK-ERROR: uzp2 v0.4h, v1.2h, v2.2h
6723 // CHECK-ERROR: error: invalid operand for instruction
6724 // CHECK-ERROR: uzp2 v0.4s, v1.2s, v2.2s
6726 // CHECK-ERROR: error: invalid operand for instruction
6727 // CHECK-ERROR: uzp2 v0.2s, v1.1s, v2.1s
6729 // CHECK-ERROR: error: invalid operand for instruction
6730 // CHECK-ERROR: uzp2 v0.2d, v1.1d, v2.1d
6732 // CHECK-ERROR: error: invalid operand for instruction
6733 // CHECK-ERROR: uzp2 v0.1d, v1.1d, v2.1d
6736 zip1 v0.16b, v1.8b, v2.8b
6737 zip1 v0.8b, v1.4b, v2.4b
6738 zip1 v0.8h, v1.4h, v2.4h
6739 zip1 v0.4h, v1.2h, v2.2h
6740 zip1 v0.4s, v1.2s, v2.2s
6741 zip1 v0.2s, v1.1s, v2.1s
6742 zip1 v0.2d, v1.1d, v2.1d
6743 zip1 v0.1d, v1.1d, v2.1d
6745 // CHECK-ERROR: error: invalid operand for instruction
6746 // CHECK-ERROR: zip1 v0.16b, v1.8b, v2.8b
6748 // CHECK-ERROR: error: invalid operand for instruction
6749 // CHECK-ERROR: zip1 v0.8b, v1.4b, v2.4b
6751 // CHECK-ERROR: error: invalid operand for instruction
6752 // CHECK-ERROR: zip1 v0.8h, v1.4h, v2.4h
6754 // CHECK-ERROR: error: invalid operand for instruction
6755 // CHECK-ERROR: zip1 v0.4h, v1.2h, v2.2h
6757 // CHECK-ERROR: error: invalid operand for instruction
6758 // CHECK-ERROR: zip1 v0.4s, v1.2s, v2.2s
6760 // CHECK-ERROR: error: invalid operand for instruction
6761 // CHECK-ERROR: zip1 v0.2s, v1.1s, v2.1s
6763 // CHECK-ERROR: error: invalid operand for instruction
6764 // CHECK-ERROR: zip1 v0.2d, v1.1d, v2.1d
6766 // CHECK-ERROR: error: invalid operand for instruction
6767 // CHECK-ERROR: zip1 v0.1d, v1.1d, v2.1d
6770 zip2 v0.16b, v1.8b, v2.8b
6771 zip2 v0.8b, v1.4b, v2.4b
6772 zip2 v0.8h, v1.4h, v2.4h
6773 zip2 v0.4h, v1.2h, v2.2h
6774 zip2 v0.4s, v1.2s, v2.2s
6775 zip2 v0.2s, v1.1s, v2.1s
6776 zip2 v0.2d, v1.1d, v2.1d
6777 zip2 v0.1d, v1.1d, v2.1d
6779 // CHECK-ERROR: error: invalid operand for instruction
6780 // CHECK-ERROR: zip2 v0.16b, v1.8b, v2.8b
6782 // CHECK-ERROR: error: invalid operand for instruction
6783 // CHECK-ERROR: zip2 v0.8b, v1.4b, v2.4b
6785 // CHECK-ERROR: error: invalid operand for instruction
6786 // CHECK-ERROR: zip2 v0.8h, v1.4h, v2.4h
6788 // CHECK-ERROR: error: invalid operand for instruction
6789 // CHECK-ERROR: zip2 v0.4h, v1.2h, v2.2h
6791 // CHECK-ERROR: error: invalid operand for instruction
6792 // CHECK-ERROR: zip2 v0.4s, v1.2s, v2.2s
6794 // CHECK-ERROR: error: invalid operand for instruction
6795 // CHECK-ERROR: zip2 v0.2s, v1.1s, v2.1s
6797 // CHECK-ERROR: error: invalid operand for instruction
6798 // CHECK-ERROR: zip2 v0.2d, v1.1d, v2.1d
6800 // CHECK-ERROR: error: invalid operand for instruction
6801 // CHECK-ERROR: zip2 v0.1d, v1.1d, v2.1d
6804 trn1 v0.16b, v1.8b, v2.8b
6805 trn1 v0.8b, v1.4b, v2.4b
6806 trn1 v0.8h, v1.4h, v2.4h
6807 trn1 v0.4h, v1.2h, v2.2h
6808 trn1 v0.4s, v1.2s, v2.2s
6809 trn1 v0.2s, v1.1s, v2.1s
6810 trn1 v0.2d, v1.1d, v2.1d
6811 trn1 v0.1d, v1.1d, v2.1d
6813 // CHECK-ERROR: error: invalid operand for instruction
6814 // CHECK-ERROR: trn1 v0.16b, v1.8b, v2.8b
6816 // CHECK-ERROR: error: invalid operand for instruction
6817 // CHECK-ERROR: trn1 v0.8b, v1.4b, v2.4b
6819 // CHECK-ERROR: error: invalid operand for instruction
6820 // CHECK-ERROR: trn1 v0.8h, v1.4h, v2.4h
6822 // CHECK-ERROR: error: invalid operand for instruction
6823 // CHECK-ERROR: trn1 v0.4h, v1.2h, v2.2h
6825 // CHECK-ERROR: error: invalid operand for instruction
6826 // CHECK-ERROR: trn1 v0.4s, v1.2s, v2.2s
6828 // CHECK-ERROR: error: invalid operand for instruction
6829 // CHECK-ERROR: trn1 v0.2s, v1.1s, v2.1s
6831 // CHECK-ERROR: error: invalid operand for instruction
6832 // CHECK-ERROR: trn1 v0.2d, v1.1d, v2.1d
6834 // CHECK-ERROR: error: invalid operand for instruction
6835 // CHECK-ERROR: trn1 v0.1d, v1.1d, v2.1d
6838 trn2 v0.16b, v1.8b, v2.8b
6839 trn2 v0.8b, v1.4b, v2.4b
6840 trn2 v0.8h, v1.4h, v2.4h
6841 trn2 v0.4h, v1.2h, v2.2h
6842 trn2 v0.4s, v1.2s, v2.2s
6843 trn2 v0.2s, v1.1s, v2.1s
6844 trn2 v0.2d, v1.1d, v2.1d
6845 trn2 v0.1d, v1.1d, v2.1d
6847 // CHECK-ERROR: error: invalid operand for instruction
6848 // CHECK-ERROR: trn2 v0.16b, v1.8b, v2.8b
6850 // CHECK-ERROR: error: invalid operand for instruction
6851 // CHECK-ERROR: trn2 v0.8b, v1.4b, v2.4b
6853 // CHECK-ERROR: error: invalid operand for instruction
6854 // CHECK-ERROR: trn2 v0.8h, v1.4h, v2.4h
6856 // CHECK-ERROR: error: invalid operand for instruction
6857 // CHECK-ERROR: trn2 v0.4h, v1.2h, v2.2h
6859 // CHECK-ERROR: error: invalid operand for instruction
6860 // CHECK-ERROR: trn2 v0.4s, v1.2s, v2.2s
6862 // CHECK-ERROR: error: invalid operand for instruction
6863 // CHECK-ERROR: trn2 v0.2s, v1.1s, v2.1s
6865 // CHECK-ERROR: error: invalid operand for instruction
6866 // CHECK-ERROR: trn2 v0.2d, v1.1d, v2.1d
6868 // CHECK-ERROR: error: invalid operand for instruction
6869 // CHECK-ERROR: trn2 v0.1d, v1.1d, v2.1d
6872 //----------------------------------------------------------------------
6873 // Floating Point multiply (scalar, by element)
6874 //----------------------------------------------------------------------
6875 // mismatched and invalid vector types
6876 fmul s0, s1, v1.h[0]
6877 fmul h0, h1, v1.s[0]
6879 fmul s2, s29, v10.s[4]
6881 // CHECK-ERROR: error: invalid operand for instruction
6882 // CHECK-ERROR: fmul s0, s1, v1.h[0]
6884 // CHECK-ERROR: error: invalid operand for instruction
6885 // CHECK-ERROR: fmul h0, h1, v1.s[0]
6887 // CHECK-ERROR: vector lane must be an integer in range
6888 // CHECK-ERROR: fmul s2, s29, v10.s[4]
6891 //----------------------------------------------------------------------
6892 // Floating Point multiply extended (scalar, by element)
6893 //----------------------------------------------------------------------
6894 // mismatched and invalid vector types
6895 fmulx d0, d1, v1.b[0]
6896 fmulx h0, h1, v1.d[0]
6898 fmulx d2, d29, v10.d[3]
6900 // CHECK-ERROR: error: invalid operand for instruction
6901 // CHECK-ERROR: fmulx d0, d1, v1.b[0]
6903 // CHECK-ERROR: error: invalid operand for instruction
6904 // CHECK-ERROR: fmulx h0, h1, v1.d[0]
6906 // CHECK-ERROR: vector lane must be an integer in range
6907 // CHECK-ERROR: fmulx d2, d29, v10.d[3]
6910 //----------------------------------------------------------------------
6911 // Floating Point fused multiply-add (scalar, by element)
6912 //----------------------------------------------------------------------
6913 // mismatched and invalid vector types
6914 fmla b0, b1, v1.b[0]
6915 fmla d30, s11, v1.d[1]
6917 fmla s16, s22, v16.s[5]
6919 // CHECK-ERROR: error: invalid operand for instruction
6920 // CHECK-ERROR: fmla b0, b1, v1.b[0]
6922 // CHECK-ERROR: error: invalid operand for instruction
6923 // CHECK-ERROR: fmla d30, s11, v1.d[1]
6925 // CHECK-ERROR: vector lane must be an integer in range
6926 // CHECK-ERROR: fmla s16, s22, v16.s[5]
6929 //----------------------------------------------------------------------
6930 // Floating Point fused multiply-subtract (scalar, by element)
6931 //----------------------------------------------------------------------
6932 // mismatched and invalid vector types
6933 fmls s29, h10, v28.s[1]
6934 fmls h7, h17, v26.s[2]
6936 fmls d16, d22, v16.d[-1]
6938 // CHECK-ERROR: error: invalid operand for instruction
6939 // CHECK-ERROR: fmls s29, h10, v28.s[1]
6941 // CHECK-ERROR: error: invalid operand for instruction
6942 // CHECK-ERROR: fmls h7, h17, v26.s[2]
6944 // CHECK-ERROR: error: vector lane must be an integer in range [0, 1]
6945 // CHECK-ERROR: fmls d16, d22, v16.d[-1]
6948 //----------------------------------------------------------------------
6949 // Scalar Signed saturating doubling multiply-add long
6950 // (scalar, by element)
6951 //----------------------------------------------------------------------
6952 // mismatched and invalid vector types
6953 sqdmlal s0, h0, v0.s[0]
6954 sqdmlal s8, s9, v14.s[1]
6956 sqdmlal d4, s5, v1.s[5]
6957 // invalid vector index
6958 sqdmlal s0, h0, v17.h[0]
6960 // CHECK-ERROR: error: invalid operand for instruction
6961 // CHECK-ERROR: sqdmlal s0, h0, v0.s[0]
6963 // CHECK-ERROR: error: invalid operand for instruction
6964 // CHECK-ERROR: sqdmlal s8, s9, v14.s[1]
6966 // CHECK-ERROR: vector lane must be an integer in range
6967 // CHECK-ERROR: sqdmlal d4, s5, v1.s[5]
6969 // CHECK-ERROR: error: invalid operand for instruction
6970 // CHECK-ERROR: sqdmlal s0, h0, v17.h[0]
6973 //----------------------------------------------------------------------
6974 // Scalar Signed saturating doubling multiply-subtract long
6975 // (scalar, by element)
6976 //----------------------------------------------------------------------
6977 // mismatched and invalid vector types
6978 sqdmlsl s1, h1, v1.d[0]
6979 sqdmlsl d1, h1, v13.s[0]
6981 sqdmlsl d1, s1, v13.s[4]
6982 // invalid vector index
6983 sqdmlsl s1, h1, v20.h[7]
6985 // CHECK-ERROR: error: invalid operand for instruction
6986 // CHECK-ERROR: sqdmlsl s1, h1, v1.d[0]
6988 // CHECK-ERROR: error: invalid operand for instruction
6989 // CHECK-ERROR: sqdmlsl d1, h1, v13.s[0]
6991 // CHECK-ERROR: vector lane must be an integer in range
6992 // CHECK-ERROR: sqdmlsl d1, s1, v13.s[4]
6994 // CHECK-ERROR: error: invalid operand for instruction
6995 // CHECK-ERROR: sqdmlsl s1, h1, v20.h[7]
6998 //----------------------------------------------------------------------
6999 // Scalar Signed saturating doubling multiply long (scalar, by element)
7000 //----------------------------------------------------------------------
7001 // mismatched and invalid vector types
7003 // invalid vector index
7004 // mismatched and invalid vector types
7005 sqdmull s1, h1, v1.s[1]
7006 sqdmull s1, s1, v4.s[0]
7008 sqdmull s12, h17, v9.h[9]
7009 // invalid vector index
7010 sqdmull s1, h1, v16.h[5]
7012 // CHECK-ERROR: error: invalid operand for instruction
7013 // CHECK-ERROR: sqdmull s1, h1, v1.s[1]
7015 // CHECK-ERROR: error: invalid operand for instruction
7016 // CHECK-ERROR: sqdmull s1, s1, v4.s[0]
7018 // CHECK-ERROR: vector lane must be an integer in range
7019 // CHECK-ERROR: sqdmull s12, h17, v9.h[9]
7021 // CHECK-ERROR: error: invalid operand for instruction
7022 // CHECK-ERROR: sqdmull s1, h1, v16.h[5]
7025 //----------------------------------------------------------------------
7026 // Scalar Signed saturating doubling multiply returning
7027 // high half (scalar, by element)
7028 //----------------------------------------------------------------------
7029 // mismatched and invalid vector types
7030 sqdmulh h0, s1, v0.h[0]
7031 sqdmulh s25, s26, v27.h[3]
7033 sqdmulh s25, s26, v27.s[4]
7034 // invalid vector index
7035 sqdmulh s0, h1, v30.h[0]
7037 // CHECK-ERROR: error: invalid operand for instruction
7038 // CHECK-ERROR: sqdmulh h0, s1, v0.h[0]
7040 // CHECK-ERROR: error: invalid operand for instruction
7041 // CHECK-ERROR: sqdmulh s25, s26, v27.h[3]
7043 // CHECK-ERROR: vector lane must be an integer in range
7044 // CHECK-ERROR: sqdmulh s25, s26, v27.s[4]
7046 // CHECK-ERROR: error: invalid operand for instruction
7047 // CHECK-ERROR: sqdmulh s0, h1, v30.h[0]
7050 //----------------------------------------------------------------------
7051 // Scalar Signed saturating rounding doubling multiply
7052 // returning high half (scalar, by element)
7053 //----------------------------------------------------------------------
7054 // mismatched and invalid vector types
7055 sqrdmulh h31, h30, v14.s[2]
7056 sqrdmulh s5, h6, v7.s[2]
7058 sqrdmulh h31, h30, v14.h[9]
7059 // invalid vector index
7060 sqrdmulh h31, h30, v20.h[4]
7062 // CHECK-ERROR: error: invalid operand for instruction
7063 // CHECK-ERROR: sqrdmulh h31, h30, v14.s[2]
7065 // CHECK-ERROR: error: invalid operand for instruction
7066 // CHECK-ERROR: sqrdmulh s5, h6, v7.s[2]
7068 // CHECK-ERROR: vector lane must be an integer in range
7069 // CHECK-ERROR: sqrdmulh h31, h30, v14.h[9]
7071 // CHECK-ERROR: error: invalid operand for instruction
7072 // CHECK-ERROR: sqrdmulh h31, h30, v20.h[4]
7075 //----------------------------------------------------------------------
7076 // Scalar Duplicate element (scalar)
7077 //----------------------------------------------------------------------
7078 // mismatched and invalid vector types
7088 // CHECK-ERROR: error: invalid operand for instruction
7089 // CHECK-ERROR: dup b0, v1.d[0]
7091 // CHECK-ERROR: error: invalid operand for instruction
7092 // CHECK-ERROR: dup h0, v31.b[8]
7094 // CHECK-ERROR: error: invalid operand for instruction
7095 // CHECK-ERROR: dup s0, v2.h[4]
7097 // CHECK-ERROR: error: invalid operand for instruction
7098 // CHECK-ERROR: dup d0, v17.s[3]
7100 // CHECK-ERROR: vector lane must be an integer in range
7101 // CHECK-ERROR: dup d0, v17.d[4]
7103 // CHECK-ERROR: vector lane must be an integer in range
7104 // CHECK-ERROR: dup s0, v1.s[7]
7106 // CHECK-ERROR: vector lane must be an integer in range
7107 // CHECK-ERROR: dup h0, v31.h[16]
7109 // CHECK-ERROR: vector lane must be an integer in range
7110 // CHECK-ERROR: dup b1, v3.b[16]
7113 //----------------------------------------------------------------------
7115 //----------------------------------------------------------------------
7117 tbl v0.8b, {v1.8b}, v2.8b
7118 tbl v0.8b, {v1.8b, v2.8b}, v2.8b
7119 tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7120 tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7121 tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7123 // CHECK-ERROR: error: invalid operand for instruction
7124 // CHECK-ERROR: tbl v0.8b, {v1.8b}, v2.8b
7126 // CHECK-ERROR: error: invalid operand for instruction
7127 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b}, v2.8b
7129 // CHECK-ERROR: error: invalid operand for instruction
7130 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7132 // CHECK-ERROR: error: invalid operand for instruction
7133 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7135 // CHECK-ERROR: error: invalid number of vectors
7136 // CHECK-ERROR: tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7139 tbx v0.8b, {v1.8b}, v2.8b
7140 tbx v0.8b, {v1.8b, v2.8b}, v2.8b
7141 tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7142 tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7143 tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7145 // CHECK-ERROR: error: invalid operand for instruction
7146 // CHECK-ERROR: tbx v0.8b, {v1.8b}, v2.8b
7148 // CHECK-ERROR: error: invalid operand for instruction
7149 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b}, v2.8b
7151 // CHECK-ERROR: error: invalid operand for instruction
7152 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7154 // CHECK-ERROR: error: invalid operand for instruction
7155 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7157 // CHECK-ERROR: error: invalid number of vectors
7158 // CHECK-ERROR: tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7161 //----------------------------------------------------------------------
7162 // Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
7164 //----------------------------------------------------------------------
7168 // CHECK-ERROR: error: invalid operand for instruction
7169 // CHECK-ERROR: fcvtxn s0, s1
7172 //----------------------------------------------------------------------
7173 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
7174 // With Ties To Away
7175 //----------------------------------------------------------------------
7180 // CHECK-ERROR: error: invalid operand for instruction
7181 // CHECK-ERROR: fcvtas s0, d0
7183 // CHECK-ERROR: error: invalid operand for instruction
7184 // CHECK-ERROR: fcvtas d0, s0
7187 //----------------------------------------------------------------------
7188 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
7189 // Nearest With Ties To Away
7190 //----------------------------------------------------------------------
7195 // CHECK-ERROR: error: invalid operand for instruction
7196 // CHECK-ERROR: fcvtau s0, d0
7198 // CHECK-ERROR: error: invalid operand for instruction
7199 // CHECK-ERROR: fcvtau d0, s0
7202 //----------------------------------------------------------------------
7203 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
7205 //----------------------------------------------------------------------
7210 // CHECK-ERROR: error: invalid operand for instruction
7211 // CHECK-ERROR: fcvtms s0, d0
7213 // CHECK-ERROR: error: invalid operand for instruction
7214 // CHECK-ERROR: fcvtms d0, s0
7217 //----------------------------------------------------------------------
7218 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7220 //----------------------------------------------------------------------
7225 // CHECK-ERROR: error: invalid operand for instruction
7226 // CHECK-ERROR: fcvtmu s0, d0
7228 // CHECK-ERROR: error: invalid operand for instruction
7229 // CHECK-ERROR: fcvtmu d0, s0
7232 //----------------------------------------------------------------------
7233 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
7234 // With Ties To Even
7235 //----------------------------------------------------------------------
7240 // CHECK-ERROR: error: invalid operand for instruction
7241 // CHECK-ERROR: fcvtns s0, d0
7243 // CHECK-ERROR: error: invalid operand for instruction
7244 // CHECK-ERROR: fcvtns d0, s0
7247 //----------------------------------------------------------------------
7248 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
7249 // Nearest With Ties To Even
7250 //----------------------------------------------------------------------
7255 // CHECK-ERROR: error: invalid operand for instruction
7256 // CHECK-ERROR: fcvtnu s0, d0
7258 // CHECK-ERROR: error: invalid operand for instruction
7259 // CHECK-ERROR: fcvtnu d0, s0
7262 //----------------------------------------------------------------------
7263 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
7264 // Positive Infinity
7265 //----------------------------------------------------------------------
7270 // CHECK-ERROR: error: invalid operand for instruction
7271 // CHECK-ERROR: fcvtps s0, d0
7273 // CHECK-ERROR: error: invalid operand for instruction
7274 // CHECK-ERROR: fcvtps d0, s0
7277 //----------------------------------------------------------------------
7278 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7279 // Positive Infinity
7280 //----------------------------------------------------------------------
7285 // CHECK-ERROR: error: invalid operand for instruction
7286 // CHECK-ERROR: fcvtpu s0, d0
7288 // CHECK-ERROR: error: invalid operand for instruction
7289 // CHECK-ERROR: fcvtpu d0, s0
7292 //----------------------------------------------------------------------
7293 // Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
7294 //----------------------------------------------------------------------
7299 // CHECK-ERROR: error: invalid operand for instruction
7300 // CHECK-ERROR: fcvtzs s0, d0
7302 // CHECK-ERROR: error: invalid operand for instruction
7303 // CHECK-ERROR: fcvtzs d0, s0
7306 //----------------------------------------------------------------------
7307 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7309 //----------------------------------------------------------------------
7314 // CHECK-ERROR: error: invalid operand for instruction
7315 // CHECK-ERROR: fcvtzu s0, d0
7317 // CHECK-ERROR: error: invalid operand for instruction
7318 // CHECK-ERROR: fcvtzu d0, s0
7321 //----------------------------------------------------------------------
7322 // Scalar Floating-point Absolute Difference
7323 //----------------------------------------------------------------------
7329 // CHECK-ERROR: error: invalid operand for instruction
7330 // CHECK-ERROR: fabd s29, d24, s20
7332 // CHECK-ERROR: error: invalid operand for instruction
7333 // CHECK-ERROR: fabd d29, s24, d20