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 long
679 #----------------------------------------------------------------------
680 # CHECK: shll2 v2.8h, v4.16b, #8
681 # CHECK: shll2 v6.4s, v8.8h, #16
682 # CHECK: shll2 v6.2d, v8.4s, #32
683 # CHECK: shll v2.8h, v4.8b, #8
684 # CHECK: shll v6.4s, v8.4h, #16
685 # CHECK: shll v6.2d, v8.2s, #32
694 #----------------------------------------------------------------------
695 # Vector Shift Left by Immediate
696 #----------------------------------------------------------------------
697 # CHECK: shl v0.4h, v1.4h, #3
698 # CHECK: shl v0.16b, v1.16b, #3
699 # CHECK: shl v0.4s, v1.4s, #3
700 # CHECK: shl v0.2d, v1.2d, #3
706 #----------------------------------------------------------------------
707 # Vector Shift Left Long (Signed, Unsigned) by Immediate
708 #----------------------------------------------------------------------
709 # CHECK: sshll v0.2d, v1.2s, #3
710 # CHECK: sshll2 v0.4s, v1.8h, #3
711 # CHECK: ushll v0.4s, v1.4h, #3
712 # CHECK: ushll2 v0.8h, v1.16b, #3
718 #-----------------------------------------------------------------------------
719 #Integer shift right (Signed)
720 #-----------------------------------------------------------------------------
721 # CHECK: sshr v0.8b, v1.8b, #3
722 # CHECK: sshr v0.4h, v1.4h, #3
723 # CHECK: sshr v0.2s, v1.2s, #3
724 # CHECK: sshr v0.16b, v1.16b, #3
725 # CHECK: sshr v0.8h, v1.8h, #3
726 # CHECK: sshr v0.4s, v1.4s, #3
727 # CHECK: sshr v0.2d, v1.2d, #3
736 #-----------------------------------------------------------------------------
737 #Integer shift right (Unsigned)
738 #-----------------------------------------------------------------------------
739 # CHECK: ushr v0.8b, v1.8b, #3
740 # CHECK: ushr v0.4h, v1.4h, #3
741 # CHECK: ushr v0.2s, v1.2s, #3
742 # CHECK: ushr v0.16b, v1.16b, #3
743 # CHECK: ushr v0.8h, v1.8h, #3
744 # CHECK: ushr v0.4s, v1.4s, #3
745 # CHECK: ushr v0.2d, v1.2d, #3
754 #-----------------------------------------------------------------------------
755 #Integer shift right and accumulate (Signed)
756 #-----------------------------------------------------------------------------
757 # CHECK: ssra v0.8b, v1.8b, #3
758 # CHECK: ssra v0.4h, v1.4h, #3
759 # CHECK: ssra v0.2s, v1.2s, #3
760 # CHECK: ssra v0.16b, v1.16b, #3
761 # CHECK: ssra v0.8h, v1.8h, #3
762 # CHECK: ssra v0.4s, v1.4s, #3
763 # CHECK: ssra v0.2d, v1.2d, #3
772 #-----------------------------------------------------------------------------
773 #Integer shift right and accumulate (Unsigned)
774 #-----------------------------------------------------------------------------
775 # CHECK: usra v0.8b, v1.8b, #3
776 # CHECK: usra v0.4h, v1.4h, #3
777 # CHECK: usra v0.2s, v1.2s, #3
778 # CHECK: usra v0.16b, v1.16b, #3
779 # CHECK: usra v0.8h, v1.8h, #3
780 # CHECK: usra v0.4s, v1.4s, #3
781 # CHECK: usra v0.2d, v1.2d, #3
790 #-----------------------------------------------------------------------------
791 #Integer rounding shift right (Signed)
792 #-----------------------------------------------------------------------------
793 # CHECK: srshr v0.8b, v1.8b, #3
794 # CHECK: srshr v0.4h, v1.4h, #3
795 # CHECK: srshr v0.2s, v1.2s, #3
796 # CHECK: srshr v0.16b, v1.16b, #3
797 # CHECK: srshr v0.8h, v1.8h, #3
798 # CHECK: srshr v0.4s, v1.4s, #3
799 # CHECK: srshr v0.2d, v1.2d, #3
808 #-----------------------------------------------------------------------------
809 #Integer rounding shift right (Unsigned)
810 #-----------------------------------------------------------------------------
811 # CHECK: urshr v0.8b, v1.8b, #3
812 # CHECK: urshr v0.4h, v1.4h, #3
813 # CHECK: urshr v0.2s, v1.2s, #3
814 # CHECK: urshr v0.16b, v1.16b, #3
815 # CHECK: urshr v0.8h, v1.8h, #3
816 # CHECK: urshr v0.4s, v1.4s, #3
817 # CHECK: urshr v0.2d, v1.2d, #3
826 #-----------------------------------------------------------------------------
827 #Integer rounding shift right and accumulate (Signed)
828 #-----------------------------------------------------------------------------
829 # CHECK: srsra v0.8b, v1.8b, #3
830 # CHECK: srsra v0.4h, v1.4h, #3
831 # CHECK: srsra v0.2s, v1.2s, #3
832 # CHECK: srsra v0.16b, v1.16b, #3
833 # CHECK: srsra v0.8h, v1.8h, #3
834 # CHECK: srsra v0.4s, v1.4s, #3
835 # CHECK: srsra v0.2d, v1.2d, #3
844 #-----------------------------------------------------------------------------
845 #Integer rounding shift right and accumulate (Unsigned)
846 #-----------------------------------------------------------------------------
847 # CHECK: ursra v0.8b, v1.8b, #3
848 # CHECK: ursra v0.4h, v1.4h, #3
849 # CHECK: ursra v0.2s, v1.2s, #3
850 # CHECK: ursra v0.16b, v1.16b, #3
851 # CHECK: ursra v0.8h, v1.8h, #3
852 # CHECK: ursra v0.4s, v1.4s, #3
853 # CHECK: ursra v0.2d, v1.2d, #3
862 #-----------------------------------------------------------------------------
863 #Integer shift right and insert
864 #-----------------------------------------------------------------------------
865 # CHECK: sri v0.8b, v1.8b, #3
866 # CHECK: sri v0.4h, v1.4h, #3
867 # CHECK: sri v0.2s, v1.2s, #3
868 # CHECK: sri v0.16b, v1.16b, #3
869 # CHECK: sri v0.8h, v1.8h, #3
870 # CHECK: sri v0.4s, v1.4s, #3
871 # CHECK: sri v0.2d, v1.2d, #3
880 #-----------------------------------------------------------------------------
881 #Integer shift left and insert
882 #-----------------------------------------------------------------------------
883 # CHECK: sli v0.8b, v1.8b, #3
884 # CHECK: sli v0.4h, v1.4h, #3
885 # CHECK: sli v0.2s, v1.2s, #3
886 # CHECK: sli v0.16b, v1.16b, #3
887 # CHECK: sli v0.8h, v1.8h, #3
888 # CHECK: sli v0.4s, v1.4s, #3
889 # CHECK: sli v0.2d, v1.2d, #3
898 #-----------------------------------------------------------------------------
899 #Integer saturating shift left unsigned
900 #-----------------------------------------------------------------------------
901 # CHECK: sqshlu v0.8b, v1.8b, #3
902 # CHECK: sqshlu v0.4h, v1.4h, #3
903 # CHECK: sqshlu v0.2s, v1.2s, #3
904 # CHECK: sqshlu v0.16b, v1.16b, #3
905 # CHECK: sqshlu v0.8h, v1.8h, #3
906 # CHECK: sqshlu v0.4s, v1.4s, #3
907 # CHECK: sqshlu v0.2d, v1.2d, #3
916 #-----------------------------------------------------------------------------
917 #Integer saturating shift left (Signed)
918 #-----------------------------------------------------------------------------
919 # CHECK: sqshl v0.8b, v1.8b, #3
920 # CHECK: sqshl v0.4h, v1.4h, #3
921 # CHECK: sqshl v0.2s, v1.2s, #3
922 # CHECK: sqshl v0.16b, v1.16b, #3
923 # CHECK: sqshl v0.8h, v1.8h, #3
924 # CHECK: sqshl v0.4s, v1.4s, #3
925 # CHECK: sqshl v0.2d, v1.2d, #3
934 #-----------------------------------------------------------------------------
935 #Integer saturating shift left (Unsigned)
936 #-----------------------------------------------------------------------------
937 # CHECK: uqshl v0.8b, v1.8b, #3
938 # CHECK: uqshl v0.4h, v1.4h, #3
939 # CHECK: uqshl v0.2s, v1.2s, #3
940 # CHECK: uqshl v0.16b, v1.16b, #3
941 # CHECK: uqshl v0.8h, v1.8h, #3
942 # CHECK: uqshl v0.4s, v1.4s, #3
943 # CHECK: uqshl v0.2d, v1.2d, #3
952 #-----------------------------------------------------------------------------
953 #Integer shift right narrow
954 #-----------------------------------------------------------------------------
955 # CHECK: shrn v0.8b, v1.8h, #3
956 # CHECK: shrn v0.4h, v1.4s, #3
957 # CHECK: shrn v0.2s, v1.2d, #3
958 # CHECK: shrn2 v0.16b, v1.8h, #3
959 # CHECK: shrn2 v0.8h, v1.4s, #3
960 # CHECK: shrn2 v0.4s, v1.2d, #3
968 #-----------------------------------------------------------------------------
969 #Integer saturating shift right unsigned narrow (Signed)
970 #-----------------------------------------------------------------------------
971 # CHECK: sqshrun v0.8b, v1.8h, #3
972 # CHECK: sqshrun v0.4h, v1.4s, #3
973 # CHECK: sqshrun v0.2s, v1.2d, #3
974 # CHECK: sqshrun2 v0.16b, v1.8h, #3
975 # CHECK: sqshrun2 v0.8h, v1.4s, #3
976 # CHECK: sqshrun2 v0.4s, v1.2d, #3
984 #-----------------------------------------------------------------------------
985 #Integer rounding shift right narrow
986 #-----------------------------------------------------------------------------
987 # CHECK: rshrn v0.8b, v1.8h, #3
988 # CHECK: rshrn v0.4h, v1.4s, #3
989 # CHECK: rshrn v0.2s, v1.2d, #3
990 # CHECK: rshrn2 v0.16b, v1.8h, #3
991 # CHECK: rshrn2 v0.8h, v1.4s, #3
992 # CHECK: rshrn2 v0.4s, v1.2d, #3
1000 #-----------------------------------------------------------------------------
1001 #Integer saturating shift right rounded unsigned narrow (Signed)
1002 #-----------------------------------------------------------------------------
1003 # CHECK: sqrshrun v0.8b, v1.8h, #3
1004 # CHECK: sqrshrun v0.4h, v1.4s, #3
1005 # CHECK: sqrshrun v0.2s, v1.2d, #3
1006 # CHECK: sqrshrun2 v0.16b, v1.8h, #3
1007 # CHECK: sqrshrun2 v0.8h, v1.4s, #3
1008 # CHECK: sqrshrun2 v0.4s, v1.2d, #3
1016 #-----------------------------------------------------------------------------
1017 #Integer saturating shift right narrow (Signed)
1018 #-----------------------------------------------------------------------------
1019 # CHECK: sqshrn v0.8b, v1.8h, #3
1020 # CHECK: sqshrn v0.4h, v1.4s, #3
1021 # CHECK: sqshrn v0.2s, v1.2d, #3
1022 # CHECK: sqshrn2 v0.16b, v1.8h, #3
1023 # CHECK: sqshrn2 v0.8h, v1.4s, #3
1024 # CHECK: sqshrn2 v0.4s, v1.2d, #3
1032 #-----------------------------------------------------------------------------
1033 #Integer saturating shift right narrow (Unsigned)
1034 #-----------------------------------------------------------------------------
1035 # CHECK: uqshrn v0.8b, v1.8h, #3
1036 # CHECK: uqshrn v0.4h, v1.4s, #3
1037 # CHECK: uqshrn v0.2s, v1.2d, #3
1038 # CHECK: uqshrn2 v0.16b, v1.8h, #3
1039 # CHECK: uqshrn2 v0.8h, v1.4s, #3
1040 # CHECK: uqshrn2 v0.4s, v1.2d, #3
1048 #-----------------------------------------------------------------------------
1049 #Integer saturating shift right rounded narrow (Signed)
1050 #-----------------------------------------------------------------------------
1051 # CHECK: sqrshrn v0.8b, v1.8h, #3
1052 # CHECK: sqrshrn v0.4h, v1.4s, #3
1053 # CHECK: sqrshrn v0.2s, v1.2d, #3
1054 # CHECK: sqrshrn2 v0.16b, v1.8h, #3
1055 # CHECK: sqrshrn2 v0.8h, v1.4s, #3
1056 # CHECK: sqrshrn2 v0.4s, v1.2d, #3
1064 #-----------------------------------------------------------------------------
1065 #Integer saturating shift right rounded narrow (Unsigned)
1066 #-----------------------------------------------------------------------------
1067 # CHECK: uqrshrn v0.8b, v1.8h, #3
1068 # CHECK: uqrshrn v0.4h, v1.4s, #3
1069 # CHECK: uqrshrn v0.2s, v1.2d, #3
1070 # CHECK: uqrshrn2 v0.16b, v1.8h, #3
1071 # CHECK: uqrshrn2 v0.8h, v1.4s, #3
1072 # CHECK: uqrshrn2 v0.4s, v1.2d, #3
1080 #-----------------------------------------------------------------------------
1081 #Fixed-point convert to floating-point
1082 #-----------------------------------------------------------------------------
1083 # CHECK: scvtf v0.2s, v1.2s, #3
1084 # CHECK: scvtf v0.4s, v1.4s, #3
1085 # CHECK: scvtf v0.2d, v1.2d, #3
1086 # CHECK: ucvtf v0.2s, v1.2s, #3
1087 # CHECK: ucvtf v0.4s, v1.4s, #3
1088 # CHECK: ucvtf v0.2d, v1.2d, #3
1097 #-----------------------------------------------------------------------------
1098 #Floating-point convert to fixed-point
1099 #-----------------------------------------------------------------------------
1100 # CHECK: fcvtzs v0.2s, v1.2s, #3
1101 # CHECK: fcvtzs v0.4s, v1.4s, #3
1102 # CHECK: fcvtzs v0.2d, v1.2d, #3
1103 # CHECK: fcvtzu v0.2s, v1.2s, #3
1104 # CHECK: fcvtzu v0.4s, v1.4s, #3
1105 # CHECK: fcvtzu v0.2d, v1.2d, #3
1114 #------------------------------------------------------------------------------
1115 # Vector with 3 operands having different data types
1116 #------------------------------------------------------------------------------
1118 #------------------------------------------------------------------------------
1120 #------------------------------------------------------------------------------
1122 #------------------------------------------------------------------------------
1124 #------------------------------------------------------------------------------
1126 # CHECK: saddl v0.8h, v1.8b, v2.8b
1127 # CHECK: saddl v0.4s, v1.4h, v2.4h
1128 # CHECK: saddl v0.2d, v1.2s, v2.2s
1133 # CHECK: saddl2 v0.4s, v1.8h, v2.8h
1134 # CHECK: saddl2 v0.8h, v1.16b, v2.16b
1135 # CHECK: saddl2 v0.2d, v1.4s, v2.4s
1140 # CHECK: uaddl v0.8h, v1.8b, v2.8b
1141 # CHECK: uaddl v0.4s, v1.4h, v2.4h
1142 # CHECK: uaddl v0.2d, v1.2s, v2.2s
1147 # CHECK: uaddl2 v0.8h, v1.16b, v2.16b
1148 # CHECK: uaddl2 v0.4s, v1.8h, v2.8h
1149 # CHECK: uaddl2 v0.2d, v1.4s, v2.4s
1154 # CHECK: ssubl v0.8h, v1.8b, v2.8b
1155 # CHECK: ssubl v0.4s, v1.4h, v2.4h
1156 # CHECK: ssubl v0.2d, v1.2s, v2.2s
1161 # CHECK: ssubl2 v0.8h, v1.16b, v2.16b
1162 # CHECK: ssubl2 v0.4s, v1.8h, v2.8h
1163 # CHECK: ssubl2 v0.2d, v1.4s, v2.4s
1168 # CHECK: usubl v0.8h, v1.8b, v2.8b
1169 # CHECK: usubl v0.4s, v1.4h, v2.4h
1170 # CHECK: usubl v0.2d, v1.2s, v2.2s
1175 # CHECK: usubl2 v0.8h, v1.16b, v2.16b
1176 # CHECK: usubl2 v0.4s, v1.8h, v2.8h
1177 # CHECK: usubl2 v0.2d, v1.4s, v2.4s
1182 # CHECK: sabal v0.8h, v1.8b, v2.8b
1183 # CHECK: sabal v0.4s, v1.4h, v2.4h
1184 # CHECK: sabal v0.2d, v1.2s, v2.2s
1189 # CHECK: sabal2 v0.8h, v1.16b, v2.16b
1190 # CHECK: sabal2 v0.4s, v1.8h, v2.8h
1191 # CHECK: sabal2 v0.2d, v1.4s, v2.4s
1196 # CHECK: uabal v0.8h, v1.8b, v2.8b
1197 # CHECK: uabal v0.4s, v1.4h, v2.4h
1198 # CHECK: uabal v0.2d, v1.2s, v2.2s
1203 # CHECK: uabal2 v0.8h, v1.16b, v2.16b
1204 # CHECK: uabal2 v0.4s, v1.8h, v2.8h
1205 # CHECK: uabal2 v0.2d, v1.4s, v2.4s
1210 # CHECK: sabdl v0.8h, v1.8b, v2.8b
1211 # CHECK: sabdl v0.4s, v1.4h, v2.4h
1212 # CHECK: sabdl v0.2d, v1.2s, v2.2s
1217 # CHECK: sabdl2 v0.8h, v1.16b, v2.16b
1218 # CHECK: sabdl2 v0.4s, v1.8h, v2.8h
1219 # CHECK: sabdl2 v0.2d, v1.4s, v2.4s
1224 # CHECK: uabdl v0.8h, v1.8b, v2.8b
1225 # CHECK: uabdl v0.4s, v1.4h, v2.4h
1226 # CHECK: uabdl v0.2d, v1.2s, v2.2s
1231 # CHECK: uabdl2 v0.8h, v1.16b, v2.16b
1232 # CHECK: uabdl2 v0.4s, v1.8h, v2.8h
1233 # CHECK: uabdl2 v0.2d, v1.4s, v2.4s
1238 # CHECK: smlal v0.8h, v1.8b, v2.8b
1239 # CHECK: smlal v0.4s, v1.4h, v2.4h
1240 # CHECK: smlal v0.2d, v1.2s, v2.2s
1245 # CHECK: smlal2 v0.8h, v1.16b, v2.16b
1246 # CHECK: smlal2 v0.4s, v1.8h, v2.8h
1247 # CHECK: smlal2 v0.2d, v1.4s, v2.4s
1252 # CHECK: umlal v0.8h, v1.8b, v2.8b
1253 # CHECK: umlal v0.4s, v1.4h, v2.4h
1254 # CHECK: umlal v0.2d, v1.2s, v2.2s
1260 # CHECK: umlal2 v0.8h, v1.16b, v2.16b
1261 # CHECK: umlal2 v0.4s, v1.8h, v2.8h
1262 # CHECK: umlal2 v0.2d, v1.4s, v2.4s
1267 # CHECK: smlsl v0.8h, v1.8b, v2.8b
1268 # CHECK: smlsl v0.4s, v1.4h, v2.4h
1269 # CHECK: smlsl v0.2d, v1.2s, v2.2s
1274 # CHECK: smlsl2 v0.8h, v1.16b, v2.16b
1275 # CHECK: smlsl2 v0.4s, v1.8h, v2.8h
1276 # CHECK: smlsl2 v0.2d, v1.4s, v2.4s
1281 # CHECK: umlsl v0.8h, v1.8b, v2.8b
1282 # CHECK: umlsl v0.4s, v1.4h, v2.4h
1283 # CHECK: umlsl v0.2d, v1.2s, v2.2s
1288 # CHECK: umlsl2 v0.8h, v1.16b, v2.16b
1289 # CHECK: umlsl2 v0.4s, v1.8h, v2.8h
1290 # CHECK: umlsl2 v0.2d, v1.4s, v2.4s
1295 # CHECK: smull v0.8h, v1.8b, v2.8b
1296 # CHECK: smull v0.4s, v1.4h, v2.4h
1297 # CHECK: smull v0.2d, v1.2s, v2.2s
1302 # CHECK: smull2 v0.8h, v1.16b, v2.16b
1303 # CHECK: smull2 v0.4s, v1.8h, v2.8h
1304 # CHECK: smull2 v0.2d, v1.4s, v2.4s
1309 # CHECK: umull v0.8h, v1.8b, v2.8b
1310 # CHECK: umull v0.4s, v1.4h, v2.4h
1311 # CHECK: umull v0.2d, v1.2s, v2.2s
1316 # CHECK: umull2 v0.8h, v1.16b, v2.16b
1317 # CHECK: umull2 v0.4s, v1.8h, v2.8h
1318 # CHECK: umull2 v0.2d, v1.4s, v2.4s
1323 #------------------------------------------------------------------------------
1325 #------------------------------------------------------------------------------
1327 # CHECK: sqdmlal v0.4s, v1.4h, v2.4h
1328 # CHECK: sqdmlal v0.2d, v1.2s, v2.2s
1332 # CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h
1333 # CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s
1337 # CHECK: sqdmlsl v0.4s, v1.4h, v2.4h
1338 # CHECK: sqdmlsl v0.2d, v1.2s, v2.2s
1342 # CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h
1343 # CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s
1347 # CHECK: sqdmull v0.4s, v1.4h, v2.4h
1348 # CHECK: sqdmull v0.2d, v1.2s, v2.2s
1352 # CHECK: sqdmull2 v0.4s, v1.8h, v2.8h
1353 # CHECK: sqdmull2 v0.2d, v1.4s, v2.4s
1357 #------------------------------------------------------------------------------
1359 #------------------------------------------------------------------------------
1361 # CHECK: pmull v0.8h, v1.8b, v2.8b
1364 # CHECK: pmull2 v0.8h, v1.16b, v2.16b
1367 #------------------------------------------------------------------------------
1369 #------------------------------------------------------------------------------
1371 # CHECK: saddw v0.8h, v1.8h, v2.8b
1372 # CHECK: saddw v0.4s, v1.4s, v2.4h
1373 # CHECK: saddw v0.2d, v1.2d, v2.2s
1378 # CHECK: saddw2 v0.8h, v1.8h, v2.16b
1379 # CHECK: saddw2 v0.4s, v1.4s, v2.8h
1380 # CHECK: saddw2 v0.2d, v1.2d, v2.4s
1385 # CHECK: uaddw v0.8h, v1.8h, v2.8b
1386 # CHECK: uaddw v0.4s, v1.4s, v2.4h
1387 # CHECK: uaddw v0.2d, v1.2d, v2.2s
1392 # CHECK: uaddw2 v0.8h, v1.8h, v2.16b
1393 # CHECK: uaddw2 v0.4s, v1.4s, v2.8h
1394 # CHECK: uaddw2 v0.2d, v1.2d, v2.4s
1399 # CHECK: ssubw v0.8h, v1.8h, v2.8b
1400 # CHECK: ssubw v0.4s, v1.4s, v2.4h
1401 # CHECK: ssubw v0.2d, v1.2d, v2.2s
1406 # CHECK: ssubw2 v0.8h, v1.8h, v2.16b
1407 # CHECK: ssubw2 v0.4s, v1.4s, v2.8h
1408 # CHECK: ssubw2 v0.2d, v1.2d, v2.4s
1413 # CHECK: usubw v0.8h, v1.8h, v2.8b
1414 # CHECK: usubw v0.4s, v1.4s, v2.4h
1415 # CHECK: usubw v0.2d, v1.2d, v2.2s
1420 # CHECK: usubw2 v0.8h, v1.8h, v2.16b
1421 # CHECK: usubw2 v0.4s, v1.4s, v2.8h
1422 # CHECK: usubw2 v0.2d, v1.2d, v2.4s
1427 #------------------------------------------------------------------------------
1429 #------------------------------------------------------------------------------
1431 # CHECK: addhn v0.8b, v1.8h, v2.8h
1432 # CHECK: addhn v0.4h, v1.4s, v2.4s
1433 # CHECK: addhn v0.2s, v1.2d, v2.2d
1438 # CHECK: addhn2 v0.16b, v1.8h, v2.8h
1439 # CHECK: addhn2 v0.8h, v1.4s, v2.4s
1440 # CHECK: addhn2 v0.4s, v1.2d, v2.2d
1445 # CHECK: raddhn v0.8b, v1.8h, v2.8h
1446 # CHECK: raddhn v0.4h, v1.4s, v2.4s
1447 # CHECK: raddhn v0.2s, v1.2d, v2.2d
1452 # CHECK: raddhn2 v0.16b, v1.8h, v2.8h
1453 # CHECK: raddhn2 v0.8h, v1.4s, v2.4s
1454 # CHECK: raddhn2 v0.4s, v1.2d, v2.2d
1459 # CHECK: rsubhn v0.8b, v1.8h, v2.8h
1460 # CHECK: rsubhn v0.4h, v1.4s, v2.4s
1461 # CHECK: rsubhn v0.2s, v1.2d, v2.2d
1466 # CHECK: rsubhn2 v0.16b, v1.8h, v2.8h
1467 # CHECK: rsubhn2 v0.8h, v1.4s, v2.4s
1468 # CHECK: rsubhn2 v0.4s, v1.2d, v2.2d
1473 #----------------------------------------------------------------------
1474 # Scalar Integer Saturating Doubling Multiply Half High
1475 #----------------------------------------------------------------------
1476 # CHECK: sqdmulh h10, h11, h12
1477 # CHECK: sqdmulh s20, s21, s2
1481 #----------------------------------------------------------------------
1482 # Scalar Integer Saturating Rounding Doubling Multiply Half High
1483 #----------------------------------------------------------------------
1484 # CHECK: sqrdmulh h10, h11, h12
1485 # CHECK: sqrdmulh s20, s21, s2
1489 #----------------------------------------------------------------------
1490 # Floating-point multiply extended
1491 #----------------------------------------------------------------------
1492 # CHECK: fmulx s20, s22, s15
1493 # CHECK: fmulx d23, d11, d1
1497 #----------------------------------------------------------------------
1498 # Floating-point Reciprocal Step
1499 #----------------------------------------------------------------------
1500 # CHECK: frecps s21, s16, s13
1501 # CHECK: frecps d22, d30, d21
1505 #----------------------------------------------------------------------
1506 # Floating-point Reciprocal Square Root Step
1507 #----------------------------------------------------------------------
1508 # CHECK: frsqrts s21, s5, s12
1509 # CHECK: frsqrts d8, d22, d18
1513 #----------------------------------------------------------------------
1514 # Scalar Signed Integer Convert To Floating-point
1515 #----------------------------------------------------------------------
1516 # CHECK: scvtf s22, s13
1517 # CHECK: scvtf d21, d12
1521 #----------------------------------------------------------------------
1522 # Scalar Unsigned Integer Convert To Floating-point
1523 #----------------------------------------------------------------------
1524 # CHECK: ucvtf s22, s13
1525 # CHECK: ucvtf d21, d14
1529 #----------------------------------------------------------------------
1530 # Scalar Floating-point Reciprocal Estimate
1531 #----------------------------------------------------------------------
1532 # CHECK: frecpe s19, s14
1533 # CHECK: frecpe d13, d13
1537 #----------------------------------------------------------------------
1538 # Scalar Floating-point Reciprocal Exponent
1539 #----------------------------------------------------------------------
1540 # CHECK: frecpx s18, s10
1541 # CHECK: frecpx d16, d19
1545 #----------------------------------------------------------------------
1546 # Scalar Floating-point Reciprocal Square Root Estimate
1547 #----------------------------------------------------------------------
1548 # CHECK: frsqrte s22, s13
1549 # CHECK: frsqrte d21, d12
1553 #----------------------------------------------------------------------
1554 # Scalar Compare Bitwise Equal
1555 #----------------------------------------------------------------------
1556 # CHECK: cmeq d20, d21, d22
1559 #----------------------------------------------------------------------
1560 # Scalar Compare Bitwise Equal To Zero
1561 #----------------------------------------------------------------------
1562 # CHECK: cmeq d20, d21, #0x0
1565 #----------------------------------------------------------------------
1566 # Scalar Compare Unsigned Higher Or Same
1567 #----------------------------------------------------------------------
1568 # CHECK: cmhs d20, d21, d22
1572 #----------------------------------------------------------------------
1573 # Scalar Compare Signed Greather Than Or Equal
1574 #----------------------------------------------------------------------
1575 # CHECK: cmge d20, d21, d22
1578 #----------------------------------------------------------------------
1579 # Scalar Compare Signed Greather Than Or Equal To Zero
1580 #----------------------------------------------------------------------
1581 # CHECK: cmge d20, d21, #0x0
1584 #----------------------------------------------------------------------
1585 # Scalar Compare Unsigned Higher
1586 #----------------------------------------------------------------------
1587 # CHECK: cmhi d20, d21, d22
1590 #----------------------------------------------------------------------
1591 # Scalar Compare Signed Greater Than
1592 #----------------------------------------------------------------------
1593 # CHECK: cmgt d20, d21, d22
1596 #----------------------------------------------------------------------
1597 # Scalar Compare Signed Greater Than Zero
1598 #----------------------------------------------------------------------
1599 # CHECK: cmgt d20, d21, #0x0
1602 #----------------------------------------------------------------------
1603 # Scalar Compare Signed Less Than Or Equal To Zero
1604 #----------------------------------------------------------------------
1605 # CHECK: cmle d20, d21, #0x0
1608 #----------------------------------------------------------------------
1609 # Scalar Compare Less Than Zero
1610 #----------------------------------------------------------------------
1611 # CHECK: cmlt d20, d21, #0x0
1614 #----------------------------------------------------------------------
1615 # Scalar Compare Bitwise Test Bits
1616 #----------------------------------------------------------------------
1617 # CHECK: cmtst d20, d21, d22
1620 #----------------------------------------------------------------------
1621 # Scalar Floating-point Compare Mask Equal
1622 #----------------------------------------------------------------------
1623 # CHECK: fcmeq s10, s11, s12
1624 # CHECK: fcmeq d20, d21, d22
1628 #----------------------------------------------------------------------
1629 # Scalar Floating-point Compare Mask Equal To Zero
1630 #----------------------------------------------------------------------
1631 # CHECK: fcmeq s10, s11, #0.0
1632 # CHECK: fcmeq d20, d21, #0.0
1636 #----------------------------------------------------------------------
1637 # Scalar Floating-point Compare Mask Greater Than Or Equal
1638 #----------------------------------------------------------------------
1639 # CHECK: fcmge s10, s11, s12
1640 # CHECK: fcmge d20, d21, d22
1644 #----------------------------------------------------------------------
1645 # Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
1646 #----------------------------------------------------------------------
1647 # CHECK: fcmge s10, s11, #0.0
1648 # CHECK: fcmge d20, d21, #0.0
1652 #----------------------------------------------------------------------
1653 # Scalar Floating-point Compare Mask Greather Than
1654 #----------------------------------------------------------------------
1655 # CHECK: fcmgt s10, s11, s12
1656 # CHECK: fcmgt d20, d21, d22
1660 #----------------------------------------------------------------------
1661 # Scalar Floating-point Compare Mask Greather Than Zero
1662 #----------------------------------------------------------------------
1663 # CHECK: fcmgt s10, s11, #0.0
1664 # CHECK: fcmgt d20, d21, #0.0
1668 #----------------------------------------------------------------------
1669 # Scalar Floating-point Compare Mask Less Than Or Equal To Zero
1670 #----------------------------------------------------------------------
1671 # CHECK: fcmle s10, s11, #0.0
1672 # CHECK: fcmle d20, d21, #0.0
1676 #----------------------------------------------------------------------
1677 # Scalar Floating-point Compare Mask Less Than
1678 #----------------------------------------------------------------------
1679 # CHECK: fcmlt s10, s11, #0.0
1680 # CHECK: fcmlt d20, d21, #0.0
1684 #----------------------------------------------------------------------
1685 # Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
1686 #----------------------------------------------------------------------
1687 # CHECK: facge s10, s11, s12
1688 # CHECK: facge d20, d21, d22
1692 #----------------------------------------------------------------------
1693 # Scalar Floating-point Absolute Compare Mask Greater Than
1694 #----------------------------------------------------------------------
1695 # CHECK: facgt s10, s11, s12
1696 # CHECK: facgt d20, d21, d22
1700 #----------------------------------------------------------------------
1701 # Scalar Absolute Value
1702 #----------------------------------------------------------------------
1703 # CHECK: abs d29, d24
1706 #----------------------------------------------------------------------
1707 # Scalar Signed Saturating Absolute Value
1708 #----------------------------------------------------------------------
1709 # CHECK: sqabs b19, b14
1710 # CHECK: sqabs h21, h15
1711 # CHECK: sqabs s20, s12
1712 # CHECK: sqabs d18, d12
1718 #----------------------------------------------------------------------
1720 #----------------------------------------------------------------------
1721 # CHECK: neg d29, d24
1724 #----------------------------------------------------------------------
1725 # Scalar Signed Saturating Negate
1726 #----------------------------------------------------------------------
1727 # CHECK: sqneg b19, b14
1728 # CHECK: sqneg h21, h15
1729 # CHECK: sqneg s20, s12
1730 # CHECK: sqneg d18, d12
1736 #----------------------------------------------------------------------
1737 # Signed Saturating Accumulated of Unsigned Value
1738 #----------------------------------------------------------------------
1739 # CHECK: suqadd b19, b14
1740 # CHECK: suqadd h20, h15
1741 # CHECK: suqadd s21, s12
1742 # CHECK: suqadd d18, d22
1748 #----------------------------------------------------------------------
1749 # Unsigned Saturating Accumulated of Signed Value
1750 #----------------------------------------------------------------------
1751 # CHECK: usqadd b19, b14
1752 # CHECK: usqadd h20, h15
1753 # CHECK: usqadd s21, s12
1754 # CHECK: usqadd d18, d22
1760 #----------------------------------------------------------------------
1761 # Signed Saturating Doubling Multiply-Add Long
1762 #----------------------------------------------------------------------
1763 # CHECK: sqdmlal s17, h27, h12
1764 # CHECK: sqdmlal d19, s24, s12
1768 #----------------------------------------------------------------------
1769 # Signed Saturating Doubling Multiply-Subtract Long
1770 #----------------------------------------------------------------------
1771 # CHECK: sqdmlsl s14, h12, h25
1772 # CHECK: sqdmlsl d12, s23, s13
1776 #----------------------------------------------------------------------
1777 # Signed Saturating Doubling Multiply Long
1778 #----------------------------------------------------------------------
1779 # CHECK: sqdmull s12, h22, h12
1780 # CHECK: sqdmull d15, s22, s12
1784 #----------------------------------------------------------------------
1785 # Scalar Signed Saturating Extract Unsigned Narrow
1786 #----------------------------------------------------------------------
1787 # CHECK: sqxtun b19, h14
1788 # CHECK: sqxtun h21, s15
1789 # CHECK: sqxtun s20, d12
1794 #----------------------------------------------------------------------
1795 # Scalar Signed Saturating Extract Signed Narrow
1796 #----------------------------------------------------------------------
1797 # CHECK: sqxtn b18, h18
1798 # CHECK: sqxtn h20, s17
1799 # CHECK: sqxtn s19, d14
1804 #----------------------------------------------------------------------
1805 # Scalar Unsigned Saturating Extract Narrow
1806 #----------------------------------------------------------------------
1807 # CHECK: uqxtn b18, h18
1808 # CHECK: uqxtn h20, s17
1809 # CHECK: uqxtn s19, d14
1814 #----------------------------------------------------------------------
1815 # Scalar Signed Shift Right (Immediate)
1816 #----------------------------------------------------------------------
1817 # CHECK: sshr d15, d16, #12
1820 #----------------------------------------------------------------------
1821 # Scalar Unsigned Shift Right (Immediate)
1822 #----------------------------------------------------------------------
1823 # CHECK: ushr d10, d17, #18
1826 #----------------------------------------------------------------------
1827 # Scalar Signed Rounding Shift Right (Immediate)
1828 #----------------------------------------------------------------------
1829 # CHECK: srshr d19, d18, #7
1832 #----------------------------------------------------------------------
1833 # Scalar Unigned Rounding Shift Right (Immediate)
1834 #----------------------------------------------------------------------
1835 # CHECK: urshr d20, d23, #31
1838 #----------------------------------------------------------------------
1839 # Scalar Signed Shift Right and Accumulate (Immediate)
1840 #----------------------------------------------------------------------
1841 # CHECK: ssra d18, d12, #21
1844 #----------------------------------------------------------------------
1845 # Scalar Unsigned Shift Right and Accumulate (Immediate)
1846 #----------------------------------------------------------------------
1847 # CHECK: usra d20, d13, #61
1850 #----------------------------------------------------------------------
1851 # Scalar Signed Rounding Shift Right and Accumulate (Immediate)
1852 #----------------------------------------------------------------------
1853 # CHECK: srsra d15, d11, #19
1856 #----------------------------------------------------------------------
1857 # Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
1858 #----------------------------------------------------------------------
1859 # CHECK: ursra d18, d10, #13
1862 #----------------------------------------------------------------------
1863 # Scalar Shift Left (Immediate)
1864 #----------------------------------------------------------------------
1865 # CHECK: shl d7, d10, #12
1868 #----------------------------------------------------------------------
1869 # Signed Saturating Shift Left (Immediate)
1870 #----------------------------------------------------------------------
1871 # CHECK: sqshl b11, b19, #7
1872 # CHECK: sqshl h13, h18, #11
1873 # CHECK: sqshl s14, s17, #22
1874 # CHECK: sqshl d15, d16, #51
1880 #----------------------------------------------------------------------
1881 # Unsigned Saturating Shift Left (Immediate)
1882 #----------------------------------------------------------------------
1883 # CHECK: uqshl b18, b15, #6
1884 # CHECK: uqshl h11, h18, #7
1885 # CHECK: uqshl s14, s19, #18
1886 # CHECK: uqshl d15, d12, #19
1892 #----------------------------------------------------------------------
1893 # Signed Saturating Shift Left Unsigned (Immediate)
1894 #----------------------------------------------------------------------
1895 # CHECK: sqshlu b15, b18, #6
1896 # CHECK: sqshlu h19, h17, #6
1897 # CHECK: sqshlu s16, s14, #25
1898 # CHECK: sqshlu d11, d13, #32
1904 #----------------------------------------------------------------------
1905 # Shift Right And Insert (Immediate)
1906 #----------------------------------------------------------------------
1907 # CHECK: sri d10, d12, #14
1910 #----------------------------------------------------------------------
1911 # Shift Left And Insert (Immediate)
1912 #----------------------------------------------------------------------
1913 # CHECK: sli d10, d14, #12
1916 #----------------------------------------------------------------------
1917 # Signed Saturating Shift Right Narrow (Immediate)
1918 #----------------------------------------------------------------------
1919 # CHECK: sqshrn b10, h15, #5
1920 # CHECK: sqshrn h17, s10, #4
1921 # CHECK: sqshrn s18, d10, #31
1926 #----------------------------------------------------------------------
1927 # Unsigned Saturating Shift Right Narrow (Immediate)
1928 #----------------------------------------------------------------------
1929 # CHECK: uqshrn b12, h10, #7
1930 # CHECK: uqshrn h10, s14, #5
1931 # CHECK: uqshrn s10, d12, #13
1936 #----------------------------------------------------------------------
1937 # Signed Saturating Rounded Shift Right Narrow (Immediate)
1938 #----------------------------------------------------------------------
1939 # CHECK: sqrshrn b10, h13, #2
1940 # CHECK: sqrshrn h15, s10, #6
1941 # CHECK: sqrshrn s15, d12, #9
1946 #----------------------------------------------------------------------
1947 # Unsigned Saturating Rounded Shift Right Narrow (Immediate)
1948 #----------------------------------------------------------------------
1949 # CHECK: uqrshrn b10, h12, #5
1950 # CHECK: uqrshrn h12, s10, #14
1951 # CHECK: uqrshrn s10, d10, #25
1956 #----------------------------------------------------------------------
1957 # Signed Saturating Shift Right Unsigned Narrow (Immediate)
1958 #----------------------------------------------------------------------
1959 # CHECK: sqshrun b15, h10, #7
1960 # CHECK: sqshrun h20, s14, #3
1961 # CHECK: sqshrun s10, d15, #15
1966 #----------------------------------------------------------------------
1967 # Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
1968 #----------------------------------------------------------------------
1969 # CHECK: sqrshrun b17, h10, #6
1970 # CHECK: sqrshrun h10, s13, #15
1971 # CHECK: sqrshrun s22, d16, #31
1976 #----------------------------------------------------------------------
1977 # Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
1978 #----------------------------------------------------------------------
1979 # CHECK: scvtf s22, s13, #32
1980 # CHECK: scvtf d21, d12, #64
1984 #----------------------------------------------------------------------
1985 # Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
1986 #----------------------------------------------------------------------
1987 # CHECK: ucvtf s22, s13, #32
1988 # CHECK: ucvtf d21, d14, #64
1992 #----------------------------------------------------------------------
1993 # Scalar Floating-point Convert To Signed Fixed-point (Immediate)
1994 #----------------------------------------------------------------------
1995 # CHECK: fcvtzs s21, s12, #1
1996 # CHECK: fcvtzs d21, d12, #1
2000 #----------------------------------------------------------------------
2001 # Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
2002 #----------------------------------------------------------------------
2003 # CHECK: fcvtzu s21, s12, #1
2004 # CHECK: fcvtzu d21, d12, #1
2008 #----------------------------------------------------------------------
2009 # Vector load/store multiple N-element structure
2010 #----------------------------------------------------------------------
2011 # CHECK: ld1 { v0.16b }, [x0]
2012 # CHECK: ld1 { v15.8h, v16.8h }, [x15]
2013 # CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp]
2014 # CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
2020 # CHECK: ld2 { v0.8b, v1.8b }, [x0]
2021 # CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15]
2022 # CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
2027 # CHECK: st1 { v0.16b }, [x0]
2028 # CHECK: st1 { v15.8h, v16.8h }, [x15]
2029 # CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp]
2030 # CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
2036 # CHECK: st2 { v0.8b, v1.8b }, [x0]
2037 # CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15]
2038 # CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
2043 #----------------------------------------------------------------------
2044 # Vector load/store multiple N-element structure (post-index)
2045 #----------------------------------------------------------------------
2046 # CHECK: ld1 { v15.8h }, [x15], x2
2047 # CHECK: ld1 { v31.4s, v0.4s }, [sp], #32
2048 # CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48
2049 # CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
2055 # CHECK: ld2 { v0.16b, v1.16b }, [x0], x1
2056 # CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15], x2
2057 # CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
2063 # CHECK: st1 { v15.8h }, [x15], x2
2064 # CHECK: st1 { v31.4s, v0.4s }, [sp], #32
2065 # CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0], #48
2066 # CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
2072 # CHECK: st2 { v0.16b, v1.16b }, [x0], x1
2073 # CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15], x2
2074 # CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
2079 #----------------------------------------------------------------------
2080 # Vector load single N-element structure to all lane of N
2081 # consecutive registers (N = 1,2,3,4)
2082 #----------------------------------------------------------------------
2083 # CHECK: ld1r { v0.16b }, [x0]
2084 # CHECK: ld1r { v15.8h }, [x15]
2085 # CHECK: ld2r { v31.4s, v0.4s }, [sp]
2086 # CHECK: ld2r { v0.2d, v1.2d }, [x0]
2087 # CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0]
2088 # CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15]
2089 # CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
2090 # CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp]
2100 #----------------------------------------------------------------------
2101 # Vector load/store single N-element structure to/from one lane of N
2102 # consecutive registers (N = 1,2,3,4)
2103 #----------------------------------------------------------------------
2104 # CHECK: ld1 { v0.b }[9], [x0]
2105 # CHECK: ld2 { v15.h, v16.h }[7], [x15]
2106 # CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp]
2107 # CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0]
2108 # CHECK: st1 { v0.d }[1], [x0]
2109 # CHECK: st2 { v31.s, v0.s }[3], [sp]
2110 # CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15]
2111 # CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0]
2121 #----------------------------------------------------------------------
2122 # Post-index of vector load single N-element structure to all lane of N
2123 # consecutive registers (N = 1,2,3,4)
2124 #----------------------------------------------------------------------
2125 # CHECK: ld1r { v0.16b }, [x0], #1
2126 # CHECK: ld1r { v15.8h }, [x15], #2
2127 # CHECK: ld2r { v31.4s, v0.4s }, [sp], #8
2128 # CHECK: ld2r { v0.2d, v1.2d }, [x0], #16
2129 # CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3
2130 # CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15], #6
2131 # CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], x30
2132 # CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp], x7
2142 #----------------------------------------------------------------------
2143 # Post-index of vector load/store single N-element structure to/from
2144 # one lane of N consecutive registers (N = 1,2,3,4)
2145 #----------------------------------------------------------------------
2146 # CHECK: ld1 { v0.b }[9], [x0], #1
2147 # CHECK: ld2 { v15.h, v16.h }[7], [x15], #4
2148 # CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp], x3
2149 # CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32
2150 # CHECK: ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0
2151 # CHECK: st1 { v0.d }[1], [x0], #8
2152 # CHECK: st2 { v31.s, v0.s }[3], [sp], #8
2153 # CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15], #6
2154 # CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5
2165 #----------------------------------------------------------------------
2167 #----------------------------------------------------------------------
2170 # CHECK: ext v0.8b, v1.8b, v2.8b, #0x3
2171 # CHECK: ext v0.16b, v1.16b, v2.16b, #0x3
2173 #----------------------------------------------------------------------
2174 # unzip with 3 same vectors to get primary result
2175 #----------------------------------------------------------------------
2176 # CHECK: uzp1 v1.8b, v1.8b, v2.8b
2177 # CHECK: uzp1 v2.16b, v1.16b, v2.16b
2178 # CHECK: uzp1 v3.4h, v1.4h, v2.4h
2179 # CHECK: uzp1 v4.8h, v1.8h, v2.8h
2180 # CHECK: uzp1 v5.2s, v1.2s, v2.2s
2181 # CHECK: uzp1 v6.4s, v1.4s, v2.4s
2182 # CHECK: uzp1 v7.2d, v1.2d, v2.2d
2191 #----------------------------------------------------------------------
2192 # transpose with 3 same vectors to get primary result
2193 #----------------------------------------------------------------------
2194 # CHECK: trn1 v8.8b, v1.8b, v2.8b
2195 # CHECK: trn1 v9.16b, v1.16b, v2.16b
2196 # CHECK: trn1 v10.4h, v1.4h, v2.4h
2197 # CHECK: trn1 v27.8h, v7.8h, v2.8h
2198 # CHECK: trn1 v12.2s, v7.2s, v2.2s
2199 # CHECK: trn1 v29.4s, v6.4s, v2.4s
2200 # CHECK: trn1 v14.2d, v6.2d, v2.2d
2209 #----------------------------------------------------------------------
2210 # zip with 3 same vectors to get primary result
2211 #----------------------------------------------------------------------
2212 # CHECK: zip1 v31.8b, v5.8b, v2.8b
2213 # CHECK: zip1 v0.16b, v5.16b, v2.16b
2214 # CHECK: zip1 v17.4h, v4.4h, v2.4h
2215 # CHECK: zip1 v2.8h, v4.8h, v2.8h
2216 # CHECK: zip1 v19.2s, v3.2s, v2.2s
2217 # CHECK: zip1 v4.4s, v3.4s, v2.4s
2218 # CHECK: zip1 v21.2d, v2.2d, v2.2d
2227 #----------------------------------------------------------------------
2228 # unzip with 3 same vectors to get secondary result
2229 #----------------------------------------------------------------------
2230 # CHECK: uzp2 v6.8b, v2.8b, v2.8b
2231 # CHECK: uzp2 v23.16b, v1.16b, v2.16b
2232 # CHECK: uzp2 v8.4h, v1.4h, v2.4h
2233 # CHECK: uzp2 v25.8h, v0.8h, v2.8h
2234 # CHECK: uzp2 v10.2s, v0.2s, v2.2s
2235 # CHECK: uzp2 v27.4s, v7.4s, v2.4s
2236 # CHECK: uzp2 v12.2d, v7.2d, v2.2d
2245 #----------------------------------------------------------------------
2246 # transpose with 3 same vectors to get secondary result
2247 #----------------------------------------------------------------------
2248 # CHECK: trn2 v29.8b, v6.8b, v2.8b
2249 # CHECK: trn2 v14.16b, v6.16b, v2.16b
2250 # CHECK: trn2 v31.4h, v5.4h, v2.4h
2251 # CHECK: trn2 v0.8h, v5.8h, v2.8h
2252 # CHECK: trn2 v17.2s, v4.2s, v2.2s
2253 # CHECK: trn2 v2.4s, v4.4s, v2.4s
2254 # CHECK: trn2 v19.2d, v3.2d, v2.2d
2263 #----------------------------------------------------------------------
2264 # zip with 3 same vectors to get secondary result
2265 #----------------------------------------------------------------------
2266 # CHECK: zip2 v4.8b, v3.8b, v2.8b
2267 # CHECK: zip2 v21.16b, v2.16b, v2.16b
2268 # CHECK: zip2 v6.4h, v2.4h, v2.4h
2269 # CHECK: zip2 v23.8h, v1.8h, v2.8h
2270 # CHECK: zip2 v8.2s, v1.2s, v2.2s
2271 # CHECK: zip2 v25.4s, v0.4s, v2.4s
2272 # CHECK: zip2 v10.2d, v0.2d, v2.2d
2281 #----------------------------------------------------------------------
2282 # Scalar Floating Point multiply (scalar, by element)
2283 #----------------------------------------------------------------------
2284 # CHECK: fmul s0, s1, v1.s[0]
2285 # CHECK: fmul s0, s1, v1.s[3]
2286 # CHECK: fmul d0, d1, v1.d[0]
2287 # CHECK: fmul d0, d1, v1.d[1]
2288 # CHECK: fmul d15, d15, v15.d[1]
2295 #----------------------------------------------------------------------
2296 # Scalar Floating Point multiply extended (scalar, by element)
2297 #----------------------------------------------------------------------
2298 # CHECK: fmulx s3, s5, v7.s[0]
2299 # CHECK: fmulx s3, s5, v7.s[3]
2300 # CHECK: fmulx s3, s5, v15.s[3]
2301 # CHECK: fmulx d0, d4, v8.d[0]
2302 # CHECK: fmulx d0, d4, v8.d[1]
2309 #----------------------------------------------------------------------
2310 # Scalar Floating Point fused multiply-add (scalar, by element)
2311 #----------------------------------------------------------------------
2312 # CHECK: fmla s0, s1, v1.s[0]
2313 # CHECK: fmla s0, s1, v1.s[3]
2314 # CHECK: fmla d0, d1, v1.d[0]
2315 # CHECK: fmla d0, d1, v1.d[1]
2316 # CHECK: fmla d15, d15, v15.d[1]
2323 #----------------------------------------------------------------------
2324 # Scalar Floating Point fused multiply-sub (scalar, by element)
2325 #----------------------------------------------------------------------
2326 # CHECK: fmls s3, s5, v7.s[0]
2327 # CHECK: fmls s3, s5, v7.s[3]
2328 # CHECK: fmls s3, s5, v15.s[3]
2329 # CHECK: fmls d0, d4, v8.d[0]
2330 # CHECK: fmls d0, d4, v8.d[1]
2337 #----------------------------------------------------------------------
2338 # Scalar Signed saturating doubling
2339 # multiply-add long (scalar, by element)
2340 #----------------------------------------------------------------------
2341 # CHECK: sqdmlal s0, h0, v0.h[0]
2342 # CHECK: sqdmlal s0, h0, v0.h[1]
2343 # CHECK: sqdmlal s0, h0, v0.h[2]
2344 # CHECK: sqdmlal s0, h0, v0.h[3]
2345 # CHECK: sqdmlal s0, h0, v0.h[4]
2346 # CHECK: sqdmlal s0, h0, v0.h[5]
2347 # CHECK: sqdmlal s0, h0, v0.h[6]
2348 # CHECK: sqdmlal s0, h0, v0.h[7]
2349 # CHECK: sqdmlal d8, s9, v15.s[0]
2350 # CHECK: sqdmlal d8, s9, v15.s[1]
2351 # CHECK: sqdmlal d8, s9, v15.s[2]
2352 # CHECK: sqdmlal d8, s9, v15.s[3]
2366 #----------------------------------------------------------------------
2367 # Scalar Signed saturating doubling
2368 # multiply-sub long (scalar, by element)
2369 #----------------------------------------------------------------------
2370 # CHECK: sqdmlsl s0, h0, v0.h[0]
2371 # CHECK: sqdmlsl s0, h0, v0.h[1]
2372 # CHECK: sqdmlsl s0, h0, v0.h[2]
2373 # CHECK: sqdmlsl s0, h0, v0.h[3]
2374 # CHECK: sqdmlsl s0, h0, v0.h[4]
2375 # CHECK: sqdmlsl s0, h0, v0.h[5]
2376 # CHECK: sqdmlsl s0, h0, v0.h[6]
2377 # CHECK: sqdmlsl s0, h0, v0.h[7]
2378 # CHECK: sqdmlsl d8, s9, v15.s[0]
2379 # CHECK: sqdmlsl d8, s9, v15.s[1]
2380 # CHECK: sqdmlsl d8, s9, v15.s[2]
2381 # CHECK: sqdmlsl d8, s9, v15.s[3]
2395 #----------------------------------------------------------------------
2396 # Scalar Signed saturating doubling multiply long (scalar, by element)
2397 #----------------------------------------------------------------------
2398 # CHECK: sqdmull s1, h1, v1.h[0]
2399 # CHECK: sqdmull s1, h1, v1.h[1]
2400 # CHECK: sqdmull s1, h1, v1.h[2]
2401 # CHECK: sqdmull s1, h1, v1.h[3]
2402 # CHECK: sqdmull s1, h1, v1.h[4]
2403 # CHECK: sqdmull s1, h1, v1.h[5]
2404 # CHECK: sqdmull s1, h1, v1.h[6]
2405 # CHECK: sqdmull s1, h1, v1.h[7]
2406 # CHECK: sqdmull d1, s1, v4.s[0]
2407 # CHECK: sqdmull d1, s1, v4.s[1]
2408 # CHECK: sqdmull d1, s1, v4.s[2]
2409 # CHECK: sqdmull d1, s1, v4.s[3]
2423 #----------------------------------------------------------------------
2424 # Scalar Signed saturating doubling multiply returning
2425 # high half (scalar, by element)
2426 #----------------------------------------------------------------------
2427 # CHECK: sqdmulh h7, h1, v14.h[0]
2428 # CHECK: sqdmulh h7, h15, v8.h[1]
2429 # CHECK: sqdmulh h7, h15, v8.h[2]
2430 # CHECK: sqdmulh h7, h15, v8.h[3]
2431 # CHECK: sqdmulh h7, h15, v8.h[4]
2432 # CHECK: sqdmulh h7, h15, v8.h[5]
2433 # CHECK: sqdmulh h7, h15, v8.h[6]
2434 # CHECK: sqdmulh h7, h15, v8.h[7]
2435 # CHECK: sqdmulh s15, s3, v4.s[0]
2436 # CHECK: sqdmulh s15, s14, v16.s[1]
2437 # CHECK: sqdmulh s15, s15, v16.s[2]
2438 # CHECK: sqdmulh s15, s16, v17.s[3]
2452 #----------------------------------------------------------------------
2453 # Scalar Signed saturating rounding doubling multiply
2454 # returning high half (scalar, by element)
2455 #----------------------------------------------------------------------
2456 # CHECK: sqrdmulh h7, h1, v14.h[0]
2457 # CHECK: sqrdmulh h7, h15, v8.h[1]
2458 # CHECK: sqrdmulh h7, h15, v8.h[2]
2459 # CHECK: sqrdmulh h7, h15, v8.h[3]
2460 # CHECK: sqrdmulh h7, h15, v8.h[4]
2461 # CHECK: sqrdmulh h7, h15, v8.h[5]
2462 # CHECK: sqrdmulh h7, h15, v8.h[6]
2463 # CHECK: sqrdmulh h7, h15, v8.h[7]
2464 # CHECK: sqrdmulh s15, s3, v4.s[0]
2465 # CHECK: sqrdmulh s15, s14, v16.s[1]
2466 # CHECK: sqrdmulh s15, s15, v16.s[2]
2467 # CHECK: sqrdmulh s15, s16, v17.s[3]
2481 #----------------------------------------------------------------------
2482 #Duplicate element (scalar)
2483 #----------------------------------------------------------------------
2484 # CHECK: dup b0, v0.b[15]
2485 # CHECK: dup h2, v31.h[5]
2486 # CHECK: dup s17, v2.s[2]
2487 # CHECK: dup d6, v12.d[1]
2493 #----------------------------------------------------------------------
2495 #----------------------------------------------------------------------
2500 # CHECK: tbl v0.8b, { v1.16b }, v2.8b
2501 # CHECK: tbl v16.8b, { v31.16b, v0.16b }, v2.8b
2502 # CHECK: tbl v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
2503 # CHECK: tbl v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b
2509 # CHECK: tbl v0.16b, { v1.16b }, v2.16b
2510 # CHECK: tbl v16.16b, { v31.16b, v0.16b }, v2.16b
2511 # CHECK: tbl v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
2512 # CHECK: tbl v0.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b
2518 # CHECK: tbx v0.8b, { v1.16b }, v2.8b
2519 # CHECK: tbx v16.8b, { v31.16b, v0.16b }, v2.8b
2520 # CHECK: tbx v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
2521 # CHECK: tbx v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b
2527 # CHECK: tbx v0.16b, { v1.16b }, v2.16b
2528 # CHECK: tbx v16.16b, { v31.16b, v0.16b }, v2.16b
2529 # CHECK: tbx v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
2530 # CHECK: tbx v16.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b
2532 #----------------------------------------------------------------------
2533 # Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
2535 #----------------------------------------------------------------------
2536 # CHECK: fcvtxn s22, d13
2539 #----------------------------------------------------------------------
2540 # Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
2542 #----------------------------------------------------------------------
2543 # CHECK: fcvtas s12, s13
2544 # CHECK: fcvtas d21, d14
2549 #----------------------------------------------------------------------
2550 # Scalar Floating-point Convert To Unsigned Integer, Rounding To
2551 # Nearest With Ties To Away
2552 #----------------------------------------------------------------------
2553 # CHECK: fcvtau s12, s13
2554 # CHECK: fcvtau d21, d14
2558 #----------------------------------------------------------------------
2559 # Scalar Floating-point Convert To Signed Integer, Rounding Toward
2561 #----------------------------------------------------------------------
2562 # CHECK: fcvtms s22, s13
2563 # CHECK: fcvtms d21, d14
2567 #----------------------------------------------------------------------
2568 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2570 #----------------------------------------------------------------------
2571 # CHECK: fcvtmu s12, s13
2572 # CHECK: fcvtmu d21, d14
2576 #----------------------------------------------------------------------
2577 # Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
2579 #----------------------------------------------------------------------
2581 # CHECK: fcvtns s22, s13
2582 # CHECK: fcvtns d21, d14
2587 #----------------------------------------------------------------------
2588 # Scalar Floating-point Convert To Unsigned Integer, Rounding To
2589 # Nearest With Ties To Even
2590 #----------------------------------------------------------------------
2592 # CHECK: fcvtnu s12, s13
2593 # CHECK: fcvtnu d21, d14
2597 #----------------------------------------------------------------------
2598 # Scalar Floating-point Convert To Signed Integer, Rounding Toward
2600 #----------------------------------------------------------------------
2601 # CHECK: fcvtps s22, s13
2602 # CHECK: fcvtps d21, d14
2606 #----------------------------------------------------------------------
2607 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2609 #----------------------------------------------------------------------
2610 # CHECK: fcvtpu s12, s13
2611 # CHECK: fcvtpu d21, d14
2615 #----------------------------------------------------------------------
2616 # Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
2617 #----------------------------------------------------------------------
2618 # CHECK: fcvtzs s12, s13
2619 # CHECK: fcvtzs d21, d14
2623 #----------------------------------------------------------------------
2624 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2626 #----------------------------------------------------------------------
2627 # CHECK: fcvtzu s12, s13
2628 # CHECK: fcvtzu d21, d14
2632 #----------------------------------------------------------------------
2633 # Scalar Floating-point Absolute Difference
2634 #----------------------------------------------------------------------
2635 # CHECK: fabd s29, s24, s20
2636 # CHECK: fabd d29, d24, d20