Lines Matching refs:AVX
4 ; RUN: llc -march=x86-64 -mcpu=core-avx2 < %s | FileCheck %s --check-prefix=AVX
41 ; AVX-LABEL: test1:
42 ; AVX: # BB#0:
43 ; AVX-NEXT: vpbroadcastd {{.*}}(%rip), %xmm1
44 ; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
45 ; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
46 ; AVX-NEXT: vpmuludq %xmm2, %xmm3, %xmm2
47 ; AVX-NEXT: vpmuludq %xmm1, %xmm0, %xmm1
48 ; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
49 ; AVX-NEXT: vpblendd {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3]
50 ; AVX-NEXT: vpsubd %xmm1, %xmm0, %xmm0
51 ; AVX-NEXT: vpsrld $1, %xmm0, %xmm0
52 ; AVX-NEXT: vpaddd %xmm1, %xmm0, %xmm0
53 ; AVX-NEXT: vpsrld $2, %xmm0, %xmm0
54 ; AVX-NEXT: retq
112 ; AVX-LABEL: test2:
113 ; AVX: # BB#0:
114 ; AVX-NEXT: vpbroadcastd {{.*}}(%rip), %ymm1
115 ; AVX-NEXT: vpshufd {{.*#+}} ymm2 = ymm1[1,1,3,3,5,5,7,7]
116 ; AVX-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,3,3,5,5,7,7]
117 ; AVX-NEXT: vpmuludq %ymm2, %ymm3, %ymm2
118 ; AVX-NEXT: vpmuludq %ymm1, %ymm0, %ymm1
119 ; AVX-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[1,1,3,3,5,5,7,7]
120 ; AVX-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2],ymm2[3],ymm1[4],ymm2[5],ymm1[6],ymm…
121 ; AVX-NEXT: vpsubd %ymm1, %ymm0, %ymm0
122 ; AVX-NEXT: vpsrld $1, %ymm0, %ymm0
123 ; AVX-NEXT: vpaddd %ymm1, %ymm0, %ymm0
124 ; AVX-NEXT: vpsrld $2, %ymm0, %ymm0
125 ; AVX-NEXT: retq
151 ; AVX-LABEL: test3:
152 ; AVX: # BB#0:
153 ; AVX-NEXT: vpmulhuw {{.*}}(%rip), %xmm0, %xmm1
154 ; AVX-NEXT: vpsubw %xmm1, %xmm0, %xmm0
155 ; AVX-NEXT: vpsrlw $1, %xmm0, %xmm0
156 ; AVX-NEXT: vpaddw %xmm1, %xmm0, %xmm0
157 ; AVX-NEXT: vpsrlw $2, %xmm0, %xmm0
158 ; AVX-NEXT: retq
196 ; AVX-LABEL: test4:
197 ; AVX: # BB#0:
198 ; AVX-NEXT: vpmulhuw {{.*}}(%rip), %ymm0, %ymm1
199 ; AVX-NEXT: vpsubw %ymm1, %ymm0, %ymm0
200 ; AVX-NEXT: vpsrlw $1, %ymm0, %ymm0
201 ; AVX-NEXT: vpaddw %ymm1, %ymm0, %ymm0
202 ; AVX-NEXT: vpsrlw $2, %ymm0, %ymm0
203 ; AVX-NEXT: retq
227 ; AVX-LABEL: test5:
228 ; AVX: # BB#0:
229 ; AVX-NEXT: vpmulhw {{.*}}(%rip), %xmm0, %xmm0
230 ; AVX-NEXT: vpsrlw $15, %xmm0, %xmm1
231 ; AVX-NEXT: vpsraw $1, %xmm0, %xmm0
232 ; AVX-NEXT: vpaddw %xmm1, %xmm0, %xmm0
233 ; AVX-NEXT: retq
269 ; AVX-LABEL: test6:
270 ; AVX: # BB#0:
271 ; AVX-NEXT: vpmulhw {{.*}}(%rip), %ymm0, %ymm0
272 ; AVX-NEXT: vpsrlw $15, %ymm0, %ymm1
273 ; AVX-NEXT: vpsraw $1, %ymm0, %ymm0
274 ; AVX-NEXT: vpaddw %ymm1, %ymm0, %ymm0
275 ; AVX-NEXT: retq
648 ; AVX-LABEL: test7:
649 ; AVX: # BB#0:
650 ; AVX-NEXT: vpextrb $1, %xmm0, %eax
651 ; AVX-NEXT: movsbl %al, %eax
652 ; AVX-NEXT: imull $-109, %eax, %ecx
653 ; AVX-NEXT: shrl $8, %ecx
654 ; AVX-NEXT: addb %cl, %al
655 ; AVX-NEXT: movb %al, %cl
656 ; AVX-NEXT: shrb $7, %cl
657 ; AVX-NEXT: sarb $2, %al
658 ; AVX-NEXT: addb %cl, %al
659 ; AVX-NEXT: movzbl %al, %eax
660 ; AVX-NEXT: vpextrb $0, %xmm0, %ecx
661 ; AVX-NEXT: movsbl %cl, %ecx
662 ; AVX-NEXT: imull $-109, %ecx, %edx
663 ; AVX-NEXT: shrl $8, %edx
664 ; AVX-NEXT: addb %dl, %cl
665 ; AVX-NEXT: movb %cl, %dl
666 ; AVX-NEXT: shrb $7, %dl
667 ; AVX-NEXT: sarb $2, %cl
668 ; AVX-NEXT: addb %dl, %cl
669 ; AVX-NEXT: movzbl %cl, %ecx
670 ; AVX-NEXT: vmovd %ecx, %xmm1
671 ; AVX-NEXT: vpextrb $2, %xmm0, %ecx
672 ; AVX-NEXT: movsbl %cl, %ecx
673 ; AVX-NEXT: imull $-109, %ecx, %edx
674 ; AVX-NEXT: vpinsrb $1, %eax, %xmm1, %xmm1
675 ; AVX-NEXT: shrl $8, %edx
676 ; AVX-NEXT: addb %dl, %cl
677 ; AVX-NEXT: movb %cl, %al
678 ; AVX-NEXT: shrb $7, %al
679 ; AVX-NEXT: sarb $2, %cl
680 ; AVX-NEXT: addb %al, %cl
681 ; AVX-NEXT: movzbl %cl, %eax
682 ; AVX-NEXT: vpextrb $3, %xmm0, %ecx
683 ; AVX-NEXT: movsbl %cl, %ecx
684 ; AVX-NEXT: imull $-109, %ecx, %edx
685 ; AVX-NEXT: vpinsrb $2, %eax, %xmm1, %xmm1
686 ; AVX-NEXT: shrl $8, %edx
687 ; AVX-NEXT: addb %dl, %cl
688 ; AVX-NEXT: movb %cl, %al
689 ; AVX-NEXT: shrb $7, %al
690 ; AVX-NEXT: sarb $2, %cl
691 ; AVX-NEXT: addb %al, %cl
692 ; AVX-NEXT: movzbl %cl, %eax
693 ; AVX-NEXT: vpextrb $4, %xmm0, %ecx
694 ; AVX-NEXT: movsbl %cl, %ecx
695 ; AVX-NEXT: imull $-109, %ecx, %edx
696 ; AVX-NEXT: vpinsrb $3, %eax, %xmm1, %xmm1
697 ; AVX-NEXT: shrl $8, %edx
698 ; AVX-NEXT: addb %dl, %cl
699 ; AVX-NEXT: movb %cl, %al
700 ; AVX-NEXT: shrb $7, %al
701 ; AVX-NEXT: sarb $2, %cl
702 ; AVX-NEXT: addb %al, %cl
703 ; AVX-NEXT: movzbl %cl, %eax
704 ; AVX-NEXT: vpextrb $5, %xmm0, %ecx
705 ; AVX-NEXT: movsbl %cl, %ecx
706 ; AVX-NEXT: imull $-109, %ecx, %edx
707 ; AVX-NEXT: vpinsrb $4, %eax, %xmm1, %xmm1
708 ; AVX-NEXT: shrl $8, %edx
709 ; AVX-NEXT: addb %dl, %cl
710 ; AVX-NEXT: movb %cl, %al
711 ; AVX-NEXT: shrb $7, %al
712 ; AVX-NEXT: sarb $2, %cl
713 ; AVX-NEXT: addb %al, %cl
714 ; AVX-NEXT: movzbl %cl, %eax
715 ; AVX-NEXT: vpextrb $6, %xmm0, %ecx
716 ; AVX-NEXT: movsbl %cl, %ecx
717 ; AVX-NEXT: imull $-109, %ecx, %edx
718 ; AVX-NEXT: vpinsrb $5, %eax, %xmm1, %xmm1
719 ; AVX-NEXT: shrl $8, %edx
720 ; AVX-NEXT: addb %dl, %cl
721 ; AVX-NEXT: movb %cl, %al
722 ; AVX-NEXT: shrb $7, %al
723 ; AVX-NEXT: sarb $2, %cl
724 ; AVX-NEXT: addb %al, %cl
725 ; AVX-NEXT: movzbl %cl, %eax
726 ; AVX-NEXT: vpextrb $7, %xmm0, %ecx
727 ; AVX-NEXT: movsbl %cl, %ecx
728 ; AVX-NEXT: imull $-109, %ecx, %edx
729 ; AVX-NEXT: vpinsrb $6, %eax, %xmm1, %xmm1
730 ; AVX-NEXT: shrl $8, %edx
731 ; AVX-NEXT: addb %dl, %cl
732 ; AVX-NEXT: movb %cl, %al
733 ; AVX-NEXT: shrb $7, %al
734 ; AVX-NEXT: sarb $2, %cl
735 ; AVX-NEXT: addb %al, %cl
736 ; AVX-NEXT: movzbl %cl, %eax
737 ; AVX-NEXT: vpextrb $8, %xmm0, %ecx
738 ; AVX-NEXT: movsbl %cl, %ecx
739 ; AVX-NEXT: imull $-109, %ecx, %edx
740 ; AVX-NEXT: vpinsrb $7, %eax, %xmm1, %xmm1
741 ; AVX-NEXT: shrl $8, %edx
742 ; AVX-NEXT: addb %dl, %cl
743 ; AVX-NEXT: movb %cl, %al
744 ; AVX-NEXT: shrb $7, %al
745 ; AVX-NEXT: sarb $2, %cl
746 ; AVX-NEXT: addb %al, %cl
747 ; AVX-NEXT: movzbl %cl, %eax
748 ; AVX-NEXT: vpextrb $9, %xmm0, %ecx
749 ; AVX-NEXT: movsbl %cl, %ecx
750 ; AVX-NEXT: imull $-109, %ecx, %edx
751 ; AVX-NEXT: vpinsrb $8, %eax, %xmm1, %xmm1
752 ; AVX-NEXT: shrl $8, %edx
753 ; AVX-NEXT: addb %dl, %cl
754 ; AVX-NEXT: movb %cl, %al
755 ; AVX-NEXT: shrb $7, %al
756 ; AVX-NEXT: sarb $2, %cl
757 ; AVX-NEXT: addb %al, %cl
758 ; AVX-NEXT: movzbl %cl, %eax
759 ; AVX-NEXT: vpextrb $10, %xmm0, %ecx
760 ; AVX-NEXT: movsbl %cl, %ecx
761 ; AVX-NEXT: imull $-109, %ecx, %edx
762 ; AVX-NEXT: vpinsrb $9, %eax, %xmm1, %xmm1
763 ; AVX-NEXT: shrl $8, %edx
764 ; AVX-NEXT: addb %dl, %cl
765 ; AVX-NEXT: movb %cl, %al
766 ; AVX-NEXT: shrb $7, %al
767 ; AVX-NEXT: sarb $2, %cl
768 ; AVX-NEXT: addb %al, %cl
769 ; AVX-NEXT: movzbl %cl, %eax
770 ; AVX-NEXT: vpextrb $11, %xmm0, %ecx
771 ; AVX-NEXT: movsbl %cl, %ecx
772 ; AVX-NEXT: imull $-109, %ecx, %edx
773 ; AVX-NEXT: vpinsrb $10, %eax, %xmm1, %xmm1
774 ; AVX-NEXT: shrl $8, %edx
775 ; AVX-NEXT: addb %dl, %cl
776 ; AVX-NEXT: movb %cl, %al
777 ; AVX-NEXT: shrb $7, %al
778 ; AVX-NEXT: sarb $2, %cl
779 ; AVX-NEXT: addb %al, %cl
780 ; AVX-NEXT: movzbl %cl, %eax
781 ; AVX-NEXT: vpextrb $12, %xmm0, %ecx
782 ; AVX-NEXT: movsbl %cl, %ecx
783 ; AVX-NEXT: imull $-109, %ecx, %edx
784 ; AVX-NEXT: vpinsrb $11, %eax, %xmm1, %xmm1
785 ; AVX-NEXT: shrl $8, %edx
786 ; AVX-NEXT: addb %dl, %cl
787 ; AVX-NEXT: movb %cl, %al
788 ; AVX-NEXT: shrb $7, %al
789 ; AVX-NEXT: sarb $2, %cl
790 ; AVX-NEXT: addb %al, %cl
791 ; AVX-NEXT: movzbl %cl, %eax
792 ; AVX-NEXT: vpextrb $13, %xmm0, %ecx
793 ; AVX-NEXT: movsbl %cl, %ecx
794 ; AVX-NEXT: imull $-109, %ecx, %edx
795 ; AVX-NEXT: vpinsrb $12, %eax, %xmm1, %xmm1
796 ; AVX-NEXT: shrl $8, %edx
797 ; AVX-NEXT: addb %dl, %cl
798 ; AVX-NEXT: movb %cl, %al
799 ; AVX-NEXT: shrb $7, %al
800 ; AVX-NEXT: sarb $2, %cl
801 ; AVX-NEXT: addb %al, %cl
802 ; AVX-NEXT: movzbl %cl, %eax
803 ; AVX-NEXT: vpextrb $14, %xmm0, %ecx
804 ; AVX-NEXT: movsbl %cl, %ecx
805 ; AVX-NEXT: imull $-109, %ecx, %edx
806 ; AVX-NEXT: vpinsrb $13, %eax, %xmm1, %xmm1
807 ; AVX-NEXT: shrl $8, %edx
808 ; AVX-NEXT: addb %dl, %cl
809 ; AVX-NEXT: movb %cl, %al
810 ; AVX-NEXT: shrb $7, %al
811 ; AVX-NEXT: sarb $2, %cl
812 ; AVX-NEXT: addb %al, %cl
813 ; AVX-NEXT: movzbl %cl, %eax
814 ; AVX-NEXT: vpextrb $15, %xmm0, %ecx
815 ; AVX-NEXT: movsbl %cl, %ecx
816 ; AVX-NEXT: imull $-109, %ecx, %edx
817 ; AVX-NEXT: vpinsrb $14, %eax, %xmm1, %xmm0
818 ; AVX-NEXT: shrl $8, %edx
819 ; AVX-NEXT: addb %dl, %cl
820 ; AVX-NEXT: movb %cl, %al
821 ; AVX-NEXT: shrb $7, %al
822 ; AVX-NEXT: sarb $2, %cl
823 ; AVX-NEXT: addb %al, %cl
824 ; AVX-NEXT: movzbl %cl, %eax
825 ; AVX-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0
826 ; AVX-NEXT: retq
875 ; AVX-LABEL: test8:
876 ; AVX: # BB#0:
877 ; AVX-NEXT: vpbroadcastd {{.*}}(%rip), %xmm1
878 ; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
879 ; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
880 ; AVX-NEXT: vpmuldq %xmm2, %xmm3, %xmm2
881 ; AVX-NEXT: vpmuldq %xmm1, %xmm0, %xmm1
882 ; AVX-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
883 ; AVX-NEXT: vpblendd {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3]
884 ; AVX-NEXT: vpaddd %xmm0, %xmm1, %xmm0
885 ; AVX-NEXT: vpsrld $31, %xmm0, %xmm1
886 ; AVX-NEXT: vpsrad $2, %xmm0, %xmm0
887 ; AVX-NEXT: vpaddd %xmm1, %xmm0, %xmm0
888 ; AVX-NEXT: retq
969 ; AVX-LABEL: test9:
970 ; AVX: # BB#0:
971 ; AVX-NEXT: vpbroadcastd {{.*}}(%rip), %ymm1
972 ; AVX-NEXT: vpshufd {{.*#+}} ymm2 = ymm1[1,1,3,3,5,5,7,7]
973 ; AVX-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,3,3,5,5,7,7]
974 ; AVX-NEXT: vpmuldq %ymm2, %ymm3, %ymm2
975 ; AVX-NEXT: vpmuldq %ymm1, %ymm0, %ymm1
976 ; AVX-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[1,1,3,3,5,5,7,7]
977 ; AVX-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2],ymm2[3],ymm1[4],ymm2[5],ymm1[6],ymm…
978 ; AVX-NEXT: vpaddd %ymm0, %ymm1, %ymm0
979 ; AVX-NEXT: vpsrld $31, %ymm0, %ymm1
980 ; AVX-NEXT: vpsrad $2, %ymm0, %ymm0
981 ; AVX-NEXT: vpaddd %ymm1, %ymm0, %ymm0
982 ; AVX-NEXT: retq
1064 ; AVX-LABEL: test10:
1065 ; AVX: # BB#0:
1066 ; AVX-NEXT: vpbroadcastd {{.*}}(%rip), %ymm1
1067 ; AVX-NEXT: vpshufd {{.*#+}} ymm2 = ymm1[1,1,3,3,5,5,7,7]
1068 ; AVX-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,3,3,5,5,7,7]
1069 ; AVX-NEXT: vpmuludq %ymm2, %ymm3, %ymm2
1070 ; AVX-NEXT: vpmuludq %ymm1, %ymm0, %ymm1
1071 ; AVX-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[1,1,3,3,5,5,7,7]
1072 ; AVX-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2],ymm2[3],ymm1[4],ymm2[5],ymm1[6],ymm…
1073 ; AVX-NEXT: vpsubd %ymm1, %ymm0, %ymm2
1074 ; AVX-NEXT: vpsrld $1, %ymm2, %ymm2
1075 ; AVX-NEXT: vpaddd %ymm1, %ymm2, %ymm1
1076 ; AVX-NEXT: vpsrld $2, %ymm1, %ymm1
1077 ; AVX-NEXT: vpbroadcastd {{.*}}(%rip), %ymm2
1078 ; AVX-NEXT: vpmulld %ymm2, %ymm1, %ymm1
1079 ; AVX-NEXT: vpsubd %ymm1, %ymm0, %ymm0
1080 ; AVX-NEXT: retq
1177 ; AVX-LABEL: test11:
1178 ; AVX: # BB#0:
1179 ; AVX-NEXT: vpbroadcastd {{.*}}(%rip), %ymm1
1180 ; AVX-NEXT: vpshufd {{.*#+}} ymm2 = ymm1[1,1,3,3,5,5,7,7]
1181 ; AVX-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,3,3,5,5,7,7]
1182 ; AVX-NEXT: vpmuldq %ymm2, %ymm3, %ymm2
1183 ; AVX-NEXT: vpmuldq %ymm1, %ymm0, %ymm1
1184 ; AVX-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[1,1,3,3,5,5,7,7]
1185 ; AVX-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2],ymm2[3],ymm1[4],ymm2[5],ymm1[6],ymm…
1186 ; AVX-NEXT: vpaddd %ymm0, %ymm1, %ymm1
1187 ; AVX-NEXT: vpsrld $31, %ymm1, %ymm2
1188 ; AVX-NEXT: vpsrad $2, %ymm1, %ymm1
1189 ; AVX-NEXT: vpaddd %ymm2, %ymm1, %ymm1
1190 ; AVX-NEXT: vpbroadcastd {{.*}}(%rip), %ymm2
1191 ; AVX-NEXT: vpmulld %ymm2, %ymm1, %ymm1
1192 ; AVX-NEXT: vpsubd %ymm1, %ymm0, %ymm0
1193 ; AVX-NEXT: retq
1209 ; AVX-LABEL: test12:
1210 ; AVX: # BB#0:
1211 ; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0
1212 ; AVX-NEXT: retq
1257 ; AVX-LABEL: PR20355:
1258 ; AVX: # BB#0: # %entry
1259 ; AVX-NEXT: vpbroadcastd {{.*}}(%rip), %xmm1
1260 ; AVX-NEXT: vpshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
1261 ; AVX-NEXT: vpshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
1262 ; AVX-NEXT: vpmuldq %xmm2, %xmm3, %xmm2
1263 ; AVX-NEXT: vpmuldq %xmm1, %xmm0, %xmm0
1264 ; AVX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1265 ; AVX-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
1266 ; AVX-NEXT: vpsrld $31, %xmm0, %xmm1
1267 ; AVX-NEXT: vpaddd %xmm1, %xmm0, %xmm0
1268 ; AVX-NEXT: retq