1 # RUN: llvm-mc -triple arm64-apple-darwin -mattr=crypto -output-asm-variant=1 --disassemble < %s | FileCheck %s
10 # CHECK: abs.8b v0, v0
11 # CHECK: abs.16b v0, v0
12 # CHECK: abs.4h v0, v0
13 # CHECK: abs.8h v0, v0
14 # CHECK: abs.2s v0, v0
15 # CHECK: abs.4s v0, v0
25 # CHECK: add.8b v0, v0, v0
26 # CHECK: add.16b v0, v0, v0
27 # CHECK: add.4h v0, v0, v0
28 # CHECK: add.8h v0, v0, v0
29 # CHECK: add.2s v0, v0, v0
30 # CHECK: add.4s v0, v0, v0
31 # CHECK: add.2d v0, v0, v0
35 # CHECK: add d1, d2, d3
44 # CHECK: addhn.8b v0, v0, v0
45 # CHECK: addhn2.16b v0, v0, v0
46 # CHECK: addhn.4h v0, v0, v0
47 # CHECK: addhn2.8h v0, v0, v0
48 # CHECK: addhn.2s v0, v0, v0
49 # CHECK: addhn2.4s v0, v0, v0
59 # CHECK: addp.8b v0, v0, v0
60 # CHECK: addp.16b v0, v0, v0
61 # CHECK: addp.4h v0, v0, v0
62 # CHECK: addp.8h v0, v0, v0
63 # CHECK: addp.2s v0, v0, v0
64 # CHECK: addp.4s v0, v0, v0
65 # CHECK: addp.2d v0, v0, v0
69 # CHECK: addp.2d d0, v0
77 # CHECK: addv.8b b0, v0
78 # CHECK: addv.16b b0, v0
79 # CHECK: addv.4h h0, v0
80 # CHECK: addv.8h h0, v0
81 # CHECK: addv.4s s0, v0
93 # CHECK: dup.2d v0, x3
94 # CHECK: dup.4s v0, w3
95 # CHECK: dup.2s v0, w3
96 # CHECK: dup.8h v0, w3
97 # CHECK: dup.4h v0, w3
98 # CHECK: dup.16b v0, w3
99 # CHECK: dup.8b v0, w3
109 # CHECK: dup.2d v0, v3[1]
110 # CHECK: dup.2s v0, v3[1]
111 # CHECK: dup.4s v0, v3[1]
112 # CHECK: dup.4h v0, v3[1]
113 # CHECK: dup.8h v0, v3[1]
114 # CHECK: dup.8b v0, v3[1]
115 # CHECK: dup.16b v0, v3[1]
125 # CHECK: smov.s x3, v2[2]
126 # CHECK: smov.s x3, v2[2]
127 # CHECK: umov.s w3, v2[2]
128 # CHECK: umov.s w3, v2[2]
129 # CHECK: umov.d x3, v2[1]
130 # CHECK: umov.d x3, v2[1]
142 # CHECK: ins.d v2[1], x5
143 # CHECK: ins.s v2[1], w5
144 # CHECK: ins.h v2[1], w5
145 # CHECK: ins.b v2[1], w5
147 # CHECK: ins.d v2[1], x5
148 # CHECK: ins.s v2[1], w5
149 # CHECK: ins.h v2[1], w5
150 # CHECK: ins.b v2[1], w5
162 # CHECK: ins.d v2[1], v15[1]
163 # CHECK: ins.s v2[1], v15[1]
164 # CHECK: ins.h v2[1], v15[1]
165 # CHECK: ins.b v2[1], v15[1]
167 # CHECK: ins.d v2[1], v15[0]
168 # CHECK: ins.s v2[3], v15[2]
169 # CHECK: ins.h v2[7], v15[3]
170 # CHECK: ins.b v2[10], v15[5]
175 # CHECK: and.8b v0, v0, v0
176 # CHECK: and.16b v0, v0, v0
180 # CHECK: bic.8b v0, v0, v0
250 # CHECK: cmeq.8b v0, v0, v0
251 # CHECK: cmge.8b v0, v0, v0
252 # CHECK: cmgt.8b v0, v0, v0
253 # CHECK: cmhi.8b v0, v0, v0
254 # CHECK: cmhs.8b v0, v0, v0
255 # CHECK: cmtst.8b v0, v0, v0
256 # CHECK: fabd.2s v0, v0, v0
257 # CHECK: facge.2s v0, v0, v0
258 # CHECK: facgt.2s v0, v0, v0
259 # CHECK: faddp.2s v0, v0, v0
260 # CHECK: fadd.2s v0, v0, v0
261 # CHECK: fcmeq.2s v0, v0, v0
262 # CHECK: fcmge.2s v0, v0, v0
263 # CHECK: fcmgt.2s v0, v0, v0
264 # CHECK: fdiv.2s v0, v0, v0
265 # CHECK: fmaxnmp.2s v0, v0, v0
266 # CHECK: fmaxnm.2s v0, v0, v0
267 # CHECK: fmaxp.2s v0, v0, v0
268 # CHECK: fmax.2s v0, v0, v0
269 # CHECK: fminnmp.2s v0, v0, v0
270 # CHECK: fminnm.2s v0, v0, v0
271 # CHECK: fminp.2s v0, v0, v0
272 # CHECK: fmin.2s v0, v0, v0
273 # CHECK: fmla.2s v0, v0, v0
274 # CHECK: fmls.2s v0, v0, v0
275 # CHECK: fmulx.2s v0, v0, v0
276 # CHECK: fmul.2s v0, v0, v0
277 # CHECK: frecps.2s v0, v0, v0
278 # CHECK: frsqrts.2s v0, v0, v0
279 # CHECK: fsub.2s v0, v0, v0
280 # CHECK: mla.8b v0, v0, v0
281 # CHECK: mls.8b v0, v0, v0
282 # CHECK: mul.8b v0, v0, v0
283 # CHECK: pmul.8b v0, v0, v0
284 # CHECK: saba.8b v0, v0, v0
285 # CHECK: sabd.8b v0, v0, v0
286 # CHECK: shadd.8b v0, v0, v0
287 # CHECK: shsub.8b v0, v0, v0
288 # CHECK: smaxp.8b v0, v0, v0
289 # CHECK: smax.8b v0, v0, v0
290 # CHECK: sminp.8b v0, v0, v0
291 # CHECK: smin.8b v0, v0, v0
292 # CHECK: sqadd.8b v0, v0, v0
293 # CHECK: sqdmulh.4h v0, v0, v0
294 # CHECK: sqrdmulh.4h v0, v0, v0
295 # CHECK: sqrshl.8b v0, v0, v0
296 # CHECK: sqshl.8b v0, v0, v0
297 # CHECK: sqsub.8b v0, v0, v0
298 # CHECK: srhadd.8b v0, v0, v0
299 # CHECK: srshl.8b v0, v0, v0
300 # CHECK: sshl.8b v0, v0, v0
301 # CHECK: sub.8b v0, v0, v0
302 # CHECK: uaba.8b v0, v0, v0
303 # CHECK: uabd.8b v0, v0, v0
304 # CHECK: uhadd.8b v0, v0, v0
305 # CHECK: uhsub.8b v0, v0, v0
306 # CHECK: umaxp.8b v0, v0, v0
307 # CHECK: umax.8b v0, v0, v0
308 # CHECK: uminp.8b v0, v0, v0
309 # CHECK: umin.8b v0, v0, v0
310 # CHECK: uqadd.8b v0, v0, v0
311 # CHECK: uqrshl.8b v0, v0, v0
312 # CHECK: uqshl.8b v0, v0, v0
313 # CHECK: uqsub.8b v0, v0, v0
314 # CHECK: urhadd.8b v0, v0, v0
315 # CHECK: urshl.8b v0, v0, v0
316 # CHECK: ushl.8b v0, v0, v0
325 # CHECK: bif.8b v0, v0, v0
326 # CHECK: bit.8b v0, v0, v0
327 # CHECK: bsl.8b v0, v0, v0
328 # CHECK: eor.8b v0, v0, v0
329 # CHECK: orn.8b v0, v0, v0
330 # CHECK: orr.8b v0, v0, v1
339 # CHECK: sadalp.4h v0, v0
340 # CHECK: sadalp.8h v0, v0
341 # CHECK: sadalp.2s v0, v0
342 # CHECK: sadalp.4s v0, v0
343 # CHECK: sadalp.1d v0, v0
344 # CHECK: sadalp.2d v0, v0
429 # CHECK: cls.8b v0, v0
430 # CHECK: clz.8b v0, v0
431 # CHECK: cnt.8b v0, v0
432 # CHECK: fabs.2s v0, v0
433 # CHECK: fcvtas.2s v0, v0
434 # CHECK: fcvtau.2s v0, v0
435 # CHECK: fcvtms.2s v0, v0
436 # CHECK: fcvtmu.2s v0, v0
437 # CHECK: fcvtns.2s v0, v0
438 # CHECK: fcvtnu.2s v0, v0
439 # CHECK: fcvtps.2s v0, v0
440 # CHECK: fcvtpu.2s v0, v0
441 # CHECK: fcvtzs.2s v0, v0
442 # CHECK: fcvtzu.2s v0, v0
443 # CHECK: fneg.2s v0, v0
444 # CHECK: frecpe.2s v0, v0
445 # CHECK: frsqrte.2s v0, v0
446 # CHECK: fsqrt.2s v0, v0
447 # CHECK: neg.8b v0, v0
448 # CHECK: not.8b v0, v0
449 # CHECK: rbit.8b v0, v0
450 # CHECK: rev16.8b v0, v0
451 # CHECK: rev32.8b v0, v0
452 # CHECK: rev64.8b v0, v0
453 # CHECK: sadalp.4h v0, v0
454 # CHECK: saddlp.4h v0, v0
455 # CHECK: scvtf.2s v0, v0
456 # CHECK: shll.8h v0, v0, #8
457 # CHECK: sqabs.8b v0, v0
458 # CHECK: sqneg.8b v0, v0
459 # CHECK: sqxtn.8b v0, v0
460 # CHECK: sqxtun.8b v0, v0
461 # CHECK: suqadd.8b v0, v0
462 # CHECK: uadalp.4h v0, v0
463 # CHECK: uaddlp.4h v0, v0
464 # CHECK: ucvtf.2s v0, v0
465 # CHECK: uqxtn.8b v0, v0
466 # CHECK: urecpe.2s v0, v0
467 # CHECK: ursqrte.2s v0, v0
468 # CHECK: usqadd.8b v0, v0
469 # CHECK: xtn.8b v0, v0
479 # CHECK: cmeq.8b v0, v0, #0
480 # CHECK: cmeq.16b v0, v0, #0
481 # CHECK: cmeq.4h v0, v0, #0
482 # CHECK: cmeq.8h v0, v0, #0
483 # CHECK: cmeq.2s v0, v0, #0
484 # CHECK: cmeq.4s v0, v0, #0
485 # CHECK: cmeq.2d v0, v0, #0
497 # CHECK: cmge.8b v0, v0, #0
498 # CHECK: cmgt.8b v0, v0, #0
499 # CHECK: cmle.8b v0, v0, #0
500 # CHECK: cmlt.8b v0, v0, #0
501 # CHECK: fcmeq.2s v0, v0, #0
502 # CHECK: fcmge.2s v0, v0, #0
503 # CHECK: fcmgt.2s v0, v0, #0
504 # CHECK: fcmle.2s v0, v0, #0
505 # CHECK: fcmlt.2s v0, v0, #0
518 # CHECK: fcvtl v0.4s, v0.4h
519 # CHECK: fcvtl2 v0.4s, v0.8h
520 # CHECK: fcvtl v0.2d, v0.2s
521 # CHECK: fcvtl2 v0.2d, v0.4s
522 # CHECK: fcvtn v0.4h, v0.4s
523 # CHECK: fcvtn2 v0.8h, v0.4s
524 # CHECK: fcvtn v0.2s, v0.2d
525 # CHECK: fcvtn2 v0.4s, v0.2d
526 # CHECK: fcvtxn v0.2s, v0.2d
527 # CHECK: fcvtxn2 v0.4s, v0.2d
529 #===-------------------------------------------------------------------------===
530 # AdvSIMD modified immediate instructions
531 #===-------------------------------------------------------------------------===
538 # CHECK: bic.2s v0, #0x1
539 # CHECK: bic.2s v0, #0x1, lsl #8
540 # CHECK: bic.2s v0, #0x1, lsl #16
541 # CHECK: bic.2s v0, #0x1, lsl #24
547 # CHECK: bic.4h v0, #0x1
548 # CHECK: bic.4h v0, #0x1
549 # FIXME: bic.4h v0, #0x1, lsl #8
550 # 'bic.4h' should be selected over "fcvtnu.2s v0, v1, #0"
557 # CHECK: bic.4s v0, #0x1
558 # CHECK: bic.4s v0, #0x1, lsl #8
559 # CHECK: bic.4s v0, #0x1, lsl #16
560 # CHECK: bic.4s v0, #0x1, lsl #24
565 # CHECK: bic.8h v0, #0x1
566 # FIXME: bic.8h v0, #0x1, lsl #8
567 # "bic.8h" should be selected over "fcvtnu.4s v0, v1, #0"
571 # CHECK: fmov.2d v0, #0.12500000
576 # CHECK: fmov.2s v0, #0.12500000
577 # CHECK: fmov.4s v0, #0.12500000
584 # CHECK: orr.2s v0, #0x1
585 # CHECK: orr.2s v0, #0x1, lsl #8
586 # CHECK: orr.2s v0, #0x1, lsl #16
587 # CHECK: orr.2s v0, #0x1, lsl #24
592 # CHECK: orr.4h v0, #0x1
593 # FIXME: orr.4h v0, #0x1, lsl #8
594 # 'orr.4h' should be selected over "fcvtns.2s v0, v1, #0"
601 # CHECK: orr.4s v0, #0x1
602 # CHECK: orr.4s v0, #0x1, lsl #8
603 # CHECK: orr.4s v0, #0x1, lsl #16
604 # CHECK: orr.4s v0, #0x1, lsl #24
609 # CHECK: orr.8h v0, #0x1
610 # CHECK: orr.8h v0, #0x1, lsl #8
622 # CHECK: ld1.8b { v1 }, [x1]
623 # CHECK: ld1.16b { v2, v3 }, [x2]
624 # CHECK: ld1.4h { v4, v5, v6 }, [x3]
625 # CHECK: ld1.8h { v7, v8, v9, v10 }, [x4]
626 # CHECK: ld1.2s { v12, v13 }, [x0]
627 # CHECK: ld1.4s { v10, v11, v12 }, [x0]
628 # CHECK: ld1.1d { v13, v14 }, [x1]
629 # CHECK: ld1.2d { v15 }, [x2]
630 # CHECK: ld1.b { v0 }[0], [sp]
665 # CHECK: ld1.8b { v1 }, [x2], #8
666 # CHECK: ld1.8b { v1, v2 }, [x2], #16
667 # CHECK: ld1.8b { v1, v2, v3 }, [x2], #24
668 # CHECK: ld1.8b { v1, v2, v3, v4 }, [x2], #32
669 # CHECK: ld1.16b { v2 }, [x2], #16
670 # CHECK: ld1.16b { v2, v3 }, [x2], #32
671 # CHECK: ld1.16b { v2, v3, v4 }, [x2], #48
672 # CHECK: ld1.16b { v2, v3, v4, v5 }, [x2], #64
673 # CHECK: ld1.4h { v4 }, [x3], #8
674 # CHECK: ld1.4h { v4, v5 }, [x3], #16
675 # CHECK: ld1.4h { v4, v5, v6 }, [x3], #24
676 # CHECK: ld1.4h { v4, v5, v6, v7 }, [x3], #32
677 # CHECK: ld1.8h { v7 }, [x4], #16
678 # CHECK: ld1.8h { v7, v8 }, [x4], #32
679 # CHECK: ld1.8h { v7, v8, v9 }, [x4], #48
680 # CHECK: ld1.8h { v7, v8, v9, v10 }, [x4], #64
681 # CHECK: ld1.2s { v12 }, [x0], #8
682 # CHECK: ld1.2s { v12, v13 }, [x0], #16
683 # CHECK: ld1.2s { v12, v13, v14 }, [x0], #24
684 # CHECK: ld1.2s { v12, v13, v14, v15 }, [x0], #32
685 # CHECK: ld1.4s { v10 }, [x0], #16
686 # CHECK: ld1.4s { v10, v11 }, [x0], #32
687 # CHECK: ld1.4s { v10, v11, v12 }, [x0], #48
688 # CHECK: ld1.4s { v10, v11, v12, v13 }, [x0], #64
689 # CHECK: ld1.1d { v13 }, [x1], #8
690 # CHECK: ld1.1d { v13, v14 }, [x1], #16
691 # CHECK: ld1.1d { v13, v14, v15 }, [x1], #24
692 # CHECK: ld1.1d { v13, v14, v15, v16 }, [x1], #32
693 # CHECK: ld1.2d { v15 }, [x2], #16
694 # CHECK: ld1.2d { v15, v16 }, [x2], #32
695 # CHECK: ld1.2d { v15, v16, v17 }, [x2], #48
696 # CHECK: ld1.2d { v15, v16, v17, v18 }, [x2], #64
707 # CHECK: st1.8b { v1 }, [x1]
708 # CHECK: st1.16b { v2, v3 }, [x2]
709 # CHECK: st1.4h { v4, v5, v6 }, [x3]
710 # CHECK: st1.8h { v7, v8, v9, v10 }, [x4]
711 # CHECK: st1.2s { v12, v13 }, [x0]
712 # CHECK: st1.4s { v10, v11, v12 }, [x0]
713 # CHECK: st1.1d { v13, v14 }, [x1]
714 # CHECK: st1.2d { v15 }, [x2]
721 # CHECK: ld1.b { v1 }[2], [x3]
722 # CHECK: ld1.d { v2 }[1], [x4]
723 # CHECK: ld1.h { v3 }[3], [x5]
724 # CHECK: ld1.s { v4 }[2], [x6]
731 # CHECK: ld1.b { v1 }[2], [x3], #1
732 # CHECK: ld1.d { v2 }[1], [x4], #8
733 # CHECK: ld1.h { v3 }[3], [x5], #2
734 # CHECK: ld1.s { v4 }[2], [x6], #4
741 # CHECK: st1.b { v1 }[2], [x3]
742 # CHECK: st1.d { v2 }[1], [x4]
743 # CHECK: st1.h { v3 }[3], [x5]
744 # CHECK: st1.s { v4 }[2], [x6]
751 # CHECK: st1.b { v1 }[2], [x3], #1
752 # CHECK: st1.d { v2 }[1], [x4], #8
753 # CHECK: st1.h { v3 }[3], [x5], #2
754 # CHECK: st1.s { v4 }[2], [x6], #4
761 # CHECK: ld1.b { v1 }[2], [x3], x4
762 # CHECK: ld1.d { v2 }[1], [x4], x5
763 # CHECK: ld1.h { v3 }[3], [x5], x6
764 # CHECK: ld1.s { v4 }[2], [x6], x7
771 # CHECK: st1.b { v1 }[2], [x3], x4
772 # CHECK: st1.d { v2 }[1], [x4], x5
773 # CHECK: st1.h { v3 }[3], [x5], x6
774 # CHECK: st1.s { v4 }[2], [x6], x7
785 # CHECK: ld1.8b { v1 }, [x2], x3
786 # CHECK: ld1.16b { v2, v3 }, [x2], x4
787 # CHECK: ld1.4h { v4, v5, v6 }, [x3], x5
788 # CHECK: ld1.8h { v7, v8, v9, v10 }, [x4], x6
789 # CHECK: ld1.2s { v12, v13 }, [x0], x7
790 # CHECK: ld1.4s { v10, v11, v12 }, [x0], x8
791 # CHECK: ld1.1d { v13, v14 }, [x1], x9
792 # CHECK: ld1.2d { v15 }, [x2], x10
803 # CHECK: st1.8b { v1 }, [x2], x3
804 # CHECK: st1.16b { v2, v3 }, [x2], x4
805 # CHECK: st1.4h { v4, v5, v6 }, [x3], x5
806 # CHECK: st1.8h { v7, v8, v9, v10 }, [x4], x6
807 # CHECK: st1.2s { v12, v13 }, [x0], x7
808 # CHECK: st1.4s { v10, v11, v12 }, [x0], x8
809 # CHECK: st1.1d { v13, v14 }, [x1], x9
810 # CHECK: st1.2d { v15 }, [x2], x10
845 # CHECK: st1.8b { v1 }, [x2], #8
846 # CHECK: st1.8b { v1, v2 }, [x2], #16
847 # CHECK: st1.8b { v1, v2, v3 }, [x2], #24
848 # CHECK: st1.8b { v1, v2, v3, v4 }, [x2], #32
849 # CHECK: st1.16b { v2 }, [x2], #16
850 # CHECK: st1.16b { v2, v3 }, [x2], #32
851 # CHECK: st1.16b { v2, v3, v4 }, [x2], #48
852 # CHECK: st1.16b { v2, v3, v4, v5 }, [x2], #64
853 # CHECK: st1.4h { v4 }, [x3], #8
854 # CHECK: st1.4h { v4, v5 }, [x3], #16
855 # CHECK: st1.4h { v4, v5, v6 }, [x3], #24
856 # CHECK: st1.4h { v4, v5, v6, v7 }, [x3], #32
857 # CHECK: st1.8h { v7 }, [x4], #16
858 # CHECK: st1.8h { v7, v8 }, [x4], #32
859 # CHECK: st1.8h { v7, v8, v9 }, [x4], #48
860 # CHECK: st1.8h { v7, v8, v9, v10 }, [x4], #64
861 # CHECK: st1.2s { v12 }, [x0], #8
862 # CHECK: st1.2s { v12, v13 }, [x0], #16
863 # CHECK: st1.2s { v12, v13, v14 }, [x0], #24
864 # CHECK: st1.2s { v12, v13, v14, v15 }, [x0], #32
865 # CHECK: st1.4s { v10 }, [x0], #16
866 # CHECK: st1.4s { v10, v11 }, [x0], #32
867 # CHECK: st1.4s { v10, v11, v12 }, [x0], #48
868 # CHECK: st1.4s { v10, v11, v12, v13 }, [x0], #64
869 # CHECK: st1.1d { v13 }, [x1], #8
870 # CHECK: st1.1d { v13, v14 }, [x1], #16
871 # CHECK: st1.1d { v13, v14, v15 }, [x1], #24
872 # CHECK: st1.1d { v13, v14, v15, v16 }, [x1], #32
873 # CHECK: st1.2d { v15 }, [x2], #16
874 # CHECK: st1.2d { v15, v16 }, [x2], #32
875 # CHECK: st1.2d { v15, v16, v17 }, [x2], #48
876 # CHECK: st1.2d { v15, v16, v17, v18 }, [x2], #64
887 # CHECK: ld1r.8b { v1 }, [x1]
888 # CHECK: ld1r.8b { v1 }, [x1], x2
889 # CHECK: ld1r.4h { v4 }, [x3]
890 # CHECK: ld1r.4h { v4 }, [x3], x5
891 # CHECK: ld1r.2s { v9 }, [x5]
892 # CHECK: ld1r.2s { v9 }, [x5], x6
893 # CHECK: ld1r.1d { v12 }, [x7]
894 # CHECK: ld1r.1d { v12 }, [x7], x8
901 # CHECK: ld1r.8b { v1 }, [x1], #1
902 # CHECK: ld1r.4h { v1 }, [x1], #2
903 # CHECK: ld1r.2s { v1 }, [x1], #4
904 # CHECK: ld1r.1d { v1 }, [x1], #8
909 # CHECK: ld2.16b { v5, v6 }, [x2]
910 # CHECK: ld2.2s { v10, v11 }, [x0]
915 # CHECK: st2.16b { v5, v6 }, [x2]
916 # CHECK: st2.2s { v10, v11 }, [x0]
923 # CHECK: st2.b { v1, v2 }[2], [x3]
924 # CHECK: st2.d { v2, v3 }[1], [x4]
925 # CHECK: st2.h { v3, v4 }[2], [x6]
926 # CHECK: st2.s { v4, v5 }[3], [x7]
933 # CHECK: st2.b { v1, v2 }[2], [x3], #2
934 # CHECK: st2.d { v2, v3 }[1], [x4], #16
935 # CHECK: st2.h { v3, v4 }[3], [x5], #4
936 # CHECK: st2.s { v4, v5 }[2], [x6], #8
943 # CHECK: ld2.b { v1, v2 }[2], [x3]
944 # CHECK: ld2.d { v2, v3 }[1], [x4]
945 # CHECK: ld2.h { v3, v4 }[2], [x6]
946 # CHECK: ld2.s { v4, v5 }[3], [x7]
953 # CHECK: ld2.b { v1, v2 }[2], [x3], #2
954 # CHECK: ld2.d { v2, v3 }[1], [x4], #16
955 # CHECK: ld2.h { v3, v4 }[3], [x5], #4
956 # CHECK: ld2.s { v4, v5 }[2], [x6], #8
963 # CHECK: ld2.b { v1, v2 }[2], [x3], x4
964 # CHECK: ld2.d { v2, v3 }[1], [x4], x6
965 # CHECK: ld2.h { v3, v4 }[3], [x5], x8
966 # CHECK: ld2.s { v4, v5 }[2], [x6], x10
973 # CHECK: st2.b { v1, v2 }[2], [x3], x4
974 # CHECK: st2.d { v2, v3 }[1], [x4], x6
975 # CHECK: st2.h { v3, v4 }[3], [x5], x8
976 # CHECK: st2.s { v4, v5 }[2], [x6], x10
981 # CHECK: ld2.4h { v4, v5 }, [x3], x5
982 # CHECK: ld2.2s { v12, v13 }, [x0], x7
992 # CHECK: ld2.8b { v0, v1 }, [x0], #16
993 # CHECK: ld2.16b { v0, v1 }, [x0], #32
994 # CHECK: ld2.4h { v0, v1 }, [x0], #16
995 # CHECK: ld2.8h { v0, v1 }, [x0], #32
996 # CHECK: ld2.2s { v0, v1 }, [x0], #16
997 # CHECK: ld2.4s { v0, v1 }, [x0], #32
998 # CHECK: ld2.2d { v0, v1 }, [x0], #32
1003 # CHECK: st2.4h { v4, v5 }, [x3], x5
1004 # CHECK: st2.2s { v12, v13 }, [x0], x7
1014 # CHECK: st2.8b { v0, v1 }, [x0], #16
1015 # CHECK: st2.16b { v0, v1 }, [x0], #32
1016 # CHECK: st2.4h { v0, v1 }, [x0], #16
1017 # CHECK: st2.8h { v0, v1 }, [x0], #32
1018 # CHECK: st2.2s { v0, v1 }, [x0], #16
1019 # CHECK: st2.4s { v0, v1 }, [x0], #32
1020 # CHECK: st2.2d { v0, v1 }, [x0], #32
1037 # CHECK: ld2r.8b { v1, v2 }, [x1]
1038 # CHECK: ld2r.8b { v1, v2 }, [x1], x2
1039 # CHECK: ld2r.16b { v1, v2 }, [x1]
1040 # CHECK: ld2r.16b { v1, v2 }, [x1], x2
1041 # CHECK: ld2r.4h { v1, v2 }, [x1]
1042 # CHECK: ld2r.4h { v1, v2 }, [x1], x2
1043 # CHECK: ld2r.8h { v1, v2 }, [x1]
1044 # CHECK: ld2r.8h { v1, v2 }, [x1], x2
1045 # CHECK: ld2r.2s { v1, v2 }, [x1]
1046 # CHECK: ld2r.2s { v1, v2 }, [x1], x2
1047 # CHECK: ld2r.2d { v1, v2 }, [x1]
1048 # CHECK: ld2r.2d { v1, v2 }, [x1], x2
1049 # CHECK: ld2r.1d { v1, v2 }, [x1]
1050 # CHECK: ld2r.1d { v1, v2 }, [x1], x2
1060 # CHECK: ld2r.8b { v1, v2 }, [x1], #2
1061 # CHECK: ld2r.16b { v1, v2 }, [x1], #2
1062 # CHECK: ld2r.4h { v1, v2 }, [x1], #4
1063 # CHECK: ld2r.8h { v1, v2 }, [x1], #4
1064 # CHECK: ld2r.2s { v1, v2 }, [x1], #8
1065 # CHECK: ld2r.2d { v1, v2 }, [x1], #16
1066 # CHECK: ld2r.1d { v1, v2 }, [x1], #16
1072 # CHECK: ld3.8b { v1, v2, v3 }, [x1]
1073 # CHECK: ld3.16b { v5, v6, v7 }, [x2]
1074 # CHECK: ld3.2s { v10, v11, v12 }, [x0]
1080 # CHECK: st3.8b { v1, v2, v3 }, [x1]
1081 # CHECK: st3.16b { v5, v6, v7 }, [x2]
1082 # CHECK: st3.2s { v10, v11, v12 }, [x0]
1089 # CHECK: ld3.b { v1, v2, v3 }[2], [x3], x4
1090 # CHECK: ld3.d { v2, v3, v4 }[1], [x4], x5
1091 # CHECK: ld3.h { v3, v4, v5 }[3], [x5], x6
1092 # CHECK: ld3.s { v4, v5, v6 }[2], [x6], x7
1099 # CHECK: st3.b { v1, v2, v3 }[2], [x3], x4
1100 # CHECK: st3.d { v2, v3, v4 }[1], [x4], x5
1101 # CHECK: st3.h { v3, v4, v5 }[3], [x5], x6
1102 # CHECK: st3.s { v4, v5, v6 }[2], [x6], x7
1109 # CHECK: st3.b { v1, v2, v3 }[2], [x3], #3
1110 # CHECK: st3.d { v2, v3, v4 }[1], [x4], #24
1111 # CHECK: st3.h { v3, v4, v5 }[3], [x5], #6
1112 # CHECK: st3.s { v4, v5, v6 }[2], [x6], #12
1122 # CHECK: ld3.8b { v1, v2, v3 }, [x2], x3
1123 # CHECK: ld3.16b { v2, v3, v4 }, [x2], x4
1124 # CHECK: ld3.4h { v4, v5, v6 }, [x3], x5
1125 # CHECK: ld3.8h { v7, v8, v9 }, [x4], x6
1126 # CHECK: ld3.2s { v12, v13, v14 }, [x0], x7
1127 # CHECK: ld3.4s { v10, v11, v12 }, [x0], x8
1128 # CHECK: ld3.2d { v15, v16, v17 }, [x2], x10
1138 # CHECK: ld3.8b { v0, v1, v2 }, [x0], #24
1139 # CHECK: ld3.16b { v0, v1, v2 }, [x0], #48
1140 # CHECK: ld3.4h { v0, v1, v2 }, [x0], #24
1141 # CHECK: ld3.8h { v0, v1, v2 }, [x0], #48
1142 # CHECK: ld3.2s { v0, v1, v2 }, [x0], #24
1143 # CHECK: ld3.4s { v0, v1, v2 }, [x0], #48
1144 # CHECK: ld3.2d { v0, v1, v2 }, [x0], #48
1154 # CHECK: st3.8b { v1, v2, v3 }, [x2], x3
1155 # CHECK: st3.16b { v2, v3, v4 }, [x2], x4
1156 # CHECK: st3.4h { v4, v5, v6 }, [x3], x5
1157 # CHECK: st3.8h { v7, v8, v9 }, [x4], x6
1158 # CHECK: st3.2s { v12, v13, v14 }, [x0], x7
1159 # CHECK: st3.4s { v10, v11, v12 }, [x0], x8
1160 # CHECK: st3.2d { v15, v16, v17 }, [x2], x10
1170 # CHECK: st3.8b { v0, v1, v2 }, [x0], #24
1171 # CHECK: st3.16b { v0, v1, v2 }, [x0], #48
1172 # CHECK: st3.4h { v0, v1, v2 }, [x0], #24
1173 # CHECK: st3.8h { v0, v1, v2 }, [x0], #48
1174 # CHECK: st3.2s { v0, v1, v2 }, [x0], #24
1175 # CHECK: st3.4s { v0, v1, v2 }, [x0], #48
1176 # CHECK: st3.2d { v0, v1, v2 }, [x0], #48
1183 # CHECK: ld3.b { v1, v2, v3 }[2], [x3]
1184 # CHECK: ld3.d { v2, v3, v4 }[1], [x4]
1185 # CHECK: ld3.h { v3, v4, v5 }[2], [x6]
1186 # CHECK: ld3.s { v4, v5, v6 }[3], [x7]
1193 # CHECK: ld3.b { v1, v2, v3 }[2], [x3], #3
1194 # CHECK: ld3.d { v2, v3, v4 }[1], [x4], #24
1195 # CHECK: ld3.h { v3, v4, v5 }[3], [x5], #6
1196 # CHECK: ld3.s { v4, v5, v6 }[2], [x6], #12
1203 # CHECK: st3.b { v1, v2, v3 }[2], [x3]
1204 # CHECK: st3.d { v2, v3, v4 }[1], [x4]
1205 # CHECK: st3.h { v3, v4, v5 }[2], [x6]
1206 # CHECK: st3.s { v4, v5, v6 }[3], [x7]
1223 # CHECK: ld3r.8b { v1, v2, v3 }, [x1]
1224 # CHECK: ld3r.8b { v1, v2, v3 }, [x1], x2
1225 # CHECK: ld3r.16b { v1, v2, v3 }, [x1]
1226 # CHECK: ld3r.16b { v1, v2, v3 }, [x1], x2
1227 # CHECK: ld3r.4h { v1, v2, v3 }, [x1]
1228 # CHECK: ld3r.4h { v1, v2, v3 }, [x1], x2
1229 # CHECK: ld3r.8h { v1, v2, v3 }, [x1]
1230 # CHECK: ld3r.8h { v1, v2, v3 }, [x1], x2
1231 # CHECK: ld3r.2s { v1, v2, v3 }, [x1]
1232 # CHECK: ld3r.2s { v1, v2, v3 }, [x1], x2
1233 # CHECK: ld3r.2d { v1, v2, v3 }, [x1]
1234 # CHECK: ld3r.2d { v1, v2, v3 }, [x1], x2
1235 # CHECK: ld3r.1d { v1, v2, v3 }, [x1]
1236 # CHECK: ld3r.1d { v1, v2, v3 }, [x1], x2
1246 # CHECK: ld3r.8b { v1, v2, v3 }, [x1], #3
1247 # CHECK: ld3r.16b { v1, v2, v3 }, [x1], #3
1248 # CHECK: ld3r.4h { v1, v2, v3 }, [x1], #6
1249 # CHECK: ld3r.8h { v1, v2, v3 }, [x1], #6
1250 # CHECK: ld3r.2s { v1, v2, v3 }, [x1], #12
1251 # CHECK: ld3r.2d { v1, v2, v3 }, [x1], #24
1252 # CHECK: ld3r.1d { v1, v2, v3 }, [x1], #24
1258 # CHECK: ld4.8b { v1, v2, v3, v4 }, [x1]
1259 # CHECK: ld4.16b { v5, v6, v7, v8 }, [x2]
1260 # CHECK: ld4.2s { v10, v11, v12, v13 }, [x0]
1266 # CHECK: st4.8b { v1, v2, v3, v4 }, [x1]
1267 # CHECK: st4.16b { v5, v6, v7, v8 }, [x2]
1268 # CHECK: st4.2s { v10, v11, v12, v13 }, [x0]
1275 # CHECK: ld4.b { v1, v2, v3, v4 }[2], [x3], x4
1276 # CHECK: ld4.d { v2, v3, v4, v5 }[1], [x4], x5
1277 # CHECK: ld4.h { v3, v4, v5, v6 }[3], [x5], x6
1278 # CHECK: ld4.s { v4, v5, v6, v7 }[2], [x6], x7
1285 # CHECK: ld4.b { v1, v2, v3, v4 }[2], [x3], #4
1286 # CHECK: ld4.d { v2, v3, v4, v5 }[1], [x4], #32
1287 # CHECK: ld4.h { v3, v4, v5, v6 }[3], [x5], #8
1288 # CHECK: ld4.s { v4, v5, v6, v7 }[2], [x6], #16
1295 # CHECK: st4.b { v1, v2, v3, v4 }[2], [x3], x4
1296 # CHECK: st4.d { v2, v3, v4, v5 }[1], [x4], x5
1297 # CHECK: st4.h { v3, v4, v5, v6 }[3], [x5], x6
1298 # CHECK: st4.s { v4, v5, v6, v7 }[2], [x6], x7
1305 # CHECK: st4.b { v1, v2, v3, v4 }[2], [x3], #4
1306 # CHECK: st4.d { v2, v3, v4, v5 }[1], [x4], #32
1307 # CHECK: st4.h { v3, v4, v5, v6 }[3], [x5], #8
1308 # CHECK: st4.s { v4, v5, v6, v7 }[2], [x6], #16
1318 # CHECK: ld4.8b { v1, v2, v3, v4 }, [x2], x3
1319 # CHECK: ld4.16b { v2, v3, v4, v5 }, [x2], x4
1320 # CHECK: ld4.4h { v4, v5, v6, v7 }, [x3], x5
1321 # CHECK: ld4.8h { v7, v8, v9, v10 }, [x4], x6
1322 # CHECK: ld4.2s { v12, v13, v14, v15 }, [x0], x7
1323 # CHECK: ld4.4s { v10, v11, v12, v13 }, [x0], x8
1324 # CHECK: ld4.2d { v15, v16, v17, v18 }, [x2], x10
1334 # CHECK: ld4.8b { v0, v1, v2, v3 }, [x0], #32
1335 # CHECK: ld4.16b { v0, v1, v2, v3 }, [x0], #64
1336 # CHECK: ld4.4h { v0, v1, v2, v3 }, [x0], #32
1337 # CHECK: ld4.8h { v0, v1, v2, v3 }, [x0], #64
1338 # CHECK: ld4.2s { v0, v1, v2, v3 }, [x0], #32
1339 # CHECK: ld4.4s { v0, v1, v2, v3 }, [x0], #64
1340 # CHECK: ld4.2d { v0, v1, v2, v3 }, [x0], #64
1350 # CHECK: st4.8b { v0, v1, v2, v3 }, [x0], #32
1351 # CHECK: st4.16b { v0, v1, v2, v3 }, [x0], #64
1352 # CHECK: st4.4h { v0, v1, v2, v3 }, [x0], #32
1353 # CHECK: st4.8h { v0, v1, v2, v3 }, [x0], #64
1354 # CHECK: st4.2s { v0, v1, v2, v3 }, [x0], #32
1355 # CHECK: st4.4s { v0, v1, v2, v3 }, [x0], #64
1356 # CHECK: st4.2d { v0, v1, v2, v3 }, [x0], #64
1366 # CHECK: st4.8b { v1, v2, v3, v4 }, [x2], x3
1367 # CHECK: st4.16b { v2, v3, v4, v5 }, [x2], x4
1368 # CHECK: st4.4h { v4, v5, v6, v7 }, [x3], x5
1369 # CHECK: st4.8h { v7, v8, v9, v10 }, [x4], x6
1370 # CHECK: st4.2s { v12, v13, v14, v15 }, [x0], x7
1371 # CHECK: st4.4s { v10, v11, v12, v13 }, [x0], x8
1372 # CHECK: st4.2d { v15, v16, v17, v18 }, [x2], x10
1379 # CHECK: ld4.b { v1, v2, v3, v4 }[2], [x3]
1380 # CHECK: ld4.d { v2, v3, v4, v5 }[1], [x4]
1381 # CHECK: ld4.h { v3, v4, v5, v6 }[2], [x6]
1382 # CHECK: ld4.s { v4, v5, v6, v7 }[3], [x7]
1389 # CHECK: st4.b { v1, v2, v3, v4 }[2], [x3]
1390 # CHECK: st4.d { v2, v3, v4, v5 }[1], [x4]
1391 # CHECK: st4.h { v3, v4, v5, v6 }[2], [x6]
1392 # CHECK: st4.s { v4, v5, v6, v7 }[3], [x7]
1409 # CHECK: ld4r.8b { v1, v2, v3, v4 }, [x1]
1410 # CHECK: ld4r.8b { v1, v2, v3, v4 }, [x1], x2
1411 # CHECK: ld4r.16b { v1, v2, v3, v4 }, [x1]
1412 # CHECK: ld4r.16b { v1, v2, v3, v4 }, [x1], x2
1413 # CHECK: ld4r.4h { v1, v2, v3, v4 }, [x1]
1414 # CHECK: ld4r.4h { v1, v2, v3, v4 }, [x1], x2
1415 # CHECK: ld4r.8h { v1, v2, v3, v4 }, [x1]
1416 # CHECK: ld4r.8h { v1, v2, v3, v4 }, [x1], x2
1417 # CHECK: ld4r.2s { v1, v2, v3, v4 }, [x1]
1418 # CHECK: ld4r.2s { v1, v2, v3, v4 }, [x1], x2
1419 # CHECK: ld4r.2d { v1, v2, v3, v4 }, [x1]
1420 # CHECK: ld4r.2d { v1, v2, v3, v4 }, [x1], x2
1421 # CHECK: ld4r.1d { v1, v2, v3, v4 }, [x1]
1422 # CHECK: ld4r.1d { v1, v2, v3, v4 }, [x1], x2
1432 # CHECK: ld4r.8b { v1, v2, v3, v4 }, [x1], #4
1433 # CHECK: ld4r.16b { v1, v2, v3, v4 }, [x1], #4
1434 # CHECK: ld4r.4h { v1, v2, v3, v4 }, [x1], #8
1435 # CHECK: ld4r.8h { v1, v2, v3, v4 }, [x1], #8
1436 # CHECK: ld4r.2s { v1, v2, v3, v4 }, [x1], #16
1437 # CHECK: ld4r.2d { v1, v2, v3, v4 }, [x1], #32
1438 # CHECK: ld4r.1d { v1, v2, v3, v4 }, [x1], #32
1445 # CHECK: movi d0, #0x000000000000ff
1446 # CHECK: movi.2d v0, #0x000000000000ff
1447 # CHECK: movi.8b v0, #0x1
1448 # CHECK: movi.16b v0, #0x1
1455 # CHECK: movi.2s v0, #0x1
1456 # CHECK: movi.2s v0, #0x1, lsl #8
1457 # CHECK: movi.2s v0, #0x1, lsl #16
1458 # CHECK: movi.2s v0, #0x1, lsl #24
1465 # CHECK: movi.4s v0, #0x1
1466 # CHECK: movi.4s v0, #0x1, lsl #8
1467 # CHECK: movi.4s v0, #0x1, lsl #16
1468 # CHECK: movi.4s v0, #0x1, lsl #24
1473 # CHECK: movi.4h v0, #0x1
1474 # CHECK: movi.4h v0, #0x1, lsl #8
1479 # CHECK: movi.8h v0, #0x1
1480 # CHECK: movi.8h v0, #0x1, lsl #8
1487 # CHECK: mvni.2s v0, #0x1
1488 # CHECK: mvni.2s v0, #0x1, lsl #8
1489 # CHECK: mvni.2s v0, #0x1, lsl #16
1490 # CHECK: mvni.2s v0, #0x1, lsl #24
1497 # CHECK: mvni.4s v0, #0x1
1498 # CHECK: mvni.4s v0, #0x1, lsl #8
1499 # CHECK: mvni.4s v0, #0x1, lsl #16
1500 # CHECK: mvni.4s v0, #0x1, lsl #24
1505 # CHECK: mvni.4h v0, #0x1
1506 # CHECK: mvni.4h v0, #0x1, lsl #8
1511 # CHECK: mvni.8h v0, #0x1
1512 # CHECK: mvni.8h v0, #0x1, lsl #8
1519 # CHECK: mvni.2s v0, #0x1, msl #8
1520 # CHECK: mvni.2s v0, #0x1, msl #16
1521 # CHECK: mvni.4s v0, #0x1, msl #8
1522 # CHECK: mvni.4s v0, #0x1, msl #16
1532 # CHECK: frinta.2s v0, v0
1533 # CHECK: frintx.2s v0, v0
1534 # CHECK: frinti.2s v0, v0
1535 # CHECK: frintm.2s v0, v0
1536 # CHECK: frintn.2s v0, v0
1537 # CHECK: frintp.2s v0, v0
1538 # CHECK: frintz.2s v0, v0
1540 #===-------------------------------------------------------------------------===
1541 # AdvSIMD scalar x index instructions
1542 #===-------------------------------------------------------------------------===
1562 # CHECK: fmla.s s0, s0, v0[3]
1563 # CHECK: fmla.d d0, d0, v0[1]
1564 # CHECK: fmls.s s0, s0, v0[3]
1565 # CHECK: fmls.d d0, d0, v0[1]
1566 # CHECK: fmulx.s s0, s0, v0[3]
1567 # CHECK: fmulx.d d0, d0, v0[1]
1568 # CHECK: fmul.s s0, s0, v0[3]
1569 # CHECK: fmul.d d0, d0, v0[1]
1570 # CHECK: sqdmlal.h s0, h0, v0[7]
1571 # CHECK: sqdmlal.s d0, s0, v0[3]
1572 # CHECK: sqdmlsl.h s0, h0, v0[7]
1573 # CHECK: sqdmulh.h h0, h0, v0[7]
1574 # CHECK: sqdmulh.s s0, s0, v0[3]
1575 # CHECK: sqdmull.h s0, h0, v0[7]
1576 # CHECK: sqdmull.s d0, s0, v0[3]
1577 # CHECK: sqrdmulh.h h0, h0, v0[7]
1578 # CHECK: sqrdmulh.s s0, s0, v0[3]
1580 #===-------------------------------------------------------------------------===
1581 # AdvSIMD vector x index instructions
1582 #===-------------------------------------------------------------------------===
1653 # CHECK: fmla.2s v0, v0, v0[0]
1654 # CHECK: fmla.4s v0, v0, v0[1]
1655 # CHECK: fmla.2d v0, v0, v0[1]
1656 # CHECK: fmls.2s v0, v0, v0[0]
1657 # CHECK: fmls.4s v0, v0, v0[1]
1658 # CHECK: fmls.2d v0, v0, v0[1]
1659 # CHECK: fmulx.2s v0, v0, v0[0]
1660 # CHECK: fmulx.4s v0, v0, v0[1]
1661 # CHECK: fmulx.2d v0, v0, v0[1]
1662 # CHECK: fmul.2s v0, v0, v0[0]
1663 # CHECK: fmul.4s v0, v0, v0[1]
1664 # CHECK: fmul.2d v0, v0, v0[1]
1665 # CHECK: mla.4h v0, v0, v0[0]
1666 # CHECK: mla.8h v0, v0, v0[1]
1667 # CHECK: mla.2s v0, v0, v0[2]
1668 # CHECK: mla.4s v0, v0, v0[3]
1669 # CHECK: mls.4h v0, v0, v0[0]
1670 # CHECK: mls.8h v0, v0, v0[1]
1671 # CHECK: mls.2s v0, v0, v0[2]
1672 # CHECK: mls.4s v0, v0, v0[3]
1673 # CHECK: mul.4h v0, v0, v0[0]
1674 # CHECK: mul.8h v0, v0, v0[1]
1675 # CHECK: mul.2s v0, v0, v0[2]
1676 # CHECK: mul.4s v0, v0, v0[3]
1677 # CHECK: smlal.4s v0, v0, v0[0]
1678 # CHECK: smlal2.4s v0, v0, v0[1]
1679 # CHECK: smlal.2d v0, v0, v0[2]
1680 # CHECK: smlal2.2d v0, v0, v0[3]
1681 # CHECK: smlsl.4s v0, v0, v0[0]
1682 # CHECK: smlsl2.4s v0, v0, v0[1]
1683 # CHECK: smlsl.2d v0, v0, v0[2]
1684 # CHECK: smlsl2.2d v0, v0, v0[3]
1685 # CHECK: smull.4s v0, v0, v0[0]
1686 # CHECK: smull2.4s v0, v0, v0[1]
1687 # CHECK: smull.2d v0, v0, v0[2]
1688 # CHECK: smull2.2d v0, v0, v0[3]
1689 # CHECK: sqdmlal.4s v0, v0, v0[0]
1690 # CHECK: sqdmlal2.4s v0, v0, v0[1]
1691 # CHECK: sqdmlal.2d v0, v0, v0[2]
1692 # CHECK: sqdmlal2.2d v0, v0, v0[3]
1693 # CHECK: sqdmlsl.4s v0, v0, v0[0]
1694 # CHECK: sqdmlsl2.4s v0, v0, v0[1]
1695 # CHECK: sqdmlsl.2d v0, v0, v0[2]
1696 # CHECK: sqdmlsl2.2d v0, v0, v0[3]
1697 # CHECK: sqdmulh.4h v0, v0, v0[0]
1698 # CHECK: sqdmulh.8h v0, v0, v0[1]
1699 # CHECK: sqdmulh.2s v0, v0, v0[2]
1700 # CHECK: sqdmulh.4s v0, v0, v0[3]
1701 # CHECK: sqdmull.4s v0, v0, v0[0]
1702 # CHECK: sqdmull2.4s v0, v0, v0[1]
1703 # CHECK: sqdmull.2d v0, v0, v0[2]
1704 # CHECK: sqdmull2.2d v0, v0, v0[3]
1705 # CHECK: sqrdmulh.4h v0, v0, v0[0]
1706 # CHECK: sqrdmulh.8h v0, v0, v0[1]
1707 # CHECK: sqrdmulh.2s v0, v0, v0[2]
1708 # CHECK: sqrdmulh.4s v0, v0, v0[3]
1709 # CHECK: umlal.4s v0, v0, v0[0]
1710 # CHECK: umlal2.4s v0, v0, v0[1]
1711 # CHECK: umlal.2d v0, v0, v0[2]
1712 # CHECK: umlal2.2d v0, v0, v0[3]
1713 # CHECK: umlsl.4s v0, v0, v0[0]
1714 # CHECK: umlsl2.4s v0, v0, v0[1]
1715 # CHECK: umlsl.2d v0, v0, v0[2]
1716 # CHECK: umlsl2.2d v0, v0, v0[3]
1717 # CHECK: umull.4s v0, v0, v0[0]
1718 # CHECK: umull2.4s v0, v0, v0[1]
1719 # CHECK: umull.2d v0, v0, v0[2]
1720 # CHECK: umull2.2d v0, v0, v0[3]
1723 #===-------------------------------------------------------------------------===
1724 # AdvSIMD scalar + shift instructions
1725 #===-------------------------------------------------------------------------===
1770 # CHECK: shl d0, d0, #1
1771 # CHECK: sli d0, d0, #1
1772 # CHECK: sqrshrn b0, h0, #7
1773 # CHECK: sqrshrn h0, s0, #14
1774 # CHECK: sqrshrn s0, d0, #29
1775 # CHECK: sqrshrun b0, h0, #7
1776 # CHECK: sqrshrun h0, s0, #14
1777 # CHECK: sqrshrun s0, d0, #29
1778 # CHECK: sqshlu b0, b0, #1
1779 # CHECK: sqshlu h0, h0, #2
1780 # CHECK: sqshlu s0, s0, #3
1781 # CHECK: sqshlu d0, d0, #4
1782 # CHECK: sqshl b0, b0, #1
1783 # CHECK: sqshl h0, h0, #2
1784 # CHECK: sqshl s0, s0, #3
1785 # CHECK: sqshl d0, d0, #4
1786 # CHECK: sqshrn b0, h0, #7
1787 # CHECK: sqshrn h0, s0, #14
1788 # CHECK: sqshrn s0, d0, #29
1789 # CHECK: sqshrun b0, h0, #7
1790 # CHECK: sqshrun h0, s0, #14
1791 # CHECK: sqshrun s0, d0, #29
1792 # CHECK: sri d0, d0, #63
1793 # CHECK: srshr d0, d0, #63
1794 # CHECK: srsra d0, d0, #63
1795 # CHECK: sshr d0, d0, #63
1796 # CHECK: ucvtf s0, s0, #31
1797 # CHECK: ucvtf d0, d0, #62
1798 # CHECK: uqrshrn b0, h0, #7
1799 # CHECK: uqrshrn h0, s0, #14
1800 # CHECK: uqrshrn s0, d0, #29
1801 # CHECK: uqshl b0, b0, #1
1802 # CHECK: uqshl h0, h0, #2
1803 # CHECK: uqshl s0, s0, #3
1804 # CHECK: uqshl d0, d0, #4
1805 # CHECK: uqshrn b0, h0, #7
1806 # CHECK: uqshrn h0, s0, #14
1807 # CHECK: uqshrn s0, d0, #29
1808 # CHECK: urshr d0, d0, #63
1809 # CHECK: ursra d0, d0, #63
1810 # CHECK: ushr d0, d0, #63
1811 # CHECK: usra d0, d0, #63
1813 #===-------------------------------------------------------------------------===
1814 # AdvSIMD vector + shift instructions
1815 #===-------------------------------------------------------------------------===
1989 # CHECK: fcvtzs.2s v0, v0, #31
1990 # CHECK: fcvtzs.4s v0, v0, #30
1991 # CHECK: fcvtzs.2d v0, v0, #61
1992 # CHECK: fcvtzu.2s v0, v0, #31
1993 # CHECK: fcvtzu.4s v0, v0, #30
1994 # CHECK: fcvtzu.2d v0, v0, #61
1995 # CHECK: rshrn.8b v0, v0, #7
1996 # CHECK: rshrn2.16b v0, v0, #6
1997 # CHECK: rshrn.4h v0, v0, #13
1998 # CHECK: rshrn2.8h v0, v0, #12
1999 # CHECK: rshrn.2s v0, v0, #27
2000 # CHECK: rshrn2.4s v0, v0, #26
2001 # CHECK: scvtf.2s v0, v0, #31
2002 # CHECK: scvtf.4s v0, v0, #30
2003 # CHECK: scvtf.2d v0, v0, #61
2004 # CHECK: shl.8b v0, v0, #1
2005 # CHECK: shl.16b v0, v0, #2
2006 # CHECK: shl.4h v0, v0, #3
2007 # CHECK: shl.8h v0, v0, #4
2008 # CHECK: shl.2s v0, v0, #5
2009 # CHECK: shl.4s v0, v0, #6
2010 # CHECK: shl.2d v0, v0, #7
2011 # CHECK: shrn.8b v0, v0, #7
2012 # CHECK: shrn2.16b v0, v0, #6
2013 # CHECK: shrn.4h v0, v0, #13
2014 # CHECK: shrn2.8h v0, v0, #12
2015 # CHECK: shrn.2s v0, v0, #27
2016 # CHECK: shrn2.4s v0, v0, #26
2017 # CHECK: sli.8b v0, v0, #1
2018 # CHECK: sli.16b v0, v0, #2
2019 # CHECK: sli.4h v0, v0, #3
2020 # CHECK: sli.8h v0, v0, #4
2021 # CHECK: sli.2s v0, v0, #5
2022 # CHECK: sli.4s v0, v0, #6
2023 # CHECK: sli.2d v0, v0, #7
2024 # CHECK: sqrshrn.8b v0, v0, #7
2025 # CHECK: sqrshrn2.16b v0, v0, #6
2026 # CHECK: sqrshrn.4h v0, v0, #13
2027 # CHECK: sqrshrn2.8h v0, v0, #12
2028 # CHECK: sqrshrn.2s v0, v0, #27
2029 # CHECK: sqrshrn2.4s v0, v0, #26
2030 # CHECK: sqrshrun.8b v0, v0, #7
2031 # CHECK: sqrshrun2.16b v0, v0, #6
2032 # CHECK: sqrshrun.4h v0, v0, #13
2033 # CHECK: sqrshrun2.8h v0, v0, #12
2034 # CHECK: sqrshrun.2s v0, v0, #27
2035 # CHECK: sqrshrun2.4s v0, v0, #26
2036 # CHECK: sqshlu.8b v0, v0, #1
2037 # CHECK: sqshlu.16b v0, v0, #2
2038 # CHECK: sqshlu.4h v0, v0, #3
2039 # CHECK: sqshlu.8h v0, v0, #4
2040 # CHECK: sqshlu.2s v0, v0, #5
2041 # CHECK: sqshlu.4s v0, v0, #6
2042 # CHECK: sqshlu.2d v0, v0, #7
2043 # CHECK: sqshl.8b v0, v0, #1
2044 # CHECK: sqshl.16b v0, v0, #2
2045 # CHECK: sqshl.4h v0, v0, #3
2046 # CHECK: sqshl.8h v0, v0, #4
2047 # CHECK: sqshl.2s v0, v0, #5
2048 # CHECK: sqshl.4s v0, v0, #6
2049 # CHECK: sqshl.2d v0, v0, #7
2050 # CHECK: sqshrn.8b v0, v0, #7
2051 # CHECK: sqshrn2.16b v0, v0, #6
2052 # CHECK: sqshrn.4h v0, v0, #13
2053 # CHECK: sqshrn2.8h v0, v0, #12
2054 # CHECK: sqshrn.2s v0, v0, #27
2055 # CHECK: sqshrn2.4s v0, v0, #26
2056 # CHECK: sqshrun.8b v0, v0, #7
2057 # CHECK: sqshrun2.16b v0, v0, #6
2058 # CHECK: sqshrun.4h v0, v0, #13
2059 # CHECK: sqshrun2.8h v0, v0, #12
2060 # CHECK: sqshrun.2s v0, v0, #27
2061 # CHECK: sqshrun2.4s v0, v0, #26
2062 # CHECK: sri.8b v0, v0, #7
2063 # CHECK: sri.16b v0, v0, #6
2064 # CHECK: sri.4h v0, v0, #13
2065 # CHECK: sri.8h v0, v0, #12
2066 # CHECK: sri.2s v0, v0, #27
2067 # CHECK: sri.4s v0, v0, #26
2068 # CHECK: sri.2d v0, v0, #57
2069 # CHECK: srshr.8b v0, v0, #7
2070 # CHECK: srshr.16b v0, v0, #6
2071 # CHECK: srshr.4h v0, v0, #13
2072 # CHECK: srshr.8h v0, v0, #12
2073 # CHECK: srshr.2s v0, v0, #27
2074 # CHECK: srshr.4s v0, v0, #26
2075 # CHECK: srshr.2d v0, v0, #57
2076 # CHECK: srsra.8b v0, v0, #7
2077 # CHECK: srsra.16b v0, v0, #6
2078 # CHECK: srsra.4h v0, v0, #13
2079 # CHECK: srsra.8h v0, v0, #12
2080 # CHECK: srsra.2s v0, v0, #27
2081 # CHECK: srsra.4s v0, v0, #26
2082 # CHECK: srsra.2d v0, v0, #57
2083 # CHECK: sshll.8h v0, v0, #1
2084 # CHECK: sshll2.8h v0, v0, #2
2085 # CHECK: sshll.4s v0, v0, #3
2086 # CHECK: sshll2.4s v0, v0, #4
2087 # CHECK: sshll.2d v0, v0, #5
2088 # CHECK: sshll2.2d v0, v0, #6
2089 # CHECK: sshr.8b v0, v0, #7
2090 # CHECK: sshr.16b v0, v0, #6
2091 # CHECK: sshr.4h v0, v0, #13
2092 # CHECK: sshr.8h v0, v0, #12
2093 # CHECK: sshr.2s v0, v0, #27
2094 # CHECK: sshr.4s v0, v0, #26
2095 # CHECK: sshr.2d v0, v0, #57
2096 # CHECK: sshr.8b v0, v0, #7
2097 # CHECK: ssra.16b v0, v0, #6
2098 # CHECK: ssra.4h v0, v0, #13
2099 # CHECK: ssra.8h v0, v0, #12
2100 # CHECK: ssra.2s v0, v0, #27
2101 # CHECK: ssra.4s v0, v0, #26
2102 # CHECK: ssra.2d v0, v0, #57
2103 # CHECK: ssra d0, d0, #64
2104 # CHECK: ucvtf.2s v0, v0, #31
2105 # CHECK: ucvtf.4s v0, v0, #30
2106 # CHECK: ucvtf.2d v0, v0, #61
2107 # CHECK: uqrshrn.8b v0, v0, #7
2108 # CHECK: uqrshrn2.16b v0, v0, #6
2109 # CHECK: uqrshrn.4h v0, v0, #13
2110 # CHECK: uqrshrn2.8h v0, v0, #12
2111 # CHECK: uqrshrn.2s v0, v0, #27
2112 # CHECK: uqrshrn2.4s v0, v0, #26
2113 # CHECK: uqshl.8b v0, v0, #1
2114 # CHECK: uqshl.16b v0, v0, #2
2115 # CHECK: uqshl.4h v0, v0, #3
2116 # CHECK: uqshl.8h v0, v0, #4
2117 # CHECK: uqshl.2s v0, v0, #5
2118 # CHECK: uqshl.4s v0, v0, #6
2119 # CHECK: uqshl.2d v0, v0, #7
2120 # CHECK: uqshrn.8b v0, v0, #7
2121 # CHECK: uqshrn2.16b v0, v0, #6
2122 # CHECK: uqshrn.4h v0, v0, #13
2123 # CHECK: uqshrn2.8h v0, v0, #12
2124 # CHECK: uqshrn.2s v0, v0, #27
2125 # CHECK: uqshrn2.4s v0, v0, #26
2126 # CHECK: urshr.8b v0, v0, #7
2127 # CHECK: urshr.16b v0, v0, #6
2128 # CHECK: urshr.4h v0, v0, #13
2129 # CHECK: urshr.8h v0, v0, #12
2130 # CHECK: urshr.2s v0, v0, #27
2131 # CHECK: urshr.4s v0, v0, #26
2132 # CHECK: urshr.2d v0, v0, #57
2133 # CHECK: ursra.8b v0, v0, #7
2134 # CHECK: ursra.16b v0, v0, #6
2135 # CHECK: ursra.4h v0, v0, #13
2136 # CHECK: ursra.8h v0, v0, #12
2137 # CHECK: ursra.2s v0, v0, #27
2138 # CHECK: ursra.4s v0, v0, #26
2139 # CHECK: ursra.2d v0, v0, #57
2140 # CHECK: ushll.8h v0, v0, #1
2141 # CHECK: ushll2.8h v0, v0, #2
2142 # CHECK: ushll.4s v0, v0, #3
2143 # CHECK: ushll2.4s v0, v0, #4
2144 # CHECK: ushll.2d v0, v0, #5
2145 # CHECK: ushll2.2d v0, v0, #6
2146 # CHECK: ushr.8b v0, v0, #7
2147 # CHECK: ushr.16b v0, v0, #6
2148 # CHECK: ushr.4h v0, v0, #13
2149 # CHECK: ushr.8h v0, v0, #12
2150 # CHECK: ushr.2s v0, v0, #27
2151 # CHECK: ushr.4s v0, v0, #26
2152 # CHECK: ushr.2d v0, v0, #57
2153 # CHECK: usra.8b v0, v0, #7
2154 # CHECK: usra.16b v0, v0, #6
2155 # CHECK: usra.4h v0, v0, #13
2156 # CHECK: usra.8h v0, v0, #12
2157 # CHECK: usra.2s v0, v0, #27
2158 # CHECK: usra.4s v0, v0, #26
2159 # CHECK: usra.2d v0, v0, #57
2167 # CHECK: pmull.8h v0, v0, v0
2168 # CHECK: pmull2.8h v0, v0, v0
2169 # CHECK: pmull.1q v0, v0, v0
2170 # CHECK: pmull2.1q v0, v0, v0
2174 # CHECK: faddp.2d d1, v2
2175 # CHECK: faddp.2s s3, v4
2186 # CHECK: tbl.16b v2, { v4, v5, v6, v7 }, v1
2187 # CHECK: tbl.8b v0, { v4, v5, v6, v7 }, v1
2188 # CHECK: tbl.16b v2, { v5 }, v1
2189 # CHECK: tbl.8b v0, { v5 }, v1
2190 # CHECK: tbl.16b v2, { v5, v6, v7 }, v1
2191 # CHECK: tbl.8b v0, { v5, v6, v7 }, v1
2192 # CHECK: tbl.16b v2, { v6, v7 }, v1
2193 # CHECK: tbl.8b v0, { v6, v7 }, v1
2204 # CHECK: tbx.16b v2, { v4, v5, v6, v7 }, v1
2205 # CHECK: tbx.8b v0, { v4, v5, v6, v7 }, v1
2206 # CHECK: tbx.16b v2, { v5 }, v1
2207 # CHECK: tbx.8b v0, { v5 }, v1
2208 # CHECK: tbx.16b v2, { v5, v6, v7 }, v1
2209 # CHECK: tbx.8b v0, { v5, v6, v7 }, v1
2210 # CHECK: tbx.16b v2, { v6, v7 }, v1
2211 # CHECK: tbx.8b v0, { v6, v7 }, v1
2219 # CHECK: smlal.8h v0, v0, v0
2220 # CHECK: smlal2.8h v0, v0, v0
2221 # CHECK: smlal.2d v0, v0, v0
2222 # CHECK: smlal2.2d v0, v0, v0
2229 # CHECK: umlal.8h v0, v0, v0
2230 # CHECK: umlal2.8h v0, v0, v0
2231 # CHECK: umlal.2d v0, v0, v0
2232 # CHECK: umlal2.2d v0, v0, v0
2239 # CHECK: sqdmlal s0, h0, h0
2240 # CHECK: sqdmlal d0, s0, s0
2241 # CHECK: sqdmlsl s0, h0, h0
2242 # CHECK: sqdmlsl d0, s0, s0
2248 # CHECK: ld1r.8h { v10 }, [x13], x7
2249 # CHECK: ld1r.4s { v10 }, [x13], x7
2250 # CHECK: ld1r.16b { v10 }, [x13], x7
2254 # CHECK: sqdmull s0, h0, h0
2255 # CHECK: sqdmull d0, s0, s0
2260 # CHECK: frsqrte s0, s0
2261 # CHECK: frsqrte d0, d0
2267 # CHECK: ld1r.2d { v10 }, [x14], x7
2268 # CHECK: ld2r.4s { v10, v11 }, [x15], x7
2269 # CHECK: ld3r.4s { v10, v11, v12 }, [x15], x7
2270 # CHECK: ld4r.4s { v10, v11, v12, v13 }, [x15], x7
2272 #===-------------------------------------------------------------------------===
2273 # AdvSIMD scalar three same
2274 #===-------------------------------------------------------------------------===
2276 # CHECK: fmulx s2, s3, s1
2278 # CHECK: fmulx d2, d3, d1
2283 # CHECK: ld1.4s { v8, v9, v10 }, [sp], #48