Lines Matching refs:FP16
3 …-mtriple=armv8a-none-eabihf -mattr=+neon,+fullfp16 | FileCheck %s --check-prefixes=CHECK,CHECK-FP16
634 ; CHECK-FP16-LABEL: stest_f16i32:
635 ; CHECK-FP16: @ %bb.0: @ %entry
636 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, lr}
637 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r8, r9, r10, lr}
638 ; CHECK-FP16-NEXT: .vsave {d10, d11, d12, d13}
639 ; CHECK-FP16-NEXT: vpush {d10, d11, d12, d13}
640 ; CHECK-FP16-NEXT: .vsave {d8}
641 ; CHECK-FP16-NEXT: vpush {d8}
642 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[0]
643 ; CHECK-FP16-NEXT: vorr d8, d0, d0
644 ; CHECK-FP16-NEXT: vmov.u16 r6, d0[1]
645 ; CHECK-FP16-NEXT: vmov s0, r0
646 ; CHECK-FP16-NEXT: bl __fixhfdi
647 ; CHECK-FP16-NEXT: mov r4, r0
648 ; CHECK-FP16-NEXT: vmov.u16 r0, d8[2]
649 ; CHECK-FP16-NEXT: mov r8, r1
650 ; CHECK-FP16-NEXT: vmov.32 d10[0], r4
651 ; CHECK-FP16-NEXT: vmov s0, r0
652 ; CHECK-FP16-NEXT: bl __fixhfdi
653 ; CHECK-FP16-NEXT: vmov s0, r6
654 ; CHECK-FP16-NEXT: mov r5, r0
655 ; CHECK-FP16-NEXT: mov r7, r1
656 ; CHECK-FP16-NEXT: vmov.32 d12[0], r0
657 ; CHECK-FP16-NEXT: bl __fixhfdi
658 ; CHECK-FP16-NEXT: mov r9, r0
659 ; CHECK-FP16-NEXT: vmov.u16 r0, d8[3]
660 ; CHECK-FP16-NEXT: mov r10, r1
661 ; CHECK-FP16-NEXT: vmov.32 d11[0], r9
662 ; CHECK-FP16-NEXT: vmov s0, r0
663 ; CHECK-FP16-NEXT: bl __fixhfdi
664 ; CHECK-FP16-NEXT: mvn r6, #-2147483648
665 ; CHECK-FP16-NEXT: subs r3, r4, r6
666 ; CHECK-FP16-NEXT: sbcs r3, r8, #0
667 ; CHECK-FP16-NEXT: vmov.32 d13[0], r0
668 ; CHECK-FP16-NEXT: mov r3, #0
669 ; CHECK-FP16-NEXT: adr r2, .LCPI6_0
670 ; CHECK-FP16-NEXT: movwlt r3, #1
671 ; CHECK-FP16-NEXT: subs r5, r5, r6
672 ; CHECK-FP16-NEXT: sbcs r5, r7, #0
673 ; CHECK-FP16-NEXT: vmov.32 d13[1], r1
674 ; CHECK-FP16-NEXT: mov r5, #0
675 ; CHECK-FP16-NEXT: movwlt r5, #1
676 ; CHECK-FP16-NEXT: cmp r5, #0
677 ; CHECK-FP16-NEXT: mvnne r5, #0
678 ; CHECK-FP16-NEXT: subs r0, r0, r6
679 ; CHECK-FP16-NEXT: sbcs r0, r1, #0
680 ; CHECK-FP16-NEXT: vld1.64 {d18, d19}, [r2:128]
681 ; CHECK-FP16-NEXT: mov r0, #0
682 ; CHECK-FP16-NEXT: mov r2, #0
683 ; CHECK-FP16-NEXT: movwlt r0, #1
684 ; CHECK-FP16-NEXT: cmp r0, #0
685 ; CHECK-FP16-NEXT: mvnne r0, #0
686 ; CHECK-FP16-NEXT: vmov.32 d12[1], r7
687 ; CHECK-FP16-NEXT: vdup.32 d17, r0
688 ; CHECK-FP16-NEXT: subs r0, r9, r6
689 ; CHECK-FP16-NEXT: sbcs r0, r10, #0
690 ; CHECK-FP16-NEXT: vdup.32 d16, r5
691 ; CHECK-FP16-NEXT: mov r0, #0
692 ; CHECK-FP16-NEXT: vbsl q8, q6, q9
693 ; CHECK-FP16-NEXT: movwlt r0, #1
694 ; CHECK-FP16-NEXT: cmp r0, #0
695 ; CHECK-FP16-NEXT: vmov.32 d11[1], r10
696 ; CHECK-FP16-NEXT: mvnne r0, #0
697 ; CHECK-FP16-NEXT: cmp r3, #0
698 ; CHECK-FP16-NEXT: mvn r6, #0
699 ; CHECK-FP16-NEXT: vdup.32 d21, r0
700 ; CHECK-FP16-NEXT: mvnne r3, #0
701 ; CHECK-FP16-NEXT: vmov.32 d10[1], r8
702 ; CHECK-FP16-NEXT: vmov r0, r1, d16
703 ; CHECK-FP16-NEXT: vdup.32 d20, r3
704 ; CHECK-FP16-NEXT: vbit q9, q5, q10
705 ; CHECK-FP16-NEXT: adr r5, .LCPI6_1
706 ; CHECK-FP16-NEXT: vld1.64 {d20, d21}, [r5:128]
707 ; CHECK-FP16-NEXT: vmov r5, r4, d17
708 ; CHECK-FP16-NEXT: vmov r3, r7, d18
709 ; CHECK-FP16-NEXT: rsbs r0, r0, #-2147483648
710 ; CHECK-FP16-NEXT: sbcs r0, r6, r1
711 ; CHECK-FP16-NEXT: mov r0, #0
712 ; CHECK-FP16-NEXT: movwlt r0, #1
713 ; CHECK-FP16-NEXT: cmp r0, #0
714 ; CHECK-FP16-NEXT: mvnne r0, #0
715 ; CHECK-FP16-NEXT: rsbs r1, r3, #-2147483648
716 ; CHECK-FP16-NEXT: vmov r1, r3, d19
717 ; CHECK-FP16-NEXT: sbcs r7, r6, r7
718 ; CHECK-FP16-NEXT: mov r7, #0
719 ; CHECK-FP16-NEXT: movwlt r7, #1
720 ; CHECK-FP16-NEXT: rsbs r5, r5, #-2147483648
721 ; CHECK-FP16-NEXT: sbcs r5, r6, r4
722 ; CHECK-FP16-NEXT: mov r5, #0
723 ; CHECK-FP16-NEXT: movwlt r5, #1
724 ; CHECK-FP16-NEXT: rsbs r1, r1, #-2147483648
725 ; CHECK-FP16-NEXT: sbcs r1, r6, r3
726 ; CHECK-FP16-NEXT: movwlt r2, #1
727 ; CHECK-FP16-NEXT: cmp r2, #0
728 ; CHECK-FP16-NEXT: mvnne r2, #0
729 ; CHECK-FP16-NEXT: cmp r5, #0
730 ; CHECK-FP16-NEXT: mvnne r5, #0
731 ; CHECK-FP16-NEXT: cmp r7, #0
732 ; CHECK-FP16-NEXT: vdup.32 d25, r5
733 ; CHECK-FP16-NEXT: mvnne r7, #0
734 ; CHECK-FP16-NEXT: vdup.32 d23, r2
735 ; CHECK-FP16-NEXT: vdup.32 d24, r0
736 ; CHECK-FP16-NEXT: vbif q8, q10, q12
737 ; CHECK-FP16-NEXT: vdup.32 d22, r7
738 ; CHECK-FP16-NEXT: vbif q9, q10, q11
739 ; CHECK-FP16-NEXT: vmovn.i64 d1, q8
740 ; CHECK-FP16-NEXT: vmovn.i64 d0, q9
741 ; CHECK-FP16-NEXT: vpop {d8}
742 ; CHECK-FP16-NEXT: vpop {d10, d11, d12, d13}
743 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, pc}
744 ; CHECK-FP16-NEXT: .p2align 4
745 ; CHECK-FP16-NEXT: @ %bb.1:
746 ; CHECK-FP16-NEXT: .LCPI6_0:
747 ; CHECK-FP16-NEXT: .long 2147483647 @ 0x7fffffff
748 ; CHECK-FP16-NEXT: .long 0 @ 0x0
749 ; CHECK-FP16-NEXT: .long 2147483647 @ 0x7fffffff
750 ; CHECK-FP16-NEXT: .long 0 @ 0x0
751 ; CHECK-FP16-NEXT: .LCPI6_1:
752 ; CHECK-FP16-NEXT: .long 2147483648 @ 0x80000000
753 ; CHECK-FP16-NEXT: .long 4294967295 @ 0xffffffff
754 ; CHECK-FP16-NEXT: .long 2147483648 @ 0x80000000
755 ; CHECK-FP16-NEXT: .long 4294967295 @ 0xffffffff
839 ; CHECK-FP16-LABEL: utesth_f16i32:
840 ; CHECK-FP16: @ %bb.0: @ %entry
841 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, lr}
842 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r8, r9, r10, lr}
843 ; CHECK-FP16-NEXT: .vsave {d8, d9, d10, d11}
844 ; CHECK-FP16-NEXT: vpush {d8, d9, d10, d11}
845 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[1]
846 ; CHECK-FP16-NEXT: vorr d8, d0, d0
847 ; CHECK-FP16-NEXT: vmov.u16 r5, d0[3]
848 ; CHECK-FP16-NEXT: vmov s0, r0
849 ; CHECK-FP16-NEXT: bl __fixunshfdi
850 ; CHECK-FP16-NEXT: mov r10, r0
851 ; CHECK-FP16-NEXT: vmov.u16 r0, d8[0]
852 ; CHECK-FP16-NEXT: mov r8, r1
853 ; CHECK-FP16-NEXT: vmov.32 d11[0], r10
854 ; CHECK-FP16-NEXT: vmov s0, r0
855 ; CHECK-FP16-NEXT: bl __fixunshfdi
856 ; CHECK-FP16-NEXT: vmov s0, r5
857 ; CHECK-FP16-NEXT: mov r6, r0
858 ; CHECK-FP16-NEXT: mov r7, r1
859 ; CHECK-FP16-NEXT: vmov.32 d10[0], r0
860 ; CHECK-FP16-NEXT: bl __fixunshfdi
861 ; CHECK-FP16-NEXT: mov r5, r0
862 ; CHECK-FP16-NEXT: vmov.u16 r0, d8[2]
863 ; CHECK-FP16-NEXT: mov r9, r1
864 ; CHECK-FP16-NEXT: vmov.32 d9[0], r5
865 ; CHECK-FP16-NEXT: vmov s0, r0
866 ; CHECK-FP16-NEXT: bl __fixunshfdi
867 ; CHECK-FP16-NEXT: mvn r4, #0
868 ; CHECK-FP16-NEXT: subs r2, r6, r4
869 ; CHECK-FP16-NEXT: sbcs r2, r7, #0
870 ; CHECK-FP16-NEXT: vmov.32 d8[0], r0
871 ; CHECK-FP16-NEXT: mov r2, #0
872 ; CHECK-FP16-NEXT: mov r3, #0
873 ; CHECK-FP16-NEXT: movwlo r2, #1
874 ; CHECK-FP16-NEXT: subs r0, r0, r4
875 ; CHECK-FP16-NEXT: sbcs r0, r1, #0
876 ; CHECK-FP16-NEXT: mov r0, #0
877 ; CHECK-FP16-NEXT: movwlo r0, #1
878 ; CHECK-FP16-NEXT: cmp r0, #0
879 ; CHECK-FP16-NEXT: mvnne r0, #0
880 ; CHECK-FP16-NEXT: subs r1, r5, r4
881 ; CHECK-FP16-NEXT: sbcs r1, r9, #0
882 ; CHECK-FP16-NEXT: mov r1, #0
883 ; CHECK-FP16-NEXT: movwlo r1, #1
884 ; CHECK-FP16-NEXT: subs r7, r10, r4
885 ; CHECK-FP16-NEXT: sbcs r7, r8, #0
886 ; CHECK-FP16-NEXT: movwlo r3, #1
887 ; CHECK-FP16-NEXT: cmp r3, #0
888 ; CHECK-FP16-NEXT: mvnne r3, #0
889 ; CHECK-FP16-NEXT: cmp r1, #0
890 ; CHECK-FP16-NEXT: mvnne r1, #0
891 ; CHECK-FP16-NEXT: cmp r2, #0
892 ; CHECK-FP16-NEXT: vdup.32 d19, r1
893 ; CHECK-FP16-NEXT: mvnne r2, #0
894 ; CHECK-FP16-NEXT: vdup.32 d17, r3
895 ; CHECK-FP16-NEXT: vdup.32 d18, r0
896 ; CHECK-FP16-NEXT: vand q10, q4, q9
897 ; CHECK-FP16-NEXT: vdup.32 d16, r2
898 ; CHECK-FP16-NEXT: vand q11, q5, q8
899 ; CHECK-FP16-NEXT: vorn q9, q10, q9
900 ; CHECK-FP16-NEXT: vorn q8, q11, q8
901 ; CHECK-FP16-NEXT: vmovn.i64 d1, q9
902 ; CHECK-FP16-NEXT: vmovn.i64 d0, q8
903 ; CHECK-FP16-NEXT: vpop {d8, d9, d10, d11}
904 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, pc}
1020 ; CHECK-FP16-LABEL: ustest_f16i32:
1021 ; CHECK-FP16: @ %bb.0: @ %entry
1022 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
1023 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
1024 ; CHECK-FP16-NEXT: .vsave {d10, d11, d12, d13, d14, d15}
1025 ; CHECK-FP16-NEXT: vpush {d10, d11, d12, d13, d14, d15}
1026 ; CHECK-FP16-NEXT: .vsave {d8}
1027 ; CHECK-FP16-NEXT: vpush {d8}
1028 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[1]
1029 ; CHECK-FP16-NEXT: vorr d8, d0, d0
1030 ; CHECK-FP16-NEXT: vmov.u16 r8, d0[2]
1031 ; CHECK-FP16-NEXT: vmov.u16 r9, d0[3]
1032 ; CHECK-FP16-NEXT: vmov s0, r0
1033 ; CHECK-FP16-NEXT: bl __fixhfdi
1034 ; CHECK-FP16-NEXT: mov r4, r0
1035 ; CHECK-FP16-NEXT: vmov.u16 r0, d8[0]
1036 ; CHECK-FP16-NEXT: mov r5, r1
1037 ; CHECK-FP16-NEXT: vmov.32 d11[0], r4
1038 ; CHECK-FP16-NEXT: vmov s0, r0
1039 ; CHECK-FP16-NEXT: bl __fixhfdi
1040 ; CHECK-FP16-NEXT: vmov.32 d10[0], r0
1041 ; CHECK-FP16-NEXT: mvn r7, #0
1042 ; CHECK-FP16-NEXT: subs r0, r0, r7
1043 ; CHECK-FP16-NEXT: vmov.i64 q6, #0xffffffff
1044 ; CHECK-FP16-NEXT: sbcs r0, r1, #0
1045 ; CHECK-FP16-NEXT: vmov.32 d11[1], r5
1046 ; CHECK-FP16-NEXT: mov r0, #0
1047 ; CHECK-FP16-NEXT: vmov s0, r8
1048 ; CHECK-FP16-NEXT: movwlt r0, #1
1049 ; CHECK-FP16-NEXT: cmp r0, #0
1050 ; CHECK-FP16-NEXT: vmov.32 d10[1], r1
1051 ; CHECK-FP16-NEXT: mvnne r0, #0
1052 ; CHECK-FP16-NEXT: subs r1, r4, r7
1053 ; CHECK-FP16-NEXT: mov r6, #0
1054 ; CHECK-FP16-NEXT: sbcs r1, r5, #0
1055 ; CHECK-FP16-NEXT: vmov s16, r9
1056 ; CHECK-FP16-NEXT: mov r1, #0
1057 ; CHECK-FP16-NEXT: movwlt r1, #1
1058 ; CHECK-FP16-NEXT: cmp r1, #0
1059 ; CHECK-FP16-NEXT: mvnne r1, #0
1060 ; CHECK-FP16-NEXT: vdup.32 d17, r1
1061 ; CHECK-FP16-NEXT: vdup.32 d16, r0
1062 ; CHECK-FP16-NEXT: vbif q5, q6, q8
1063 ; CHECK-FP16-NEXT: vmov r9, r8, d10
1064 ; CHECK-FP16-NEXT: bl __fixhfdi
1065 ; CHECK-FP16-NEXT: vmov.f32 s0, s16
1066 ; CHECK-FP16-NEXT: mov r4, r0
1067 ; CHECK-FP16-NEXT: mov r5, r1
1068 ; CHECK-FP16-NEXT: vmov.32 d14[0], r0
1069 ; CHECK-FP16-NEXT: bl __fixhfdi
1070 ; CHECK-FP16-NEXT: subs r2, r4, r7
1071 ; CHECK-FP16-NEXT: vmov.32 d15[0], r0
1072 ; CHECK-FP16-NEXT: sbcs r2, r5, #0
1073 ; CHECK-FP16-NEXT: mov r2, #0
1074 ; CHECK-FP16-NEXT: movwlt r2, #1
1075 ; CHECK-FP16-NEXT: subs r0, r0, r7
1076 ; CHECK-FP16-NEXT: sbcs r0, r1, #0
1077 ; CHECK-FP16-NEXT: vmov.32 d15[1], r1
1078 ; CHECK-FP16-NEXT: mov r0, #0
1079 ; CHECK-FP16-NEXT: movwlt r0, #1
1080 ; CHECK-FP16-NEXT: cmp r0, #0
1081 ; CHECK-FP16-NEXT: mvnne r0, #0
1082 ; CHECK-FP16-NEXT: cmp r2, #0
1083 ; CHECK-FP16-NEXT: vmov.32 d14[1], r5
1084 ; CHECK-FP16-NEXT: mvnne r2, #0
1085 ; CHECK-FP16-NEXT: vmov r5, r4, d11
1086 ; CHECK-FP16-NEXT: vdup.32 d17, r0
1087 ; CHECK-FP16-NEXT: rsbs r0, r9, #0
1088 ; CHECK-FP16-NEXT: vdup.32 d16, r2
1089 ; CHECK-FP16-NEXT: rscs r0, r8, #0
1090 ; CHECK-FP16-NEXT: vbsl q8, q7, q6
1091 ; CHECK-FP16-NEXT: mov r0, #0
1092 ; CHECK-FP16-NEXT: movwlt r0, #1
1093 ; CHECK-FP16-NEXT: vmov r1, r2, d16
1094 ; CHECK-FP16-NEXT: vmov r3, r7, d17
1095 ; CHECK-FP16-NEXT: rsbs r1, r1, #0
1096 ; CHECK-FP16-NEXT: rscs r1, r2, #0
1097 ; CHECK-FP16-NEXT: mov r1, #0
1098 ; CHECK-FP16-NEXT: movwlt r1, #1
1099 ; CHECK-FP16-NEXT: rsbs r2, r3, #0
1100 ; CHECK-FP16-NEXT: rscs r2, r7, #0
1101 ; CHECK-FP16-NEXT: mov r2, #0
1102 ; CHECK-FP16-NEXT: movwlt r2, #1
1103 ; CHECK-FP16-NEXT: rsbs r3, r5, #0
1104 ; CHECK-FP16-NEXT: rscs r3, r4, #0
1105 ; CHECK-FP16-NEXT: movwlt r6, #1
1106 ; CHECK-FP16-NEXT: cmp r6, #0
1107 ; CHECK-FP16-NEXT: mvnne r6, #0
1108 ; CHECK-FP16-NEXT: cmp r2, #0
1109 ; CHECK-FP16-NEXT: mvnne r2, #0
1110 ; CHECK-FP16-NEXT: cmp r1, #0
1111 ; CHECK-FP16-NEXT: mvnne r1, #0
1112 ; CHECK-FP16-NEXT: vmov.32 d21[0], r2
1113 ; CHECK-FP16-NEXT: cmp r0, #0
1114 ; CHECK-FP16-NEXT: vmov.32 d20[0], r1
1115 ; CHECK-FP16-NEXT: mvnne r0, #0
1116 ; CHECK-FP16-NEXT: vmov.32 d19[0], r6
1117 ; CHECK-FP16-NEXT: vand q8, q8, q10
1118 ; CHECK-FP16-NEXT: vmov.32 d18[0], r0
1119 ; CHECK-FP16-NEXT: vmovn.i64 d1, q8
1120 ; CHECK-FP16-NEXT: vand q9, q5, q9
1121 ; CHECK-FP16-NEXT: vmovn.i64 d0, q9
1122 ; CHECK-FP16-NEXT: vpop {d8}
1123 ; CHECK-FP16-NEXT: vpop {d10, d11, d12, d13, d14, d15}
1124 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
1339 ; CHECK-FP16-LABEL: stest_f16i16:
1340 ; CHECK-FP16: @ %bb.0: @ %entry
1341 ; CHECK-FP16-NEXT: vmovx.f16 s4, s0
1342 ; CHECK-FP16-NEXT: vcvt.s32.f16 s12, s0
1343 ; CHECK-FP16-NEXT: vcvt.s32.f16 s0, s3
1344 ; CHECK-FP16-NEXT: vcvt.s32.f16 s5, s2
1345 ; CHECK-FP16-NEXT: vmov r0, s0
1346 ; CHECK-FP16-NEXT: vcvt.s32.f16 s14, s1
1347 ; CHECK-FP16-NEXT: vmovx.f16 s10, s3
1348 ; CHECK-FP16-NEXT: vmovx.f16 s8, s2
1349 ; CHECK-FP16-NEXT: vcvt.s32.f16 s10, s10
1350 ; CHECK-FP16-NEXT: vcvt.s32.f16 s8, s8
1351 ; CHECK-FP16-NEXT: vmovx.f16 s6, s1
1352 ; CHECK-FP16-NEXT: vcvt.s32.f16 s4, s4
1353 ; CHECK-FP16-NEXT: vcvt.s32.f16 s6, s6
1354 ; CHECK-FP16-NEXT: vmov.i32 q10, #0x7fff
1355 ; CHECK-FP16-NEXT: vmvn.i32 q11, #0x7fff
1356 ; CHECK-FP16-NEXT: vmov.32 d17[0], r0
1357 ; CHECK-FP16-NEXT: vmov r0, s5
1358 ; CHECK-FP16-NEXT: vmov.32 d16[0], r0
1359 ; CHECK-FP16-NEXT: vmov r0, s14
1360 ; CHECK-FP16-NEXT: vmov.32 d19[0], r0
1361 ; CHECK-FP16-NEXT: vmov r0, s12
1362 ; CHECK-FP16-NEXT: vmov.32 d18[0], r0
1363 ; CHECK-FP16-NEXT: vmov r0, s10
1364 ; CHECK-FP16-NEXT: vmov.32 d17[1], r0
1365 ; CHECK-FP16-NEXT: vmov r0, s8
1366 ; CHECK-FP16-NEXT: vmov.32 d16[1], r0
1367 ; CHECK-FP16-NEXT: vmov r0, s6
1368 ; CHECK-FP16-NEXT: vmin.s32 q8, q8, q10
1369 ; CHECK-FP16-NEXT: vmax.s32 q8, q8, q11
1370 ; CHECK-FP16-NEXT: vmovn.i32 d1, q8
1371 ; CHECK-FP16-NEXT: vmov.32 d19[1], r0
1372 ; CHECK-FP16-NEXT: vmov r0, s4
1373 ; CHECK-FP16-NEXT: vmov.32 d18[1], r0
1374 ; CHECK-FP16-NEXT: vmin.s32 q9, q9, q10
1375 ; CHECK-FP16-NEXT: vmax.s32 q9, q9, q11
1376 ; CHECK-FP16-NEXT: vmovn.i32 d0, q9
1377 ; CHECK-FP16-NEXT: bx lr
1463 ; CHECK-FP16-LABEL: utesth_f16i16:
1464 ; CHECK-FP16: @ %bb.0: @ %entry
1465 ; CHECK-FP16-NEXT: vmovx.f16 s4, s0
1466 ; CHECK-FP16-NEXT: vcvt.u32.f16 s12, s0
1467 ; CHECK-FP16-NEXT: vcvt.u32.f16 s0, s3
1468 ; CHECK-FP16-NEXT: vcvt.u32.f16 s5, s2
1469 ; CHECK-FP16-NEXT: vmov r0, s0
1470 ; CHECK-FP16-NEXT: vcvt.u32.f16 s14, s1
1471 ; CHECK-FP16-NEXT: vmovx.f16 s10, s3
1472 ; CHECK-FP16-NEXT: vmovx.f16 s8, s2
1473 ; CHECK-FP16-NEXT: vcvt.u32.f16 s10, s10
1474 ; CHECK-FP16-NEXT: vcvt.u32.f16 s8, s8
1475 ; CHECK-FP16-NEXT: vmovx.f16 s6, s1
1476 ; CHECK-FP16-NEXT: vcvt.u32.f16 s4, s4
1477 ; CHECK-FP16-NEXT: vcvt.u32.f16 s6, s6
1478 ; CHECK-FP16-NEXT: vmov.i32 q10, #0xffff
1479 ; CHECK-FP16-NEXT: vmov.32 d17[0], r0
1480 ; CHECK-FP16-NEXT: vmov r0, s5
1481 ; CHECK-FP16-NEXT: vmov.32 d16[0], r0
1482 ; CHECK-FP16-NEXT: vmov r0, s14
1483 ; CHECK-FP16-NEXT: vmov.32 d19[0], r0
1484 ; CHECK-FP16-NEXT: vmov r0, s12
1485 ; CHECK-FP16-NEXT: vmov.32 d18[0], r0
1486 ; CHECK-FP16-NEXT: vmov r0, s10
1487 ; CHECK-FP16-NEXT: vmov.32 d17[1], r0
1488 ; CHECK-FP16-NEXT: vmov r0, s8
1489 ; CHECK-FP16-NEXT: vmov.32 d16[1], r0
1490 ; CHECK-FP16-NEXT: vmov r0, s6
1491 ; CHECK-FP16-NEXT: vmin.u32 q8, q8, q10
1492 ; CHECK-FP16-NEXT: vmovn.i32 d1, q8
1493 ; CHECK-FP16-NEXT: vmov.32 d19[1], r0
1494 ; CHECK-FP16-NEXT: vmov r0, s4
1495 ; CHECK-FP16-NEXT: vmov.32 d18[1], r0
1496 ; CHECK-FP16-NEXT: vmin.u32 q9, q9, q10
1497 ; CHECK-FP16-NEXT: vmovn.i32 d0, q9
1498 ; CHECK-FP16-NEXT: bx lr
1585 ; CHECK-FP16-LABEL: ustest_f16i16:
1586 ; CHECK-FP16: @ %bb.0: @ %entry
1587 ; CHECK-FP16-NEXT: vmovx.f16 s4, s0
1588 ; CHECK-FP16-NEXT: vcvt.s32.f16 s12, s0
1589 ; CHECK-FP16-NEXT: vcvt.s32.f16 s0, s3
1590 ; CHECK-FP16-NEXT: vcvt.s32.f16 s5, s2
1591 ; CHECK-FP16-NEXT: vmov r0, s0
1592 ; CHECK-FP16-NEXT: vcvt.s32.f16 s14, s1
1593 ; CHECK-FP16-NEXT: vmovx.f16 s10, s3
1594 ; CHECK-FP16-NEXT: vmovx.f16 s8, s2
1595 ; CHECK-FP16-NEXT: vcvt.s32.f16 s10, s10
1596 ; CHECK-FP16-NEXT: vcvt.s32.f16 s8, s8
1597 ; CHECK-FP16-NEXT: vmovx.f16 s6, s1
1598 ; CHECK-FP16-NEXT: vcvt.s32.f16 s4, s4
1599 ; CHECK-FP16-NEXT: vcvt.s32.f16 s6, s6
1600 ; CHECK-FP16-NEXT: vmov.i32 q10, #0xffff
1601 ; CHECK-FP16-NEXT: vmov.i32 q11, #0x0
1602 ; CHECK-FP16-NEXT: vmov.32 d17[0], r0
1603 ; CHECK-FP16-NEXT: vmov r0, s5
1604 ; CHECK-FP16-NEXT: vmov.32 d16[0], r0
1605 ; CHECK-FP16-NEXT: vmov r0, s14
1606 ; CHECK-FP16-NEXT: vmov.32 d19[0], r0
1607 ; CHECK-FP16-NEXT: vmov r0, s12
1608 ; CHECK-FP16-NEXT: vmov.32 d18[0], r0
1609 ; CHECK-FP16-NEXT: vmov r0, s10
1610 ; CHECK-FP16-NEXT: vmov.32 d17[1], r0
1611 ; CHECK-FP16-NEXT: vmov r0, s8
1612 ; CHECK-FP16-NEXT: vmov.32 d16[1], r0
1613 ; CHECK-FP16-NEXT: vmov r0, s6
1614 ; CHECK-FP16-NEXT: vmin.s32 q8, q8, q10
1615 ; CHECK-FP16-NEXT: vmax.s32 q8, q8, q11
1616 ; CHECK-FP16-NEXT: vmovn.i32 d1, q8
1617 ; CHECK-FP16-NEXT: vmov.32 d19[1], r0
1618 ; CHECK-FP16-NEXT: vmov r0, s4
1619 ; CHECK-FP16-NEXT: vmov.32 d18[1], r0
1620 ; CHECK-FP16-NEXT: vmin.s32 q9, q9, q10
1621 ; CHECK-FP16-NEXT: vmax.s32 q9, q9, q11
1622 ; CHECK-FP16-NEXT: vmovn.i32 d0, q9
1623 ; CHECK-FP16-NEXT: bx lr
2084 ; CHECK-FP16-LABEL: stest_f16i64:
2085 ; CHECK-FP16: @ %bb.0: @ %entry
2086 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, lr}
2087 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r8, r9, r10, lr}
2088 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[1]
2089 ; CHECK-FP16-NEXT: vmov.u16 r7, d0[0]
2090 ; CHECK-FP16-NEXT: vmov s0, r0
2091 ; CHECK-FP16-NEXT: bl __fixhfti
2092 ; CHECK-FP16-NEXT: mov r5, r0
2093 ; CHECK-FP16-NEXT: mvn r8, #0
2094 ; CHECK-FP16-NEXT: subs r0, r0, r8
2095 ; CHECK-FP16-NEXT: mvn r6, #-2147483648
2096 ; CHECK-FP16-NEXT: sbcs r0, r1, r6
2097 ; CHECK-FP16-NEXT: mov r10, r1
2098 ; CHECK-FP16-NEXT: sbcs r0, r2, #0
2099 ; CHECK-FP16-NEXT: vmov s0, r7
2100 ; CHECK-FP16-NEXT: sbcs r0, r3, #0
2101 ; CHECK-FP16-NEXT: mov r7, #0
2102 ; CHECK-FP16-NEXT: mov r0, #0
2103 ; CHECK-FP16-NEXT: mov r9, #0
2104 ; CHECK-FP16-NEXT: movwlt r0, #1
2105 ; CHECK-FP16-NEXT: cmp r0, #0
2106 ; CHECK-FP16-NEXT: moveq r3, r0
2107 ; CHECK-FP16-NEXT: movne r0, r2
2108 ; CHECK-FP16-NEXT: moveq r10, r6
2109 ; CHECK-FP16-NEXT: moveq r5, r8
2110 ; CHECK-FP16-NEXT: rsbs r1, r5, #0
2111 ; CHECK-FP16-NEXT: rscs r1, r10, #-2147483648
2112 ; CHECK-FP16-NEXT: sbcs r0, r8, r0
2113 ; CHECK-FP16-NEXT: sbcs r0, r8, r3
2114 ; CHECK-FP16-NEXT: movwlt r7, #1
2115 ; CHECK-FP16-NEXT: cmp r7, #0
2116 ; CHECK-FP16-NEXT: moveq r5, r7
2117 ; CHECK-FP16-NEXT: bl __fixhfti
2118 ; CHECK-FP16-NEXT: subs r4, r0, r8
2119 ; CHECK-FP16-NEXT: vmov.32 d1[0], r5
2120 ; CHECK-FP16-NEXT: sbcs r4, r1, r6
2121 ; CHECK-FP16-NEXT: sbcs r4, r2, #0
2122 ; CHECK-FP16-NEXT: sbcs r4, r3, #0
2123 ; CHECK-FP16-NEXT: mov r4, #0
2124 ; CHECK-FP16-NEXT: movwlt r4, #1
2125 ; CHECK-FP16-NEXT: cmp r4, #0
2126 ; CHECK-FP16-NEXT: moveq r3, r4
2127 ; CHECK-FP16-NEXT: movne r6, r1
2128 ; CHECK-FP16-NEXT: movne r4, r2
2129 ; CHECK-FP16-NEXT: moveq r0, r8
2130 ; CHECK-FP16-NEXT: rsbs r1, r0, #0
2131 ; CHECK-FP16-NEXT: rscs r1, r6, #-2147483648
2132 ; CHECK-FP16-NEXT: sbcs r1, r8, r4
2133 ; CHECK-FP16-NEXT: sbcs r1, r8, r3
2134 ; CHECK-FP16-NEXT: movwlt r9, #1
2135 ; CHECK-FP16-NEXT: cmp r9, #0
2136 ; CHECK-FP16-NEXT: moveq r0, r9
2137 ; CHECK-FP16-NEXT: mov r1, #-2147483648
2138 ; CHECK-FP16-NEXT: cmp r7, #0
2139 ; CHECK-FP16-NEXT: vmov.32 d0[0], r0
2140 ; CHECK-FP16-NEXT: moveq r10, r1
2141 ; CHECK-FP16-NEXT: cmp r9, #0
2142 ; CHECK-FP16-NEXT: vmov.32 d1[1], r10
2143 ; CHECK-FP16-NEXT: moveq r6, r1
2144 ; CHECK-FP16-NEXT: vmov.32 d0[1], r6
2145 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, pc}
2198 ; CHECK-FP16-LABEL: utesth_f16i64:
2199 ; CHECK-FP16: @ %bb.0: @ %entry
2200 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r11, lr}
2201 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r11, lr}
2202 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[1]
2203 ; CHECK-FP16-NEXT: vmov.u16 r7, d0[0]
2204 ; CHECK-FP16-NEXT: vmov s0, r0
2205 ; CHECK-FP16-NEXT: bl __fixunshfti
2206 ; CHECK-FP16-NEXT: mov r5, r0
2207 ; CHECK-FP16-NEXT: subs r0, r2, #1
2208 ; CHECK-FP16-NEXT: vmov s0, r7
2209 ; CHECK-FP16-NEXT: sbcs r0, r3, #0
2210 ; CHECK-FP16-NEXT: mov r7, #0
2211 ; CHECK-FP16-NEXT: mov r4, r1
2212 ; CHECK-FP16-NEXT: movwlo r7, #1
2213 ; CHECK-FP16-NEXT: cmp r7, #0
2214 ; CHECK-FP16-NEXT: mov r6, #0
2215 ; CHECK-FP16-NEXT: moveq r5, r7
2216 ; CHECK-FP16-NEXT: bl __fixunshfti
2217 ; CHECK-FP16-NEXT: subs r2, r2, #1
2218 ; CHECK-FP16-NEXT: vmov.32 d1[0], r5
2219 ; CHECK-FP16-NEXT: sbcs r2, r3, #0
2220 ; CHECK-FP16-NEXT: movwlo r6, #1
2221 ; CHECK-FP16-NEXT: cmp r6, #0
2222 ; CHECK-FP16-NEXT: moveq r0, r6
2223 ; CHECK-FP16-NEXT: cmp r7, #0
2224 ; CHECK-FP16-NEXT: movne r7, r4
2225 ; CHECK-FP16-NEXT: vmov.32 d0[0], r0
2226 ; CHECK-FP16-NEXT: cmp r6, #0
2227 ; CHECK-FP16-NEXT: vmov.32 d1[1], r7
2228 ; CHECK-FP16-NEXT: movne r6, r1
2229 ; CHECK-FP16-NEXT: vmov.32 d0[1], r6
2230 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r11, pc}
2303 ; CHECK-FP16-LABEL: ustest_f16i64:
2304 ; CHECK-FP16: @ %bb.0: @ %entry
2305 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
2306 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
2307 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[1]
2308 ; CHECK-FP16-NEXT: vmov.u16 r4, d0[0]
2309 ; CHECK-FP16-NEXT: vmov s0, r0
2310 ; CHECK-FP16-NEXT: bl __fixhfti
2311 ; CHECK-FP16-NEXT: mov r8, r1
2312 ; CHECK-FP16-NEXT: subs r1, r2, #1
2313 ; CHECK-FP16-NEXT: sbcs r1, r3, #0
2314 ; CHECK-FP16-NEXT: mov r6, #0
2315 ; CHECK-FP16-NEXT: movwlt r6, #1
2316 ; CHECK-FP16-NEXT: cmp r6, #0
2317 ; CHECK-FP16-NEXT: mov r9, #1
2318 ; CHECK-FP16-NEXT: moveq r3, r6
2319 ; CHECK-FP16-NEXT: moveq r8, r6
2320 ; CHECK-FP16-NEXT: moveq r2, r9
2321 ; CHECK-FP16-NEXT: movne r6, r0
2322 ; CHECK-FP16-NEXT: rsbs r0, r6, #0
2323 ; CHECK-FP16-NEXT: rscs r0, r8, #0
2324 ; CHECK-FP16-NEXT: vmov s0, r4
2325 ; CHECK-FP16-NEXT: rscs r0, r2, #0
2326 ; CHECK-FP16-NEXT: mov r7, #0
2327 ; CHECK-FP16-NEXT: rscs r0, r3, #0
2328 ; CHECK-FP16-NEXT: mov r5, #0
2329 ; CHECK-FP16-NEXT: movwlt r7, #1
2330 ; CHECK-FP16-NEXT: cmp r7, #0
2331 ; CHECK-FP16-NEXT: moveq r6, r7
2332 ; CHECK-FP16-NEXT: bl __fixhfti
2333 ; CHECK-FP16-NEXT: subs r4, r2, #1
2334 ; CHECK-FP16-NEXT: vmov.32 d1[0], r6
2335 ; CHECK-FP16-NEXT: sbcs r4, r3, #0
2336 ; CHECK-FP16-NEXT: mov r4, #0
2337 ; CHECK-FP16-NEXT: movwlt r4, #1
2338 ; CHECK-FP16-NEXT: cmp r4, #0
2339 ; CHECK-FP16-NEXT: movne r9, r2
2340 ; CHECK-FP16-NEXT: moveq r3, r4
2341 ; CHECK-FP16-NEXT: moveq r1, r4
2342 ; CHECK-FP16-NEXT: movne r4, r0
2343 ; CHECK-FP16-NEXT: rsbs r0, r4, #0
2344 ; CHECK-FP16-NEXT: rscs r0, r1, #0
2345 ; CHECK-FP16-NEXT: rscs r0, r9, #0
2346 ; CHECK-FP16-NEXT: rscs r0, r3, #0
2347 ; CHECK-FP16-NEXT: movwlt r5, #1
2348 ; CHECK-FP16-NEXT: cmp r5, #0
2349 ; CHECK-FP16-NEXT: moveq r4, r5
2350 ; CHECK-FP16-NEXT: cmp r7, #0
2351 ; CHECK-FP16-NEXT: movne r7, r8
2352 ; CHECK-FP16-NEXT: vmov.32 d0[0], r4
2353 ; CHECK-FP16-NEXT: cmp r5, #0
2354 ; CHECK-FP16-NEXT: vmov.32 d1[1], r7
2355 ; CHECK-FP16-NEXT: movne r5, r1
2356 ; CHECK-FP16-NEXT: vmov.32 d0[1], r5
2357 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
2820 ; CHECK-FP16-LABEL: stest_f16i32_mm:
2821 ; CHECK-FP16: @ %bb.0: @ %entry
2822 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
2823 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
2824 ; CHECK-FP16-NEXT: .vsave {d8, d9}
2825 ; CHECK-FP16-NEXT: vpush {d8, d9}
2826 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[3]
2827 ; CHECK-FP16-NEXT: vorr d8, d0, d0
2828 ; CHECK-FP16-NEXT: vmov s0, r0
2829 ; CHECK-FP16-NEXT: bl __fixhfdi
2830 ; CHECK-FP16-NEXT: mov r4, r0
2831 ; CHECK-FP16-NEXT: vmov.u16 r0, d8[2]
2832 ; CHECK-FP16-NEXT: vmov.u16 r2, d8[0]
2833 ; CHECK-FP16-NEXT: cmn r4, #-2147483647
2834 ; CHECK-FP16-NEXT: mvn r7, #-2147483648
2835 ; CHECK-FP16-NEXT: mov r9, #0
2836 ; CHECK-FP16-NEXT: mov r8, #-2147483648
2837 ; CHECK-FP16-NEXT: vmov s18, r0
2838 ; CHECK-FP16-NEXT: mvn r0, #-2147483648
2839 ; CHECK-FP16-NEXT: movlo r0, r4
2840 ; CHECK-FP16-NEXT: cmp r1, #0
2841 ; CHECK-FP16-NEXT: movpl r4, r7
2842 ; CHECK-FP16-NEXT: movpl r1, r9
2843 ; CHECK-FP16-NEXT: moveq r4, r0
2844 ; CHECK-FP16-NEXT: cmn r1, #1
2845 ; CHECK-FP16-NEXT: mov r0, #-2147483648
2846 ; CHECK-FP16-NEXT: vmov s0, r2
2847 ; CHECK-FP16-NEXT: movgt r0, r4
2848 ; CHECK-FP16-NEXT: cmp r4, #-2147483648
2849 ; CHECK-FP16-NEXT: movls r4, r8
2850 ; CHECK-FP16-NEXT: cmn r1, #1
2851 ; CHECK-FP16-NEXT: movne r4, r0
2852 ; CHECK-FP16-NEXT: bl __fixhfdi
2853 ; CHECK-FP16-NEXT: vmov.f32 s0, s18
2854 ; CHECK-FP16-NEXT: mov r5, r0
2855 ; CHECK-FP16-NEXT: cmn r0, #-2147483647
2856 ; CHECK-FP16-NEXT: mvn r0, #-2147483648
2857 ; CHECK-FP16-NEXT: movlo r0, r5
2858 ; CHECK-FP16-NEXT: cmp r1, #0
2859 ; CHECK-FP16-NEXT: movpl r5, r7
2860 ; CHECK-FP16-NEXT: movpl r1, r9
2861 ; CHECK-FP16-NEXT: moveq r5, r0
2862 ; CHECK-FP16-NEXT: cmn r1, #1
2863 ; CHECK-FP16-NEXT: mov r0, #-2147483648
2864 ; CHECK-FP16-NEXT: movgt r0, r5
2865 ; CHECK-FP16-NEXT: cmp r5, #-2147483648
2866 ; CHECK-FP16-NEXT: movls r5, r8
2867 ; CHECK-FP16-NEXT: cmn r1, #1
2868 ; CHECK-FP16-NEXT: movne r5, r0
2869 ; CHECK-FP16-NEXT: bl __fixhfdi
2870 ; CHECK-FP16-NEXT: vmov.u16 r2, d8[1]
2871 ; CHECK-FP16-NEXT: mov r6, r0
2872 ; CHECK-FP16-NEXT: cmn r0, #-2147483647
2873 ; CHECK-FP16-NEXT: mvn r0, #-2147483648
2874 ; CHECK-FP16-NEXT: movlo r0, r6
2875 ; CHECK-FP16-NEXT: cmp r1, #0
2876 ; CHECK-FP16-NEXT: movpl r6, r7
2877 ; CHECK-FP16-NEXT: movpl r1, r9
2878 ; CHECK-FP16-NEXT: moveq r6, r0
2879 ; CHECK-FP16-NEXT: cmn r1, #1
2880 ; CHECK-FP16-NEXT: mov r0, #-2147483648
2881 ; CHECK-FP16-NEXT: movgt r0, r6
2882 ; CHECK-FP16-NEXT: cmp r6, #-2147483648
2883 ; CHECK-FP16-NEXT: movls r6, r8
2884 ; CHECK-FP16-NEXT: cmn r1, #1
2885 ; CHECK-FP16-NEXT: movne r6, r0
2886 ; CHECK-FP16-NEXT: vmov s0, r2
2887 ; CHECK-FP16-NEXT: bl __fixhfdi
2888 ; CHECK-FP16-NEXT: cmn r0, #-2147483647
2889 ; CHECK-FP16-NEXT: mvn r2, #-2147483648
2890 ; CHECK-FP16-NEXT: movlo r2, r0
2891 ; CHECK-FP16-NEXT: cmp r1, #0
2892 ; CHECK-FP16-NEXT: movmi r7, r0
2893 ; CHECK-FP16-NEXT: movmi r9, r1
2894 ; CHECK-FP16-NEXT: moveq r7, r2
2895 ; CHECK-FP16-NEXT: cmn r9, #1
2896 ; CHECK-FP16-NEXT: mov r0, #-2147483648
2897 ; CHECK-FP16-NEXT: vmov.32 d1[0], r6
2898 ; CHECK-FP16-NEXT: movgt r0, r7
2899 ; CHECK-FP16-NEXT: cmp r7, #-2147483648
2900 ; CHECK-FP16-NEXT: vmov.32 d0[0], r5
2901 ; CHECK-FP16-NEXT: movls r7, r8
2902 ; CHECK-FP16-NEXT: cmn r9, #1
2903 ; CHECK-FP16-NEXT: vmov.32 d1[1], r4
2904 ; CHECK-FP16-NEXT: movne r7, r0
2905 ; CHECK-FP16-NEXT: vmov.32 d0[1], r7
2906 ; CHECK-FP16-NEXT: vpop {d8, d9}
2907 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
2962 ; CHECK-FP16-LABEL: utesth_f16i32_mm:
2963 ; CHECK-FP16: @ %bb.0: @ %entry
2964 ; CHECK-FP16-NEXT: .save {r4, r5, r6, lr}
2965 ; CHECK-FP16-NEXT: push {r4, r5, r6, lr}
2966 ; CHECK-FP16-NEXT: .vsave {d10, d11, d12, d13}
2967 ; CHECK-FP16-NEXT: vpush {d10, d11, d12, d13}
2968 ; CHECK-FP16-NEXT: .vsave {d8}
2969 ; CHECK-FP16-NEXT: vpush {d8}
2970 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[1]
2971 ; CHECK-FP16-NEXT: vorr d8, d0, d0
2972 ; CHECK-FP16-NEXT: vmov.u16 r6, d0[3]
2973 ; CHECK-FP16-NEXT: vmov s0, r0
2974 ; CHECK-FP16-NEXT: bl __fixunshfdi
2975 ; CHECK-FP16-NEXT: mov r4, r1
2976 ; CHECK-FP16-NEXT: vmov.u16 r1, d8[2]
2977 ; CHECK-FP16-NEXT: vmov.32 d11[0], r0
2978 ; CHECK-FP16-NEXT: vmov s0, r1
2979 ; CHECK-FP16-NEXT: bl __fixunshfdi
2980 ; CHECK-FP16-NEXT: vmov s0, r6
2981 ; CHECK-FP16-NEXT: mov r5, r1
2982 ; CHECK-FP16-NEXT: vmov.32 d12[0], r0
2983 ; CHECK-FP16-NEXT: bl __fixunshfdi
2984 ; CHECK-FP16-NEXT: mov r6, r1
2985 ; CHECK-FP16-NEXT: vmov.u16 r1, d8[0]
2986 ; CHECK-FP16-NEXT: vmov.32 d13[0], r0
2987 ; CHECK-FP16-NEXT: vmov s0, r1
2988 ; CHECK-FP16-NEXT: bl __fixunshfdi
2989 ; CHECK-FP16-NEXT: vmov.32 d10[0], r0
2990 ; CHECK-FP16-NEXT: vmov.i64 q8, #0xffffffff
2991 ; CHECK-FP16-NEXT: vmov.32 d13[1], r6
2992 ; CHECK-FP16-NEXT: vmov.32 d11[1], r4
2993 ; CHECK-FP16-NEXT: vmov.32 d12[1], r5
2994 ; CHECK-FP16-NEXT: vmov.32 d10[1], r1
2995 ; CHECK-FP16-NEXT: vqsub.u64 q9, q6, q8
2996 ; CHECK-FP16-NEXT: vqsub.u64 q8, q5, q8
2997 ; CHECK-FP16-NEXT: vsub.i64 q9, q6, q9
2998 ; CHECK-FP16-NEXT: vsub.i64 q8, q5, q8
2999 ; CHECK-FP16-NEXT: vmovn.i64 d1, q9
3000 ; CHECK-FP16-NEXT: vmovn.i64 d0, q8
3001 ; CHECK-FP16-NEXT: vpop {d8}
3002 ; CHECK-FP16-NEXT: vpop {d10, d11, d12, d13}
3003 ; CHECK-FP16-NEXT: pop {r4, r5, r6, pc}
3090 ; CHECK-FP16-LABEL: ustest_f16i32_mm:
3091 ; CHECK-FP16: @ %bb.0: @ %entry
3092 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r8, lr}
3093 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r8, lr}
3094 ; CHECK-FP16-NEXT: .vsave {d8, d9}
3095 ; CHECK-FP16-NEXT: vpush {d8, d9}
3096 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[3]
3097 ; CHECK-FP16-NEXT: vorr d8, d0, d0
3098 ; CHECK-FP16-NEXT: vmov s0, r0
3099 ; CHECK-FP16-NEXT: bl __fixhfdi
3100 ; CHECK-FP16-NEXT: vmov.u16 r2, d8[1]
3101 ; CHECK-FP16-NEXT: cmp r1, #0
3102 ; CHECK-FP16-NEXT: vmov.u16 r7, d8[0]
3103 ; CHECK-FP16-NEXT: mov r5, #0
3104 ; CHECK-FP16-NEXT: vmov.u16 r3, d8[2]
3105 ; CHECK-FP16-NEXT: movpl r1, r5
3106 ; CHECK-FP16-NEXT: mov r6, #0
3107 ; CHECK-FP16-NEXT: mvn r8, #0
3108 ; CHECK-FP16-NEXT: vmov s16, r2
3109 ; CHECK-FP16-NEXT: mvn r2, #0
3110 ; CHECK-FP16-NEXT: movmi r2, r0
3111 ; CHECK-FP16-NEXT: vmov s0, r7
3112 ; CHECK-FP16-NEXT: moveq r2, r0
3113 ; CHECK-FP16-NEXT: cmp r1, #0
3114 ; CHECK-FP16-NEXT: movwgt r6, #1
3115 ; CHECK-FP16-NEXT: cmp r6, #0
3116 ; CHECK-FP16-NEXT: movne r6, r2
3117 ; CHECK-FP16-NEXT: cmp r1, #0
3118 ; CHECK-FP16-NEXT: vmov s18, r3
3119 ; CHECK-FP16-NEXT: moveq r6, r2
3120 ; CHECK-FP16-NEXT: bl __fixhfdi
3121 ; CHECK-FP16-NEXT: vmov.f32 s0, s18
3122 ; CHECK-FP16-NEXT: cmp r1, #0
3123 ; CHECK-FP16-NEXT: mvn r2, #0
3124 ; CHECK-FP16-NEXT: movpl r1, r5
3125 ; CHECK-FP16-NEXT: movmi r2, r0
3126 ; CHECK-FP16-NEXT: mov r7, #0
3127 ; CHECK-FP16-NEXT: moveq r2, r0
3128 ; CHECK-FP16-NEXT: cmp r1, #0
3129 ; CHECK-FP16-NEXT: movwgt r7, #1
3130 ; CHECK-FP16-NEXT: cmp r7, #0
3131 ; CHECK-FP16-NEXT: movne r7, r2
3132 ; CHECK-FP16-NEXT: cmp r1, #0
3133 ; CHECK-FP16-NEXT: moveq r7, r2
3134 ; CHECK-FP16-NEXT: bl __fixhfdi
3135 ; CHECK-FP16-NEXT: vmov.f32 s0, s16
3136 ; CHECK-FP16-NEXT: cmp r1, #0
3137 ; CHECK-FP16-NEXT: mvn r2, #0
3138 ; CHECK-FP16-NEXT: movpl r1, r5
3139 ; CHECK-FP16-NEXT: movmi r2, r0
3140 ; CHECK-FP16-NEXT: mov r4, #0
3141 ; CHECK-FP16-NEXT: moveq r2, r0
3142 ; CHECK-FP16-NEXT: cmp r1, #0
3143 ; CHECK-FP16-NEXT: movwgt r4, #1
3144 ; CHECK-FP16-NEXT: cmp r4, #0
3145 ; CHECK-FP16-NEXT: movne r4, r2
3146 ; CHECK-FP16-NEXT: cmp r1, #0
3147 ; CHECK-FP16-NEXT: moveq r4, r2
3148 ; CHECK-FP16-NEXT: bl __fixhfdi
3149 ; CHECK-FP16-NEXT: cmp r1, #0
3150 ; CHECK-FP16-NEXT: vmov.32 d1[0], r4
3151 ; CHECK-FP16-NEXT: movmi r8, r0
3152 ; CHECK-FP16-NEXT: movpl r1, r5
3153 ; CHECK-FP16-NEXT: moveq r8, r0
3154 ; CHECK-FP16-NEXT: cmp r1, #0
3155 ; CHECK-FP16-NEXT: movwgt r5, #1
3156 ; CHECK-FP16-NEXT: cmp r5, #0
3157 ; CHECK-FP16-NEXT: vmov.32 d0[0], r7
3158 ; CHECK-FP16-NEXT: movne r5, r8
3159 ; CHECK-FP16-NEXT: cmp r1, #0
3160 ; CHECK-FP16-NEXT: vmov.32 d1[1], r6
3161 ; CHECK-FP16-NEXT: moveq r5, r8
3162 ; CHECK-FP16-NEXT: vmov.32 d0[1], r5
3163 ; CHECK-FP16-NEXT: vpop {d8, d9}
3164 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r8, pc}
3367 ; CHECK-FP16-LABEL: stest_f16i16_mm:
3368 ; CHECK-FP16: @ %bb.0: @ %entry
3369 ; CHECK-FP16-NEXT: vmovx.f16 s4, s0
3370 ; CHECK-FP16-NEXT: vcvt.s32.f16 s12, s0
3371 ; CHECK-FP16-NEXT: vcvt.s32.f16 s0, s3
3372 ; CHECK-FP16-NEXT: vcvt.s32.f16 s5, s2
3373 ; CHECK-FP16-NEXT: vmov r0, s0
3374 ; CHECK-FP16-NEXT: vcvt.s32.f16 s14, s1
3375 ; CHECK-FP16-NEXT: vmovx.f16 s10, s3
3376 ; CHECK-FP16-NEXT: vmovx.f16 s8, s2
3377 ; CHECK-FP16-NEXT: vcvt.s32.f16 s10, s10
3378 ; CHECK-FP16-NEXT: vcvt.s32.f16 s8, s8
3379 ; CHECK-FP16-NEXT: vmovx.f16 s6, s1
3380 ; CHECK-FP16-NEXT: vcvt.s32.f16 s4, s4
3381 ; CHECK-FP16-NEXT: vcvt.s32.f16 s6, s6
3382 ; CHECK-FP16-NEXT: vmov.i32 q10, #0x7fff
3383 ; CHECK-FP16-NEXT: vmvn.i32 q11, #0x7fff
3384 ; CHECK-FP16-NEXT: vmov.32 d17[0], r0
3385 ; CHECK-FP16-NEXT: vmov r0, s5
3386 ; CHECK-FP16-NEXT: vmov.32 d16[0], r0
3387 ; CHECK-FP16-NEXT: vmov r0, s14
3388 ; CHECK-FP16-NEXT: vmov.32 d19[0], r0
3389 ; CHECK-FP16-NEXT: vmov r0, s12
3390 ; CHECK-FP16-NEXT: vmov.32 d18[0], r0
3391 ; CHECK-FP16-NEXT: vmov r0, s10
3392 ; CHECK-FP16-NEXT: vmov.32 d17[1], r0
3393 ; CHECK-FP16-NEXT: vmov r0, s8
3394 ; CHECK-FP16-NEXT: vmov.32 d16[1], r0
3395 ; CHECK-FP16-NEXT: vmov r0, s6
3396 ; CHECK-FP16-NEXT: vmin.s32 q8, q8, q10
3397 ; CHECK-FP16-NEXT: vmax.s32 q8, q8, q11
3398 ; CHECK-FP16-NEXT: vmovn.i32 d1, q8
3399 ; CHECK-FP16-NEXT: vmov.32 d19[1], r0
3400 ; CHECK-FP16-NEXT: vmov r0, s4
3401 ; CHECK-FP16-NEXT: vmov.32 d18[1], r0
3402 ; CHECK-FP16-NEXT: vmin.s32 q9, q9, q10
3403 ; CHECK-FP16-NEXT: vmax.s32 q9, q9, q11
3404 ; CHECK-FP16-NEXT: vmovn.i32 d0, q9
3405 ; CHECK-FP16-NEXT: bx lr
3489 ; CHECK-FP16-LABEL: utesth_f16i16_mm:
3490 ; CHECK-FP16: @ %bb.0: @ %entry
3491 ; CHECK-FP16-NEXT: vmovx.f16 s4, s0
3492 ; CHECK-FP16-NEXT: vcvt.u32.f16 s12, s0
3493 ; CHECK-FP16-NEXT: vcvt.u32.f16 s0, s3
3494 ; CHECK-FP16-NEXT: vcvt.u32.f16 s5, s2
3495 ; CHECK-FP16-NEXT: vmov r0, s0
3496 ; CHECK-FP16-NEXT: vcvt.u32.f16 s14, s1
3497 ; CHECK-FP16-NEXT: vmovx.f16 s10, s3
3498 ; CHECK-FP16-NEXT: vmovx.f16 s8, s2
3499 ; CHECK-FP16-NEXT: vcvt.u32.f16 s10, s10
3500 ; CHECK-FP16-NEXT: vcvt.u32.f16 s8, s8
3501 ; CHECK-FP16-NEXT: vmovx.f16 s6, s1
3502 ; CHECK-FP16-NEXT: vcvt.u32.f16 s4, s4
3503 ; CHECK-FP16-NEXT: vcvt.u32.f16 s6, s6
3504 ; CHECK-FP16-NEXT: vmov.i32 q10, #0xffff
3505 ; CHECK-FP16-NEXT: vmov.32 d17[0], r0
3506 ; CHECK-FP16-NEXT: vmov r0, s5
3507 ; CHECK-FP16-NEXT: vmov.32 d16[0], r0
3508 ; CHECK-FP16-NEXT: vmov r0, s14
3509 ; CHECK-FP16-NEXT: vmov.32 d19[0], r0
3510 ; CHECK-FP16-NEXT: vmov r0, s12
3511 ; CHECK-FP16-NEXT: vmov.32 d18[0], r0
3512 ; CHECK-FP16-NEXT: vmov r0, s10
3513 ; CHECK-FP16-NEXT: vmov.32 d17[1], r0
3514 ; CHECK-FP16-NEXT: vmov r0, s8
3515 ; CHECK-FP16-NEXT: vmov.32 d16[1], r0
3516 ; CHECK-FP16-NEXT: vmov r0, s6
3517 ; CHECK-FP16-NEXT: vmin.u32 q8, q8, q10
3518 ; CHECK-FP16-NEXT: vmovn.i32 d1, q8
3519 ; CHECK-FP16-NEXT: vmov.32 d19[1], r0
3520 ; CHECK-FP16-NEXT: vmov r0, s4
3521 ; CHECK-FP16-NEXT: vmov.32 d18[1], r0
3522 ; CHECK-FP16-NEXT: vmin.u32 q9, q9, q10
3523 ; CHECK-FP16-NEXT: vmovn.i32 d0, q9
3524 ; CHECK-FP16-NEXT: bx lr
3610 ; CHECK-FP16-LABEL: ustest_f16i16_mm:
3611 ; CHECK-FP16: @ %bb.0: @ %entry
3612 ; CHECK-FP16-NEXT: vmovx.f16 s4, s0
3613 ; CHECK-FP16-NEXT: vcvt.s32.f16 s12, s0
3614 ; CHECK-FP16-NEXT: vcvt.s32.f16 s0, s3
3615 ; CHECK-FP16-NEXT: vcvt.s32.f16 s5, s2
3616 ; CHECK-FP16-NEXT: vmov r0, s0
3617 ; CHECK-FP16-NEXT: vcvt.s32.f16 s14, s1
3618 ; CHECK-FP16-NEXT: vmovx.f16 s10, s3
3619 ; CHECK-FP16-NEXT: vmovx.f16 s8, s2
3620 ; CHECK-FP16-NEXT: vcvt.s32.f16 s10, s10
3621 ; CHECK-FP16-NEXT: vcvt.s32.f16 s8, s8
3622 ; CHECK-FP16-NEXT: vmovx.f16 s6, s1
3623 ; CHECK-FP16-NEXT: vcvt.s32.f16 s4, s4
3624 ; CHECK-FP16-NEXT: vcvt.s32.f16 s6, s6
3625 ; CHECK-FP16-NEXT: vmov.i32 q10, #0xffff
3626 ; CHECK-FP16-NEXT: vmov.i32 q11, #0x0
3627 ; CHECK-FP16-NEXT: vmov.32 d17[0], r0
3628 ; CHECK-FP16-NEXT: vmov r0, s5
3629 ; CHECK-FP16-NEXT: vmov.32 d16[0], r0
3630 ; CHECK-FP16-NEXT: vmov r0, s14
3631 ; CHECK-FP16-NEXT: vmov.32 d19[0], r0
3632 ; CHECK-FP16-NEXT: vmov r0, s12
3633 ; CHECK-FP16-NEXT: vmov.32 d18[0], r0
3634 ; CHECK-FP16-NEXT: vmov r0, s10
3635 ; CHECK-FP16-NEXT: vmov.32 d17[1], r0
3636 ; CHECK-FP16-NEXT: vmov r0, s8
3637 ; CHECK-FP16-NEXT: vmov.32 d16[1], r0
3638 ; CHECK-FP16-NEXT: vmov r0, s6
3639 ; CHECK-FP16-NEXT: vmin.s32 q8, q8, q10
3640 ; CHECK-FP16-NEXT: vmax.s32 q8, q8, q11
3641 ; CHECK-FP16-NEXT: vmovn.i32 d1, q8
3642 ; CHECK-FP16-NEXT: vmov.32 d19[1], r0
3643 ; CHECK-FP16-NEXT: vmov r0, s4
3644 ; CHECK-FP16-NEXT: vmov.32 d18[1], r0
3645 ; CHECK-FP16-NEXT: vmin.s32 q9, q9, q10
3646 ; CHECK-FP16-NEXT: vmax.s32 q9, q9, q11
3647 ; CHECK-FP16-NEXT: vmovn.i32 d0, q9
3648 ; CHECK-FP16-NEXT: bx lr
4326 ; CHECK-FP16-LABEL: stest_f16i64_mm:
4327 ; CHECK-FP16: @ %bb.0: @ %entry
4328 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}
4329 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
4330 ; CHECK-FP16-NEXT: .pad #4
4331 ; CHECK-FP16-NEXT: sub sp, sp, #4
4332 ; CHECK-FP16-NEXT: .vsave {d8}
4333 ; CHECK-FP16-NEXT: vpush {d8}
4334 ; CHECK-FP16-NEXT: .pad #16
4335 ; CHECK-FP16-NEXT: sub sp, sp, #16
4336 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[1]
4337 ; CHECK-FP16-NEXT: vorr d8, d0, d0
4338 ; CHECK-FP16-NEXT: vmov s0, r0
4339 ; CHECK-FP16-NEXT: bl __fixhfti
4340 ; CHECK-FP16-NEXT: str r0, [sp, #12] @ 4-byte Spill
4341 ; CHECK-FP16-NEXT: cmp r3, #0
4342 ; CHECK-FP16-NEXT: mov r0, r3
4343 ; CHECK-FP16-NEXT: mov r10, #0
4344 ; CHECK-FP16-NEXT: andne r0, r2, r0, asr #31
4345 ; CHECK-FP16-NEXT: mov r11, r1
4346 ; CHECK-FP16-NEXT: movmi r10, r3
4347 ; CHECK-FP16-NEXT: and r1, r0, r10
4348 ; CHECK-FP16-NEXT: cmn r11, #-2147483647
4349 ; CHECK-FP16-NEXT: mvn r0, #-2147483648
4350 ; CHECK-FP16-NEXT: movlo r0, r11
4351 ; CHECK-FP16-NEXT: cmp r3, #0
4352 ; CHECK-FP16-NEXT: mvn r8, #-2147483648
4353 ; CHECK-FP16-NEXT: mov r9, #-2147483648
4354 ; CHECK-FP16-NEXT: movmi r8, r11
4355 ; CHECK-FP16-NEXT: orrs r2, r2, r3
4356 ; CHECK-FP16-NEXT: moveq r8, r0
4357 ; CHECK-FP16-NEXT: cmn r10, #1
4358 ; CHECK-FP16-NEXT: mov r0, #-2147483648
4359 ; CHECK-FP16-NEXT: mov r6, r3
4360 ; CHECK-FP16-NEXT: movgt r0, r8
4361 ; CHECK-FP16-NEXT: cmp r8, #-2147483648
4362 ; CHECK-FP16-NEXT: movhi r9, r8
4363 ; CHECK-FP16-NEXT: cmn r1, #1
4364 ; CHECK-FP16-NEXT: movne r9, r0
4365 ; CHECK-FP16-NEXT: vmov.u16 r0, d8[0]
4366 ; CHECK-FP16-NEXT: str r1, [sp, #8] @ 4-byte Spill
4367 ; CHECK-FP16-NEXT: mvn r7, #-2147483648
4368 ; CHECK-FP16-NEXT: str r2, [sp, #4] @ 4-byte Spill
4369 ; CHECK-FP16-NEXT: vmov s0, r0
4370 ; CHECK-FP16-NEXT: bl __fixhfti
4371 ; CHECK-FP16-NEXT: cmn r1, #-2147483647
4372 ; CHECK-FP16-NEXT: mvn r5, #0
4373 ; CHECK-FP16-NEXT: movlo r5, r0
4374 ; CHECK-FP16-NEXT: mvn r4, #0
4375 ; CHECK-FP16-NEXT: moveq r5, r0
4376 ; CHECK-FP16-NEXT: cmp r3, #0
4377 ; CHECK-FP16-NEXT: movpl r0, r4
4378 ; CHECK-FP16-NEXT: orrs r12, r2, r3
4379 ; CHECK-FP16-NEXT: moveq r0, r5
4380 ; CHECK-FP16-NEXT: cmn r1, #-2147483647
4381 ; CHECK-FP16-NEXT: mvn r5, #-2147483648
4382 ; CHECK-FP16-NEXT: movlo r5, r1
4383 ; CHECK-FP16-NEXT: cmp r3, #0
4384 ; CHECK-FP16-NEXT: movmi r7, r1
4385 ; CHECK-FP16-NEXT: cmp r12, #0
4386 ; CHECK-FP16-NEXT: moveq r7, r5
4387 ; CHECK-FP16-NEXT: cmp r7, #-2147483648
4388 ; CHECK-FP16-NEXT: mov r1, #0
4389 ; CHECK-FP16-NEXT: ldr r5, [sp, #12] @ 4-byte Reload
4390 ; CHECK-FP16-NEXT: movhi r1, r0
4391 ; CHECK-FP16-NEXT: mov r12, #0
4392 ; CHECK-FP16-NEXT: moveq r1, r0
4393 ; CHECK-FP16-NEXT: cmp r6, #0
4394 ; CHECK-FP16-NEXT: mvn r6, #0
4395 ; CHECK-FP16-NEXT: movmi r6, r5
4396 ; CHECK-FP16-NEXT: cmn r11, #-2147483647
4397 ; CHECK-FP16-NEXT: movlo r4, r5
4398 ; CHECK-FP16-NEXT: moveq r4, r5
4399 ; CHECK-FP16-NEXT: ldr r5, [sp, #4] @ 4-byte Reload
4400 ; CHECK-FP16-NEXT: cmp r5, #0
4401 ; CHECK-FP16-NEXT: ldr r5, [sp, #8] @ 4-byte Reload
4402 ; CHECK-FP16-NEXT: movne r4, r6
4403 ; CHECK-FP16-NEXT: cmp r8, #-2147483648
4404 ; CHECK-FP16-NEXT: mov r6, #0
4405 ; CHECK-FP16-NEXT: movhi r6, r4
4406 ; CHECK-FP16-NEXT: moveq r6, r4
4407 ; CHECK-FP16-NEXT: cmn r10, #1
4408 ; CHECK-FP16-NEXT: movle r4, r12
4409 ; CHECK-FP16-NEXT: cmn r5, #1
4410 ; CHECK-FP16-NEXT: moveq r4, r6
4411 ; CHECK-FP16-NEXT: cmp r3, #0
4412 ; CHECK-FP16-NEXT: mov r6, #0
4413 ; CHECK-FP16-NEXT: vmov.32 d1[0], r4
4414 ; CHECK-FP16-NEXT: movmi r6, r3
4415 ; CHECK-FP16-NEXT: cmn r6, #1
4416 ; CHECK-FP16-NEXT: movle r0, r12
4417 ; CHECK-FP16-NEXT: cmp r3, #0
4418 ; CHECK-FP16-NEXT: andne r3, r2, r3, asr #31
4419 ; CHECK-FP16-NEXT: and r2, r3, r6
4420 ; CHECK-FP16-NEXT: cmn r2, #1
4421 ; CHECK-FP16-NEXT: moveq r0, r1
4422 ; CHECK-FP16-NEXT: cmn r6, #1
4423 ; CHECK-FP16-NEXT: mov r1, #-2147483648
4424 ; CHECK-FP16-NEXT: vmov.32 d0[0], r0
4425 ; CHECK-FP16-NEXT: movgt r1, r7
4426 ; CHECK-FP16-NEXT: cmp r7, #-2147483648
4427 ; CHECK-FP16-NEXT: mov r0, #-2147483648
4428 ; CHECK-FP16-NEXT: vmov.32 d1[1], r9
4429 ; CHECK-FP16-NEXT: movls r7, r0
4430 ; CHECK-FP16-NEXT: cmn r2, #1
4431 ; CHECK-FP16-NEXT: movne r7, r1
4432 ; CHECK-FP16-NEXT: vmov.32 d0[1], r7
4433 ; CHECK-FP16-NEXT: add sp, sp, #16
4434 ; CHECK-FP16-NEXT: vpop {d8}
4435 ; CHECK-FP16-NEXT: add sp, sp, #4
4436 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
4498 ; CHECK-FP16-LABEL: utesth_f16i64_mm:
4499 ; CHECK-FP16: @ %bb.0: @ %entry
4500 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r11, lr}
4501 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r11, lr}
4502 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[1]
4503 ; CHECK-FP16-NEXT: vmov.u16 r5, d0[0]
4504 ; CHECK-FP16-NEXT: vmov s0, r0
4505 ; CHECK-FP16-NEXT: bl __fixunshfti
4506 ; CHECK-FP16-NEXT: mov r7, r1
4507 ; CHECK-FP16-NEXT: eor r1, r2, #1
4508 ; CHECK-FP16-NEXT: subs r2, r2, #1
4509 ; CHECK-FP16-NEXT: mov r6, #0
4510 ; CHECK-FP16-NEXT: sbcs r2, r3, #0
4511 ; CHECK-FP16-NEXT: orr r1, r1, r3
4512 ; CHECK-FP16-NEXT: movwlo r6, #1
4513 ; CHECK-FP16-NEXT: cmp r6, #0
4514 ; CHECK-FP16-NEXT: moveq r7, r6
4515 ; CHECK-FP16-NEXT: cmp r1, #0
4516 ; CHECK-FP16-NEXT: vmov s0, r5
4517 ; CHECK-FP16-NEXT: moveq r7, r1
4518 ; CHECK-FP16-NEXT: cmp r6, #0
4519 ; CHECK-FP16-NEXT: mov r5, #0
4520 ; CHECK-FP16-NEXT: movne r6, r0
4521 ; CHECK-FP16-NEXT: cmp r1, #0
4522 ; CHECK-FP16-NEXT: moveq r6, r1
4523 ; CHECK-FP16-NEXT: bl __fixunshfti
4524 ; CHECK-FP16-NEXT: eor r4, r2, #1
4525 ; CHECK-FP16-NEXT: subs r2, r2, #1
4526 ; CHECK-FP16-NEXT: sbcs r2, r3, #0
4527 ; CHECK-FP16-NEXT: orr r4, r4, r3
4528 ; CHECK-FP16-NEXT: movwlo r5, #1
4529 ; CHECK-FP16-NEXT: cmp r5, #0
4530 ; CHECK-FP16-NEXT: moveq r0, r5
4531 ; CHECK-FP16-NEXT: cmp r4, #0
4532 ; CHECK-FP16-NEXT: moveq r0, r4
4533 ; CHECK-FP16-NEXT: vmov.32 d1[0], r6
4534 ; CHECK-FP16-NEXT: cmp r5, #0
4535 ; CHECK-FP16-NEXT: vmov.32 d0[0], r0
4536 ; CHECK-FP16-NEXT: movne r5, r1
4537 ; CHECK-FP16-NEXT: cmp r4, #0
4538 ; CHECK-FP16-NEXT: vmov.32 d1[1], r7
4539 ; CHECK-FP16-NEXT: moveq r5, r4
4540 ; CHECK-FP16-NEXT: vmov.32 d0[1], r5
4541 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r11, pc}
4653 ; CHECK-FP16-LABEL: ustest_f16i64_mm:
4654 ; CHECK-FP16: @ %bb.0: @ %entry
4655 ; CHECK-FP16-NEXT: .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}
4656 ; CHECK-FP16-NEXT: push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
4657 ; CHECK-FP16-NEXT: .pad #4
4658 ; CHECK-FP16-NEXT: sub sp, sp, #4
4659 ; CHECK-FP16-NEXT: .vsave {d8}
4660 ; CHECK-FP16-NEXT: vpush {d8}
4661 ; CHECK-FP16-NEXT: vmov.u16 r0, d0[0]
4662 ; CHECK-FP16-NEXT: vorr d8, d0, d0
4663 ; CHECK-FP16-NEXT: vmov s0, r0
4664 ; CHECK-FP16-NEXT: bl __fixhfti
4665 ; CHECK-FP16-NEXT: subs r7, r2, #1
4666 ; CHECK-FP16-NEXT: mov r10, r0
4667 ; CHECK-FP16-NEXT: eor r0, r2, #1
4668 ; CHECK-FP16-NEXT: sbcs r7, r3, #0
4669 ; CHECK-FP16-NEXT: mov r5, #0
4670 ; CHECK-FP16-NEXT: orr r0, r0, r3
4671 ; CHECK-FP16-NEXT: movwlt r5, #1
4672 ; CHECK-FP16-NEXT: cmp r5, #0
4673 ; CHECK-FP16-NEXT: moveq r10, r5
4674 ; CHECK-FP16-NEXT: cmp r0, #0
4675 ; CHECK-FP16-NEXT: moveq r10, r0
4676 ; CHECK-FP16-NEXT: cmp r5, #0
4677 ; CHECK-FP16-NEXT: movne r5, r1
4678 ; CHECK-FP16-NEXT: cmp r0, #0
4679 ; CHECK-FP16-NEXT: moveq r5, r0
4680 ; CHECK-FP16-NEXT: cmp r5, #0
4681 ; CHECK-FP16-NEXT: mov r0, r5
4682 ; CHECK-FP16-NEXT: mov r1, #1
4683 ; CHECK-FP16-NEXT: movne r0, r10
4684 ; CHECK-FP16-NEXT: mov r8, #1
4685 ; CHECK-FP16-NEXT: moveq r0, r10
4686 ; CHECK-FP16-NEXT: cmp r2, #1
4687 ; CHECK-FP16-NEXT: movlo r1, r2
4688 ; CHECK-FP16-NEXT: cmp r3, #0
4689 ; CHECK-FP16-NEXT: movpl r2, r8
4690 ; CHECK-FP16-NEXT: mov r11, #0
4691 ; CHECK-FP16-NEXT: moveq r2, r1
4692 ; CHECK-FP16-NEXT: movpl r3, r11
4693 ; CHECK-FP16-NEXT: rsbs r1, r2, #0
4694 ; CHECK-FP16-NEXT: mov r7, #0
4695 ; CHECK-FP16-NEXT: rscs r1, r3, #0
4696 ; CHECK-FP16-NEXT: vmov.u16 r1, d8[1]
4697 ; CHECK-FP16-NEXT: movwlt r7, #1
4698 ; CHECK-FP16-NEXT: cmp r7, #0
4699 ; CHECK-FP16-NEXT: moveq r10, r7
4700 ; CHECK-FP16-NEXT: orrs r9, r2, r3
4701 ; CHECK-FP16-NEXT: moveq r10, r0
4702 ; CHECK-FP16-NEXT: vmov s0, r1
4703 ; CHECK-FP16-NEXT: bl __fixhfti
4704 ; CHECK-FP16-NEXT: eor r4, r2, #1
4705 ; CHECK-FP16-NEXT: orr r6, r4, r3
4706 ; CHECK-FP16-NEXT: subs r4, r2, #1
4707 ; CHECK-FP16-NEXT: sbcs r4, r3, #0
4708 ; CHECK-FP16-NEXT: mov r4, #0
4709 ; CHECK-FP16-NEXT: movwlt r4, #1
4710 ; CHECK-FP16-NEXT: cmp r4, #0
4711 ; CHECK-FP16-NEXT: moveq r0, r4
4712 ; CHECK-FP16-NEXT: cmp r6, #0
4713 ; CHECK-FP16-NEXT: moveq r0, r6
4714 ; CHECK-FP16-NEXT: cmp r4, #0
4715 ; CHECK-FP16-NEXT: movne r4, r1
4716 ; CHECK-FP16-NEXT: cmp r6, #0
4717 ; CHECK-FP16-NEXT: moveq r4, r6
4718 ; CHECK-FP16-NEXT: cmp r4, #0
4719 ; CHECK-FP16-NEXT: mov r1, r4
4720 ; CHECK-FP16-NEXT: mov r6, #1
4721 ; CHECK-FP16-NEXT: movne r1, r0
4722 ; CHECK-FP16-NEXT: moveq r1, r0
4723 ; CHECK-FP16-NEXT: cmp r2, #1
4724 ; CHECK-FP16-NEXT: movlo r6, r2
4725 ; CHECK-FP16-NEXT: cmp r3, #0
4726 ; CHECK-FP16-NEXT: movmi r8, r2
4727 ; CHECK-FP16-NEXT: movpl r3, r11
4728 ; CHECK-FP16-NEXT: moveq r8, r6
4729 ; CHECK-FP16-NEXT: rsbs r2, r8, #0
4730 ; CHECK-FP16-NEXT: rscs r2, r3, #0
4731 ; CHECK-FP16-NEXT: movwlt r11, #1
4732 ; CHECK-FP16-NEXT: cmp r11, #0
4733 ; CHECK-FP16-NEXT: moveq r0, r11
4734 ; CHECK-FP16-NEXT: orrs r2, r8, r3
4735 ; CHECK-FP16-NEXT: moveq r0, r1
4736 ; CHECK-FP16-NEXT: cmp r11, #0
4737 ; CHECK-FP16-NEXT: movne r11, r4
4738 ; CHECK-FP16-NEXT: cmp r2, #0
4739 ; CHECK-FP16-NEXT: vmov.32 d1[0], r0
4740 ; CHECK-FP16-NEXT: moveq r11, r4
4741 ; CHECK-FP16-NEXT: cmp r7, #0
4742 ; CHECK-FP16-NEXT: vmov.32 d0[0], r10
4743 ; CHECK-FP16-NEXT: movne r7, r5
4744 ; CHECK-FP16-NEXT: cmp r9, #0
4745 ; CHECK-FP16-NEXT: vmov.32 d1[1], r11
4746 ; CHECK-FP16-NEXT: moveq r7, r5
4747 ; CHECK-FP16-NEXT: vmov.32 d0[1], r7
4748 ; CHECK-FP16-NEXT: vpop {d8}
4749 ; CHECK-FP16-NEXT: add sp, sp, #4
4750 ; CHECK-FP16-NEXT: pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}