2 // RUN: not llvm-mc -triple arm64-none-linux-gnu -mattr=+neon < %s 2> %t
3 // RUN: FileCheck --check-prefix=CHECK-ERROR --check-prefix=CHECK-ARM64-ERROR < %t %s
5 //------------------------------------------------------------------------------
6 // Vector Integer Add/sub
7 //------------------------------------------------------------------------------
9 // Mismatched vector types
10 add v0.16b, v1.8b, v2.8b
11 sub v0.2d, v1.2d, v2.2s
13 // CHECK-ERROR: error: invalid operand for instruction
14 // CHECK-ERROR: add v0.16b, v1.8b, v2.8b
16 // CHECK-ERROR: error: invalid operand for instruction
17 // CHECK-ERROR: sub v0.2d, v1.2d, v2.2s
20 //------------------------------------------------------------------------------
21 // Vector Floating-Point Add/sub
22 //------------------------------------------------------------------------------
24 // Mismatched and invalid vector types
25 fadd v0.2d, v1.2s, v2.2s
26 fsub v0.4s, v1.2s, v2.4s
27 fsub v0.8b, v1.8b, v2.8b
29 // CHECK-ERROR: error: invalid operand for instruction
30 // CHECK-ERROR: fadd v0.2d, v1.2s, v2.2s
32 // CHECK-ERROR: error: invalid operand for instruction
33 // CHECK-ERROR: fsub v0.4s, v1.2s, v2.4s
35 // CHECK-ERROR: error: invalid operand for instruction
36 // CHECK-ERROR: fsub v0.8b, v1.8b, v2.8b
39 //----------------------------------------------------------------------
41 //----------------------------------------------------------------------
43 // Mismatched and invalid vector types
44 mul v0.16b, v1.8b, v2.8b
45 mul v0.2d, v1.2d, v2.2d
47 // CHECK-ERROR: error: invalid operand for instruction
48 // CHECK-ERROR: mul v0.16b, v1.8b, v2.8b
50 // CHECK-ERROR: error: invalid operand for instruction
51 // CHECK-ERROR: mul v0.2d, v1.2d, v2.2d
54 //----------------------------------------------------------------------
55 // Vector Floating-Point Mul/Div
56 //----------------------------------------------------------------------
57 // Mismatched vector types
58 fmul v0.16b, v1.8b, v2.8b
59 fdiv v0.2s, v1.2d, v2.2d
61 // CHECK-ERROR: error: invalid operand for instruction
62 // CHECK-ERROR: fmul v0.16b, v1.8b, v2.8b
64 // CHECK-ERROR: error: invalid operand for instruction
65 // CHECK-ERROR: fdiv v0.2s, v1.2d, v2.2d
68 //----------------------------------------------------------------------
69 // Vector And Orr Eor Bsl Bit Bif, Orn, Bic,
70 //----------------------------------------------------------------------
71 // Mismatched and invalid vector types
72 and v0.8b, v1.16b, v2.8b
73 orr v0.4h, v1.4h, v2.4h
74 eor v0.2s, v1.2s, v2.2s
75 bsl v0.8b, v1.16b, v2.8b
76 bsl v0.2s, v1.2s, v2.2s
77 bit v0.2d, v1.2d, v2.2d
78 bif v0.4h, v1.4h, v2.4h
79 orn v0.8b, v1.16b, v2.16b
80 bic v0.2d, v1.2d, v2.2d
82 // CHECK-ERROR: error: invalid operand for instruction
83 // CHECK-ERROR: and v0.8b, v1.16b, v2.8b
85 // CHECK-ERROR: error: invalid operand for instruction
86 // CHECK-ERROR: orr v0.4h, v1.4h, v2.4h
88 // CHECK-ERROR: error: invalid operand for instruction
89 // CHECK-ERROR: eor v0.2s, v1.2s, v2.2s
91 // CHECK-ERROR: error: invalid operand for instruction
92 // CHECK-ERROR: bsl v0.8b, v1.16b, v2.8b
94 // CHECK-ERROR: error: invalid operand for instruction
95 // CHECK-ERROR: bsl v0.2s, v1.2s, v2.2s
97 // CHECK-ERROR: error: invalid operand for instruction
98 // CHECK-ERROR: bit v0.2d, v1.2d, v2.2d
100 // CHECK-ERROR: error: invalid operand for instruction
101 // CHECK-ERROR: bif v0.4h, v1.4h, v2.4h
103 // CHECK-ERROR: error: invalid operand for instruction
104 // CHECK-ERROR: orn v0.8b, v1.16b, v2.16b
106 // CHECK-ERROR: error: invalid operand for instruction
107 // CHECK-ERROR: bic v0.2d, v1.2d, v2.2d
110 //----------------------------------------------------------------------
111 // Vector Integer Multiply-accumulate and Multiply-subtract
112 //----------------------------------------------------------------------
114 // Mismatched and invalid vector types
115 mla v0.16b, v1.8b, v2.8b
116 mls v0.2d, v1.2d, v2.2d
118 // CHECK-ERROR: error: invalid operand for instruction
119 // CHECK-ERROR: mla v0.16b, v1.8b, v2.8b
121 // CHECK-ERROR: error: invalid operand for instruction
122 // CHECK-ERROR: mls v0.2d, v1.2d, v2.2d
125 //----------------------------------------------------------------------
126 // Vector Floating-Point Multiply-accumulate and Multiply-subtract
127 //----------------------------------------------------------------------
128 // Mismatched vector types
129 fmla v0.2s, v1.2d, v2.2d
130 fmls v0.16b, v1.8b, v2.8b
132 // CHECK-ERROR: error: invalid operand for instruction
133 // CHECK-ERROR: fmla v0.2s, v1.2d, v2.2d
135 // CHECK-ERROR: error: invalid operand for instruction
136 // CHECK-ERROR: fmls v0.16b, v1.8b, v2.8b
140 //----------------------------------------------------------------------
141 // Vector Move Immediate Shifted
142 // Vector Move Inverted Immediate Shifted
143 // Vector Bitwise Bit Clear (AND NOT) - immediate
144 // Vector Bitwise OR - immedidate
145 //----------------------------------------------------------------------
146 // out of range immediate (0 to 0xff)
149 // out of range shift (0, 8, 16, 24 and 0, 8)
150 bic v15.4h, #1, lsl #7
151 orr v31.2s, #1, lsl #25
152 movi v5.4h, #10, lsl #16
153 // invalid vector type (2s, 4s, 4h, 8h)
154 movi v5.8b, #1, lsl #8
156 // CHECK-ERROR: error: invalid operand for instruction
157 // CHECK-ERROR: movi v0.2s, #-1
159 // CHECK-ERROR: error: invalid operand for instruction
160 // CHECK-ERROR: mvni v1.4s, #256
162 // CHECK-ERROR: error: invalid operand for instruction
163 // CHECK-ERROR: bic v15.4h, #1, lsl #7
165 // CHECK-ERROR: error: invalid operand for instruction
166 // CHECK-ERROR: orr v31.2s, #1, lsl #25
168 // CHECK-ERROR: error: invalid operand for instruction
169 // CHECK-ERROR: movi v5.4h, #10, lsl #16
171 // CHECK-ERROR: error: invalid operand for instruction
172 // CHECK-ERROR: movi v5.8b, #1, lsl #8
174 //----------------------------------------------------------------------
175 // Vector Move Immediate Masked
176 // Vector Move Inverted Immediate Masked
177 //----------------------------------------------------------------------
178 // out of range immediate (0 to 0xff)
179 movi v0.2s, #-1, msl #8
180 mvni v7.4s, #256, msl #16
181 // out of range shift (8, 16)
182 movi v3.2s, #1, msl #0
183 mvni v17.4s, #255, msl #32
184 // invalid vector type (2s, 4s)
185 movi v5.4h, #31, msl #8
187 // CHECK-ERROR: error: invalid operand for instruction
188 // CHECK-ERROR: movi v0.2s, #-1, msl #8
190 // CHECK-ERROR: error: invalid operand for instruction
191 // CHECK-ERROR: mvni v7.4s, #256, msl #16
193 // CHECK-ERROR: error: invalid operand for instruction
194 // CHECK-ERROR: movi v3.2s, #1, msl #0
196 // CHECK-ERROR: error: invalid operand for instruction
197 // CHECK-ERROR: mvni v17.4s, #255, msl #32
199 // CHECK-ERROR: error: invalid operand for instruction
200 // CHECK-ERROR: movi v5.4h, #31, msl #8
203 //----------------------------------------------------------------------
204 // Vector Immediate - per byte
205 //----------------------------------------------------------------------
206 // out of range immediate (0 to 0xff)
210 // CHECK-ERROR: error: invalid operand for instruction
211 // CHECK-ERROR: movi v0.8b, #-1
213 // CHECK-ERROR: error: invalid operand for instruction
214 // CHECK-ERROR: movi v1.16b, #256
217 //----------------------------------------------------------------------
218 // Scalar Floating-point Reciprocal Estimate
219 //----------------------------------------------------------------------
224 // CHECK-ERROR: error: invalid operand for instruction
225 // CHECK-ERROR: frecpe s19, h14
227 // CHECK-ERROR: error: invalid operand for instruction
228 // CHECK-ERROR: frecpe d13, s13
231 //----------------------------------------------------------------------
232 // Scalar Floating-point Reciprocal Exponent
233 //----------------------------------------------------------------------
238 // CHECK-ERROR: error: invalid operand for instruction
239 // CHECK-ERROR: frecpx s18, h10
241 // CHECK-ERROR: error: invalid operand for instruction
242 // CHECK-ERROR: frecpx d16, s19
245 //----------------------------------------------------------------------
246 // Scalar Floating-point Reciprocal Square Root Estimate
247 //----------------------------------------------------------------------
252 // CHECK-ERROR: error: invalid operand for instruction
253 // CHECK-ERROR: frsqrte s22, h13
255 // CHECK-ERROR: error: invalid operand for instruction
256 // CHECK-ERROR: frsqrte d21, s12
259 //----------------------------------------------------------------------
260 // Vector Move Immediate - bytemask, per doubleword
261 //---------------------------------------------------------------------
262 // invalid bytemask (0x00 or 0xff)
263 movi v0.2d, #0x10ff00ff00ff00ff
265 // CHECK:ERROR: error: invalid operand for instruction
266 // CHECK:ERROR: movi v0.2d, #0x10ff00ff00ff00ff
269 //----------------------------------------------------------------------
270 // Vector Move Immediate - bytemask, one doubleword
271 //----------------------------------------------------------------------
272 // invalid bytemask (0x00 or 0xff)
273 movi v0.2d, #0xffff00ff001f00ff
275 // CHECK:ERROR: error: invalid operand for instruction
276 // CHECK:ERROR: movi v0.2d, #0xffff00ff001f00ff
278 //----------------------------------------------------------------------
279 // Vector Floating Point Move Immediate
280 //----------------------------------------------------------------------
281 // invalid vector type (2s, 4s, 2d)
284 // CHECK:ERROR: error: invalid operand for instruction
285 // CHECK:ERROR: fmov v0.4h, #1.0
288 //----------------------------------------------------------------------
289 // Vector Move - register
290 //----------------------------------------------------------------------
291 // invalid vector type (8b, 16b)
293 // CHECK:ERROR: error: invalid operand for instruction
294 // CHECK:ERROR: mov v0.2s, v31.8b
297 //----------------------------------------------------------------------
298 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
299 //----------------------------------------------------------------------
301 // Mismatched and invalid vector types (2d)
302 saba v0.16b, v1.8b, v2.8b
303 uaba v0.2d, v1.2d, v2.2d
305 // CHECK-ERROR: error: invalid operand for instruction
306 // CHECK-ERROR: saba v0.16b, v1.8b, v2.8b
308 // CHECK-ERROR: error: invalid operand for instruction
309 // CHECK-ERROR: uaba v0.2d, v1.2d, v2.2d
312 //----------------------------------------------------------------------
313 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
314 // Vector Absolute Difference (Signed, Unsigned)
316 // Mismatched and invalid vector types (2d)
317 uaba v0.16b, v1.8b, v2.8b
318 saba v0.2d, v1.2d, v2.2d
319 uabd v0.4s, v1.2s, v2.2s
320 sabd v0.4h, v1.8h, v8.8h
322 // CHECK-ERROR: error: invalid operand for instruction
323 // CHECK-ERROR: uaba v0.16b, v1.8b, v2.8b
325 // CHECK-ERROR: error: invalid operand for instruction
326 // CHECK-ERROR: saba v0.2d, v1.2d, v2.2d
328 // CHECK-ERROR: error: invalid operand for instruction
329 // CHECK-ERROR: uabd v0.4s, v1.2s, v2.2s
331 // CHECK-ERROR: error: invalid operand for instruction
332 // CHECK-ERROR: sabd v0.4h, v1.8h, v8.8h
335 //----------------------------------------------------------------------
336 // Vector Absolute Difference (Floating Point)
337 //----------------------------------------------------------------------
338 // Mismatched and invalid vector types
339 fabd v0.2s, v1.4s, v2.2d
340 fabd v0.4h, v1.4h, v2.4h
342 // CHECK-ERROR: error: invalid operand for instruction
343 // CHECK-ERROR: fabd v0.2s, v1.4s, v2.2d
345 // CHECK-ERROR: error: invalid operand for instruction
346 // CHECK-ERROR: fabd v0.4h, v1.4h, v2.4h
348 //----------------------------------------------------------------------
349 // Vector Multiply (Polynomial)
350 //----------------------------------------------------------------------
352 // Mismatched and invalid vector types
353 pmul v0.8b, v1.8b, v2.16b
354 pmul v0.2s, v1.2s, v2.2s
356 // CHECK-ERROR: error: invalid operand for instruction
357 // CHECK-ERROR: pmul v0.8b, v1.8b, v2.16b
359 // CHECK-ERROR: error: invalid operand for instruction
360 // CHECK-ERROR: pmul v0.2s, v1.2s, v2.2s
363 //----------------------------------------------------------------------
364 // Scalar Integer Add and Sub
365 //----------------------------------------------------------------------
367 // Mismatched registers
371 // CHECK-ERROR: error: invalid operand for instruction
372 // CHECK-ERROR: add d0, s1, d2
374 // CHECK-ERROR: error: invalid operand for instruction
375 // CHECK-ERROR: sub s1, d1, d2
378 //----------------------------------------------------------------------
379 // Vector Reciprocal Step (Floating Point)
380 //----------------------------------------------------------------------
382 // Mismatched and invalid vector types
383 frecps v0.4s, v1.2d, v2.4s
384 frecps v0.8h, v1.8h, v2.8h
386 // CHECK-ERROR: error: invalid operand for instruction
387 // CHECK-ERROR: frecps v0.4s, v1.2d, v2.4s
389 // CHECK-ERROR: error: invalid operand for instruction
390 // CHECK-ERROR: frecps v0.8h, v1.8h, v2.8h
393 //----------------------------------------------------------------------
394 // Vector Reciprocal Square Root Step (Floating Point)
395 //----------------------------------------------------------------------
397 // Mismatched and invalid vector types
398 frsqrts v0.2d, v1.2d, v2.2s
399 frsqrts v0.4h, v1.4h, v2.4h
401 // CHECK-ERROR: error: invalid operand for instruction
402 // CHECK-ERROR: frsqrts v0.2d, v1.2d, v2.2s
404 // CHECK-ERROR: error: invalid operand for instruction
405 // CHECK-ERROR: frsqrts v0.4h, v1.4h, v2.4h
409 //----------------------------------------------------------------------
410 // Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
411 //----------------------------------------------------------------------
413 // Mismatched and invalid vector types
414 facge v0.2d, v1.2s, v2.2d
415 facge v0.4h, v1.4h, v2.4h
416 facle v0.8h, v1.4h, v2.4h
418 // CHECK-ERROR: error: invalid operand for instruction
419 // CHECK-ERROR: facge v0.2d, v1.2s, v2.2d
421 // CHECK-ERROR: error: invalid operand for instruction
422 // CHECK-ERROR: facge v0.4h, v1.4h, v2.4h
424 // CHECK-ERROR: error: invalid operand for instruction
425 // CHECK-ERROR: facle v0.8h, v1.4h, v2.4h
427 //----------------------------------------------------------------------
428 // Vector Absolute Compare Mask Less Than (Floating Point)
429 //----------------------------------------------------------------------
431 // Mismatched and invalid vector types
432 facgt v0.2d, v1.2d, v2.4s
433 facgt v0.8h, v1.8h, v2.8h
434 faclt v0.8b, v1.8b, v2.8b
436 // CHECK-ERROR: error: invalid operand for instruction
437 // CHECK-ERROR: facgt v0.2d, v1.2d, v2.4s
439 // CHECK-ERROR: error: invalid operand for instruction
440 // CHECK-ERROR: facgt v0.8h, v1.8h, v2.8h
442 // CHECK-ERROR: error: invalid operand for instruction
443 // CHECK-ERROR: faclt v0.8b, v1.8b, v2.8b
447 //----------------------------------------------------------------------
448 // Vector Compare Mask Equal (Integer)
449 //----------------------------------------------------------------------
451 // Mismatched vector types
452 cmeq c0.2d, v1.2d, v2.2s
454 // CHECK-ERROR: error: invalid operand for instruction
455 // CHECK-ERROR: cmeq c0.2d, v1.2d, v2.2s
458 //----------------------------------------------------------------------
459 // Vector Compare Mask Higher or Same (Unsigned Integer)
460 // Vector Compare Mask Less or Same (Unsigned Integer)
461 // CMLS is alias for CMHS with operands reversed.
462 //----------------------------------------------------------------------
464 // Mismatched vector types
465 cmhs c0.4h, v1.8b, v2.8b
466 cmls c0.16b, v1.16b, v2.2d
468 // CHECK-ERROR: error: invalid operand for instruction
469 // CHECK-ERROR: cmhs c0.4h, v1.8b, v2.8b
471 // CHECK-ERROR: error: invalid operand for instruction
472 // CHECK-ERROR: cmls c0.16b, v1.16b, v2.2d
475 //----------------------------------------------------------------------
476 // Vector Compare Mask Greater Than or Equal (Integer)
477 // Vector Compare Mask Less Than or Equal (Integer)
478 // CMLE is alias for CMGE with operands reversed.
479 //----------------------------------------------------------------------
481 // Mismatched vector types
482 cmge c0.8h, v1.8b, v2.8b
483 cmle c0.4h, v1.2s, v2.2s
485 // CHECK-ERROR: error: invalid operand for instruction
486 // CHECK-ERROR: cmge c0.8h, v1.8b, v2.8b
488 // CHECK-ERROR: error: invalid operand for instruction
489 // CHECK-ERROR: cmle c0.4h, v1.2s, v2.2s
492 //----------------------------------------------------------------------
493 // Vector Compare Mask Higher (Unsigned Integer)
494 // Vector Compare Mask Lower (Unsigned Integer)
495 // CMLO is alias for CMHI with operands reversed.
496 //----------------------------------------------------------------------
498 // Mismatched vector types
499 cmhi c0.4s, v1.4s, v2.16b
500 cmlo c0.8b, v1.8b, v2.2s
502 // CHECK-ERROR: error: invalid operand for instruction
503 // CHECK-ERROR: cmhi c0.4s, v1.4s, v2.16b
505 // CHECK-ERROR: error: invalid operand for instruction
506 // CHECK-ERROR: cmlo c0.8b, v1.8b, v2.2s
509 //----------------------------------------------------------------------
510 // Vector Compare Mask Greater Than (Integer)
511 // Vector Compare Mask Less Than (Integer)
512 // CMLT is alias for CMGT with operands reversed.
513 //----------------------------------------------------------------------
515 // Mismatched vector types
516 cmgt c0.8b, v1.4s, v2.16b
517 cmlt c0.8h, v1.16b, v2.4s
519 // CHECK-ERROR: error: invalid operand for instruction
520 // CHECK-ERROR: cmgt c0.8b, v1.4s, v2.16b
522 // CHECK-ERROR: error: invalid operand for instruction
523 // CHECK-ERROR: cmlt c0.8h, v1.16b, v2.4s
526 //----------------------------------------------------------------------
527 // Vector Compare Mask Bitwise Test (Integer)
528 //----------------------------------------------------------------------
530 // Mismatched vector types
531 cmtst c0.16b, v1.16b, v2.4s
533 // CHECK-ERROR: error: invalid operand for instruction
534 // CHECK-ERROR: cmtst c0.16b, v1.16b, v2.4s
537 //----------------------------------------------------------------------
538 // Vector Compare Mask Equal (Floating Point)
539 //----------------------------------------------------------------------
541 // Mismatched and invalid vector types
542 fcmeq v0.2d, v1.2s, v2.2d
543 fcmeq v0.16b, v1.16b, v2.16b
544 fcmeq v0.8b, v1.4h, v2.4h
546 // CHECK-ERROR: error: invalid operand for instruction
547 // CHECK-ERROR: fcmeq v0.2d, v1.2s, v2.2d
549 // CHECK-ERROR: error: invalid operand for instruction
550 // CHECK-ERROR: fcmeq v0.16b, v1.16b, v2.16b
552 // CHECK-ERROR: error: invalid operand for instruction
553 // CHECK-ERROR: fcmeq v0.8b, v1.4h, v2.4h
556 //----------------------------------------------------------------------
557 // Vector Compare Mask Greater Than Or Equal (Floating Point)
558 // Vector Compare Mask Less Than Or Equal (Floating Point)
559 // FCMLE is alias for FCMGE with operands reversed.
560 //----------------------------------------------------------------------
562 // Mismatched and invalid vector types
563 fcmge v31.4s, v29.2s, v28.4s
564 fcmge v3.8b, v8.2s, v12.2s
565 fcmle v17.8h, v15.2d, v13.2d
567 // CHECK-ERROR: error: invalid operand for instruction
568 // CHECK-ERROR: fcmge v31.4s, v29.2s, v28.4s
570 // CHECK-ERROR: error: invalid operand for instruction
571 // CHECK-ERROR: fcmge v3.8b, v8.2s, v12.2s
573 // CHECK-ERROR: error: invalid operand for instruction
574 // CHECK-ERROR: fcmle v17.8h, v15.2d, v13.2d
577 //----------------------------------------------------------------------
578 // Vector Compare Mask Greater Than (Floating Point)
579 // Vector Compare Mask Less Than (Floating Point)
580 // FCMLT is alias for FCMGT with operands reversed.
581 //----------------------------------------------------------------------
583 // Mismatched and invalid vector types
584 fcmgt v0.2d, v31.2s, v16.2s
585 fcmgt v4.4s, v7.4s, v15.4h
586 fcmlt v29.2d, v5.2d, v2.16b
588 // CHECK-ERROR: error: invalid operand for instruction
589 // CHECK-ERROR: fcmgt v0.2d, v31.2s, v16.2s
592 // CHECK-ARM64-ERROR: error: invalid operand for instruction
593 // CHECK-ARM64-ERROR: fcmgt v4.4s, v7.4s, v15.4h
594 // CHECK-ARM64-ERROR: ^
595 // CHECK-ARM64-ERROR: error: invalid operand for instruction
596 // CHECK-ARM64-ERROR: fcmlt v29.2d, v5.2d, v2.16b
597 // CHECK-ARM64-ERROR: ^
599 //----------------------------------------------------------------------
600 // Vector Compare Mask Equal to Zero (Integer)
601 //----------------------------------------------------------------------
602 // Mismatched vector types and invalid imm
603 // Mismatched vector types
604 cmeq c0.2d, v1.2s, #0
605 cmeq c0.2d, v1.2d, #1
607 // CHECK-ERROR: error: invalid operand for instruction
608 // CHECK-ERROR: cmeq c0.2d, v1.2s, #0
610 // CHECK-ERROR: error: invalid operand for instruction
611 // CHECK-ERROR: cmeq c0.2d, v1.2d, #1
614 //----------------------------------------------------------------------
615 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
616 //----------------------------------------------------------------------
617 // Mismatched vector types and invalid imm
618 cmge c0.8h, v1.8b, #0
619 cmge c0.4s, v1.4s, #-1
621 // CHECK-ERROR: error: invalid operand for instruction
622 // CHECK-ERROR: cmge c0.8h, v1.8b, #0
624 // CHECK-ERROR: error: invalid operand for instruction
625 // CHECK-ERROR: cmge c0.4s, v1.4s, #-1
628 //----------------------------------------------------------------------
629 // Vector Compare Mask Greater Than Zero (Signed Integer)
630 //----------------------------------------------------------------------
631 // Mismatched vector types and invalid imm
632 cmgt c0.8b, v1.4s, #0
633 cmgt c0.8b, v1.8b, #-255
635 // CHECK-ERROR: error: invalid operand for instruction
636 // CHECK-ERROR: cmgt c0.8b, v1.4s, #0
638 // CHECK-ERROR: error: invalid operand for instruction
639 // CHECK-ERROR: cmgt c0.8b, v1.8b, #-255
642 //----------------------------------------------------------------------
643 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
644 //----------------------------------------------------------------------
645 // Mismatched vector types and invalid imm
646 cmle c0.4h, v1.2s, #0
647 cmle c0.16b, v1.16b, #16
649 // CHECK-ERROR: error: invalid operand for instruction
650 // CHECK-ERROR: cmle c0.4h, v1.2s, #0
652 // CHECK-ERROR: error: invalid operand for instruction
653 // CHECK-ERROR: cmle c0.16b, v1.16b, #16
655 //----------------------------------------------------------------------
656 // Vector Compare Mask Less Than Zero (Signed Integer)
657 //----------------------------------------------------------------------
658 // Mismatched vector types and invalid imm
659 cmlt c0.8h, v1.16b, #0
660 cmlt c0.8h, v1.8h, #-15
662 // CHECK-ERROR: error: invalid operand for instruction
663 // CHECK-ERROR: cmlt c0.8h, v1.16b, #0
665 // CHECK-ERROR: error: invalid operand for instruction
666 // CHECK-ERROR: cmlt c0.8h, v1.8h, #-15
669 //----------------------------------------------------------------------
670 // Vector Compare Mask Equal to Zero (Floating Point)
671 //----------------------------------------------------------------------
673 // Mismatched and invalid vector types, invalid imm
674 fcmeq v0.2d, v1.2s, #0.0
675 fcmeq v0.16b, v1.16b, #0.0
676 fcmeq v0.8b, v1.4h, #1.0
677 fcmeq v0.8b, v1.4h, #1
679 // CHECK-ERROR: error: invalid operand for instruction
680 // CHECK-ERROR: fcmeq v0.2d, v1.2s, #0.0
682 // CHECK-ERROR: error: invalid operand for instruction
683 // CHECK-ERROR: fcmeq v0.16b, v1.16b, #0.0
687 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
688 // CHECK-ARM64-ERROR: fcmeq v0.8b, v1.4h, #1.0
689 // CHECK-ARM64-ERROR: ^
690 // CHECK-ARM64-ERROR: error: invalid operand for instruction
691 // CHECK-ARM64-ERROR: fcmeq v0.8b, v1.4h, #1
692 // CHECK-ARM64-ERROR: ^
694 //----------------------------------------------------------------------
695 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
696 //----------------------------------------------------------------------
698 // Mismatched and invalid vector types, invalid imm
699 fcmge v31.4s, v29.2s, #0.0
700 fcmge v3.8b, v8.2s, #0.0
701 fcmle v17.8h, v15.2d, #-1.0
702 fcmle v17.8h, v15.2d, #2
704 // CHECK-ERROR: error: invalid operand for instruction
705 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0
707 // CHECK-ERROR: error: invalid operand for instruction
708 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0
712 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
713 // CHECK-ARM64-ERROR: fcmle v17.8h, v15.2d, #-1.0
714 // CHECK-ARM64-ERROR: ^
715 // CHECK-ARM64-ERROR: error: invalid operand for instruction
716 // CHECK-ARM64-ERROR: fcmle v17.8h, v15.2d, #2
717 // CHECK-ARM64-ERROR: ^
719 //----------------------------------------------------------------------
720 // Vector Compare Mask Greater Than Zero (Floating Point)
721 //----------------------------------------------------------------------
722 // Mismatched and invalid vector types, invalid imm
723 fcmgt v0.2d, v31.2s, #0.0
724 fcmgt v4.4s, v7.4h, #0.0
725 fcmlt v29.2d, v5.2d, #255.0
726 fcmlt v29.2d, v5.2d, #255
728 // CHECK-ERROR: error: invalid operand for instruction
729 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0
731 // CHECK-ERROR: error: invalid operand for instruction
732 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0
736 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
737 // CHECK-ARM64-ERROR: fcmlt v29.2d, v5.2d, #255.0
738 // CHECK-ARM64-ERROR: ^
739 // CHECK-ARM64-ERROR: error: invalid operand for instruction
740 // CHECK-ARM64-ERROR: fcmlt v29.2d, v5.2d, #255
741 // CHECK-ARM64-ERROR: ^
743 //----------------------------------------------------------------------
744 // Vector Compare Mask Less Than or Equal To Zero (Floating Point)
745 //----------------------------------------------------------------------
746 // Mismatched and invalid vector types, invalid imm
747 fcmge v31.4s, v29.2s, #0.0
748 fcmge v3.8b, v8.2s, #0.0
749 fcmle v17.2d, v15.2d, #15.0
750 fcmle v17.2d, v15.2d, #15
752 // CHECK-ERROR: error: invalid operand for instruction
753 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0
755 // CHECK-ERROR: error: invalid operand for instruction
756 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0
760 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
761 // CHECK-ARM64-ERROR: fcmle v17.2d, v15.2d, #15.0
762 // CHECK-ARM64-ERROR: ^
763 // CHECK-ARM64-ERROR: error: invalid operand for instruction
764 // CHECK-ARM64-ERROR: fcmle v17.2d, v15.2d, #15
765 // CHECK-ARM64-ERROR: ^
767 //----------------------------------------------------------------------
768 // Vector Compare Mask Less Than Zero (Floating Point)
769 //----------------------------------------------------------------------
770 // Mismatched and invalid vector types, invalid imm
771 fcmgt v0.2d, v31.2s, #0.0
772 fcmgt v4.4s, v7.4h, #0.0
773 fcmlt v29.2d, v5.2d, #16.0
774 fcmlt v29.2d, v5.2d, #2
776 // CHECK-ERROR: error: invalid operand for instruction
777 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0
779 // CHECK-ERROR: error: invalid operand for instruction
780 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0
784 // CHECK-ARM64-ERROR: error: expected floating-point constant #0.0
785 // CHECK-ARM64-ERROR: fcmlt v29.2d, v5.2d, #16.0
786 // CHECK-ARM64-ERROR: ^
787 // CHECK-ARM64-ERROR: error: invalid operand for instruction
788 // CHECK-ARM64-ERROR: fcmlt v29.2d, v5.2d, #2
789 // CHECK-ARM64-ERROR: ^
791 /-----------------------------------------------------------------------
792 // Vector Integer Halving Add (Signed)
793 // Vector Integer Halving Add (Unsigned)
794 // Vector Integer Halving Sub (Signed)
795 // Vector Integer Halving Sub (Unsigned)
796 //----------------------------------------------------------------------
797 // Mismatched and invalid vector types (2d)
798 shadd v0.2d, v1.2d, v2.2d
799 uhadd v4.2s, v5.2s, v5.4h
800 shsub v11.4h, v12.8h, v13.4h
801 uhsub v31.16b, v29.8b, v28.8b
803 // CHECK-ERROR: error: invalid operand for instruction
804 // CHECK-ERROR: shadd v0.2d, v1.2d, v2.2d
806 // CHECK-ERROR: error: invalid operand for instruction
807 // CHECK-ERROR: uhadd v4.2s, v5.2s, v5.4h
809 // CHECK-ERROR: error: invalid operand for instruction
810 // CHECK-ERROR: shsub v11.4h, v12.8h, v13.4h
812 // CHECK-ERROR: error: invalid operand for instruction
813 // CHECK-ERROR: uhsub v31.16b, v29.8b, v28.8b
816 //----------------------------------------------------------------------
817 // Vector Integer Rouding Halving Add (Signed)
818 // Vector Integer Rouding Halving Add (Unsigned)
819 //----------------------------------------------------------------------
821 // Mismatched and invalid vector types (2d)
822 srhadd v0.2s, v1.2s, v2.2d
823 urhadd v0.16b, v1.16b, v2.8h
825 // CHECK-ERROR: error: invalid operand for instruction
826 // CHECK-ERROR: srhadd v0.2s, v1.2s, v2.2d
828 // CHECK-ERROR: error: invalid operand for instruction
829 // CHECK-ERROR: urhadd v0.16b, v1.16b, v2.8h
832 //----------------------------------------------------------------------
833 // Vector Integer Saturating Add (Signed)
834 // Vector Integer Saturating Add (Unsigned)
835 // Vector Integer Saturating Sub (Signed)
836 // Vector Integer Saturating Sub (Unsigned)
837 //----------------------------------------------------------------------
839 // Mismatched vector types
840 sqadd v0.2s, v1.2s, v2.2d
841 uqadd v31.8h, v1.4h, v2.4h
842 sqsub v10.8h, v1.16b, v2.16b
843 uqsub v31.8b, v1.8b, v2.4s
845 // CHECK-ERROR: error: invalid operand for instruction
846 // CHECK-ERROR: sqadd v0.2s, v1.2s, v2.2d
848 // CHECK-ERROR: error: invalid operand for instruction
849 // CHECK-ERROR: uqadd v31.8h, v1.4h, v2.4h
851 // CHECK-ERROR: error: invalid operand for instruction
852 // CHECK-ERROR: sqsub v10.8h, v1.16b, v2.16b
854 // CHECK-ERROR: error: invalid operand for instruction
855 // CHECK-ERROR: uqsub v31.8b, v1.8b, v2.4s
858 //----------------------------------------------------------------------
859 // Scalar Integer Saturating Add (Signed)
860 // Scalar Integer Saturating Add (Unsigned)
861 // Scalar Integer Saturating Sub (Signed)
862 // Scalar Integer Saturating Sub (Unsigned)
863 //----------------------------------------------------------------------
865 // Mismatched registers
871 // CHECK-ERROR: error: invalid operand for instruction
872 // CHECK-ERROR: sqadd d0, s31, d2
874 // CHECK-ERROR: error: invalid operand for instruction
875 // CHECK-ERROR: uqadd s0, s1, d2
877 // CHECK-ERROR: error: invalid operand for instruction
878 // CHECK-ERROR: sqsub b0, b2, s18
880 // CHECK-ERROR: error: invalid operand for instruction
881 // CHECK-ERROR: uqsub h1, h2, d2
884 //----------------------------------------------------------------------
885 // Scalar Integer Saturating Doubling Multiply Half High (Signed)
886 //----------------------------------------------------------------------
888 sqdmulh h10, s11, h12
891 // CHECK-ERROR: error: invalid operand for instruction
892 // CHECK-ERROR: sqdmulh h10, s11, h12
894 // CHECK-ERROR: error: invalid operand for instruction
895 // CHECK-ERROR: sqdmulh s20, h21, s2
898 //------------------------------------------------------------------------
899 // Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed)
900 //------------------------------------------------------------------------
902 sqrdmulh h10, s11, h12
903 sqrdmulh s20, h21, s2
905 // CHECK-ERROR: error: invalid operand for instruction
906 // CHECK-ERROR: sqrdmulh h10, s11, h12
908 // CHECK-ERROR: error: invalid operand for instruction
909 // CHECK-ERROR: sqrdmulh s20, h21, s2
912 //----------------------------------------------------------------------
913 // Vector Shift Left (Signed and Unsigned Integer)
914 //----------------------------------------------------------------------
915 // Mismatched vector types
916 sshl v0.4s, v15.2s, v16.2s
917 ushl v1.16b, v25.16b, v6.8h
919 // CHECK-ERROR: error: invalid operand for instruction
920 // CHECK-ERROR: sshl v0.4s, v15.2s, v16.2s
922 // CHECK-ERROR: error: invalid operand for instruction
923 // CHECK-ERROR: ushl v1.16b, v25.16b, v6.8h
926 //----------------------------------------------------------------------
927 // Vector Saturating Shift Left (Signed and Unsigned Integer)
928 //----------------------------------------------------------------------
929 // Mismatched vector types
930 sqshl v0.2s, v15.4s, v16.2d
931 uqshl v1.8b, v25.4h, v6.8h
933 // CHECK-ERROR: error: invalid operand for instruction
934 // CHECK-ERROR: sqshl v0.2s, v15.4s, v16.2d
936 // CHECK-ERROR: error: invalid operand for instruction
937 // CHECK-ERROR: uqshl v1.8b, v25.4h, v6.8h
940 //----------------------------------------------------------------------
941 // Vector Rouding Shift Left (Signed and Unsigned Integer)
942 //----------------------------------------------------------------------
943 // Mismatched vector types
944 srshl v0.8h, v15.8h, v16.16b
945 urshl v1.2d, v25.2d, v6.4s
947 // CHECK-ERROR: error: invalid operand for instruction
948 // CHECK-ERROR: srshl v0.8h, v15.8h, v16.16b
950 // CHECK-ERROR: error: invalid operand for instruction
951 // CHECK-ERROR: urshl v1.2d, v25.2d, v6.4s
954 //----------------------------------------------------------------------
955 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
956 //----------------------------------------------------------------------
957 // Mismatched vector types
958 sqrshl v0.2s, v15.8h, v16.16b
959 uqrshl v1.4h, v25.4h, v6.2d
961 // CHECK-ERROR: error: invalid operand for instruction
962 // CHECK-ERROR: sqrshl v0.2s, v15.8h, v16.16b
964 // CHECK-ERROR: error: invalid operand for instruction
965 // CHECK-ERROR: uqrshl v1.4h, v25.4h, v6.2d
968 //----------------------------------------------------------------------
969 // Scalar Integer Shift Left (Signed, Unsigned)
970 //----------------------------------------------------------------------
971 // Mismatched and invalid vector types
975 // CHECK-ERROR: error: invalid operand for instruction
976 // CHECK-ERROR: sshl d0, d1, s2
978 // CHECK-ERROR: error: invalid operand for instruction
979 // CHECK-ERROR: ushl b2, b0, b1
982 //----------------------------------------------------------------------
983 // Scalar Integer Saturating Shift Left (Signed, Unsigned)
984 //----------------------------------------------------------------------
986 // Mismatched vector types
992 // CHECK-ERROR: error: invalid operand for instruction
993 // CHECK-ERROR: sqshl b0, s1, b0
995 // CHECK-ERROR: error: invalid operand for instruction
996 // CHECK-ERROR: uqshl h0, b1, h0
998 // CHECK-ERROR: error: invalid operand for instruction
999 // CHECK-ERROR: sqshl s0, h1, s0
1001 // CHECK-ERROR: error: invalid operand for instruction
1002 // CHECK-ERROR: uqshl d0, b1, d0
1005 //----------------------------------------------------------------------
1006 // Scalar Integer Rouding Shift Left (Signed, Unsigned)
1007 //----------------------------------------------------------------------
1008 // Mismatched and invalid vector types
1012 // CHECK-ERROR: error: invalid operand for instruction
1013 // CHECK-ERROR: srshl h0, h1, h2
1015 // CHECK-ERROR: error: invalid operand for instruction
1016 // CHECK-ERROR: urshl s0, s1, s2
1020 //----------------------------------------------------------------------
1021 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
1022 //----------------------------------------------------------------------
1024 // Mismatched vector types
1030 // CHECK-ERROR: error: invalid operand for instruction
1031 // CHECK-ERROR: sqrshl b0, b1, s0
1033 // CHECK-ERROR: error: invalid operand for instruction
1034 // CHECK-ERROR: uqrshl h0, h1, b0
1036 // CHECK-ERROR: error: invalid operand for instruction
1037 // CHECK-ERROR: sqrshl s0, s1, h0
1039 // CHECK-ERROR: error: invalid operand for instruction
1040 // CHECK-ERROR: uqrshl d0, d1, b0
1044 //----------------------------------------------------------------------
1045 // Vector Maximum (Signed, Unsigned)
1046 //----------------------------------------------------------------------
1047 // Mismatched and invalid vector types
1048 smax v0.2d, v1.2d, v2.2d
1049 umax v0.4h, v1.4h, v2.2s
1051 // CHECK-ERROR: error: invalid operand for instruction
1052 // CHECK-ERROR: smax v0.2d, v1.2d, v2.2d
1054 // CHECK-ERROR: error: invalid operand for instruction
1055 // CHECK-ERROR: umax v0.4h, v1.4h, v2.2s
1058 //----------------------------------------------------------------------
1059 // Vector Minimum (Signed, Unsigned)
1060 //----------------------------------------------------------------------
1061 // Mismatched and invalid vector types
1062 smin v0.2d, v1.2d, v2.2d
1063 umin v0.2s, v1.2s, v2.8b
1065 // CHECK-ERROR: error: invalid operand for instruction
1066 // CHECK-ERROR: smin v0.2d, v1.2d, v2.2d
1068 // CHECK-ERROR: error: invalid operand for instruction
1069 // CHECK-ERROR: umin v0.2s, v1.2s, v2.8b
1073 //----------------------------------------------------------------------
1074 // Vector Maximum (Floating Point)
1075 //----------------------------------------------------------------------
1076 // Mismatched and invalid vector types
1077 fmax v0.2s, v1.2s, v2.4s
1078 fmax v0.8b, v1.8b, v2.8b
1080 // CHECK-ERROR: error: invalid operand for instruction
1081 // CHECK-ERROR: fmax v0.2s, v1.2s, v2.4s
1083 // CHECK-ERROR: error: invalid operand for instruction
1084 // CHECK-ERROR: fmax v0.8b, v1.8b, v2.8b
1086 //----------------------------------------------------------------------
1087 // Vector Minimum (Floating Point)
1088 //----------------------------------------------------------------------
1089 // Mismatched and invalid vector types
1090 fmin v0.4s, v1.4s, v2.2d
1091 fmin v0.8h, v1.8h, v2.8h
1093 // CHECK-ERROR: error: invalid operand for instruction
1094 // CHECK-ERROR: fmin v0.4s, v1.4s, v2.2d
1096 // CHECK-ERROR: error: invalid operand for instruction
1097 // CHECK-ERROR: fmin v0.8h, v1.8h, v2.8h
1100 //----------------------------------------------------------------------
1101 // Vector maxNum (Floating Point)
1102 //----------------------------------------------------------------------
1103 // Mismatched and invalid vector types
1104 fmaxnm v0.2s, v1.2s, v2.2d
1105 fmaxnm v0.4h, v1.8h, v2.4h
1107 // CHECK-ERROR: error: invalid operand for instruction
1108 // CHECK-ERROR: fmaxnm v0.2s, v1.2s, v2.2d
1110 // CHECK-ERROR: error: invalid operand for instruction
1111 // CHECK-ERROR: fmaxnm v0.4h, v1.8h, v2.4h
1114 //----------------------------------------------------------------------
1115 // Vector minNum (Floating Point)
1116 //----------------------------------------------------------------------
1117 // Mismatched and invalid vector types
1118 fminnm v0.4s, v1.2s, v2.4s
1119 fminnm v0.16b, v0.16b, v0.16b
1121 // CHECK-ERROR: error: invalid operand for instruction
1122 // CHECK-ERROR: fminnm v0.4s, v1.2s, v2.4s
1124 // CHECK-ERROR: error: invalid operand for instruction
1125 // CHECK-ERROR: fminnm v0.16b, v0.16b, v0.16b
1129 //----------------------------------------------------------------------
1130 // Vector Maximum Pairwise (Signed, Unsigned)
1131 //----------------------------------------------------------------------
1132 // Mismatched and invalid vector types
1133 smaxp v0.2d, v1.2d, v2.2d
1134 umaxp v0.4h, v1.4h, v2.2s
1136 // CHECK-ERROR: error: invalid operand for instruction
1137 // CHECK-ERROR: smaxp v0.2d, v1.2d, v2.2d
1139 // CHECK-ERROR: error: invalid operand for instruction
1140 // CHECK-ERROR: umaxp v0.4h, v1.4h, v2.2s
1143 //----------------------------------------------------------------------
1144 // Vector Minimum Pairwise (Signed, Unsigned)
1145 //----------------------------------------------------------------------
1146 // Mismatched and invalid vector types
1147 sminp v0.2d, v1.2d, v2.2d
1148 uminp v0.2s, v1.2s, v2.8b
1150 // CHECK-ERROR: error: invalid operand for instruction
1151 // CHECK-ERROR: sminp v0.2d, v1.2d, v2.2d
1153 // CHECK-ERROR: error: invalid operand for instruction
1154 // CHECK-ERROR: uminp v0.2s, v1.2s, v2.8b
1158 //----------------------------------------------------------------------
1159 // Vector Maximum Pairwise (Floating Point)
1160 //----------------------------------------------------------------------
1161 // Mismatched and invalid vector types
1162 fmaxp v0.2s, v1.2s, v2.4s
1163 fmaxp v0.8b, v1.8b, v2.8b
1165 // CHECK-ERROR: error: invalid operand for instruction
1166 // CHECK-ERROR: fmaxp v0.2s, v1.2s, v2.4s
1168 // CHECK-ERROR: error: invalid operand for instruction
1169 // CHECK-ERROR: fmaxp v0.8b, v1.8b, v2.8b
1171 //----------------------------------------------------------------------
1172 // Vector Minimum Pairwise (Floating Point)
1173 //----------------------------------------------------------------------
1174 // Mismatched and invalid vector types
1175 fminp v0.4s, v1.4s, v2.2d
1176 fminp v0.8h, v1.8h, v2.8h
1178 // CHECK-ERROR: error: invalid operand for instruction
1179 // CHECK-ERROR: fminp v0.4s, v1.4s, v2.2d
1181 // CHECK-ERROR: error: invalid operand for instruction
1182 // CHECK-ERROR: fminp v0.8h, v1.8h, v2.8h
1185 //----------------------------------------------------------------------
1186 // Vector maxNum Pairwise (Floating Point)
1187 //----------------------------------------------------------------------
1188 // Mismatched and invalid vector types
1189 fmaxnmp v0.2s, v1.2s, v2.2d
1190 fmaxnmp v0.4h, v1.8h, v2.4h
1192 // CHECK-ERROR: error: invalid operand for instruction
1193 // CHECK-ERROR: fmaxnmp v0.2s, v1.2s, v2.2d
1195 // CHECK-ERROR: error: invalid operand for instruction
1196 // CHECK-ERROR: fmaxnmp v0.4h, v1.8h, v2.4h
1199 //----------------------------------------------------------------------
1200 // Vector minNum Pairwise (Floating Point)
1201 //----------------------------------------------------------------------
1202 // Mismatched and invalid vector types
1203 fminnmp v0.4s, v1.2s, v2.4s
1204 fminnmp v0.16b, v0.16b, v0.16b
1206 // CHECK-ERROR: error: invalid operand for instruction
1207 // CHECK-ERROR: fminnmp v0.4s, v1.2s, v2.4s
1209 // CHECK-ERROR: error: invalid operand for instruction
1210 // CHECK-ERROR: fminnmp v0.16b, v0.16b, v0.16b
1214 //----------------------------------------------------------------------
1215 // Vector Add Pairwise (Integer)
1216 //----------------------------------------------------------------------
1218 // Mismatched vector types
1219 addp v0.16b, v1.8b, v2.8b
1221 // CHECK-ERROR: error: invalid operand for instruction
1222 // CHECK-ERROR: addp v0.16b, v1.8b, v2.8b
1225 //----------------------------------------------------------------------
1226 // Vector Add Pairwise (Floating Point)
1227 //----------------------------------------------------------------------
1228 // Mismatched and invalid vector types
1229 faddp v0.16b, v1.8b, v2.8b
1230 faddp v0.2d, v1.2d, v2.8h
1232 // CHECK-ERROR: error: invalid operand for instruction
1233 // CHECK-ERROR: faddp v0.16b, v1.8b, v2.8b
1235 // CHECK-ERROR: error: invalid operand for instruction
1236 // CHECK-ERROR: faddp v0.2d, v1.2d, v2.8h
1240 //----------------------------------------------------------------------
1241 // Vector Saturating Doubling Multiply High
1242 //----------------------------------------------------------------------
1243 // Mismatched and invalid vector types
1244 sqdmulh v2.4h, v25.8h, v3.4h
1245 sqdmulh v12.2d, v5.2d, v13.2d
1246 sqdmulh v3.8b, v1.8b, v30.8b
1248 // CHECK-ERROR: error: invalid operand for instruction
1249 // CHECK-ERROR: sqdmulh v2.4h, v25.8h, v3.4h
1251 // CHECK-ERROR: error: invalid operand for instruction
1252 // CHECK-ERROR: sqdmulh v12.2d, v5.2d, v13.2d
1254 // CHECK-ERROR: error: invalid operand for instruction
1255 // CHECK-ERROR: sqdmulh v3.8b, v1.8b, v30.8b
1258 //----------------------------------------------------------------------
1259 // Vector Saturating Rouding Doubling Multiply High
1260 //----------------------------------------------------------------------
1261 // Mismatched and invalid vector types
1262 sqrdmulh v2.2s, v25.4s, v3.4s
1263 sqrdmulh v12.16b, v5.16b, v13.16b
1264 sqrdmulh v3.4h, v1.4h, v30.2d
1267 // CHECK-ERROR: error: invalid operand for instruction
1268 // CHECK-ERROR: sqrdmulh v2.2s, v25.4s, v3.4s
1270 // CHECK-ERROR: error: invalid operand for instruction
1271 // CHECK-ERROR: sqrdmulh v12.16b, v5.16b, v13.16b
1273 // CHECK-ERROR: error: invalid operand for instruction
1274 // CHECK-ERROR: sqrdmulh v3.4h, v1.4h, v30.2d
1277 //----------------------------------------------------------------------
1278 // Vector Multiply Extended
1279 //----------------------------------------------------------------------
1280 // Mismatched and invalid vector types
1281 fmulx v21.2s, v5.2s, v13.2d
1282 fmulx v1.4h, v25.4h, v3.4h
1284 // CHECK-ERROR: error: invalid operand for instruction
1285 // CHECK-ERROR: fmulx v21.2s, v5.2s, v13.2d
1287 // CHECK-ERROR: error: invalid operand for instruction
1288 // CHECK-ERROR: fmulx v1.4h, v25.4h, v3.4h
1291 //------------------------------------------------------------------------------
1292 // Vector Shift Left by Immediate
1293 //------------------------------------------------------------------------------
1294 // Mismatched vector types and out of range
1295 shl v0.4s, v15,2s, #3
1296 shl v0.2d, v17.4s, #3
1297 shl v0.8b, v31.8b, #-1
1298 shl v0.8b, v31.8b, #8
1299 shl v0.4s, v21.4s, #32
1300 shl v0.2d, v1.2d, #64
1303 // CHECK-ARM64-ERROR: error: unexpected token in argument list
1304 // CHECK-ARM64-ERROR: shl v0.4s, v15,2s, #3
1305 // CHECK-ARM64-ERROR: ^
1307 // CHECK-ERROR: error: invalid operand for instruction
1308 // CHECK-ERROR: shl v0.2d, v17.4s, #3
1310 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1311 // CHECK-ERROR: shl v0.8b, v31.8b, #-1
1313 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1314 // CHECK-ERROR: shl v0.8b, v31.8b, #8
1316 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1317 // CHECK-ERROR: shl v0.4s, v21.4s, #32
1319 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1320 // CHECK-ERROR: shl v0.2d, v1.2d, #64
1323 //----------------------------------------------------------------------
1324 // Vector Shift Left Long by Immediate
1325 //----------------------------------------------------------------------
1326 // Mismatched vector types
1327 sshll v0.4s, v15.2s, #3
1328 ushll v1.16b, v25.16b, #6
1329 sshll2 v0.2d, v3.8s, #15
1330 ushll2 v1.4s, v25.4s, #7
1333 sshll v0.8h, v1.8b, #-1
1334 sshll v0.8h, v1.8b, #9
1335 ushll v0.4s, v1.4h, #17
1336 ushll v0.2d, v1.2s, #33
1337 sshll2 v0.8h, v1.16b, #9
1338 sshll2 v0.4s, v1.8h, #17
1339 ushll2 v0.2d, v1.4s, #33
1341 // CHECK-ERROR: error: invalid operand for instruction
1342 // CHECK-ERROR: sshll v0.4s, v15.2s, #3
1344 // CHECK-ERROR: error: invalid operand for instruction
1345 // CHECK-ERROR: ushll v1.16b, v25.16b, #6
1347 // CHECK-ERROR: error: invalid operand for instruction
1348 // CHECK-ERROR: sshll2 v0.2d, v3.8s, #15
1350 // CHECK-ERROR: error: invalid operand for instruction
1351 // CHECK-ERROR: ushll2 v1.4s, v25.4s, #7
1353 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1354 // CHECK-ERROR: sshll v0.8h, v1.8b, #-1
1356 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1357 // CHECK-ERROR: sshll v0.8h, v1.8b, #9
1359 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1360 // CHECK-ERROR: ushll v0.4s, v1.4h, #17
1362 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1363 // CHECK-ERROR: ushll v0.2d, v1.2s, #33
1365 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1366 // CHECK-ERROR: sshll2 v0.8h, v1.16b, #9
1368 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1369 // CHECK-ERROR: sshll2 v0.4s, v1.8h, #17
1371 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1372 // CHECK-ERROR: ushll2 v0.2d, v1.4s, #33
1376 //------------------------------------------------------------------------------
1377 // Vector shift right by immediate
1378 //------------------------------------------------------------------------------
1379 sshr v0.8b, v1.8h, #3
1380 sshr v0.4h, v1.4s, #3
1381 sshr v0.2s, v1.2d, #3
1382 sshr v0.16b, v1.16b, #9
1383 sshr v0.8h, v1.8h, #17
1384 sshr v0.4s, v1.4s, #33
1385 sshr v0.2d, v1.2d, #65
1387 // CHECK-ERROR: error: invalid operand for instruction
1388 // CHECK-ERROR: sshr v0.8b, v1.8h, #3
1390 // CHECK-ERROR: error: invalid operand for instruction
1391 // CHECK-ERROR: sshr v0.4h, v1.4s, #3
1393 // CHECK-ERROR: error: invalid operand for instruction
1394 // CHECK-ERROR: sshr v0.2s, v1.2d, #3
1396 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1397 // CHECK-ERROR: sshr v0.16b, v1.16b, #9
1399 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1400 // CHECK-ERROR: sshr v0.8h, v1.8h, #17
1402 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1403 // CHECK-ERROR: sshr v0.4s, v1.4s, #33
1405 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1406 // CHECK-ERROR: sshr v0.2d, v1.2d, #65
1409 //------------------------------------------------------------------------------
1410 // Vector shift right by immediate
1411 //------------------------------------------------------------------------------
1412 ushr v0.8b, v1.8h, #3
1413 ushr v0.4h, v1.4s, #3
1414 ushr v0.2s, v1.2d, #3
1415 ushr v0.16b, v1.16b, #9
1416 ushr v0.8h, v1.8h, #17
1417 ushr v0.4s, v1.4s, #33
1418 ushr v0.2d, v1.2d, #65
1420 // CHECK-ERROR: error: invalid operand for instruction
1421 // CHECK-ERROR: ushr v0.8b, v1.8h, #3
1423 // CHECK-ERROR: error: invalid operand for instruction
1424 // CHECK-ERROR: ushr v0.4h, v1.4s, #3
1426 // CHECK-ERROR: error: invalid operand for instruction
1427 // CHECK-ERROR: ushr v0.2s, v1.2d, #3
1429 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1430 // CHECK-ERROR: ushr v0.16b, v1.16b, #9
1432 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1433 // CHECK-ERROR: ushr v0.8h, v1.8h, #17
1435 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1436 // CHECK-ERROR: ushr v0.4s, v1.4s, #33
1438 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1439 // CHECK-ERROR: ushr v0.2d, v1.2d, #65
1442 //------------------------------------------------------------------------------
1443 // Vector shift right and accumulate by immediate
1444 //------------------------------------------------------------------------------
1445 ssra v0.8b, v1.8h, #3
1446 ssra v0.4h, v1.4s, #3
1447 ssra v0.2s, v1.2d, #3
1448 ssra v0.16b, v1.16b, #9
1449 ssra v0.8h, v1.8h, #17
1450 ssra v0.4s, v1.4s, #33
1451 ssra v0.2d, v1.2d, #65
1453 // CHECK-ERROR: error: invalid operand for instruction
1454 // CHECK-ERROR: ssra v0.8b, v1.8h, #3
1456 // CHECK-ERROR: error: invalid operand for instruction
1457 // CHECK-ERROR: ssra v0.4h, v1.4s, #3
1459 // CHECK-ERROR: error: invalid operand for instruction
1460 // CHECK-ERROR: ssra v0.2s, v1.2d, #3
1462 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1463 // CHECK-ERROR: ssra v0.16b, v1.16b, #9
1465 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1466 // CHECK-ERROR: ssra v0.8h, v1.8h, #17
1468 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1469 // CHECK-ERROR: ssra v0.4s, v1.4s, #33
1471 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1472 // CHECK-ERROR: ssra v0.2d, v1.2d, #65
1475 //------------------------------------------------------------------------------
1476 // Vector shift right and accumulate by immediate
1477 //------------------------------------------------------------------------------
1478 usra v0.8b, v1.8h, #3
1479 usra v0.4h, v1.4s, #3
1480 usra v0.2s, v1.2d, #3
1481 usra v0.16b, v1.16b, #9
1482 usra v0.8h, v1.8h, #17
1483 usra v0.4s, v1.4s, #33
1484 usra v0.2d, v1.2d, #65
1486 // CHECK-ERROR: error: invalid operand for instruction
1487 // CHECK-ERROR: usra v0.8b, v1.8h, #3
1489 // CHECK-ERROR: error: invalid operand for instruction
1490 // CHECK-ERROR: usra v0.4h, v1.4s, #3
1492 // CHECK-ERROR: error: invalid operand for instruction
1493 // CHECK-ERROR: usra v0.2s, v1.2d, #3
1495 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1496 // CHECK-ERROR: usra v0.16b, v1.16b, #9
1498 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1499 // CHECK-ERROR: usra v0.8h, v1.8h, #17
1501 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1502 // CHECK-ERROR: usra v0.4s, v1.4s, #33
1504 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1505 // CHECK-ERROR: usra v0.2d, v1.2d, #65
1508 //------------------------------------------------------------------------------
1509 // Vector rounding shift right by immediate
1510 //------------------------------------------------------------------------------
1511 srshr v0.8b, v1.8h, #3
1512 srshr v0.4h, v1.4s, #3
1513 srshr v0.2s, v1.2d, #3
1514 srshr v0.16b, v1.16b, #9
1515 srshr v0.8h, v1.8h, #17
1516 srshr v0.4s, v1.4s, #33
1517 srshr v0.2d, v1.2d, #65
1519 // CHECK-ERROR: error: invalid operand for instruction
1520 // CHECK-ERROR: srshr v0.8b, v1.8h, #3
1522 // CHECK-ERROR: error: invalid operand for instruction
1523 // CHECK-ERROR: srshr v0.4h, v1.4s, #3
1525 // CHECK-ERROR: error: invalid operand for instruction
1526 // CHECK-ERROR: srshr v0.2s, v1.2d, #3
1528 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1529 // CHECK-ERROR: srshr v0.16b, v1.16b, #9
1531 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1532 // CHECK-ERROR: srshr v0.8h, v1.8h, #17
1534 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1535 // CHECK-ERROR: srshr v0.4s, v1.4s, #33
1537 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1538 // CHECK-ERROR: srshr v0.2d, v1.2d, #65
1541 //------------------------------------------------------------------------------
1542 // Vecotr rounding shift right by immediate
1543 //------------------------------------------------------------------------------
1544 urshr v0.8b, v1.8h, #3
1545 urshr v0.4h, v1.4s, #3
1546 urshr v0.2s, v1.2d, #3
1547 urshr v0.16b, v1.16b, #9
1548 urshr v0.8h, v1.8h, #17
1549 urshr v0.4s, v1.4s, #33
1550 urshr v0.2d, v1.2d, #65
1552 // CHECK-ERROR: error: invalid operand for instruction
1553 // CHECK-ERROR: urshr v0.8b, v1.8h, #3
1555 // CHECK-ERROR: error: invalid operand for instruction
1556 // CHECK-ERROR: urshr v0.4h, v1.4s, #3
1558 // CHECK-ERROR: error: invalid operand for instruction
1559 // CHECK-ERROR: urshr v0.2s, v1.2d, #3
1561 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1562 // CHECK-ERROR: urshr v0.16b, v1.16b, #9
1564 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1565 // CHECK-ERROR: urshr v0.8h, v1.8h, #17
1567 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1568 // CHECK-ERROR: urshr v0.4s, v1.4s, #33
1570 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1571 // CHECK-ERROR: urshr v0.2d, v1.2d, #65
1574 //------------------------------------------------------------------------------
1575 // Vector rounding shift right and accumulate by immediate
1576 //------------------------------------------------------------------------------
1577 srsra v0.8b, v1.8h, #3
1578 srsra v0.4h, v1.4s, #3
1579 srsra v0.2s, v1.2d, #3
1580 srsra v0.16b, v1.16b, #9
1581 srsra v0.8h, v1.8h, #17
1582 srsra v0.4s, v1.4s, #33
1583 srsra v0.2d, v1.2d, #65
1585 // CHECK-ERROR: error: invalid operand for instruction
1586 // CHECK-ERROR: srsra v0.8b, v1.8h, #3
1588 // CHECK-ERROR: error: invalid operand for instruction
1589 // CHECK-ERROR: srsra v0.4h, v1.4s, #3
1591 // CHECK-ERROR: error: invalid operand for instruction
1592 // CHECK-ERROR: srsra v0.2s, v1.2d, #3
1594 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1595 // CHECK-ERROR: srsra v0.16b, v1.16b, #9
1597 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1598 // CHECK-ERROR: srsra v0.8h, v1.8h, #17
1600 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1601 // CHECK-ERROR: srsra v0.4s, v1.4s, #33
1603 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1604 // CHECK-ERROR: srsra v0.2d, v1.2d, #65
1607 //------------------------------------------------------------------------------
1608 // Vector rounding shift right and accumulate by immediate
1609 //------------------------------------------------------------------------------
1610 ursra v0.8b, v1.8h, #3
1611 ursra v0.4h, v1.4s, #3
1612 ursra v0.2s, v1.2d, #3
1613 ursra v0.16b, v1.16b, #9
1614 ursra v0.8h, v1.8h, #17
1615 ursra v0.4s, v1.4s, #33
1616 ursra v0.2d, v1.2d, #65
1618 // CHECK-ERROR: error: invalid operand for instruction
1619 // CHECK-ERROR: ursra v0.8b, v1.8h, #3
1621 // CHECK-ERROR: error: invalid operand for instruction
1622 // CHECK-ERROR: ursra v0.4h, v1.4s, #3
1624 // CHECK-ERROR: error: invalid operand for instruction
1625 // CHECK-ERROR: ursra v0.2s, v1.2d, #3
1627 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1628 // CHECK-ERROR: ursra v0.16b, v1.16b, #9
1630 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1631 // CHECK-ERROR: ursra v0.8h, v1.8h, #17
1633 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1634 // CHECK-ERROR: ursra v0.4s, v1.4s, #33
1636 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1637 // CHECK-ERROR: ursra v0.2d, v1.2d, #65
1640 //------------------------------------------------------------------------------
1641 // Vector shift right and insert by immediate
1642 //------------------------------------------------------------------------------
1643 sri v0.8b, v1.8h, #3
1644 sri v0.4h, v1.4s, #3
1645 sri v0.2s, v1.2d, #3
1646 sri v0.16b, v1.16b, #9
1647 sri v0.8h, v1.8h, #17
1648 sri v0.4s, v1.4s, #33
1649 sri v0.2d, v1.2d, #65
1651 // CHECK-ERROR: error: invalid operand for instruction
1652 // CHECK-ERROR: sri v0.8b, v1.8h, #3
1654 // CHECK-ERROR: error: invalid operand for instruction
1655 // CHECK-ERROR: sri v0.4h, v1.4s, #3
1657 // CHECK-ERROR: error: invalid operand for instruction
1658 // CHECK-ERROR: sri v0.2s, v1.2d, #3
1660 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1661 // CHECK-ERROR: sri v0.16b, v1.16b, #9
1663 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1664 // CHECK-ERROR: sri v0.8h, v1.8h, #17
1666 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1667 // CHECK-ERROR: sri v0.4s, v1.4s, #33
1669 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
1670 // CHECK-ERROR: sri v0.2d, v1.2d, #65
1673 //------------------------------------------------------------------------------
1674 // Vector shift left and insert by immediate
1675 //------------------------------------------------------------------------------
1676 sli v0.8b, v1.8h, #3
1677 sli v0.4h, v1.4s, #3
1678 sli v0.2s, v1.2d, #3
1679 sli v0.16b, v1.16b, #8
1680 sli v0.8h, v1.8h, #16
1681 sli v0.4s, v1.4s, #32
1682 sli v0.2d, v1.2d, #64
1684 // CHECK-ERROR: error: invalid operand for instruction
1685 // CHECK-ERROR: sli v0.8b, v1.8h, #3
1687 // CHECK-ERROR: error: invalid operand for instruction
1688 // CHECK-ERROR: sli v0.4h, v1.4s, #3
1690 // CHECK-ERROR: error: invalid operand for instruction
1691 // CHECK-ERROR: sli v0.2s, v1.2d, #3
1693 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1694 // CHECK-ERROR: sli v0.16b, v1.16b, #8
1696 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1697 // CHECK-ERROR: sli v0.8h, v1.8h, #16
1699 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1700 // CHECK-ERROR: sli v0.4s, v1.4s, #32
1702 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1703 // CHECK-ERROR: sli v0.2d, v1.2d, #64
1706 //------------------------------------------------------------------------------
1707 // Vector saturating shift left unsigned by immediate
1708 //------------------------------------------------------------------------------
1709 sqshlu v0.8b, v1.8h, #3
1710 sqshlu v0.4h, v1.4s, #3
1711 sqshlu v0.2s, v1.2d, #3
1712 sqshlu v0.16b, v1.16b, #8
1713 sqshlu v0.8h, v1.8h, #16
1714 sqshlu v0.4s, v1.4s, #32
1715 sqshlu v0.2d, v1.2d, #64
1717 // CHECK-ERROR: error: invalid operand for instruction
1718 // CHECK-ERROR: sqshlu v0.8b, v1.8h, #3
1720 // CHECK-ERROR: error: invalid operand for instruction
1721 // CHECK-ERROR: sqshlu v0.4h, v1.4s, #3
1723 // CHECK-ERROR: error: invalid operand for instruction
1724 // CHECK-ERROR: sqshlu v0.2s, v1.2d, #3
1726 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1727 // CHECK-ERROR: sqshlu v0.16b, v1.16b, #8
1729 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1730 // CHECK-ERROR: sqshlu v0.8h, v1.8h, #16
1732 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1733 // CHECK-ERROR: sqshlu v0.4s, v1.4s, #32
1735 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1736 // CHECK-ERROR: sqshlu v0.2d, v1.2d, #64
1739 //------------------------------------------------------------------------------
1740 // Vector saturating shift left by immediate
1741 //------------------------------------------------------------------------------
1742 sqshl v0.8b, v1.8h, #3
1743 sqshl v0.4h, v1.4s, #3
1744 sqshl v0.2s, v1.2d, #3
1745 sqshl v0.16b, v1.16b, #8
1746 sqshl v0.8h, v1.8h, #16
1747 sqshl v0.4s, v1.4s, #32
1748 sqshl v0.2d, v1.2d, #64
1750 // CHECK-ERROR: error: invalid operand for instruction
1751 // CHECK-ERROR: sqshl v0.8b, v1.8h, #3
1753 // CHECK-ERROR: error: invalid operand for instruction
1754 // CHECK-ERROR: sqshl v0.4h, v1.4s, #3
1756 // CHECK-ERROR: error: invalid operand for instruction
1757 // CHECK-ERROR: sqshl v0.2s, v1.2d, #3
1759 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1760 // CHECK-ERROR: sqshl v0.16b, v1.16b, #8
1762 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1763 // CHECK-ERROR: sqshl v0.8h, v1.8h, #16
1765 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1766 // CHECK-ERROR: sqshl v0.4s, v1.4s, #32
1768 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1769 // CHECK-ERROR: sqshl v0.2d, v1.2d, #64
1772 //------------------------------------------------------------------------------
1773 // Vector saturating shift left by immediate
1774 //------------------------------------------------------------------------------
1775 uqshl v0.8b, v1.8h, #3
1776 uqshl v0.4h, v1.4s, #3
1777 uqshl v0.2s, v1.2d, #3
1778 uqshl v0.16b, v1.16b, #8
1779 uqshl v0.8h, v1.8h, #16
1780 uqshl v0.4s, v1.4s, #32
1781 uqshl v0.2d, v1.2d, #64
1783 // CHECK-ERROR: error: invalid operand for instruction
1784 // CHECK-ERROR: uqshl v0.8b, v1.8h, #3
1786 // CHECK-ERROR: error: invalid operand for instruction
1787 // CHECK-ERROR: uqshl v0.4h, v1.4s, #3
1789 // CHECK-ERROR: error: invalid operand for instruction
1790 // CHECK-ERROR: uqshl v0.2s, v1.2d, #3
1792 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
1793 // CHECK-ERROR: uqshl v0.16b, v1.16b, #8
1795 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
1796 // CHECK-ERROR: uqshl v0.8h, v1.8h, #16
1798 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
1799 // CHECK-ERROR: uqshl v0.4s, v1.4s, #32
1801 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
1802 // CHECK-ERROR: uqshl v0.2d, v1.2d, #64
1805 //------------------------------------------------------------------------------
1806 // Vector shift right narrow by immediate
1807 //------------------------------------------------------------------------------
1808 shrn v0.8b, v1.8b, #3
1809 shrn v0.4h, v1.4h, #3
1810 shrn v0.2s, v1.2s, #3
1811 shrn2 v0.16b, v1.8h, #17
1812 shrn2 v0.8h, v1.4s, #33
1813 shrn2 v0.4s, v1.2d, #65
1815 // CHECK-ERROR: error: invalid operand for instruction
1816 // CHECK-ERROR: shrn v0.8b, v1.8b, #3
1818 // CHECK-ERROR: error: invalid operand for instruction
1819 // CHECK-ERROR: shrn v0.4h, v1.4h, #3
1821 // CHECK-ERROR: error: invalid operand for instruction
1822 // CHECK-ERROR: shrn v0.2s, v1.2s, #3
1824 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1825 // CHECK-ERROR: shrn2 v0.16b, v1.8h, #17
1827 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1828 // CHECK-ERROR: shrn2 v0.8h, v1.4s, #33
1830 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1831 // CHECK-ERROR: shrn2 v0.4s, v1.2d, #65
1834 //------------------------------------------------------------------------------
1835 // Vector saturating shift right unsigned narrow by immediate
1836 //------------------------------------------------------------------------------
1837 sqshrun v0.8b, v1.8b, #3
1838 sqshrun v0.4h, v1.4h, #3
1839 sqshrun v0.2s, v1.2s, #3
1840 sqshrun2 v0.16b, v1.8h, #17
1841 sqshrun2 v0.8h, v1.4s, #33
1842 sqshrun2 v0.4s, v1.2d, #65
1844 // CHECK-ERROR: error: invalid operand for instruction
1845 // CHECK-ERROR: sqshrun v0.8b, v1.8b, #3
1847 // CHECK-ERROR: error: invalid operand for instruction
1848 // CHECK-ERROR: sqshrun v0.4h, v1.4h, #3
1850 // CHECK-ERROR: error: invalid operand for instruction
1851 // CHECK-ERROR: sqshrun v0.2s, v1.2s, #3
1853 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1854 // CHECK-ERROR: sqshrun2 v0.16b, v1.8h, #17
1856 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1857 // CHECK-ERROR: sqshrun2 v0.8h, v1.4s, #33
1859 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1860 // CHECK-ERROR: sqshrun2 v0.4s, v1.2d, #65
1863 //------------------------------------------------------------------------------
1864 // Vector rounding shift right narrow by immediate
1865 //------------------------------------------------------------------------------
1866 rshrn v0.8b, v1.8b, #3
1867 rshrn v0.4h, v1.4h, #3
1868 rshrn v0.2s, v1.2s, #3
1869 rshrn2 v0.16b, v1.8h, #17
1870 rshrn2 v0.8h, v1.4s, #33
1871 rshrn2 v0.4s, v1.2d, #65
1873 // CHECK-ERROR: error: invalid operand for instruction
1874 // CHECK-ERROR: rshrn v0.8b, v1.8b, #3
1876 // CHECK-ERROR: error: invalid operand for instruction
1877 // CHECK-ERROR: rshrn v0.4h, v1.4h, #3
1879 // CHECK-ERROR: error: invalid operand for instruction
1880 // CHECK-ERROR: rshrn v0.2s, v1.2s, #3
1882 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1883 // CHECK-ERROR: rshrn2 v0.16b, v1.8h, #17
1885 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1886 // CHECK-ERROR: rshrn2 v0.8h, v1.4s, #33
1888 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1889 // CHECK-ERROR: rshrn2 v0.4s, v1.2d, #65
1892 //------------------------------------------------------------------------------
1893 // Vector saturating shift right rounded unsigned narrow by immediate
1894 //------------------------------------------------------------------------------
1895 sqrshrun v0.8b, v1.8b, #3
1896 sqrshrun v0.4h, v1.4h, #3
1897 sqrshrun v0.2s, v1.2s, #3
1898 sqrshrun2 v0.16b, v1.8h, #17
1899 sqrshrun2 v0.8h, v1.4s, #33
1900 sqrshrun2 v0.4s, v1.2d, #65
1902 // CHECK-ERROR: error: invalid operand for instruction
1903 // CHECK-ERROR: sqrshrun v0.8b, v1.8b, #3
1905 // CHECK-ERROR: error: invalid operand for instruction
1906 // CHECK-ERROR: sqrshrun v0.4h, v1.4h, #3
1908 // CHECK-ERROR: error: invalid operand for instruction
1909 // CHECK-ERROR: sqrshrun v0.2s, v1.2s, #3
1911 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1912 // CHECK-ERROR: sqrshrun2 v0.16b, v1.8h, #17
1914 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1915 // CHECK-ERROR: sqrshrun2 v0.8h, v1.4s, #33
1917 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1918 // CHECK-ERROR: sqrshrun2 v0.4s, v1.2d, #65
1921 //------------------------------------------------------------------------------
1922 // Vector saturating shift right narrow by immediate
1923 //------------------------------------------------------------------------------
1924 sqshrn v0.8b, v1.8b, #3
1925 sqshrn v0.4h, v1.4h, #3
1926 sqshrn v0.2s, v1.2s, #3
1927 sqshrn2 v0.16b, v1.8h, #17
1928 sqshrn2 v0.8h, v1.4s, #33
1929 sqshrn2 v0.4s, v1.2d, #65
1931 // CHECK-ERROR: error: invalid operand for instruction
1932 // CHECK-ERROR: sqshrn v0.8b, v1.8b, #3
1934 // CHECK-ERROR: error: invalid operand for instruction
1935 // CHECK-ERROR: sqshrn v0.4h, v1.4h, #3
1937 // CHECK-ERROR: error: invalid operand for instruction
1938 // CHECK-ERROR: sqshrn v0.2s, v1.2s, #3
1940 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1941 // CHECK-ERROR: sqshrn2 v0.16b, v1.8h, #17
1943 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1944 // CHECK-ERROR: sqshrn2 v0.8h, v1.4s, #33
1946 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1947 // CHECK-ERROR: sqshrn2 v0.4s, v1.2d, #65
1950 //------------------------------------------------------------------------------
1951 // Vector saturating shift right narrow by immediate
1952 //------------------------------------------------------------------------------
1953 uqshrn v0.8b, v1.8b, #3
1954 uqshrn v0.4h, v1.4h, #3
1955 uqshrn v0.2s, v1.2s, #3
1956 uqshrn2 v0.16b, v1.8h, #17
1957 uqshrn2 v0.8h, v1.4s, #33
1958 uqshrn2 v0.4s, v1.2d, #65
1960 // CHECK-ERROR: error: invalid operand for instruction
1961 // CHECK-ERROR: uqshrn v0.8b, v1.8b, #3
1963 // CHECK-ERROR: error: invalid operand for instruction
1964 // CHECK-ERROR: uqshrn v0.4h, v1.4h, #3
1966 // CHECK-ERROR: error: invalid operand for instruction
1967 // CHECK-ERROR: uqshrn v0.2s, v1.2s, #3
1969 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1970 // CHECK-ERROR: uqshrn2 v0.16b, v1.8h, #17
1972 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
1973 // CHECK-ERROR: uqshrn2 v0.8h, v1.4s, #33
1975 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
1976 // CHECK-ERROR: uqshrn2 v0.4s, v1.2d, #65
1979 //------------------------------------------------------------------------------
1980 // Vector saturating shift right rounded narrow by immediate
1981 //------------------------------------------------------------------------------
1982 sqrshrn v0.8b, v1.8b, #3
1983 sqrshrn v0.4h, v1.4h, #3
1984 sqrshrn v0.2s, v1.2s, #3
1985 sqrshrn2 v0.16b, v1.8h, #17
1986 sqrshrn2 v0.8h, v1.4s, #33
1987 sqrshrn2 v0.4s, v1.2d, #65
1989 // CHECK-ERROR: error: invalid operand for instruction
1990 // CHECK-ERROR: sqrshrn v0.8b, v1.8b, #3
1992 // CHECK-ERROR: error: invalid operand for instruction
1993 // CHECK-ERROR: sqrshrn v0.4h, v1.4h, #3
1995 // CHECK-ERROR: error: invalid operand for instruction
1996 // CHECK-ERROR: sqrshrn v0.2s, v1.2s, #3
1998 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
1999 // CHECK-ERROR: sqrshrn2 v0.16b, v1.8h, #17
2001 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
2002 // CHECK-ERROR: sqrshrn2 v0.8h, v1.4s, #33
2004 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2005 // CHECK-ERROR: sqrshrn2 v0.4s, v1.2d, #65
2008 //------------------------------------------------------------------------------
2009 // Vector saturating shift right rounded narrow by immediate
2010 //------------------------------------------------------------------------------
2011 uqrshrn v0.8b, v1.8b, #3
2012 uqrshrn v0.4h, v1.4h, #3
2013 uqrshrn v0.2s, v1.2s, #3
2014 uqrshrn2 v0.16b, v1.8h, #17
2015 uqrshrn2 v0.8h, v1.4s, #33
2016 uqrshrn2 v0.4s, v1.2d, #65
2018 // CHECK-ERROR: error: invalid operand for instruction
2019 // CHECK-ERROR: uqrshrn v0.8b, v1.8b, #3
2021 // CHECK-ERROR: error: invalid operand for instruction
2022 // CHECK-ERROR: uqrshrn v0.4h, v1.4h, #3
2024 // CHECK-ERROR: error: invalid operand for instruction
2025 // CHECK-ERROR: uqrshrn v0.2s, v1.2s, #3
2027 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
2028 // CHECK-ERROR: uqrshrn2 v0.16b, v1.8h, #17
2030 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
2031 // CHECK-ERROR: uqrshrn2 v0.8h, v1.4s, #33
2033 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2034 // CHECK-ERROR: uqrshrn2 v0.4s, v1.2d, #65
2037 //------------------------------------------------------------------------------
2038 // Fixed-point convert to floating-point
2039 //------------------------------------------------------------------------------
2040 scvtf v0.2s, v1.2d, #3
2041 scvtf v0.4s, v1.4h, #3
2042 scvtf v0.2d, v1.2s, #3
2043 ucvtf v0.2s, v1.2s, #33
2044 ucvtf v0.4s, v1.4s, #33
2045 ucvtf v0.2d, v1.2d, #65
2047 // CHECK-ERROR: error: invalid operand for instruction
2048 // CHECK-ERROR: scvtf v0.2s, v1.2d, #3
2050 // CHECK-ERROR: error: invalid operand for instruction
2051 // CHECK-ERROR: scvtf v0.4s, v1.4h, #3
2053 // CHECK-ERROR: error: invalid operand for instruction
2054 // CHECK-ERROR: scvtf v0.2d, v1.2s, #3
2056 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2057 // CHECK-ERROR: ucvtf v0.2s, v1.2s, #33
2059 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2060 // CHECK-ERROR: ucvtf v0.4s, v1.4s, #33
2062 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
2063 // CHECK-ERROR: ucvtf v0.2d, v1.2d, #65
2066 //------------------------------------------------------------------------------
2067 // Floating-point convert to fixed-point
2068 //------------------------------------------------------------------------------
2069 fcvtzs v0.2s, v1.2d, #3
2070 fcvtzs v0.4s, v1.4h, #3
2071 fcvtzs v0.2d, v1.2s, #3
2072 fcvtzu v0.2s, v1.2s, #33
2073 fcvtzu v0.4s, v1.4s, #33
2074 fcvtzu v0.2d, v1.2d, #65
2076 // CHECK-ERROR: error: invalid operand for instruction
2077 // CHECK-ERROR: fcvtzs v0.2s, v1.2d, #3
2079 // CHECK-ERROR: error: invalid operand for instruction
2080 // CHECK-ERROR: fcvtzs v0.4s, v1.4h, #3
2082 // CHECK-ERROR: error: invalid operand for instruction
2083 // CHECK-ERROR: fcvtzs v0.2d, v1.2s, #3
2085 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2086 // CHECK-ERROR: fcvtzu v0.2s, v1.2s, #33
2088 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
2089 // CHECK-ERROR: fcvtzu v0.4s, v1.4s, #33
2091 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
2092 // CHECK-ERROR: fcvtzu v0.2d, v1.2d, #65
2095 //----------------------------------------------------------------------
2096 // Vector operation on 3 operands with different types
2097 //----------------------------------------------------------------------
2099 // Mismatched and invalid vector types
2100 saddl v0.8h, v1.8h, v2.8b
2101 saddl v0.4s, v1.4s, v2.4h
2102 saddl v0.2d, v1.2d, v2.2s
2104 // CHECK-ERROR: error: invalid operand for instruction
2105 // CHECK-ERROR: saddl v0.8h, v1.8h, v2.8b
2107 // CHECK-ERROR: error: invalid operand for instruction
2108 // CHECK-ERROR: saddl v0.4s, v1.4s, v2.4h
2110 // CHECK-ERROR: error: invalid operand for instruction
2111 // CHECK-ERROR: saddl v0.2d, v1.2d, v2.2s
2114 saddl2 v0.4s, v1.8s, v2.8h
2115 saddl2 v0.8h, v1.16h, v2.16b
2116 saddl2 v0.2d, v1.4d, v2.4s
2118 // CHECK-ERROR: error: invalid operand for instruction
2119 // CHECK-ERROR: saddl2 v0.4s, v1.8s, v2.8h
2121 // CHECK-ERROR: error: invalid operand for instruction
2122 // CHECK-ERROR: saddl2 v0.8h, v1.16h, v2.16b
2124 // CHECK-ERROR: error: invalid operand for instruction
2125 // CHECK-ERROR: saddl2 v0.2d, v1.4d, v2.4s
2128 uaddl v0.8h, v1.8h, v2.8b
2129 uaddl v0.4s, v1.4s, v2.4h
2130 uaddl v0.2d, v1.2d, v2.2s
2132 // CHECK-ERROR: error: invalid operand for instruction
2133 // CHECK-ERROR: uaddl v0.8h, v1.8h, v2.8b
2135 // CHECK-ERROR: error: invalid operand for instruction
2136 // CHECK-ERROR: uaddl v0.4s, v1.4s, v2.4h
2138 // CHECK-ERROR: error: invalid operand for instruction
2139 // CHECK-ERROR: uaddl v0.2d, v1.2d, v2.2s
2142 uaddl2 v0.8h, v1.16h, v2.16b
2143 uaddl2 v0.4s, v1.8s, v2.8h
2144 uaddl2 v0.2d, v1.4d, v2.4s
2146 // CHECK-ERROR: error: invalid operand for instruction
2147 // CHECK-ERROR: uaddl2 v0.8h, v1.16h, v2.16b
2149 // CHECK-ERROR: error: invalid operand for instruction
2150 // CHECK-ERROR: uaddl2 v0.4s, v1.8s, v2.8h
2152 // CHECK-ERROR: error: invalid operand for instruction
2153 // CHECK-ERROR: uaddl2 v0.2d, v1.4d, v2.4s
2156 ssubl v0.8h, v1.8h, v2.8b
2157 ssubl v0.4s, v1.4s, v2.4h
2158 ssubl v0.2d, v1.2d, v2.2s
2160 // CHECK-ERROR: error: invalid operand for instruction
2161 // CHECK-ERROR: ssubl v0.8h, v1.8h, v2.8b
2163 // CHECK-ERROR: error: invalid operand for instruction
2164 // CHECK-ERROR: ssubl v0.4s, v1.4s, v2.4h
2166 // CHECK-ERROR: error: invalid operand for instruction
2167 // CHECK-ERROR: ssubl v0.2d, v1.2d, v2.2s
2170 ssubl2 v0.8h, v1.16h, v2.16b
2171 ssubl2 v0.4s, v1.8s, v2.8h
2172 ssubl2 v0.2d, v1.4d, v2.4s
2174 // CHECK-ERROR: error: invalid operand for instruction
2175 // CHECK-ERROR: ssubl2 v0.8h, v1.16h, v2.16b
2177 // CHECK-ERROR: error: invalid operand for instruction
2178 // CHECK-ERROR: ssubl2 v0.4s, v1.8s, v2.8h
2180 // CHECK-ERROR: error: invalid operand for instruction
2181 // CHECK-ERROR: ssubl2 v0.2d, v1.4d, v2.4s
2184 usubl v0.8h, v1.8h, v2.8b
2185 usubl v0.4s, v1.4s, v2.4h
2186 usubl v0.2d, v1.2d, v2.2s
2188 // CHECK-ERROR: error: invalid operand for instruction
2189 // CHECK-ERROR: usubl v0.8h, v1.8h, v2.8b
2191 // CHECK-ERROR: error: invalid operand for instruction
2192 // CHECK-ERROR: usubl v0.4s, v1.4s, v2.4h
2194 // CHECK-ERROR: error: invalid operand for instruction
2195 // CHECK-ERROR: usubl v0.2d, v1.2d, v2.2s
2198 usubl2 v0.8h, v1.16h, v2.16b
2199 usubl2 v0.4s, v1.8s, v2.8h
2200 usubl2 v0.2d, v1.4d, v2.4s
2202 // CHECK-ERROR: error: invalid operand for instruction
2203 // CHECK-ERROR: usubl2 v0.8h, v1.16h, v2.16b
2205 // CHECK-ERROR: error: invalid operand for instruction
2206 // CHECK-ERROR: usubl2 v0.4s, v1.8s, v2.8h
2208 // CHECK-ERROR: error: invalid operand for instruction
2209 // CHECK-ERROR: usubl2 v0.2d, v1.4d, v2.4s
2212 sabal v0.8h, v1.8h, v2.8b
2213 sabal v0.4s, v1.4s, v2.4h
2214 sabal v0.2d, v1.2d, v2.2s
2216 // CHECK-ERROR: error: invalid operand for instruction
2217 // CHECK-ERROR: sabal v0.8h, v1.8h, v2.8b
2219 // CHECK-ERROR: error: invalid operand for instruction
2220 // CHECK-ERROR: sabal v0.4s, v1.4s, v2.4h
2222 // CHECK-ERROR: error: invalid operand for instruction
2223 // CHECK-ERROR: sabal v0.2d, v1.2d, v2.2s
2226 sabal2 v0.8h, v1.16h, v2.16b
2227 sabal2 v0.4s, v1.8s, v2.8h
2228 sabal2 v0.2d, v1.4d, v2.4s
2230 // CHECK-ERROR: error: invalid operand for instruction
2231 // CHECK-ERROR: sabal2 v0.8h, v1.16h, v2.16b
2233 // CHECK-ERROR: error: invalid operand for instruction
2234 // CHECK-ERROR: sabal2 v0.4s, v1.8s, v2.8h
2236 // CHECK-ERROR: error: invalid operand for instruction
2237 // CHECK-ERROR: sabal2 v0.2d, v1.4d, v2.4s
2240 uabal v0.8h, v1.8h, v2.8b
2241 uabal v0.4s, v1.4s, v2.4h
2242 uabal v0.2d, v1.2d, v2.2s
2244 // CHECK-ERROR: error: invalid operand for instruction
2245 // CHECK-ERROR: uabal v0.8h, v1.8h, v2.8b
2247 // CHECK-ERROR: error: invalid operand for instruction
2248 // CHECK-ERROR: uabal v0.4s, v1.4s, v2.4h
2250 // CHECK-ERROR: error: invalid operand for instruction
2251 // CHECK-ERROR: uabal v0.2d, v1.2d, v2.2s
2254 uabal2 v0.8h, v1.16h, v2.16b
2255 uabal2 v0.4s, v1.8s, v2.8h
2256 uabal2 v0.2d, v1.4d, v2.4s
2258 // CHECK-ERROR: error: invalid operand for instruction
2259 // CHECK-ERROR: uabal2 v0.8h, v1.16h, v2.16b
2261 // CHECK-ERROR: error: invalid operand for instruction
2262 // CHECK-ERROR: uabal2 v0.4s, v1.8s, v2.8h
2264 // CHECK-ERROR: error: invalid operand for instruction
2265 // CHECK-ERROR: uabal2 v0.2d, v1.4d, v2.4s
2268 sabdl v0.8h, v1.8h, v2.8b
2269 sabdl v0.4s, v1.4s, v2.4h
2270 sabdl v0.2d, v1.2d, v2.2s
2272 // CHECK-ERROR: error: invalid operand for instruction
2273 // CHECK-ERROR: sabdl v0.8h, v1.8h, v2.8b
2275 // CHECK-ERROR: error: invalid operand for instruction
2276 // CHECK-ERROR: sabdl v0.4s, v1.4s, v2.4h
2278 // CHECK-ERROR: error: invalid operand for instruction
2279 // CHECK-ERROR: sabdl v0.2d, v1.2d, v2.2s
2282 sabdl2 v0.8h, v1.16h, v2.16b
2283 sabdl2 v0.4s, v1.8s, v2.8h
2284 sabdl2 v0.2d, v1.4d, v2.4s
2286 // CHECK-ERROR: error: invalid operand for instruction
2287 // CHECK-ERROR: sabdl2 v0.8h, v1.16h, v2.16b
2289 // CHECK-ERROR: error: invalid operand for instruction
2290 // CHECK-ERROR: sabdl2 v0.4s, v1.8s, v2.8h
2292 // CHECK-ERROR: error: invalid operand for instruction
2293 // CHECK-ERROR: sabdl2 v0.2d, v1.4d, v2.4s
2296 uabdl v0.8h, v1.8h, v2.8b
2297 uabdl v0.4s, v1.4s, v2.4h
2298 uabdl v0.2d, v1.2d, v2.2s
2300 // CHECK-ERROR: error: invalid operand for instruction
2301 // CHECK-ERROR: uabdl v0.8h, v1.8h, v2.8b
2303 // CHECK-ERROR: error: invalid operand for instruction
2304 // CHECK-ERROR: uabdl v0.4s, v1.4s, v2.4h
2306 // CHECK-ERROR: error: invalid operand for instruction
2307 // CHECK-ERROR: uabdl v0.2d, v1.2d, v2.2s
2310 uabdl2 v0.8h, v1.16h, v2.16b
2311 uabdl2 v0.4s, v1.8s, v2.8h
2312 uabdl2 v0.2d, v1.4d, v2.4s
2314 // CHECK-ERROR: error: invalid operand for instruction
2315 // CHECK-ERROR: uabdl2 v0.8h, v1.16h, v2.16b
2317 // CHECK-ERROR: error: invalid operand for instruction
2318 // CHECK-ERROR: uabdl2 v0.4s, v1.8s, v2.8h
2320 // CHECK-ERROR: error: invalid operand for instruction
2321 // CHECK-ERROR: uabdl2 v0.2d, v1.4d, v2.4s
2324 smlal v0.8h, v1.8h, v2.8b
2325 smlal v0.4s, v1.4s, v2.4h
2326 smlal v0.2d, v1.2d, v2.2s
2328 // CHECK-ERROR: error: invalid operand for instruction
2329 // CHECK-ERROR: smlal v0.8h, v1.8h, v2.8b
2331 // CHECK-ERROR: error: invalid operand for instruction
2332 // CHECK-ERROR: smlal v0.4s, v1.4s, v2.4h
2334 // CHECK-ERROR: error: invalid operand for instruction
2335 // CHECK-ERROR: smlal v0.2d, v1.2d, v2.2s
2338 smlal2 v0.8h, v1.16h, v2.16b
2339 smlal2 v0.4s, v1.8s, v2.8h
2340 smlal2 v0.2d, v1.4d, v2.4s
2342 // CHECK-ERROR: error: invalid operand for instruction
2343 // CHECK-ERROR: smlal2 v0.8h, v1.16h, v2.16b
2345 // CHECK-ERROR: error: invalid operand for instruction
2346 // CHECK-ERROR: smlal2 v0.4s, v1.8s, v2.8h
2348 // CHECK-ERROR: error: invalid operand for instruction
2349 // CHECK-ERROR: smlal2 v0.2d, v1.4d, v2.4s
2352 umlal v0.8h, v1.8h, v2.8b
2353 umlal v0.4s, v1.4s, v2.4h
2354 umlal v0.2d, v1.2d, v2.2s
2356 // CHECK-ERROR: error: invalid operand for instruction
2357 // CHECK-ERROR: umlal v0.8h, v1.8h, v2.8b
2359 // CHECK-ERROR: error: invalid operand for instruction
2360 // CHECK-ERROR: umlal v0.4s, v1.4s, v2.4h
2362 // CHECK-ERROR: error: invalid operand for instruction
2363 // CHECK-ERROR: umlal v0.2d, v1.2d, v2.2s
2366 umlal2 v0.8h, v1.16h, v2.16b
2367 umlal2 v0.4s, v1.8s, v2.8h
2368 umlal2 v0.2d, v1.4d, v2.4s
2370 // CHECK-ERROR: error: invalid operand for instruction
2371 // CHECK-ERROR: umlal2 v0.8h, v1.16h, v2.16b
2373 // CHECK-ERROR: error: invalid operand for instruction
2374 // CHECK-ERROR: umlal2 v0.4s, v1.8s, v2.8h
2376 // CHECK-ERROR: error: invalid operand for instruction
2377 // CHECK-ERROR: umlal2 v0.2d, v1.4d, v2.4s
2380 smlsl v0.8h, v1.8h, v2.8b
2381 smlsl v0.4s, v1.4s, v2.4h
2382 smlsl v0.2d, v1.2d, v2.2s
2384 // CHECK-ERROR: error: invalid operand for instruction
2385 // CHECK-ERROR: smlsl v0.8h, v1.8h, v2.8b
2387 // CHECK-ERROR: error: invalid operand for instruction
2388 // CHECK-ERROR: smlsl v0.4s, v1.4s, v2.4h
2390 // CHECK-ERROR: error: invalid operand for instruction
2391 // CHECK-ERROR: smlsl v0.2d, v1.2d, v2.2s
2394 smlsl2 v0.8h, v1.16h, v2.16b
2395 smlsl2 v0.4s, v1.8s, v2.8h
2396 smlsl2 v0.2d, v1.4d, v2.4s
2398 // CHECK-ERROR: error: invalid operand for instruction
2399 // CHECK-ERROR: smlsl2 v0.8h, v1.16h, v2.16b
2401 // CHECK-ERROR: error: invalid operand for instruction
2402 // CHECK-ERROR: smlsl2 v0.4s, v1.8s, v2.8h
2404 // CHECK-ERROR: error: invalid operand for instruction
2405 // CHECK-ERROR: smlsl2 v0.2d, v1.4d, v2.4s
2408 umlsl v0.8h, v1.8h, v2.8b
2409 umlsl v0.4s, v1.4s, v2.4h
2410 umlsl v0.2d, v1.2d, v2.2s
2412 // CHECK-ERROR: error: invalid operand for instruction
2413 // CHECK-ERROR: umlsl v0.8h, v1.8h, v2.8b
2415 // CHECK-ERROR: error: invalid operand for instruction
2416 // CHECK-ERROR: umlsl v0.4s, v1.4s, v2.4h
2418 // CHECK-ERROR: error: invalid operand for instruction
2419 // CHECK-ERROR: umlsl v0.2d, v1.2d, v2.2s
2422 umlsl2 v0.8h, v1.16h, v2.16b
2423 umlsl2 v0.4s, v1.8s, v2.8h
2424 umlsl2 v0.2d, v1.4d, v2.4s
2426 // CHECK-ERROR: error: invalid operand for instruction
2427 // CHECK-ERROR: umlsl2 v0.8h, v1.16h, v2.16b
2429 // CHECK-ERROR: error: invalid operand for instruction
2430 // CHECK-ERROR: umlsl2 v0.4s, v1.8s, v2.8h
2432 // CHECK-ERROR: error: invalid operand for instruction
2433 // CHECK-ERROR: umlsl2 v0.2d, v1.4d, v2.4s
2436 smull v0.8h, v1.8h, v2.8b
2437 smull v0.4s, v1.4s, v2.4h
2438 smull v0.2d, v1.2d, v2.2s
2440 // CHECK-ERROR: error: invalid operand for instruction
2441 // CHECK-ERROR: smull v0.8h, v1.8h, v2.8b
2443 // CHECK-ERROR: error: invalid operand for instruction
2444 // CHECK-ERROR: smull v0.4s, v1.4s, v2.4h
2446 // CHECK-ERROR: error: invalid operand for instruction
2447 // CHECK-ERROR: smull v0.2d, v1.2d, v2.2s
2450 smull2 v0.8h, v1.16h, v2.16b
2451 smull2 v0.4s, v1.8s, v2.8h
2452 smull2 v0.2d, v1.4d, v2.4s
2454 // CHECK-ERROR: error: invalid operand for instruction
2455 // CHECK-ERROR: smull2 v0.8h, v1.16h, v2.16b
2457 // CHECK-ERROR: error: invalid operand for instruction
2458 // CHECK-ERROR: smull2 v0.4s, v1.8s, v2.8h
2460 // CHECK-ERROR: error: invalid operand for instruction
2461 // CHECK-ERROR: smull2 v0.2d, v1.4d, v2.4s
2464 umull v0.8h, v1.8h, v2.8b
2465 umull v0.4s, v1.4s, v2.4h
2466 umull v0.2d, v1.2d, v2.2s
2468 // CHECK-ERROR: error: invalid operand for instruction
2469 // CHECK-ERROR: umull v0.8h, v1.8h, v2.8b
2471 // CHECK-ERROR: error: invalid operand for instruction
2472 // CHECK-ERROR: umull v0.4s, v1.4s, v2.4h
2474 // CHECK-ERROR: error: invalid operand for instruction
2475 // CHECK-ERROR: umull v0.2d, v1.2d, v2.2s
2478 umull2 v0.8h, v1.16h, v2.16b
2479 umull2 v0.4s, v1.8s, v2.8h
2480 umull2 v0.2d, v1.4d, v2.4s
2482 // CHECK-ERROR: error: invalid operand for instruction
2483 // CHECK-ERROR: umull2 v0.8h, v1.16h, v2.16b
2485 // CHECK-ERROR: error: invalid operand for instruction
2486 // CHECK-ERROR: umull2 v0.4s, v1.8s, v2.8h
2488 // CHECK-ERROR: error: invalid operand for instruction
2489 // CHECK-ERROR: umull2 v0.2d, v1.4d, v2.4s
2492 //------------------------------------------------------------------------------
2494 //------------------------------------------------------------------------------
2496 sqdmlal v0.4s, v1.4s, v2.4h
2497 sqdmlal v0.2d, v1.2d, v2.2s
2499 // CHECK-ERROR: error: invalid operand for instruction
2500 // CHECK-ERROR: sqdmlal v0.4s, v1.4s, v2.4h
2502 // CHECK-ERROR: error: invalid operand for instruction
2503 // CHECK-ERROR: sqdmlal v0.2d, v1.2d, v2.2s
2506 sqdmlal2 v0.4s, v1.8s, v2.8h
2507 sqdmlal2 v0.2d, v1.4d, v2.4s
2509 // CHECK-ERROR: error: invalid operand for instruction
2510 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8s, v2.8h
2512 // CHECK-ERROR: error: invalid operand for instruction
2513 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4d, v2.4s
2516 // Mismatched vector types
2517 sqdmlal v0.8h, v1.8b, v2.8b
2518 sqdmlal2 v0.8h, v1.16b, v2.16b
2520 // CHECK-ERROR: error: invalid operand for instruction
2521 // CHECK-ERROR: sqdmlal v0.8h, v1.8b, v2.8b
2523 // CHECK-ERROR: error: invalid operand for instruction
2524 // CHECK-ERROR: sqdmlal2 v0.8h, v1.16b, v2.16b
2527 sqdmlsl v0.4s, v1.4s, v2.4h
2528 sqdmlsl v0.2d, v1.2d, v2.2s
2530 // CHECK-ERROR: error: invalid operand for instruction
2531 // CHECK-ERROR: sqdmlsl v0.4s, v1.4s, v2.4h
2533 // CHECK-ERROR: error: invalid operand for instruction
2534 // CHECK-ERROR: sqdmlsl v0.2d, v1.2d, v2.2s
2537 sqdmlsl2 v0.4s, v1.8s, v2.8h
2538 sqdmlsl2 v0.2d, v1.4d, v2.4s
2540 // CHECK-ERROR: error: invalid operand for instruction
2541 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8s, v2.8h
2543 // CHECK-ERROR: error: invalid operand for instruction
2544 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4d, v2.4s
2547 // Mismatched vector types
2548 sqdmlsl v0.8h, v1.8b, v2.8b
2549 sqdmlsl2 v0.8h, v1.16b, v2.16b
2551 // CHECK-ERROR: error: invalid operand for instruction
2552 // CHECK-ERROR: sqdmlsl v0.8h, v1.8b, v2.8b
2554 // CHECK-ERROR: error: invalid operand for instruction
2555 // CHECK-ERROR: sqdmlsl2 v0.8h, v1.16b, v2.16b
2559 sqdmull v0.4s, v1.4s, v2.4h
2560 sqdmull v0.2d, v1.2d, v2.2s
2562 // CHECK-ERROR: error: invalid operand for instruction
2563 // CHECK-ERROR: sqdmull v0.4s, v1.4s, v2.4h
2565 // CHECK-ERROR: error: invalid operand for instruction
2566 // CHECK-ERROR: sqdmull v0.2d, v1.2d, v2.2s
2569 sqdmull2 v0.4s, v1.8s, v2.8h
2570 sqdmull2 v0.2d, v1.4d, v2.4s
2572 // CHECK-ERROR: error: invalid operand for instruction
2573 // CHECK-ERROR: sqdmull2 v0.4s, v1.8s, v2.8h
2575 // CHECK-ERROR: error: invalid operand for instruction
2576 // CHECK-ERROR: sqdmull2 v0.2d, v1.4d, v2.4s
2579 // Mismatched vector types
2580 sqdmull v0.8h, v1.8b, v2.8b
2581 sqdmull2 v0.8h, v1.16b, v2.16b
2583 // CHECK-ERROR: error: invalid operand for instruction
2584 // CHECK-ERROR: sqdmull v0.8h, v1.8b, v2.8b
2586 // CHECK-ERROR: error: invalid operand for instruction
2587 // CHECK-ERROR: sqdmull2 v0.8h, v1.16b, v2.16b
2591 //------------------------------------------------------------------------------
2593 //------------------------------------------------------------------------------
2595 pmull v0.8h, v1.8h, v2.8b
2597 // CHECK-ERROR: error: invalid operand for instruction
2598 // CHECK-ERROR: pmull v0.8h, v1.8h, v2.8b
2601 pmull v0.1q, v1.2d, v2.2d
2603 // CHECK-ERROR: error: invalid operand for instruction
2604 // CHECK-ERROR: pmull v0.1q, v1.2d, v2.2d
2607 // Mismatched vector types
2608 pmull v0.4s, v1.4h, v2.4h
2609 pmull v0.2d, v1.2s, v2.2s
2611 // CHECK-ERROR: error: invalid operand for instruction
2612 // CHECK-ERROR: pmull v0.4s, v1.4h, v2.4h
2614 // CHECK-ERROR: error: invalid operand for instruction
2615 // CHECK-ERROR: pmull v0.2d, v1.2s, v2.2s
2619 pmull2 v0.8h, v1.16h, v2.16b
2621 // CHECK-ERROR: error: invalid operand for instruction
2622 // CHECK-ERROR: pmull2 v0.8h, v1.16h, v2.16b
2625 pmull2 v0.q, v1.2d, v2.2d
2627 // CHECK-ERROR: error: invalid operand for instruction
2628 // CHECK-ERROR: pmull2 v0.q, v1.2d, v2.2d
2631 // Mismatched vector types
2632 pmull2 v0.4s, v1.8h v2.8h
2633 pmull2 v0.2d, v1.4s, v2.4s
2636 // CHECK-ARM64-ERROR: error: unexpected token in argument list
2637 // CHECK-ARM64-ERROR: pmull2 v0.4s, v1.8h v2.8h
2638 // CHECK-ARM64-ERROR: ^
2640 // CHECK-ERROR: error: invalid operand for instruction
2641 // CHECK-ERROR: pmull2 v0.2d, v1.4s, v2.4s
2644 //------------------------------------------------------------------------------
2646 //------------------------------------------------------------------------------
2648 saddw v0.8h, v1.8h, v2.8h
2649 saddw v0.4s, v1.4s, v2.4s
2650 saddw v0.2d, v1.2d, v2.2d
2652 // CHECK-ERROR: error: invalid operand for instruction
2653 // CHECK-ERROR: saddw v0.8h, v1.8h, v2.8h
2655 // CHECK-ERROR: error: invalid operand for instruction
2656 // CHECK-ERROR: saddw v0.4s, v1.4s, v2.4s
2658 // CHECK-ERROR: error: invalid operand for instruction
2659 // CHECK-ERROR: saddw v0.2d, v1.2d, v2.2d
2662 saddw2 v0.8h, v1.8h, v2.16h
2663 saddw2 v0.4s, v1.4s, v2.8s
2664 saddw2 v0.2d, v1.2d, v2.4d
2666 // CHECK-ERROR: error: invalid operand for instruction
2667 // CHECK-ERROR: saddw2 v0.8h, v1.8h, v2.16h
2669 // CHECK-ERROR: error: invalid operand for instruction
2670 // CHECK-ERROR: saddw2 v0.4s, v1.4s, v2.8s
2672 // CHECK-ERROR: error: invalid operand for instruction
2673 // CHECK-ERROR: saddw2 v0.2d, v1.2d, v2.4d
2676 uaddw v0.8h, v1.8h, v2.8h
2677 uaddw v0.4s, v1.4s, v2.4s
2678 uaddw v0.2d, v1.2d, v2.2d
2680 // CHECK-ERROR: error: invalid operand for instruction
2681 // CHECK-ERROR: uaddw v0.8h, v1.8h, v2.8h
2683 // CHECK-ERROR: error: invalid operand for instruction
2684 // CHECK-ERROR: uaddw v0.4s, v1.4s, v2.4s
2686 // CHECK-ERROR: error: invalid operand for instruction
2687 // CHECK-ERROR: uaddw v0.2d, v1.2d, v2.2d
2690 uaddw2 v0.8h, v1.8h, v2.16h
2691 uaddw2 v0.4s, v1.4s, v2.8s
2692 uaddw2 v0.2d, v1.2d, v2.4d
2694 // CHECK-ERROR: error: invalid operand for instruction
2695 // CHECK-ERROR: uaddw2 v0.8h, v1.8h, v2.16h
2697 // CHECK-ERROR: error: invalid operand for instruction
2698 // CHECK-ERROR: uaddw2 v0.4s, v1.4s, v2.8s
2700 // CHECK-ERROR: error: invalid operand for instruction
2701 // CHECK-ERROR: uaddw2 v0.2d, v1.2d, v2.4d
2704 ssubw v0.8h, v1.8h, v2.8h
2705 ssubw v0.4s, v1.4s, v2.4s
2706 ssubw v0.2d, v1.2d, v2.2d
2708 // CHECK-ERROR: error: invalid operand for instruction
2709 // CHECK-ERROR: ssubw v0.8h, v1.8h, v2.8h
2711 // CHECK-ERROR: error: invalid operand for instruction
2712 // CHECK-ERROR: ssubw v0.4s, v1.4s, v2.4s
2714 // CHECK-ERROR: error: invalid operand for instruction
2715 // CHECK-ERROR: ssubw v0.2d, v1.2d, v2.2d
2718 ssubw2 v0.8h, v1.8h, v2.16h
2719 ssubw2 v0.4s, v1.4s, v2.8s
2720 ssubw2 v0.2d, v1.2d, v2.4d
2722 // CHECK-ERROR: error: invalid operand for instruction
2723 // CHECK-ERROR: ssubw2 v0.8h, v1.8h, v2.16h
2725 // CHECK-ERROR: error: invalid operand for instruction
2726 // CHECK-ERROR: ssubw2 v0.4s, v1.4s, v2.8s
2728 // CHECK-ERROR: error: invalid operand for instruction
2729 // CHECK-ERROR: ssubw2 v0.2d, v1.2d, v2.4d
2732 usubw v0.8h, v1.8h, v2.8h
2733 usubw v0.4s, v1.4s, v2.4s
2734 usubw v0.2d, v1.2d, v2.2d
2736 // CHECK-ERROR: error: invalid operand for instruction
2737 // CHECK-ERROR: usubw v0.8h, v1.8h, v2.8h
2739 // CHECK-ERROR: error: invalid operand for instruction
2740 // CHECK-ERROR: usubw v0.4s, v1.4s, v2.4s
2742 // CHECK-ERROR: error: invalid operand for instruction
2743 // CHECK-ERROR: usubw v0.2d, v1.2d, v2.2d
2746 usubw2 v0.8h, v1.8h, v2.16h
2747 usubw2 v0.4s, v1.4s, v2.8s
2748 usubw2 v0.2d, v1.2d, v2.4d
2750 // CHECK-ERROR: error: invalid operand for instruction
2751 // CHECK-ERROR: usubw2 v0.8h, v1.8h, v2.16h
2753 // CHECK-ERROR: error: invalid operand for instruction
2754 // CHECK-ERROR: usubw2 v0.4s, v1.4s, v2.8s
2756 // CHECK-ERROR: error: invalid operand for instruction
2757 // CHECK-ERROR: usubw2 v0.2d, v1.2d, v2.4d
2760 //------------------------------------------------------------------------------
2762 //------------------------------------------------------------------------------
2764 addhn v0.8b, v1.8h, v2.8d
2765 addhn v0.4h, v1.4s, v2.4h
2766 addhn v0.2s, v1.2d, v2.2s
2768 // CHECK-ERROR: error: invalid operand for instruction
2769 // CHECK-ERROR: addhn v0.8b, v1.8h, v2.8d
2771 // CHECK-ERROR: error: invalid operand for instruction
2772 // CHECK-ERROR: addhn v0.4h, v1.4s, v2.4h
2774 // CHECK-ERROR: error: invalid operand for instruction
2775 // CHECK-ERROR: addhn v0.2s, v1.2d, v2.2s
2778 addhn2 v0.16b, v1.8h, v2.8b
2779 addhn2 v0.8h, v1.4s, v2.4h
2780 addhn2 v0.4s, v1.2d, v2.2s
2782 // CHECK-ERROR: error: invalid operand for instruction
2783 // CHECK-ERROR: addhn2 v0.16b, v1.8h, v2.8b
2785 // CHECK-ERROR: error: invalid operand for instruction
2786 // CHECK-ERROR: addhn2 v0.8h, v1.4s, v2.4h
2788 // CHECK-ERROR: error: invalid operand for instruction
2789 // CHECK-ERROR: addhn2 v0.4s, v1.2d, v2.2s
2792 raddhn v0.8b, v1.8h, v2.8b
2793 raddhn v0.4h, v1.4s, v2.4h
2794 raddhn v0.2s, v1.2d, v2.2s
2796 // CHECK-ERROR: error: invalid operand for instruction
2797 // CHECK-ERROR: raddhn v0.8b, v1.8h, v2.8b
2799 // CHECK-ERROR: error: invalid operand for instruction
2800 // CHECK-ERROR: raddhn v0.4h, v1.4s, v2.4h
2802 // CHECK-ERROR: error: invalid operand for instruction
2803 // CHECK-ERROR: raddhn v0.2s, v1.2d, v2.2s
2806 raddhn2 v0.16b, v1.8h, v2.8b
2807 raddhn2 v0.8h, v1.4s, v2.4h
2808 raddhn2 v0.4s, v1.2d, v2.2s
2810 // CHECK-ERROR: error: invalid operand for instruction
2811 // CHECK-ERROR: raddhn2 v0.16b, v1.8h, v2.8b
2813 // CHECK-ERROR: error: invalid operand for instruction
2814 // CHECK-ERROR: raddhn2 v0.8h, v1.4s, v2.4h
2816 // CHECK-ERROR: error: invalid operand for instruction
2817 // CHECK-ERROR: raddhn2 v0.4s, v1.2d, v2.2s
2820 rsubhn v0.8b, v1.8h, v2.8b
2821 rsubhn v0.4h, v1.4s, v2.4h
2822 rsubhn v0.2s, v1.2d, v2.2s
2824 // CHECK-ERROR: error: invalid operand for instruction
2825 // CHECK-ERROR: rsubhn v0.8b, v1.8h, v2.8b
2827 // CHECK-ERROR: error: invalid operand for instruction
2828 // CHECK-ERROR: rsubhn v0.4h, v1.4s, v2.4h
2830 // CHECK-ERROR: error: invalid operand for instruction
2831 // CHECK-ERROR: rsubhn v0.2s, v1.2d, v2.2s
2834 rsubhn2 v0.16b, v1.8h, v2.8b
2835 rsubhn2 v0.8h, v1.4s, v2.4h
2836 rsubhn2 v0.4s, v1.2d, v2.2s
2838 // CHECK-ERROR: error: invalid operand for instruction
2839 // CHECK-ERROR: rsubhn2 v0.16b, v1.8h, v2.8b
2841 // CHECK-ERROR: error: invalid operand for instruction
2842 // CHECK-ERROR: rsubhn2 v0.8h, v1.4s, v2.4h
2844 // CHECK-ERROR: error: invalid operand for instruction
2845 // CHECK-ERROR: rsubhn2 v0.4s, v1.2d, v2.2s
2848 //----------------------------------------------------------------------
2849 // Scalar Reduce Add Pairwise (Integer)
2850 //----------------------------------------------------------------------
2851 // invalid vector types
2855 // CHECK-ERROR: error: invalid operand for instruction
2856 // CHECK-ERROR: addp s0, d1.2d
2858 // CHECK-ERROR: error: invalid operand for instruction
2859 // CHECK-ERROR: addp d0, d1.2s
2862 //----------------------------------------------------------------------
2863 // Scalar Reduce Add Pairwise (Floating Point)
2864 //----------------------------------------------------------------------
2865 // invalid vector types
2869 // CHECK-ERROR: error: invalid operand for instruction
2870 // CHECK-ERROR: faddp s0, d1.2d
2872 // CHECK-ERROR: error: invalid operand for instruction
2873 // CHECK-ERROR: faddp d0, d1.2s
2876 //----------------------------------------------------------------------
2877 // Scalar Reduce Maximum Pairwise (Floating Point)
2878 //----------------------------------------------------------------------
2879 // mismatched and invalid vector types
2884 // CHECK-ERROR: error: invalid operand for instruction
2885 // CHECK-ERROR: fmaxp s0, v1.2d
2887 // CHECK-ERROR: error: invalid operand for instruction
2888 // CHECK-ERROR: fmaxp d31, v2.2s
2890 // CHECK-ERROR: error: invalid operand for instruction
2891 // CHECK-ERROR: fmaxp h3, v2.2s
2895 //----------------------------------------------------------------------
2896 // Scalar Reduce Minimum Pairwise (Floating Point)
2897 //----------------------------------------------------------------------
2898 // mismatched and invalid vector types
2903 // CHECK-ERROR: error: invalid operand for instruction
2904 // CHECK-ERROR: fminp s0, v1.4h
2906 // CHECK-ERROR: error: invalid operand for instruction
2907 // CHECK-ERROR: fminp d31, v2.8h
2909 // CHECK-ERROR: error: invalid operand for instruction
2910 // CHECK-ERROR: fminp b3, v2.2s
2914 //----------------------------------------------------------------------
2915 // Scalar Reduce maxNum Pairwise (Floating Point)
2916 //----------------------------------------------------------------------
2917 // mismatched and invalid vector types
2920 fmaxnmp v1.2s, v2.2s
2922 // CHECK-ERROR: error: invalid operand for instruction
2923 // CHECK-ERROR: fmaxnmp s0, v1.8b
2925 // CHECK-ERROR: error: invalid operand for instruction
2926 // CHECK-ERROR: fmaxnmp d31, v2.16b
2928 // CHECK-ERROR: error: too few operands for instruction
2929 // CHECK-ERROR: fmaxnmp v1.2s, v2.2s
2932 //----------------------------------------------------------------------
2933 // Scalar Reduce minNum Pairwise (Floating Point)
2934 //----------------------------------------------------------------------
2935 // mismatched and invalid vector types
2938 fminnmp v1.4s, v2.2d
2940 // CHECK-ERROR: error: invalid operand for instruction
2941 // CHECK-ERROR: fminnmp s0, v1.2d
2943 // CHECK-ERROR: error: invalid operand for instruction
2944 // CHECK-ERROR: fminnmp d31, v2.4s
2946 // CHECK-ERROR: error: invalid operand for instruction
2947 // CHECK-ERROR: fminnmp v1.4s, v2.2d
2950 mla v0.2d, v1.2d, v16.d[1]
2951 mla v0.2s, v1.2s, v2.s[4]
2952 mla v0.4s, v1.4s, v2.s[4]
2953 mla v0.2h, v1.2h, v2.h[1]
2954 mla v0.4h, v1.4h, v2.h[8]
2955 mla v0.8h, v1.8h, v2.h[8]
2956 mla v0.4h, v1.4h, v16.h[2]
2957 mla v0.8h, v1.8h, v16.h[2]
2959 // CHECK-ERROR: error: invalid operand for instruction
2960 // CHECK-ERROR: mla v0.2d, v1.2d, v16.d[1]
2962 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2963 // CHECK-ERROR: mla v0.2s, v1.2s, v2.s[4]
2965 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2966 // CHECK-ERROR: mla v0.4s, v1.4s, v2.s[4]
2968 // CHECK-ERROR: error: invalid operand for instruction
2969 // CHECK-ERROR: mla v0.2h, v1.2h, v2.h[1]
2971 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2972 // CHECK-ERROR: mla v0.4h, v1.4h, v2.h[8]
2974 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2975 // CHECK-ERROR: mla v0.8h, v1.8h, v2.h[8]
2977 // CHECK-ERROR: error: invalid operand for instruction
2978 // CHECK-ERROR: mla v0.4h, v1.4h, v16.h[2]
2980 // CHECK-ERROR: error: invalid operand for instruction
2981 // CHECK-ERROR: mla v0.8h, v1.8h, v16.h[2]
2984 mls v0.2d, v1.2d, v16.d[1]
2985 mls v0.2s, v1.2s, v2.s[4]
2986 mls v0.4s, v1.4s, v2.s[4]
2987 mls v0.2h, v1.2h, v2.h[1]
2988 mls v0.4h, v1.4h, v2.h[8]
2989 mls v0.8h, v1.8h, v2.h[8]
2990 mls v0.4h, v1.4h, v16.h[2]
2991 mls v0.8h, v1.8h, v16.h[2]
2993 // CHECK-ERROR: error: invalid operand for instruction
2994 // CHECK-ERROR: mls v0.2d, v1.2d, v16.d[1]
2996 // CHECK-ARM64-ERROR: vector lane must be an integer in range
2997 // CHECK-ERROR: mls v0.2s, v1.2s, v2.s[4]
2999 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3000 // CHECK-ERROR: mls v0.4s, v1.4s, v2.s[4]
3002 // CHECK-ERROR: error: invalid operand for instruction
3003 // CHECK-ERROR: mls v0.2h, v1.2h, v2.h[1]
3005 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3006 // CHECK-ERROR: mls v0.4h, v1.4h, v2.h[8]
3008 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3009 // CHECK-ERROR: mls v0.8h, v1.8h, v2.h[8]
3011 // CHECK-ERROR: error: invalid operand for instruction
3012 // CHECK-ERROR: mls v0.4h, v1.4h, v16.h[2]
3014 // CHECK-ERROR: error: invalid operand for instruction
3015 // CHECK-ERROR: mls v0.8h, v1.8h, v16.h[2]
3018 fmla v0.4h, v1.4h, v2.h[2]
3019 fmla v0.8h, v1.8h, v2.h[2]
3020 fmla v0.2s, v1.2s, v2.s[4]
3021 fmla v0.2s, v1.2s, v22.s[4]
3022 fmla v3.4s, v8.4s, v2.s[4]
3023 fmla v3.4s, v8.4s, v22.s[4]
3024 fmla v0.2d, v1.2d, v2.d[2]
3025 fmla v0.2d, v1.2d, v22.d[2]
3027 // CHECK-ERROR: error: invalid operand for instruction
3028 // CHECK-ERROR: fmla v0.4h, v1.4h, v2.h[2]
3030 // CHECK-ERROR: error: invalid operand for instruction
3031 // CHECK-ERROR: fmla v0.8h, v1.8h, v2.h[2]
3033 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3034 // CHECK-ERROR: fmla v0.2s, v1.2s, v2.s[4]
3036 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3037 // CHECK-ERROR: fmla v0.2s, v1.2s, v22.s[4]
3039 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3040 // CHECK-ERROR: fmla v3.4s, v8.4s, v2.s[4]
3042 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3043 // CHECK-ERROR: fmla v3.4s, v8.4s, v22.s[4]
3045 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3046 // CHECK-ERROR: fmla v0.2d, v1.2d, v2.d[2]
3048 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3049 // CHECK-ERROR: fmla v0.2d, v1.2d, v22.d[2]
3052 fmls v0.4h, v1.4h, v2.h[2]
3053 fmls v0.8h, v1.8h, v2.h[2]
3054 fmls v0.2s, v1.2s, v2.s[4]
3055 fmls v0.2s, v1.2s, v22.s[4]
3056 fmls v3.4s, v8.4s, v2.s[4]
3057 fmls v3.4s, v8.4s, v22.s[4]
3058 fmls v0.2d, v1.2d, v2.d[2]
3059 fmls v0.2d, v1.2d, v22.d[2]
3061 // CHECK-ERROR: error: invalid operand for instruction
3062 // CHECK-ERROR: fmls v0.4h, v1.4h, v2.h[2]
3064 // CHECK-ERROR: error: invalid operand for instruction
3065 // CHECK-ERROR: fmls v0.8h, v1.8h, v2.h[2]
3067 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3068 // CHECK-ERROR: fmls v0.2s, v1.2s, v2.s[4]
3070 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3071 // CHECK-ERROR: fmls v0.2s, v1.2s, v22.s[4]
3073 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3074 // CHECK-ERROR: fmls v3.4s, v8.4s, v2.s[4]
3076 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3077 // CHECK-ERROR: fmls v3.4s, v8.4s, v22.s[4]
3079 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3080 // CHECK-ERROR: fmls v0.2d, v1.2d, v2.d[2]
3082 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3083 // CHECK-ERROR: fmls v0.2d, v1.2d, v22.d[2]
3086 smlal v0.4h, v1.4h, v2.h[2]
3087 smlal v0.4s, v1.4h, v2.h[8]
3088 smlal v0.4s, v1.4h, v16.h[2]
3089 smlal v0.2s, v1.2s, v2.s[1]
3090 smlal v0.2d, v1.2s, v2.s[4]
3091 smlal v0.2d, v1.2s, v22.s[4]
3092 smlal2 v0.4h, v1.8h, v1.h[2]
3093 smlal2 v0.4s, v1.8h, v1.h[8]
3094 smlal2 v0.4s, v1.8h, v16.h[2]
3095 smlal2 v0.2s, v1.4s, v1.s[2]
3096 smlal2 v0.2d, v1.4s, v1.s[4]
3097 smlal2 v0.2d, v1.4s, v22.s[4]
3099 // CHECK-ERROR: error: invalid operand for instruction
3100 // CHECK-ERROR: smlal v0.4h, v1.4h, v2.h[2]
3102 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3103 // CHECK-ERROR: smlal v0.4s, v1.4h, v2.h[8]
3105 // CHECK-ERROR: error: invalid operand for instruction
3106 // CHECK-ERROR: smlal v0.4s, v1.4h, v16.h[2]
3108 // CHECK-ERROR: error: invalid operand for instruction
3109 // CHECK-ERROR: smlal v0.2s, v1.2s, v2.s[1]
3111 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3112 // CHECK-ERROR: smlal v0.2d, v1.2s, v2.s[4]
3114 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3115 // CHECK-ERROR: smlal v0.2d, v1.2s, v22.s[4]
3117 // CHECK-ERROR: error: invalid operand for instruction
3118 // CHECK-ERROR: smlal2 v0.4h, v1.8h, v1.h[2]
3120 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3121 // CHECK-ERROR: smlal2 v0.4s, v1.8h, v1.h[8]
3123 // CHECK-ERROR: error: invalid operand for instruction
3124 // CHECK-ERROR: smlal2 v0.4s, v1.8h, v16.h[2]
3126 // CHECK-ERROR: error: invalid operand for instruction
3127 // CHECK-ERROR: smlal2 v0.2s, v1.4s, v1.s[2]
3129 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3130 // CHECK-ERROR: smlal2 v0.2d, v1.4s, v1.s[4]
3132 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3133 // CHECK-ERROR: smlal2 v0.2d, v1.4s, v22.s[4]
3136 smlsl v0.4h, v1.4h, v2.h[2]
3137 smlsl v0.4s, v1.4h, v2.h[8]
3138 smlsl v0.4s, v1.4h, v16.h[2]
3139 smlsl v0.2s, v1.2s, v2.s[1]
3140 smlsl v0.2d, v1.2s, v2.s[4]
3141 smlsl v0.2d, v1.2s, v22.s[4]
3142 smlsl2 v0.4h, v1.8h, v1.h[2]
3143 smlsl2 v0.4s, v1.8h, v1.h[8]
3144 smlsl2 v0.4s, v1.8h, v16.h[2]
3145 smlsl2 v0.2s, v1.4s, v1.s[2]
3146 smlsl2 v0.2d, v1.4s, v1.s[4]
3147 smlsl2 v0.2d, v1.4s, v22.s[4]
3149 // CHECK-ERROR: error: invalid operand for instruction
3150 // CHECK-ERROR: smlsl v0.4h, v1.4h, v2.h[2]
3152 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3153 // CHECK-ERROR: smlsl v0.4s, v1.4h, v2.h[8]
3155 // CHECK-ERROR: error: invalid operand for instruction
3156 // CHECK-ERROR: smlsl v0.4s, v1.4h, v16.h[2]
3158 // CHECK-ERROR: error: invalid operand for instruction
3159 // CHECK-ERROR: smlsl v0.2s, v1.2s, v2.s[1]
3161 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3162 // CHECK-ERROR: smlsl v0.2d, v1.2s, v2.s[4]
3164 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3165 // CHECK-ERROR: smlsl v0.2d, v1.2s, v22.s[4]
3167 // CHECK-ERROR: error: invalid operand for instruction
3168 // CHECK-ERROR: smlsl2 v0.4h, v1.8h, v1.h[2]
3170 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3171 // CHECK-ERROR: smlsl2 v0.4s, v1.8h, v1.h[8]
3173 // CHECK-ERROR: error: invalid operand for instruction
3174 // CHECK-ERROR: smlsl2 v0.4s, v1.8h, v16.h[2]
3176 // CHECK-ERROR: error: invalid operand for instruction
3177 // CHECK-ERROR: smlsl2 v0.2s, v1.4s, v1.s[2]
3179 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3180 // CHECK-ERROR: smlsl2 v0.2d, v1.4s, v1.s[4]
3182 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3183 // CHECK-ERROR: smlsl2 v0.2d, v1.4s, v22.s[4]
3186 umlal v0.4h, v1.4h, v2.h[2]
3187 umlal v0.4s, v1.4h, v2.h[8]
3188 umlal v0.4s, v1.4h, v16.h[2]
3189 umlal v0.2s, v1.2s, v2.s[1]
3190 umlal v0.2d, v1.2s, v2.s[4]
3191 umlal v0.2d, v1.2s, v22.s[4]
3192 umlal2 v0.4h, v1.8h, v1.h[2]
3193 umlal2 v0.4s, v1.8h, v1.h[8]
3194 umlal2 v0.4s, v1.8h, v16.h[2]
3195 umlal2 v0.2s, v1.4s, v1.s[2]
3196 umlal2 v0.2d, v1.4s, v1.s[4]
3197 umlal2 v0.2d, v1.4s, v22.s[4]
3199 // CHECK-ERROR: error: invalid operand for instruction
3200 // CHECK-ERROR: umlal v0.4h, v1.4h, v2.h[2]
3202 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3203 // CHECK-ERROR: umlal v0.4s, v1.4h, v2.h[8]
3205 // CHECK-ERROR: error: invalid operand for instruction
3206 // CHECK-ERROR: umlal v0.4s, v1.4h, v16.h[2]
3208 // CHECK-ERROR: error: invalid operand for instruction
3209 // CHECK-ERROR: umlal v0.2s, v1.2s, v2.s[1]
3211 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3212 // CHECK-ERROR: umlal v0.2d, v1.2s, v2.s[4]
3214 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3215 // CHECK-ERROR: umlal v0.2d, v1.2s, v22.s[4]
3217 // CHECK-ERROR: error: invalid operand for instruction
3218 // CHECK-ERROR: umlal2 v0.4h, v1.8h, v1.h[2]
3220 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3221 // CHECK-ERROR: umlal2 v0.4s, v1.8h, v1.h[8]
3223 // CHECK-ERROR: error: invalid operand for instruction
3224 // CHECK-ERROR: umlal2 v0.4s, v1.8h, v16.h[2]
3226 // CHECK-ERROR: error: invalid operand for instruction
3227 // CHECK-ERROR: umlal2 v0.2s, v1.4s, v1.s[2]
3229 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3230 // CHECK-ERROR: umlal2 v0.2d, v1.4s, v1.s[4]
3232 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3233 // CHECK-ERROR: umlal2 v0.2d, v1.4s, v22.s[4]
3236 umlsl v0.4h, v1.4h, v2.h[2]
3237 umlsl v0.4s, v1.4h, v2.h[8]
3238 umlsl v0.4s, v1.4h, v16.h[2]
3239 umlsl v0.2s, v1.2s, v2.s[3]
3240 umlsl v0.2d, v1.2s, v2.s[4]
3241 umlsl v0.2d, v1.2s, v22.s[4]
3242 umlsl2 v0.4h, v1.8h, v1.h[2]
3243 umlsl2 v0.4s, v1.8h, v1.h[8]
3244 umlsl2 v0.4s, v1.8h, v16.h[2]
3245 umlsl2 v0.2s, v1.4s, v1.s[2]
3246 umlsl2 v0.2d, v1.4s, v1.s[4]
3247 umlsl2 v0.2d, v1.4s, v22.s[4]
3249 // CHECK-ERROR: error: invalid operand for instruction
3250 // CHECK-ERROR: umlsl v0.4h, v1.4h, v2.h[2]
3252 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3253 // CHECK-ERROR: umlsl v0.4s, v1.4h, v2.h[8]
3255 // CHECK-ERROR: error: invalid operand for instruction
3256 // CHECK-ERROR: umlsl v0.4s, v1.4h, v16.h[2]
3258 // CHECK-ERROR: error: invalid operand for instruction
3259 // CHECK-ERROR: umlsl v0.2s, v1.2s, v2.s[3]
3261 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3262 // CHECK-ERROR: umlsl v0.2d, v1.2s, v2.s[4]
3264 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3265 // CHECK-ERROR: umlsl v0.2d, v1.2s, v22.s[4]
3267 // CHECK-ERROR: error: invalid operand for instruction
3268 // CHECK-ERROR: umlsl2 v0.4h, v1.8h, v1.h[2]
3270 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3271 // CHECK-ERROR: umlsl2 v0.4s, v1.8h, v1.h[8]
3273 // CHECK-ERROR: error: invalid operand for instruction
3274 // CHECK-ERROR: umlsl2 v0.4s, v1.8h, v16.h[2]
3276 // CHECK-ERROR: error: invalid operand for instruction
3277 // CHECK-ERROR: umlsl2 v0.2s, v1.4s, v1.s[2]
3279 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3280 // CHECK-ERROR: umlsl2 v0.2d, v1.4s, v1.s[4]
3282 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3283 // CHECK-ERROR: umlsl2 v0.2d, v1.4s, v22.s[4]
3286 sqdmlal v0.4h, v1.4h, v2.h[2]
3287 sqdmlal v0.4s, v1.4h, v2.h[8]
3288 sqdmlal v0.4s, v1.4h, v16.h[2]
3289 sqdmlal v0.2s, v1.2s, v2.s[3]
3290 sqdmlal v0.2d, v1.2s, v2.s[4]
3291 sqdmlal v0.2d, v1.2s, v22.s[4]
3292 sqdmlal2 v0.4h, v1.8h, v1.h[2]
3293 sqdmlal2 v0.4s, v1.8h, v1.h[8]
3294 sqdmlal2 v0.4s, v1.8h, v16.h[2]
3295 sqdmlal2 v0.2s, v1.4s, v1.s[2]
3296 sqdmlal2 v0.2d, v1.4s, v1.s[4]
3297 sqdmlal2 v0.2d, v1.4s, v22.s[4]
3299 // CHECK-ERROR: error: invalid operand for instruction
3300 // CHECK-ERROR: sqdmlal v0.4h, v1.4h, v2.h[2]
3302 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3303 // CHECK-ERROR: sqdmlal v0.4s, v1.4h, v2.h[8]
3305 // CHECK-ERROR: error: invalid operand for instruction
3306 // CHECK-ERROR: sqdmlal v0.4s, v1.4h, v16.h[2]
3308 // CHECK-ERROR: error: invalid operand for instruction
3309 // CHECK-ERROR: sqdmlal v0.2s, v1.2s, v2.s[3]
3311 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3312 // CHECK-ERROR: sqdmlal v0.2d, v1.2s, v2.s[4]
3314 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3315 // CHECK-ERROR: sqdmlal v0.2d, v1.2s, v22.s[4]
3317 // CHECK-ERROR: error: invalid operand for instruction
3318 // CHECK-ERROR: sqdmlal2 v0.4h, v1.8h, v1.h[2]
3320 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3321 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v1.h[8]
3323 // CHECK-ERROR: error: invalid operand for instruction
3324 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v16.h[2]
3326 // CHECK-ERROR: error: invalid operand for instruction
3327 // CHECK-ERROR: sqdmlal2 v0.2s, v1.4s, v1.s[2]
3329 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3330 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v1.s[4]
3332 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3333 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v22.s[4]
3336 sqdmlsl v0.4h, v1.4h, v2.h[2]
3337 sqdmlsl v0.4s, v1.4h, v2.h[8]
3338 sqdmlsl v0.4s, v1.4h, v16.h[2]
3339 sqdmlsl v0.2s, v1.2s, v2.s[3]
3340 sqdmlsl v0.2d, v1.2s, v2.s[4]
3341 sqdmlsl v0.2d, v1.2s, v22.s[4]
3342 sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3343 sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3344 sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3345 sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3346 sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3347 sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3349 // CHECK-ERROR: error: invalid operand for instruction
3350 // CHECK-ERROR: sqdmlsl v0.4h, v1.4h, v2.h[2]
3352 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3353 // CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v2.h[8]
3355 // CHECK-ERROR: error: invalid operand for instruction
3356 // CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v16.h[2]
3358 // CHECK-ERROR: error: invalid operand for instruction
3359 // CHECK-ERROR: sqdmlsl v0.2s, v1.2s, v2.s[3]
3361 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3362 // CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v2.s[4]
3364 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3365 // CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v22.s[4]
3367 // CHECK-ERROR: error: invalid operand for instruction
3368 // CHECK-ERROR: sqdmlsl2 v0.4h, v1.8h, v1.h[2]
3370 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3371 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v1.h[8]
3373 // CHECK-ERROR: error: invalid operand for instruction
3374 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v16.h[2]
3376 // CHECK-ERROR: error: invalid operand for instruction
3377 // CHECK-ERROR: sqdmlsl2 v0.2s, v1.4s, v1.s[2]
3379 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3380 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v1.s[4]
3382 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3383 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v22.s[4]
3386 mul v0.4h, v1.4h, v2.h[8]
3387 mul v0.4h, v1.4h, v16.h[8]
3388 mul v0.8h, v1.8h, v2.h[8]
3389 mul v0.8h, v1.8h, v16.h[8]
3390 mul v0.2s, v1.2s, v2.s[4]
3391 mul v0.2s, v1.2s, v22.s[4]
3392 mul v0.4s, v1.4s, v2.s[4]
3393 mul v0.4s, v1.4s, v22.s[4]
3394 mul v0.2d, v1.2d, v2.d[1]
3396 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3397 // CHECK-ERROR: mul v0.4h, v1.4h, v2.h[8]
3399 // CHECK-ARM64-ERROR: error: invalid operand for instruction
3400 // CHECK-ERROR: mul v0.4h, v1.4h, v16.h[8]
3402 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3403 // CHECK-ERROR: mul v0.8h, v1.8h, v2.h[8]
3405 // CHECK-ARM64-ERROR: invalid operand for instruction
3406 // CHECK-ERROR: mul v0.8h, v1.8h, v16.h[8]
3408 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3409 // CHECK-ERROR: mul v0.2s, v1.2s, v2.s[4]
3411 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3412 // CHECK-ERROR: mul v0.2s, v1.2s, v22.s[4]
3414 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3415 // CHECK-ERROR: mul v0.4s, v1.4s, v2.s[4]
3417 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3418 // CHECK-ERROR: mul v0.4s, v1.4s, v22.s[4]
3421 fmul v0.4h, v1.4h, v2.h[4]
3422 fmul v0.2s, v1.2s, v2.s[4]
3423 fmul v0.2s, v1.2s, v22.s[4]
3424 fmul v0.4s, v1.4s, v2.s[4]
3425 fmul v0.4s, v1.4s, v22.s[4]
3426 fmul v0.2d, v1.2d, v2.d[2]
3427 fmul v0.2d, v1.2d, v22.d[2]
3429 // CHECK-ERROR: error: invalid operand for instruction
3430 // CHECK-ERROR: mul v0.2d, v1.2d, v2.d[1]
3432 // CHECK-ERROR: error: invalid operand for instruction
3433 // CHECK-ERROR: fmul v0.4h, v1.4h, v2.h[4]
3435 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3436 // CHECK-ERROR: fmul v0.2s, v1.2s, v2.s[4]
3438 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3439 // CHECK-ERROR: fmul v0.2s, v1.2s, v22.s[4]
3441 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3442 // CHECK-ERROR: fmul v0.4s, v1.4s, v2.s[4]
3444 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3445 // CHECK-ERROR: fmul v0.4s, v1.4s, v22.s[4]
3447 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3448 // CHECK-ERROR: fmul v0.2d, v1.2d, v2.d[2]
3450 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3451 // CHECK-ERROR: fmul v0.2d, v1.2d, v22.d[2]
3454 fmulx v0.4h, v1.4h, v2.h[4]
3455 fmulx v0.2s, v1.2s, v2.s[4]
3456 fmulx v0.2s, v1.2s, v22.s[4]
3457 fmulx v0.4s, v1.4s, v2.s[4]
3458 fmulx v0.4s, v1.4s, v22.s[4]
3459 fmulx v0.2d, v1.2d, v2.d[2]
3460 fmulx v0.2d, v1.2d, v22.d[2]
3462 // CHECK-ERROR: error: invalid operand for instruction
3463 // CHECK-ERROR: fmulx v0.4h, v1.4h, v2.h[4]
3465 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3466 // CHECK-ERROR: fmulx v0.2s, v1.2s, v2.s[4]
3468 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3469 // CHECK-ERROR: fmulx v0.2s, v1.2s, v22.s[4]
3471 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3472 // CHECK-ERROR: fmulx v0.4s, v1.4s, v2.s[4]
3474 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3475 // CHECK-ERROR: fmulx v0.4s, v1.4s, v22.s[4]
3477 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3478 // CHECK-ERROR: fmulx v0.2d, v1.2d, v2.d[2]
3480 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3481 // CHECK-ERROR: fmulx v0.2d, v1.2d, v22.d[2]
3484 smull v0.4h, v1.4h, v2.h[2]
3485 smull v0.4s, v1.4h, v2.h[8]
3486 smull v0.4s, v1.4h, v16.h[4]
3487 smull v0.2s, v1.2s, v2.s[2]
3488 smull v0.2d, v1.2s, v2.s[4]
3489 smull v0.2d, v1.2s, v22.s[4]
3490 smull2 v0.4h, v1.8h, v2.h[2]
3491 smull2 v0.4s, v1.8h, v2.h[8]
3492 smull2 v0.4s, v1.8h, v16.h[4]
3493 smull2 v0.2s, v1.4s, v2.s[2]
3494 smull2 v0.2d, v1.4s, v2.s[4]
3495 smull2 v0.2d, v1.4s, v22.s[4]
3497 // CHECK-ERROR: error: invalid operand for instruction
3498 // CHECK-ERROR: smull v0.4h, v1.4h, v2.h[2]
3500 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3501 // CHECK-ERROR: smull v0.4s, v1.4h, v2.h[8]
3503 // CHECK-ERROR: error: invalid operand for instruction
3504 // CHECK-ERROR: smull v0.4s, v1.4h, v16.h[4]
3506 // CHECK-ERROR: error: invalid operand for instruction
3507 // CHECK-ERROR: smull v0.2s, v1.2s, v2.s[2]
3509 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3510 // CHECK-ERROR: smull v0.2d, v1.2s, v2.s[4]
3512 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3513 // CHECK-ERROR: smull v0.2d, v1.2s, v22.s[4]
3515 // CHECK-ERROR: error: invalid operand for instruction
3516 // CHECK-ERROR: smull2 v0.4h, v1.8h, v2.h[2]
3518 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3519 // CHECK-ERROR: smull2 v0.4s, v1.8h, v2.h[8]
3521 // CHECK-ERROR: error: invalid operand for instruction
3522 // CHECK-ERROR: smull2 v0.4s, v1.8h, v16.h[4]
3524 // CHECK-ERROR: error: invalid operand for instruction
3525 // CHECK-ERROR: smull2 v0.2s, v1.4s, v2.s[2]
3527 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3528 // CHECK-ERROR: smull2 v0.2d, v1.4s, v2.s[4]
3530 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3531 // CHECK-ERROR: smull2 v0.2d, v1.4s, v22.s[4]
3534 umull v0.4h, v1.4h, v2.h[2]
3535 umull v0.4s, v1.4h, v2.h[8]
3536 umull v0.4s, v1.4h, v16.h[4]
3537 umull v0.2s, v1.2s, v2.s[2]
3538 umull v0.2d, v1.2s, v2.s[4]
3539 umull v0.2d, v1.2s, v22.s[4]
3540 umull2 v0.4h, v1.8h, v2.h[2]
3541 umull2 v0.4s, v1.8h, v2.h[8]
3542 umull2 v0.4s, v1.8h, v16.h[4]
3543 umull2 v0.2s, v1.4s, v2.s[2]
3544 umull2 v0.2d, v1.4s, v2.s[4]
3545 umull2 v0.2d, v1.4s, v22.s[4]
3547 // CHECK-ERROR: error: invalid operand for instruction
3548 // CHECK-ERROR: umull v0.4h, v1.4h, v2.h[2]
3550 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3551 // CHECK-ERROR: umull v0.4s, v1.4h, v2.h[8]
3553 // CHECK-ERROR: error: invalid operand for instruction
3554 // CHECK-ERROR: umull v0.4s, v1.4h, v16.h[4]
3556 // CHECK-ERROR: error: invalid operand for instruction
3557 // CHECK-ERROR: umull v0.2s, v1.2s, v2.s[2]
3559 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3560 // CHECK-ERROR: umull v0.2d, v1.2s, v2.s[4]
3562 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3563 // CHECK-ERROR: umull v0.2d, v1.2s, v22.s[4]
3565 // CHECK-ERROR: error: invalid operand for instruction
3566 // CHECK-ERROR: umull2 v0.4h, v1.8h, v2.h[2]
3568 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3569 // CHECK-ERROR: umull2 v0.4s, v1.8h, v2.h[8]
3571 // CHECK-ERROR: error: invalid operand for instruction
3572 // CHECK-ERROR: umull2 v0.4s, v1.8h, v16.h[4]
3574 // CHECK-ERROR: error: invalid operand for instruction
3575 // CHECK-ERROR: umull2 v0.2s, v1.4s, v2.s[2]
3577 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3578 // CHECK-ERROR: umull2 v0.2d, v1.4s, v2.s[4]
3580 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3581 // CHECK-ERROR: umull2 v0.2d, v1.4s, v22.s[4]
3584 sqdmull v0.4h, v1.4h, v2.h[2]
3585 sqdmull v0.4s, v1.4h, v2.h[8]
3586 sqdmull v0.4s, v1.4h, v16.h[4]
3587 sqdmull v0.2s, v1.2s, v2.s[2]
3588 sqdmull v0.2d, v1.2s, v2.s[4]
3589 sqdmull v0.2d, v1.2s, v22.s[4]
3590 sqdmull2 v0.4h, v1.8h, v2.h[2]
3591 sqdmull2 v0.4s, v1.8h, v2.h[8]
3592 sqdmull2 v0.4s, v1.8h, v16.h[4]
3593 sqdmull2 v0.2s, v1.4s, v2.s[2]
3594 sqdmull2 v0.2d, v1.4s, v2.s[4]
3595 sqdmull2 v0.2d, v1.4s, v22.s[4]
3597 // CHECK-ERROR: error: invalid operand for instruction
3598 // CHECK-ERROR: sqdmull v0.4h, v1.4h, v2.h[2]
3600 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3601 // CHECK-ERROR: sqdmull v0.4s, v1.4h, v2.h[8]
3603 // CHECK-ERROR: error: invalid operand for instruction
3604 // CHECK-ERROR: sqdmull v0.4s, v1.4h, v16.h[4]
3606 // CHECK-ERROR: error: invalid operand for instruction
3607 // CHECK-ERROR: sqdmull v0.2s, v1.2s, v2.s[2]
3609 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3610 // CHECK-ERROR: sqdmull v0.2d, v1.2s, v2.s[4]
3612 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3613 // CHECK-ERROR: sqdmull v0.2d, v1.2s, v22.s[4]
3615 // CHECK-ERROR: error: invalid operand for instruction
3616 // CHECK-ERROR: sqdmull2 v0.4h, v1.8h, v2.h[2]
3618 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3619 // CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v2.h[8]
3621 // CHECK-ERROR: error: invalid operand for instruction
3622 // CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v16.h[4]
3624 // CHECK-ERROR: error: invalid operand for instruction
3625 // CHECK-ERROR: sqdmull2 v0.2s, v1.4s, v2.s[2]
3627 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3628 // CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v2.s[4]
3630 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3631 // CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v22.s[4]
3634 sqdmulh v0.4h, v1.4h, v2.h[8]
3635 sqdmulh v0.4h, v1.4h, v16.h[2]
3636 sqdmulh v0.8h, v1.8h, v2.h[8]
3637 sqdmulh v0.8h, v1.8h, v16.h[2]
3638 sqdmulh v0.2s, v1.2s, v2.s[4]
3639 sqdmulh v0.2s, v1.2s, v22.s[4]
3640 sqdmulh v0.4s, v1.4s, v2.s[4]
3641 sqdmulh v0.4s, v1.4s, v22.s[4]
3642 sqdmulh v0.2d, v1.2d, v22.d[1]
3644 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3645 // CHECK-ERROR: sqdmulh v0.4h, v1.4h, v2.h[8]
3647 // CHECK-ERROR: error: invalid operand for instruction
3648 // CHECK-ERROR: sqdmulh v0.4h, v1.4h, v16.h[2]
3650 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3651 // CHECK-ERROR: sqdmulh v0.8h, v1.8h, v2.h[8]
3653 // CHECK-ERROR: error: invalid operand for instruction
3654 // CHECK-ERROR: sqdmulh v0.8h, v1.8h, v16.h[2]
3656 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3657 // CHECK-ERROR: sqdmulh v0.2s, v1.2s, v2.s[4]
3659 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3660 // CHECK-ERROR: sqdmulh v0.2s, v1.2s, v22.s[4]
3662 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3663 // CHECK-ERROR: sqdmulh v0.4s, v1.4s, v2.s[4]
3665 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3666 // CHECK-ERROR: sqdmulh v0.4s, v1.4s, v22.s[4]
3668 // CHECK-ERROR: error: invalid operand for instruction
3669 // CHECK-ERROR: sqdmulh v0.2d, v1.2d, v22.d[1]
3672 sqrdmulh v0.4h, v1.4h, v2.h[8]
3673 sqrdmulh v0.4h, v1.4h, v16.h[2]
3674 sqrdmulh v0.8h, v1.8h, v2.h[8]
3675 sqrdmulh v0.8h, v1.8h, v16.h[2]
3676 sqrdmulh v0.2s, v1.2s, v2.s[4]
3677 sqrdmulh v0.2s, v1.2s, v22.s[4]
3678 sqrdmulh v0.4s, v1.4s, v2.s[4]
3679 sqrdmulh v0.4s, v1.4s, v22.s[4]
3680 sqrdmulh v0.2d, v1.2d, v22.d[1]
3682 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3683 // CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v2.h[8]
3685 // CHECK-ERROR: error: invalid operand for instruction
3686 // CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v16.h[2]
3688 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3689 // CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v2.h[8]
3691 // CHECK-ERROR: error: invalid operand for instruction
3692 // CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v16.h[2]
3694 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3695 // CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v2.s[4]
3697 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3698 // CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v22.s[4]
3700 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3701 // CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v2.s[4]
3703 // CHECK-ARM64-ERROR: vector lane must be an integer in range
3704 // CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v22.s[4]
3706 // CHECK-ERROR: error: invalid operand for instruction
3707 // CHECK-ERROR: sqrdmulh v0.2d, v1.2d, v22.d[1]
3710 //----------------------------------------------------------------------
3712 //----------------------------------------------------------------------
3722 // CHECK-ERROR: error: invalid operand for instruction
3723 // CHECK-ERROR: saddlv b0, v1.8b
3725 // CHECK-ERROR: error: invalid operand for instruction
3726 // CHECK-ERROR: saddlv b0, v1.16b
3728 // CHECK-ERROR: error: invalid operand for instruction
3729 // CHECK-ERROR: saddlv h0, v1.4h
3731 // CHECK-ERROR: error: invalid operand for instruction
3732 // CHECK-ERROR: saddlv h0, v1.8h
3734 // CHECK-ERROR: error: invalid operand for instruction
3735 // CHECK-ERROR: saddlv s0, v1.2s
3737 // CHECK-ERROR: error: invalid operand for instruction
3738 // CHECK-ERROR: saddlv s0, v1.4s
3740 // CHECK-ERROR: error: invalid operand for instruction
3741 // CHECK-ERROR: saddlv d0, v1.2s
3752 // CHECK-ERROR: error: invalid operand for instruction
3753 // CHECK-ERROR: uaddlv b0, v1.8b
3755 // CHECK-ERROR: error: invalid operand for instruction
3756 // CHECK-ERROR: uaddlv b0, v1.16b
3758 // CHECK-ERROR: error: invalid operand for instruction
3759 // CHECK-ERROR: uaddlv h0, v1.4h
3761 // CHECK-ERROR: error: invalid operand for instruction
3762 // CHECK-ERROR: uaddlv h0, v1.8h
3764 // CHECK-ERROR: error: invalid operand for instruction
3765 // CHECK-ERROR: uaddlv s0, v1.2s
3767 // CHECK-ERROR: error: invalid operand for instruction
3768 // CHECK-ERROR: uaddlv s0, v1.4s
3770 // CHECK-ERROR: error: invalid operand for instruction
3771 // CHECK-ERROR: uaddlv d0, v1.2s
3780 // CHECK-ERROR: error: invalid operand for instruction
3781 // CHECK-ERROR: smaxv s0, v1.2s
3783 // CHECK-ERROR: error: invalid operand for instruction
3784 // CHECK-ERROR: sminv s0, v1.2s
3786 // CHECK-ERROR: error: invalid operand for instruction
3787 // CHECK-ERROR: umaxv s0, v1.2s
3789 // CHECK-ERROR: error: invalid operand for instruction
3790 // CHECK-ERROR: uminv s0, v1.2s
3792 // CHECK-ERROR: error: invalid operand for instruction
3793 // CHECK-ERROR: addv s0, v1.2s
3802 // CHECK-ERROR: error: invalid operand for instruction
3803 // CHECK-ERROR: smaxv d0, v1.2d
3805 // CHECK-ERROR: error: invalid operand for instruction
3806 // CHECK-ERROR: sminv d0, v1.2d
3808 // CHECK-ERROR: error: invalid operand for instruction
3809 // CHECK-ERROR: umaxv d0, v1.2d
3811 // CHECK-ERROR: error: invalid operand for instruction
3812 // CHECK-ERROR: uminv d0, v1.2d
3814 // CHECK-ERROR: error: invalid operand for instruction
3815 // CHECK-ERROR: addv d0, v1.2d
3823 // CHECK-ERROR: error: invalid operand for instruction
3824 // CHECK-ERROR: fmaxnmv b0, v1.16b
3826 // CHECK-ERROR: error: invalid operand for instruction
3827 // CHECK-ERROR: fminnmv b0, v1.16b
3829 // CHECK-ERROR: error: invalid operand for instruction
3830 // CHECK-ERROR: fmaxv b0, v1.16b
3832 // CHECK-ERROR: error: invalid operand for instruction
3833 // CHECK-ERROR: fminv b0, v1.16b
3841 // CHECK-ERROR: error: invalid operand for instruction
3842 // CHECK-ERROR: fmaxnmv h0, v1.8h
3844 // CHECK-ERROR: error: invalid operand for instruction
3845 // CHECK-ERROR: fminnmv h0, v1.8h
3847 // CHECK-ERROR: error: invalid operand for instruction
3848 // CHECK-ERROR: fmaxv h0, v1.8h
3850 // CHECK-ERROR: error: invalid operand for instruction
3851 // CHECK-ERROR: fminv h0, v1.8h
3859 // CHECK-ERROR: error: invalid operand for instruction
3860 // CHECK-ERROR: fmaxnmv d0, v1.2d
3862 // CHECK-ERROR: error: invalid operand for instruction
3863 // CHECK-ERROR: fminnmv d0, v1.2d
3865 // CHECK-ERROR: error: invalid operand for instruction
3866 // CHECK-ERROR: fmaxv d0, v1.2d
3868 // CHECK-ERROR: error: invalid operand for instruction
3869 // CHECK-ERROR: fminv d0, v1.2d
3872 //----------------------------------------------------------------------
3873 // Floating-point Multiply Extended
3874 //----------------------------------------------------------------------
3879 // CHECK-ERROR: error: invalid operand for instruction
3880 // CHECK-ERROR: fmulx s20, h22, s15
3882 // CHECK-ERROR: error: invalid operand for instruction
3883 // CHECK-ERROR: fmulx d23, d11, s1
3886 //----------------------------------------------------------------------
3887 // Floating-point Reciprocal Step
3888 //----------------------------------------------------------------------
3890 frecps s21, s16, h13
3891 frecps d22, s30, d21
3893 // CHECK-ERROR: error: invalid operand for instruction
3894 // CHECK-ERROR: frecps s21, s16, h13
3896 // CHECK-ERROR: error: invalid operand for instruction
3897 // CHECK-ERROR: frecps d22, s30, d21
3900 //----------------------------------------------------------------------
3901 // Floating-point Reciprocal Square Root Step
3902 //----------------------------------------------------------------------
3904 frsqrts s21, h5, s12
3905 frsqrts d8, s22, d18
3907 // CHECK-ERROR: error: invalid operand for instruction
3908 // CHECK-ERROR: frsqrts s21, h5, s12
3910 // CHECK-ERROR: error: invalid operand for instruction
3911 // CHECK-ERROR: frsqrts d8, s22, d18
3914 //----------------------------------------------------------------------
3915 // Vector load/store multiple N-element structure (class SIMD lselem)
3916 //----------------------------------------------------------------------
3921 // CHECK-ARM64-ERROR: error: vector register expected
3922 // CHECK-ERROR: ld1 {x3}, [x2]
3924 // CHECK-ARM64-ERROR: error: invalid operand for instruction
3925 // CHECK-ERROR: ld1 {v4}, [x0]
3927 // CHECK-ARM64-ERROR: error: vector register expected
3928 // CHECK-ERROR: ld1 {v32.16b}, [x0]
3930 // CHECK-ERROR: error: invalid operand for instruction
3931 // CHECK-ERROR: ld1 {v15.8h}, [x32]
3934 ld1 {v0.16b, v2.16b}, [x0]
3935 ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3936 ld1 v0.8b, v1.8b}, [x0]
3937 ld1 {v0.8h-v4.8h}, [x0]
3938 ld1 {v1.8h-v1.8h}, [x0]
3939 ld1 {v15.8h-v17.4h}, [x15]
3940 ld1 {v0.8b-v2.8b, [x0]
3941 // CHECK-ARM64-ERROR: error: registers must be sequential
3942 // CHECK-ERROR: ld1 {v0.16b, v2.16b}, [x0]
3944 // CHECK-ERROR: error: invalid number of vectors
3945 // CHECK-ERROR: ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
3947 // CHECK-ARM64-ERROR: error: unexpected token in argument list
3948 // CHECK-ERROR: ld1 v0.8b, v1.8b}, [x0]
3950 // CHECK-ERROR: error: invalid number of vectors
3951 // CHECK-ERROR: ld1 {v0.8h-v4.8h}, [x0]
3953 // CHECK-ERROR: error: invalid number of vectors
3954 // CHECK-ERROR: ld1 {v1.8h-v1.8h}, [x0]
3956 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3957 // CHECK-ERROR: ld1 {v15.8h-v17.4h}, [x15]
3959 // CHECK-ERROR: error: '}' expected
3960 // CHECK-ERROR: ld1 {v0.8b-v2.8b, [x0]
3963 ld2 {v15.8h, v16.4h}, [x15]
3964 ld2 {v0.8b, v2.8b}, [x0]
3965 ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3966 ld2 {v15.8h-v16.4h}, [x15]
3967 ld2 {v0.2d-v2.2d}, [x0]
3968 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3969 // CHECK-ERROR: ld2 {v15.8h, v16.4h}, [x15]
3971 // CHECK-ARM64-ERROR: error: registers must be sequential
3972 // CHECK-ERROR: ld2 {v0.8b, v2.8b}, [x0]
3974 // CHECK-ERROR: ld2 {v15.4h, v16.4h, v17.4h}, [x32]
3976 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3977 // CHECK-ERROR: ld2 {v15.8h-v16.4h}, [x15]
3979 // CHECK-ERROR: error: invalid operand for instruction
3980 // CHECK-ERROR: ld2 {v0.2d-v2.2d}, [x0]
3983 ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3984 ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3985 ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3986 ld3 {v15.8h-v17.4h}, [x15]
3987 ld3 {v31.4s-v2.4s}, [sp]
3988 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3989 // CHECK-ERROR: ld3 {v15.8h, v16.8h, v17.4h}, [x15]
3991 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3992 // CHECK-ERROR: ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
3994 // CHECK-ARM64-ERROR: error: registers must be sequential
3995 // CHECK-ERROR: ld3 {v0.8b, v2.8b, v3.8b}, [x0]
3997 // CHECK-ARM64-ERROR: error: mismatched register size suffix
3998 // CHECK-ERROR: ld3 {v15.8h-v17.4h}, [x15]
4000 // CHECK-ERROR: error: invalid operand for instruction
4001 // CHECK-ERROR: ld3 {v31.4s-v2.4s}, [sp]
4004 ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4005 ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4006 ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4007 ld4 {v15.8h-v18.4h}, [x15]
4008 ld4 {v31.2s-v1.2s}, [x31]
4009 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4010 // CHECK-ERROR: ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4012 // CHECK-ARM64-ERROR: error: registers must be sequential
4013 // CHECK-ERROR: ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4015 // CHECK-ERROR: error: invalid number of vectors
4016 // CHECK-ERROR: ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4018 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4019 // CHECK-ERROR: ld4 {v15.8h-v18.4h}, [x15]
4021 // CHECK-ERROR: error: invalid operand for instruction
4022 // CHECK-ERROR: ld4 {v31.2s-v1.2s}, [x31]
4029 // CHECK-ARM64-ERROR: error: vector register expected
4030 // CHECK-ERROR: st1 {x3}, [x2]
4032 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4033 // CHECK-ERROR: st1 {v4}, [x0]
4035 // CHECK-ARM64-ERROR: error: vector register expected
4036 // CHECK-ERROR: st1 {v32.16b}, [x0]
4038 // CHECK-ERROR: error: invalid operand for instruction
4039 // CHECK-ERROR: st1 {v15.8h}, [x32]
4042 st1 {v0.16b, v2.16b}, [x0]
4043 st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4044 st1 v0.8b, v1.8b}, [x0]
4045 st1 {v0.8h-v4.8h}, [x0]
4046 st1 {v1.8h-v1.8h}, [x0]
4047 st1 {v15.8h-v17.4h}, [x15]
4048 st1 {v0.8b-v2.8b, [x0]
4049 // CHECK-ARM64-ERROR: error: registers must be sequential
4050 // CHECK-ERROR: st1 {v0.16b, v2.16b}, [x0]
4052 // CHECK-ERROR: error: invalid number of vectors
4053 // CHECK-ERROR: st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
4055 // CHECK-ARM64-ERROR: error: unexpected token in argument list
4056 // CHECK-ERROR: st1 v0.8b, v1.8b}, [x0]
4058 // CHECK-ERROR: error: invalid number of vectors
4059 // CHECK-ERROR: st1 {v0.8h-v4.8h}, [x0]
4061 // CHECK-ERROR: error: invalid number of vectors
4062 // CHECK-ERROR: st1 {v1.8h-v1.8h}, [x0]
4064 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4065 // CHECK-ERROR: st1 {v15.8h-v17.4h}, [x15]
4067 // CHECK-ERROR: error: '}' expected
4068 // CHECK-ERROR: st1 {v0.8b-v2.8b, [x0]
4071 st2 {v15.8h, v16.4h}, [x15]
4072 st2 {v0.8b, v2.8b}, [x0]
4073 st2 {v15.4h, v16.4h, v17.4h}, [x30]
4074 st2 {v15.8h-v16.4h}, [x15]
4075 st2 {v0.2d-v2.2d}, [x0]
4076 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4077 // CHECK-ERROR: st2 {v15.8h, v16.4h}, [x15]
4079 // CHECK-ARM64-ERROR: error: registers must be sequential
4080 // CHECK-ERROR: st2 {v0.8b, v2.8b}, [x0]
4082 // CHECK-ERROR: error: invalid operand for instruction
4083 // CHECK-ERROR: st2 {v15.4h, v16.4h, v17.4h}, [x30]
4085 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4086 // CHECK-ERROR: st2 {v15.8h-v16.4h}, [x15]
4088 // CHECK-ERROR: error: invalid operand for instruction
4089 // CHECK-ERROR: st2 {v0.2d-v2.2d}, [x0]
4092 st3 {v15.8h, v16.8h, v17.4h}, [x15]
4093 st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4094 st3 {v0.8b, v2.8b, v3.8b}, [x0]
4095 st3 {v15.8h-v17.4h}, [x15]
4096 st3 {v31.4s-v2.4s}, [sp]
4097 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4098 // CHECK-ERROR: st3 {v15.8h, v16.8h, v17.4h}, [x15]
4100 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4101 // CHECK-ERROR: st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
4103 // CHECK-ARM64-ERROR: error: registers must be sequential
4104 // CHECK-ERROR: st3 {v0.8b, v2.8b, v3.8b}, [x0]
4106 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4107 // CHECK-ERROR: st3 {v15.8h-v17.4h}, [x15]
4109 // CHECK-ERROR: error: invalid operand for instruction
4110 // CHECK-ERROR: st3 {v31.4s-v2.4s}, [sp]
4113 st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4114 st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4115 st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4116 st4 {v15.8h-v18.4h}, [x15]
4117 st4 {v31.2s-v1.2s}, [x31]
4118 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4119 // CHECK-ERROR: st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
4121 // CHECK-ARM64-ERROR: error: registers must be sequential
4122 // CHECK-ERROR: st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
4124 // CHECK-ERROR: error: invalid number of vectors
4125 // CHECK-ERROR: st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
4127 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4128 // CHECK-ERROR: st4 {v15.8h-v18.4h}, [x15]
4130 // CHECK-ERROR: error: invalid operand for instruction
4131 // CHECK-ERROR: st4 {v31.2s-v1.2s}, [x31]
4134 //----------------------------------------------------------------------
4135 // Vector post-index load/store multiple N-element structure
4136 // (class SIMD lselem-post)
4137 //----------------------------------------------------------------------
4138 ld1 {v0.16b}, [x0], #8
4139 ld1 {v0.8h, v1.16h}, [x0], x1
4140 ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4141 // CHECK-ERROR: error: invalid operand for instruction
4142 // CHECK-ERROR: ld1 {v0.16b}, [x0], #8
4144 // CHECK-ARM64-ERROR: error: invalid vector kind qualifier
4145 // CHECK-ERROR: ld1 {v0.8h, v1.16h}, [x0], x1
4147 // CHECK-ERROR: error: invalid operand for instruction
4148 // CHECK-ERROR: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4151 ld2 {v0.16b, v1.16b}, [x0], #16
4152 ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4153 ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4154 // CHECK-ERROR: error: invalid operand for instruction
4155 // CHECK-ERROR: ld2 {v0.16b, v1.16b}, [x0], #16
4157 // CHECK-ERROR: error: invalid operand for instruction
4158 // CHECK-ERROR: ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4160 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4161 // CHECK-ERROR: ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4164 st1 {v0.16b}, [x0], #8
4165 st1 {v0.8h, v1.16h}, [x0], x1
4166 st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4167 // CHECK-ERROR: error: invalid operand for instruction
4168 // CHECK-ERROR: st1 {v0.16b}, [x0], #8
4170 // CHECK-ARM64-ERROR: error: invalid vector kind qualifier
4171 // CHECK-ERROR: st1 {v0.8h, v1.16h}, [x0], x1
4173 // CHECK-ERROR: error: invalid operand for instruction
4174 // CHECK-ERROR: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
4177 st2 {v0.16b, v1.16b}, [x0], #16
4178 st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4179 st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4180 // CHECK-ERROR: error: invalid operand for instruction
4181 // CHECK-ERROR: st2 {v0.16b, v1.16b}, [x0], #16
4183 // CHECK-ERROR: error: invalid operand for instruction
4184 // CHECK-ERROR: st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
4186 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4187 // CHECK-ERROR: st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
4190 //------------------------------------------------------------------------------
4191 // Load single N-element structure to all lanes of N consecutive
4192 // registers (N = 1,2,3,4)
4193 //------------------------------------------------------------------------------
4195 ld2r {v31.4s, v0.2s}, [sp]
4196 ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
4197 ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
4198 // CHECK-ARM64-ERROR: error: vector register expected
4199 // CHECK-ERROR: ld1r {x1}, [x0]
4201 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4202 // CHECK-ERROR: ld2r {v31.4s, v0.2s}, [sp]
4204 // CHECK-ERROR: error: invalid operand for instruction
4205 // CHECK-ERROR: ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
4207 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4208 // CHECK-ERROR: ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
4211 //------------------------------------------------------------------------------
4212 // Load/Store single N-element structure to/from one lane of N consecutive
4213 // registers (N = 1, 2,3,4)
4214 //------------------------------------------------------------------------------
4215 ld1 {v0.b}[16], [x0]
4216 ld2 {v15.h, v16.h}[8], [x15]
4217 ld3 {v31.s, v0.s, v1.s}[-1], [sp]
4218 ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4219 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4220 // CHECK-ERROR: ld1 {v0.b}[16], [x0]
4222 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4223 // CHECK-ERROR: ld2 {v15.h, v16.h}[8], [x15]
4225 // CHECK-ARM64-ERROR: error: vector lane must be an integer in range
4226 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.s}[-1], [sp]
4228 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4229 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4232 st1 {v0.d}[16], [x0]
4233 st2 {v31.s, v0.s}[3], [8]
4234 st3 {v15.h, v16.h, v17.h}[-1], [x15]
4235 st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4236 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4237 // CHECK-ERROR: st1 {v0.d}[16], [x0]
4239 // CHECK-ERROR: error: invalid operand for instruction
4240 // CHECK-ERROR: st2 {v31.s, v0.s}[3], [8]
4242 // CHECK-ARM64-ERROR: error: vector lane must be an integer in range
4243 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[-1], [x15]
4245 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4246 // CHECK-ERROR: st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
4249 //------------------------------------------------------------------------------
4250 // Post-index of load single N-element structure to all lanes of N consecutive
4251 // registers (N = 1,2,3,4)
4252 //------------------------------------------------------------------------------
4253 ld1r {v15.8h}, [x15], #5
4254 ld2r {v0.2d, v1.2d}, [x0], #7
4255 ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
4256 ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
4257 // CHECK-ERROR: error: invalid operand for instruction
4258 // CHECK-ERROR: ld1r {v15.8h}, [x15], #5
4260 // CHECK-ERROR: error: invalid operand for instruction
4261 // CHECK-ERROR: ld2r {v0.2d, v1.2d}, [x0], #7
4263 // CHECK-ERROR: error: invalid operand for instruction
4264 // CHECK-ERROR: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
4266 // CHECK-ERROR: error: invalid operand for instruction
4267 // CHECK-ERROR: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
4270 //------------------------------------------------------------------------------
4271 // Post-index of Load/Store single N-element structure to/from one lane of N
4272 // consecutive registers (N = 1, 2,3,4)
4273 //------------------------------------------------------------------------------
4274 ld1 {v0.b}[0], [x0], #2
4275 ld2 {v15.h, v16.h}[0], [x15], #3
4276 ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
4277 ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
4278 // CHECK-ERROR: error: invalid operand for instruction
4279 // CHECK-ERROR: ld1 {v0.b}[0], [x0], #2
4281 // CHECK-ERROR: error: invalid operand for instruction
4282 // CHECK-ERROR: ld2 {v15.h, v16.h}[0], [x15], #3
4284 // CHECK-ARM64-ERROR: error: mismatched register size suffix
4285 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
4287 // CHECK-ERROR: error: invalid operand for instruction
4288 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
4291 st1 {v0.d}[0], [x0], #7
4292 st2 {v31.s, v0.s}[0], [sp], #6
4293 st3 {v15.h, v16.h, v17.h}[0], [x15], #8
4294 st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
4295 // CHECK-ERROR: error: invalid operand for instruction
4296 // CHECK-ERROR: st1 {v0.d}[0], [x0], #7
4298 // CHECK-ERROR: error: invalid operand for instruction
4299 // CHECK-ERROR: st2 {v31.s, v0.s}[0], [sp], #6
4301 // CHECK-ERROR: error: invalid operand for instruction
4302 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[0], [x15], #8
4304 // CHECK-ERROR: error: invalid operand for instruction
4305 // CHECK-ERROR: st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
4318 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4319 // CHECK-ERROR: ins v2.b[16], w1
4321 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4322 // CHECK-ERROR: ins v7.h[8], w14
4324 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4325 // CHECK-ERROR: ins v20.s[5], w30
4327 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4328 // CHECK-ERROR: ins v1.d[2], x7
4330 // CHECK-ERROR: error: invalid operand for instruction
4331 // CHECK-ERROR: ins v2.b[3], b1
4333 // CHECK-ERROR: error: invalid operand for instruction
4334 // CHECK-ERROR: ins v7.h[2], h14
4336 // CHECK-ERROR: error: invalid operand for instruction
4337 // CHECK-ERROR: ins v20.s[1], s30
4339 // CHECK-ERROR: error: invalid operand for instruction
4340 // CHECK-ERROR: ins v1.d[0], d7
4354 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4355 // CHECK-ERROR smov w1, v0.b[16]
4357 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4358 // CHECK-ERROR smov w14, v6.h[8]
4360 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4361 // CHECK-ERROR smov x1, v0.b[16]
4363 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4364 // CHECK-ERROR smov x14, v6.h[8]
4366 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4367 // CHECK-ERROR smov x20, v9.s[5]
4369 // CHECK-ERROR error: invalid operand for instruction
4370 // CHECK-ERROR smov w1, v0.d[0]
4372 // CHECK-ERROR error: invalid operand for instruction
4373 // CHECK-ERROR smov w14, v6.d[1]
4375 // CHECK-ERROR error: invalid operand for instruction
4376 // CHECK-ERROR smov x1, v0.d[0]
4378 // CHECK-ERROR error: invalid operand for instruction
4379 // CHECK-ERROR smov x14, v6.d[1]
4381 // CHECK-ERROR error: invalid operand for instruction
4382 // CHECK-ERROR smov x20, v9.d[0]
4393 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4394 // CHECK-ERROR umov w1, v0.b[16]
4396 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4397 // CHECK-ERROR umov w14, v6.h[8]
4399 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4400 // CHECK-ERROR umov w20, v9.s[5]
4402 // CHECK-ARM64-ERROR: vector lane must be an integer in range
4403 // CHECK-ERROR umov x7, v18.d[3]
4405 // CHECK-ERROR error: invalid operand for instruction
4406 // CHECK-ERROR umov w1, v0.d[0]
4408 // CHECK-ERROR error: invalid operand for instruction
4409 // CHECK-ERROR umov s20, v9.s[2]
4411 // CHECK-ERROR error: invalid operand for instruction
4412 // CHECK-ERROR umov d7, v18.d[1]
4415 Ins v1.h[2], v3.b[6]
4416 Ins v6.h[7], v7.s[2]
4417 Ins v15.d[0], v22.s[2]
4418 Ins v0.d[0], v4.b[1]
4420 // CHECK-ERROR error: invalid operand for instruction
4421 // CHECK-ERROR Ins v1.h[2], v3.b[6]
4423 // CHECK-ERROR error: invalid operand for instruction
4424 // CHECK-ERROR Ins v6.h[7], v7.s[2]
4426 // CHECK-ERROR error: invalid operand for instruction
4427 // CHECK-ERROR Ins v15.d[0], v22.s[2]
4429 // CHECK-ERROR error: invalid operand for instruction
4430 // CHECK-ERROR Ins v0.d[0], v4.b[1]
4435 dup v17.2d, v20.s[0]
4438 dup v17.4s, v20.d[0]
4441 // CHECK-ERROR error: invalid operand for instruction
4442 // CHECK-ERROR dup v1.8h, v2.b[2]
4444 // CHECK-ERROR error: invalid operand for instruction
4445 // CHECK-ERROR dup v11.4s, v7.h[7]
4447 // CHECK-ERROR error: invalid operand for instruction
4448 // CHECK-ERROR dup v17.2d, v20.s[0]
4450 // CHECK-ERROR error: invalid operand for instruction
4451 // CHECK-ERROR dup v1.16b, v2.h[2]
4453 // CHECK-ERROR invalid operand for instruction
4454 // CHECK-ERROR dup v11.8h, v7.s[3]
4456 // CHECK-ERROR invalid operand for instruction
4457 // CHECK-ERROR dup v17.4s, v20.d[0]
4459 // CHECK-ERROR invalid operand for instruction
4460 // CHECK-ERROR dup v5.2d, v1.b[1]
4471 // CHECK-ERROR error: invalid operand for instruction
4472 // CHECK-ERROR dup v1.8b, b1
4474 // CHECK-ERROR error: invalid operand for instruction
4475 // CHECK-ERROR dup v11.4h, h14
4477 // CHECK-ERROR error: invalid operand for instruction
4478 // CHECK-ERROR dup v17.2s, s30
4480 // CHECK-ERROR error: invalid operand for instruction
4481 // CHECK-ERROR dup v1.16b, d2
4483 // CHECK-ERROR error: invalid operand for instruction
4484 // CHECK-ERROR dup v11.8s, w16
4486 // CHECK-ERROR error: invalid operand for instruction
4487 // CHECK-ERROR dup v17.4d, w28
4489 // CHECK-ERROR error: invalid operand for instruction
4490 // CHECK-ERROR dup v5.2d, w0
4493 //----------------------------------------------------------------------
4494 // Scalar Compare Bitwise Equal
4495 //----------------------------------------------------------------------
4499 // CHECK-ERROR: error: invalid operand for instruction
4500 // CHECK-ERROR: cmeq b20, d21, d22
4503 //----------------------------------------------------------------------
4504 // Scalar Compare Bitwise Equal To Zero
4505 //----------------------------------------------------------------------
4509 // CHECK-ERROR: error: invalid operand for instruction
4510 // CHECK-ERROR: cmeq d20, b21, #0
4513 //----------------------------------------------------------------------
4514 // Scalar Compare Unsigned Higher Or Same
4515 //----------------------------------------------------------------------
4519 // CHECK-ERROR: error: invalid operand for instruction
4520 // CHECK-ERROR: cmhs b20, d21, d22
4524 //----------------------------------------------------------------------
4525 // Scalar Compare Signed Greather Than Or Equal
4526 //----------------------------------------------------------------------
4530 // CHECK-ERROR: error: invalid operand for instruction
4531 // CHECK-ERROR: cmge b20, d21, d22
4534 //----------------------------------------------------------------------
4535 // Scalar Compare Signed Greather Than Or Equal To Zero
4536 //----------------------------------------------------------------------
4540 // CHECK-ERROR: error: invalid operand for instruction
4541 // CHECK-ERROR: cmge d20, b21, #0
4544 //----------------------------------------------------------------------
4545 // Scalar Compare Unsigned Higher
4546 //----------------------------------------------------------------------
4550 // CHECK-ERROR: error: invalid operand for instruction
4551 // CHECK-ERROR: cmhi b20, d21, d22
4554 //----------------------------------------------------------------------
4555 // Scalar Compare Signed Greater Than
4556 //----------------------------------------------------------------------
4560 // CHECK-ERROR: error: invalid operand for instruction
4561 // CHECK-ERROR: cmgt b20, d21, d22
4564 //----------------------------------------------------------------------
4565 // Scalar Compare Signed Greater Than Zero
4566 //----------------------------------------------------------------------
4570 // CHECK-ERROR: error: invalid operand for instruction
4571 // CHECK-ERROR: cmgt d20, b21, #0
4574 //----------------------------------------------------------------------
4575 // Scalar Compare Signed Less Than Or Equal To Zero
4576 //----------------------------------------------------------------------
4580 // CHECK-ERROR: error: invalid operand for instruction
4581 // CHECK-ERROR: cmle d20, b21, #0
4584 //----------------------------------------------------------------------
4585 // Scalar Compare Less Than Zero
4586 //----------------------------------------------------------------------
4590 // CHECK-ERROR: error: invalid operand for instruction
4591 // CHECK-ERROR: cmlt d20, b21, #0
4594 //----------------------------------------------------------------------
4595 // Scalar Compare Bitwise Test Bits
4596 //----------------------------------------------------------------------
4600 // CHECK-ERROR: error: invalid operand for instruction
4601 // CHECK-ERROR: cmtst b20, d21, d22
4604 //----------------------------------------------------------------------
4605 // Scalar Floating-point Compare Mask Equal
4606 //----------------------------------------------------------------------
4611 // CHECK-ERROR: error: invalid operand for instruction
4612 // CHECK-ERROR: fcmeq s10, h11, s12
4614 // CHECK-ERROR: error: invalid operand for instruction
4615 // CHECK-ERROR: fcmeq d20, s21, d22
4618 //----------------------------------------------------------------------
4619 // Scalar Floating-point Compare Mask Equal To Zero
4620 //----------------------------------------------------------------------
4622 fcmeq h10, s11, #0.0
4623 fcmeq d20, s21, #0.0
4625 // CHECK-ERROR: error: invalid operand for instruction
4626 // CHECK-ERROR: fcmeq h10, s11, #0.0
4628 // CHECK-ERROR: error: invalid operand for instruction
4629 // CHECK-ERROR: fcmeq d20, s21, #0.0
4632 //----------------------------------------------------------------------
4633 // Scalar Floating-point Compare Mask Greater Than Or Equal
4634 //----------------------------------------------------------------------
4639 // CHECK-ERROR: error: invalid operand for instruction
4640 // CHECK-ERROR: fcmge s10, h11, s12
4642 // CHECK-ERROR: error: invalid operand for instruction
4643 // CHECK-ERROR: fcmge d20, s21, d22
4646 //----------------------------------------------------------------------
4647 // Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
4648 //----------------------------------------------------------------------
4650 fcmge h10, s11, #0.0
4651 fcmge d20, s21, #0.0
4653 // CHECK-ERROR: error: invalid operand for instruction
4654 // CHECK-ERROR: fcmge h10, s11, #0.0
4656 // CHECK-ERROR: error: invalid operand for instruction
4657 // CHECK-ERROR: fcmge d20, s21, #0.0
4660 //----------------------------------------------------------------------
4661 // Scalar Floating-point Compare Mask Greather Than
4662 //----------------------------------------------------------------------
4667 // CHECK-ERROR: error: invalid operand for instruction
4668 // CHECK-ERROR: fcmgt s10, h11, s12
4670 // CHECK-ERROR: error: invalid operand for instruction
4671 // CHECK-ERROR: fcmgt d20, s21, d22
4674 //----------------------------------------------------------------------
4675 // Scalar Floating-point Compare Mask Greather Than Zero
4676 //----------------------------------------------------------------------
4678 fcmgt h10, s11, #0.0
4679 fcmgt d20, s21, #0.0
4681 // CHECK-ERROR: error: invalid operand for instruction
4682 // CHECK-ERROR: fcmgt h10, s11, #0.0
4684 // CHECK-ERROR: error: invalid operand for instruction
4685 // CHECK-ERROR: fcmgt d20, s21, #0.0
4688 //----------------------------------------------------------------------
4689 // Scalar Floating-point Compare Mask Less Than Or Equal To Zero
4690 //----------------------------------------------------------------------
4692 fcmle h10, s11, #0.0
4693 fcmle d20, s21, #0.0
4695 // CHECK-ERROR: error: invalid operand for instruction
4696 // CHECK-ERROR: fcmle h10, s11, #0.0
4698 // CHECK-ERROR: error: invalid operand for instruction
4699 // CHECK-ERROR: fcmle d20, s21, #0.0
4702 //----------------------------------------------------------------------
4703 // Scalar Floating-point Compare Mask Less Than
4704 //----------------------------------------------------------------------
4706 fcmlt h10, s11, #0.0
4707 fcmlt d20, s21, #0.0
4709 // CHECK-ERROR: error: invalid operand for instruction
4710 // CHECK-ERROR: fcmlt h10, s11, #0.0
4712 // CHECK-ERROR: error: invalid operand for instruction
4713 // CHECK-ERROR: fcmlt d20, s21, #0.0
4716 //----------------------------------------------------------------------
4717 // Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
4718 //----------------------------------------------------------------------
4723 // CHECK-ERROR: error: invalid operand for instruction
4724 // CHECK-ERROR: facge s10, h11, s12
4726 // CHECK-ERROR: error: invalid operand for instruction
4727 // CHECK-ERROR: facge d20, s21, d22
4730 //----------------------------------------------------------------------
4731 // Scalar Floating-point Absolute Compare Mask Greater Than
4732 //----------------------------------------------------------------------
4737 // CHECK-ERROR: error: invalid operand for instruction
4738 // CHECK-ERROR: facgt s10, h11, s12
4740 // CHECK-ERROR: error: invalid operand for instruction
4741 // CHECK-ERROR: facgt d20, d21, s22
4744 //----------------------------------------------------------------------
4745 // Scalar Signed Saturating Accumulated of Unsigned Value
4746 //----------------------------------------------------------------------
4753 // CHECK-ERROR: error: invalid operand for instruction
4754 // CHECK-ERROR: suqadd b0, h1
4756 // CHECK-ERROR: error: invalid operand for instruction
4757 // CHECK-ERROR: suqadd h0, s1
4759 // CHECK-ERROR: error: invalid operand for instruction
4760 // CHECK-ERROR: suqadd s0, d1
4762 // CHECK-ERROR: error: invalid operand for instruction
4763 // CHECK-ERROR: suqadd d0, b0
4766 //----------------------------------------------------------------------
4767 // Scalar Unsigned Saturating Accumulated of Signed Value
4768 //----------------------------------------------------------------------
4775 // CHECK-ERROR: error: invalid operand for instruction
4776 // CHECK-ERROR: usqadd b0, h1
4778 // CHECK-ERROR: error: invalid operand for instruction
4779 // CHECK-ERROR: usqadd h0, s1
4781 // CHECK-ERROR: error: invalid operand for instruction
4782 // CHECK-ERROR: usqadd s0, d1
4784 // CHECK-ERROR: error: invalid operand for instruction
4785 // CHECK-ERROR: usqadd d0, b1
4788 //----------------------------------------------------------------------
4789 // Scalar Absolute Value
4790 //----------------------------------------------------------------------
4794 // CHECK-ERROR: error: invalid operand for instruction
4795 // CHECK-ERROR: abs d29, s24
4798 //----------------------------------------------------------------------
4800 //----------------------------------------------------------------------
4804 // CHECK-ERROR: error: invalid operand for instruction
4805 // CHECK-ERROR: neg d29, s24
4808 //----------------------------------------------------------------------
4809 // Signed Saturating Doubling Multiply-Add Long
4810 //----------------------------------------------------------------------
4812 sqdmlal s17, h27, s12
4813 sqdmlal d19, s24, d12
4815 // CHECK-ERROR: error: invalid operand for instruction
4816 // CHECK-ERROR: sqdmlal s17, h27, s12
4818 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4819 // CHECK-ERROR: sqdmlal d19, s24, d12
4822 //----------------------------------------------------------------------
4823 // Signed Saturating Doubling Multiply-Subtract Long
4824 //----------------------------------------------------------------------
4826 sqdmlsl s14, h12, s25
4827 sqdmlsl d12, s23, d13
4829 // CHECK-ERROR: error: invalid operand for instruction
4830 // CHECK-ERROR: sqdmlsl s14, h12, s25
4832 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4833 // CHECK-ERROR: sqdmlsl d12, s23, d13
4836 //----------------------------------------------------------------------
4837 // Signed Saturating Doubling Multiply Long
4838 //----------------------------------------------------------------------
4840 sqdmull s12, h22, s12
4841 sqdmull d15, s22, d12
4843 // CHECK-ERROR: error: invalid operand for instruction
4844 // CHECK-ERROR: sqdmull s12, h22, s12
4846 // CHECK-ARM64-ERROR: error: invalid operand for instruction
4847 // CHECK-ERROR: sqdmull d15, s22, d12
4850 //----------------------------------------------------------------------
4851 // Scalar Signed Saturating Extract Unsigned Narrow
4852 //----------------------------------------------------------------------
4858 // CHECK-ERROR: error: invalid operand for instruction
4859 // CHECK-ERROR: sqxtun b19, b14
4861 // CHECK-ERROR: error: invalid operand for instruction
4862 // CHECK-ERROR: sqxtun h21, h15
4864 // CHECK-ERROR: error: invalid operand for instruction
4865 // CHECK-ERROR: sqxtun s20, s12
4868 //----------------------------------------------------------------------
4869 // Scalar Signed Saturating Extract Signed Narrow
4870 //----------------------------------------------------------------------
4876 // CHECK-ERROR: error: invalid operand for instruction
4877 // CHECK-ERROR: sqxtn b18, b18
4879 // CHECK-ERROR: error: invalid operand for instruction
4880 // CHECK-ERROR: sqxtn h20, h17
4882 // CHECK-ERROR: error: invalid operand for instruction
4883 // CHECK-ERROR: sqxtn s19, s14
4887 //----------------------------------------------------------------------
4888 // Scalar Unsigned Saturating Extract Narrow
4889 //----------------------------------------------------------------------
4895 // CHECK-ERROR: error: invalid operand for instruction
4896 // CHECK-ERROR: uqxtn b18, b18
4898 // CHECK-ERROR: error: invalid operand for instruction
4899 // CHECK-ERROR: uqxtn h20, h17
4901 // CHECK-ERROR: error: invalid operand for instruction
4902 // CHECK-ERROR: uqxtn s19, s14
4905 //----------------------------------------------------------------------
4906 // Scalar Signed Shift Right (Immediate)
4907 //----------------------------------------------------------------------
4910 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4911 // CHECK-ERROR: sshr d15, d16, #99
4916 // CHECK-ERROR: error: invalid operand for instruction
4917 // CHECK-ERROR: sshr d15, s16, #31
4920 //----------------------------------------------------------------------
4921 // Scalar Unsigned Shift Right (Immediate)
4922 //----------------------------------------------------------------------
4926 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4927 // CHECK-ERROR: ushr d10, d17, #99
4930 //----------------------------------------------------------------------
4931 // Scalar Signed Rounding Shift Right (Immediate)
4932 //----------------------------------------------------------------------
4936 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4937 // CHECK-ERROR: srshr d19, d18, #99
4940 //----------------------------------------------------------------------
4941 // Scalar Unigned Rounding Shift Right (Immediate)
4942 //----------------------------------------------------------------------
4946 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4947 // CHECK-ERROR: urshr d20, d23, #99
4950 //----------------------------------------------------------------------
4951 // Scalar Signed Shift Right and Accumulate (Immediate)
4952 //----------------------------------------------------------------------
4956 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4957 // CHECK-ERROR: ssra d18, d12, #99
4960 //----------------------------------------------------------------------
4961 // Scalar Unsigned Shift Right and Accumulate (Immediate)
4962 //----------------------------------------------------------------------
4966 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4967 // CHECK-ERROR: usra d20, d13, #99
4970 //----------------------------------------------------------------------
4971 // Scalar Signed Rounding Shift Right and Accumulate (Immediate)
4972 //----------------------------------------------------------------------
4976 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4977 // CHECK-ERROR: srsra d15, d11, #99
4980 //----------------------------------------------------------------------
4981 // Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
4982 //----------------------------------------------------------------------
4986 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
4987 // CHECK-ERROR: ursra d18, d10, #99
4990 //----------------------------------------------------------------------
4991 // Scalar Shift Left (Immediate)
4992 //----------------------------------------------------------------------
4996 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
4997 // CHECK-ERROR: shl d7, d10, #99
5002 // CHECK-ERROR: error: invalid operand for instruction
5003 // CHECK-ERROR: shl d7, s16, #31
5006 //----------------------------------------------------------------------
5007 // Signed Saturating Shift Left (Immediate)
5008 //----------------------------------------------------------------------
5015 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5016 // CHECK-ERROR: sqshl b11, b19, #99
5018 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5019 // CHECK-ERROR: sqshl h13, h18, #99
5021 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5022 // CHECK-ERROR: sqshl s14, s17, #99
5024 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5025 // CHECK-ERROR: sqshl d15, d16, #99
5028 //----------------------------------------------------------------------
5029 // Unsigned Saturating Shift Left (Immediate)
5030 //----------------------------------------------------------------------
5037 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5038 // CHECK-ERROR: uqshl b18, b15, #99
5040 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5041 // CHECK-ERROR: uqshl h11, h18, #99
5043 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5044 // CHECK-ERROR: uqshl s14, s19, #99
5046 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5047 // CHECK-ERROR: uqshl d15, d12, #99
5050 //----------------------------------------------------------------------
5051 // Signed Saturating Shift Left Unsigned (Immediate)
5052 //----------------------------------------------------------------------
5054 sqshlu b15, b18, #99
5055 sqshlu h19, h17, #99
5056 sqshlu s16, s14, #99
5057 sqshlu d11, d13, #99
5059 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
5060 // CHECK-ERROR: sqshlu b15, b18, #99
5062 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
5063 // CHECK-ERROR: sqshlu h19, h17, #99
5065 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
5066 // CHECK-ERROR: sqshlu s16, s14, #99
5068 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5069 // CHECK-ERROR: sqshlu d11, d13, #99
5072 //----------------------------------------------------------------------
5073 // Shift Right And Insert (Immediate)
5074 //----------------------------------------------------------------------
5078 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5079 // CHECK-ERROR: sri d10, d12, #99
5082 //----------------------------------------------------------------------
5083 // Shift Left And Insert (Immediate)
5084 //----------------------------------------------------------------------
5088 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
5089 // CHECK-ERROR: sli d10, d14, #99
5092 //----------------------------------------------------------------------
5093 // Signed Saturating Shift Right Narrow (Immediate)
5094 //----------------------------------------------------------------------
5096 sqshrn b10, h15, #99
5097 sqshrn h17, s10, #99
5098 sqshrn s18, d10, #99
5100 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5101 // CHECK-ERROR: sqshrn b10, h15, #99
5103 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5104 // CHECK-ERROR: sqshrn h17, s10, #99
5106 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5107 // CHECK-ERROR: sqshrn s18, d10, #99
5110 //----------------------------------------------------------------------
5111 // Unsigned Saturating Shift Right Narrow (Immediate)
5112 //----------------------------------------------------------------------
5114 uqshrn b12, h10, #99
5115 uqshrn h10, s14, #99
5116 uqshrn s10, d12, #99
5118 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5119 // CHECK-ERROR: uqshrn b12, h10, #99
5121 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5122 // CHECK-ERROR: uqshrn h10, s14, #99
5124 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5125 // CHECK-ERROR: uqshrn s10, d12, #99
5128 //----------------------------------------------------------------------
5129 // Signed Saturating Rounded Shift Right Narrow (Immediate)
5130 //----------------------------------------------------------------------
5132 sqrshrn b10, h13, #99
5133 sqrshrn h15, s10, #99
5134 sqrshrn s15, d12, #99
5136 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5137 // CHECK-ERROR: sqrshrn b10, h13, #99
5139 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5140 // CHECK-ERROR: sqrshrn h15, s10, #99
5142 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5143 // CHECK-ERROR: sqrshrn s15, d12, #99
5146 //----------------------------------------------------------------------
5147 // Unsigned Saturating Rounded Shift Right Narrow (Immediate)
5148 //----------------------------------------------------------------------
5150 uqrshrn b10, h12, #99
5151 uqrshrn h12, s10, #99
5152 uqrshrn s10, d10, #99
5154 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5155 // CHECK-ERROR: uqrshrn b10, h12, #99
5157 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5158 // CHECK-ERROR: uqrshrn h12, s10, #99
5160 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5161 // CHECK-ERROR: uqrshrn s10, d10, #99
5164 //----------------------------------------------------------------------
5165 // Signed Saturating Shift Right Unsigned Narrow (Immediate)
5166 //----------------------------------------------------------------------
5168 sqshrun b15, h10, #99
5169 sqshrun h20, s14, #99
5170 sqshrun s10, d15, #99
5172 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5173 // CHECK-ERROR: sqshrun b15, h10, #99
5175 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5176 // CHECK-ERROR: sqshrun h20, s14, #99
5178 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5179 // CHECK-ERROR: sqshrun s10, d15, #99
5182 //----------------------------------------------------------------------
5183 // Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
5184 //----------------------------------------------------------------------
5186 sqrshrun b17, h10, #99
5187 sqrshrun h10, s13, #99
5188 sqrshrun s22, d16, #99
5190 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
5191 // CHECK-ERROR: sqrshrun b17, h10, #99
5193 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
5194 // CHECK-ERROR: sqrshrun h10, s13, #99
5196 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5197 // CHECK-ERROR: sqrshrun s22, d16, #99
5200 //----------------------------------------------------------------------
5201 // Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
5202 //----------------------------------------------------------------------
5209 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5210 // CHECK-ERROR: scvtf s22, s13, #0
5212 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5213 // CHECK-ERROR: scvtf s22, s13, #33
5215 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5216 // CHECK-ERROR: scvtf d21, d12, #65
5218 // CHECK-ERROR: error: invalid operand for instruction
5219 // CHECK-ERROR: scvtf d21, s12, #31
5222 //----------------------------------------------------------------------
5223 // Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
5224 //----------------------------------------------------------------------
5230 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
5231 // CHECK-ERROR: ucvtf s22, s13, #34
5233 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
5234 // CHECK-ERROR: ucvtf d21, d14, #65
5236 // CHECK-ERROR: error: invalid operand for instruction
5237 // CHECK-ERROR: ucvtf d21, s14, #64
5240 //------------------------------------------------------------------------------
5242 //------------------------------------------------------------------------------
5244 rev32 v30.2s, v31.2s
5245 rev32 v30.4s, v31.4s
5246 rev32 v30.2d, v31.2d
5253 // CHECK-ERROR: error: invalid operand for instruction
5254 // CHECK-ERROR: rev64 v6.2d, v8.2d
5256 // CHECK-ERROR: error: invalid operand for instruction
5257 // CHECK-ERROR: rev32 v30.2s, v31.2s
5259 // CHECK-ERROR: error: invalid operand for instruction
5260 // CHECK-ERROR: rev32 v30.4s, v31.4s
5262 // CHECK-ERROR: error: invalid operand for instruction
5263 // CHECK-ERROR: rev32 v30.2d, v31.2d
5265 // CHECK-ERROR: error: invalid operand for instruction
5266 // CHECK-ERROR: rev16 v21.4h, v1.4h
5268 // CHECK-ERROR: error: invalid operand for instruction
5269 // CHECK-ERROR: rev16 v21.8h, v1.8h
5271 // CHECK-ERROR: error: invalid operand for instruction
5272 // CHECK-ERROR: rev16 v21.2s, v1.2s
5274 // CHECK-ERROR: error: invalid operand for instruction
5275 // CHECK-ERROR: rev16 v21.4s, v1.4s
5277 // CHECK-ERROR: error: invalid operand for instruction
5278 // CHECK-ERROR: rev16 v21.2d, v1.2d
5281 //------------------------------------------------------------------------------
5282 // Signed integer pairwise add long
5283 //------------------------------------------------------------------------------
5285 saddlp v3.8h, v21.8h
5290 // CHECK-ERROR: error: invalid operand for instruction
5291 // CHECK-ERROR: saddlp v3.8h, v21.8h
5293 // CHECK-ERROR: error: invalid operand for instruction
5294 // CHECK-ERROR: saddlp v8.8b, v5.8b
5296 // CHECK-ERROR: error: invalid operand for instruction
5297 // CHECK-ERROR: saddlp v9.8h, v1.4s
5299 // CHECK-ERROR: error: invalid operand for instruction
5300 // CHECK-ERROR: saddlp v0.4s, v1.2d
5303 //------------------------------------------------------------------------------
5304 // Unsigned integer pairwise add long
5305 //------------------------------------------------------------------------------
5307 uaddlp v3.8h, v21.8h
5312 // CHECK-ERROR: error: invalid operand for instruction
5313 // CHECK-ERROR: uaddlp v3.8h, v21.8h
5315 // CHECK-ERROR: error: invalid operand for instruction
5316 // CHECK-ERROR: uaddlp v8.8b, v5.8b
5318 // CHECK-ERROR: error: invalid operand for instruction
5319 // CHECK-ERROR: uaddlp v9.8h, v1.4s
5321 // CHECK-ERROR: error: invalid operand for instruction
5322 // CHECK-ERROR: uaddlp v0.4s, v1.2d
5325 //------------------------------------------------------------------------------
5326 // Signed integer pairwise add and accumulate long
5327 //------------------------------------------------------------------------------
5329 sadalp v3.16b, v21.16b
5333 sadalp v12.2d, v4.8h
5335 // CHECK-ERROR: error: invalid operand for instruction
5336 // CHECK-ERROR: sadalp v3.16b, v21.16b
5338 // CHECK-ERROR: error: invalid operand for instruction
5339 // CHECK-ERROR: sadalp v8.4h, v5.4h
5341 // CHECK-ERROR: error: invalid operand for instruction
5342 // CHECK-ERROR: sadalp v9.4s, v1.4s
5344 // CHECK-ERROR: error: invalid operand for instruction
5345 // CHECK-ERROR: sadalp v0.4h, v1.2s
5347 // CHECK-ERROR: error: invalid operand for instruction
5348 // CHECK-ERROR: sadalp v12.2d, v4.8h
5351 //------------------------------------------------------------------------------
5352 // Unsigned integer pairwise add and accumulate long
5353 //------------------------------------------------------------------------------
5355 uadalp v3.16b, v21.16b
5359 uadalp v12.2d, v4.8h
5361 // CHECK-ERROR: error: invalid operand for instruction
5362 // CHECK-ERROR: uadalp v3.16b, v21.16b
5364 // CHECK-ERROR: error: invalid operand for instruction
5365 // CHECK-ERROR: uadalp v8.4h, v5.4h
5367 // CHECK-ERROR: error: invalid operand for instruction
5368 // CHECK-ERROR: uadalp v9.4s, v1.4s
5370 // CHECK-ERROR: error: invalid operand for instruction
5371 // CHECK-ERROR: uadalp v0.4h, v1.2s
5373 // CHECK-ERROR: error: invalid operand for instruction
5374 // CHECK-ERROR: uadalp v12.2d, v4.8h
5377 //------------------------------------------------------------------------------
5378 // Signed integer saturating accumulate of unsigned value
5379 //------------------------------------------------------------------------------
5381 suqadd v0.16b, v31.8b
5383 suqadd v13.4h, v21.4s
5386 // CHECK-ERROR: error: invalid operand for instruction
5387 // CHECK-ERROR: suqadd v0.16b, v31.8b
5389 // CHECK-ERROR: error: invalid operand for instruction
5390 // CHECK-ERROR: suqadd v1.8b, v9.8h
5392 // CHECK-ERROR: error: invalid operand for instruction
5393 // CHECK-ERROR: suqadd v13.4h, v21.4s
5395 // CHECK-ERROR: error: invalid operand for instruction
5396 // CHECK-ERROR: suqadd v4.2s, v0.2d
5399 //------------------------------------------------------------------------------
5400 // Unsigned integer saturating accumulate of signed value
5401 //------------------------------------------------------------------------------
5403 usqadd v0.16b, v31.8b
5405 usqadd v13.4h, v21.4s
5408 // CHECK-ERROR: error: invalid operand for instruction
5409 // CHECK-ERROR: usqadd v0.16b, v31.8b
5411 // CHECK-ERROR: error: invalid operand for instruction
5412 // CHECK-ERROR: usqadd v2.8h, v4.4h
5414 // CHECK-ERROR: error: invalid operand for instruction
5415 // CHECK-ERROR: usqadd v13.4h, v21.4s
5417 // CHECK-ERROR: error: invalid operand for instruction
5418 // CHECK-ERROR: usqadd v4.2s, v0.2d
5421 //------------------------------------------------------------------------------
5422 // Integer saturating absolute
5423 //------------------------------------------------------------------------------
5425 sqabs v0.16b, v31.8b
5430 // CHECK-ERROR: error: invalid operand for instruction
5431 // CHECK-ERROR: sqabs v0.16b, v31.8b
5433 // CHECK-ERROR: error: invalid operand for instruction
5434 // CHECK-ERROR: sqabs v2.8h, v4.4h
5436 // CHECK-ERROR: error: invalid operand for instruction
5437 // CHECK-ERROR: sqabs v6.4s, v8.2s
5439 // CHECK-ERROR: error: invalid operand for instruction
5440 // CHECK-ERROR: sqabs v6.2d, v8.2s
5443 //------------------------------------------------------------------------------
5444 // Signed integer saturating negate
5445 //------------------------------------------------------------------------------
5447 sqneg v0.16b, v31.8b
5452 // CHECK-ERROR: error: invalid operand for instruction
5453 // CHECK-ERROR: sqneg v0.16b, v31.8b
5455 // CHECK-ERROR: error: invalid operand for instruction
5456 // CHECK-ERROR: sqneg v2.8h, v4.4h
5458 // CHECK-ERROR: error: invalid operand for instruction
5459 // CHECK-ERROR: sqneg v6.4s, v8.2s
5461 // CHECK-ERROR: error: invalid operand for instruction
5462 // CHECK-ERROR: sqneg v6.2d, v8.2s
5465 //------------------------------------------------------------------------------
5467 //------------------------------------------------------------------------------
5474 // CHECK-ERROR: error: invalid operand for instruction
5475 // CHECK-ERROR: abs v0.16b, v31.8b
5477 // CHECK-ERROR: error: invalid operand for instruction
5478 // CHECK-ERROR: abs v2.8h, v4.4h
5480 // CHECK-ERROR: error: invalid operand for instruction
5481 // CHECK-ERROR: abs v6.4s, v8.2s
5483 // CHECK-ERROR: error: invalid operand for instruction
5484 // CHECK-ERROR: abs v6.2d, v8.2s
5487 //------------------------------------------------------------------------------
5488 // Integer count leading sign bits
5489 //------------------------------------------------------------------------------
5493 // CHECK-ERROR: error: invalid operand for instruction
5494 // CHECK-ERROR: cls v0.2d, v31.2d
5497 //------------------------------------------------------------------------------
5498 // Integer count leading zeros
5499 //------------------------------------------------------------------------------
5503 // CHECK-ERROR: error: invalid operand for instruction
5504 // CHECK-ERROR: clz v0.2d, v31.2d
5507 //------------------------------------------------------------------------------
5509 //------------------------------------------------------------------------------
5517 // CHECK-ERROR: error: invalid operand for instruction
5518 // CHECK-ERROR: cnt v2.8h, v4.8h
5520 // CHECK-ERROR: error: invalid operand for instruction
5521 // CHECK-ERROR: cnt v6.4s, v8.4s
5523 // CHECK-ERROR: error: invalid operand for instruction
5524 // CHECK-ERROR: cnt v6.2d, v8.2d
5526 // CHECK-ERROR: error: invalid operand for instruction
5527 // CHECK-ERROR: cnt v13.4h, v21.4h
5529 // CHECK-ERROR: error: invalid operand for instruction
5530 // CHECK-ERROR: cnt v4.2s, v0.2s
5534 //------------------------------------------------------------------------------
5536 //------------------------------------------------------------------------------
5544 // CHECK-ERROR: error: invalid operand for instruction
5545 // CHECK-ERROR: not v2.8h, v4.8h
5547 // CHECK-ERROR: error: invalid operand for instruction
5548 // CHECK-ERROR: not v6.4s, v8.4s
5550 // CHECK-ERROR: error: invalid operand for instruction
5551 // CHECK-ERROR: not v6.2d, v8.2d
5553 // CHECK-ERROR: error: invalid operand for instruction
5554 // CHECK-ERROR: not v13.4h, v21.4h
5556 // CHECK-ERROR: error: invalid operand for instruction
5557 // CHECK-ERROR: not v4.2s, v0.2s
5560 //------------------------------------------------------------------------------
5562 //------------------------------------------------------------------------------
5570 // CHECK-ERROR: error: invalid operand for instruction
5571 // CHECK-ERROR: rbit v2.8h, v4.8h
5573 // CHECK-ERROR: error: invalid operand for instruction
5574 // CHECK-ERROR: rbit v6.4s, v8.4s
5576 // CHECK-ERROR: error: invalid operand for instruction
5577 // CHECK-ERROR: rbit v6.2d, v8.2d
5579 // CHECK-ERROR: error: invalid operand for instruction
5580 // CHECK-ERROR: rbit v13.4h, v21.4h
5582 // CHECK-ERROR: error: invalid operand for instruction
5583 // CHECK-ERROR: rbit v4.2s, v0.2s
5586 //------------------------------------------------------------------------------
5587 // Floating-point absolute
5588 //------------------------------------------------------------------------------
5590 fabs v0.16b, v31.16b
5595 // CHECK-ERROR: error: invalid operand for instruction
5596 // CHECK-ERROR: fabs v0.16b, v31.16b
5598 // CHECK-ERROR: error: invalid operand for instruction
5599 // CHECK-ERROR: fabs v2.8h, v4.8h
5601 // CHECK-ERROR: error: invalid operand for instruction
5602 // CHECK-ERROR: fabs v1.8b, v9.8b
5604 // CHECK-ERROR: error: invalid operand for instruction
5605 // CHECK-ERROR: fabs v13.4h, v21.4h
5608 //------------------------------------------------------------------------------
5609 // Floating-point negate
5610 //------------------------------------------------------------------------------
5612 fneg v0.16b, v31.16b
5617 // CHECK-ERROR: error: invalid operand for instruction
5618 // CHECK-ERROR: fneg v0.16b, v31.16b
5620 // CHECK-ERROR: error: invalid operand for instruction
5621 // CHECK-ERROR: fneg v2.8h, v4.8h
5623 // CHECK-ERROR: error: invalid operand for instruction
5624 // CHECK-ERROR: fneg v1.8b, v9.8b
5626 // CHECK-ERROR: error: invalid operand for instruction
5627 // CHECK-ERROR: fneg v13.4h, v21.4h
5630 //------------------------------------------------------------------------------
5631 // Integer extract and narrow
5632 //------------------------------------------------------------------------------
5641 // CHECK-ERROR: error: invalid operand for instruction
5642 // CHECK-ERROR: xtn v0.16b, v31.8h
5644 // CHECK-ERROR: error: invalid operand for instruction
5645 // CHECK-ERROR: xtn v2.8h, v4.4s
5647 // CHECK-ERROR: error: invalid operand for instruction
5648 // CHECK-ERROR: xtn v6.4s, v8.2d
5650 // CHECK-ERROR: error: invalid operand for instruction
5651 // CHECK-ERROR: xtn2 v1.8b, v9.8h
5653 // CHECK-ERROR: error: invalid operand for instruction
5654 // CHECK-ERROR: xtn2 v13.4h, v21.4s
5656 // CHECK-ERROR: error: invalid operand for instruction
5657 // CHECK-ERROR: xtn2 v4.2s, v0.2d
5660 //------------------------------------------------------------------------------
5661 // Signed integer saturating extract and unsigned narrow
5662 //------------------------------------------------------------------------------
5664 sqxtun v0.16b, v31.8h
5667 sqxtun2 v1.8b, v9.8h
5668 sqxtun2 v13.4h, v21.4s
5669 sqxtun2 v4.2s, v0.2d
5671 // CHECK-ERROR: error: invalid operand for instruction
5672 // CHECK-ERROR: sqxtun v0.16b, v31.8h
5674 // CHECK-ERROR: error: invalid operand for instruction
5675 // CHECK-ERROR: sqxtun v2.8h, v4.4s
5677 // CHECK-ERROR: error: invalid operand for instruction
5678 // CHECK-ERROR: sqxtun v6.4s, v8.2d
5680 // CHECK-ERROR: error: invalid operand for instruction
5681 // CHECK-ERROR: sqxtun2 v1.8b, v9.8h
5683 // CHECK-ERROR: error: invalid operand for instruction
5684 // CHECK-ERROR: sqxtun2 v13.4h, v21.4s
5686 // CHECK-ERROR: error: invalid operand for instruction
5687 // CHECK-ERROR: sqxtun2 v4.2s, v0.2d
5690 //------------------------------------------------------------------------------
5691 // Signed integer saturating extract and narrow
5692 //------------------------------------------------------------------------------
5694 sqxtn v0.16b, v31.8h
5698 sqxtn2 v13.4h, v21.4s
5701 // CHECK-ERROR: error: invalid operand for instruction
5702 // CHECK-ERROR: sqxtn v0.16b, v31.8h
5704 // CHECK-ERROR: error: invalid operand for instruction
5705 // CHECK-ERROR: sqxtn v2.8h, v4.4s
5707 // CHECK-ERROR: error: invalid operand for instruction
5708 // CHECK-ERROR: sqxtn v6.4s, v8.2d
5710 // CHECK-ERROR: error: invalid operand for instruction
5711 // CHECK-ERROR: sqxtn2 v1.8b, v9.8h
5713 // CHECK-ERROR: error: invalid operand for instruction
5714 // CHECK-ERROR: sqxtn2 v13.4h, v21.4s
5716 // CHECK-ERROR: error: invalid operand for instruction
5717 // CHECK-ERROR: sqxtn2 v4.2s, v0.2d
5720 //------------------------------------------------------------------------------
5721 // Unsigned integer saturating extract and narrow
5722 //------------------------------------------------------------------------------
5724 uqxtn v0.16b, v31.8h
5728 uqxtn2 v13.4h, v21.4s
5731 // CHECK-ERROR: error: invalid operand for instruction
5732 // CHECK-ERROR: uqxtn v0.16b, v31.8h
5734 // CHECK-ERROR: error: invalid operand for instruction
5735 // CHECK-ERROR: uqxtn v2.8h, v4.4s
5737 // CHECK-ERROR: error: invalid operand for instruction
5738 // CHECK-ERROR: uqxtn v6.4s, v8.2d
5740 // CHECK-ERROR: error: invalid operand for instruction
5741 // CHECK-ERROR: uqxtn2 v1.8b, v9.8h
5743 // CHECK-ERROR: error: invalid operand for instruction
5744 // CHECK-ERROR: uqxtn2 v13.4h, v21.4s
5746 // CHECK-ERROR: error: invalid operand for instruction
5747 // CHECK-ERROR: uqxtn2 v4.2s, v0.2d
5750 //------------------------------------------------------------------------------
5751 // Integer shift left long
5752 //------------------------------------------------------------------------------
5754 shll2 v2.8h, v4.16b, #7
5755 shll2 v6.4s, v8.8h, #15
5756 shll2 v6.2d, v8.4s, #31
5757 shll v2.8h, v4.16b, #8
5758 shll v6.4s, v8.8h, #16
5759 shll v6.2d, v8.4s, #32
5760 shll v2.8h, v4.8b, #8
5761 shll v6.4s, v8.4h, #16
5762 shll v6.2d, v8.2s, #32
5763 shll2 v2.8h, v4.8b, #5
5764 shll2 v6.4s, v8.4h, #14
5765 shll2 v6.2d, v8.2s, #1
5767 // CHECK-ERROR: error: invalid operand for instruction
5768 // CHECK-ERROR: shll2 v2.8h, v4.16b, #7
5770 // CHECK-ERROR: error: invalid operand for instruction
5771 // CHECK-ERROR: shll2 v6.4s, v8.8h, #15
5773 // CHECK-ERROR: error: invalid operand for instruction
5774 // CHECK-ERROR: shll2 v6.2d, v8.4s, #31
5776 // CHECK-ERROR: error: invalid operand for instruction
5777 // CHECK-ERROR: shll v2.8h, v4.16b, #8
5779 // CHECK-ERROR: error: invalid operand for instruction
5780 // CHECK-ERROR: shll v6.4s, v8.8h, #16
5782 // CHECK-ERROR: error: invalid operand for instruction
5783 // CHECK-ERROR: shll v6.2d, v8.4s, #32
5785 // CHECK-ERROR: error: invalid operand for instruction
5786 // CHECK-ERROR: shll2 v2.8h, v4.8b, #5
5788 // CHECK-ERROR: error: invalid operand for instruction
5789 // CHECK-ERROR: shll2 v6.4s, v8.4h, #14
5791 // CHECK-ERROR: error: invalid operand for instruction
5792 // CHECK-ERROR: shll2 v6.2d, v8.2s, #1
5795 //------------------------------------------------------------------------------
5796 // Floating-point convert downsize
5797 //------------------------------------------------------------------------------
5801 fcvtn2 v13.4h, v21.4s
5804 // CHECK-ERROR: error: invalid operand for instruction
5805 // CHECK-ERROR: fcvtn v2.8h, v4.4s
5807 // CHECK-ERROR: error: invalid operand for instruction
5808 // CHECK-ERROR: fcvtn v6.4s, v8.2d
5810 // CHECK-ERROR: error: invalid operand for instruction
5811 // CHECK-ERROR: fcvtn2 v13.4h, v21.4s
5813 // CHECK-ERROR: error: invalid operand for instruction
5814 // CHECK-ERROR: fcvtn2 v4.2s, v0.2d
5817 //------------------------------------------------------------------------------
5818 // Floating-point convert downsize with inexact
5819 //------------------------------------------------------------------------------
5822 fcvtxn2 v4.2s, v0.2d
5824 // CHECK-ERROR: error: invalid operand for instruction
5825 // CHECK-ERROR: fcvtxn v6.4s, v8.2d
5827 // CHECK-ERROR: error: invalid operand for instruction
5828 // CHECK-ERROR: fcvtxn2 v4.2s, v0.2d
5831 //------------------------------------------------------------------------------
5832 // Floating-point convert upsize
5833 //------------------------------------------------------------------------------
5838 fcvtl v17.2d, v28.4s
5840 // CHECK-ERROR: error: invalid operand for instruction
5841 // CHECK-ERROR: fcvtl2 v9.4s, v1.4h
5843 // CHECK-ERROR: error: invalid operand for instruction
5844 // CHECK-ERROR: fcvtl2 v0.2d, v1.2s
5846 // CHECK-ERROR: error: invalid operand for instruction
5847 // CHECK-ERROR: fcvtl v12.4s, v4.8h
5849 // CHECK-ERROR: error: invalid operand for instruction
5850 // CHECK-ERROR: fcvtl v17.2d, v28.4s
5853 //------------------------------------------------------------------------------
5854 // Floating-point round to integral
5855 //------------------------------------------------------------------------------
5857 frintn v0.16b, v31.16b
5860 frintn v13.4h, v21.4h
5862 frinta v0.16b, v31.16b
5865 frinta v13.4h, v21.4h
5867 frintp v0.16b, v31.16b
5870 frintp v13.4h, v21.4h
5872 frintm v0.16b, v31.16b
5875 frintm v13.4h, v21.4h
5877 frintx v0.16b, v31.16b
5880 frintx v13.4h, v21.4h
5882 frintz v0.16b, v31.16b
5885 frintz v13.4h, v21.4h
5887 frinti v0.16b, v31.16b
5890 frinti v13.4h, v21.4h
5892 fcvtns v0.16b, v31.16b
5895 fcvtns v13.4h, v21.4h
5897 fcvtnu v0.16b, v31.16b
5900 fcvtnu v13.4h, v21.4h
5902 fcvtps v0.16b, v31.16b
5905 fcvtps v13.4h, v21.4h
5907 fcvtpu v0.16b, v31.16b
5910 fcvtpu v13.4h, v21.4h
5912 fcvtms v0.16b, v31.16b
5915 fcvtms v13.4h, v21.4h
5917 fcvtmu v0.16b, v31.16b
5920 fcvtmu v13.4h, v21.4h
5922 fcvtzs v0.16b, v31.16b
5925 fcvtzs v13.4h, v21.4h
5927 fcvtzu v0.16b, v31.16b
5930 fcvtzu v13.4h, v21.4h
5932 fcvtas v0.16b, v31.16b
5935 fcvtas v13.4h, v21.4h
5937 fcvtau v0.16b, v31.16b
5940 fcvtau v13.4h, v21.4h
5942 urecpe v0.16b, v31.16b
5945 urecpe v13.4h, v21.4h
5948 ursqrte v0.16b, v31.16b
5949 ursqrte v2.8h, v4.8h
5950 ursqrte v1.8b, v9.8b
5951 ursqrte v13.4h, v21.4h
5952 ursqrte v1.2d, v9.2d
5954 scvtf v0.16b, v31.16b
5957 scvtf v13.4h, v21.4h
5959 ucvtf v0.16b, v31.16b
5962 ucvtf v13.4h, v21.4h
5964 frecpe v0.16b, v31.16b
5967 frecpe v13.4h, v21.4h
5969 frsqrte v0.16b, v31.16b
5970 frsqrte v2.8h, v4.8h
5971 frsqrte v1.8b, v9.8b
5972 frsqrte v13.4h, v21.4h
5974 fsqrt v0.16b, v31.16b
5977 fsqrt v13.4h, v21.4h
5979 // CHECK-ERROR: error: invalid operand for instruction
5980 // CHECK-ERROR: frintn v0.16b, v31.16b
5982 // CHECK-ERROR: error: invalid operand for instruction
5983 // CHECK-ERROR: frintn v2.8h, v4.8h
5985 // CHECK-ERROR: error: invalid operand for instruction
5986 // CHECK-ERROR: frintn v1.8b, v9.8b
5988 // CHECK-ERROR: error: invalid operand for instruction
5989 // CHECK-ERROR: frintn v13.4h, v21.4h
5991 // CHECK-ERROR: error: invalid operand for instruction
5992 // CHECK-ERROR: frinta v0.16b, v31.16b
5994 // CHECK-ERROR: error: invalid operand for instruction
5995 // CHECK-ERROR: frinta v2.8h, v4.8h
5997 // CHECK-ERROR: error: invalid operand for instruction
5998 // CHECK-ERROR: frinta v1.8b, v9.8b
6000 // CHECK-ERROR: error: invalid operand for instruction
6001 // CHECK-ERROR: frinta v13.4h, v21.4h
6003 // CHECK-ERROR: error: invalid operand for instruction
6004 // CHECK-ERROR: frintp v0.16b, v31.16b
6006 // CHECK-ERROR: error: invalid operand for instruction
6007 // CHECK-ERROR: frintp v2.8h, v4.8h
6009 // CHECK-ERROR: error: invalid operand for instruction
6010 // CHECK-ERROR: frintp v1.8b, v9.8b
6012 // CHECK-ERROR: error: invalid operand for instruction
6013 // CHECK-ERROR: frintp v13.4h, v21.4h
6015 // CHECK-ERROR: error: invalid operand for instruction
6016 // CHECK-ERROR: frintm v0.16b, v31.16b
6018 // CHECK-ERROR: error: invalid operand for instruction
6019 // CHECK-ERROR: frintm v2.8h, v4.8h
6021 // CHECK-ERROR: error: invalid operand for instruction
6022 // CHECK-ERROR: frintm v1.8b, v9.8b
6024 // CHECK-ERROR: error: invalid operand for instruction
6025 // CHECK-ERROR: frintm v13.4h, v21.4h
6027 // CHECK-ERROR: error: invalid operand for instruction
6028 // CHECK-ERROR: frintx v0.16b, v31.16b
6030 // CHECK-ERROR: error: invalid operand for instruction
6031 // CHECK-ERROR: frintx v2.8h, v4.8h
6033 // CHECK-ERROR: error: invalid operand for instruction
6034 // CHECK-ERROR: frintx v1.8b, v9.8b
6036 // CHECK-ERROR: error: invalid operand for instruction
6037 // CHECK-ERROR: frintx v13.4h, v21.4h
6039 // CHECK-ERROR: error: invalid operand for instruction
6040 // CHECK-ERROR: frintz v0.16b, v31.16b
6042 // CHECK-ERROR: error: invalid operand for instruction
6043 // CHECK-ERROR: frintz v2.8h, v4.8h
6045 // CHECK-ERROR: error: invalid operand for instruction
6046 // CHECK-ERROR: frintz v1.8b, v9.8b
6048 // CHECK-ERROR: error: invalid operand for instruction
6049 // CHECK-ERROR: frintz v13.4h, v21.4h
6051 // CHECK-ERROR: error: invalid operand for instruction
6052 // CHECK-ERROR: frinti v0.16b, v31.16b
6054 // CHECK-ERROR: error: invalid operand for instruction
6055 // CHECK-ERROR: frinti v2.8h, v4.8h
6057 // CHECK-ERROR: error: invalid operand for instruction
6058 // CHECK-ERROR: frinti v1.8b, v9.8b
6060 // CHECK-ERROR: error: invalid operand for instruction
6061 // CHECK-ERROR: frinti v13.4h, v21.4h
6063 // CHECK-ERROR: error: invalid operand for instruction
6064 // CHECK-ERROR: fcvtns v0.16b, v31.16b
6066 // CHECK-ERROR: error: invalid operand for instruction
6067 // CHECK-ERROR: fcvtns v2.8h, v4.8h
6069 // CHECK-ERROR: error: invalid operand for instruction
6070 // CHECK-ERROR: fcvtns v1.8b, v9.8b
6072 // CHECK-ERROR: error: invalid operand for instruction
6073 // CHECK-ERROR: fcvtns v13.4h, v21.4h
6075 // CHECK-ERROR: error: invalid operand for instruction
6076 // CHECK-ERROR: fcvtnu v0.16b, v31.16b
6078 // CHECK-ERROR: error: invalid operand for instruction
6079 // CHECK-ERROR: fcvtnu v2.8h, v4.8h
6081 // CHECK-ERROR: error: invalid operand for instruction
6082 // CHECK-ERROR: fcvtnu v1.8b, v9.8b
6084 // CHECK-ERROR: error: invalid operand for instruction
6085 // CHECK-ERROR: fcvtnu v13.4h, v21.4h
6087 // CHECK-ERROR: error: invalid operand for instruction
6088 // CHECK-ERROR: fcvtps v0.16b, v31.16b
6090 // CHECK-ERROR: error: invalid operand for instruction
6091 // CHECK-ERROR: fcvtps v2.8h, v4.8h
6093 // CHECK-ERROR: error: invalid operand for instruction
6094 // CHECK-ERROR: fcvtps v1.8b, v9.8b
6096 // CHECK-ERROR: error: invalid operand for instruction
6097 // CHECK-ERROR: fcvtps v13.4h, v21.4h
6099 // CHECK-ERROR: error: invalid operand for instruction
6100 // CHECK-ERROR: fcvtpu v0.16b, v31.16b
6102 // CHECK-ERROR: error: invalid operand for instruction
6103 // CHECK-ERROR: fcvtpu v2.8h, v4.8h
6105 // CHECK-ERROR: error: invalid operand for instruction
6106 // CHECK-ERROR: fcvtpu v1.8b, v9.8b
6108 // CHECK-ERROR: error: invalid operand for instruction
6109 // CHECK-ERROR: fcvtpu v13.4h, v21.4h
6111 // CHECK-ERROR: error: invalid operand for instruction
6112 // CHECK-ERROR: fcvtms v0.16b, v31.16b
6114 // CHECK-ERROR: error: invalid operand for instruction
6115 // CHECK-ERROR: fcvtms v2.8h, v4.8h
6117 // CHECK-ERROR: error: invalid operand for instruction
6118 // CHECK-ERROR: fcvtms v1.8b, v9.8b
6120 // CHECK-ERROR: error: invalid operand for instruction
6121 // CHECK-ERROR: fcvtms v13.4h, v21.4h
6123 // CHECK-ERROR: error: invalid operand for instruction
6124 // CHECK-ERROR: fcvtmu v0.16b, v31.16b
6126 // CHECK-ERROR: error: invalid operand for instruction
6127 // CHECK-ERROR: fcvtmu v2.8h, v4.8h
6129 // CHECK-ERROR: error: invalid operand for instruction
6130 // CHECK-ERROR: fcvtmu v1.8b, v9.8b
6132 // CHECK-ERROR: error: invalid operand for instruction
6133 // CHECK-ERROR: fcvtmu v13.4h, v21.4h
6135 // CHECK-ERROR: error: invalid operand for instruction
6136 // CHECK-ERROR: fcvtzs v0.16b, v31.16b
6138 // CHECK-ERROR: error: invalid operand for instruction
6139 // CHECK-ERROR: fcvtzs v2.8h, v4.8h
6141 // CHECK-ERROR: error: invalid operand for instruction
6142 // CHECK-ERROR: fcvtzs v1.8b, v9.8b
6144 // CHECK-ERROR: error: invalid operand for instruction
6145 // CHECK-ERROR: fcvtzs v13.4h, v21.4h
6147 // CHECK-ERROR: error: invalid operand for instruction
6148 // CHECK-ERROR: fcvtzu v0.16b, v31.16b
6150 // CHECK-ERROR: error: invalid operand for instruction
6151 // CHECK-ERROR: fcvtzu v2.8h, v4.8h
6153 // CHECK-ERROR: error: invalid operand for instruction
6154 // CHECK-ERROR: fcvtzu v1.8b, v9.8b
6156 // CHECK-ERROR: error: invalid operand for instruction
6157 // CHECK-ERROR: fcvtzu v13.4h, v21.4h
6159 // CHECK-ERROR: error: invalid operand for instruction
6160 // CHECK-ERROR: fcvtas v0.16b, v31.16b
6162 // CHECK-ERROR: error: invalid operand for instruction
6163 // CHECK-ERROR: fcvtas v2.8h, v4.8h
6165 // CHECK-ERROR: error: invalid operand for instruction
6166 // CHECK-ERROR: fcvtas v1.8b, v9.8b
6168 // CHECK-ERROR: error: invalid operand for instruction
6169 // CHECK-ERROR: fcvtas v13.4h, v21.4h
6171 // CHECK-ERROR: error: invalid operand for instruction
6172 // CHECK-ERROR: fcvtau v0.16b, v31.16b
6174 // CHECK-ERROR: error: invalid operand for instruction
6175 // CHECK-ERROR: fcvtau v2.8h, v4.8h
6177 // CHECK-ERROR: error: invalid operand for instruction
6178 // CHECK-ERROR: fcvtau v1.8b, v9.8b
6180 // CHECK-ERROR: error: invalid operand for instruction
6181 // CHECK-ERROR: fcvtau v13.4h, v21.4h
6183 // CHECK-ERROR: error: invalid operand for instruction
6184 // CHECK-ERROR: urecpe v0.16b, v31.16b
6186 // CHECK-ERROR: error: invalid operand for instruction
6187 // CHECK-ERROR: urecpe v2.8h, v4.8h
6189 // CHECK-ERROR: error: invalid operand for instruction
6190 // CHECK-ERROR: urecpe v1.8b, v9.8b
6192 // CHECK-ERROR: error: invalid operand for instruction
6193 // CHECK-ERROR: urecpe v13.4h, v21.4h
6195 // CHECK-ERROR: error: invalid operand for instruction
6196 // CHECK-ERROR: urecpe v1.2d, v9.2d
6198 // CHECK-ERROR: error: invalid operand for instruction
6199 // CHECK-ERROR: ursqrte v0.16b, v31.16b
6201 // CHECK-ERROR: error: invalid operand for instruction
6202 // CHECK-ERROR: ursqrte v2.8h, v4.8h
6204 // CHECK-ERROR: error: invalid operand for instruction
6205 // CHECK-ERROR: ursqrte v1.8b, v9.8b
6207 // CHECK-ERROR: error: invalid operand for instruction
6208 // CHECK-ERROR: ursqrte v13.4h, v21.4h
6210 // CHECK-ERROR: error: invalid operand for instruction
6211 // CHECK-ERROR: ursqrte v1.2d, v9.2d
6213 // CHECK-ERROR: error: invalid operand for instruction
6214 // CHECK-ERROR: scvtf v0.16b, v31.16b
6216 // CHECK-ERROR: error: invalid operand for instruction
6217 // CHECK-ERROR: scvtf v2.8h, v4.8h
6219 // CHECK-ERROR: error: invalid operand for instruction
6220 // CHECK-ERROR: scvtf v1.8b, v9.8b
6222 // CHECK-ERROR: error: invalid operand for instruction
6223 // CHECK-ERROR: scvtf v13.4h, v21.4h
6225 // CHECK-ERROR: error: invalid operand for instruction
6226 // CHECK-ERROR: ucvtf v0.16b, v31.16b
6228 // CHECK-ERROR: error: invalid operand for instruction
6229 // CHECK-ERROR: ucvtf v2.8h, v4.8h
6231 // CHECK-ERROR: error: invalid operand for instruction
6232 // CHECK-ERROR: ucvtf v1.8b, v9.8b
6234 // CHECK-ERROR: error: invalid operand for instruction
6235 // CHECK-ERROR: ucvtf v13.4h, v21.4h
6237 // CHECK-ERROR: error: invalid operand for instruction
6238 // CHECK-ERROR: frecpe v0.16b, v31.16b
6240 // CHECK-ERROR: error: invalid operand for instruction
6241 // CHECK-ERROR: frecpe v2.8h, v4.8h
6243 // CHECK-ERROR: error: invalid operand for instruction
6244 // CHECK-ERROR: frecpe v1.8b, v9.8b
6246 // CHECK-ERROR: error: invalid operand for instruction
6247 // CHECK-ERROR: frecpe v13.4h, v21.4h
6249 // CHECK-ERROR: error: invalid operand for instruction
6250 // CHECK-ERROR: frsqrte v0.16b, v31.16b
6252 // CHECK-ERROR: error: invalid operand for instruction
6253 // CHECK-ERROR: frsqrte v2.8h, v4.8h
6255 // CHECK-ERROR: error: invalid operand for instruction
6256 // CHECK-ERROR: frsqrte v1.8b, v9.8b
6258 // CHECK-ERROR: error: invalid operand for instruction
6259 // CHECK-ERROR: frsqrte v13.4h, v21.4h
6261 // CHECK-ERROR: error: invalid operand for instruction
6262 // CHECK-ERROR: fsqrt v0.16b, v31.16b
6264 // CHECK-ERROR: error: invalid operand for instruction
6265 // CHECK-ERROR: fsqrt v2.8h, v4.8h
6267 // CHECK-ERROR: error: invalid operand for instruction
6268 // CHECK-ERROR: fsqrt v1.8b, v9.8b
6270 // CHECK-ERROR: error: invalid operand for instruction
6271 // CHECK-ERROR: fsqrt v13.4h, v21.4h
6274 //----------------------------------------------------------------------
6275 // Scalar Floating-point Convert To Signed Fixed-point (Immediate)
6276 //----------------------------------------------------------------------
6279 fcvtzs d21, d12, #65
6282 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
6283 // CHECK-ERROR: fcvtzs s21, s12, #0
6285 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
6286 // CHECK-ERROR: fcvtzs d21, d12, #65
6288 // CHECK-ERROR: error: invalid operand for instruction
6289 // CHECK-ERROR: fcvtzs s21, d12, #1
6292 //----------------------------------------------------------------------
6293 // Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
6294 //----------------------------------------------------------------------
6296 fcvtzu s21, s12, #33
6300 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
6301 // CHECK-ERROR: fcvtzu s21, s12, #33
6303 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
6304 // CHECK-ERROR: fcvtzu d21, d12, #0
6306 // CHECK-ERROR: error: invalid operand for instruction
6307 // CHECK-ERROR: fcvtzu s21, d12, #1
6310 //----------------------------------------------------------------------
6311 // Scalar Unsigned Saturating Extract Narrow
6312 //----------------------------------------------------------------------
6321 // CHECK: error: invalid operand for instruction
6322 // CHECK: aese v0.8h, v1.8h
6324 // CHECK: error: invalid operand for instruction
6325 // CHECK: aese v0.4s, v1.4s
6327 // CHECK: error: invalid operand for instruction
6328 // CHECK: aese v0.2d, v1.2d
6330 // CHECK: error: invalid operand for instruction
6331 // CHECK: aesd v0.8h, v1.8h
6333 // CHECK: error: invalid operand for instruction
6334 // CHECK: aesmc v0.8h, v1.8h
6336 // CHECK: error: invalid operand for instruction
6337 // CHECK: aesimc v0.8h, v1.8h
6344 sha1su1 v0.16b, v1.16b
6345 sha1su1 v0.8h, v1.8h
6346 sha1su1 v0.2d, v1.2d
6347 sha256su0 v0.16b, v1.16b
6349 // CHECK: error: invalid operand for instruction
6350 // CHECK: sha1h b0, b1
6352 // CHECK: error: invalid operand for instruction
6353 // CHECK: sha1h h0, h1
6355 // CHECK: error: invalid operand for instruction
6356 // CHECK: sha1h d0, d1
6358 // CHECK: error: invalid operand for instruction
6359 // CHECK: sha1h q0, q1
6361 // CHECK: error: invalid operand for instruction
6362 // CHECK: sha1su1 v0.16b, v1.16b
6364 // CHECK: error: invalid operand for instruction
6365 // CHECK: sha1su1 v0.8h, v1.8h
6367 // CHECK: error: invalid operand for instruction
6368 // CHECK: sha1su1 v0.2d, v1.2d
6370 // CHECK: error: invalid operand for instruction
6371 // CHECK: sha256su0 v0.16b, v1.16b
6377 sha1su0 v0.16b, v1.16b, v2.16b
6378 sha1su0 v0.8h, v1.8h, v2.8h
6379 sha1su0 v0.2d, v1.2d, v2.2d
6381 sha256h v0.4s, v1.4s, v2.4s
6383 sha256su1 v0.16b, v1.16b, v2.16b
6385 // CHECK: error: invalid operand for instruction
6386 // CHECK: sha1c q0, q1, v2.4s
6388 // CHECK: error: invalid operand for instruction
6389 // CHECK: sha1p q0, q1, v2.4s
6391 // CHECK: error: invalid operand for instruction
6392 // CHECK: sha1m q0, q1, v2.4s
6394 // CHECK: error: invalid operand for instruction
6395 // CHECK: sha1su0 v0.16b, v1.16b, v2.16b
6397 // CHECK: error: invalid operand for instruction
6398 // CHECK: sha1su0 v0.8h, v1.8h, v2.8h
6400 // CHECK: error: invalid operand for instruction
6401 // CHECK: sha1su0 v0.2d, v1.2d, v2.2d
6403 // CHECK: error: too few operands for instruction
6404 // CHECK: sha256h q0, q1, q2
6406 // CHECK: error: invalid operand for instruction
6407 // CHECK: sha256h v0.4s, v1.4s, v2.4s
6409 // CHECK: error: too few operands for instruction
6410 // CHECK: sha256h2 q0, q1, q2
6412 // CHECK: error: invalid operand for instruction
6413 // CHECK: sha256su1 v0.16b, v1.16b, v2.16b
6416 //----------------------------------------------------------------------
6418 //----------------------------------------------------------------------
6420 ext v0.8b, v1.8b, v2.4h, #0x3
6421 ext v0.4h, v1.4h, v2.4h, #0x3
6422 ext v0.2s, v1.2s, v2.2s, #0x1
6423 ext v0.1d, v1.1d, v2.1d, #0x0
6425 // CHECK-ERROR: error: invalid operand for instruction
6426 // CHECK-ERROR: ext v0.8b, v1.8b, v2.4h, #0x3
6428 // CHECK-ERROR: error: invalid operand for instruction
6429 // CHECK-ERROR: ext v0.4h, v1.4h, v2.4h, #0x3
6431 // CHECK-ERROR: error: invalid operand for instruction
6432 // CHECK-ERROR: ext v0.2s, v1.2s, v2.2s, #0x1
6434 // CHECK-ERROR: error: invalid operand for instruction
6435 // CHECK-ERROR: ext v0.1d, v1.1d, v2.1d, #0x0
6438 ext v0.16b, v1.16b, v2.8h, #0x3
6439 ext v0.8h, v1.8h, v2.8h, #0x3
6440 ext v0.4s, v1.4s, v2.4s, #0x1
6441 ext v0.2d, v1.2d, v2.2d, #0x0
6443 // CHECK-ERROR: error: invalid operand for instruction
6444 // CHECK-ERROR: ext v0.16b, v1.16b, v2.8h, #0x3
6446 // CHECK-ERROR: error: invalid operand for instruction
6447 // CHECK-ERROR: ext v0.8h, v1.8h, v2.8h, #0x3
6449 // CHECK-ERROR: error: invalid operand for instruction
6450 // CHECK-ERROR: ext v0.4s, v1.4s, v2.4s, #0x1
6452 // CHECK-ERROR: error: invalid operand for instruction
6453 // CHECK-ERROR: ext v0.2d, v1.2d, v2.2d, #0x0
6457 //----------------------------------------------------------------------
6458 // Permutation with 3 vectors
6459 //----------------------------------------------------------------------
6461 uzp1 v0.16b, v1.8b, v2.8b
6462 uzp1 v0.8b, v1.4b, v2.4b
6463 uzp1 v0.8h, v1.4h, v2.4h
6464 uzp1 v0.4h, v1.2h, v2.2h
6465 uzp1 v0.4s, v1.2s, v2.2s
6466 uzp1 v0.2s, v1.1s, v2.1s
6467 uzp1 v0.2d, v1.1d, v2.1d
6468 uzp1 v0.1d, v1.1d, v2.1d
6470 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
6471 // CHECK-ERROR uzp1 v0.16b, v1.8b, v2.8b
6473 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
6474 // CHECK-ERROR uzp1 v0.8b, v1.4b, v2.4b
6476 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
6477 // CHECK-ERROR uzp1 v0.8h, v1.4h, v2.4h
6479 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
6480 // CHECK-ERROR uzp1 v0.4h, v1.2h, v2.2h
6482 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
6483 // CHECK-ERROR uzp1 v0.4s, v1.2s, v2.2s
6485 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
6486 // CHECK-ERROR uzp1 v0.2s, v1.1s, v2.1s
6488 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
6489 // CHECK-ERROR uzp1 v0.2d, v1.1d, v2.1d
6491 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
6492 // CHECK-ERROR uzp1 v0.1d, v1.1d, v2.1d
6495 uzp2 v0.16b, v1.8b, v2.8b
6496 uzp2 v0.8b, v1.4b, v2.4b
6497 uzp2 v0.8h, v1.4h, v2.4h
6498 uzp2 v0.4h, v1.2h, v2.2h
6499 uzp2 v0.4s, v1.2s, v2.2s
6500 uzp2 v0.2s, v1.1s, v2.1s
6501 uzp2 v0.2d, v1.1d, v2.1d
6502 uzp2 v0.1d, v1.1d, v2.1d
6504 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
6505 // CHECK-ERROR uzp2 v0.16b, v1.8b, v2.8b
6507 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
6508 // CHECK-ERROR uzp2 v0.8b, v1.4b, v2.4b
6510 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
6511 // CHECK-ERROR uzp2 v0.8h, v1.4h, v2.4h
6513 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
6514 // CHECK-ERROR uzp2 v0.4h, v1.2h, v2.2h
6516 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
6517 // CHECK-ERROR uzp2 v0.4s, v1.2s, v2.2s
6519 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
6520 // CHECK-ERROR uzp2 v0.2s, v1.1s, v2.1s
6522 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
6523 // CHECK-ERROR uzp2 v0.2d, v1.1d, v2.1d
6525 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
6526 // CHECK-ERROR uzp2 v0.1d, v1.1d, v2.1d
6529 zip1 v0.16b, v1.8b, v2.8b
6530 zip1 v0.8b, v1.4b, v2.4b
6531 zip1 v0.8h, v1.4h, v2.4h
6532 zip1 v0.4h, v1.2h, v2.2h
6533 zip1 v0.4s, v1.2s, v2.2s
6534 zip1 v0.2s, v1.1s, v2.1s
6535 zip1 v0.2d, v1.1d, v2.1d
6536 zip1 v0.1d, v1.1d, v2.1d
6538 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
6539 // CHECK-ERROR zip1 v0.16b, v1.8b, v2.8b
6541 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
6542 // CHECK-ERROR zip1 v0.8b, v1.4b, v2.4b
6544 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
6545 // CHECK-ERROR zip1 v0.8h, v1.4h, v2.4h
6547 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
6548 // CHECK-ERROR zip1 v0.4h, v1.2h, v2.2h
6550 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
6551 // CHECK-ERROR zip1 v0.4s, v1.2s, v2.2s
6553 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
6554 // CHECK-ERROR zip1 v0.2s, v1.1s, v2.1s
6556 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
6557 // CHECK-ERROR zip1 v0.2d, v1.1d, v2.1d
6559 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
6560 // CHECK-ERROR zip1 v0.1d, v1.1d, v2.1d
6563 zip2 v0.16b, v1.8b, v2.8b
6564 zip2 v0.8b, v1.4b, v2.4b
6565 zip2 v0.8h, v1.4h, v2.4h
6566 zip2 v0.4h, v1.2h, v2.2h
6567 zip2 v0.4s, v1.2s, v2.2s
6568 zip2 v0.2s, v1.1s, v2.1s
6569 zip2 v0.2d, v1.1d, v2.1d
6570 zip2 v0.1d, v1.1d, v2.1d
6572 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
6573 // CHECK-ERROR zip2 v0.16b, v1.8b, v2.8b
6575 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
6576 // CHECK-ERROR zip2 v0.8b, v1.4b, v2.4b
6578 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
6579 // CHECK-ERROR zip2 v0.8h, v1.4h, v2.4h
6581 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
6582 // CHECK-ERROR zip2 v0.4h, v1.2h, v2.2h
6584 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
6585 // CHECK-ERROR zip2 v0.4s, v1.2s, v2.2s
6587 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
6588 // CHECK-ERROR zip2 v0.2s, v1.1s, v2.1s
6590 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
6591 // CHECK-ERROR zip2 v0.2d, v1.1d, v2.1d
6593 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
6594 // CHECK-ERROR zip2 v0.1d, v1.1d, v2.1d
6597 trn1 v0.16b, v1.8b, v2.8b
6598 trn1 v0.8b, v1.4b, v2.4b
6599 trn1 v0.8h, v1.4h, v2.4h
6600 trn1 v0.4h, v1.2h, v2.2h
6601 trn1 v0.4s, v1.2s, v2.2s
6602 trn1 v0.2s, v1.1s, v2.1s
6603 trn1 v0.2d, v1.1d, v2.1d
6604 trn1 v0.1d, v1.1d, v2.1d
6606 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
6607 // CHECK-ERROR trn1 v0.16b, v1.8b, v2.8b
6609 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
6610 // CHECK-ERROR trn1 v0.8b, v1.4b, v2.4b
6612 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
6613 // CHECK-ERROR trn1 v0.8h, v1.4h, v2.4h
6615 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
6616 // CHECK-ERROR trn1 v0.4h, v1.2h, v2.2h
6618 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
6619 // CHECK-ERROR trn1 v0.4s, v1.2s, v2.2s
6621 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
6622 // CHECK-ERROR trn1 v0.2s, v1.1s, v2.1s
6624 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
6625 // CHECK-ERROR trn1 v0.2d, v1.1d, v2.1d
6627 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
6628 // CHECK-ERROR trn1 v0.1d, v1.1d, v2.1d
6631 trn2 v0.16b, v1.8b, v2.8b
6632 trn2 v0.8b, v1.4b, v2.4b
6633 trn2 v0.8h, v1.4h, v2.4h
6634 trn2 v0.4h, v1.2h, v2.2h
6635 trn2 v0.4s, v1.2s, v2.2s
6636 trn2 v0.2s, v1.1s, v2.1s
6637 trn2 v0.2d, v1.1d, v2.1d
6638 trn2 v0.1d, v1.1d, v2.1d
6640 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
6641 // CHECK-ERROR trn2 v0.16b, v1.8b, v2.8b
6643 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
6644 // CHECK-ERROR trn2 v0.8b, v1.4b, v2.4b
6646 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
6647 // CHECK-ERROR trn2 v0.8h, v1.4h, v2.4h
6649 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
6650 // CHECK-ERROR trn2 v0.4h, v1.2h, v2.2h
6652 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
6653 // CHECK-ERROR trn2 v0.4s, v1.2s, v2.2s
6655 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
6656 // CHECK-ERROR trn2 v0.2s, v1.1s, v2.1s
6658 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
6659 // CHECK-ERROR trn2 v0.2d, v1.1d, v2.1d
6661 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
6662 // CHECK-ERROR trn2 v0.1d, v1.1d, v2.1d
6665 //----------------------------------------------------------------------
6666 // Permutation with 3 vectors
6667 //----------------------------------------------------------------------
6669 uzp1 v0.16b, v1.8b, v2.8b
6670 uzp1 v0.8b, v1.4b, v2.4b
6671 uzp1 v0.8h, v1.4h, v2.4h
6672 uzp1 v0.4h, v1.2h, v2.2h
6673 uzp1 v0.4s, v1.2s, v2.2s
6674 uzp1 v0.2s, v1.1s, v2.1s
6675 uzp1 v0.2d, v1.1d, v2.1d
6676 uzp1 v0.1d, v1.1d, v2.1d
6678 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
6679 // CHECK-ERROR uzp1 v0.16b, v1.8b, v2.8b
6681 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
6682 // CHECK-ERROR uzp1 v0.8b, v1.4b, v2.4b
6684 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
6685 // CHECK-ERROR uzp1 v0.8h, v1.4h, v2.4h
6687 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
6688 // CHECK-ERROR uzp1 v0.4h, v1.2h, v2.2h
6690 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
6691 // CHECK-ERROR uzp1 v0.4s, v1.2s, v2.2s
6693 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
6694 // CHECK-ERROR uzp1 v0.2s, v1.1s, v2.1s
6696 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
6697 // CHECK-ERROR uzp1 v0.2d, v1.1d, v2.1d
6699 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
6700 // CHECK-ERROR uzp1 v0.1d, v1.1d, v2.1d
6703 uzp2 v0.16b, v1.8b, v2.8b
6704 uzp2 v0.8b, v1.4b, v2.4b
6705 uzp2 v0.8h, v1.4h, v2.4h
6706 uzp2 v0.4h, v1.2h, v2.2h
6707 uzp2 v0.4s, v1.2s, v2.2s
6708 uzp2 v0.2s, v1.1s, v2.1s
6709 uzp2 v0.2d, v1.1d, v2.1d
6710 uzp2 v0.1d, v1.1d, v2.1d
6712 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
6713 // CHECK-ERROR uzp2 v0.16b, v1.8b, v2.8b
6715 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
6716 // CHECK-ERROR uzp2 v0.8b, v1.4b, v2.4b
6718 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
6719 // CHECK-ERROR uzp2 v0.8h, v1.4h, v2.4h
6721 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
6722 // CHECK-ERROR uzp2 v0.4h, v1.2h, v2.2h
6724 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
6725 // CHECK-ERROR uzp2 v0.4s, v1.2s, v2.2s
6727 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
6728 // CHECK-ERROR uzp2 v0.2s, v1.1s, v2.1s
6730 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
6731 // CHECK-ERROR uzp2 v0.2d, v1.1d, v2.1d
6733 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
6734 // CHECK-ERROR uzp2 v0.1d, v1.1d, v2.1d
6737 zip1 v0.16b, v1.8b, v2.8b
6738 zip1 v0.8b, v1.4b, v2.4b
6739 zip1 v0.8h, v1.4h, v2.4h
6740 zip1 v0.4h, v1.2h, v2.2h
6741 zip1 v0.4s, v1.2s, v2.2s
6742 zip1 v0.2s, v1.1s, v2.1s
6743 zip1 v0.2d, v1.1d, v2.1d
6744 zip1 v0.1d, v1.1d, v2.1d
6746 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
6747 // CHECK-ERROR zip1 v0.16b, v1.8b, v2.8b
6749 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
6750 // CHECK-ERROR zip1 v0.8b, v1.4b, v2.4b
6752 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
6753 // CHECK-ERROR zip1 v0.8h, v1.4h, v2.4h
6755 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
6756 // CHECK-ERROR zip1 v0.4h, v1.2h, v2.2h
6758 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
6759 // CHECK-ERROR zip1 v0.4s, v1.2s, v2.2s
6761 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
6762 // CHECK-ERROR zip1 v0.2s, v1.1s, v2.1s
6764 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
6765 // CHECK-ERROR zip1 v0.2d, v1.1d, v2.1d
6767 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
6768 // CHECK-ERROR zip1 v0.1d, v1.1d, v2.1d
6771 zip2 v0.16b, v1.8b, v2.8b
6772 zip2 v0.8b, v1.4b, v2.4b
6773 zip2 v0.8h, v1.4h, v2.4h
6774 zip2 v0.4h, v1.2h, v2.2h
6775 zip2 v0.4s, v1.2s, v2.2s
6776 zip2 v0.2s, v1.1s, v2.1s
6777 zip2 v0.2d, v1.1d, v2.1d
6778 zip2 v0.1d, v1.1d, v2.1d
6780 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
6781 // CHECK-ERROR zip2 v0.16b, v1.8b, v2.8b
6783 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
6784 // CHECK-ERROR zip2 v0.8b, v1.4b, v2.4b
6786 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
6787 // CHECK-ERROR zip2 v0.8h, v1.4h, v2.4h
6789 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
6790 // CHECK-ERROR zip2 v0.4h, v1.2h, v2.2h
6792 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
6793 // CHECK-ERROR zip2 v0.4s, v1.2s, v2.2s
6795 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
6796 // CHECK-ERROR zip2 v0.2s, v1.1s, v2.1s
6798 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
6799 // CHECK-ERROR zip2 v0.2d, v1.1d, v2.1d
6801 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
6802 // CHECK-ERROR zip2 v0.1d, v1.1d, v2.1d
6805 trn1 v0.16b, v1.8b, v2.8b
6806 trn1 v0.8b, v1.4b, v2.4b
6807 trn1 v0.8h, v1.4h, v2.4h
6808 trn1 v0.4h, v1.2h, v2.2h
6809 trn1 v0.4s, v1.2s, v2.2s
6810 trn1 v0.2s, v1.1s, v2.1s
6811 trn1 v0.2d, v1.1d, v2.1d
6812 trn1 v0.1d, v1.1d, v2.1d
6814 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
6815 // CHECK-ERROR trn1 v0.16b, v1.8b, v2.8b
6817 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
6818 // CHECK-ERROR trn1 v0.8b, v1.4b, v2.4b
6820 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
6821 // CHECK-ERROR trn1 v0.8h, v1.4h, v2.4h
6823 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
6824 // CHECK-ERROR trn1 v0.4h, v1.2h, v2.2h
6826 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
6827 // CHECK-ERROR trn1 v0.4s, v1.2s, v2.2s
6829 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
6830 // CHECK-ERROR trn1 v0.2s, v1.1s, v2.1s
6832 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
6833 // CHECK-ERROR trn1 v0.2d, v1.1d, v2.1d
6835 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
6836 // CHECK-ERROR trn1 v0.1d, v1.1d, v2.1d
6839 trn2 v0.16b, v1.8b, v2.8b
6840 trn2 v0.8b, v1.4b, v2.4b
6841 trn2 v0.8h, v1.4h, v2.4h
6842 trn2 v0.4h, v1.2h, v2.2h
6843 trn2 v0.4s, v1.2s, v2.2s
6844 trn2 v0.2s, v1.1s, v2.1s
6845 trn2 v0.2d, v1.1d, v2.1d
6846 trn2 v0.1d, v1.1d, v2.1d
6848 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
6849 // CHECK-ERROR trn2 v0.16b, v1.8b, v2.8b
6851 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
6852 // CHECK-ERROR trn2 v0.8b, v1.4b, v2.4b
6854 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
6855 // CHECK-ERROR trn2 v0.8h, v1.4h, v2.4h
6857 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
6858 // CHECK-ERROR trn2 v0.4h, v1.2h, v2.2h
6860 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
6861 // CHECK-ERROR trn2 v0.4s, v1.2s, v2.2s
6863 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
6864 // CHECK-ERROR trn2 v0.2s, v1.1s, v2.1s
6866 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
6867 // CHECK-ERROR trn2 v0.2d, v1.1d, v2.1d
6869 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
6870 // CHECK-ERROR trn2 v0.1d, v1.1d, v2.1d
6873 //----------------------------------------------------------------------
6874 // Floating Point multiply (scalar, by element)
6875 //----------------------------------------------------------------------
6876 // mismatched and invalid vector types
6877 fmul s0, s1, v1.h[0]
6878 fmul h0, h1, v1.s[0]
6880 fmul s2, s29, v10.s[4]
6882 // CHECK-ERROR: error: invalid operand for instruction
6883 // CHECK-ERROR: fmul s0, s1, v1.h[0]
6885 // CHECK-ERROR: error: invalid operand for instruction
6886 // CHECK-ERROR: fmul h0, h1, v1.s[0]
6888 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6889 // CHECK-ERROR: fmul s2, s29, v10.s[4]
6892 //----------------------------------------------------------------------
6893 // Floating Point multiply extended (scalar, by element)
6894 //----------------------------------------------------------------------
6895 // mismatched and invalid vector types
6896 fmulx d0, d1, v1.b[0]
6897 fmulx h0, h1, v1.d[0]
6899 fmulx d2, d29, v10.d[3]
6901 // CHECK-ERROR: error: invalid operand for instruction
6902 // CHECK-ERROR: fmulx d0, d1, v1.b[0]
6904 // CHECK-ERROR: error: invalid operand for instruction
6905 // CHECK-ERROR: fmulx h0, h1, v1.d[0]
6907 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6908 // CHECK-ERROR: fmulx d2, d29, v10.d[3]
6911 //----------------------------------------------------------------------
6912 // Floating Point fused multiply-add (scalar, by element)
6913 //----------------------------------------------------------------------
6914 // mismatched and invalid vector types
6915 fmla b0, b1, v1.b[0]
6916 fmla d30, s11, v1.d[1]
6918 fmla s16, s22, v16.s[5]
6920 // CHECK-ERROR: error: invalid operand for instruction
6921 // CHECK-ERROR: fmla b0, b1, v1.b[0]
6923 // CHECK-ERROR: error: invalid operand for instruction
6924 // CHECK-ERROR: fmla d30, s11, v1.d[1]
6926 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6927 // CHECK-ERROR: fmla s16, s22, v16.s[5]
6930 //----------------------------------------------------------------------
6931 // Floating Point fused multiply-subtract (scalar, by element)
6932 //----------------------------------------------------------------------
6933 // mismatched and invalid vector types
6934 fmls s29, h10, v28.s[1]
6935 fmls h7, h17, v26.s[2]
6937 fmls d16, d22, v16.d[-1]
6939 // CHECK-ERROR: error: invalid operand for instruction
6940 // CHECK-ERROR: fmls s29, h10, v28.s[1]
6942 // CHECK-ERROR: error: invalid operand for instruction
6943 // CHECK-ERROR: fmls h7, h17, v26.s[2]
6945 // CHECK-ARM64-ERROR: error: vector lane must be an integer in range [0, 1]
6946 // CHECK-ERROR: fmls d16, d22, v16.d[-1]
6949 //----------------------------------------------------------------------
6950 // Scalar Signed saturating doubling multiply-add long
6951 // (scalar, by element)
6952 //----------------------------------------------------------------------
6953 // mismatched and invalid vector types
6954 sqdmlal s0, h0, v0.s[0]
6955 sqdmlal s8, s9, v14.s[1]
6957 sqdmlal d4, s5, v1.s[5]
6958 // invalid vector index
6959 sqdmlal s0, h0, v17.h[0]
6961 // CHECK-ERROR: error: invalid operand for instruction
6962 // CHECK-ERROR: sqdmlal s0, h0, v0.s[0]
6964 // CHECK-ERROR: error: invalid operand for instruction
6965 // CHECK-ERROR: sqdmlal s8, s9, v14.s[1]
6967 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6968 // CHECK-ERROR: sqdmlal d4, s5, v1.s[5]
6970 // CHECK-ERROR: error: invalid operand for instruction
6971 // CHECK-ERROR: sqdmlal s0, h0, v17.h[0]
6974 //----------------------------------------------------------------------
6975 // Scalar Signed saturating doubling multiply-subtract long
6976 // (scalar, by element)
6977 //----------------------------------------------------------------------
6978 // mismatched and invalid vector types
6979 sqdmlsl s1, h1, v1.d[0]
6980 sqdmlsl d1, h1, v13.s[0]
6982 sqdmlsl d1, s1, v13.s[4]
6983 // invalid vector index
6984 sqdmlsl s1, h1, v20.h[7]
6986 // CHECK-ERROR: error: invalid operand for instruction
6987 // CHECK-ERROR: sqdmlsl s1, h1, v1.d[0]
6989 // CHECK-ERROR: error: invalid operand for instruction
6990 // CHECK-ERROR: sqdmlsl d1, h1, v13.s[0]
6992 // CHECK-ARM64-ERROR: vector lane must be an integer in range
6993 // CHECK-ERROR: sqdmlsl d1, s1, v13.s[4]
6995 // CHECK-ERROR: error: invalid operand for instruction
6996 // CHECK-ERROR: sqdmlsl s1, h1, v20.h[7]
6999 //----------------------------------------------------------------------
7000 // Scalar Signed saturating doubling multiply long (scalar, by element)
7001 //----------------------------------------------------------------------
7002 // mismatched and invalid vector types
7004 // invalid vector index
7005 // mismatched and invalid vector types
7006 sqdmull s1, h1, v1.s[1]
7007 sqdmull s1, s1, v4.s[0]
7009 sqdmull s12, h17, v9.h[9]
7010 // invalid vector index
7011 sqdmull s1, h1, v16.h[5]
7013 // CHECK-ERROR: error: invalid operand for instruction
7014 // CHECK-ERROR: sqdmull s1, h1, v1.s[1]
7016 // CHECK-ERROR: error: invalid operand for instruction
7017 // CHECK-ERROR: sqdmull s1, s1, v4.s[0]
7019 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7020 // CHECK-ERROR: sqdmull s12, h17, v9.h[9]
7022 // CHECK-ERROR: error: invalid operand for instruction
7023 // CHECK-ERROR: sqdmull s1, h1, v16.h[5]
7026 //----------------------------------------------------------------------
7027 // Scalar Signed saturating doubling multiply returning
7028 // high half (scalar, by element)
7029 //----------------------------------------------------------------------
7030 // mismatched and invalid vector types
7031 sqdmulh h0, s1, v0.h[0]
7032 sqdmulh s25, s26, v27.h[3]
7034 sqdmulh s25, s26, v27.s[4]
7035 // invalid vector index
7036 sqdmulh s0, h1, v30.h[0]
7038 // CHECK-ERROR: error: invalid operand for instruction
7039 // CHECK-ERROR: sqdmulh h0, s1, v0.h[0]
7041 // CHECK-ERROR: error: invalid operand for instruction
7042 // CHECK-ERROR: sqdmulh s25, s26, v27.h[3]
7044 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7045 // CHECK-ERROR: sqdmulh s25, s26, v27.s[4]
7047 // CHECK-ERROR: error: invalid operand for instruction
7048 // CHECK-ERROR: sqdmulh s0, h1, v30.h[0]
7051 //----------------------------------------------------------------------
7052 // Scalar Signed saturating rounding doubling multiply
7053 // returning high half (scalar, by element)
7054 //----------------------------------------------------------------------
7055 // mismatched and invalid vector types
7056 sqrdmulh h31, h30, v14.s[2]
7057 sqrdmulh s5, h6, v7.s[2]
7059 sqrdmulh h31, h30, v14.h[9]
7060 // invalid vector index
7061 sqrdmulh h31, h30, v20.h[4]
7063 // CHECK-ERROR: error: invalid operand for instruction
7064 // CHECK-ERROR: sqrdmulh h31, h30, v14.s[2]
7066 // CHECK-ERROR: error: invalid operand for instruction
7067 // CHECK-ERROR: sqrdmulh s5, h6, v7.s[2]
7069 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7070 // CHECK-ERROR: sqrdmulh h31, h30, v14.h[9]
7072 // CHECK-ERROR: error: invalid operand for instruction
7073 // CHECK-ERROR: sqrdmulh h31, h30, v20.h[4]
7076 //----------------------------------------------------------------------
7077 // Scalar Duplicate element (scalar)
7078 //----------------------------------------------------------------------
7079 // mismatched and invalid vector types
7089 // CHECK-ERROR: error: invalid operand for instruction
7090 // CHECK-ERROR: dup b0, v1.d[0]
7092 // CHECK-ERROR: error: invalid operand for instruction
7093 // CHECK-ERROR: dup h0, v31.b[8]
7095 // CHECK-ERROR: error: invalid operand for instruction
7096 // CHECK-ERROR: dup s0, v2.h[4]
7098 // CHECK-ERROR: error: invalid operand for instruction
7099 // CHECK-ERROR: dup d0, v17.s[3]
7101 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7102 // CHECK-ERROR: dup d0, v17.d[4]
7104 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7105 // CHECK-ERROR: dup s0, v1.s[7]
7107 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7108 // CHECK-ERROR: dup h0, v31.h[16]
7110 // CHECK-ARM64-ERROR: vector lane must be an integer in range
7111 // CHECK-ERROR: dup b1, v3.b[16]
7114 //----------------------------------------------------------------------
7116 //----------------------------------------------------------------------
7118 tbl v0.8b, {v1.8b}, v2.8b
7119 tbl v0.8b, {v1.8b, v2.8b}, v2.8b
7120 tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7121 tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7122 tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7124 // CHECK-ERROR: error: invalid operand for instruction
7125 // CHECK-ERROR: tbl v0.8b, {v1.8b}, v2.8b
7127 // CHECK-ERROR: error: invalid operand for instruction
7128 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b}, v2.8b
7130 // CHECK-ERROR: error: invalid operand for instruction
7131 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7133 // CHECK-ERROR: error: invalid operand for instruction
7134 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7136 // CHECK-ERROR: error: invalid number of vectors
7137 // CHECK-ERROR: tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7140 tbx v0.8b, {v1.8b}, v2.8b
7141 tbx v0.8b, {v1.8b, v2.8b}, v2.8b
7142 tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7143 tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7144 tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7146 // CHECK-ERROR: error: invalid operand for instruction
7147 // CHECK-ERROR: tbx v0.8b, {v1.8b}, v2.8b
7149 // CHECK-ERROR: error: invalid operand for instruction
7150 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b}, v2.8b
7152 // CHECK-ERROR: error: invalid operand for instruction
7153 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
7155 // CHECK-ERROR: error: invalid operand for instruction
7156 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
7158 // CHECK-ERROR: error: invalid number of vectors
7159 // CHECK-ERROR: tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
7162 //----------------------------------------------------------------------
7163 // Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
7165 //----------------------------------------------------------------------
7169 // CHECK-ERROR: error: invalid operand for instruction
7170 // CHECK-ERROR: fcvtxn s0, s1
7173 //----------------------------------------------------------------------
7174 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
7175 // With Ties To Away
7176 //----------------------------------------------------------------------
7181 // CHECK-ERROR: error: invalid operand for instruction
7182 // CHECK-ERROR: fcvtas s0, d0
7184 // CHECK-ERROR: error: invalid operand for instruction
7185 // CHECK-ERROR: fcvtas d0, s0
7188 //----------------------------------------------------------------------
7189 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
7190 // Nearest With Ties To Away
7191 //----------------------------------------------------------------------
7196 // CHECK-ERROR: error: invalid operand for instruction
7197 // CHECK-ERROR: fcvtau s0, d0
7199 // CHECK-ERROR: error: invalid operand for instruction
7200 // CHECK-ERROR: fcvtau d0, s0
7203 //----------------------------------------------------------------------
7204 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
7206 //----------------------------------------------------------------------
7211 // CHECK-ERROR: error: invalid operand for instruction
7212 // CHECK-ERROR: fcvtms s0, d0
7214 // CHECK-ERROR: error: invalid operand for instruction
7215 // CHECK-ERROR: fcvtms d0, s0
7218 //----------------------------------------------------------------------
7219 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7221 //----------------------------------------------------------------------
7226 // CHECK-ERROR: error: invalid operand for instruction
7227 // CHECK-ERROR: fcvtmu s0, d0
7229 // CHECK-ERROR: error: invalid operand for instruction
7230 // CHECK-ERROR: fcvtmu d0, s0
7233 //----------------------------------------------------------------------
7234 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
7235 // With Ties To Even
7236 //----------------------------------------------------------------------
7241 // CHECK-ERROR: error: invalid operand for instruction
7242 // CHECK-ERROR: fcvtns s0, d0
7244 // CHECK-ERROR: error: invalid operand for instruction
7245 // CHECK-ERROR: fcvtns d0, s0
7248 //----------------------------------------------------------------------
7249 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
7250 // Nearest With Ties To Even
7251 //----------------------------------------------------------------------
7256 // CHECK-ERROR: error: invalid operand for instruction
7257 // CHECK-ERROR: fcvtnu s0, d0
7259 // CHECK-ERROR: error: invalid operand for instruction
7260 // CHECK-ERROR: fcvtnu d0, s0
7263 //----------------------------------------------------------------------
7264 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
7265 // Positive Infinity
7266 //----------------------------------------------------------------------
7271 // CHECK-ERROR: error: invalid operand for instruction
7272 // CHECK-ERROR: fcvtps s0, d0
7274 // CHECK-ERROR: error: invalid operand for instruction
7275 // CHECK-ERROR: fcvtps d0, s0
7278 //----------------------------------------------------------------------
7279 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7280 // Positive Infinity
7281 //----------------------------------------------------------------------
7286 // CHECK-ERROR: error: invalid operand for instruction
7287 // CHECK-ERROR: fcvtpu s0, d0
7289 // CHECK-ERROR: error: invalid operand for instruction
7290 // CHECK-ERROR: fcvtpu d0, s0
7293 //----------------------------------------------------------------------
7294 // Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
7295 //----------------------------------------------------------------------
7300 // CHECK-ERROR: error: invalid operand for instruction
7301 // CHECK-ERROR: fcvtzs s0, d0
7303 // CHECK-ERROR: error: invalid operand for instruction
7304 // CHECK-ERROR: fcvtzs d0, s0
7307 //----------------------------------------------------------------------
7308 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
7310 //----------------------------------------------------------------------
7315 // CHECK-ERROR: error: invalid operand for instruction
7316 // CHECK-ERROR: fcvtzu s0, d0
7318 // CHECK-ERROR: error: invalid operand for instruction
7319 // CHECK-ERROR: fcvtzu d0, s0
7322 //----------------------------------------------------------------------
7323 // Scalar Floating-point Absolute Difference
7324 //----------------------------------------------------------------------
7330 // CHECK-ERROR: error: invalid operand for instruction
7331 // CHECK-ERROR: fabd s29, d24, s20
7333 // CHECK-ERROR: error: invalid operand for instruction
7334 // CHECK-ERROR: fabd d29, s24, d20