1 # RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
3 #------------------------------------------------------------------------------
4 # Vector Integer Add/Sub
5 #------------------------------------------------------------------------------
6 # CHECK: add v31.8b, v31.8b, v31.8b
7 # CHECK: sub v0.2d, v0.2d, v0.2d
11 #------------------------------------------------------------------------------
12 # Vector Floating-Point Add/Sub
13 #------------------------------------------------------------------------------
15 # CHECK: fadd v0.4s, v0.4s, v0.4s
16 # CHECK: fsub v31.2s, v31.2s, v31.2s
20 #------------------------------------------------------------------------------
22 #------------------------------------------------------------------------------
23 # CHECK: mul v0.8b, v1.8b, v2.8b
26 #------------------------------------------------------------------------------
27 # Vector Floating-Point Mul/Div
28 #------------------------------------------------------------------------------
29 # CHECK: fmul v0.2s, v1.2s, v2.2s
30 # CHECK: fdiv v31.2s, v31.2s, v31.2s
34 #----------------------------------------------------------------------
35 # Vector Polynomial Multiply
36 #----------------------------------------------------------------------
37 # CHECK: pmul v0.8b, v15.8b, v16.8b
38 # CHECK: pmul v31.16b, v7.16b, v8.16b
42 #------------------------------------------------------------------------------
43 # Vector And, Orr, Eor, Orn, Bic
44 #------------------------------------------------------------------------------
45 # CHECK: and v2.8b, v2.8b, v2.8b
46 # CHECK: orr v31.16b, v31.16b, v30.16b
47 # CHECK: eor v0.16b, v1.16b, v2.16b
48 # CHECK: orn v9.16b, v10.16b, v11.16b
49 # CHECK: bic v31.8b, v30.8b, v29.8b
56 #------------------------------------------------------------------------------
57 # Vector Bsl, Bit, Bif
58 #------------------------------------------------------------------------------
59 # CHECK: bsl v0.8b, v1.8b, v2.8b
60 # CHECK: bit v31.16b, v31.16b, v31.16b
61 # CHECK: bif v0.16b, v1.16b, v2.16b
67 #------------------------------------------------------------------------------
68 # Vector Integer Multiply-accumulate and Multiply-subtract
69 #------------------------------------------------------------------------------
70 # CHECK: mla v0.8b, v1.8b, v2.8b
71 # CHECK: mls v31.4h, v31.4h, v31.4h
75 #------------------------------------------------------------------------------
76 # Vector Floating-Point Multiply-accumulate and Multiply-subtract
77 #------------------------------------------------------------------------------
78 # CHECK: fmla v0.2s, v1.2s, v2.2s
79 # CHECK: fmls v31.2s, v31.2s, v31.2s
83 #------------------------------------------------------------------------------
84 # Vector Move Immediate Shifted
85 # Vector Move Inverted Immediate Shifted
86 # Vector Bitwise Bit Clear (AND NOT) - immediate
87 # Vector Bitwise OR - immedidate
88 #------------------------------------------------------------------------------
89 # CHECK: movi v31.4s, #0xff, lsl #24
90 # CHECK: mvni v0.2s, #0x0
91 # CHECK: bic v15.4h, #0xf, lsl #8
92 # CHECK: orr v16.8h, #0x1f
98 #------------------------------------------------------------------------------
99 # Vector Move Immediate Masked
100 # Vector Move Inverted Immediate Masked
101 #------------------------------------------------------------------------------
102 # CHECK: movi v8.2s, #0x8, msl #8
103 # CHECK: mvni v16.4s, #0x10, msl #16
107 #------------------------------------------------------------------------------
108 # Vector Immediate - per byte
109 # Vector Move Immediate - bytemask, per doubleword
110 # Vector Move Immediate - bytemask, one doubleword
111 #------------------------------------------------------------------------------
112 # CHECK: movi v16.8b, #0xff
113 # CHECK: movi v31.16b, #0x1f
114 # CHECK: movi d15, #0xff00ff00ff00ff
115 # CHECK: movi v31.2d, #0xff0000ff0000ffff
121 #------------------------------------------------------------------------------
122 # Vector Floating Point Move Immediate
123 #------------------------------------------------------------------------------
124 # CHECK: fmov v0.2s, #13.0
125 # CHECK: fmov v15.4s, #1.0
126 # CHECK: fmov v31.2d, #-1.25
131 #------------------------------------------------------------------------------
132 # Vector Move - register
133 #------------------------------------------------------------------------------
135 # FIXME: these should print as "mov", but TableGen can't handle it.
137 # CHECK: orr v1.16b, v15.16b, v15.16b
138 # CHECK: orr v25.8b, v4.8b, v4.8b
142 #----------------------------------------------------------------------
143 # Vector Absolute Difference and Accumulate (Signed, Unsigned)
144 # Vector Absolute Difference (Signed, Unsigned)
145 # Vector Absolute Difference (Floating Point)
146 #----------------------------------------------------------------------
148 # CHECK: uaba v0.8b, v1.8b, v2.8b
149 # CHECK: saba v31.16b, v30.16b, v29.16b
150 # CHECK: uabd v15.4h, v16.4h, v17.4h
151 # CHECK: sabd v5.4h, v4.4h, v6.4h
152 # CHECK: fabd v1.4s, v31.4s, v16.4s
159 #----------------------------------------------------------------------
162 #----------------------------------------------------------------------
164 # CHECK: add d17, d31, d29
165 # CHECK: sub d15, d5, d16
169 #----------------------------------------------------------------------
170 # Vector Reciprocal Square Root Step (Floating Point)
171 #----------------------------------------------------------------------
172 # CHECK: frsqrts v31.2d, v15.2d, v8.2d
175 #----------------------------------------------------------------------
176 # Vector Reciprocal Step (Floating Point)
177 #----------------------------------------------------------------------
178 # CHECK: frecps v5.4s, v7.4s, v16.4s
181 #----------------------------------------------------------------------
182 # Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
183 #----------------------------------------------------------------------
184 # CHECK: facge v0.4s, v31.4s, v16.4s
187 #----------------------------------------------------------------------
188 # Vector Absolute Compare Mask Less Than (Floating Point)
189 #----------------------------------------------------------------------
190 # CHECK: facgt v31.2d, v29.2d, v28.2d
193 #----------------------------------------------------------------------
194 # Vector Compare Mask Equal (Integer)
195 #----------------------------------------------------------------------
196 # CHECK: cmeq v5.16b, v15.16b, v31.16b
199 #----------------------------------------------------------------------
200 # Vector Compare Mask Higher or Same (Unsigned Integer)
201 #----------------------------------------------------------------------
202 # CHECK: cmhs v1.8b, v16.8b, v30.8b
205 #----------------------------------------------------------------------
206 # Vector Compare Mask Greater Than or Equal (Integer)
207 #----------------------------------------------------------------------
208 # CHECK: cmge v20.4h, v11.4h, v23.4h
211 #----------------------------------------------------------------------
212 # Vector Compare Mask Higher (Unsigned Integer)
213 # CHECK: cmhi v13.8h, v3.8h, v27.8h
216 #----------------------------------------------------------------------
217 # Vector Compare Mask Greater Than (Integer)
218 #----------------------------------------------------------------------
219 # CHECK: cmgt v9.4s, v4.4s, v28.4s
222 #----------------------------------------------------------------------
223 # Vector Compare Mask Bitwise Test (Integer)
224 #----------------------------------------------------------------------
225 # CHECK: cmtst v21.2s, v19.2s, v18.2s
228 #----------------------------------------------------------------------
229 # Vector Compare Mask Equal (Floating Point)
230 #----------------------------------------------------------------------
231 # CHECK: fcmeq v0.2s, v15.2s, v16.2s
234 #----------------------------------------------------------------------
235 # Vector Compare Mask Greater Than Or Equal (Floating Point)
236 #----------------------------------------------------------------------
237 # CHECK: fcmge v31.4s, v7.4s, v29.4s
240 #----------------------------------------------------------------------
241 # Vector Compare Mask Greater Than (Floating Point)
242 #----------------------------------------------------------------------
243 # CHECK: fcmgt v17.4s, v8.4s, v25.4s
246 #----------------------------------------------------------------------
247 # Vector Compare Mask Equal to Zero (Integer)
248 #----------------------------------------------------------------------
249 # CHECK: cmeq v31.16b, v15.16b, #0x0
252 #----------------------------------------------------------------------
253 # Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
254 #----------------------------------------------------------------------
255 # CHECK: cmge v3.8b, v15.8b, #0x0
258 #----------------------------------------------------------------------
259 # Vector Compare Mask Greater Than Zero (Signed Integer)
260 #----------------------------------------------------------------------
261 # CHECK: cmgt v22.2s, v9.2s, #0x0
264 #----------------------------------------------------------------------
265 # Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
266 #----------------------------------------------------------------------
267 # CHECK: cmle v5.2d, v14.2d, #0x0
270 #----------------------------------------------------------------------
271 # Vector Compare Mask Less Than Zero (Signed Integer)
272 #----------------------------------------------------------------------
273 # CHECK: cmlt v13.8h, v11.8h, #0x0
276 #----------------------------------------------------------------------
277 # Vector Compare Mask Equal to Zero (Floating Point)
278 #----------------------------------------------------------------------
279 # CHECK: fcmeq v15.2s, v21.2s, #0.0
282 #----------------------------------------------------------------------
283 # Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
284 #----------------------------------------------------------------------
285 # CHECK: fcmge v14.2d, v13.2d, #0.0
288 #----------------------------------------------------------------------
289 # Vector Compare Mask Greater Than Zero (Floating Point)
290 #----------------------------------------------------------------------
291 # CHECK: fcmgt v9.4s, v23.4s, #0.0
294 #----------------------------------------------------------------------
295 # Vector Compare Mask Less Than or Equal To Zero (Floating Point)
296 #----------------------------------------------------------------------
297 # CHECK: fcmle v11.2d, v6.2d, #0.0
300 #----------------------------------------------------------------------
301 # Vector Compare Mask Less Than Zero (Floating Point)
302 #----------------------------------------------------------------------
303 # CHECK: fcmlt v12.4s, v25.4s, #0.0
307 #------------------------------------------------------------------------------
308 # Vector Integer Halving Add (Signed)
309 # Vector Integer Halving Add (Unsigned)
310 # Vector Integer Halving Sub (Signed)
311 # Vector Integer Halving Sub (Unsigned)
312 #------------------------------------------------------------------------------
313 # CHECK: shadd v0.8b, v31.8b, v29.8b
314 # CHECK: uhadd v15.16b, v16.16b, v17.16b
315 # CHECK: shsub v0.4h, v1.4h, v2.4h
316 # CHECK: uhadd v5.8h, v7.8h, v8.8h
317 # CHECK: shsub v9.2s, v11.2s, v21.2s
318 # CHECK: uhsub v22.4s, v30.4s, v19.4s
326 #------------------------------------------------------------------------------
327 # Vector Integer Rouding Halving Add (Signed)
328 # Vector Integer Rouding Halving Add (Unsigned)
329 #------------------------------------------------------------------------------
330 # CHECK: srhadd v3.8b, v5.8b, v7.8b
331 # CHECK: urhadd v7.16b, v17.16b, v27.16b
332 # CHECK: srhadd v10.4h, v11.4h, v13.4h
333 # CHECK: urhadd v1.8h, v2.8h, v3.8h
334 # CHECK: srhadd v4.2s, v5.2s, v6.2s
335 # CHECK: urhadd v7.4s, v7.4s, v7.4s
343 #------------------------------------------------------------------------------
344 # Vector Integer Saturating Add (Signed)
345 # Vector Integer Saturating Add (Unsigned)
346 # Vector Integer Saturating Sub (Signed)
347 # Vector Integer Saturating Sub (Unsigned)
348 #------------------------------------------------------------------------------
349 # CHECK: sqsub v0.8b, v1.8b, v2.8b
350 # CHECK: sqadd v0.16b, v1.16b, v2.16b
351 # CHECK: uqsub v0.4h, v1.4h, v2.4h
352 # CHECK: uqadd v0.8h, v1.8h, v2.8h
353 # CHECK: sqadd v0.2s, v1.2s, v2.2s
354 # CHECK: sqsub v0.4s, v1.4s, v2.4s
355 # CHECK: sqsub v0.2d, v1.2d, v2.2d
364 #------------------------------------------------------------------------------
365 # Scalar Integer Saturating Add (Signed)
366 # Scalar Integer Saturating Add (Unsigned)
367 # Scalar Integer Saturating Sub (Signed)
368 # Scalar Integer Saturating Add (Unsigned)
369 #------------------------------------------------------------------------------
370 # CHECK: sqadd b20, b11, b15
371 # CHECK: uqadd h0, h1, h5
372 # CHECK: sqsub s20, s10, s7
373 # CHECK: uqsub d16, d16, d16
380 #----------------------------------------------------------------------
381 # Vector Shift Left (Signed and Unsigned Integer)
382 #----------------------------------------------------------------------
383 # CHECK: sshl v10.8b, v15.8b, v22.8b
384 # CHECK: ushl v10.16b, v5.16b, v2.16b
385 # CHECK: sshl v10.4h, v15.4h, v22.4h
386 # CHECK: ushl v10.8h, v5.8h, v2.8h
387 # CHECK: sshl v10.2s, v15.2s, v22.2s
388 # CHECK: ushl v10.4s, v5.4s, v2.4s
389 # CHECK: sshl v0.2d, v1.2d, v2.2d
398 #----------------------------------------------------------------------
399 # Vector Saturating Shift Left (Signed and Unsigned Integer)
400 #----------------------------------------------------------------------
401 # CHECK: sqshl v1.8b, v15.8b, v22.8b
402 # CHECK: uqshl v2.16b, v14.16b, v23.16b
403 # CHECK: sqshl v3.4h, v13.4h, v24.4h
404 # CHECK: uqshl v4.8h, v12.8h, v25.8h
405 # CHECK: sqshl v5.2s, v11.2s, v26.2s
406 # CHECK: uqshl v6.4s, v10.4s, v27.4s
407 # CHECK: uqshl v0.2d, v1.2d, v2.2d
416 #----------------------------------------------------------------------
417 # Vector Rouding Shift Left (Signed and Unsigned Integer)
418 #----------------------------------------------------------------------
419 # CHECK: srshl v10.8b, v5.8b, v22.8b
420 # CHECK: urshl v10.16b, v5.16b, v2.16b
421 # CHECK: srshl v1.4h, v5.4h, v31.4h
422 # CHECK: urshl v1.8h, v5.8h, v2.8h
423 # CHECK: srshl v10.2s, v15.2s, v2.2s
424 # CHECK: urshl v1.4s, v5.4s, v2.4s
425 # CHECK: urshl v0.2d, v1.2d, v2.2d
434 #----------------------------------------------------------------------
435 # Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
436 #----------------------------------------------------------------------
437 # CHECK: sqrshl v1.8b, v15.8b, v22.8b
438 # CHECK: uqrshl v2.16b, v14.16b, v23.16b
439 # CHECK: sqrshl v3.4h, v13.4h, v24.4h
440 # CHECK: uqrshl v4.8h, v12.8h, v25.8h
441 # CHECK: sqrshl v5.2s, v11.2s, v26.2s
442 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
443 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
452 #----------------------------------------------------------------------
453 # Scalar Integer Shift Left (Signed, Unsigned)
454 #----------------------------------------------------------------------
455 # CHECK: sshl d31, d31, d31
456 # CHECK: ushl d0, d0, d0
460 #----------------------------------------------------------------------
461 # Scalar Integer Saturating Shift Left (Signed, Unsigned)
462 #----------------------------------------------------------------------
463 # CHECK: sqshl d31, d31, d31
464 # CHECK: uqshl s23, s20, s16
465 # CHECK: sqshl h3, h4, h15
466 # CHECK: uqshl b11, b20, b30
472 #----------------------------------------------------------------------
473 # Scalar Integer Rouding Shift Left (Signed, Unsigned)
474 #----------------------------------------------------------------------
475 # CHECK: srshl d16, d16, d16
476 # CHECK: urshl d8, d7, d4
480 #----------------------------------------------------------------------
481 # Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
482 #----------------------------------------------------------------------
483 # CHECK: sqrshl d31, d31, d31
484 # CHECK: uqrshl s23, s20, s16
485 # CHECK: sqrshl h3, h4, h15
486 # CHECK: uqrshl b11, b20, b30
492 #----------------------------------------------------------------------
493 # Vector Maximum (Signed and Unsigned Integer)
494 #----------------------------------------------------------------------
495 # CHECK: smax v1.8b, v15.8b, v22.8b
496 # CHECK: umax v2.16b, v14.16b, v23.16b
497 # CHECK: smax v3.4h, v13.4h, v24.4h
498 # CHECK: umax v4.8h, v12.8h, v25.8h
499 # CHECK: smax v5.2s, v11.2s, v26.2s
500 # CHECK: umax v6.4s, v10.4s, v27.4s
508 #----------------------------------------------------------------------
509 # Vector Minimum (Signed and Unsigned Integer)
510 #----------------------------------------------------------------------
511 # CHECK: umin v1.8b, v15.8b, v22.8b
512 # CHECK: smin v2.16b, v14.16b, v23.16b
513 # CHECK: umin v3.4h, v13.4h, v24.4h
514 # CHECK: smin v4.8h, v12.8h, v25.8h
515 # CHECK: umin v5.2s, v11.2s, v26.2s
516 # CHECK: smin v6.4s, v10.4s, v27.4s
524 #----------------------------------------------------------------------
525 # Vector Maximum (Floating Point)
526 #----------------------------------------------------------------------
527 # CHECK: fmax v29.2s, v28.2s, v25.2s
528 # CHECK: fmax v9.4s, v8.4s, v5.4s
529 # CHECK: fmax v11.2d, v10.2d, v7.2d
534 #----------------------------------------------------------------------
535 # Vector Minimum (Floating Point)
536 #----------------------------------------------------------------------
537 # CHECK: fmin v29.2s, v28.2s, v25.2s
538 # CHECK: fmin v9.4s, v8.4s, v5.4s
539 # CHECK: fmin v11.2d, v10.2d, v7.2d
544 #----------------------------------------------------------------------
545 # Vector maxNum (Floating Point)
546 #----------------------------------------------------------------------
547 # CHECK: fmaxnm v9.2s, v8.2s, v5.2s
548 # CHECK: fmaxnm v9.4s, v8.4s, v5.4s
549 # CHECK: fmaxnm v11.2d, v10.2d, v7.2d
554 #----------------------------------------------------------------------
555 # Vector minNum (Floating Point)
556 #----------------------------------------------------------------------
557 # CHECK: fminnm v2.2s, v8.2s, v25.2s
558 # CHECK: fminnm v9.4s, v8.4s, v5.4s
559 # CHECK: fminnm v11.2d, v10.2d, v7.2d
565 #----------------------------------------------------------------------
566 # Vector Maximum Pairwise (Signed and Unsigned Integer)
567 #----------------------------------------------------------------------
568 # CHECK: smaxp v1.8b, v15.8b, v22.8b
569 # CHECK: umaxp v2.16b, v14.16b, v23.16b
570 # CHECK: smaxp v3.4h, v13.4h, v24.4h
571 # CHECK: umaxp v4.8h, v12.8h, v25.8h
572 # CHECK: smaxp v5.2s, v11.2s, v26.2s
573 # CHECK: umaxp v6.4s, v10.4s, v27.4s
581 #----------------------------------------------------------------------
582 # Vector Minimum Pairwise (Signed and Unsigned Integer)
583 #----------------------------------------------------------------------
584 # CHECK: uminp v1.8b, v15.8b, v22.8b
585 # CHECK: sminp v2.16b, v14.16b, v23.16b
586 # CHECK: uminp v3.4h, v13.4h, v24.4h
587 # CHECK: sminp v4.8h, v12.8h, v25.8h
588 # CHECK: uminp v5.2s, v11.2s, v26.2s
589 # CHECK: sminp v6.4s, v10.4s, v27.4s
597 #----------------------------------------------------------------------
598 # Vector Maximum Pairwise (Floating Point)
599 #----------------------------------------------------------------------
600 # CHECK: fmaxp v29.2s, v28.2s, v25.2s
601 # CHECK: fmaxp v9.4s, v8.4s, v5.4s
602 # CHECK: fmaxp v11.2d, v10.2d, v7.2d
607 #----------------------------------------------------------------------
608 # Vector Minimum Pairwise (Floating Point)
609 #----------------------------------------------------------------------
610 # CHECK: fminp v29.2s, v28.2s, v25.2s
611 # CHECK: fminp v9.4s, v8.4s, v5.4s
612 # CHECK: fminp v11.2d, v10.2d, v7.2d
617 #----------------------------------------------------------------------
618 # Vector maxNum Pairwise (Floating Point)
619 #----------------------------------------------------------------------
620 # CHECK: fmaxnmp v9.2s, v8.2s, v5.2s
621 # CHECK: fmaxnmp v9.4s, v8.4s, v5.4s
622 # CHECK: fmaxnmp v11.2d, v10.2d, v7.2d
627 #----------------------------------------------------------------------
628 # Vector minNum Pairwise (Floating Point)
629 #----------------------------------------------------------------------
630 # CHECK: fminnmp v2.2s, v8.2s, v25.2s
631 # CHECK: fminnmp v9.4s, v8.4s, v5.4s
632 # CHECK: fminnmp v11.2d, v10.2d, v7.2d
637 #------------------------------------------------------------------------------
638 # Vector Add Pairwise (Integer)
639 #------------------------------------------------------------------------------
640 # CHECK: addp v31.8b, v31.8b, v31.8b
641 # CHECK: addp v0.2d, v0.2d, v0.2d
645 #------------------------------------------------------------------------------
646 # Vector Add Pairwise (Floating Point)
647 #------------------------------------------------------------------------------
648 # CHECK: faddp v0.4s, v0.4s, v0.4s
649 # CHECK: faddp v31.2s, v31.2s, v31.2s
654 #------------------------------------------------------------------------------
655 # Vector Saturating Doubling Multiply High
656 # Vector Saturating Rouding Doubling Multiply High
657 #------------------------------------------------------------------------------
658 # CHECK: sqdmulh v31.2s, v31.2s, v31.2s
659 # CHECK: sqdmulh v5.4s, v7.4s, v9.4s
660 # CHECK: sqrdmulh v31.4h, v3.4h, v13.4h
661 # CHECK: sqrdmulh v0.8h, v10.8h, v20.8h
667 #------------------------------------------------------------------------------
668 # Vector Multiply Extended
669 #------------------------------------------------------------------------------
670 # CHECK: fmulx v1.2s, v22.2s, v2.2s
671 # CHECK: fmulx v21.4s, v15.4s, v3.4s
672 # CHECK: fmulx v11.2d, v5.2d, v23.2d
677 #----------------------------------------------------------------------
678 # Vector Shift Left by Immediate
679 #----------------------------------------------------------------------
680 # CHECK: shl v0.4h, v1.4h, #3
681 # CHECK: shl v0.16b, v1.16b, #3
682 # CHECK: shl v0.4s, v1.4s, #3
683 # CHECK: shl v0.2d, v1.2d, #3
689 #----------------------------------------------------------------------
690 # Vector Shift Left Long (Signed, Unsigned) by Immediate
691 #----------------------------------------------------------------------
692 # CHECK: sshll v0.2d, v1.2s, #3
693 # CHECK: sshll2 v0.4s, v1.8h, #3
694 # CHECK: ushll v0.4s, v1.4h, #3
695 # CHECK: ushll2 v0.8h, v1.16b, #3
701 #-----------------------------------------------------------------------------
702 #Integer shift right (Signed)
703 #-----------------------------------------------------------------------------
704 # CHECK: sshr v0.8b, v1.8b, #3
705 # CHECK: sshr v0.4h, v1.4h, #3
706 # CHECK: sshr v0.2s, v1.2s, #3
707 # CHECK: sshr v0.16b, v1.16b, #3
708 # CHECK: sshr v0.8h, v1.8h, #3
709 # CHECK: sshr v0.4s, v1.4s, #3
710 # CHECK: sshr v0.2d, v1.2d, #3
719 #-----------------------------------------------------------------------------
720 #Integer shift right (Unsigned)
721 #-----------------------------------------------------------------------------
722 # CHECK: ushr v0.8b, v1.8b, #3
723 # CHECK: ushr v0.4h, v1.4h, #3
724 # CHECK: ushr v0.2s, v1.2s, #3
725 # CHECK: ushr v0.16b, v1.16b, #3
726 # CHECK: ushr v0.8h, v1.8h, #3
727 # CHECK: ushr v0.4s, v1.4s, #3
728 # CHECK: ushr v0.2d, v1.2d, #3
737 #-----------------------------------------------------------------------------
738 #Integer shift right and accumulate (Signed)
739 #-----------------------------------------------------------------------------
740 # CHECK: ssra v0.8b, v1.8b, #3
741 # CHECK: ssra v0.4h, v1.4h, #3
742 # CHECK: ssra v0.2s, v1.2s, #3
743 # CHECK: ssra v0.16b, v1.16b, #3
744 # CHECK: ssra v0.8h, v1.8h, #3
745 # CHECK: ssra v0.4s, v1.4s, #3
746 # CHECK: ssra v0.2d, v1.2d, #3
755 #-----------------------------------------------------------------------------
756 #Integer shift right and accumulate (Unsigned)
757 #-----------------------------------------------------------------------------
758 # CHECK: usra v0.8b, v1.8b, #3
759 # CHECK: usra v0.4h, v1.4h, #3
760 # CHECK: usra v0.2s, v1.2s, #3
761 # CHECK: usra v0.16b, v1.16b, #3
762 # CHECK: usra v0.8h, v1.8h, #3
763 # CHECK: usra v0.4s, v1.4s, #3
764 # CHECK: usra v0.2d, v1.2d, #3
773 #-----------------------------------------------------------------------------
774 #Integer rounding shift right (Signed)
775 #-----------------------------------------------------------------------------
776 # CHECK: srshr v0.8b, v1.8b, #3
777 # CHECK: srshr v0.4h, v1.4h, #3
778 # CHECK: srshr v0.2s, v1.2s, #3
779 # CHECK: srshr v0.16b, v1.16b, #3
780 # CHECK: srshr v0.8h, v1.8h, #3
781 # CHECK: srshr v0.4s, v1.4s, #3
782 # CHECK: srshr v0.2d, v1.2d, #3
791 #-----------------------------------------------------------------------------
792 #Integer rounding shift right (Unsigned)
793 #-----------------------------------------------------------------------------
794 # CHECK: urshr v0.8b, v1.8b, #3
795 # CHECK: urshr v0.4h, v1.4h, #3
796 # CHECK: urshr v0.2s, v1.2s, #3
797 # CHECK: urshr v0.16b, v1.16b, #3
798 # CHECK: urshr v0.8h, v1.8h, #3
799 # CHECK: urshr v0.4s, v1.4s, #3
800 # CHECK: urshr v0.2d, v1.2d, #3
809 #-----------------------------------------------------------------------------
810 #Integer rounding shift right and accumulate (Signed)
811 #-----------------------------------------------------------------------------
812 # CHECK: srsra v0.8b, v1.8b, #3
813 # CHECK: srsra v0.4h, v1.4h, #3
814 # CHECK: srsra v0.2s, v1.2s, #3
815 # CHECK: srsra v0.16b, v1.16b, #3
816 # CHECK: srsra v0.8h, v1.8h, #3
817 # CHECK: srsra v0.4s, v1.4s, #3
818 # CHECK: srsra v0.2d, v1.2d, #3
827 #-----------------------------------------------------------------------------
828 #Integer rounding shift right and accumulate (Unsigned)
829 #-----------------------------------------------------------------------------
830 # CHECK: ursra v0.8b, v1.8b, #3
831 # CHECK: ursra v0.4h, v1.4h, #3
832 # CHECK: ursra v0.2s, v1.2s, #3
833 # CHECK: ursra v0.16b, v1.16b, #3
834 # CHECK: ursra v0.8h, v1.8h, #3
835 # CHECK: ursra v0.4s, v1.4s, #3
836 # CHECK: ursra v0.2d, v1.2d, #3
845 #-----------------------------------------------------------------------------
846 #Integer shift right and insert
847 #-----------------------------------------------------------------------------
848 # CHECK: sri v0.8b, v1.8b, #3
849 # CHECK: sri v0.4h, v1.4h, #3
850 # CHECK: sri v0.2s, v1.2s, #3
851 # CHECK: sri v0.16b, v1.16b, #3
852 # CHECK: sri v0.8h, v1.8h, #3
853 # CHECK: sri v0.4s, v1.4s, #3
854 # CHECK: sri v0.2d, v1.2d, #3
863 #-----------------------------------------------------------------------------
864 #Integer shift left and insert
865 #-----------------------------------------------------------------------------
866 # CHECK: sli v0.8b, v1.8b, #3
867 # CHECK: sli v0.4h, v1.4h, #3
868 # CHECK: sli v0.2s, v1.2s, #3
869 # CHECK: sli v0.16b, v1.16b, #3
870 # CHECK: sli v0.8h, v1.8h, #3
871 # CHECK: sli v0.4s, v1.4s, #3
872 # CHECK: sli v0.2d, v1.2d, #3
881 #-----------------------------------------------------------------------------
882 #Integer saturating shift left unsigned
883 #-----------------------------------------------------------------------------
884 # CHECK: sqshlu v0.8b, v1.8b, #3
885 # CHECK: sqshlu v0.4h, v1.4h, #3
886 # CHECK: sqshlu v0.2s, v1.2s, #3
887 # CHECK: sqshlu v0.16b, v1.16b, #3
888 # CHECK: sqshlu v0.8h, v1.8h, #3
889 # CHECK: sqshlu v0.4s, v1.4s, #3
890 # CHECK: sqshlu v0.2d, v1.2d, #3
899 #-----------------------------------------------------------------------------
900 #Integer saturating shift left (Signed)
901 #-----------------------------------------------------------------------------
902 # CHECK: sqshl v0.8b, v1.8b, #3
903 # CHECK: sqshl v0.4h, v1.4h, #3
904 # CHECK: sqshl v0.2s, v1.2s, #3
905 # CHECK: sqshl v0.16b, v1.16b, #3
906 # CHECK: sqshl v0.8h, v1.8h, #3
907 # CHECK: sqshl v0.4s, v1.4s, #3
908 # CHECK: sqshl v0.2d, v1.2d, #3
917 #-----------------------------------------------------------------------------
918 #Integer saturating shift left (Unsigned)
919 #-----------------------------------------------------------------------------
920 # CHECK: uqshl v0.8b, v1.8b, #3
921 # CHECK: uqshl v0.4h, v1.4h, #3
922 # CHECK: uqshl v0.2s, v1.2s, #3
923 # CHECK: uqshl v0.16b, v1.16b, #3
924 # CHECK: uqshl v0.8h, v1.8h, #3
925 # CHECK: uqshl v0.4s, v1.4s, #3
926 # CHECK: uqshl v0.2d, v1.2d, #3
935 #-----------------------------------------------------------------------------
936 #Integer shift right narrow
937 #-----------------------------------------------------------------------------
938 # CHECK: shrn v0.8b, v1.8h, #3
939 # CHECK: shrn v0.4h, v1.4s, #3
940 # CHECK: shrn v0.2s, v1.2d, #3
941 # CHECK: shrn2 v0.16b, v1.8h, #3
942 # CHECK: shrn2 v0.8h, v1.4s, #3
943 # CHECK: shrn2 v0.4s, v1.2d, #3
951 #-----------------------------------------------------------------------------
952 #Integer saturating shift right unsigned narrow (Signed)
953 #-----------------------------------------------------------------------------
954 # CHECK: sqshrun v0.8b, v1.8h, #3
955 # CHECK: sqshrun v0.4h, v1.4s, #3
956 # CHECK: sqshrun v0.2s, v1.2d, #3
957 # CHECK: sqshrun2 v0.16b, v1.8h, #3
958 # CHECK: sqshrun2 v0.8h, v1.4s, #3
959 # CHECK: sqshrun2 v0.4s, v1.2d, #3
967 #-----------------------------------------------------------------------------
968 #Integer rounding shift right narrow
969 #-----------------------------------------------------------------------------
970 # CHECK: rshrn v0.8b, v1.8h, #3
971 # CHECK: rshrn v0.4h, v1.4s, #3
972 # CHECK: rshrn v0.2s, v1.2d, #3
973 # CHECK: rshrn2 v0.16b, v1.8h, #3
974 # CHECK: rshrn2 v0.8h, v1.4s, #3
975 # CHECK: rshrn2 v0.4s, v1.2d, #3
983 #-----------------------------------------------------------------------------
984 #Integer saturating shift right rounded unsigned narrow (Signed)
985 #-----------------------------------------------------------------------------
986 # CHECK: sqrshrun v0.8b, v1.8h, #3
987 # CHECK: sqrshrun v0.4h, v1.4s, #3
988 # CHECK: sqrshrun v0.2s, v1.2d, #3
989 # CHECK: sqrshrun2 v0.16b, v1.8h, #3
990 # CHECK: sqrshrun2 v0.8h, v1.4s, #3
991 # CHECK: sqrshrun2 v0.4s, v1.2d, #3
999 #-----------------------------------------------------------------------------
1000 #Integer saturating shift right narrow (Signed)
1001 #-----------------------------------------------------------------------------
1002 # CHECK: sqshrn v0.8b, v1.8h, #3
1003 # CHECK: sqshrn v0.4h, v1.4s, #3
1004 # CHECK: sqshrn v0.2s, v1.2d, #3
1005 # CHECK: sqshrn2 v0.16b, v1.8h, #3
1006 # CHECK: sqshrn2 v0.8h, v1.4s, #3
1007 # CHECK: sqshrn2 v0.4s, v1.2d, #3
1015 #-----------------------------------------------------------------------------
1016 #Integer saturating shift right narrow (Unsigned)
1017 #-----------------------------------------------------------------------------
1018 # CHECK: uqshrn v0.8b, v1.8h, #3
1019 # CHECK: uqshrn v0.4h, v1.4s, #3
1020 # CHECK: uqshrn v0.2s, v1.2d, #3
1021 # CHECK: uqshrn2 v0.16b, v1.8h, #3
1022 # CHECK: uqshrn2 v0.8h, v1.4s, #3
1023 # CHECK: uqshrn2 v0.4s, v1.2d, #3
1031 #-----------------------------------------------------------------------------
1032 #Integer saturating shift right rounded narrow (Signed)
1033 #-----------------------------------------------------------------------------
1034 # CHECK: sqrshrn v0.8b, v1.8h, #3
1035 # CHECK: sqrshrn v0.4h, v1.4s, #3
1036 # CHECK: sqrshrn v0.2s, v1.2d, #3
1037 # CHECK: sqrshrn2 v0.16b, v1.8h, #3
1038 # CHECK: sqrshrn2 v0.8h, v1.4s, #3
1039 # CHECK: sqrshrn2 v0.4s, v1.2d, #3
1047 #-----------------------------------------------------------------------------
1048 #Integer saturating shift right rounded narrow (Unsigned)
1049 #-----------------------------------------------------------------------------
1050 # CHECK: uqrshrn v0.8b, v1.8h, #3
1051 # CHECK: uqrshrn v0.4h, v1.4s, #3
1052 # CHECK: uqrshrn v0.2s, v1.2d, #3
1053 # CHECK: uqrshrn2 v0.16b, v1.8h, #3
1054 # CHECK: uqrshrn2 v0.8h, v1.4s, #3
1055 # CHECK: uqrshrn2 v0.4s, v1.2d, #3
1063 #-----------------------------------------------------------------------------
1064 #Fixed-point convert to floating-point
1065 #-----------------------------------------------------------------------------
1066 # CHECK: scvtf v0.2s, v1.2s, #3
1067 # CHECK: scvtf v0.4s, v1.4s, #3
1068 # CHECK: scvtf v0.2d, v1.2d, #3
1069 # CHECK: ucvtf v0.2s, v1.2s, #3
1070 # CHECK: ucvtf v0.4s, v1.4s, #3
1071 # CHECK: ucvtf v0.2d, v1.2d, #3
1080 #-----------------------------------------------------------------------------
1081 #Floating-point convert to fixed-point
1082 #-----------------------------------------------------------------------------
1083 # CHECK: fcvtzs v0.2s, v1.2s, #3
1084 # CHECK: fcvtzs v0.4s, v1.4s, #3
1085 # CHECK: fcvtzs v0.2d, v1.2d, #3
1086 # CHECK: fcvtzu v0.2s, v1.2s, #3
1087 # CHECK: fcvtzu v0.4s, v1.4s, #3
1088 # CHECK: fcvtzu v0.2d, v1.2d, #3
1097 #------------------------------------------------------------------------------
1098 # Vector with 3 operands having different data types
1099 #------------------------------------------------------------------------------
1101 #------------------------------------------------------------------------------
1103 #------------------------------------------------------------------------------
1105 #------------------------------------------------------------------------------
1107 #------------------------------------------------------------------------------
1109 # CHECK: saddl v0.8h, v1.8b, v2.8b
1110 # CHECK: saddl v0.4s, v1.4h, v2.4h
1111 # CHECK: saddl v0.2d, v1.2s, v2.2s
1116 # CHECK: saddl2 v0.4s, v1.8h, v2.8h
1117 # CHECK: saddl2 v0.8h, v1.16b, v2.16b
1118 # CHECK: saddl2 v0.2d, v1.4s, v2.4s
1123 # CHECK: uaddl v0.8h, v1.8b, v2.8b
1124 # CHECK: uaddl v0.4s, v1.4h, v2.4h
1125 # CHECK: uaddl v0.2d, v1.2s, v2.2s
1130 # CHECK: uaddl2 v0.8h, v1.16b, v2.16b
1131 # CHECK: uaddl2 v0.4s, v1.8h, v2.8h
1132 # CHECK: uaddl2 v0.2d, v1.4s, v2.4s
1137 # CHECK: ssubl v0.8h, v1.8b, v2.8b
1138 # CHECK: ssubl v0.4s, v1.4h, v2.4h
1139 # CHECK: ssubl v0.2d, v1.2s, v2.2s
1144 # CHECK: ssubl2 v0.8h, v1.16b, v2.16b
1145 # CHECK: ssubl2 v0.4s, v1.8h, v2.8h
1146 # CHECK: ssubl2 v0.2d, v1.4s, v2.4s
1151 # CHECK: usubl v0.8h, v1.8b, v2.8b
1152 # CHECK: usubl v0.4s, v1.4h, v2.4h
1153 # CHECK: usubl v0.2d, v1.2s, v2.2s
1158 # CHECK: usubl2 v0.8h, v1.16b, v2.16b
1159 # CHECK: usubl2 v0.4s, v1.8h, v2.8h
1160 # CHECK: usubl2 v0.2d, v1.4s, v2.4s
1165 # CHECK: sabal v0.8h, v1.8b, v2.8b
1166 # CHECK: sabal v0.4s, v1.4h, v2.4h
1167 # CHECK: sabal v0.2d, v1.2s, v2.2s
1172 # CHECK: sabal2 v0.8h, v1.16b, v2.16b
1173 # CHECK: sabal2 v0.4s, v1.8h, v2.8h
1174 # CHECK: sabal2 v0.2d, v1.4s, v2.4s
1179 # CHECK: uabal v0.8h, v1.8b, v2.8b
1180 # CHECK: uabal v0.4s, v1.4h, v2.4h
1181 # CHECK: uabal v0.2d, v1.2s, v2.2s
1186 # CHECK: uabal2 v0.8h, v1.16b, v2.16b
1187 # CHECK: uabal2 v0.4s, v1.8h, v2.8h
1188 # CHECK: uabal2 v0.2d, v1.4s, v2.4s
1193 # CHECK: sabdl v0.8h, v1.8b, v2.8b
1194 # CHECK: sabdl v0.4s, v1.4h, v2.4h
1195 # CHECK: sabdl v0.2d, v1.2s, v2.2s
1200 # CHECK: sabdl2 v0.8h, v1.16b, v2.16b
1201 # CHECK: sabdl2 v0.4s, v1.8h, v2.8h
1202 # CHECK: sabdl2 v0.2d, v1.4s, v2.4s
1207 # CHECK: uabdl v0.8h, v1.8b, v2.8b
1208 # CHECK: uabdl v0.4s, v1.4h, v2.4h
1209 # CHECK: uabdl v0.2d, v1.2s, v2.2s
1214 # CHECK: uabdl2 v0.8h, v1.16b, v2.16b
1215 # CHECK: uabdl2 v0.4s, v1.8h, v2.8h
1216 # CHECK: uabdl2 v0.2d, v1.4s, v2.4s
1221 # CHECK: smlal v0.8h, v1.8b, v2.8b
1222 # CHECK: smlal v0.4s, v1.4h, v2.4h
1223 # CHECK: smlal v0.2d, v1.2s, v2.2s
1228 # CHECK: smlal2 v0.8h, v1.16b, v2.16b
1229 # CHECK: smlal2 v0.4s, v1.8h, v2.8h
1230 # CHECK: smlal2 v0.2d, v1.4s, v2.4s
1235 # CHECK: umlal v0.8h, v1.8b, v2.8b
1236 # CHECK: umlal v0.4s, v1.4h, v2.4h
1237 # CHECK: umlal v0.2d, v1.2s, v2.2s
1243 # CHECK: umlal2 v0.8h, v1.16b, v2.16b
1244 # CHECK: umlal2 v0.4s, v1.8h, v2.8h
1245 # CHECK: umlal2 v0.2d, v1.4s, v2.4s
1250 # CHECK: smlsl v0.8h, v1.8b, v2.8b
1251 # CHECK: smlsl v0.4s, v1.4h, v2.4h
1252 # CHECK: smlsl v0.2d, v1.2s, v2.2s
1257 # CHECK: smlsl2 v0.8h, v1.16b, v2.16b
1258 # CHECK: smlsl2 v0.4s, v1.8h, v2.8h
1259 # CHECK: smlsl2 v0.2d, v1.4s, v2.4s
1264 # CHECK: umlsl v0.8h, v1.8b, v2.8b
1265 # CHECK: umlsl v0.4s, v1.4h, v2.4h
1266 # CHECK: umlsl v0.2d, v1.2s, v2.2s
1271 # CHECK: umlsl2 v0.8h, v1.16b, v2.16b
1272 # CHECK: umlsl2 v0.4s, v1.8h, v2.8h
1273 # CHECK: umlsl2 v0.2d, v1.4s, v2.4s
1278 # CHECK: smull v0.8h, v1.8b, v2.8b
1279 # CHECK: smull v0.4s, v1.4h, v2.4h
1280 # CHECK: smull v0.2d, v1.2s, v2.2s
1285 # CHECK: smull2 v0.8h, v1.16b, v2.16b
1286 # CHECK: smull2 v0.4s, v1.8h, v2.8h
1287 # CHECK: smull2 v0.2d, v1.4s, v2.4s
1292 # CHECK: umull v0.8h, v1.8b, v2.8b
1293 # CHECK: umull v0.4s, v1.4h, v2.4h
1294 # CHECK: umull v0.2d, v1.2s, v2.2s
1299 # CHECK: umull2 v0.8h, v1.16b, v2.16b
1300 # CHECK: umull2 v0.4s, v1.8h, v2.8h
1301 # CHECK: umull2 v0.2d, v1.4s, v2.4s
1306 #------------------------------------------------------------------------------
1308 #------------------------------------------------------------------------------
1310 # CHECK: sqdmlal v0.4s, v1.4h, v2.4h
1311 # CHECK: sqdmlal v0.2d, v1.2s, v2.2s
1315 # CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h
1316 # CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s
1320 # CHECK: sqdmlsl v0.4s, v1.4h, v2.4h
1321 # CHECK: sqdmlsl v0.2d, v1.2s, v2.2s
1325 # CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h
1326 # CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s
1330 # CHECK: sqdmull v0.4s, v1.4h, v2.4h
1331 # CHECK: sqdmull v0.2d, v1.2s, v2.2s
1335 # CHECK: sqdmull2 v0.4s, v1.8h, v2.8h
1336 # CHECK: sqdmull2 v0.2d, v1.4s, v2.4s
1340 #------------------------------------------------------------------------------
1342 #------------------------------------------------------------------------------
1344 # CHECK: pmull v0.8h, v1.8b, v2.8b
1347 # CHECK: pmull2 v0.8h, v1.16b, v2.16b
1350 #------------------------------------------------------------------------------
1352 #------------------------------------------------------------------------------
1354 # CHECK: saddw v0.8h, v1.8h, v2.8b
1355 # CHECK: saddw v0.4s, v1.4s, v2.4h
1356 # CHECK: saddw v0.2d, v1.2d, v2.2s
1361 # CHECK: saddw2 v0.8h, v1.8h, v2.16b
1362 # CHECK: saddw2 v0.4s, v1.4s, v2.8h
1363 # CHECK: saddw2 v0.2d, v1.2d, v2.4s
1368 # CHECK: uaddw v0.8h, v1.8h, v2.8b
1369 # CHECK: uaddw v0.4s, v1.4s, v2.4h
1370 # CHECK: uaddw v0.2d, v1.2d, v2.2s
1375 # CHECK: uaddw2 v0.8h, v1.8h, v2.16b
1376 # CHECK: uaddw2 v0.4s, v1.4s, v2.8h
1377 # CHECK: uaddw2 v0.2d, v1.2d, v2.4s
1382 # CHECK: ssubw v0.8h, v1.8h, v2.8b
1383 # CHECK: ssubw v0.4s, v1.4s, v2.4h
1384 # CHECK: ssubw v0.2d, v1.2d, v2.2s
1389 # CHECK: ssubw2 v0.8h, v1.8h, v2.16b
1390 # CHECK: ssubw2 v0.4s, v1.4s, v2.8h
1391 # CHECK: ssubw2 v0.2d, v1.2d, v2.4s
1396 # CHECK: usubw v0.8h, v1.8h, v2.8b
1397 # CHECK: usubw v0.4s, v1.4s, v2.4h
1398 # CHECK: usubw v0.2d, v1.2d, v2.2s
1403 # CHECK: usubw2 v0.8h, v1.8h, v2.16b
1404 # CHECK: usubw2 v0.4s, v1.4s, v2.8h
1405 # CHECK: usubw2 v0.2d, v1.2d, v2.4s
1410 #------------------------------------------------------------------------------
1412 #------------------------------------------------------------------------------
1414 # CHECK: addhn v0.8b, v1.8h, v2.8h
1415 # CHECK: addhn v0.4h, v1.4s, v2.4s
1416 # CHECK: addhn v0.2s, v1.2d, v2.2d
1421 # CHECK: addhn2 v0.16b, v1.8h, v2.8h
1422 # CHECK: addhn2 v0.8h, v1.4s, v2.4s
1423 # CHECK: addhn2 v0.4s, v1.2d, v2.2d
1428 # CHECK: raddhn v0.8b, v1.8h, v2.8h
1429 # CHECK: raddhn v0.4h, v1.4s, v2.4s
1430 # CHECK: raddhn v0.2s, v1.2d, v2.2d
1435 # CHECK: raddhn2 v0.16b, v1.8h, v2.8h
1436 # CHECK: raddhn2 v0.8h, v1.4s, v2.4s
1437 # CHECK: raddhn2 v0.4s, v1.2d, v2.2d
1442 # CHECK: rsubhn v0.8b, v1.8h, v2.8h
1443 # CHECK: rsubhn v0.4h, v1.4s, v2.4s
1444 # CHECK: rsubhn v0.2s, v1.2d, v2.2d
1449 # CHECK: rsubhn2 v0.16b, v1.8h, v2.8h
1450 # CHECK: rsubhn2 v0.8h, v1.4s, v2.4s
1451 # CHECK: rsubhn2 v0.4s, v1.2d, v2.2d
1456 #----------------------------------------------------------------------
1457 # Scalar Integer Saturating Doubling Multiply Half High
1458 #----------------------------------------------------------------------
1459 # CHECK: sqdmulh h10, h11, h12
1460 # CHECK: sqdmulh s20, s21, s2
1464 #----------------------------------------------------------------------
1465 # Scalar Integer Saturating Rounding Doubling Multiply Half High
1466 #----------------------------------------------------------------------
1467 # CHECK: sqrdmulh h10, h11, h12
1468 # CHECK: sqrdmulh s20, s21, s2
1472 #----------------------------------------------------------------------
1473 # Floating-point multiply extended
1474 #----------------------------------------------------------------------
1475 # CHECK: fmulx s20, s22, s15
1476 # CHECK: fmulx d23, d11, d1
1480 #----------------------------------------------------------------------
1481 # Floating-point Reciprocal Step
1482 #----------------------------------------------------------------------
1483 # CHECK: frecps s21, s16, s13
1484 # CHECK: frecps d22, d30, d21
1488 #----------------------------------------------------------------------
1489 # Floating-point Reciprocal Square Root Step
1490 #----------------------------------------------------------------------
1491 # CHECK: frsqrts s21, s5, s12
1492 # CHECK: frsqrts d8, d22, d18
1496 #----------------------------------------------------------------------
1497 # Scalar Signed Integer Convert To Floating-point
1498 #----------------------------------------------------------------------
1499 # CHECK: scvtf s22, s13
1500 # CHECK: scvtf d21, d12
1504 #----------------------------------------------------------------------
1505 # Scalar Unsigned Integer Convert To Floating-point
1506 #----------------------------------------------------------------------
1507 # CHECK: ucvtf s22, s13
1508 # CHECK: ucvtf d21, d14
1512 #----------------------------------------------------------------------
1513 # Scalar Floating-point Reciprocal Estimate
1514 #----------------------------------------------------------------------
1515 # CHECK: frecpe s19, s14
1516 # CHECK: frecpe d13, d13
1520 #----------------------------------------------------------------------
1521 # Scalar Floating-point Reciprocal Exponent
1522 #----------------------------------------------------------------------
1523 # CHECK: frecpx s18, s10
1524 # CHECK: frecpx d16, d19
1528 #----------------------------------------------------------------------
1529 # Scalar Floating-point Reciprocal Square Root Estimate
1530 #----------------------------------------------------------------------
1531 # CHECK: frsqrte s22, s13
1532 # CHECK: frsqrte d21, d12
1536 #----------------------------------------------------------------------
1537 # Scalar Compare Bitwise Equal
1538 #----------------------------------------------------------------------
1539 # CHECK: cmeq d20, d21, d22
1542 #----------------------------------------------------------------------
1543 # Scalar Compare Bitwise Equal To Zero
1544 #----------------------------------------------------------------------
1545 # CHECK: cmeq d20, d21, #0x0
1548 #----------------------------------------------------------------------
1549 # Scalar Compare Unsigned Higher Or Same
1550 #----------------------------------------------------------------------
1551 # CHECK: cmhs d20, d21, d22
1555 #----------------------------------------------------------------------
1556 # Scalar Compare Signed Greather Than Or Equal
1557 #----------------------------------------------------------------------
1558 # CHECK: cmge d20, d21, d22
1561 #----------------------------------------------------------------------
1562 # Scalar Compare Signed Greather Than Or Equal To Zero
1563 #----------------------------------------------------------------------
1564 # CHECK: cmge d20, d21, #0x0
1567 #----------------------------------------------------------------------
1568 # Scalar Compare Unsigned Higher
1569 #----------------------------------------------------------------------
1570 # CHECK: cmhi d20, d21, d22
1573 #----------------------------------------------------------------------
1574 # Scalar Compare Signed Greater Than
1575 #----------------------------------------------------------------------
1576 # CHECK: cmgt d20, d21, d22
1579 #----------------------------------------------------------------------
1580 # Scalar Compare Signed Greater Than Zero
1581 #----------------------------------------------------------------------
1582 # CHECK: cmgt d20, d21, #0x0
1585 #----------------------------------------------------------------------
1586 # Scalar Compare Signed Less Than Or Equal To Zero
1587 #----------------------------------------------------------------------
1588 # CHECK: cmle d20, d21, #0x0
1591 #----------------------------------------------------------------------
1592 # Scalar Compare Less Than Zero
1593 #----------------------------------------------------------------------
1594 # CHECK: cmlt d20, d21, #0x0
1597 #----------------------------------------------------------------------
1598 # Scalar Compare Bitwise Test Bits
1599 #----------------------------------------------------------------------
1600 # CHECK: cmtst d20, d21, d22
1603 #----------------------------------------------------------------------
1604 # Scalar Floating-point Compare Mask Equal
1605 #----------------------------------------------------------------------
1606 # CHECK: fcmeq s10, s11, s12
1607 # CHECK: fcmeq d20, d21, d22
1611 #----------------------------------------------------------------------
1612 # Scalar Floating-point Compare Mask Equal To Zero
1613 #----------------------------------------------------------------------
1614 # CHECK: fcmeq s10, s11, #0.0
1615 # CHECK: fcmeq d20, d21, #0.0
1619 #----------------------------------------------------------------------
1620 # Scalar Floating-point Compare Mask Greater Than Or Equal
1621 #----------------------------------------------------------------------
1622 # CHECK: fcmge s10, s11, s12
1623 # CHECK: fcmge d20, d21, d22
1627 #----------------------------------------------------------------------
1628 # Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
1629 #----------------------------------------------------------------------
1630 # CHECK: fcmge s10, s11, #0.0
1631 # CHECK: fcmge d20, d21, #0.0
1635 #----------------------------------------------------------------------
1636 # Scalar Floating-point Compare Mask Greather Than
1637 #----------------------------------------------------------------------
1638 # CHECK: fcmgt s10, s11, s12
1639 # CHECK: fcmgt d20, d21, d22
1643 #----------------------------------------------------------------------
1644 # Scalar Floating-point Compare Mask Greather Than Zero
1645 #----------------------------------------------------------------------
1646 # CHECK: fcmgt s10, s11, #0.0
1647 # CHECK: fcmgt d20, d21, #0.0
1651 #----------------------------------------------------------------------
1652 # Scalar Floating-point Compare Mask Less Than Or Equal To Zero
1653 #----------------------------------------------------------------------
1654 # CHECK: fcmle s10, s11, #0.0
1655 # CHECK: fcmle d20, d21, #0.0
1659 #----------------------------------------------------------------------
1660 # Scalar Floating-point Compare Mask Less Than
1661 #----------------------------------------------------------------------
1662 # CHECK: fcmlt s10, s11, #0.0
1663 # CHECK: fcmlt d20, d21, #0.0
1667 #----------------------------------------------------------------------
1668 # Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
1669 #----------------------------------------------------------------------
1670 # CHECK: facge s10, s11, s12
1671 # CHECK: facge d20, d21, d22
1675 #----------------------------------------------------------------------
1676 # Scalar Floating-point Absolute Compare Mask Greater Than
1677 #----------------------------------------------------------------------
1678 # CHECK: facgt s10, s11, s12
1679 # CHECK: facgt d20, d21, d22
1683 #----------------------------------------------------------------------
1684 # Scalar Absolute Value
1685 #----------------------------------------------------------------------
1686 # CHECK: abs d29, d24
1689 #----------------------------------------------------------------------
1690 # Scalar Signed Saturating Absolute Value
1691 #----------------------------------------------------------------------
1692 # CHECK: sqabs b19, b14
1693 # CHECK: sqabs h21, h15
1694 # CHECK: sqabs s20, s12
1695 # CHECK: sqabs d18, d12
1701 #----------------------------------------------------------------------
1703 #----------------------------------------------------------------------
1704 # CHECK: neg d29, d24
1707 #----------------------------------------------------------------------
1708 # Scalar Signed Saturating Negate
1709 #----------------------------------------------------------------------
1710 # CHECK: sqneg b19, b14
1711 # CHECK: sqneg h21, h15
1712 # CHECK: sqneg s20, s12
1713 # CHECK: sqneg d18, d12
1719 #----------------------------------------------------------------------
1720 # Signed Saturating Accumulated of Unsigned Value
1721 #----------------------------------------------------------------------
1722 # CHECK: suqadd b19, b14
1723 # CHECK: suqadd h20, h15
1724 # CHECK: suqadd s21, s12
1725 # CHECK: suqadd d18, d22
1731 #----------------------------------------------------------------------
1732 # Unsigned Saturating Accumulated of Signed Value
1733 #----------------------------------------------------------------------
1734 # CHECK: usqadd b19, b14
1735 # CHECK: usqadd h20, h15
1736 # CHECK: usqadd s21, s12
1737 # CHECK: usqadd d18, d22
1743 #----------------------------------------------------------------------
1744 # Signed Saturating Doubling Multiply-Add Long
1745 #----------------------------------------------------------------------
1746 # CHECK: sqdmlal s17, h27, h12
1747 # CHECK: sqdmlal d19, s24, s12
1751 #----------------------------------------------------------------------
1752 # Signed Saturating Doubling Multiply-Subtract Long
1753 #----------------------------------------------------------------------
1754 # CHECK: sqdmlsl s14, h12, h25
1755 # CHECK: sqdmlsl d12, s23, s13
1759 #----------------------------------------------------------------------
1760 # Signed Saturating Doubling Multiply Long
1761 #----------------------------------------------------------------------
1762 # CHECK: sqdmull s12, h22, h12
1763 # CHECK: sqdmull d15, s22, s12
1767 #----------------------------------------------------------------------
1768 # Scalar Signed Saturating Extract Unsigned Narrow
1769 #----------------------------------------------------------------------
1770 # CHECK: sqxtun b19, h14
1771 # CHECK: sqxtun h21, s15
1772 # CHECK: sqxtun s20, d12
1777 #----------------------------------------------------------------------
1778 # Scalar Signed Saturating Extract Signed Narrow
1779 #----------------------------------------------------------------------
1780 # CHECK: sqxtn b18, h18
1781 # CHECK: sqxtn h20, s17
1782 # CHECK: sqxtn s19, d14
1787 #----------------------------------------------------------------------
1788 # Scalar Unsigned Saturating Extract Narrow
1789 #----------------------------------------------------------------------
1790 # CHECK: uqxtn b18, h18
1791 # CHECK: uqxtn h20, s17
1792 # CHECK: uqxtn s19, d14
1797 #----------------------------------------------------------------------
1798 # Scalar Signed Shift Right (Immediate)
1799 #----------------------------------------------------------------------
1800 # CHECK: sshr d15, d16, #12
1803 #----------------------------------------------------------------------
1804 # Scalar Unsigned Shift Right (Immediate)
1805 #----------------------------------------------------------------------
1806 # CHECK: ushr d10, d17, #18
1809 #----------------------------------------------------------------------
1810 # Scalar Signed Rounding Shift Right (Immediate)
1811 #----------------------------------------------------------------------
1812 # CHECK: srshr d19, d18, #7
1815 #----------------------------------------------------------------------
1816 # Scalar Unigned Rounding Shift Right (Immediate)
1817 #----------------------------------------------------------------------
1818 # CHECK: urshr d20, d23, #31
1821 #----------------------------------------------------------------------
1822 # Scalar Signed Shift Right and Accumulate (Immediate)
1823 #----------------------------------------------------------------------
1824 # CHECK: ssra d18, d12, #21
1827 #----------------------------------------------------------------------
1828 # Scalar Unsigned Shift Right and Accumulate (Immediate)
1829 #----------------------------------------------------------------------
1830 # CHECK: usra d20, d13, #61
1833 #----------------------------------------------------------------------
1834 # Scalar Signed Rounding Shift Right and Accumulate (Immediate)
1835 #----------------------------------------------------------------------
1836 # CHECK: srsra d15, d11, #19
1839 #----------------------------------------------------------------------
1840 # Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
1841 #----------------------------------------------------------------------
1842 # CHECK: ursra d18, d10, #13
1845 #----------------------------------------------------------------------
1846 # Scalar Shift Left (Immediate)
1847 #----------------------------------------------------------------------
1848 # CHECK: shl d7, d10, #12
1851 #----------------------------------------------------------------------
1852 # Signed Saturating Shift Left (Immediate)
1853 #----------------------------------------------------------------------
1854 # CHECK: sqshl b11, b19, #7
1855 # CHECK: sqshl h13, h18, #11
1856 # CHECK: sqshl s14, s17, #22
1857 # CHECK: sqshl d15, d16, #51
1863 #----------------------------------------------------------------------
1864 # Unsigned Saturating Shift Left (Immediate)
1865 #----------------------------------------------------------------------
1866 # CHECK: uqshl b18, b15, #6
1867 # CHECK: uqshl h11, h18, #7
1868 # CHECK: uqshl s14, s19, #18
1869 # CHECK: uqshl d15, d12, #19
1875 #----------------------------------------------------------------------
1876 # Signed Saturating Shift Left Unsigned (Immediate)
1877 #----------------------------------------------------------------------
1878 # CHECK: sqshlu b15, b18, #6
1879 # CHECK: sqshlu h19, h17, #6
1880 # CHECK: sqshlu s16, s14, #25
1881 # CHECK: sqshlu d11, d13, #32
1887 #----------------------------------------------------------------------
1888 # Shift Right And Insert (Immediate)
1889 #----------------------------------------------------------------------
1890 # CHECK: sri d10, d12, #14
1893 #----------------------------------------------------------------------
1894 # Shift Left And Insert (Immediate)
1895 #----------------------------------------------------------------------
1896 # CHECK: sli d10, d14, #12
1899 #----------------------------------------------------------------------
1900 # Signed Saturating Shift Right Narrow (Immediate)
1901 #----------------------------------------------------------------------
1902 # CHECK: sqshrn b10, h15, #5
1903 # CHECK: sqshrn h17, s10, #4
1904 # CHECK: sqshrn s18, d10, #31
1909 #----------------------------------------------------------------------
1910 # Unsigned Saturating Shift Right Narrow (Immediate)
1911 #----------------------------------------------------------------------
1912 # CHECK: uqshrn b12, h10, #7
1913 # CHECK: uqshrn h10, s14, #5
1914 # CHECK: uqshrn s10, d12, #13
1919 #----------------------------------------------------------------------
1920 # Signed Saturating Rounded Shift Right Narrow (Immediate)
1921 #----------------------------------------------------------------------
1922 # CHECK: sqrshrn b10, h13, #2
1923 # CHECK: sqrshrn h15, s10, #6
1924 # CHECK: sqrshrn s15, d12, #9
1929 #----------------------------------------------------------------------
1930 # Unsigned Saturating Rounded Shift Right Narrow (Immediate)
1931 #----------------------------------------------------------------------
1932 # CHECK: uqrshrn b10, h12, #5
1933 # CHECK: uqrshrn h12, s10, #14
1934 # CHECK: uqrshrn s10, d10, #25
1939 #----------------------------------------------------------------------
1940 # Signed Saturating Shift Right Unsigned Narrow (Immediate)
1941 #----------------------------------------------------------------------
1942 # CHECK: sqshrun b15, h10, #7
1943 # CHECK: sqshrun h20, s14, #3
1944 # CHECK: sqshrun s10, d15, #15
1949 #----------------------------------------------------------------------
1950 # Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
1951 #----------------------------------------------------------------------
1952 # CHECK: sqrshrun b17, h10, #6
1953 # CHECK: sqrshrun h10, s13, #15
1954 # CHECK: sqrshrun s22, d16, #31
1959 #----------------------------------------------------------------------
1960 # Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
1961 #----------------------------------------------------------------------
1962 # CHECK: scvtf s22, s13, #32
1963 # CHECK: scvtf d21, d12, #64
1967 #----------------------------------------------------------------------
1968 # Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
1969 #----------------------------------------------------------------------
1970 # CHECK: ucvtf s22, s13, #32
1971 # CHECK: ucvtf d21, d14, #64
1975 #----------------------------------------------------------------------
1976 # Scalar Floating-point Convert To Signed Fixed-point (Immediate)
1977 #----------------------------------------------------------------------
1978 # CHECK: fcvtzs s21, s12, #1
1979 # CHECK: fcvtzs d21, d12, #1
1983 #----------------------------------------------------------------------
1984 # Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
1985 #----------------------------------------------------------------------
1986 # CHECK: fcvtzu s21, s12, #1
1987 # CHECK: fcvtzu d21, d12, #1
1991 #----------------------------------------------------------------------
1992 # Vector load/store multiple N-element structure
1993 #----------------------------------------------------------------------
1994 # CHECK: ld1 {v0.16b}, [x0]
1995 # CHECK: ld1 {v15.8h, v16.8h}, [x15]
1996 # CHECK: ld1 {v31.4s, v0.4s, v1.4s}, [sp]
1997 # CHECK: ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
2003 # CHECK: ld2 {v0.8b, v1.8b}, [x0]
2004 # CHECK: ld3 {v15.4h, v16.4h, v17.4h}, [x15]
2005 # CHECK: ld4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
2010 # CHECK: st1 {v0.16b}, [x0]
2011 # CHECK: st1 {v15.8h, v16.8h}, [x15]
2012 # CHECK: st1 {v31.4s, v0.4s, v1.4s}, [sp]
2013 # CHECK: st1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
2019 # CHECK: st2 {v0.8b, v1.8b}, [x0]
2020 # CHECK: st3 {v15.4h, v16.4h, v17.4h}, [x15]
2021 # CHECK: st4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
2026 #----------------------------------------------------------------------
2027 # Vector load/store multiple N-element structure (post-index)
2028 #----------------------------------------------------------------------
2029 # CHECK: ld1 {v15.8h}, [x15], x2
2030 # CHECK: ld1 {v31.4s, v0.4s}, [sp], #32
2031 # CHECK: ld1 {v0.2d, v1.2d, v2.2d}, [x0], #48
2032 # CHECK: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
2038 # CHECK: ld2 {v0.16b, v1.16b}, [x0], x1
2039 # CHECK: ld3 {v15.8h, v16.8h, v17.8h}, [x15], x2
2040 # CHECK: ld4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
2046 # CHECK: st1 {v15.8h}, [x15], x2
2047 # CHECK: st1 {v31.4s, v0.4s}, [sp], #32
2048 # CHECK: st1 {v0.2d, v1.2d, v2.2d}, [x0], #48
2049 # CHECK: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
2055 # CHECK: st2 {v0.16b, v1.16b}, [x0], x1
2056 # CHECK: st3 {v15.8h, v16.8h, v17.8h}, [x15], x2
2057 # CHECK: st4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
2062 #----------------------------------------------------------------------
2063 # Vector load single N-element structure to all lane of N
2064 # consecutive registers (N = 1,2,3,4)
2065 #----------------------------------------------------------------------
2066 # CHECK: ld1r {v0.16b}, [x0]
2067 # CHECK: ld1r {v15.8h}, [x15]
2068 # CHECK: ld2r {v31.4s, v0.4s}, [sp]
2069 # CHECK: ld2r {v0.2d, v1.2d}, [x0]
2070 # CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0]
2071 # CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15]
2072 # CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
2073 # CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp]
2083 #----------------------------------------------------------------------
2084 # Vector load/store single N-element structure to/from one lane of N
2085 # consecutive registers (N = 1,2,3,4)
2086 #----------------------------------------------------------------------
2087 # CHECK: ld1 {v0.b}[9], [x0]
2088 # CHECK: ld2 {v15.h, v16.h}[7], [x15]
2089 # CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp]
2090 # CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0]
2091 # CHECK: st1 {v0.d}[1], [x0]
2092 # CHECK: st2 {v31.s, v0.s}[3], [sp]
2093 # CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15]
2094 # CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0]
2104 #----------------------------------------------------------------------
2105 # Post-index of vector load single N-element structure to all lane of N
2106 # consecutive registers (N = 1,2,3,4)
2107 #----------------------------------------------------------------------
2108 # CHECK: ld1r {v0.16b}, [x0], #1
2109 # CHECK: ld1r {v15.8h}, [x15], #2
2110 # CHECK: ld2r {v31.4s, v0.4s}, [sp], #8
2111 # CHECK: ld2r {v0.2d, v1.2d}, [x0], #16
2112 # CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0], #3
2113 # CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #6
2114 # CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp], x30
2115 # CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], x7
2125 #----------------------------------------------------------------------
2126 # Post-index of vector load/store single N-element structure to/from
2127 # one lane of N consecutive registers (N = 1,2,3,4)
2128 #----------------------------------------------------------------------
2129 # CHECK: ld1 {v0.b}[9], [x0], #1
2130 # CHECK: ld2 {v15.h, v16.h}[7], [x15], #4
2131 # CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp], x3
2132 # CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
2133 # CHECK: st1 {v0.d}[1], [x0], #8
2134 # CHECK: st2 {v31.s, v0.s}[3], [sp], #8
2135 # CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15], #6
2136 # CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0], x5
2146 #----------------------------------------------------------------------
2148 #----------------------------------------------------------------------
2151 # CHECK: ext v0.8b, v1.8b, v2.8b, #0x3
2152 # CHECK: ext v0.16b, v1.16b, v2.16b, #0x3
2154 #----------------------------------------------------------------------
2155 # unzip with 3 same vectors to get primary result
2156 #----------------------------------------------------------------------
2157 # CHECK: uzp1 v1.8b, v1.8b, v2.8b
2158 # CHECK: uzp1 v2.16b, v1.16b, v2.16b
2159 # CHECK: uzp1 v3.4h, v1.4h, v2.4h
2160 # CHECK: uzp1 v4.8h, v1.8h, v2.8h
2161 # CHECK: uzp1 v5.2s, v1.2s, v2.2s
2162 # CHECK: uzp1 v6.4s, v1.4s, v2.4s
2163 # CHECK: uzp1 v7.2d, v1.2d, v2.2d
2172 #----------------------------------------------------------------------
2173 # transpose with 3 same vectors to get primary result
2174 #----------------------------------------------------------------------
2175 # CHECK: trn1 v8.8b, v1.8b, v2.8b
2176 # CHECK: trn1 v9.16b, v1.16b, v2.16b
2177 # CHECK: trn1 v10.4h, v1.4h, v2.4h
2178 # CHECK: trn1 v27.8h, v7.8h, v2.8h
2179 # CHECK: trn1 v12.2s, v7.2s, v2.2s
2180 # CHECK: trn1 v29.4s, v6.4s, v2.4s
2181 # CHECK: trn1 v14.2d, v6.2d, v2.2d
2190 #----------------------------------------------------------------------
2191 # zip with 3 same vectors to get primary result
2192 #----------------------------------------------------------------------
2193 # CHECK: zip1 v31.8b, v5.8b, v2.8b
2194 # CHECK: zip1 v0.16b, v5.16b, v2.16b
2195 # CHECK: zip1 v17.4h, v4.4h, v2.4h
2196 # CHECK: zip1 v2.8h, v4.8h, v2.8h
2197 # CHECK: zip1 v19.2s, v3.2s, v2.2s
2198 # CHECK: zip1 v4.4s, v3.4s, v2.4s
2199 # CHECK: zip1 v21.2d, v2.2d, v2.2d
2208 #----------------------------------------------------------------------
2209 # unzip with 3 same vectors to get secondary result
2210 #----------------------------------------------------------------------
2211 # CHECK: uzp2 v6.8b, v2.8b, v2.8b
2212 # CHECK: uzp2 v23.16b, v1.16b, v2.16b
2213 # CHECK: uzp2 v8.4h, v1.4h, v2.4h
2214 # CHECK: uzp2 v25.8h, v0.8h, v2.8h
2215 # CHECK: uzp2 v10.2s, v0.2s, v2.2s
2216 # CHECK: uzp2 v27.4s, v7.4s, v2.4s
2217 # CHECK: uzp2 v12.2d, v7.2d, v2.2d
2226 #----------------------------------------------------------------------
2227 # transpose with 3 same vectors to get secondary result
2228 #----------------------------------------------------------------------
2229 # CHECK: trn2 v29.8b, v6.8b, v2.8b
2230 # CHECK: trn2 v14.16b, v6.16b, v2.16b
2231 # CHECK: trn2 v31.4h, v5.4h, v2.4h
2232 # CHECK: trn2 v0.8h, v5.8h, v2.8h
2233 # CHECK: trn2 v17.2s, v4.2s, v2.2s
2234 # CHECK: trn2 v2.4s, v4.4s, v2.4s
2235 # CHECK: trn2 v19.2d, v3.2d, v2.2d
2244 #----------------------------------------------------------------------
2245 # zip with 3 same vectors to get secondary result
2246 #----------------------------------------------------------------------
2247 # CHECK: zip2 v4.8b, v3.8b, v2.8b
2248 # CHECK: zip2 v21.16b, v2.16b, v2.16b
2249 # CHECK: zip2 v6.4h, v2.4h, v2.4h
2250 # CHECK: zip2 v23.8h, v1.8h, v2.8h
2251 # CHECK: zip2 v8.2s, v1.2s, v2.2s
2252 # CHECK: zip2 v25.4s, v0.4s, v2.4s
2253 # CHECK: zip2 v10.2d, v0.2d, v2.2d
2262 #----------------------------------------------------------------------
2263 # Scalar Floating Point multiply (scalar, by element)
2264 #----------------------------------------------------------------------
2265 # CHECK: fmul s0, s1, v1.s[0]
2266 # CHECK: fmul s0, s1, v1.s[3]
2267 # CHECK: fmul d0, d1, v1.d[0]
2268 # CHECK: fmul d0, d1, v1.d[1]
2269 # CHECK: fmul d15, d15, v15.d[1]
2276 #----------------------------------------------------------------------
2277 # Scalar Floating Point multiply extended (scalar, by element)
2278 #----------------------------------------------------------------------
2279 # CHECK: fmulx s3, s5, v7.s[0]
2280 # CHECK: fmulx s3, s5, v7.s[3]
2281 # CHECK: fmulx s3, s5, v15.s[3]
2282 # CHECK: fmulx d0, d4, v8.d[0]
2283 # CHECK: fmulx d0, d4, v8.d[1]
2290 #----------------------------------------------------------------------
2291 # Scalar Floating Point fused multiply-add (scalar, by element)
2292 #----------------------------------------------------------------------
2293 # CHECK: fmla s0, s1, v1.s[0]
2294 # CHECK: fmla s0, s1, v1.s[3]
2295 # CHECK: fmla d0, d1, v1.d[0]
2296 # CHECK: fmla d0, d1, v1.d[1]
2297 # CHECK: fmla d15, d15, v15.d[1]
2304 #----------------------------------------------------------------------
2305 # Scalar Floating Point fused multiply-sub (scalar, by element)
2306 #----------------------------------------------------------------------
2307 # CHECK: fmls s3, s5, v7.s[0]
2308 # CHECK: fmls s3, s5, v7.s[3]
2309 # CHECK: fmls s3, s5, v15.s[3]
2310 # CHECK: fmls d0, d4, v8.d[0]
2311 # CHECK: fmls d0, d4, v8.d[1]
2318 #----------------------------------------------------------------------
2319 # Scalar Signed saturating doubling
2320 # multiply-add long (scalar, by element)
2321 #----------------------------------------------------------------------
2322 # CHECK: sqdmlal s0, h0, v0.h[0]
2323 # CHECK: sqdmlal s0, h0, v0.h[1]
2324 # CHECK: sqdmlal s0, h0, v0.h[2]
2325 # CHECK: sqdmlal s0, h0, v0.h[3]
2326 # CHECK: sqdmlal s0, h0, v0.h[4]
2327 # CHECK: sqdmlal s0, h0, v0.h[5]
2328 # CHECK: sqdmlal s0, h0, v0.h[6]
2329 # CHECK: sqdmlal s0, h0, v0.h[7]
2330 # CHECK: sqdmlal d8, s9, v15.s[0]
2331 # CHECK: sqdmlal d8, s9, v15.s[1]
2332 # CHECK: sqdmlal d8, s9, v15.s[2]
2333 # CHECK: sqdmlal d8, s9, v15.s[3]
2347 #----------------------------------------------------------------------
2348 # Scalar Signed saturating doubling
2349 # multiply-sub long (scalar, by element)
2350 #----------------------------------------------------------------------
2351 # CHECK: sqdmlsl s0, h0, v0.h[0]
2352 # CHECK: sqdmlsl s0, h0, v0.h[1]
2353 # CHECK: sqdmlsl s0, h0, v0.h[2]
2354 # CHECK: sqdmlsl s0, h0, v0.h[3]
2355 # CHECK: sqdmlsl s0, h0, v0.h[4]
2356 # CHECK: sqdmlsl s0, h0, v0.h[5]
2357 # CHECK: sqdmlsl s0, h0, v0.h[6]
2358 # CHECK: sqdmlsl s0, h0, v0.h[7]
2359 # CHECK: sqdmlsl d8, s9, v15.s[0]
2360 # CHECK: sqdmlsl d8, s9, v15.s[1]
2361 # CHECK: sqdmlsl d8, s9, v15.s[2]
2362 # CHECK: sqdmlsl d8, s9, v15.s[3]
2376 #----------------------------------------------------------------------
2377 # Scalar Signed saturating doubling multiply long (scalar, by element)
2378 #----------------------------------------------------------------------
2379 # CHECK: sqdmull s1, h1, v1.h[0]
2380 # CHECK: sqdmull s1, h1, v1.h[1]
2381 # CHECK: sqdmull s1, h1, v1.h[2]
2382 # CHECK: sqdmull s1, h1, v1.h[3]
2383 # CHECK: sqdmull s1, h1, v1.h[4]
2384 # CHECK: sqdmull s1, h1, v1.h[5]
2385 # CHECK: sqdmull s1, h1, v1.h[6]
2386 # CHECK: sqdmull s1, h1, v1.h[7]
2387 # CHECK: sqdmull d1, s1, v4.s[0]
2388 # CHECK: sqdmull d1, s1, v4.s[1]
2389 # CHECK: sqdmull d1, s1, v4.s[2]
2390 # CHECK: sqdmull d1, s1, v4.s[3]
2404 #----------------------------------------------------------------------
2405 # Scalar Signed saturating doubling multiply returning
2406 # high half (scalar, by element)
2407 #----------------------------------------------------------------------
2408 # CHECK: sqdmulh h7, h1, v14.h[0]
2409 # CHECK: sqdmulh h7, h15, v8.h[1]
2410 # CHECK: sqdmulh h7, h15, v8.h[2]
2411 # CHECK: sqdmulh h7, h15, v8.h[3]
2412 # CHECK: sqdmulh h7, h15, v8.h[4]
2413 # CHECK: sqdmulh h7, h15, v8.h[5]
2414 # CHECK: sqdmulh h7, h15, v8.h[6]
2415 # CHECK: sqdmulh h7, h15, v8.h[7]
2416 # CHECK: sqdmulh s15, s3, v4.s[0]
2417 # CHECK: sqdmulh s15, s14, v16.s[1]
2418 # CHECK: sqdmulh s15, s15, v16.s[2]
2419 # CHECK: sqdmulh s15, s16, v17.s[3]
2433 #----------------------------------------------------------------------
2434 # Scalar Signed saturating rounding doubling multiply
2435 # returning high half (scalar, by element)
2436 #----------------------------------------------------------------------
2437 # CHECK: sqrdmulh h7, h1, v14.h[0]
2438 # CHECK: sqrdmulh h7, h15, v8.h[1]
2439 # CHECK: sqrdmulh h7, h15, v8.h[2]
2440 # CHECK: sqrdmulh h7, h15, v8.h[3]
2441 # CHECK: sqrdmulh h7, h15, v8.h[4]
2442 # CHECK: sqrdmulh h7, h15, v8.h[5]
2443 # CHECK: sqrdmulh h7, h15, v8.h[6]
2444 # CHECK: sqrdmulh h7, h15, v8.h[7]
2445 # CHECK: sqrdmulh s15, s3, v4.s[0]
2446 # CHECK: sqrdmulh s15, s14, v16.s[1]
2447 # CHECK: sqrdmulh s15, s15, v16.s[2]
2448 # CHECK: sqrdmulh s15, s16, v17.s[3]
2462 #----------------------------------------------------------------------
2463 #Duplicate element (scalar)
2464 #----------------------------------------------------------------------
2465 # CHECK: dup b0, v0.b[15]
2466 # CHECK: dup h2, v31.h[5]
2467 # CHECK: dup s17, v2.s[2]
2468 # CHECK: dup d6, v12.d[1]
2474 #----------------------------------------------------------------------
2476 #----------------------------------------------------------------------
2481 # CHECK: tbl v0.8b, {v1.16b}, v2.8b
2482 # CHECK: tbl v16.8b, {v31.16b, v0.16b}, v2.8b
2483 # CHECK: tbl v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b
2484 # CHECK: tbl v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b
2490 # CHECK: tbl v0.16b, {v1.16b}, v2.16b
2491 # CHECK: tbl v16.16b, {v31.16b, v0.16b}, v2.16b
2492 # CHECK: tbl v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b
2493 # CHECK: tbl v0.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b
2499 # CHECK: tbx v0.8b, {v1.16b}, v2.8b
2500 # CHECK: tbx v16.8b, {v31.16b, v0.16b}, v2.8b
2501 # CHECK: tbx v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b
2502 # CHECK: tbx v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b
2508 # CHECK: tbx v0.16b, {v1.16b}, v2.16b
2509 # CHECK: tbx v16.16b, {v31.16b, v0.16b}, v2.16b
2510 # CHECK: tbx v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b
2511 # CHECK: tbx v16.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b