Lines Matching full:be
3 …one-eabi -mattr=+mve,+fullfp16 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK-BE
12 ; CHECK-BE-LABEL: masked_v4i32_align4_zero:
13 ; CHECK-BE: @ %bb.0: @ %entry
14 ; CHECK-BE-NEXT: vrev64.32 q1, q0
15 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
16 ; CHECK-BE-NEXT: vldrwt.u32 q1, [r0]
17 ; CHECK-BE-NEXT: vrev64.32 q0, q1
18 ; CHECK-BE-NEXT: bx lr
32 ; CHECK-BE-LABEL: masked_v4i32_align4_undef:
33 ; CHECK-BE: @ %bb.0: @ %entry
34 ; CHECK-BE-NEXT: vrev64.32 q1, q0
35 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
36 ; CHECK-BE-NEXT: vldrwt.u32 q1, [r0]
37 ; CHECK-BE-NEXT: vrev64.32 q0, q1
38 ; CHECK-BE-NEXT: bx lr
85 ; CHECK-BE-LABEL: masked_v4i32_align1_undef:
86 ; CHECK-BE: @ %bb.0: @ %entry
87 ; CHECK-BE-NEXT: .pad #4
88 ; CHECK-BE-NEXT: sub sp, #4
89 ; CHECK-BE-NEXT: vrev64.32 q1, q0
90 ; CHECK-BE-NEXT: vcmp.s32 gt, q1, zr
91 ; CHECK-BE-NEXT: @ implicit-def: $q1
92 ; CHECK-BE-NEXT: vmrs r2, p0
93 ; CHECK-BE-NEXT: and r1, r2, #1
94 ; CHECK-BE-NEXT: rsbs r3, r1, #0
95 ; CHECK-BE-NEXT: movs r1, #0
96 ; CHECK-BE-NEXT: bfi r1, r3, #0, #1
97 ; CHECK-BE-NEXT: ubfx r3, r2, #4, #1
98 ; CHECK-BE-NEXT: rsbs r3, r3, #0
99 ; CHECK-BE-NEXT: bfi r1, r3, #1, #1
100 ; CHECK-BE-NEXT: ubfx r3, r2, #8, #1
101 ; CHECK-BE-NEXT: ubfx r2, r2, #12, #1
102 ; CHECK-BE-NEXT: rsbs r3, r3, #0
103 ; CHECK-BE-NEXT: bfi r1, r3, #2, #1
104 ; CHECK-BE-NEXT: rsbs r2, r2, #0
105 ; CHECK-BE-NEXT: bfi r1, r2, #3, #1
106 ; CHECK-BE-NEXT: lsls r2, r1, #31
107 ; CHECK-BE-NEXT: itt ne
108 ; CHECK-BE-NEXT: ldrne r2, [r0]
109 ; CHECK-BE-NEXT: vmovne.32 q1[0], r2
110 ; CHECK-BE-NEXT: lsls r2, r1, #30
111 ; CHECK-BE-NEXT: itt mi
112 ; CHECK-BE-NEXT: ldrmi r2, [r0, #4]
113 ; CHECK-BE-NEXT: vmovmi.32 q1[1], r2
114 ; CHECK-BE-NEXT: lsls r2, r1, #29
115 ; CHECK-BE-NEXT: itt mi
116 ; CHECK-BE-NEXT: ldrmi r2, [r0, #8]
117 ; CHECK-BE-NEXT: vmovmi.32 q1[2], r2
118 ; CHECK-BE-NEXT: lsls r1, r1, #28
119 ; CHECK-BE-NEXT: itt mi
120 ; CHECK-BE-NEXT: ldrmi r0, [r0, #12]
121 ; CHECK-BE-NEXT: vmovmi.32 q1[3], r0
122 ; CHECK-BE-NEXT: vrev64.32 q0, q1
123 ; CHECK-BE-NEXT: add sp, #4
124 ; CHECK-BE-NEXT: bx lr
139 ; CHECK-BE-LABEL: masked_v4i32_align4_other:
140 ; CHECK-BE: @ %bb.0: @ %entry
141 ; CHECK-BE-NEXT: vrev64.32 q1, q0
142 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
143 ; CHECK-BE-NEXT: vldrwt.u32 q0, [r0]
144 ; CHECK-BE-NEXT: vpsel q1, q0, q1
145 ; CHECK-BE-NEXT: vrev64.32 q0, q1
146 ; CHECK-BE-NEXT: bx lr
160 ; CHECK-BE-LABEL: zext16_masked_v4i32_align2_zero:
161 ; CHECK-BE: @ %bb.0: @ %entry
162 ; CHECK-BE-NEXT: vrev64.32 q1, q0
163 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
164 ; CHECK-BE-NEXT: vldrht.u32 q1, [r0]
165 ; CHECK-BE-NEXT: vrev64.32 q0, q1
166 ; CHECK-BE-NEXT: bx lr
181 ; CHECK-BE-LABEL: zext16_masked_v4i32_align2_undef:
182 ; CHECK-BE: @ %bb.0: @ %entry
183 ; CHECK-BE-NEXT: vrev64.32 q1, q0
184 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
185 ; CHECK-BE-NEXT: vldrht.u32 q1, [r0]
186 ; CHECK-BE-NEXT: vrev64.32 q0, q1
187 ; CHECK-BE-NEXT: bx lr
236 ; CHECK-BE-LABEL: zext16_masked_v4i32_align1_undef:
237 ; CHECK-BE: @ %bb.0: @ %entry
238 ; CHECK-BE-NEXT: .pad #4
239 ; CHECK-BE-NEXT: sub sp, #4
240 ; CHECK-BE-NEXT: vrev64.32 q1, q0
241 ; CHECK-BE-NEXT: @ implicit-def: $q0
242 ; CHECK-BE-NEXT: vcmp.s32 gt, q1, zr
243 ; CHECK-BE-NEXT: vmrs r2, p0
244 ; CHECK-BE-NEXT: and r1, r2, #1
245 ; CHECK-BE-NEXT: rsbs r3, r1, #0
246 ; CHECK-BE-NEXT: movs r1, #0
247 ; CHECK-BE-NEXT: bfi r1, r3, #0, #1
248 ; CHECK-BE-NEXT: ubfx r3, r2, #4, #1
249 ; CHECK-BE-NEXT: rsbs r3, r3, #0
250 ; CHECK-BE-NEXT: bfi r1, r3, #1, #1
251 ; CHECK-BE-NEXT: ubfx r3, r2, #8, #1
252 ; CHECK-BE-NEXT: ubfx r2, r2, #12, #1
253 ; CHECK-BE-NEXT: rsbs r3, r3, #0
254 ; CHECK-BE-NEXT: bfi r1, r3, #2, #1
255 ; CHECK-BE-NEXT: rsbs r2, r2, #0
256 ; CHECK-BE-NEXT: bfi r1, r2, #3, #1
257 ; CHECK-BE-NEXT: lsls r2, r1, #31
258 ; CHECK-BE-NEXT: itt ne
259 ; CHECK-BE-NEXT: ldrhne r2, [r0]
260 ; CHECK-BE-NEXT: vmovne.32 q0[0], r2
261 ; CHECK-BE-NEXT: lsls r2, r1, #30
262 ; CHECK-BE-NEXT: itt mi
263 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #2]
264 ; CHECK-BE-NEXT: vmovmi.32 q0[1], r2
265 ; CHECK-BE-NEXT: lsls r2, r1, #29
266 ; CHECK-BE-NEXT: itt mi
267 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #4]
268 ; CHECK-BE-NEXT: vmovmi.32 q0[2], r2
269 ; CHECK-BE-NEXT: lsls r1, r1, #28
270 ; CHECK-BE-NEXT: itt mi
271 ; CHECK-BE-NEXT: ldrhmi r0, [r0, #6]
272 ; CHECK-BE-NEXT: vmovmi.32 q0[3], r0
273 ; CHECK-BE-NEXT: vmovlb.s16 q1, q0
274 ; CHECK-BE-NEXT: vrev64.32 q0, q1
275 ; CHECK-BE-NEXT: add sp, #4
276 ; CHECK-BE-NEXT: bx lr
294 ; CHECK-BE-LABEL: zext16_masked_v4i32_align2_other:
295 ; CHECK-BE: @ %bb.0: @ %entry
296 ; CHECK-BE-NEXT: vrev64.32 q1, q0
297 ; CHECK-BE-NEXT: vmovlb.u16 q0, q1
298 ; CHECK-BE-NEXT: vmovlb.s16 q1, q1
299 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
300 ; CHECK-BE-NEXT: vldrht.u32 q1, [r0]
301 ; CHECK-BE-NEXT: vpsel q1, q1, q0
302 ; CHECK-BE-NEXT: vrev64.32 q0, q1
303 ; CHECK-BE-NEXT: bx lr
318 ; CHECK-BE-LABEL: sext16_masked_v4i32_align2_zero:
319 ; CHECK-BE: @ %bb.0: @ %entry
320 ; CHECK-BE-NEXT: vrev64.32 q1, q0
321 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
322 ; CHECK-BE-NEXT: vldrht.s32 q1, [r0]
323 ; CHECK-BE-NEXT: vrev64.32 q0, q1
324 ; CHECK-BE-NEXT: bx lr
339 ; CHECK-BE-LABEL: sext16_masked_v4i32_align2_undef:
340 ; CHECK-BE: @ %bb.0: @ %entry
341 ; CHECK-BE-NEXT: vrev64.32 q1, q0
342 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
343 ; CHECK-BE-NEXT: vldrht.s32 q1, [r0]
344 ; CHECK-BE-NEXT: vrev64.32 q0, q1
345 ; CHECK-BE-NEXT: bx lr
394 ; CHECK-BE-LABEL: sext16_masked_v4i32_align1_undef:
395 ; CHECK-BE: @ %bb.0: @ %entry
396 ; CHECK-BE-NEXT: .pad #4
397 ; CHECK-BE-NEXT: sub sp, #4
398 ; CHECK-BE-NEXT: vrev64.32 q1, q0
399 ; CHECK-BE-NEXT: @ implicit-def: $q0
400 ; CHECK-BE-NEXT: vcmp.s32 gt, q1, zr
401 ; CHECK-BE-NEXT: vmrs r2, p0
402 ; CHECK-BE-NEXT: and r1, r2, #1
403 ; CHECK-BE-NEXT: rsbs r3, r1, #0
404 ; CHECK-BE-NEXT: movs r1, #0
405 ; CHECK-BE-NEXT: bfi r1, r3, #0, #1
406 ; CHECK-BE-NEXT: ubfx r3, r2, #4, #1
407 ; CHECK-BE-NEXT: rsbs r3, r3, #0
408 ; CHECK-BE-NEXT: bfi r1, r3, #1, #1
409 ; CHECK-BE-NEXT: ubfx r3, r2, #8, #1
410 ; CHECK-BE-NEXT: ubfx r2, r2, #12, #1
411 ; CHECK-BE-NEXT: rsbs r3, r3, #0
412 ; CHECK-BE-NEXT: bfi r1, r3, #2, #1
413 ; CHECK-BE-NEXT: rsbs r2, r2, #0
414 ; CHECK-BE-NEXT: bfi r1, r2, #3, #1
415 ; CHECK-BE-NEXT: lsls r2, r1, #31
416 ; CHECK-BE-NEXT: itt ne
417 ; CHECK-BE-NEXT: ldrhne r2, [r0]
418 ; CHECK-BE-NEXT: vmovne.32 q0[0], r2
419 ; CHECK-BE-NEXT: lsls r2, r1, #30
420 ; CHECK-BE-NEXT: itt mi
421 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #2]
422 ; CHECK-BE-NEXT: vmovmi.32 q0[1], r2
423 ; CHECK-BE-NEXT: lsls r2, r1, #29
424 ; CHECK-BE-NEXT: itt mi
425 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #4]
426 ; CHECK-BE-NEXT: vmovmi.32 q0[2], r2
427 ; CHECK-BE-NEXT: lsls r1, r1, #28
428 ; CHECK-BE-NEXT: itt mi
429 ; CHECK-BE-NEXT: ldrhmi r0, [r0, #6]
430 ; CHECK-BE-NEXT: vmovmi.32 q0[3], r0
431 ; CHECK-BE-NEXT: vmovlb.s16 q1, q0
432 ; CHECK-BE-NEXT: vrev64.32 q0, q1
433 ; CHECK-BE-NEXT: add sp, #4
434 ; CHECK-BE-NEXT: bx lr
451 ; CHECK-BE-LABEL: sext16_masked_v4i32_align2_other:
452 ; CHECK-BE: @ %bb.0: @ %entry
453 ; CHECK-BE-NEXT: vrev64.32 q1, q0
454 ; CHECK-BE-NEXT: vmovlb.s16 q0, q1
455 ; CHECK-BE-NEXT: vpt.s32 gt, q0, zr
456 ; CHECK-BE-NEXT: vldrht.s32 q1, [r0]
457 ; CHECK-BE-NEXT: vpsel q1, q1, q0
458 ; CHECK-BE-NEXT: vrev64.32 q0, q1
459 ; CHECK-BE-NEXT: bx lr
475 ; CHECK-BE-LABEL: masked_v4i32_preinc:
476 ; CHECK-BE: @ %bb.0: @ %entry
477 ; CHECK-BE-NEXT: vrev64.32 q1, q0
478 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
479 ; CHECK-BE-NEXT: vldrwt.u32 q0, [r0, #4]!
480 ; CHECK-BE-NEXT: vstrw.32 q0, [r1]
481 ; CHECK-BE-NEXT: bx lr
500 ; CHECK-BE-LABEL: masked_v4i32_postinc:
501 ; CHECK-BE: @ %bb.0: @ %entry
502 ; CHECK-BE-NEXT: vrev64.32 q1, q0
503 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
504 ; CHECK-BE-NEXT: vldrwt.u32 q0, [r0], #4
505 ; CHECK-BE-NEXT: vstrw.32 q0, [r1]
506 ; CHECK-BE-NEXT: bx lr
524 ; CHECK-BE-LABEL: masked_v8i16_align4_zero:
525 ; CHECK-BE: @ %bb.0: @ %entry
526 ; CHECK-BE-NEXT: vrev64.16 q1, q0
527 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
528 ; CHECK-BE-NEXT: vldrht.u16 q1, [r0]
529 ; CHECK-BE-NEXT: vrev64.16 q0, q1
530 ; CHECK-BE-NEXT: bx lr
544 ; CHECK-BE-LABEL: masked_v8i16_align2_undef:
545 ; CHECK-BE: @ %bb.0: @ %entry
546 ; CHECK-BE-NEXT: vrev64.16 q1, q0
547 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
548 ; CHECK-BE-NEXT: vldrht.u16 q1, [r0]
549 ; CHECK-BE-NEXT: vrev64.16 q0, q1
550 ; CHECK-BE-NEXT: bx lr
626 ; CHECK-BE-LABEL: masked_v8i16_align1_undef:
627 ; CHECK-BE: @ %bb.0: @ %entry
628 ; CHECK-BE-NEXT: .pad #8
629 ; CHECK-BE-NEXT: sub sp, #8
630 ; CHECK-BE-NEXT: vrev64.16 q1, q0
631 ; CHECK-BE-NEXT: vcmp.s16 gt, q1, zr
632 ; CHECK-BE-NEXT: @ implicit-def: $q1
633 ; CHECK-BE-NEXT: vmrs r1, p0
634 ; CHECK-BE-NEXT: and r2, r1, #1
635 ; CHECK-BE-NEXT: rsbs r3, r2, #0
636 ; CHECK-BE-NEXT: movs r2, #0
637 ; CHECK-BE-NEXT: bfi r2, r3, #0, #1
638 ; CHECK-BE-NEXT: ubfx r3, r1, #2, #1
639 ; CHECK-BE-NEXT: rsbs r3, r3, #0
640 ; CHECK-BE-NEXT: bfi r2, r3, #1, #1
641 ; CHECK-BE-NEXT: ubfx r3, r1, #4, #1
642 ; CHECK-BE-NEXT: rsbs r3, r3, #0
643 ; CHECK-BE-NEXT: bfi r2, r3, #2, #1
644 ; CHECK-BE-NEXT: ubfx r3, r1, #6, #1
645 ; CHECK-BE-NEXT: rsbs r3, r3, #0
646 ; CHECK-BE-NEXT: bfi r2, r3, #3, #1
647 ; CHECK-BE-NEXT: ubfx r3, r1, #8, #1
648 ; CHECK-BE-NEXT: rsbs r3, r3, #0
649 ; CHECK-BE-NEXT: bfi r2, r3, #4, #1
650 ; CHECK-BE-NEXT: ubfx r3, r1, #10, #1
651 ; CHECK-BE-NEXT: rsbs r3, r3, #0
652 ; CHECK-BE-NEXT: bfi r2, r3, #5, #1
653 ; CHECK-BE-NEXT: ubfx r3, r1, #12, #1
654 ; CHECK-BE-NEXT: ubfx r1, r1, #14, #1
655 ; CHECK-BE-NEXT: rsbs r3, r3, #0
656 ; CHECK-BE-NEXT: bfi r2, r3, #6, #1
657 ; CHECK-BE-NEXT: rsbs r1, r1, #0
658 ; CHECK-BE-NEXT: bfi r2, r1, #7, #1
659 ; CHECK-BE-NEXT: uxtb r1, r2
660 ; CHECK-BE-NEXT: lsls r2, r2, #31
661 ; CHECK-BE-NEXT: itt ne
662 ; CHECK-BE-NEXT: ldrhne r2, [r0]
663 ; CHECK-BE-NEXT: vmovne.16 q1[0], r2
664 ; CHECK-BE-NEXT: lsls r2, r1, #30
665 ; CHECK-BE-NEXT: itt mi
666 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #2]
667 ; CHECK-BE-NEXT: vmovmi.16 q1[1], r2
668 ; CHECK-BE-NEXT: lsls r2, r1, #29
669 ; CHECK-BE-NEXT: itt mi
670 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #4]
671 ; CHECK-BE-NEXT: vmovmi.16 q1[2], r2
672 ; CHECK-BE-NEXT: lsls r2, r1, #28
673 ; CHECK-BE-NEXT: itt mi
674 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #6]
675 ; CHECK-BE-NEXT: vmovmi.16 q1[3], r2
676 ; CHECK-BE-NEXT: lsls r2, r1, #27
677 ; CHECK-BE-NEXT: itt mi
678 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #8]
679 ; CHECK-BE-NEXT: vmovmi.16 q1[4], r2
680 ; CHECK-BE-NEXT: lsls r2, r1, #26
681 ; CHECK-BE-NEXT: itt mi
682 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #10]
683 ; CHECK-BE-NEXT: vmovmi.16 q1[5], r2
684 ; CHECK-BE-NEXT: lsls r2, r1, #25
685 ; CHECK-BE-NEXT: itt mi
686 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #12]
687 ; CHECK-BE-NEXT: vmovmi.16 q1[6], r2
688 ; CHECK-BE-NEXT: lsls r1, r1, #24
689 ; CHECK-BE-NEXT: itt mi
690 ; CHECK-BE-NEXT: ldrhmi r0, [r0, #14]
691 ; CHECK-BE-NEXT: vmovmi.16 q1[7], r0
692 ; CHECK-BE-NEXT: vrev64.16 q0, q1
693 ; CHECK-BE-NEXT: add sp, #8
694 ; CHECK-BE-NEXT: bx lr
709 ; CHECK-BE-LABEL: masked_v8i16_align4_other:
710 ; CHECK-BE: @ %bb.0: @ %entry
711 ; CHECK-BE-NEXT: vrev64.16 q1, q0
712 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
713 ; CHECK-BE-NEXT: vldrht.u16 q0, [r0]
714 ; CHECK-BE-NEXT: vpsel q1, q0, q1
715 ; CHECK-BE-NEXT: vrev64.16 q0, q1
716 ; CHECK-BE-NEXT: bx lr
731 ; CHECK-BE-LABEL: sext8_masked_v8i16_align1_zero:
732 ; CHECK-BE: @ %bb.0: @ %entry
733 ; CHECK-BE-NEXT: vrev64.16 q1, q0
734 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
735 ; CHECK-BE-NEXT: vpt.s16 gt, q0, zr
736 ; CHECK-BE-NEXT: vldrbt.s16 q1, [r0]
737 ; CHECK-BE-NEXT: vrev64.16 q0, q1
738 ; CHECK-BE-NEXT: bx lr
754 ; CHECK-BE-LABEL: sext8_masked_v8i16_align1_undef:
755 ; CHECK-BE: @ %bb.0: @ %entry
756 ; CHECK-BE-NEXT: vrev64.16 q1, q0
757 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
758 ; CHECK-BE-NEXT: vpt.s16 gt, q0, zr
759 ; CHECK-BE-NEXT: vldrbt.s16 q1, [r0]
760 ; CHECK-BE-NEXT: vrev64.16 q0, q1
761 ; CHECK-BE-NEXT: bx lr
778 ; CHECK-BE-LABEL: sext8_masked_v8i16_align1_other:
779 ; CHECK-BE: @ %bb.0: @ %entry
780 ; CHECK-BE-NEXT: vrev64.16 q1, q0
781 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
782 ; CHECK-BE-NEXT: vpt.s16 gt, q0, zr
783 ; CHECK-BE-NEXT: vldrbt.s16 q1, [r0]
784 ; CHECK-BE-NEXT: vpsel q1, q1, q0
785 ; CHECK-BE-NEXT: vrev64.16 q0, q1
786 ; CHECK-BE-NEXT: bx lr
803 ; CHECK-BE-LABEL: sext8_masked_v4i32_align1_zero:
804 ; CHECK-BE: @ %bb.0: @ %entry
805 ; CHECK-BE-NEXT: vrev64.32 q1, q0
806 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
807 ; CHECK-BE-NEXT: vmovlb.s16 q0, q0
808 ; CHECK-BE-NEXT: vpt.s32 gt, q0, zr
809 ; CHECK-BE-NEXT: vldrbt.s32 q1, [r0]
810 ; CHECK-BE-NEXT: vrev64.32 q0, q1
811 ; CHECK-BE-NEXT: bx lr
828 ; CHECK-BE-LABEL: sext8_masked_v4i32_align1_undef:
829 ; CHECK-BE: @ %bb.0: @ %entry
830 ; CHECK-BE-NEXT: vrev64.32 q1, q0
831 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
832 ; CHECK-BE-NEXT: vmovlb.s16 q0, q0
833 ; CHECK-BE-NEXT: vpt.s32 gt, q0, zr
834 ; CHECK-BE-NEXT: vldrbt.s32 q1, [r0]
835 ; CHECK-BE-NEXT: vrev64.32 q0, q1
836 ; CHECK-BE-NEXT: bx lr
854 ; CHECK-BE-LABEL: sext8_masked_v4i32_align1_other:
855 ; CHECK-BE: @ %bb.0: @ %entry
856 ; CHECK-BE-NEXT: vrev64.32 q1, q0
857 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
858 ; CHECK-BE-NEXT: vmovlb.s16 q0, q0
859 ; CHECK-BE-NEXT: vpt.s32 gt, q0, zr
860 ; CHECK-BE-NEXT: vldrbt.s32 q1, [r0]
861 ; CHECK-BE-NEXT: vpsel q1, q1, q0
862 ; CHECK-BE-NEXT: vrev64.32 q0, q1
863 ; CHECK-BE-NEXT: bx lr
880 ; CHECK-BE-LABEL: zext8_masked_v4i32_align1_zero:
881 ; CHECK-BE: @ %bb.0: @ %entry
882 ; CHECK-BE-NEXT: vrev64.32 q1, q0
883 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
884 ; CHECK-BE-NEXT: vmovlb.s16 q0, q0
885 ; CHECK-BE-NEXT: vpt.s32 gt, q0, zr
886 ; CHECK-BE-NEXT: vldrbt.u32 q1, [r0]
887 ; CHECK-BE-NEXT: vrev64.32 q0, q1
888 ; CHECK-BE-NEXT: bx lr
905 ; CHECK-BE-LABEL: zext8_masked_v4i32_align1_undef:
906 ; CHECK-BE: @ %bb.0: @ %entry
907 ; CHECK-BE-NEXT: vrev64.32 q1, q0
908 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
909 ; CHECK-BE-NEXT: vmovlb.s16 q0, q0
910 ; CHECK-BE-NEXT: vpt.s32 gt, q0, zr
911 ; CHECK-BE-NEXT: vldrbt.u32 q1, [r0]
912 ; CHECK-BE-NEXT: vrev64.32 q0, q1
913 ; CHECK-BE-NEXT: bx lr
933 ; CHECK-BE-LABEL: zext8_masked_v4i32_align1_other:
934 ; CHECK-BE: @ %bb.0: @ %entry
935 ; CHECK-BE-NEXT: vmov.i32 q1, #0xff
936 ; CHECK-BE-NEXT: vrev64.32 q2, q0
937 ; CHECK-BE-NEXT: vand q0, q2, q1
938 ; CHECK-BE-NEXT: vmovlb.s8 q1, q2
939 ; CHECK-BE-NEXT: vmovlb.s16 q1, q1
940 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
941 ; CHECK-BE-NEXT: vldrbt.u32 q1, [r0]
942 ; CHECK-BE-NEXT: vpsel q1, q1, q0
943 ; CHECK-BE-NEXT: vrev64.32 q0, q1
944 ; CHECK-BE-NEXT: bx lr
960 ; CHECK-BE-LABEL: zext8_masked_v8i16_align1_zero:
961 ; CHECK-BE: @ %bb.0: @ %entry
962 ; CHECK-BE-NEXT: vrev64.16 q1, q0
963 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
964 ; CHECK-BE-NEXT: vpt.s16 gt, q0, zr
965 ; CHECK-BE-NEXT: vldrbt.u16 q1, [r0]
966 ; CHECK-BE-NEXT: vrev64.16 q0, q1
967 ; CHECK-BE-NEXT: bx lr
983 ; CHECK-BE-LABEL: zext8_masked_v8i16_align1_undef:
984 ; CHECK-BE: @ %bb.0: @ %entry
985 ; CHECK-BE-NEXT: vrev64.16 q1, q0
986 ; CHECK-BE-NEXT: vmovlb.s8 q0, q1
987 ; CHECK-BE-NEXT: vpt.s16 gt, q0, zr
988 ; CHECK-BE-NEXT: vldrbt.u16 q1, [r0]
989 ; CHECK-BE-NEXT: vrev64.16 q0, q1
990 ; CHECK-BE-NEXT: bx lr
1008 ; CHECK-BE-LABEL: zext8_masked_v8i16_align1_other:
1009 ; CHECK-BE: @ %bb.0: @ %entry
1010 ; CHECK-BE-NEXT: vrev64.16 q1, q0
1011 ; CHECK-BE-NEXT: vmovlb.u8 q0, q1
1012 ; CHECK-BE-NEXT: vmovlb.s8 q1, q1
1013 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
1014 ; CHECK-BE-NEXT: vldrbt.u16 q1, [r0]
1015 ; CHECK-BE-NEXT: vpsel q1, q1, q0
1016 ; CHECK-BE-NEXT: vrev64.16 q0, q1
1017 ; CHECK-BE-NEXT: bx lr
1035 ; CHECK-BE-LABEL: masked_v8i16_preinc:
1036 ; CHECK-BE: @ %bb.0: @ %entry
1037 ; CHECK-BE-NEXT: vldr d1, [sp]
1038 ; CHECK-BE-NEXT: vmov d0, r3, r2
1039 ; CHECK-BE-NEXT: vrev64.16 q1, q0
1040 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
1041 ; CHECK-BE-NEXT: vldrht.u16 q0, [r0, #4]!
1042 ; CHECK-BE-NEXT: vstrh.16 q0, [r1]
1043 ; CHECK-BE-NEXT: bx lr
1062 ; CHECK-BE-LABEL: masked_v8i16_postinc:
1063 ; CHECK-BE: @ %bb.0: @ %entry
1064 ; CHECK-BE-NEXT: vrev64.16 q1, q0
1065 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
1066 ; CHECK-BE-NEXT: vldrht.u16 q0, [r0], #4
1067 ; CHECK-BE-NEXT: vstrh.16 q0, [r1]
1068 ; CHECK-BE-NEXT: bx lr
1087 ; CHECK-BE-LABEL: masked_v16i8_align4_zero:
1088 ; CHECK-BE: @ %bb.0: @ %entry
1089 ; CHECK-BE-NEXT: vrev64.8 q1, q0
1090 ; CHECK-BE-NEXT: vpt.s8 gt, q1, zr
1091 ; CHECK-BE-NEXT: vldrbt.u8 q1, [r0]
1092 ; CHECK-BE-NEXT: vrev64.8 q0, q1
1093 ; CHECK-BE-NEXT: bx lr
1107 ; CHECK-BE-LABEL: masked_v16i8_align4_undef:
1108 ; CHECK-BE: @ %bb.0: @ %entry
1109 ; CHECK-BE-NEXT: vrev64.8 q1, q0
1110 ; CHECK-BE-NEXT: vpt.s8 gt, q1, zr
1111 ; CHECK-BE-NEXT: vldrbt.u8 q1, [r0]
1112 ; CHECK-BE-NEXT: vrev64.8 q0, q1
1113 ; CHECK-BE-NEXT: bx lr
1128 ; CHECK-BE-LABEL: masked_v16i8_align4_other:
1129 ; CHECK-BE: @ %bb.0: @ %entry
1130 ; CHECK-BE-NEXT: vrev64.8 q1, q0
1131 ; CHECK-BE-NEXT: vpt.s8 gt, q1, zr
1132 ; CHECK-BE-NEXT: vldrbt.u8 q0, [r0]
1133 ; CHECK-BE-NEXT: vpsel q1, q0, q1
1134 ; CHECK-BE-NEXT: vrev64.8 q0, q1
1135 ; CHECK-BE-NEXT: bx lr
1150 ; CHECK-BE-LABEL: masked_v16i8_preinc:
1151 ; CHECK-BE: @ %bb.0: @ %entry
1152 ; CHECK-BE-NEXT: vrev64.8 q1, q0
1153 ; CHECK-BE-NEXT: vpt.s8 gt, q1, zr
1154 ; CHECK-BE-NEXT: vldrbt.u8 q0, [r0, #4]!
1155 ; CHECK-BE-NEXT: vstrb.8 q0, [r1]
1156 ; CHECK-BE-NEXT: bx lr
1175 ; CHECK-BE-LABEL: masked_v16i8_postinc:
1176 ; CHECK-BE: @ %bb.0: @ %entry
1177 ; CHECK-BE-NEXT: vrev64.8 q1, q0
1178 ; CHECK-BE-NEXT: vpt.s8 gt, q1, zr
1179 ; CHECK-BE-NEXT: vldrbt.u8 q0, [r0], #4
1180 ; CHECK-BE-NEXT: vstrb.8 q0, [r1]
1181 ; CHECK-BE-NEXT: bx lr
1200 ; CHECK-BE-LABEL: masked_v4f32_align4_zero:
1201 ; CHECK-BE: @ %bb.0: @ %entry
1202 ; CHECK-BE-NEXT: vrev64.32 q1, q0
1203 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
1204 ; CHECK-BE-NEXT: vldrwt.u32 q1, [r0]
1205 ; CHECK-BE-NEXT: vrev64.32 q0, q1
1206 ; CHECK-BE-NEXT: bx lr
1220 ; CHECK-BE-LABEL: masked_v4f32_align4_undef:
1221 ; CHECK-BE: @ %bb.0: @ %entry
1222 ; CHECK-BE-NEXT: vrev64.32 q1, q0
1223 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
1224 ; CHECK-BE-NEXT: vldrwt.u32 q1, [r0]
1225 ; CHECK-BE-NEXT: vrev64.32 q0, q1
1226 ; CHECK-BE-NEXT: bx lr
1273 ; CHECK-BE-LABEL: masked_v4f32_align1_undef:
1274 ; CHECK-BE: @ %bb.0: @ %entry
1275 ; CHECK-BE-NEXT: .pad #4
1276 ; CHECK-BE-NEXT: sub sp, #4
1277 ; CHECK-BE-NEXT: vrev64.32 q1, q0
1278 ; CHECK-BE-NEXT: vcmp.s32 gt, q1, zr
1279 ; CHECK-BE-NEXT: @ implicit-def: $q1
1280 ; CHECK-BE-NEXT: vmrs r2, p0
1281 ; CHECK-BE-NEXT: and r1, r2, #1
1282 ; CHECK-BE-NEXT: rsbs r3, r1, #0
1283 ; CHECK-BE-NEXT: movs r1, #0
1284 ; CHECK-BE-NEXT: bfi r1, r3, #0, #1
1285 ; CHECK-BE-NEXT: ubfx r3, r2, #4, #1
1286 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1287 ; CHECK-BE-NEXT: bfi r1, r3, #1, #1
1288 ; CHECK-BE-NEXT: ubfx r3, r2, #8, #1
1289 ; CHECK-BE-NEXT: ubfx r2, r2, #12, #1
1290 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1291 ; CHECK-BE-NEXT: bfi r1, r3, #2, #1
1292 ; CHECK-BE-NEXT: rsbs r2, r2, #0
1293 ; CHECK-BE-NEXT: bfi r1, r2, #3, #1
1294 ; CHECK-BE-NEXT: lsls r2, r1, #31
1295 ; CHECK-BE-NEXT: itt ne
1296 ; CHECK-BE-NEXT: ldrne r2, [r0]
1297 ; CHECK-BE-NEXT: vmovne s4, r2
1298 ; CHECK-BE-NEXT: lsls r2, r1, #30
1299 ; CHECK-BE-NEXT: itt mi
1300 ; CHECK-BE-NEXT: ldrmi r2, [r0, #4]
1301 ; CHECK-BE-NEXT: vmovmi s5, r2
1302 ; CHECK-BE-NEXT: lsls r2, r1, #29
1303 ; CHECK-BE-NEXT: itt mi
1304 ; CHECK-BE-NEXT: ldrmi r2, [r0, #8]
1305 ; CHECK-BE-NEXT: vmovmi s6, r2
1306 ; CHECK-BE-NEXT: lsls r1, r1, #28
1307 ; CHECK-BE-NEXT: itt mi
1308 ; CHECK-BE-NEXT: ldrmi r0, [r0, #12]
1309 ; CHECK-BE-NEXT: vmovmi s7, r0
1310 ; CHECK-BE-NEXT: vrev64.32 q0, q1
1311 ; CHECK-BE-NEXT: add sp, #4
1312 ; CHECK-BE-NEXT: bx lr
1327 ; CHECK-BE-LABEL: masked_v4f32_align4_other:
1328 ; CHECK-BE: @ %bb.0: @ %entry
1329 ; CHECK-BE-NEXT: vrev64.32 q2, q1
1330 ; CHECK-BE-NEXT: vrev64.32 q1, q0
1331 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
1332 ; CHECK-BE-NEXT: vldrwt.u32 q0, [r0]
1333 ; CHECK-BE-NEXT: vpsel q1, q0, q2
1334 ; CHECK-BE-NEXT: vrev64.32 q0, q1
1335 ; CHECK-BE-NEXT: bx lr
1350 ; CHECK-BE-LABEL: masked_v4f32_preinc:
1351 ; CHECK-BE: @ %bb.0: @ %entry
1352 ; CHECK-BE-NEXT: vrev64.32 q1, q0
1353 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
1354 ; CHECK-BE-NEXT: vldrwt.u32 q0, [r0, #4]!
1355 ; CHECK-BE-NEXT: vstrw.32 q0, [r1]
1356 ; CHECK-BE-NEXT: bx lr
1375 ; CHECK-BE-LABEL: masked_v4f32_postinc:
1376 ; CHECK-BE: @ %bb.0: @ %entry
1377 ; CHECK-BE-NEXT: vrev64.32 q1, q0
1378 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
1379 ; CHECK-BE-NEXT: vldrwt.u32 q0, [r0], #4
1380 ; CHECK-BE-NEXT: vstrw.32 q0, [r1]
1381 ; CHECK-BE-NEXT: bx lr
1400 ; CHECK-BE-LABEL: masked_v8f16_align4_zero:
1401 ; CHECK-BE: @ %bb.0: @ %entry
1402 ; CHECK-BE-NEXT: vrev64.16 q1, q0
1403 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
1404 ; CHECK-BE-NEXT: vldrht.u16 q1, [r0]
1405 ; CHECK-BE-NEXT: vrev64.16 q0, q1
1406 ; CHECK-BE-NEXT: bx lr
1420 ; CHECK-BE-LABEL: masked_v8f16_align4_undef:
1421 ; CHECK-BE: @ %bb.0: @ %entry
1422 ; CHECK-BE-NEXT: vrev64.16 q1, q0
1423 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
1424 ; CHECK-BE-NEXT: vldrht.u16 q1, [r0]
1425 ; CHECK-BE-NEXT: vrev64.16 q0, q1
1426 ; CHECK-BE-NEXT: bx lr
1556 ; CHECK-BE-LABEL: masked_v8f16_align1_undef:
1557 ; CHECK-BE: @ %bb.0: @ %entry
1558 ; CHECK-BE-NEXT: .pad #40
1559 ; CHECK-BE-NEXT: sub sp, #40
1560 ; CHECK-BE-NEXT: vrev64.16 q1, q0
1561 ; CHECK-BE-NEXT: vcmp.s16 gt, q1, zr
1562 ; CHECK-BE-NEXT: @ implicit-def: $q1
1563 ; CHECK-BE-NEXT: vmrs r1, p0
1564 ; CHECK-BE-NEXT: and r2, r1, #1
1565 ; CHECK-BE-NEXT: rsbs r3, r2, #0
1566 ; CHECK-BE-NEXT: movs r2, #0
1567 ; CHECK-BE-NEXT: bfi r2, r3, #0, #1
1568 ; CHECK-BE-NEXT: ubfx r3, r1, #2, #1
1569 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1570 ; CHECK-BE-NEXT: bfi r2, r3, #1, #1
1571 ; CHECK-BE-NEXT: ubfx r3, r1, #4, #1
1572 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1573 ; CHECK-BE-NEXT: bfi r2, r3, #2, #1
1574 ; CHECK-BE-NEXT: ubfx r3, r1, #6, #1
1575 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1576 ; CHECK-BE-NEXT: bfi r2, r3, #3, #1
1577 ; CHECK-BE-NEXT: ubfx r3, r1, #8, #1
1578 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1579 ; CHECK-BE-NEXT: bfi r2, r3, #4, #1
1580 ; CHECK-BE-NEXT: ubfx r3, r1, #10, #1
1581 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1582 ; CHECK-BE-NEXT: bfi r2, r3, #5, #1
1583 ; CHECK-BE-NEXT: ubfx r3, r1, #12, #1
1584 ; CHECK-BE-NEXT: ubfx r1, r1, #14, #1
1585 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1586 ; CHECK-BE-NEXT: bfi r2, r3, #6, #1
1587 ; CHECK-BE-NEXT: rsbs r1, r1, #0
1588 ; CHECK-BE-NEXT: bfi r2, r1, #7, #1
1589 ; CHECK-BE-NEXT: uxtb r1, r2
1590 ; CHECK-BE-NEXT: lsls r2, r2, #31
1591 ; CHECK-BE-NEXT: bne .LBB45_10
1592 ; CHECK-BE-NEXT: @ %bb.1: @ %else
1593 ; CHECK-BE-NEXT: lsls r2, r1, #30
1594 ; CHECK-BE-NEXT: bmi .LBB45_11
1595 ; CHECK-BE-NEXT: .LBB45_2: @ %else2
1596 ; CHECK-BE-NEXT: lsls r2, r1, #29
1597 ; CHECK-BE-NEXT: bmi .LBB45_12
1598 ; CHECK-BE-NEXT: .LBB45_3: @ %else5
1599 ; CHECK-BE-NEXT: lsls r2, r1, #28
1600 ; CHECK-BE-NEXT: bmi .LBB45_13
1601 ; CHECK-BE-NEXT: .LBB45_4: @ %else8
1602 ; CHECK-BE-NEXT: lsls r2, r1, #27
1603 ; CHECK-BE-NEXT: bmi .LBB45_14
1604 ; CHECK-BE-NEXT: .LBB45_5: @ %else11
1605 ; CHECK-BE-NEXT: lsls r2, r1, #26
1606 ; CHECK-BE-NEXT: bmi .LBB45_15
1607 ; CHECK-BE-NEXT: .LBB45_6: @ %else14
1608 ; CHECK-BE-NEXT: lsls r2, r1, #25
1609 ; CHECK-BE-NEXT: bmi .LBB45_16
1610 ; CHECK-BE-NEXT: .LBB45_7: @ %else17
1611 ; CHECK-BE-NEXT: lsls r1, r1, #24
1612 ; CHECK-BE-NEXT: bpl .LBB45_9
1613 ; CHECK-BE-NEXT: .LBB45_8: @ %cond.load19
1614 ; CHECK-BE-NEXT: ldrh r0, [r0, #14]
1615 ; CHECK-BE-NEXT: strh.w r0, [sp]
1616 ; CHECK-BE-NEXT: vldr.16 s0, [sp]
1617 ; CHECK-BE-NEXT: vmov r0, s0
1618 ; CHECK-BE-NEXT: vmov.16 q1[7], r0
1619 ; CHECK-BE-NEXT: .LBB45_9: @ %else20
1620 ; CHECK-BE-NEXT: vrev64.16 q0, q1
1621 ; CHECK-BE-NEXT: add sp, #40
1622 ; CHECK-BE-NEXT: bx lr
1623 ; CHECK-BE-NEXT: .LBB45_10: @ %cond.load
1624 ; CHECK-BE-NEXT: ldrh r2, [r0]
1625 ; CHECK-BE-NEXT: strh.w r2, [sp, #28]
1626 ; CHECK-BE-NEXT: vldr.16 s4, [sp, #28]
1627 ; CHECK-BE-NEXT: lsls r2, r1, #30
1628 ; CHECK-BE-NEXT: bpl .LBB45_2
1629 ; CHECK-BE-NEXT: .LBB45_11: @ %cond.load1
1630 ; CHECK-BE-NEXT: ldrh r2, [r0, #2]
1631 ; CHECK-BE-NEXT: strh.w r2, [sp, #24]
1632 ; CHECK-BE-NEXT: vldr.16 s0, [sp, #24]
1633 ; CHECK-BE-NEXT: vmov r2, s0
1634 ; CHECK-BE-NEXT: vmov.16 q1[1], r2
1635 ; CHECK-BE-NEXT: lsls r2, r1, #29
1636 ; CHECK-BE-NEXT: bpl .LBB45_3
1637 ; CHECK-BE-NEXT: .LBB45_12: @ %cond.load4
1638 ; CHECK-BE-NEXT: ldrh r2, [r0, #4]
1639 ; CHECK-BE-NEXT: strh.w r2, [sp, #20]
1640 ; CHECK-BE-NEXT: vldr.16 s0, [sp, #20]
1641 ; CHECK-BE-NEXT: vmov r2, s0
1642 ; CHECK-BE-NEXT: vmov.16 q1[2], r2
1643 ; CHECK-BE-NEXT: lsls r2, r1, #28
1644 ; CHECK-BE-NEXT: bpl .LBB45_4
1645 ; CHECK-BE-NEXT: .LBB45_13: @ %cond.load7
1646 ; CHECK-BE-NEXT: ldrh r2, [r0, #6]
1647 ; CHECK-BE-NEXT: strh.w r2, [sp, #16]
1648 ; CHECK-BE-NEXT: vldr.16 s0, [sp, #16]
1649 ; CHECK-BE-NEXT: vmov r2, s0
1650 ; CHECK-BE-NEXT: vmov.16 q1[3], r2
1651 ; CHECK-BE-NEXT: lsls r2, r1, #27
1652 ; CHECK-BE-NEXT: bpl .LBB45_5
1653 ; CHECK-BE-NEXT: .LBB45_14: @ %cond.load10
1654 ; CHECK-BE-NEXT: ldrh r2, [r0, #8]
1655 ; CHECK-BE-NEXT: strh.w r2, [sp, #12]
1656 ; CHECK-BE-NEXT: vldr.16 s0, [sp, #12]
1657 ; CHECK-BE-NEXT: vmov r2, s0
1658 ; CHECK-BE-NEXT: vmov.16 q1[4], r2
1659 ; CHECK-BE-NEXT: lsls r2, r1, #26
1660 ; CHECK-BE-NEXT: bpl .LBB45_6
1661 ; CHECK-BE-NEXT: .LBB45_15: @ %cond.load13
1662 ; CHECK-BE-NEXT: ldrh r2, [r0, #10]
1663 ; CHECK-BE-NEXT: strh.w r2, [sp, #8]
1664 ; CHECK-BE-NEXT: vldr.16 s0, [sp, #8]
1665 ; CHECK-BE-NEXT: vmov r2, s0
1666 ; CHECK-BE-NEXT: vmov.16 q1[5], r2
1667 ; CHECK-BE-NEXT: lsls r2, r1, #25
1668 ; CHECK-BE-NEXT: bpl .LBB45_7
1669 ; CHECK-BE-NEXT: .LBB45_16: @ %cond.load16
1670 ; CHECK-BE-NEXT: ldrh r2, [r0, #12]
1671 ; CHECK-BE-NEXT: strh.w r2, [sp, #4]
1672 ; CHECK-BE-NEXT: vldr.16 s0, [sp, #4]
1673 ; CHECK-BE-NEXT: vmov r2, s0
1674 ; CHECK-BE-NEXT: vmov.16 q1[6], r2
1675 ; CHECK-BE-NEXT: lsls r1, r1, #24
1676 ; CHECK-BE-NEXT: bmi .LBB45_8
1677 ; CHECK-BE-NEXT: b .LBB45_9
1692 ; CHECK-BE-LABEL: masked_v8f16_align4_other:
1693 ; CHECK-BE: @ %bb.0: @ %entry
1694 ; CHECK-BE-NEXT: vrev64.16 q2, q1
1695 ; CHECK-BE-NEXT: vrev64.16 q1, q0
1696 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
1697 ; CHECK-BE-NEXT: vldrht.u16 q0, [r0]
1698 ; CHECK-BE-NEXT: vpsel q1, q0, q2
1699 ; CHECK-BE-NEXT: vrev64.16 q0, q1
1700 ; CHECK-BE-NEXT: bx lr
1715 ; CHECK-BE-LABEL: masked_v8f16_preinc:
1716 ; CHECK-BE: @ %bb.0: @ %entry
1717 ; CHECK-BE-NEXT: vrev64.16 q1, q0
1718 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
1719 ; CHECK-BE-NEXT: vldrht.u16 q0, [r0, #4]!
1720 ; CHECK-BE-NEXT: vstrh.16 q0, [r1]
1721 ; CHECK-BE-NEXT: bx lr
1740 ; CHECK-BE-LABEL: masked_v8f16_postinc:
1741 ; CHECK-BE: @ %bb.0: @ %entry
1742 ; CHECK-BE-NEXT: vrev64.16 q1, q0
1743 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
1744 ; CHECK-BE-NEXT: vldrht.u16 q0, [r0], #4
1745 ; CHECK-BE-NEXT: vstrh.16 q0, [r1]
1746 ; CHECK-BE-NEXT: bx lr
1802 ; CHECK-BE-LABEL: masked_v2i64_align4_zero:
1803 ; CHECK-BE: @ %bb.0: @ %entry
1804 ; CHECK-BE-NEXT: .pad #4
1805 ; CHECK-BE-NEXT: sub sp, #4
1806 ; CHECK-BE-NEXT: vrev64.32 q1, q0
1807 ; CHECK-BE-NEXT: movs r2, #0
1808 ; CHECK-BE-NEXT: vmov r3, s7
1809 ; CHECK-BE-NEXT: vmov r1, s6
1810 ; CHECK-BE-NEXT: vmov r12, s4
1811 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1812 ; CHECK-BE-NEXT: vmov r3, s5
1813 ; CHECK-BE-NEXT: sbcs.w r1, r2, r1
1814 ; CHECK-BE-NEXT: mov.w r1, #0
1815 ; CHECK-BE-NEXT: it lt
1816 ; CHECK-BE-NEXT: movlt r1, #1
1817 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1818 ; CHECK-BE-NEXT: sbcs.w r3, r2, r12
1819 ; CHECK-BE-NEXT: it lt
1820 ; CHECK-BE-NEXT: movlt r2, #1
1821 ; CHECK-BE-NEXT: cmp r2, #0
1822 ; CHECK-BE-NEXT: it ne
1823 ; CHECK-BE-NEXT: mvnne r2, #1
1824 ; CHECK-BE-NEXT: bfi r2, r1, #0, #1
1825 ; CHECK-BE-NEXT: and r1, r2, #3
1826 ; CHECK-BE-NEXT: lsls r2, r2, #31
1827 ; CHECK-BE-NEXT: beq .LBB49_2
1828 ; CHECK-BE-NEXT: @ %bb.1: @ %cond.load
1829 ; CHECK-BE-NEXT: vldr d1, .LCPI49_0
1830 ; CHECK-BE-NEXT: vldr d0, [r0]
1831 ; CHECK-BE-NEXT: b .LBB49_3
1832 ; CHECK-BE-NEXT: .LBB49_2:
1833 ; CHECK-BE-NEXT: vmov.i32 q0, #0x0
1834 ; CHECK-BE-NEXT: .LBB49_3: @ %else
1835 ; CHECK-BE-NEXT: lsls r1, r1, #30
1836 ; CHECK-BE-NEXT: it mi
1837 ; CHECK-BE-NEXT: vldrmi d1, [r0, #8]
1838 ; CHECK-BE-NEXT: add sp, #4
1839 ; CHECK-BE-NEXT: bx lr
1840 ; CHECK-BE-NEXT: .p2align 3
1841 ; CHECK-BE-NEXT: @ %bb.4:
1842 ; CHECK-BE-NEXT: .LCPI49_0:
1843 ; CHECK-BE-NEXT: .long 0 @ double 0
1844 ; CHECK-BE-NEXT: .long 0
1895 ; CHECK-BE-LABEL: masked_v2f64_align4_zero:
1896 ; CHECK-BE: @ %bb.0: @ %entry
1897 ; CHECK-BE-NEXT: .pad #4
1898 ; CHECK-BE-NEXT: sub sp, #4
1899 ; CHECK-BE-NEXT: vrev64.32 q0, q1
1900 ; CHECK-BE-NEXT: movs r2, #0
1901 ; CHECK-BE-NEXT: vmov r3, s3
1902 ; CHECK-BE-NEXT: vmov r1, s2
1903 ; CHECK-BE-NEXT: vmov r12, s0
1904 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1905 ; CHECK-BE-NEXT: vmov r3, s1
1906 ; CHECK-BE-NEXT: sbcs.w r1, r2, r1
1907 ; CHECK-BE-NEXT: mov.w r1, #0
1908 ; CHECK-BE-NEXT: it lt
1909 ; CHECK-BE-NEXT: movlt r1, #1
1910 ; CHECK-BE-NEXT: rsbs r3, r3, #0
1911 ; CHECK-BE-NEXT: sbcs.w r3, r2, r12
1912 ; CHECK-BE-NEXT: it lt
1913 ; CHECK-BE-NEXT: movlt r2, #1
1914 ; CHECK-BE-NEXT: cmp r2, #0
1915 ; CHECK-BE-NEXT: it ne
1916 ; CHECK-BE-NEXT: mvnne r2, #1
1917 ; CHECK-BE-NEXT: bfi r2, r1, #0, #1
1918 ; CHECK-BE-NEXT: and r1, r2, #3
1919 ; CHECK-BE-NEXT: lsls r2, r2, #31
1920 ; CHECK-BE-NEXT: beq .LBB50_2
1921 ; CHECK-BE-NEXT: @ %bb.1: @ %cond.load
1922 ; CHECK-BE-NEXT: vldr d1, .LCPI50_0
1923 ; CHECK-BE-NEXT: vldr d0, [r0]
1924 ; CHECK-BE-NEXT: b .LBB50_3
1925 ; CHECK-BE-NEXT: .LBB50_2:
1926 ; CHECK-BE-NEXT: vmov.i32 q0, #0x0
1927 ; CHECK-BE-NEXT: .LBB50_3: @ %else
1928 ; CHECK-BE-NEXT: lsls r1, r1, #30
1929 ; CHECK-BE-NEXT: it mi
1930 ; CHECK-BE-NEXT: vldrmi d1, [r0, #8]
1931 ; CHECK-BE-NEXT: add sp, #4
1932 ; CHECK-BE-NEXT: bx lr
1933 ; CHECK-BE-NEXT: .p2align 3
1934 ; CHECK-BE-NEXT: @ %bb.4:
1935 ; CHECK-BE-NEXT: .LCPI50_0:
1936 ; CHECK-BE-NEXT: .long 0 @ double 0
1937 ; CHECK-BE-NEXT: .long 0
1951 ; CHECK-BE-LABEL: anyext_v4i16:
1952 ; CHECK-BE: @ %bb.0: @ %entry
1953 ; CHECK-BE-NEXT: vrev64.32 q1, q0
1954 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
1955 ; CHECK-BE-NEXT: vldrht.u32 q1, [r0]
1956 ; CHECK-BE-NEXT: vrev64.32 q0, q1
1957 ; CHECK-BE-NEXT: bx lr
2010 ; CHECK-BE-LABEL: anyext_v4i16_align1:
2011 ; CHECK-BE: @ %bb.0: @ %entry
2012 ; CHECK-BE-NEXT: .pad #4
2013 ; CHECK-BE-NEXT: sub sp, #4
2014 ; CHECK-BE-NEXT: vrev64.32 q1, q0
2015 ; CHECK-BE-NEXT: mov.w r12, #0
2016 ; CHECK-BE-NEXT: vcmp.s32 gt, q1, zr
2017 ; CHECK-BE-NEXT: vmrs r3, p0
2018 ; CHECK-BE-NEXT: and r1, r3, #1
2019 ; CHECK-BE-NEXT: rsbs r2, r1, #0
2020 ; CHECK-BE-NEXT: movs r1, #0
2021 ; CHECK-BE-NEXT: bfi r1, r2, #0, #1
2022 ; CHECK-BE-NEXT: ubfx r2, r3, #4, #1
2023 ; CHECK-BE-NEXT: rsbs r2, r2, #0
2024 ; CHECK-BE-NEXT: bfi r1, r2, #1, #1
2025 ; CHECK-BE-NEXT: ubfx r2, r3, #8, #1
2026 ; CHECK-BE-NEXT: rsbs r2, r2, #0
2027 ; CHECK-BE-NEXT: bfi r1, r2, #2, #1
2028 ; CHECK-BE-NEXT: ubfx r2, r3, #12, #1
2029 ; CHECK-BE-NEXT: rsbs r2, r2, #0
2030 ; CHECK-BE-NEXT: bfi r1, r2, #3, #1
2031 ; CHECK-BE-NEXT: lsls r2, r1, #31
2032 ; CHECK-BE-NEXT: beq .LBB52_2
2033 ; CHECK-BE-NEXT: @ %bb.1: @ %cond.load
2034 ; CHECK-BE-NEXT: ldrh r2, [r0]
2035 ; CHECK-BE-NEXT: vdup.32 q1, r12
2036 ; CHECK-BE-NEXT: vmov.32 q1[0], r2
2037 ; CHECK-BE-NEXT: b .LBB52_3
2038 ; CHECK-BE-NEXT: .LBB52_2:
2039 ; CHECK-BE-NEXT: vmov.i32 q1, #0x0
2040 ; CHECK-BE-NEXT: .LBB52_3: @ %else
2041 ; CHECK-BE-NEXT: lsls r2, r1, #30
2042 ; CHECK-BE-NEXT: itt mi
2043 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #2]
2044 ; CHECK-BE-NEXT: vmovmi.32 q1[1], r2
2045 ; CHECK-BE-NEXT: lsls r2, r1, #29
2046 ; CHECK-BE-NEXT: itt mi
2047 ; CHECK-BE-NEXT: ldrhmi r2, [r0, #4]
2048 ; CHECK-BE-NEXT: vmovmi.32 q1[2], r2
2049 ; CHECK-BE-NEXT: lsls r1, r1, #28
2050 ; CHECK-BE-NEXT: itt mi
2051 ; CHECK-BE-NEXT: ldrhmi r0, [r0, #6]
2052 ; CHECK-BE-NEXT: vmovmi.32 q1[3], r0
2053 ; CHECK-BE-NEXT: vrev64.32 q0, q1
2054 ; CHECK-BE-NEXT: add sp, #4
2055 ; CHECK-BE-NEXT: bx lr
2069 ; CHECK-BE-LABEL: anyext_v4i8:
2070 ; CHECK-BE: @ %bb.0: @ %entry
2071 ; CHECK-BE-NEXT: vrev64.32 q1, q0
2072 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
2073 ; CHECK-BE-NEXT: vldrbt.u32 q1, [r0]
2074 ; CHECK-BE-NEXT: vrev64.32 q0, q1
2075 ; CHECK-BE-NEXT: bx lr
2089 ; CHECK-BE-LABEL: anyext_v8i8:
2090 ; CHECK-BE: @ %bb.0: @ %entry
2091 ; CHECK-BE-NEXT: vrev64.16 q1, q0
2092 ; CHECK-BE-NEXT: vpt.s16 gt, q1, zr
2093 ; CHECK-BE-NEXT: vldrbt.u16 q1, [r0]
2094 ; CHECK-BE-NEXT: vrev64.16 q0, q1
2095 ; CHECK-BE-NEXT: bx lr
2118 ; CHECK-BE-LABEL: multi_user_zext:
2119 ; CHECK-BE: @ %bb.0: @ %entry
2120 ; CHECK-BE-NEXT: .save {r7, lr}
2121 ; CHECK-BE-NEXT: push {r7, lr}
2122 ; CHECK-BE-NEXT: .vsave {d8, d9}
2123 ; CHECK-BE-NEXT: vpush {d8, d9}
2124 ; CHECK-BE-NEXT: vrev64.32 q1, q0
2125 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
2126 ; CHECK-BE-NEXT: vldrht.u32 q4, [r0]
2127 ; CHECK-BE-NEXT: vrev64.32 q0, q4
2128 ; CHECK-BE-NEXT: vmov r1, r0, d0
2129 ; CHECK-BE-NEXT: vmov r3, r2, d1
2130 ; CHECK-BE-NEXT: bl foo
2131 ; CHECK-BE-NEXT: vmovlb.u16 q1, q4
2132 ; CHECK-BE-NEXT: vrev64.32 q0, q1
2133 ; CHECK-BE-NEXT: vpop {d8, d9}
2134 ; CHECK-BE-NEXT: pop {r7, pc}
2159 ; CHECK-BE-LABEL: multi_user_sext:
2160 ; CHECK-BE: @ %bb.0: @ %entry
2161 ; CHECK-BE-NEXT: .save {r7, lr}
2162 ; CHECK-BE-NEXT: push {r7, lr}
2163 ; CHECK-BE-NEXT: .vsave {d8, d9}
2164 ; CHECK-BE-NEXT: vpush {d8, d9}
2165 ; CHECK-BE-NEXT: vrev64.32 q1, q0
2166 ; CHECK-BE-NEXT: vpt.s32 gt, q1, zr
2167 ; CHECK-BE-NEXT: vldrht.u32 q4, [r0]
2168 ; CHECK-BE-NEXT: vrev64.32 q0, q4
2169 ; CHECK-BE-NEXT: vmov r1, r0, d0
2170 ; CHECK-BE-NEXT: vmov r3, r2, d1
2171 ; CHECK-BE-NEXT: bl foo
2172 ; CHECK-BE-NEXT: vmovlb.s16 q1, q4
2173 ; CHECK-BE-NEXT: vrev64.32 q0, q1
2174 ; CHECK-BE-NEXT: vpop {d8, d9}
2175 ; CHECK-BE-NEXT: pop {r7, pc}