1 # RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
2 # RUN: llvm-mc -triple arm64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
4 #------------------------------------------------------------------------------
5 # Vector Integer Add/Sub
6 #------------------------------------------------------------------------------
7 # CHECK: add v31.8b, v31.8b, v31.8b
8 # CHECK: sub v0.2d, v0.2d, v0.2d
12 #------------------------------------------------------------------------------
13 # Vector Floating-Point Add/Sub
14 #------------------------------------------------------------------------------
16 # CHECK: fadd v0.4s, v0.4s, v0.4s
17 # CHECK: fsub v31.2s, v31.2s, v31.2s
21 #------------------------------------------------------------------------------
23 #------------------------------------------------------------------------------
24 # CHECK: mul v0.8b, v1.8b, v2.8b
27 #------------------------------------------------------------------------------
28 # Vector Floating-Point Mul/Div
29 #------------------------------------------------------------------------------
30 # CHECK: fmul v0.2s, v1.2s, v2.2s
31 # CHECK: fdiv v31.2s, v31.2s, v31.2s
35 #----------------------------------------------------------------------
36 # Vector Polynomial Multiply
37 #----------------------------------------------------------------------
38 # CHECK: pmul v0.8b, v15.8b, v16.8b
39 # CHECK: pmul v31.16b, v7.16b, v8.16b
43 #------------------------------------------------------------------------------
44 # Vector And, Orr, Eor, Orn, Bic
45 #------------------------------------------------------------------------------
46 # CHECK: and v2.8b, v2.8b, v2.8b
47 # CHECK: orr v31.16b, v31.16b, v30.16b
48 # CHECK: eor v0.16b, v1.16b, v2.16b
49 # CHECK: orn v9.16b, v10.16b, v11.16b
50 # CHECK: bic v31.8b, v30.8b, v29.8b
57 #------------------------------------------------------------------------------
58 # Vector Bsl, Bit, Bif
59 #------------------------------------------------------------------------------
60 # CHECK: bsl v0.8b, v1.8b, v2.8b
61 # CHECK: bit v31.16b, v31.16b, v31.16b
62 # CHECK: bif v0.16b, v1.16b, v2.16b
68 #------------------------------------------------------------------------------
69 # Vector Integer Multiply-accumulate and Multiply-subtract
70 #------------------------------------------------------------------------------
71 # CHECK: mla v0.8b, v1.8b, v2.8b
72 # CHECK: mls v31.4h, v31.4h, v31.4h
76 #------------------------------------------------------------------------------
77 # Vector Floating-Point Multiply-accumulate and Multiply-subtract
78 #------------------------------------------------------------------------------
79 # CHECK: fmla v0.2s, v1.2s, v2.2s
80 # CHECK: fmls v31.2s, v31.2s, v31.2s
84 #------------------------------------------------------------------------------
85 # Vector Move Immediate Shifted
86 # Vector Move Inverted Immediate Shifted
87 # Vector Bitwise Bit Clear (AND NOT) - immediate
88 # Vector Bitwise OR - immedidate
89 #------------------------------------------------------------------------------
90 # CHECK: movi v31.4s, #255, lsl #24
91 # CHECK: mvni v0.2s, #{{0x0|0}}
92 # CHECK: bic v15.4h, #15, lsl #8
93 # CHECK: orr v16.8h, #31
99 #------------------------------------------------------------------------------
100 # Vector Move Immediate Masked
101 # Vector Move Inverted Immediate Masked
102 #------------------------------------------------------------------------------
103 # CHECK: movi v8.2s, #8, msl #8
104 # CHECK: mvni v16.4s, #16, msl #16
108 #------------------------------------------------------------------------------
109 # Vector Immediate - per byte
110 # Vector Move Immediate - bytemask, per doubleword
111 # Vector Move Immediate - bytemask, one doubleword
112 #------------------------------------------------------------------------------
113 # CHECK: movi v16.8b, #255
114 # CHECK: movi v31.16b, #31
115 # CHECK: movi d15, #0xff00ff00ff00ff
116 # CHECK: movi v31.2d, #0xff0000ff0000ffff
122 #------------------------------------------------------------------------------
123 # Vector Floating Point Move Immediate
124 #------------------------------------------------------------------------------
125 # CHECK: fmov v0.2s, #13.0
126 # CHECK: fmov v15.4s, #1.0
127 # CHECK: fmov v31.2d, #-1.25
132 #------------------------------------------------------------------------------
133 # Vector Move - register
134 #------------------------------------------------------------------------------
136 # CHECK: mov v1.16b, v15.16b
137 # CHECK: mov v25.8b, v4.8b
141 #----------------------------------------------------------------------
142 # Vector Absolute Difference and Accumulate (Signed, Unsigned)
143 # Vector Absolute Difference (Signed, Unsigned)
144 # Vector Absolute Difference (Floating Point)
145 #----------------------------------------------------------------------
147 # CHECK: uaba v0.8b, v1.8b, v2.8b
148 # CHECK: saba v31.16b, v30.16b, v29.16b
149 # CHECK: uabd v15.4h, v16.4h, v17.4h
150 # CHECK: sabd v5.4h, v4.4h, v6.4h
151 # CHECK: fabd v1.4s, v31.4s, v16.4s
158 #----------------------------------------------------------------------
161 #----------------------------------------------------------------------
163 # CHECK: add d17, d31, d29
164 # CHECK: sub d15, d5, d16
168 #----------------------------------------------------------------------
169 # Vector Reciprocal Square Root Step (Floating Point)
170 #----------------------------------------------------------------------
171 # CHECK: frsqrts v31.2d, v15.2d, v8.2d
174 #----------------------------------------------------------------------
175 # Vector Reciprocal Step (Floating Point)
176 #----------------------------------------------------------------------
177 # CHECK: frecps v5.4s, v7.4s, v16.4s
180 #----------------------------------------------------------------------
181 # Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
182 #----------------------------------------------------------------------
183 # CHECK: facge v0.4s, v31.4s, v16.4s
186 #----------------------------------------------------------------------
187 # Vector Absolute Compare Mask Less Than (Floating Point)
188 #----------------------------------------------------------------------
189 # CHECK: facgt v31.2d, v29.2d, v28.2d
192 #----------------------------------------------------------------------
193 # Vector Compare Mask Equal (Integer)
194 #----------------------------------------------------------------------
195 # CHECK: cmeq v5.16b, v15.16b, v31.16b
198 #----------------------------------------------------------------------
199 # Vector Compare Mask Higher or Same (Unsigned Integer)
200 #----------------------------------------------------------------------
201 # CHECK: cmhs v1.8b, v16.8b, v30.8b
204 #----------------------------------------------------------------------
205 # Vector Compare Mask Greater Than or Equal (Integer)
206 #----------------------------------------------------------------------
207 # CHECK: cmge v20.4h, v11.4h, v23.4h
210 #----------------------------------------------------------------------
211 # Vector Compare Mask Higher (Unsigned Integer)
212 # CHECK: cmhi v13.8h, v3.8h, v27.8h
215 #----------------------------------------------------------------------
216 # Vector Compare Mask Greater Than (Integer)
217 #----------------------------------------------------------------------
218 # CHECK: cmgt v9.4s, v4.4s, v28.4s
221 #----------------------------------------------------------------------
222 # Vector Compare Mask Bitwise Test (Integer)
223 #----------------------------------------------------------------------
224 # CHECK: cmtst v21.2s, v19.2s, v18.2s
227 #----------------------------------------------------------------------
228 # Vector Compare Mask Equal (Floating Point)
229 #----------------------------------------------------------------------
230 # CHECK: fcmeq v0.2s, v15.2s, v16.2s
233 #----------------------------------------------------------------------
234 # Vector Compare Mask Greater Than Or Equal (Floating Point)
235 #----------------------------------------------------------------------
236 # CHECK: fcmge v31.4s, v7.4s, v29.4s
239 #----------------------------------------------------------------------
240 # Vector Compare Mask Greater Than (Floating Point)
241 #----------------------------------------------------------------------
242 # CHECK: fcmgt v17.4s, v8.4s, v25.4s
245 #----------------------------------------------------------------------
246 # Vector Compare Mask Equal to Zero (Integer)
247 #----------------------------------------------------------------------
248 # CHECK: cmeq v31.16b, v15.16b, #{{0x0|0}}
251 #----------------------------------------------------------------------
252 # Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
253 #----------------------------------------------------------------------
254 # CHECK: cmge v3.8b, v15.8b, #{{0x0|0}}
257 #----------------------------------------------------------------------
258 # Vector Compare Mask Greater Than Zero (Signed Integer)
259 #----------------------------------------------------------------------
260 # CHECK: cmgt v22.2s, v9.2s, #{{0x0|0}}
263 #----------------------------------------------------------------------
264 # Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
265 #----------------------------------------------------------------------
266 # CHECK: cmle v5.2d, v14.2d, #{{0x0|0}}
269 #----------------------------------------------------------------------
270 # Vector Compare Mask Less Than Zero (Signed Integer)
271 #----------------------------------------------------------------------
272 # CHECK: cmlt v13.8h, v11.8h, #{{0x0|0}}
275 #----------------------------------------------------------------------
276 # Vector Compare Mask Equal to Zero (Floating Point)
277 #----------------------------------------------------------------------
278 # CHECK: fcmeq v15.2s, v21.2s, #0.0
281 #----------------------------------------------------------------------
282 # Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
283 #----------------------------------------------------------------------
284 # CHECK: fcmge v14.2d, v13.2d, #0.0
287 #----------------------------------------------------------------------
288 # Vector Compare Mask Greater Than Zero (Floating Point)
289 #----------------------------------------------------------------------
290 # CHECK: fcmgt v9.4s, v23.4s, #0.0
293 #----------------------------------------------------------------------
294 # Vector Compare Mask Less Than or Equal To Zero (Floating Point)
295 #----------------------------------------------------------------------
296 # CHECK: fcmle v11.2d, v6.2d, #0.0
299 #----------------------------------------------------------------------
300 # Vector Compare Mask Less Than Zero (Floating Point)
301 #----------------------------------------------------------------------
302 # CHECK: fcmlt v12.4s, v25.4s, #0.0
306 #------------------------------------------------------------------------------
307 # Vector Integer Halving Add (Signed)
308 # Vector Integer Halving Add (Unsigned)
309 # Vector Integer Halving Sub (Signed)
310 # Vector Integer Halving Sub (Unsigned)
311 #------------------------------------------------------------------------------
312 # CHECK: shadd v0.8b, v31.8b, v29.8b
313 # CHECK: uhadd v15.16b, v16.16b, v17.16b
314 # CHECK: shsub v0.4h, v1.4h, v2.4h
315 # CHECK: uhadd v5.8h, v7.8h, v8.8h
316 # CHECK: shsub v9.2s, v11.2s, v21.2s
317 # CHECK: uhsub v22.4s, v30.4s, v19.4s
325 #------------------------------------------------------------------------------
326 # Vector Integer Rouding Halving Add (Signed)
327 # Vector Integer Rouding Halving Add (Unsigned)
328 #------------------------------------------------------------------------------
329 # CHECK: srhadd v3.8b, v5.8b, v7.8b
330 # CHECK: urhadd v7.16b, v17.16b, v27.16b
331 # CHECK: srhadd v10.4h, v11.4h, v13.4h
332 # CHECK: urhadd v1.8h, v2.8h, v3.8h
333 # CHECK: srhadd v4.2s, v5.2s, v6.2s
334 # CHECK: urhadd v7.4s, v7.4s, v7.4s
342 #------------------------------------------------------------------------------
343 # Vector Integer Saturating Add (Signed)
344 # Vector Integer Saturating Add (Unsigned)
345 # Vector Integer Saturating Sub (Signed)
346 # Vector Integer Saturating Sub (Unsigned)
347 #------------------------------------------------------------------------------
348 # CHECK: sqsub v0.8b, v1.8b, v2.8b
349 # CHECK: sqadd v0.16b, v1.16b, v2.16b
350 # CHECK: uqsub v0.4h, v1.4h, v2.4h
351 # CHECK: uqadd v0.8h, v1.8h, v2.8h
352 # CHECK: sqadd v0.2s, v1.2s, v2.2s
353 # CHECK: sqsub v0.4s, v1.4s, v2.4s
354 # CHECK: sqsub v0.2d, v1.2d, v2.2d
363 #------------------------------------------------------------------------------
364 # Scalar Integer Saturating Add (Signed)
365 # Scalar Integer Saturating Add (Unsigned)
366 # Scalar Integer Saturating Sub (Signed)
367 # Scalar Integer Saturating Add (Unsigned)
368 #------------------------------------------------------------------------------
369 # CHECK: sqadd b20, b11, b15
370 # CHECK: uqadd h0, h1, h5
371 # CHECK: sqsub s20, s10, s7
372 # CHECK: uqsub d16, d16, d16
379 #----------------------------------------------------------------------
380 # Vector Shift Left (Signed and Unsigned Integer)
381 #----------------------------------------------------------------------
382 # CHECK: sshl v10.8b, v15.8b, v22.8b
383 # CHECK: ushl v10.16b, v5.16b, v2.16b
384 # CHECK: sshl v10.4h, v15.4h, v22.4h
385 # CHECK: ushl v10.8h, v5.8h, v2.8h
386 # CHECK: sshl v10.2s, v15.2s, v22.2s
387 # CHECK: ushl v10.4s, v5.4s, v2.4s
388 # CHECK: sshl v0.2d, v1.2d, v2.2d
397 #----------------------------------------------------------------------
398 # Vector Saturating Shift Left (Signed and Unsigned Integer)
399 #----------------------------------------------------------------------
400 # CHECK: sqshl v1.8b, v15.8b, v22.8b
401 # CHECK: uqshl v2.16b, v14.16b, v23.16b
402 # CHECK: sqshl v3.4h, v13.4h, v24.4h
403 # CHECK: uqshl v4.8h, v12.8h, v25.8h
404 # CHECK: sqshl v5.2s, v11.2s, v26.2s
405 # CHECK: uqshl v6.4s, v10.4s, v27.4s
406 # CHECK: uqshl v0.2d, v1.2d, v2.2d
415 #----------------------------------------------------------------------
416 # Vector Rouding Shift Left (Signed and Unsigned Integer)
417 #----------------------------------------------------------------------
418 # CHECK: srshl v10.8b, v5.8b, v22.8b
419 # CHECK: urshl v10.16b, v5.16b, v2.16b
420 # CHECK: srshl v1.4h, v5.4h, v31.4h
421 # CHECK: urshl v1.8h, v5.8h, v2.8h
422 # CHECK: srshl v10.2s, v15.2s, v2.2s
423 # CHECK: urshl v1.4s, v5.4s, v2.4s
424 # CHECK: urshl v0.2d, v1.2d, v2.2d
433 #----------------------------------------------------------------------
434 # Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
435 #----------------------------------------------------------------------
436 # CHECK: sqrshl v1.8b, v15.8b, v22.8b
437 # CHECK: uqrshl v2.16b, v14.16b, v23.16b
438 # CHECK: sqrshl v3.4h, v13.4h, v24.4h
439 # CHECK: uqrshl v4.8h, v12.8h, v25.8h
440 # CHECK: sqrshl v5.2s, v11.2s, v26.2s
441 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
442 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
451 #----------------------------------------------------------------------
452 # Scalar Integer Shift Left (Signed, Unsigned)
453 #----------------------------------------------------------------------
454 # CHECK: sshl d31, d31, d31
455 # CHECK: ushl d0, d0, d0
459 #----------------------------------------------------------------------
460 # Scalar Integer Saturating Shift Left (Signed, Unsigned)
461 #----------------------------------------------------------------------
462 # CHECK: sqshl d31, d31, d31
463 # CHECK: uqshl s23, s20, s16
464 # CHECK: sqshl h3, h4, h15
465 # CHECK: uqshl b11, b20, b30
471 #----------------------------------------------------------------------
472 # Scalar Integer Rouding Shift Left (Signed, Unsigned)
473 #----------------------------------------------------------------------
474 # CHECK: srshl d16, d16, d16
475 # CHECK: urshl d8, d7, d4
479 #----------------------------------------------------------------------
480 # Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
481 #----------------------------------------------------------------------
482 # CHECK: sqrshl d31, d31, d31
483 # CHECK: uqrshl s23, s20, s16
484 # CHECK: sqrshl h3, h4, h15
485 # CHECK: uqrshl b11, b20, b30
491 #----------------------------------------------------------------------
492 # Vector Maximum (Signed and Unsigned Integer)
493 #----------------------------------------------------------------------
494 # CHECK: smax v1.8b, v15.8b, v22.8b
495 # CHECK: umax v2.16b, v14.16b, v23.16b
496 # CHECK: smax v3.4h, v13.4h, v24.4h
497 # CHECK: umax v4.8h, v12.8h, v25.8h
498 # CHECK: smax v5.2s, v11.2s, v26.2s
499 # CHECK: umax v6.4s, v10.4s, v27.4s
507 #----------------------------------------------------------------------
508 # Vector Minimum (Signed and Unsigned Integer)
509 #----------------------------------------------------------------------
510 # CHECK: umin v1.8b, v15.8b, v22.8b
511 # CHECK: smin v2.16b, v14.16b, v23.16b
512 # CHECK: umin v3.4h, v13.4h, v24.4h
513 # CHECK: smin v4.8h, v12.8h, v25.8h
514 # CHECK: umin v5.2s, v11.2s, v26.2s
515 # CHECK: smin v6.4s, v10.4s, v27.4s
523 #----------------------------------------------------------------------
524 # Vector Maximum (Floating Point)
525 #----------------------------------------------------------------------
526 # CHECK: fmax v29.2s, v28.2s, v25.2s
527 # CHECK: fmax v9.4s, v8.4s, v5.4s
528 # CHECK: fmax v11.2d, v10.2d, v7.2d
533 #----------------------------------------------------------------------
534 # Vector Minimum (Floating Point)
535 #----------------------------------------------------------------------
536 # CHECK: fmin v29.2s, v28.2s, v25.2s
537 # CHECK: fmin v9.4s, v8.4s, v5.4s
538 # CHECK: fmin v11.2d, v10.2d, v7.2d
543 #----------------------------------------------------------------------
544 # Vector maxNum (Floating Point)
545 #----------------------------------------------------------------------
546 # CHECK: fmaxnm v9.2s, v8.2s, v5.2s
547 # CHECK: fmaxnm v9.4s, v8.4s, v5.4s
548 # CHECK: fmaxnm v11.2d, v10.2d, v7.2d
553 #----------------------------------------------------------------------
554 # Vector minNum (Floating Point)
555 #----------------------------------------------------------------------
556 # CHECK: fminnm v2.2s, v8.2s, v25.2s
557 # CHECK: fminnm v9.4s, v8.4s, v5.4s
558 # CHECK: fminnm v11.2d, v10.2d, v7.2d
564 #----------------------------------------------------------------------
565 # Vector Maximum Pairwise (Signed and Unsigned Integer)
566 #----------------------------------------------------------------------
567 # CHECK: smaxp v1.8b, v15.8b, v22.8b
568 # CHECK: umaxp v2.16b, v14.16b, v23.16b
569 # CHECK: smaxp v3.4h, v13.4h, v24.4h
570 # CHECK: umaxp v4.8h, v12.8h, v25.8h
571 # CHECK: smaxp v5.2s, v11.2s, v26.2s
572 # CHECK: umaxp v6.4s, v10.4s, v27.4s
580 #----------------------------------------------------------------------
581 # Vector Minimum Pairwise (Signed and Unsigned Integer)
582 #----------------------------------------------------------------------
583 # CHECK: uminp v1.8b, v15.8b, v22.8b
584 # CHECK: sminp v2.16b, v14.16b, v23.16b
585 # CHECK: uminp v3.4h, v13.4h, v24.4h
586 # CHECK: sminp v4.8h, v12.8h, v25.8h
587 # CHECK: uminp v5.2s, v11.2s, v26.2s
588 # CHECK: sminp v6.4s, v10.4s, v27.4s
596 #----------------------------------------------------------------------
597 # Vector Maximum Pairwise (Floating Point)
598 #----------------------------------------------------------------------
599 # CHECK: fmaxp v29.2s, v28.2s, v25.2s
600 # CHECK: fmaxp v9.4s, v8.4s, v5.4s
601 # CHECK: fmaxp v11.2d, v10.2d, v7.2d
606 #----------------------------------------------------------------------
607 # Vector Minimum Pairwise (Floating Point)
608 #----------------------------------------------------------------------
609 # CHECK: fminp v29.2s, v28.2s, v25.2s
610 # CHECK: fminp v9.4s, v8.4s, v5.4s
611 # CHECK: fminp v11.2d, v10.2d, v7.2d
616 #----------------------------------------------------------------------
617 # Vector maxNum Pairwise (Floating Point)
618 #----------------------------------------------------------------------
619 # CHECK: fmaxnmp v9.2s, v8.2s, v5.2s
620 # CHECK: fmaxnmp v9.4s, v8.4s, v5.4s
621 # CHECK: fmaxnmp v11.2d, v10.2d, v7.2d
626 #----------------------------------------------------------------------
627 # Vector minNum Pairwise (Floating Point)
628 #----------------------------------------------------------------------
629 # CHECK: fminnmp v2.2s, v8.2s, v25.2s
630 # CHECK: fminnmp v9.4s, v8.4s, v5.4s
631 # CHECK: fminnmp v11.2d, v10.2d, v7.2d
636 #------------------------------------------------------------------------------
637 # Vector Add Pairwise (Integer)
638 #------------------------------------------------------------------------------
639 # CHECK: addp v31.8b, v31.8b, v31.8b
640 # CHECK: addp v0.2d, v0.2d, v0.2d
644 #------------------------------------------------------------------------------
645 # Vector Add Pairwise (Floating Point)
646 #------------------------------------------------------------------------------
647 # CHECK: faddp v0.4s, v0.4s, v0.4s
648 # CHECK: faddp v31.2s, v31.2s, v31.2s
653 #------------------------------------------------------------------------------
654 # Vector Saturating Doubling Multiply High
655 # Vector Saturating Rouding Doubling Multiply High
656 #------------------------------------------------------------------------------
657 # CHECK: sqdmulh v31.2s, v31.2s, v31.2s
658 # CHECK: sqdmulh v5.4s, v7.4s, v9.4s
659 # CHECK: sqrdmulh v31.4h, v3.4h, v13.4h
660 # CHECK: sqrdmulh v0.8h, v10.8h, v20.8h
666 #------------------------------------------------------------------------------
667 # Vector Multiply Extended
668 #------------------------------------------------------------------------------
669 # CHECK: fmulx v1.2s, v22.2s, v2.2s
670 # CHECK: fmulx v21.4s, v15.4s, v3.4s
671 # CHECK: fmulx v11.2d, v5.2d, v23.2d
676 #----------------------------------------------------------------------
677 # Vector Shift Left long
678 #----------------------------------------------------------------------
679 # CHECK: shll2 v2.8h, v4.16b, #8
680 # CHECK: shll2 v6.4s, v8.8h, #16
681 # CHECK: shll2 v6.2d, v8.4s, #32
682 # CHECK: shll v2.8h, v4.8b, #8
683 # CHECK: shll v6.4s, v8.4h, #16
684 # CHECK: shll v6.2d, v8.2s, #32
693 #----------------------------------------------------------------------
694 # Vector Shift Left by Immediate
695 #----------------------------------------------------------------------
696 # CHECK: shl v0.4h, v1.4h, #3
697 # CHECK: shl v0.16b, v1.16b, #3
698 # CHECK: shl v0.4s, v1.4s, #3
699 # CHECK: shl v0.2d, v1.2d, #3
705 #----------------------------------------------------------------------
706 # Vector Shift Left Long (Signed, Unsigned) by Immediate
707 #----------------------------------------------------------------------
708 # CHECK: sshll v0.2d, v1.2s, #3
709 # CHECK: sshll2 v0.4s, v1.8h, #3
710 # CHECK: ushll v0.4s, v1.4h, #3
711 # CHECK: ushll2 v0.8h, v1.16b, #3
717 #-----------------------------------------------------------------------------
718 #Integer shift right (Signed)
719 #-----------------------------------------------------------------------------
720 # CHECK: sshr v0.8b, v1.8b, #3
721 # CHECK: sshr v0.4h, v1.4h, #3
722 # CHECK: sshr v0.2s, v1.2s, #3
723 # CHECK: sshr v0.16b, v1.16b, #3
724 # CHECK: sshr v0.8h, v1.8h, #3
725 # CHECK: sshr v0.4s, v1.4s, #3
726 # CHECK: sshr v0.2d, v1.2d, #3
735 #-----------------------------------------------------------------------------
736 #Integer shift right (Unsigned)
737 #-----------------------------------------------------------------------------
738 # CHECK: ushr v0.8b, v1.8b, #3
739 # CHECK: ushr v0.4h, v1.4h, #3
740 # CHECK: ushr v0.2s, v1.2s, #3
741 # CHECK: ushr v0.16b, v1.16b, #3
742 # CHECK: ushr v0.8h, v1.8h, #3
743 # CHECK: ushr v0.4s, v1.4s, #3
744 # CHECK: ushr v0.2d, v1.2d, #3
753 #-----------------------------------------------------------------------------
754 #Integer shift right and accumulate (Signed)
755 #-----------------------------------------------------------------------------
756 # CHECK: ssra v0.8b, v1.8b, #3
757 # CHECK: ssra v0.4h, v1.4h, #3
758 # CHECK: ssra v0.2s, v1.2s, #3
759 # CHECK: ssra v0.16b, v1.16b, #3
760 # CHECK: ssra v0.8h, v1.8h, #3
761 # CHECK: ssra v0.4s, v1.4s, #3
762 # CHECK: ssra v0.2d, v1.2d, #3
771 #-----------------------------------------------------------------------------
772 #Integer shift right and accumulate (Unsigned)
773 #-----------------------------------------------------------------------------
774 # CHECK: usra v0.8b, v1.8b, #3
775 # CHECK: usra v0.4h, v1.4h, #3
776 # CHECK: usra v0.2s, v1.2s, #3
777 # CHECK: usra v0.16b, v1.16b, #3
778 # CHECK: usra v0.8h, v1.8h, #3
779 # CHECK: usra v0.4s, v1.4s, #3
780 # CHECK: usra v0.2d, v1.2d, #3
789 #-----------------------------------------------------------------------------
790 #Integer rounding shift right (Signed)
791 #-----------------------------------------------------------------------------
792 # CHECK: srshr v0.8b, v1.8b, #3
793 # CHECK: srshr v0.4h, v1.4h, #3
794 # CHECK: srshr v0.2s, v1.2s, #3
795 # CHECK: srshr v0.16b, v1.16b, #3
796 # CHECK: srshr v0.8h, v1.8h, #3
797 # CHECK: srshr v0.4s, v1.4s, #3
798 # CHECK: srshr v0.2d, v1.2d, #3
807 #-----------------------------------------------------------------------------
808 #Integer rounding shift right (Unsigned)
809 #-----------------------------------------------------------------------------
810 # CHECK: urshr v0.8b, v1.8b, #3
811 # CHECK: urshr v0.4h, v1.4h, #3
812 # CHECK: urshr v0.2s, v1.2s, #3
813 # CHECK: urshr v0.16b, v1.16b, #3
814 # CHECK: urshr v0.8h, v1.8h, #3
815 # CHECK: urshr v0.4s, v1.4s, #3
816 # CHECK: urshr v0.2d, v1.2d, #3
825 #-----------------------------------------------------------------------------
826 #Integer rounding shift right and accumulate (Signed)
827 #-----------------------------------------------------------------------------
828 # CHECK: srsra v0.8b, v1.8b, #3
829 # CHECK: srsra v0.4h, v1.4h, #3
830 # CHECK: srsra v0.2s, v1.2s, #3
831 # CHECK: srsra v0.16b, v1.16b, #3
832 # CHECK: srsra v0.8h, v1.8h, #3
833 # CHECK: srsra v0.4s, v1.4s, #3
834 # CHECK: srsra v0.2d, v1.2d, #3
843 #-----------------------------------------------------------------------------
844 #Integer rounding shift right and accumulate (Unsigned)
845 #-----------------------------------------------------------------------------
846 # CHECK: ursra v0.8b, v1.8b, #3
847 # CHECK: ursra v0.4h, v1.4h, #3
848 # CHECK: ursra v0.2s, v1.2s, #3
849 # CHECK: ursra v0.16b, v1.16b, #3
850 # CHECK: ursra v0.8h, v1.8h, #3
851 # CHECK: ursra v0.4s, v1.4s, #3
852 # CHECK: ursra v0.2d, v1.2d, #3
861 #-----------------------------------------------------------------------------
862 #Integer shift right and insert
863 #-----------------------------------------------------------------------------
864 # CHECK: sri v0.8b, v1.8b, #3
865 # CHECK: sri v0.4h, v1.4h, #3
866 # CHECK: sri v0.2s, v1.2s, #3
867 # CHECK: sri v0.16b, v1.16b, #3
868 # CHECK: sri v0.8h, v1.8h, #3
869 # CHECK: sri v0.4s, v1.4s, #3
870 # CHECK: sri v0.2d, v1.2d, #3
879 #-----------------------------------------------------------------------------
880 #Integer shift left and insert
881 #-----------------------------------------------------------------------------
882 # CHECK: sli v0.8b, v1.8b, #3
883 # CHECK: sli v0.4h, v1.4h, #3
884 # CHECK: sli v0.2s, v1.2s, #3
885 # CHECK: sli v0.16b, v1.16b, #3
886 # CHECK: sli v0.8h, v1.8h, #3
887 # CHECK: sli v0.4s, v1.4s, #3
888 # CHECK: sli v0.2d, v1.2d, #3
897 #-----------------------------------------------------------------------------
898 #Integer saturating shift left unsigned
899 #-----------------------------------------------------------------------------
900 # CHECK: sqshlu v0.8b, v1.8b, #3
901 # CHECK: sqshlu v0.4h, v1.4h, #3
902 # CHECK: sqshlu v0.2s, v1.2s, #3
903 # CHECK: sqshlu v0.16b, v1.16b, #3
904 # CHECK: sqshlu v0.8h, v1.8h, #3
905 # CHECK: sqshlu v0.4s, v1.4s, #3
906 # CHECK: sqshlu v0.2d, v1.2d, #3
915 #-----------------------------------------------------------------------------
916 #Integer saturating shift left (Signed)
917 #-----------------------------------------------------------------------------
918 # CHECK: sqshl v0.8b, v1.8b, #3
919 # CHECK: sqshl v0.4h, v1.4h, #3
920 # CHECK: sqshl v0.2s, v1.2s, #3
921 # CHECK: sqshl v0.16b, v1.16b, #3
922 # CHECK: sqshl v0.8h, v1.8h, #3
923 # CHECK: sqshl v0.4s, v1.4s, #3
924 # CHECK: sqshl v0.2d, v1.2d, #3
933 #-----------------------------------------------------------------------------
934 #Integer saturating shift left (Unsigned)
935 #-----------------------------------------------------------------------------
936 # CHECK: uqshl v0.8b, v1.8b, #3
937 # CHECK: uqshl v0.4h, v1.4h, #3
938 # CHECK: uqshl v0.2s, v1.2s, #3
939 # CHECK: uqshl v0.16b, v1.16b, #3
940 # CHECK: uqshl v0.8h, v1.8h, #3
941 # CHECK: uqshl v0.4s, v1.4s, #3
942 # CHECK: uqshl v0.2d, v1.2d, #3
951 #-----------------------------------------------------------------------------
952 #Integer shift right narrow
953 #-----------------------------------------------------------------------------
954 # CHECK: shrn v0.8b, v1.8h, #3
955 # CHECK: shrn v0.4h, v1.4s, #3
956 # CHECK: shrn v0.2s, v1.2d, #3
957 # CHECK: shrn2 v0.16b, v1.8h, #3
958 # CHECK: shrn2 v0.8h, v1.4s, #3
959 # CHECK: shrn2 v0.4s, v1.2d, #3
967 #-----------------------------------------------------------------------------
968 #Integer saturating shift right unsigned narrow (Signed)
969 #-----------------------------------------------------------------------------
970 # CHECK: sqshrun v0.8b, v1.8h, #3
971 # CHECK: sqshrun v0.4h, v1.4s, #3
972 # CHECK: sqshrun v0.2s, v1.2d, #3
973 # CHECK: sqshrun2 v0.16b, v1.8h, #3
974 # CHECK: sqshrun2 v0.8h, v1.4s, #3
975 # CHECK: sqshrun2 v0.4s, v1.2d, #3
983 #-----------------------------------------------------------------------------
984 #Integer rounding shift right narrow
985 #-----------------------------------------------------------------------------
986 # CHECK: rshrn v0.8b, v1.8h, #3
987 # CHECK: rshrn v0.4h, v1.4s, #3
988 # CHECK: rshrn v0.2s, v1.2d, #3
989 # CHECK: rshrn2 v0.16b, v1.8h, #3
990 # CHECK: rshrn2 v0.8h, v1.4s, #3
991 # CHECK: rshrn2 v0.4s, v1.2d, #3
999 #-----------------------------------------------------------------------------
1000 #Integer saturating shift right rounded unsigned narrow (Signed)
1001 #-----------------------------------------------------------------------------
1002 # CHECK: sqrshrun v0.8b, v1.8h, #3
1003 # CHECK: sqrshrun v0.4h, v1.4s, #3
1004 # CHECK: sqrshrun v0.2s, v1.2d, #3
1005 # CHECK: sqrshrun2 v0.16b, v1.8h, #3
1006 # CHECK: sqrshrun2 v0.8h, v1.4s, #3
1007 # CHECK: sqrshrun2 v0.4s, v1.2d, #3
1015 #-----------------------------------------------------------------------------
1016 #Integer saturating shift right narrow (Signed)
1017 #-----------------------------------------------------------------------------
1018 # CHECK: sqshrn v0.8b, v1.8h, #3
1019 # CHECK: sqshrn v0.4h, v1.4s, #3
1020 # CHECK: sqshrn v0.2s, v1.2d, #3
1021 # CHECK: sqshrn2 v0.16b, v1.8h, #3
1022 # CHECK: sqshrn2 v0.8h, v1.4s, #3
1023 # CHECK: sqshrn2 v0.4s, v1.2d, #3
1031 #-----------------------------------------------------------------------------
1032 #Integer saturating shift right narrow (Unsigned)
1033 #-----------------------------------------------------------------------------
1034 # CHECK: uqshrn v0.8b, v1.8h, #3
1035 # CHECK: uqshrn v0.4h, v1.4s, #3
1036 # CHECK: uqshrn v0.2s, v1.2d, #3
1037 # CHECK: uqshrn2 v0.16b, v1.8h, #3
1038 # CHECK: uqshrn2 v0.8h, v1.4s, #3
1039 # CHECK: uqshrn2 v0.4s, v1.2d, #3
1047 #-----------------------------------------------------------------------------
1048 #Integer saturating shift right rounded narrow (Signed)
1049 #-----------------------------------------------------------------------------
1050 # CHECK: sqrshrn v0.8b, v1.8h, #3
1051 # CHECK: sqrshrn v0.4h, v1.4s, #3
1052 # CHECK: sqrshrn v0.2s, v1.2d, #3
1053 # CHECK: sqrshrn2 v0.16b, v1.8h, #3
1054 # CHECK: sqrshrn2 v0.8h, v1.4s, #3
1055 # CHECK: sqrshrn2 v0.4s, v1.2d, #3
1063 #-----------------------------------------------------------------------------
1064 #Integer saturating shift right rounded narrow (Unsigned)
1065 #-----------------------------------------------------------------------------
1066 # CHECK: uqrshrn v0.8b, v1.8h, #3
1067 # CHECK: uqrshrn v0.4h, v1.4s, #3
1068 # CHECK: uqrshrn v0.2s, v1.2d, #3
1069 # CHECK: uqrshrn2 v0.16b, v1.8h, #3
1070 # CHECK: uqrshrn2 v0.8h, v1.4s, #3
1071 # CHECK: uqrshrn2 v0.4s, v1.2d, #3
1079 #-----------------------------------------------------------------------------
1080 #Fixed-point convert to floating-point
1081 #-----------------------------------------------------------------------------
1082 # CHECK: scvtf v0.2s, v1.2s, #3
1083 # CHECK: scvtf v0.4s, v1.4s, #3
1084 # CHECK: scvtf v0.2d, v1.2d, #3
1085 # CHECK: ucvtf v0.2s, v1.2s, #3
1086 # CHECK: ucvtf v0.4s, v1.4s, #3
1087 # CHECK: ucvtf v0.2d, v1.2d, #3
1096 #-----------------------------------------------------------------------------
1097 #Floating-point convert to fixed-point
1098 #-----------------------------------------------------------------------------
1099 # CHECK: fcvtzs v0.2s, v1.2s, #3
1100 # CHECK: fcvtzs v0.4s, v1.4s, #3
1101 # CHECK: fcvtzs v0.2d, v1.2d, #3
1102 # CHECK: fcvtzu v0.2s, v1.2s, #3
1103 # CHECK: fcvtzu v0.4s, v1.4s, #3
1104 # CHECK: fcvtzu v0.2d, v1.2d, #3
1113 #------------------------------------------------------------------------------
1114 # Vector with 3 operands having different data types
1115 #------------------------------------------------------------------------------
1117 #------------------------------------------------------------------------------
1119 #------------------------------------------------------------------------------
1121 #------------------------------------------------------------------------------
1123 #------------------------------------------------------------------------------
1125 # CHECK: saddl v0.8h, v1.8b, v2.8b
1126 # CHECK: saddl v0.4s, v1.4h, v2.4h
1127 # CHECK: saddl v0.2d, v1.2s, v2.2s
1132 # CHECK: saddl2 v0.4s, v1.8h, v2.8h
1133 # CHECK: saddl2 v0.8h, v1.16b, v2.16b
1134 # CHECK: saddl2 v0.2d, v1.4s, v2.4s
1139 # CHECK: uaddl v0.8h, v1.8b, v2.8b
1140 # CHECK: uaddl v0.4s, v1.4h, v2.4h
1141 # CHECK: uaddl v0.2d, v1.2s, v2.2s
1146 # CHECK: uaddl2 v0.8h, v1.16b, v2.16b
1147 # CHECK: uaddl2 v0.4s, v1.8h, v2.8h
1148 # CHECK: uaddl2 v0.2d, v1.4s, v2.4s
1153 # CHECK: ssubl v0.8h, v1.8b, v2.8b
1154 # CHECK: ssubl v0.4s, v1.4h, v2.4h
1155 # CHECK: ssubl v0.2d, v1.2s, v2.2s
1160 # CHECK: ssubl2 v0.8h, v1.16b, v2.16b
1161 # CHECK: ssubl2 v0.4s, v1.8h, v2.8h
1162 # CHECK: ssubl2 v0.2d, v1.4s, v2.4s
1167 # CHECK: usubl v0.8h, v1.8b, v2.8b
1168 # CHECK: usubl v0.4s, v1.4h, v2.4h
1169 # CHECK: usubl v0.2d, v1.2s, v2.2s
1174 # CHECK: usubl2 v0.8h, v1.16b, v2.16b
1175 # CHECK: usubl2 v0.4s, v1.8h, v2.8h
1176 # CHECK: usubl2 v0.2d, v1.4s, v2.4s
1181 # CHECK: sabal v0.8h, v1.8b, v2.8b
1182 # CHECK: sabal v0.4s, v1.4h, v2.4h
1183 # CHECK: sabal v0.2d, v1.2s, v2.2s
1188 # CHECK: sabal2 v0.8h, v1.16b, v2.16b
1189 # CHECK: sabal2 v0.4s, v1.8h, v2.8h
1190 # CHECK: sabal2 v0.2d, v1.4s, v2.4s
1195 # CHECK: uabal v0.8h, v1.8b, v2.8b
1196 # CHECK: uabal v0.4s, v1.4h, v2.4h
1197 # CHECK: uabal v0.2d, v1.2s, v2.2s
1202 # CHECK: uabal2 v0.8h, v1.16b, v2.16b
1203 # CHECK: uabal2 v0.4s, v1.8h, v2.8h
1204 # CHECK: uabal2 v0.2d, v1.4s, v2.4s
1209 # CHECK: sabdl v0.8h, v1.8b, v2.8b
1210 # CHECK: sabdl v0.4s, v1.4h, v2.4h
1211 # CHECK: sabdl v0.2d, v1.2s, v2.2s
1216 # CHECK: sabdl2 v0.8h, v1.16b, v2.16b
1217 # CHECK: sabdl2 v0.4s, v1.8h, v2.8h
1218 # CHECK: sabdl2 v0.2d, v1.4s, v2.4s
1223 # CHECK: uabdl v0.8h, v1.8b, v2.8b
1224 # CHECK: uabdl v0.4s, v1.4h, v2.4h
1225 # CHECK: uabdl v0.2d, v1.2s, v2.2s
1230 # CHECK: uabdl2 v0.8h, v1.16b, v2.16b
1231 # CHECK: uabdl2 v0.4s, v1.8h, v2.8h
1232 # CHECK: uabdl2 v0.2d, v1.4s, v2.4s
1237 # CHECK: smlal v0.8h, v1.8b, v2.8b
1238 # CHECK: smlal v0.4s, v1.4h, v2.4h
1239 # CHECK: smlal v0.2d, v1.2s, v2.2s
1244 # CHECK: smlal2 v0.8h, v1.16b, v2.16b
1245 # CHECK: smlal2 v0.4s, v1.8h, v2.8h
1246 # CHECK: smlal2 v0.2d, v1.4s, v2.4s
1251 # CHECK: umlal v0.8h, v1.8b, v2.8b
1252 # CHECK: umlal v0.4s, v1.4h, v2.4h
1253 # CHECK: umlal v0.2d, v1.2s, v2.2s
1259 # CHECK: umlal2 v0.8h, v1.16b, v2.16b
1260 # CHECK: umlal2 v0.4s, v1.8h, v2.8h
1261 # CHECK: umlal2 v0.2d, v1.4s, v2.4s
1266 # CHECK: smlsl v0.8h, v1.8b, v2.8b
1267 # CHECK: smlsl v0.4s, v1.4h, v2.4h
1268 # CHECK: smlsl v0.2d, v1.2s, v2.2s
1273 # CHECK: smlsl2 v0.8h, v1.16b, v2.16b
1274 # CHECK: smlsl2 v0.4s, v1.8h, v2.8h
1275 # CHECK: smlsl2 v0.2d, v1.4s, v2.4s
1280 # CHECK: umlsl v0.8h, v1.8b, v2.8b
1281 # CHECK: umlsl v0.4s, v1.4h, v2.4h
1282 # CHECK: umlsl v0.2d, v1.2s, v2.2s
1287 # CHECK: umlsl2 v0.8h, v1.16b, v2.16b
1288 # CHECK: umlsl2 v0.4s, v1.8h, v2.8h
1289 # CHECK: umlsl2 v0.2d, v1.4s, v2.4s
1294 # CHECK: smull v0.8h, v1.8b, v2.8b
1295 # CHECK: smull v0.4s, v1.4h, v2.4h
1296 # CHECK: smull v0.2d, v1.2s, v2.2s
1301 # CHECK: smull2 v0.8h, v1.16b, v2.16b
1302 # CHECK: smull2 v0.4s, v1.8h, v2.8h
1303 # CHECK: smull2 v0.2d, v1.4s, v2.4s
1308 # CHECK: umull v0.8h, v1.8b, v2.8b
1309 # CHECK: umull v0.4s, v1.4h, v2.4h
1310 # CHECK: umull v0.2d, v1.2s, v2.2s
1315 # CHECK: umull2 v0.8h, v1.16b, v2.16b
1316 # CHECK: umull2 v0.4s, v1.8h, v2.8h
1317 # CHECK: umull2 v0.2d, v1.4s, v2.4s
1322 #------------------------------------------------------------------------------
1324 #------------------------------------------------------------------------------
1326 # CHECK: sqdmlal v0.4s, v1.4h, v2.4h
1327 # CHECK: sqdmlal v0.2d, v1.2s, v2.2s
1331 # CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h
1332 # CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s
1336 # CHECK: sqdmlsl v0.4s, v1.4h, v2.4h
1337 # CHECK: sqdmlsl v0.2d, v1.2s, v2.2s
1341 # CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h
1342 # CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s
1346 # CHECK: sqdmull v0.4s, v1.4h, v2.4h
1347 # CHECK: sqdmull v0.2d, v1.2s, v2.2s
1351 # CHECK: sqdmull2 v0.4s, v1.8h, v2.8h
1352 # CHECK: sqdmull2 v0.2d, v1.4s, v2.4s
1356 #------------------------------------------------------------------------------
1358 #------------------------------------------------------------------------------
1360 # CHECK: pmull v0.8h, v1.8b, v2.8b
1363 # CHECK: pmull2 v0.8h, v1.16b, v2.16b
1366 #------------------------------------------------------------------------------
1368 #------------------------------------------------------------------------------
1370 # CHECK: saddw v0.8h, v1.8h, v2.8b
1371 # CHECK: saddw v0.4s, v1.4s, v2.4h
1372 # CHECK: saddw v0.2d, v1.2d, v2.2s
1377 # CHECK: saddw2 v0.8h, v1.8h, v2.16b
1378 # CHECK: saddw2 v0.4s, v1.4s, v2.8h
1379 # CHECK: saddw2 v0.2d, v1.2d, v2.4s
1384 # CHECK: uaddw v0.8h, v1.8h, v2.8b
1385 # CHECK: uaddw v0.4s, v1.4s, v2.4h
1386 # CHECK: uaddw v0.2d, v1.2d, v2.2s
1391 # CHECK: uaddw2 v0.8h, v1.8h, v2.16b
1392 # CHECK: uaddw2 v0.4s, v1.4s, v2.8h
1393 # CHECK: uaddw2 v0.2d, v1.2d, v2.4s
1398 # CHECK: ssubw v0.8h, v1.8h, v2.8b
1399 # CHECK: ssubw v0.4s, v1.4s, v2.4h
1400 # CHECK: ssubw v0.2d, v1.2d, v2.2s
1405 # CHECK: ssubw2 v0.8h, v1.8h, v2.16b
1406 # CHECK: ssubw2 v0.4s, v1.4s, v2.8h
1407 # CHECK: ssubw2 v0.2d, v1.2d, v2.4s
1412 # CHECK: usubw v0.8h, v1.8h, v2.8b
1413 # CHECK: usubw v0.4s, v1.4s, v2.4h
1414 # CHECK: usubw v0.2d, v1.2d, v2.2s
1419 # CHECK: usubw2 v0.8h, v1.8h, v2.16b
1420 # CHECK: usubw2 v0.4s, v1.4s, v2.8h
1421 # CHECK: usubw2 v0.2d, v1.2d, v2.4s
1426 #------------------------------------------------------------------------------
1428 #------------------------------------------------------------------------------
1430 # CHECK: addhn v0.8b, v1.8h, v2.8h
1431 # CHECK: addhn v0.4h, v1.4s, v2.4s
1432 # CHECK: addhn v0.2s, v1.2d, v2.2d
1437 # CHECK: addhn2 v0.16b, v1.8h, v2.8h
1438 # CHECK: addhn2 v0.8h, v1.4s, v2.4s
1439 # CHECK: addhn2 v0.4s, v1.2d, v2.2d
1444 # CHECK: raddhn v0.8b, v1.8h, v2.8h
1445 # CHECK: raddhn v0.4h, v1.4s, v2.4s
1446 # CHECK: raddhn v0.2s, v1.2d, v2.2d
1451 # CHECK: raddhn2 v0.16b, v1.8h, v2.8h
1452 # CHECK: raddhn2 v0.8h, v1.4s, v2.4s
1453 # CHECK: raddhn2 v0.4s, v1.2d, v2.2d
1458 # CHECK: rsubhn v0.8b, v1.8h, v2.8h
1459 # CHECK: rsubhn v0.4h, v1.4s, v2.4s
1460 # CHECK: rsubhn v0.2s, v1.2d, v2.2d
1465 # CHECK: rsubhn2 v0.16b, v1.8h, v2.8h
1466 # CHECK: rsubhn2 v0.8h, v1.4s, v2.4s
1467 # CHECK: rsubhn2 v0.4s, v1.2d, v2.2d
1472 #----------------------------------------------------------------------
1473 # Scalar Integer Saturating Doubling Multiply Half High
1474 #----------------------------------------------------------------------
1475 # CHECK: sqdmulh h10, h11, h12
1476 # CHECK: sqdmulh s20, s21, s2
1480 #----------------------------------------------------------------------
1481 # Scalar Integer Saturating Rounding Doubling Multiply Half High
1482 #----------------------------------------------------------------------
1483 # CHECK: sqrdmulh h10, h11, h12
1484 # CHECK: sqrdmulh s20, s21, s2
1488 #----------------------------------------------------------------------
1489 # Floating-point multiply extended
1490 #----------------------------------------------------------------------
1491 # CHECK: fmulx s20, s22, s15
1492 # CHECK: fmulx d23, d11, d1
1496 #----------------------------------------------------------------------
1497 # Floating-point Reciprocal Step
1498 #----------------------------------------------------------------------
1499 # CHECK: frecps s21, s16, s13
1500 # CHECK: frecps d22, d30, d21
1504 #----------------------------------------------------------------------
1505 # Floating-point Reciprocal Square Root Step
1506 #----------------------------------------------------------------------
1507 # CHECK: frsqrts s21, s5, s12
1508 # CHECK: frsqrts d8, d22, d18
1512 #----------------------------------------------------------------------
1513 # Scalar Signed Integer Convert To Floating-point
1514 #----------------------------------------------------------------------
1515 # CHECK: scvtf s22, s13
1516 # CHECK: scvtf d21, d12
1520 #----------------------------------------------------------------------
1521 # Scalar Unsigned Integer Convert To Floating-point
1522 #----------------------------------------------------------------------
1523 # CHECK: ucvtf s22, s13
1524 # CHECK: ucvtf d21, d14
1528 #----------------------------------------------------------------------
1529 # Scalar Floating-point Reciprocal Estimate
1530 #----------------------------------------------------------------------
1531 # CHECK: frecpe s19, s14
1532 # CHECK: frecpe d13, d13
1536 #----------------------------------------------------------------------
1537 # Scalar Floating-point Reciprocal Exponent
1538 #----------------------------------------------------------------------
1539 # CHECK: frecpx s18, s10
1540 # CHECK: frecpx d16, d19
1544 #----------------------------------------------------------------------
1545 # Scalar Floating-point Reciprocal Square Root Estimate
1546 #----------------------------------------------------------------------
1547 # CHECK: frsqrte s22, s13
1548 # CHECK: frsqrte d21, d12
1552 #----------------------------------------------------------------------
1553 # Scalar Compare Bitwise Equal
1554 #----------------------------------------------------------------------
1555 # CHECK: cmeq d20, d21, d22
1558 #----------------------------------------------------------------------
1559 # Scalar Compare Bitwise Equal To Zero
1560 #----------------------------------------------------------------------
1561 # CHECK: cmeq d20, d21, #{{0x0|0}}
1564 #----------------------------------------------------------------------
1565 # Scalar Compare Unsigned Higher Or Same
1566 #----------------------------------------------------------------------
1567 # CHECK: cmhs d20, d21, d22
1571 #----------------------------------------------------------------------
1572 # Scalar Compare Signed Greather Than Or Equal
1573 #----------------------------------------------------------------------
1574 # CHECK: cmge d20, d21, d22
1577 #----------------------------------------------------------------------
1578 # Scalar Compare Signed Greather Than Or Equal To Zero
1579 #----------------------------------------------------------------------
1580 # CHECK: cmge d20, d21, #{{0x0|0}}
1583 #----------------------------------------------------------------------
1584 # Scalar Compare Unsigned Higher
1585 #----------------------------------------------------------------------
1586 # CHECK: cmhi d20, d21, d22
1589 #----------------------------------------------------------------------
1590 # Scalar Compare Signed Greater Than
1591 #----------------------------------------------------------------------
1592 # CHECK: cmgt d20, d21, d22
1595 #----------------------------------------------------------------------
1596 # Scalar Compare Signed Greater Than Zero
1597 #----------------------------------------------------------------------
1598 # CHECK: cmgt d20, d21, #{{0x0|0}}
1601 #----------------------------------------------------------------------
1602 # Scalar Compare Signed Less Than Or Equal To Zero
1603 #----------------------------------------------------------------------
1604 # CHECK: cmle d20, d21, #{{0x0|0}}
1607 #----------------------------------------------------------------------
1608 # Scalar Compare Less Than Zero
1609 #----------------------------------------------------------------------
1610 # CHECK: cmlt d20, d21, #{{0x0|0}}
1613 #----------------------------------------------------------------------
1614 # Scalar Compare Bitwise Test Bits
1615 #----------------------------------------------------------------------
1616 # CHECK: cmtst d20, d21, d22
1619 #----------------------------------------------------------------------
1620 # Scalar Floating-point Compare Mask Equal
1621 #----------------------------------------------------------------------
1622 # CHECK: fcmeq s10, s11, s12
1623 # CHECK: fcmeq d20, d21, d22
1627 #----------------------------------------------------------------------
1628 # Scalar Floating-point Compare Mask Equal To Zero
1629 #----------------------------------------------------------------------
1630 # CHECK: fcmeq s10, s11, #0.0
1631 # CHECK: fcmeq d20, d21, #0.0
1635 #----------------------------------------------------------------------
1636 # Scalar Floating-point Compare Mask Greater Than Or Equal
1637 #----------------------------------------------------------------------
1638 # CHECK: fcmge s10, s11, s12
1639 # CHECK: fcmge d20, d21, d22
1643 #----------------------------------------------------------------------
1644 # Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
1645 #----------------------------------------------------------------------
1646 # CHECK: fcmge s10, s11, #0.0
1647 # CHECK: fcmge d20, d21, #0.0
1651 #----------------------------------------------------------------------
1652 # Scalar Floating-point Compare Mask Greather Than
1653 #----------------------------------------------------------------------
1654 # CHECK: fcmgt s10, s11, s12
1655 # CHECK: fcmgt d20, d21, d22
1659 #----------------------------------------------------------------------
1660 # Scalar Floating-point Compare Mask Greather Than Zero
1661 #----------------------------------------------------------------------
1662 # CHECK: fcmgt s10, s11, #0.0
1663 # CHECK: fcmgt d20, d21, #0.0
1667 #----------------------------------------------------------------------
1668 # Scalar Floating-point Compare Mask Less Than Or Equal To Zero
1669 #----------------------------------------------------------------------
1670 # CHECK: fcmle s10, s11, #0.0
1671 # CHECK: fcmle d20, d21, #0.0
1675 #----------------------------------------------------------------------
1676 # Scalar Floating-point Compare Mask Less Than
1677 #----------------------------------------------------------------------
1678 # CHECK: fcmlt s10, s11, #0.0
1679 # CHECK: fcmlt d20, d21, #0.0
1683 #----------------------------------------------------------------------
1684 # Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
1685 #----------------------------------------------------------------------
1686 # CHECK: facge s10, s11, s12
1687 # CHECK: facge d20, d21, d22
1691 #----------------------------------------------------------------------
1692 # Scalar Floating-point Absolute Compare Mask Greater Than
1693 #----------------------------------------------------------------------
1694 # CHECK: facgt s10, s11, s12
1695 # CHECK: facgt d20, d21, d22
1699 #----------------------------------------------------------------------
1700 # Scalar Absolute Value
1701 #----------------------------------------------------------------------
1702 # CHECK: abs d29, d24
1705 #----------------------------------------------------------------------
1706 # Scalar Signed Saturating Absolute Value
1707 #----------------------------------------------------------------------
1708 # CHECK: sqabs b19, b14
1709 # CHECK: sqabs h21, h15
1710 # CHECK: sqabs s20, s12
1711 # CHECK: sqabs d18, d12
1717 #----------------------------------------------------------------------
1719 #----------------------------------------------------------------------
1720 # CHECK: neg d29, d24
1723 #----------------------------------------------------------------------
1724 # Scalar Signed Saturating Negate
1725 #----------------------------------------------------------------------
1726 # CHECK: sqneg b19, b14
1727 # CHECK: sqneg h21, h15
1728 # CHECK: sqneg s20, s12
1729 # CHECK: sqneg d18, d12
1735 #----------------------------------------------------------------------
1736 # Signed Saturating Accumulated of Unsigned Value
1737 #----------------------------------------------------------------------
1738 # CHECK: suqadd b19, b14
1739 # CHECK: suqadd h20, h15
1740 # CHECK: suqadd s21, s12
1741 # CHECK: suqadd d18, d22
1747 #----------------------------------------------------------------------
1748 # Unsigned Saturating Accumulated of Signed Value
1749 #----------------------------------------------------------------------
1750 # CHECK: usqadd b19, b14
1751 # CHECK: usqadd h20, h15
1752 # CHECK: usqadd s21, s12
1753 # CHECK: usqadd d18, d22
1759 #----------------------------------------------------------------------
1760 # Signed Saturating Doubling Multiply-Add Long
1761 #----------------------------------------------------------------------
1762 # CHECK: sqdmlal s17, h27, h12
1763 # CHECK: sqdmlal d19, s24, s12
1767 #----------------------------------------------------------------------
1768 # Signed Saturating Doubling Multiply-Subtract Long
1769 #----------------------------------------------------------------------
1770 # CHECK: sqdmlsl s14, h12, h25
1771 # CHECK: sqdmlsl d12, s23, s13
1775 #----------------------------------------------------------------------
1776 # Signed Saturating Doubling Multiply Long
1777 #----------------------------------------------------------------------
1778 # CHECK: sqdmull s12, h22, h12
1779 # CHECK: sqdmull d15, s22, s12
1783 #----------------------------------------------------------------------
1784 # Scalar Signed Saturating Extract Unsigned Narrow
1785 #----------------------------------------------------------------------
1786 # CHECK: sqxtun b19, h14
1787 # CHECK: sqxtun h21, s15
1788 # CHECK: sqxtun s20, d12
1793 #----------------------------------------------------------------------
1794 # Scalar Signed Saturating Extract Signed Narrow
1795 #----------------------------------------------------------------------
1796 # CHECK: sqxtn b18, h18
1797 # CHECK: sqxtn h20, s17
1798 # CHECK: sqxtn s19, d14
1803 #----------------------------------------------------------------------
1804 # Scalar Unsigned Saturating Extract Narrow
1805 #----------------------------------------------------------------------
1806 # CHECK: uqxtn b18, h18
1807 # CHECK: uqxtn h20, s17
1808 # CHECK: uqxtn s19, d14
1813 #----------------------------------------------------------------------
1814 # Scalar Signed Shift Right (Immediate)
1815 #----------------------------------------------------------------------
1816 # CHECK: sshr d15, d16, #12
1819 #----------------------------------------------------------------------
1820 # Scalar Unsigned Shift Right (Immediate)
1821 #----------------------------------------------------------------------
1822 # CHECK: ushr d10, d17, #18
1825 #----------------------------------------------------------------------
1826 # Scalar Signed Rounding Shift Right (Immediate)
1827 #----------------------------------------------------------------------
1828 # CHECK: srshr d19, d18, #7
1831 #----------------------------------------------------------------------
1832 # Scalar Unsigned Rounding Shift Right (Immediate)
1833 #----------------------------------------------------------------------
1834 # CHECK: urshr d20, d23, #31
1837 #----------------------------------------------------------------------
1838 # Scalar Signed Shift Right and Accumulate (Immediate)
1839 #----------------------------------------------------------------------
1840 # CHECK: ssra d18, d12, #21
1843 #----------------------------------------------------------------------
1844 # Scalar Unsigned Shift Right and Accumulate (Immediate)
1845 #----------------------------------------------------------------------
1846 # CHECK: usra d20, d13, #61
1849 #----------------------------------------------------------------------
1850 # Scalar Signed Rounding Shift Right and Accumulate (Immediate)
1851 #----------------------------------------------------------------------
1852 # CHECK: srsra d15, d11, #19
1855 #----------------------------------------------------------------------
1856 # Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
1857 #----------------------------------------------------------------------
1858 # CHECK: ursra d18, d10, #13
1861 #----------------------------------------------------------------------
1862 # Scalar Shift Left (Immediate)
1863 #----------------------------------------------------------------------
1864 # CHECK: shl d7, d10, #12
1867 #----------------------------------------------------------------------
1868 # Signed Saturating Shift Left (Immediate)
1869 #----------------------------------------------------------------------
1870 # CHECK: sqshl b11, b19, #7
1871 # CHECK: sqshl h13, h18, #11
1872 # CHECK: sqshl s14, s17, #22
1873 # CHECK: sqshl d15, d16, #51
1879 #----------------------------------------------------------------------
1880 # Unsigned Saturating Shift Left (Immediate)
1881 #----------------------------------------------------------------------
1882 # CHECK: uqshl b18, b15, #6
1883 # CHECK: uqshl h11, h18, #7
1884 # CHECK: uqshl s14, s19, #18
1885 # CHECK: uqshl d15, d12, #19
1891 #----------------------------------------------------------------------
1892 # Signed Saturating Shift Left Unsigned (Immediate)
1893 #----------------------------------------------------------------------
1894 # CHECK: sqshlu b15, b18, #6
1895 # CHECK: sqshlu h19, h17, #6
1896 # CHECK: sqshlu s16, s14, #25
1897 # CHECK: sqshlu d11, d13, #32
1903 #----------------------------------------------------------------------
1904 # Shift Right And Insert (Immediate)
1905 #----------------------------------------------------------------------
1906 # CHECK: sri d10, d12, #14
1909 #----------------------------------------------------------------------
1910 # Shift Left And Insert (Immediate)
1911 #----------------------------------------------------------------------
1912 # CHECK: sli d10, d14, #12
1915 #----------------------------------------------------------------------
1916 # Signed Saturating Shift Right Narrow (Immediate)
1917 #----------------------------------------------------------------------
1918 # CHECK: sqshrn b10, h15, #5
1919 # CHECK: sqshrn h17, s10, #4
1920 # CHECK: sqshrn s18, d10, #31
1925 #----------------------------------------------------------------------
1926 # Unsigned Saturating Shift Right Narrow (Immediate)
1927 #----------------------------------------------------------------------
1928 # CHECK: uqshrn b12, h10, #7
1929 # CHECK: uqshrn h10, s14, #5
1930 # CHECK: uqshrn s10, d12, #13
1935 #----------------------------------------------------------------------
1936 # Signed Saturating Rounded Shift Right Narrow (Immediate)
1937 #----------------------------------------------------------------------
1938 # CHECK: sqrshrn b10, h13, #2
1939 # CHECK: sqrshrn h15, s10, #6
1940 # CHECK: sqrshrn s15, d12, #9
1945 #----------------------------------------------------------------------
1946 # Unsigned Saturating Rounded Shift Right Narrow (Immediate)
1947 #----------------------------------------------------------------------
1948 # CHECK: uqrshrn b10, h12, #5
1949 # CHECK: uqrshrn h12, s10, #14
1950 # CHECK: uqrshrn s10, d10, #25
1955 #----------------------------------------------------------------------
1956 # Signed Saturating Shift Right Unsigned Narrow (Immediate)
1957 #----------------------------------------------------------------------
1958 # CHECK: sqshrun b15, h10, #7
1959 # CHECK: sqshrun h20, s14, #3
1960 # CHECK: sqshrun s10, d15, #15
1965 #----------------------------------------------------------------------
1966 # Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
1967 #----------------------------------------------------------------------
1968 # CHECK: sqrshrun b17, h10, #6
1969 # CHECK: sqrshrun h10, s13, #15
1970 # CHECK: sqrshrun s22, d16, #31
1975 #----------------------------------------------------------------------
1976 # Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
1977 #----------------------------------------------------------------------
1978 # CHECK: scvtf s22, s13, #32
1979 # CHECK: scvtf d21, d12, #64
1983 #----------------------------------------------------------------------
1984 # Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
1985 #----------------------------------------------------------------------
1986 # CHECK: ucvtf s22, s13, #32
1987 # CHECK: ucvtf d21, d14, #64
1991 #----------------------------------------------------------------------
1992 # Scalar Floating-point Convert To Signed Fixed-point (Immediate)
1993 #----------------------------------------------------------------------
1994 # CHECK: fcvtzs s21, s12, #1
1995 # CHECK: fcvtzs d21, d12, #1
1999 #----------------------------------------------------------------------
2000 # Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
2001 #----------------------------------------------------------------------
2002 # CHECK: fcvtzu s21, s12, #1
2003 # CHECK: fcvtzu d21, d12, #1
2007 #----------------------------------------------------------------------
2008 # Vector load/store multiple N-element structure
2009 #----------------------------------------------------------------------
2010 # CHECK: ld1 { v0.16b }, [x0]
2011 # CHECK: ld1 { v15.8h, v16.8h }, [x15]
2012 # CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp]
2013 # CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
2019 # CHECK: ld2 { v0.8b, v1.8b }, [x0]
2020 # CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15]
2021 # CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
2026 # CHECK: st1 { v0.16b }, [x0]
2027 # CHECK: st1 { v15.8h, v16.8h }, [x15]
2028 # CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp]
2029 # CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
2035 # CHECK: st2 { v0.8b, v1.8b }, [x0]
2036 # CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15]
2037 # CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
2042 #----------------------------------------------------------------------
2043 # Vector load/store multiple N-element structure (post-index)
2044 #----------------------------------------------------------------------
2045 # CHECK: ld1 { v15.8h }, [x15], x2
2046 # CHECK: ld1 { v31.4s, v0.4s }, [sp], #32
2047 # CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48
2048 # CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
2054 # CHECK: ld2 { v0.16b, v1.16b }, [x0], x1
2055 # CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15], x2
2056 # CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
2062 # CHECK: st1 { v15.8h }, [x15], x2
2063 # CHECK: st1 { v31.4s, v0.4s }, [sp], #32
2064 # CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0], #48
2065 # CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
2071 # CHECK: st2 { v0.16b, v1.16b }, [x0], x1
2072 # CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15], x2
2073 # CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
2078 #----------------------------------------------------------------------
2079 # Vector load single N-element structure to all lane of N
2080 # consecutive registers (N = 1,2,3,4)
2081 #----------------------------------------------------------------------
2082 # CHECK: ld1r { v0.16b }, [x0]
2083 # CHECK: ld1r { v15.8h }, [x15]
2084 # CHECK: ld2r { v31.4s, v0.4s }, [sp]
2085 # CHECK: ld2r { v0.2d, v1.2d }, [x0]
2086 # CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0]
2087 # CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15]
2088 # CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
2089 # CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp]
2099 #----------------------------------------------------------------------
2100 # Vector load/store single N-element structure to/from one lane of N
2101 # consecutive registers (N = 1,2,3,4)
2102 #----------------------------------------------------------------------
2103 # CHECK: ld1 { v0.b }[9], [x0]
2104 # CHECK: ld2 { v15.h, v16.h }[7], [x15]
2105 # CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp]
2106 # CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0]
2107 # CHECK: st1 { v0.d }[1], [x0]
2108 # CHECK: st2 { v31.s, v0.s }[3], [sp]
2109 # CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15]
2110 # CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0]
2120 #----------------------------------------------------------------------
2121 # Post-index of vector load single N-element structure to all lane of N
2122 # consecutive registers (N = 1,2,3,4)
2123 #----------------------------------------------------------------------
2124 # CHECK: ld1r { v0.16b }, [x0], #1
2125 # CHECK: ld1r { v15.8h }, [x15], #2
2126 # CHECK: ld2r { v31.4s, v0.4s }, [sp], #8
2127 # CHECK: ld2r { v0.2d, v1.2d }, [x0], #16
2128 # CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3
2129 # CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15], #6
2130 # CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], x30
2131 # CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp], x7
2141 #----------------------------------------------------------------------
2142 # Post-index of vector load/store single N-element structure to/from
2143 # one lane of N consecutive registers (N = 1,2,3,4)
2144 #----------------------------------------------------------------------
2145 # CHECK: ld1 { v0.b }[9], [x0], #1
2146 # CHECK: ld2 { v15.h, v16.h }[7], [x15], #4
2147 # CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp], x3
2148 # CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32
2149 # CHECK: ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0
2150 # CHECK: st1 { v0.d }[1], [x0], #8
2151 # CHECK: st2 { v31.s, v0.s }[3], [sp], #8
2152 # CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15], #6
2153 # CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5
2164 #----------------------------------------------------------------------
2166 #----------------------------------------------------------------------
2169 # CHECK: ext v0.8b, v1.8b, v2.8b, #{{0x3|3}}
2170 # CHECK: ext v0.16b, v1.16b, v2.16b, #{{0x3|3}}
2172 #----------------------------------------------------------------------
2173 # unzip with 3 same vectors to get primary result
2174 #----------------------------------------------------------------------
2175 # CHECK: uzp1 v1.8b, v1.8b, v2.8b
2176 # CHECK: uzp1 v2.16b, v1.16b, v2.16b
2177 # CHECK: uzp1 v3.4h, v1.4h, v2.4h
2178 # CHECK: uzp1 v4.8h, v1.8h, v2.8h
2179 # CHECK: uzp1 v5.2s, v1.2s, v2.2s
2180 # CHECK: uzp1 v6.4s, v1.4s, v2.4s
2181 # CHECK: uzp1 v7.2d, v1.2d, v2.2d
2190 #----------------------------------------------------------------------
2191 # transpose with 3 same vectors to get primary result
2192 #----------------------------------------------------------------------
2193 # CHECK: trn1 v8.8b, v1.8b, v2.8b
2194 # CHECK: trn1 v9.16b, v1.16b, v2.16b
2195 # CHECK: trn1 v10.4h, v1.4h, v2.4h
2196 # CHECK: trn1 v27.8h, v7.8h, v2.8h
2197 # CHECK: trn1 v12.2s, v7.2s, v2.2s
2198 # CHECK: trn1 v29.4s, v6.4s, v2.4s
2199 # CHECK: trn1 v14.2d, v6.2d, v2.2d
2208 #----------------------------------------------------------------------
2209 # zip with 3 same vectors to get primary result
2210 #----------------------------------------------------------------------
2211 # CHECK: zip1 v31.8b, v5.8b, v2.8b
2212 # CHECK: zip1 v0.16b, v5.16b, v2.16b
2213 # CHECK: zip1 v17.4h, v4.4h, v2.4h
2214 # CHECK: zip1 v2.8h, v4.8h, v2.8h
2215 # CHECK: zip1 v19.2s, v3.2s, v2.2s
2216 # CHECK: zip1 v4.4s, v3.4s, v2.4s
2217 # CHECK: zip1 v21.2d, v2.2d, v2.2d
2226 #----------------------------------------------------------------------
2227 # unzip with 3 same vectors to get secondary result
2228 #----------------------------------------------------------------------
2229 # CHECK: uzp2 v6.8b, v2.8b, v2.8b
2230 # CHECK: uzp2 v23.16b, v1.16b, v2.16b
2231 # CHECK: uzp2 v8.4h, v1.4h, v2.4h
2232 # CHECK: uzp2 v25.8h, v0.8h, v2.8h
2233 # CHECK: uzp2 v10.2s, v0.2s, v2.2s
2234 # CHECK: uzp2 v27.4s, v7.4s, v2.4s
2235 # CHECK: uzp2 v12.2d, v7.2d, v2.2d
2244 #----------------------------------------------------------------------
2245 # transpose with 3 same vectors to get secondary result
2246 #----------------------------------------------------------------------
2247 # CHECK: trn2 v29.8b, v6.8b, v2.8b
2248 # CHECK: trn2 v14.16b, v6.16b, v2.16b
2249 # CHECK: trn2 v31.4h, v5.4h, v2.4h
2250 # CHECK: trn2 v0.8h, v5.8h, v2.8h
2251 # CHECK: trn2 v17.2s, v4.2s, v2.2s
2252 # CHECK: trn2 v2.4s, v4.4s, v2.4s
2253 # CHECK: trn2 v19.2d, v3.2d, v2.2d
2262 #----------------------------------------------------------------------
2263 # zip with 3 same vectors to get secondary result
2264 #----------------------------------------------------------------------
2265 # CHECK: zip2 v4.8b, v3.8b, v2.8b
2266 # CHECK: zip2 v21.16b, v2.16b, v2.16b
2267 # CHECK: zip2 v6.4h, v2.4h, v2.4h
2268 # CHECK: zip2 v23.8h, v1.8h, v2.8h
2269 # CHECK: zip2 v8.2s, v1.2s, v2.2s
2270 # CHECK: zip2 v25.4s, v0.4s, v2.4s
2271 # CHECK: zip2 v10.2d, v0.2d, v2.2d
2280 #----------------------------------------------------------------------
2281 # Scalar Floating Point multiply (scalar, by element)
2282 #----------------------------------------------------------------------
2283 # CHECK: fmul s0, s1, v1.s[0]
2284 # CHECK: fmul s0, s1, v1.s[3]
2285 # CHECK: fmul d0, d1, v1.d[0]
2286 # CHECK: fmul d0, d1, v1.d[1]
2287 # CHECK: fmul d15, d15, v15.d[1]
2294 #----------------------------------------------------------------------
2295 # Scalar Floating Point multiply extended (scalar, by element)
2296 #----------------------------------------------------------------------
2297 # CHECK: fmulx s3, s5, v7.s[0]
2298 # CHECK: fmulx s3, s5, v7.s[3]
2299 # CHECK: fmulx s3, s5, v15.s[3]
2300 # CHECK: fmulx d0, d4, v8.d[0]
2301 # CHECK: fmulx d0, d4, v8.d[1]
2308 #----------------------------------------------------------------------
2309 # Scalar Floating Point fused multiply-add (scalar, by element)
2310 #----------------------------------------------------------------------
2311 # CHECK: fmla s0, s1, v1.s[0]
2312 # CHECK: fmla s0, s1, v1.s[3]
2313 # CHECK: fmla d0, d1, v1.d[0]
2314 # CHECK: fmla d0, d1, v1.d[1]
2315 # CHECK: fmla d15, d15, v15.d[1]
2322 #----------------------------------------------------------------------
2323 # Scalar Floating Point fused multiply-sub (scalar, by element)
2324 #----------------------------------------------------------------------
2325 # CHECK: fmls s3, s5, v7.s[0]
2326 # CHECK: fmls s3, s5, v7.s[3]
2327 # CHECK: fmls s3, s5, v15.s[3]
2328 # CHECK: fmls d0, d4, v8.d[0]
2329 # CHECK: fmls d0, d4, v8.d[1]
2336 #----------------------------------------------------------------------
2337 # Scalar Signed saturating doubling
2338 # multiply-add long (scalar, by element)
2339 #----------------------------------------------------------------------
2340 # CHECK: sqdmlal s0, h0, v0.h[0]
2341 # CHECK: sqdmlal s0, h0, v0.h[1]
2342 # CHECK: sqdmlal s0, h0, v0.h[2]
2343 # CHECK: sqdmlal s0, h0, v0.h[3]
2344 # CHECK: sqdmlal s0, h0, v0.h[4]
2345 # CHECK: sqdmlal s0, h0, v0.h[5]
2346 # CHECK: sqdmlal s0, h0, v0.h[6]
2347 # CHECK: sqdmlal s0, h0, v0.h[7]
2348 # CHECK: sqdmlal d8, s9, v15.s[0]
2349 # CHECK: sqdmlal d8, s9, v15.s[1]
2350 # CHECK: sqdmlal d8, s9, v15.s[2]
2351 # CHECK: sqdmlal d8, s9, v15.s[3]
2365 #----------------------------------------------------------------------
2366 # Scalar Signed saturating doubling
2367 # multiply-sub long (scalar, by element)
2368 #----------------------------------------------------------------------
2369 # CHECK: sqdmlsl s0, h0, v0.h[0]
2370 # CHECK: sqdmlsl s0, h0, v0.h[1]
2371 # CHECK: sqdmlsl s0, h0, v0.h[2]
2372 # CHECK: sqdmlsl s0, h0, v0.h[3]
2373 # CHECK: sqdmlsl s0, h0, v0.h[4]
2374 # CHECK: sqdmlsl s0, h0, v0.h[5]
2375 # CHECK: sqdmlsl s0, h0, v0.h[6]
2376 # CHECK: sqdmlsl s0, h0, v0.h[7]
2377 # CHECK: sqdmlsl d8, s9, v15.s[0]
2378 # CHECK: sqdmlsl d8, s9, v15.s[1]
2379 # CHECK: sqdmlsl d8, s9, v15.s[2]
2380 # CHECK: sqdmlsl d8, s9, v15.s[3]
2394 #----------------------------------------------------------------------
2395 # Scalar Signed saturating doubling multiply long (scalar, by element)
2396 #----------------------------------------------------------------------
2397 # CHECK: sqdmull s1, h1, v1.h[0]
2398 # CHECK: sqdmull s1, h1, v1.h[1]
2399 # CHECK: sqdmull s1, h1, v1.h[2]
2400 # CHECK: sqdmull s1, h1, v1.h[3]
2401 # CHECK: sqdmull s1, h1, v1.h[4]
2402 # CHECK: sqdmull s1, h1, v1.h[5]
2403 # CHECK: sqdmull s1, h1, v1.h[6]
2404 # CHECK: sqdmull s1, h1, v1.h[7]
2405 # CHECK: sqdmull d1, s1, v4.s[0]
2406 # CHECK: sqdmull d1, s1, v4.s[1]
2407 # CHECK: sqdmull d1, s1, v4.s[2]
2408 # CHECK: sqdmull d1, s1, v4.s[3]
2422 #----------------------------------------------------------------------
2423 # Scalar Signed saturating doubling multiply returning
2424 # high half (scalar, by element)
2425 #----------------------------------------------------------------------
2426 # CHECK: sqdmulh h7, h1, v14.h[0]
2427 # CHECK: sqdmulh h7, h15, v8.h[1]
2428 # CHECK: sqdmulh h7, h15, v8.h[2]
2429 # CHECK: sqdmulh h7, h15, v8.h[3]
2430 # CHECK: sqdmulh h7, h15, v8.h[4]
2431 # CHECK: sqdmulh h7, h15, v8.h[5]
2432 # CHECK: sqdmulh h7, h15, v8.h[6]
2433 # CHECK: sqdmulh h7, h15, v8.h[7]
2434 # CHECK: sqdmulh s15, s3, v4.s[0]
2435 # CHECK: sqdmulh s15, s14, v16.s[1]
2436 # CHECK: sqdmulh s15, s15, v16.s[2]
2437 # CHECK: sqdmulh s15, s16, v17.s[3]
2451 #----------------------------------------------------------------------
2452 # Scalar Signed saturating rounding doubling multiply
2453 # returning high half (scalar, by element)
2454 #----------------------------------------------------------------------
2455 # CHECK: sqrdmulh h7, h1, v14.h[0]
2456 # CHECK: sqrdmulh h7, h15, v8.h[1]
2457 # CHECK: sqrdmulh h7, h15, v8.h[2]
2458 # CHECK: sqrdmulh h7, h15, v8.h[3]
2459 # CHECK: sqrdmulh h7, h15, v8.h[4]
2460 # CHECK: sqrdmulh h7, h15, v8.h[5]
2461 # CHECK: sqrdmulh h7, h15, v8.h[6]
2462 # CHECK: sqrdmulh h7, h15, v8.h[7]
2463 # CHECK: sqrdmulh s15, s3, v4.s[0]
2464 # CHECK: sqrdmulh s15, s14, v16.s[1]
2465 # CHECK: sqrdmulh s15, s15, v16.s[2]
2466 # CHECK: sqrdmulh s15, s16, v17.s[3]
2480 #----------------------------------------------------------------------
2481 #Duplicate element (scalar)
2482 #----------------------------------------------------------------------
2483 # CHECK: {{dup|mov}} b0, v0.b[15]
2484 # CHECK: {{dup|mov}} h2, v31.h[5]
2485 # CHECK: {{dup|mov}} s17, v2.s[2]
2486 # CHECK: {{dup|mov}} d6, v12.d[1]
2492 #----------------------------------------------------------------------
2494 #----------------------------------------------------------------------
2499 # CHECK: tbl v0.8b, { v1.16b }, v2.8b
2500 # CHECK: tbl v16.8b, { v31.16b, v0.16b }, v2.8b
2501 # CHECK: tbl v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
2502 # CHECK: tbl v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b
2508 # CHECK: tbl v0.16b, { v1.16b }, v2.16b
2509 # CHECK: tbl v16.16b, { v31.16b, v0.16b }, v2.16b
2510 # CHECK: tbl v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
2511 # CHECK: tbl v0.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b
2517 # CHECK: tbx v0.8b, { v1.16b }, v2.8b
2518 # CHECK: tbx v16.8b, { v31.16b, v0.16b }, v2.8b
2519 # CHECK: tbx v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
2520 # CHECK: tbx v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b
2526 # CHECK: tbx v0.16b, { v1.16b }, v2.16b
2527 # CHECK: tbx v16.16b, { v31.16b, v0.16b }, v2.16b
2528 # CHECK: tbx v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
2529 # CHECK: tbx v16.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b
2531 #----------------------------------------------------------------------
2532 # Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
2534 #----------------------------------------------------------------------
2535 # CHECK: fcvtxn s22, d13
2538 #----------------------------------------------------------------------
2539 # Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
2541 #----------------------------------------------------------------------
2542 # CHECK: fcvtas s12, s13
2543 # CHECK: fcvtas d21, d14
2548 #----------------------------------------------------------------------
2549 # Scalar Floating-point Convert To Unsigned Integer, Rounding To
2550 # Nearest With Ties To Away
2551 #----------------------------------------------------------------------
2552 # CHECK: fcvtau s12, s13
2553 # CHECK: fcvtau d21, d14
2557 #----------------------------------------------------------------------
2558 # Scalar Floating-point Convert To Signed Integer, Rounding Toward
2560 #----------------------------------------------------------------------
2561 # CHECK: fcvtms s22, s13
2562 # CHECK: fcvtms d21, d14
2566 #----------------------------------------------------------------------
2567 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2569 #----------------------------------------------------------------------
2570 # CHECK: fcvtmu s12, s13
2571 # CHECK: fcvtmu d21, d14
2575 #----------------------------------------------------------------------
2576 # Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
2578 #----------------------------------------------------------------------
2580 # CHECK: fcvtns s22, s13
2581 # CHECK: fcvtns d21, d14
2586 #----------------------------------------------------------------------
2587 # Scalar Floating-point Convert To Unsigned Integer, Rounding To
2588 # Nearest With Ties To Even
2589 #----------------------------------------------------------------------
2591 # CHECK: fcvtnu s12, s13
2592 # CHECK: fcvtnu d21, d14
2596 #----------------------------------------------------------------------
2597 # Scalar Floating-point Convert To Signed Integer, Rounding Toward
2599 #----------------------------------------------------------------------
2600 # CHECK: fcvtps s22, s13
2601 # CHECK: fcvtps d21, d14
2605 #----------------------------------------------------------------------
2606 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2608 #----------------------------------------------------------------------
2609 # CHECK: fcvtpu s12, s13
2610 # CHECK: fcvtpu d21, d14
2614 #----------------------------------------------------------------------
2615 # Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
2616 #----------------------------------------------------------------------
2617 # CHECK: fcvtzs s12, s13
2618 # CHECK: fcvtzs d21, d14
2622 #----------------------------------------------------------------------
2623 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
2625 #----------------------------------------------------------------------
2626 # CHECK: fcvtzu s12, s13
2627 # CHECK: fcvtzu d21, d14
2631 #----------------------------------------------------------------------
2632 # Scalar Floating-point Absolute Difference
2633 #----------------------------------------------------------------------
2634 # CHECK: fabd s29, s24, s20
2635 # CHECK: fabd d29, d24, d20