Lines Matching refs:AVX

4 … %s -mtriple=x86_64-unknown -mattr=+avx                | FileCheck %s --check-prefixes=AVX,AVX-SLOW
5 … %s -mtriple=x86_64-unknown -mattr=+avx,fast-hops | FileCheck %s --check-prefixes=AVX,AVX-FAST
6 … %s -mtriple=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX-SLOW
7 … %s -mtriple=x86_64-unknown -mattr=+avx2,fast-hops | FileCheck %s --check-prefixes=AVX,AVX-FAST
8 … %s -mtriple=x86_64-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=AVX,AVX-SLOW
9 … %s -mtriple=x86_64-unknown -mattr=+avx512f,fast-hops | FileCheck %s --check-prefixes=AVX,AVX-FAST
17 ; AVX-LABEL: haddpd1:
18 ; AVX: # %bb.0:
19 ; AVX-NEXT: vhaddpd %xmm1, %xmm0, %xmm0
20 ; AVX-NEXT: retq
33 ; AVX-LABEL: haddpd2:
34 ; AVX: # %bb.0:
35 ; AVX-NEXT: vhaddpd %xmm1, %xmm0, %xmm0
36 ; AVX-NEXT: retq
56 ; AVX-SLOW-LABEL: haddpd3:
57 ; AVX-SLOW: # %bb.0:
58 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
59 ; AVX-SLOW-NEXT: vaddpd %xmm1, %xmm0, %xmm0
60 ; AVX-SLOW-NEXT: retq
62 ; AVX-FAST-LABEL: haddpd3:
63 ; AVX-FAST: # %bb.0:
64 ; AVX-FAST-NEXT: vhaddpd %xmm0, %xmm0, %xmm0
65 ; AVX-FAST-NEXT: retq
78 ; AVX-LABEL: haddps1:
79 ; AVX: # %bb.0:
80 ; AVX-NEXT: vhaddps %xmm1, %xmm0, %xmm0
81 ; AVX-NEXT: retq
94 ; AVX-LABEL: haddps2:
95 ; AVX: # %bb.0:
96 ; AVX-NEXT: vhaddps %xmm1, %xmm0, %xmm0
97 ; AVX-NEXT: retq
110 ; AVX-LABEL: haddps3:
111 ; AVX: # %bb.0:
112 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
113 ; AVX-NEXT: retq
126 ; AVX-LABEL: haddps4:
127 ; AVX: # %bb.0:
128 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
129 ; AVX-NEXT: retq
142 ; AVX-LABEL: haddps5:
143 ; AVX: # %bb.0:
144 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
145 ; AVX-NEXT: retq
164 ; AVX-SLOW-LABEL: haddps6:
165 ; AVX-SLOW: # %bb.0:
166 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
167 ; AVX-SLOW-NEXT: vaddps %xmm1, %xmm0, %xmm0
168 ; AVX-SLOW-NEXT: retq
170 ; AVX-FAST-LABEL: haddps6:
171 ; AVX-FAST: # %bb.0:
172 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
173 ; AVX-FAST-NEXT: retq
186 ; AVX-LABEL: haddps7:
187 ; AVX: # %bb.0:
188 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
189 ; AVX-NEXT: retq
202 ; AVX-LABEL: hsubpd1:
203 ; AVX: # %bb.0:
204 ; AVX-NEXT: vhsubpd %xmm1, %xmm0, %xmm0
205 ; AVX-NEXT: retq
225 ; AVX-SLOW-LABEL: hsubpd2:
226 ; AVX-SLOW: # %bb.0:
227 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
228 ; AVX-SLOW-NEXT: vsubpd %xmm1, %xmm0, %xmm0
229 ; AVX-SLOW-NEXT: retq
231 ; AVX-FAST-LABEL: hsubpd2:
232 ; AVX-FAST: # %bb.0:
233 ; AVX-FAST-NEXT: vhsubpd %xmm0, %xmm0, %xmm0
234 ; AVX-FAST-NEXT: retq
247 ; AVX-LABEL: hsubps1:
248 ; AVX: # %bb.0:
249 ; AVX-NEXT: vhsubps %xmm1, %xmm0, %xmm0
250 ; AVX-NEXT: retq
263 ; AVX-LABEL: hsubps2:
264 ; AVX: # %bb.0:
265 ; AVX-NEXT: vhsubps %xmm0, %xmm0, %xmm0
266 ; AVX-NEXT: retq
279 ; AVX-LABEL: hsubps3:
280 ; AVX: # %bb.0:
281 ; AVX-NEXT: vhsubps %xmm0, %xmm0, %xmm0
282 ; AVX-NEXT: retq
301 ; AVX-SLOW-LABEL: hsubps4:
302 ; AVX-SLOW: # %bb.0:
303 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
304 ; AVX-SLOW-NEXT: vsubps %xmm1, %xmm0, %xmm0
305 ; AVX-SLOW-NEXT: retq
307 ; AVX-FAST-LABEL: hsubps4:
308 ; AVX-FAST: # %bb.0:
309 ; AVX-FAST-NEXT: vhsubps %xmm0, %xmm0, %xmm0
310 ; AVX-FAST-NEXT: retq
324 ; AVX-LABEL: vhaddps1:
325 ; AVX: # %bb.0:
326 ; AVX-NEXT: vhaddps %ymm1, %ymm0, %ymm0
327 ; AVX-NEXT: retq
341 ; AVX-LABEL: vhaddps2:
342 ; AVX: # %bb.0:
343 ; AVX-NEXT: vhaddps %ymm1, %ymm0, %ymm0
344 ; AVX-NEXT: retq
358 ; AVX-LABEL: vhaddps3:
359 ; AVX: # %bb.0:
360 ; AVX-NEXT: vhaddps %ymm0, %ymm0, %ymm0
361 ; AVX-NEXT: retq
375 ; AVX-LABEL: vhsubps1:
376 ; AVX: # %bb.0:
377 ; AVX-NEXT: vhsubps %ymm1, %ymm0, %ymm0
378 ; AVX-NEXT: retq
392 ; AVX-LABEL: vhsubps3:
393 ; AVX: # %bb.0:
394 ; AVX-NEXT: vhsubps %ymm0, %ymm0, %ymm0
395 ; AVX-NEXT: retq
409 ; AVX-LABEL: vhaddpd1:
410 ; AVX: # %bb.0:
411 ; AVX-NEXT: vhaddpd %ymm1, %ymm0, %ymm0
412 ; AVX-NEXT: retq
426 ; AVX-LABEL: vhsubpd1:
427 ; AVX: # %bb.0:
428 ; AVX-NEXT: vhsubpd %ymm1, %ymm0, %ymm0
429 ; AVX-NEXT: retq
442 ; AVX-LABEL: haddps_v2f32:
443 ; AVX: # %bb.0:
444 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
445 ; AVX-NEXT: retq
471 ; AVX-SLOW-LABEL: extract_extract01_v4f32_fadd_f32:
472 ; AVX-SLOW: # %bb.0:
473 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
474 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
475 ; AVX-SLOW-NEXT: retq
477 ; AVX-FAST-LABEL: extract_extract01_v4f32_fadd_f32:
478 ; AVX-FAST: # %bb.0:
479 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
480 ; AVX-FAST-NEXT: retq
502 ; AVX-SLOW-LABEL: extract_extract23_v4f32_fadd_f32:
503 ; AVX-SLOW: # %bb.0:
504 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
505 ; AVX-SLOW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
506 ; AVX-SLOW-NEXT: vaddss %xmm0, %xmm1, %xmm0
507 ; AVX-SLOW-NEXT: retq
509 ; AVX-FAST-LABEL: extract_extract23_v4f32_fadd_f32:
510 ; AVX-FAST: # %bb.0:
511 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
512 ; AVX-FAST-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
513 ; AVX-FAST-NEXT: retq
532 ; AVX-SLOW-LABEL: extract_extract01_v4f32_fadd_f32_commute:
533 ; AVX-SLOW: # %bb.0:
534 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
535 ; AVX-SLOW-NEXT: vaddss %xmm0, %xmm1, %xmm0
536 ; AVX-SLOW-NEXT: retq
538 ; AVX-FAST-LABEL: extract_extract01_v4f32_fadd_f32_commute:
539 ; AVX-FAST: # %bb.0:
540 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
541 ; AVX-FAST-NEXT: retq
563 ; AVX-SLOW-LABEL: extract_extract23_v4f32_fadd_f32_commute:
564 ; AVX-SLOW: # %bb.0:
565 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
566 ; AVX-SLOW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
567 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
568 ; AVX-SLOW-NEXT: retq
570 ; AVX-FAST-LABEL: extract_extract23_v4f32_fadd_f32_commute:
571 ; AVX-FAST: # %bb.0:
572 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
573 ; AVX-FAST-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
574 ; AVX-FAST-NEXT: retq
594 ; AVX-SLOW-LABEL: extract_extract01_v2f64_fadd_f64:
595 ; AVX-SLOW: # %bb.0:
596 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
597 ; AVX-SLOW-NEXT: vaddsd %xmm1, %xmm0, %xmm0
598 ; AVX-SLOW-NEXT: retq
600 ; AVX-FAST-LABEL: extract_extract01_v2f64_fadd_f64:
601 ; AVX-FAST: # %bb.0:
602 ; AVX-FAST-NEXT: vhaddpd %xmm0, %xmm0, %xmm0
603 ; AVX-FAST-NEXT: retq
623 ; AVX-SLOW-LABEL: extract_extract01_v2f64_fadd_f64_commute:
624 ; AVX-SLOW: # %bb.0:
625 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
626 ; AVX-SLOW-NEXT: vaddsd %xmm0, %xmm1, %xmm0
627 ; AVX-SLOW-NEXT: retq
629 ; AVX-FAST-LABEL: extract_extract01_v2f64_fadd_f64_commute:
630 ; AVX-FAST: # %bb.0:
631 ; AVX-FAST-NEXT: vhaddpd %xmm0, %xmm0, %xmm0
632 ; AVX-FAST-NEXT: retq
651 ; AVX-SLOW-LABEL: extract_extract01_v4f32_fsub_f32:
652 ; AVX-SLOW: # %bb.0:
653 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
654 ; AVX-SLOW-NEXT: vsubss %xmm1, %xmm0, %xmm0
655 ; AVX-SLOW-NEXT: retq
657 ; AVX-FAST-LABEL: extract_extract01_v4f32_fsub_f32:
658 ; AVX-FAST: # %bb.0:
659 ; AVX-FAST-NEXT: vhsubps %xmm0, %xmm0, %xmm0
660 ; AVX-FAST-NEXT: retq
683 ; AVX-SLOW-LABEL: extract_extract23_v4f32_fsub_f32:
684 ; AVX-SLOW: # %bb.0:
685 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
686 ; AVX-SLOW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
687 ; AVX-SLOW-NEXT: vsubss %xmm0, %xmm1, %xmm0
688 ; AVX-SLOW-NEXT: retq
690 ; AVX-FAST-LABEL: extract_extract23_v4f32_fsub_f32:
691 ; AVX-FAST: # %bb.0:
692 ; AVX-FAST-NEXT: vhsubps %xmm0, %xmm0, %xmm0
693 ; AVX-FAST-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
694 ; AVX-FAST-NEXT: retq
709 ; AVX-LABEL: extract_extract01_v4f32_fsub_f32_commute:
710 ; AVX: # %bb.0:
711 ; AVX-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
712 ; AVX-NEXT: vsubss %xmm0, %xmm1, %xmm0
713 ; AVX-NEXT: retq
729 ; AVX-LABEL: extract_extract23_v4f32_fsub_f32_commute:
730 ; AVX: # %bb.0:
731 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
732 ; AVX-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
733 ; AVX-NEXT: vsubss %xmm1, %xmm0, %xmm0
734 ; AVX-NEXT: retq
754 ; AVX-SLOW-LABEL: extract_extract01_v2f64_fsub_f64:
755 ; AVX-SLOW: # %bb.0:
756 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
757 ; AVX-SLOW-NEXT: vsubsd %xmm1, %xmm0, %xmm0
758 ; AVX-SLOW-NEXT: retq
760 ; AVX-FAST-LABEL: extract_extract01_v2f64_fsub_f64:
761 ; AVX-FAST: # %bb.0:
762 ; AVX-FAST-NEXT: vhsubpd %xmm0, %xmm0, %xmm0
763 ; AVX-FAST-NEXT: retq
779 ; AVX-LABEL: extract_extract01_v2f64_fsub_f64_commute:
780 ; AVX: # %bb.0:
781 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
782 ; AVX-NEXT: vsubsd %xmm0, %xmm1, %xmm0
783 ; AVX-NEXT: retq
804 ; AVX-SLOW-LABEL: extract_extract01_v8f32_fadd_f32:
805 ; AVX-SLOW: # %bb.0:
806 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
807 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
808 ; AVX-SLOW-NEXT: vzeroupper
809 ; AVX-SLOW-NEXT: retq
811 ; AVX-FAST-LABEL: extract_extract01_v8f32_fadd_f32:
812 ; AVX-FAST: # %bb.0:
813 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
814 ; AVX-FAST-NEXT: vzeroupper
815 ; AVX-FAST-NEXT: retq
837 ; AVX-SLOW-LABEL: extract_extract23_v8f32_fadd_f32:
838 ; AVX-SLOW: # %bb.0:
839 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
840 ; AVX-SLOW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
841 ; AVX-SLOW-NEXT: vaddss %xmm0, %xmm1, %xmm0
842 ; AVX-SLOW-NEXT: vzeroupper
843 ; AVX-SLOW-NEXT: retq
845 ; AVX-FAST-LABEL: extract_extract23_v8f32_fadd_f32:
846 ; AVX-FAST: # %bb.0:
847 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
848 ; AVX-FAST-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
849 ; AVX-FAST-NEXT: vzeroupper
850 ; AVX-FAST-NEXT: retq
872 ; AVX-SLOW-LABEL: extract_extract67_v8f32_fadd_f32:
873 ; AVX-SLOW: # %bb.0:
874 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm0
875 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
876 ; AVX-SLOW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
877 ; AVX-SLOW-NEXT: vaddss %xmm0, %xmm1, %xmm0
878 ; AVX-SLOW-NEXT: vzeroupper
879 ; AVX-SLOW-NEXT: retq
881 ; AVX-FAST-LABEL: extract_extract67_v8f32_fadd_f32:
882 ; AVX-FAST: # %bb.0:
883 ; AVX-FAST-NEXT: vextractf128 $1, %ymm0, %xmm0
884 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
885 ; AVX-FAST-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
886 ; AVX-FAST-NEXT: vzeroupper
887 ; AVX-FAST-NEXT: retq
906 ; AVX-SLOW-LABEL: extract_extract01_v8f32_fadd_f32_commute:
907 ; AVX-SLOW: # %bb.0:
908 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
909 ; AVX-SLOW-NEXT: vaddss %xmm0, %xmm1, %xmm0
910 ; AVX-SLOW-NEXT: vzeroupper
911 ; AVX-SLOW-NEXT: retq
913 ; AVX-FAST-LABEL: extract_extract01_v8f32_fadd_f32_commute:
914 ; AVX-FAST: # %bb.0:
915 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
916 ; AVX-FAST-NEXT: vzeroupper
917 ; AVX-FAST-NEXT: retq
939 ; AVX-SLOW-LABEL: extract_extract23_v8f32_fadd_f32_commute:
940 ; AVX-SLOW: # %bb.0:
941 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
942 ; AVX-SLOW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
943 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
944 ; AVX-SLOW-NEXT: vzeroupper
945 ; AVX-SLOW-NEXT: retq
947 ; AVX-FAST-LABEL: extract_extract23_v8f32_fadd_f32_commute:
948 ; AVX-FAST: # %bb.0:
949 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
950 ; AVX-FAST-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
951 ; AVX-FAST-NEXT: vzeroupper
952 ; AVX-FAST-NEXT: retq
974 ; AVX-SLOW-LABEL: extract_extract67_v8f32_fadd_f32_commute:
975 ; AVX-SLOW: # %bb.0:
976 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm0
977 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
978 ; AVX-SLOW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
979 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
980 ; AVX-SLOW-NEXT: vzeroupper
981 ; AVX-SLOW-NEXT: retq
983 ; AVX-FAST-LABEL: extract_extract67_v8f32_fadd_f32_commute:
984 ; AVX-FAST: # %bb.0:
985 ; AVX-FAST-NEXT: vextractf128 $1, %ymm0, %xmm0
986 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
987 ; AVX-FAST-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
988 ; AVX-FAST-NEXT: vzeroupper
989 ; AVX-FAST-NEXT: retq
1009 ; AVX-SLOW-LABEL: extract_extract01_v4f64_fadd_f64:
1010 ; AVX-SLOW: # %bb.0:
1011 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1012 ; AVX-SLOW-NEXT: vaddsd %xmm1, %xmm0, %xmm0
1013 ; AVX-SLOW-NEXT: vzeroupper
1014 ; AVX-SLOW-NEXT: retq
1016 ; AVX-FAST-LABEL: extract_extract01_v4f64_fadd_f64:
1017 ; AVX-FAST: # %bb.0:
1018 ; AVX-FAST-NEXT: vhaddpd %xmm0, %xmm0, %xmm0
1019 ; AVX-FAST-NEXT: vzeroupper
1020 ; AVX-FAST-NEXT: retq
1041 ; AVX-SLOW-LABEL: extract_extract23_v4f64_fadd_f64:
1042 ; AVX-SLOW: # %bb.0:
1043 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm0
1044 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1045 ; AVX-SLOW-NEXT: vaddsd %xmm1, %xmm0, %xmm0
1046 ; AVX-SLOW-NEXT: vzeroupper
1047 ; AVX-SLOW-NEXT: retq
1049 ; AVX-FAST-LABEL: extract_extract23_v4f64_fadd_f64:
1050 ; AVX-FAST: # %bb.0:
1051 ; AVX-FAST-NEXT: vextractf128 $1, %ymm0, %xmm0
1052 ; AVX-FAST-NEXT: vhaddpd %xmm0, %xmm0, %xmm0
1053 ; AVX-FAST-NEXT: vzeroupper
1054 ; AVX-FAST-NEXT: retq
1074 ; AVX-SLOW-LABEL: extract_extract01_v4f64_fadd_f64_commute:
1075 ; AVX-SLOW: # %bb.0:
1076 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1077 ; AVX-SLOW-NEXT: vaddsd %xmm0, %xmm1, %xmm0
1078 ; AVX-SLOW-NEXT: vzeroupper
1079 ; AVX-SLOW-NEXT: retq
1081 ; AVX-FAST-LABEL: extract_extract01_v4f64_fadd_f64_commute:
1082 ; AVX-FAST: # %bb.0:
1083 ; AVX-FAST-NEXT: vhaddpd %xmm0, %xmm0, %xmm0
1084 ; AVX-FAST-NEXT: vzeroupper
1085 ; AVX-FAST-NEXT: retq
1106 ; AVX-SLOW-LABEL: extract_extract23_v4f64_fadd_f64_commute:
1107 ; AVX-SLOW: # %bb.0:
1108 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm0
1109 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1110 ; AVX-SLOW-NEXT: vaddsd %xmm0, %xmm1, %xmm0
1111 ; AVX-SLOW-NEXT: vzeroupper
1112 ; AVX-SLOW-NEXT: retq
1114 ; AVX-FAST-LABEL: extract_extract23_v4f64_fadd_f64_commute:
1115 ; AVX-FAST: # %bb.0:
1116 ; AVX-FAST-NEXT: vextractf128 $1, %ymm0, %xmm0
1117 ; AVX-FAST-NEXT: vhaddpd %xmm0, %xmm0, %xmm0
1118 ; AVX-FAST-NEXT: vzeroupper
1119 ; AVX-FAST-NEXT: retq
1138 ; AVX-SLOW-LABEL: extract_extract01_v8f32_fsub_f32:
1139 ; AVX-SLOW: # %bb.0:
1140 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1141 ; AVX-SLOW-NEXT: vsubss %xmm1, %xmm0, %xmm0
1142 ; AVX-SLOW-NEXT: vzeroupper
1143 ; AVX-SLOW-NEXT: retq
1145 ; AVX-FAST-LABEL: extract_extract01_v8f32_fsub_f32:
1146 ; AVX-FAST: # %bb.0:
1147 ; AVX-FAST-NEXT: vhsubps %xmm0, %xmm0, %xmm0
1148 ; AVX-FAST-NEXT: vzeroupper
1149 ; AVX-FAST-NEXT: retq
1172 ; AVX-SLOW-LABEL: extract_extract23_v8f32_fsub_f32:
1173 ; AVX-SLOW: # %bb.0:
1174 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1175 ; AVX-SLOW-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
1176 ; AVX-SLOW-NEXT: vsubss %xmm0, %xmm1, %xmm0
1177 ; AVX-SLOW-NEXT: vzeroupper
1178 ; AVX-SLOW-NEXT: retq
1180 ; AVX-FAST-LABEL: extract_extract23_v8f32_fsub_f32:
1181 ; AVX-FAST: # %bb.0:
1182 ; AVX-FAST-NEXT: vhsubps %xmm0, %xmm0, %xmm0
1183 ; AVX-FAST-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
1184 ; AVX-FAST-NEXT: vzeroupper
1185 ; AVX-FAST-NEXT: retq
1206 ; AVX-SLOW-LABEL: extract_extract45_v8f32_fsub_f32:
1207 ; AVX-SLOW: # %bb.0:
1208 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm0
1209 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1210 ; AVX-SLOW-NEXT: vsubss %xmm1, %xmm0, %xmm0
1211 ; AVX-SLOW-NEXT: vzeroupper
1212 ; AVX-SLOW-NEXT: retq
1214 ; AVX-FAST-LABEL: extract_extract45_v8f32_fsub_f32:
1215 ; AVX-FAST: # %bb.0:
1216 ; AVX-FAST-NEXT: vextractf128 $1, %ymm0, %xmm0
1217 ; AVX-FAST-NEXT: vhsubps %xmm0, %xmm0, %xmm0
1218 ; AVX-FAST-NEXT: vzeroupper
1219 ; AVX-FAST-NEXT: retq
1236 ; AVX-LABEL: extract_extract01_v8f32_fsub_f32_commute:
1237 ; AVX: # %bb.0:
1238 ; AVX-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1239 ; AVX-NEXT: vsubss %xmm0, %xmm1, %xmm0
1240 ; AVX-NEXT: vzeroupper
1241 ; AVX-NEXT: retq
1261 ; AVX-SLOW-LABEL: extract_extract01_v4f64_fsub_f64:
1262 ; AVX-SLOW: # %bb.0:
1263 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1264 ; AVX-SLOW-NEXT: vsubsd %xmm1, %xmm0, %xmm0
1265 ; AVX-SLOW-NEXT: vzeroupper
1266 ; AVX-SLOW-NEXT: retq
1268 ; AVX-FAST-LABEL: extract_extract01_v4f64_fsub_f64:
1269 ; AVX-FAST: # %bb.0:
1270 ; AVX-FAST-NEXT: vhsubpd %xmm0, %xmm0, %xmm0
1271 ; AVX-FAST-NEXT: vzeroupper
1272 ; AVX-FAST-NEXT: retq
1290 ; AVX-LABEL: extract_extract01_v4f64_fsub_f64_commute:
1291 ; AVX: # %bb.0:
1292 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1293 ; AVX-NEXT: vsubsd %xmm0, %xmm1, %xmm0
1294 ; AVX-NEXT: vzeroupper
1295 ; AVX-NEXT: retq
1316 ; AVX-SLOW-LABEL: extract_extract01_v16f32_fadd_f32:
1317 ; AVX-SLOW: # %bb.0:
1318 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1319 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
1320 ; AVX-SLOW-NEXT: vzeroupper
1321 ; AVX-SLOW-NEXT: retq
1323 ; AVX-FAST-LABEL: extract_extract01_v16f32_fadd_f32:
1324 ; AVX-FAST: # %bb.0:
1325 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1326 ; AVX-FAST-NEXT: vzeroupper
1327 ; AVX-FAST-NEXT: retq
1346 ; AVX-SLOW-LABEL: extract_extract01_v16f32_fadd_f32_commute:
1347 ; AVX-SLOW: # %bb.0:
1348 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1349 ; AVX-SLOW-NEXT: vaddss %xmm0, %xmm1, %xmm0
1350 ; AVX-SLOW-NEXT: vzeroupper
1351 ; AVX-SLOW-NEXT: retq
1353 ; AVX-FAST-LABEL: extract_extract01_v16f32_fadd_f32_commute:
1354 ; AVX-FAST: # %bb.0:
1355 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1356 ; AVX-FAST-NEXT: vzeroupper
1357 ; AVX-FAST-NEXT: retq
1377 ; AVX-SLOW-LABEL: extract_extract01_v8f64_fadd_f64:
1378 ; AVX-SLOW: # %bb.0:
1379 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1380 ; AVX-SLOW-NEXT: vaddsd %xmm1, %xmm0, %xmm0
1381 ; AVX-SLOW-NEXT: vzeroupper
1382 ; AVX-SLOW-NEXT: retq
1384 ; AVX-FAST-LABEL: extract_extract01_v8f64_fadd_f64:
1385 ; AVX-FAST: # %bb.0:
1386 ; AVX-FAST-NEXT: vhaddpd %xmm0, %xmm0, %xmm0
1387 ; AVX-FAST-NEXT: vzeroupper
1388 ; AVX-FAST-NEXT: retq
1408 ; AVX-SLOW-LABEL: extract_extract01_v8f64_fadd_f64_commute:
1409 ; AVX-SLOW: # %bb.0:
1410 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1411 ; AVX-SLOW-NEXT: vaddsd %xmm0, %xmm1, %xmm0
1412 ; AVX-SLOW-NEXT: vzeroupper
1413 ; AVX-SLOW-NEXT: retq
1415 ; AVX-FAST-LABEL: extract_extract01_v8f64_fadd_f64_commute:
1416 ; AVX-FAST: # %bb.0:
1417 ; AVX-FAST-NEXT: vhaddpd %xmm0, %xmm0, %xmm0
1418 ; AVX-FAST-NEXT: vzeroupper
1419 ; AVX-FAST-NEXT: retq
1438 ; AVX-SLOW-LABEL: extract_extract01_v16f32_fsub_f32:
1439 ; AVX-SLOW: # %bb.0:
1440 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1441 ; AVX-SLOW-NEXT: vsubss %xmm1, %xmm0, %xmm0
1442 ; AVX-SLOW-NEXT: vzeroupper
1443 ; AVX-SLOW-NEXT: retq
1445 ; AVX-FAST-LABEL: extract_extract01_v16f32_fsub_f32:
1446 ; AVX-FAST: # %bb.0:
1447 ; AVX-FAST-NEXT: vhsubps %xmm0, %xmm0, %xmm0
1448 ; AVX-FAST-NEXT: vzeroupper
1449 ; AVX-FAST-NEXT: retq
1464 ; AVX-LABEL: extract_extract01_v16f32_fsub_f32_commute:
1465 ; AVX: # %bb.0:
1466 ; AVX-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1467 ; AVX-NEXT: vsubss %xmm0, %xmm1, %xmm0
1468 ; AVX-NEXT: vzeroupper
1469 ; AVX-NEXT: retq
1489 ; AVX-SLOW-LABEL: extract_extract01_v8f64_fsub_f64:
1490 ; AVX-SLOW: # %bb.0:
1491 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1492 ; AVX-SLOW-NEXT: vsubsd %xmm1, %xmm0, %xmm0
1493 ; AVX-SLOW-NEXT: vzeroupper
1494 ; AVX-SLOW-NEXT: retq
1496 ; AVX-FAST-LABEL: extract_extract01_v8f64_fsub_f64:
1497 ; AVX-FAST: # %bb.0:
1498 ; AVX-FAST-NEXT: vhsubpd %xmm0, %xmm0, %xmm0
1499 ; AVX-FAST-NEXT: vzeroupper
1500 ; AVX-FAST-NEXT: retq
1516 ; AVX-LABEL: extract_extract01_v8f64_fsub_f64_commute:
1517 ; AVX: # %bb.0:
1518 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1519 ; AVX-NEXT: vsubsd %xmm0, %xmm1, %xmm0
1520 ; AVX-NEXT: vzeroupper
1521 ; AVX-NEXT: retq
1544 ; AVX-SLOW-LABEL: extract_extract01_v4f32_fadd_f32_uses1:
1545 ; AVX-SLOW: # %bb.0:
1546 ; AVX-SLOW-NEXT: vmovss %xmm0, (%rdi)
1547 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1548 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
1549 ; AVX-SLOW-NEXT: retq
1551 ; AVX-FAST-LABEL: extract_extract01_v4f32_fadd_f32_uses1:
1552 ; AVX-FAST: # %bb.0:
1553 ; AVX-FAST-NEXT: vmovss %xmm0, (%rdi)
1554 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1555 ; AVX-FAST-NEXT: retq
1578 ; AVX-SLOW-LABEL: extract_extract01_v4f32_fadd_f32_uses2:
1579 ; AVX-SLOW: # %bb.0:
1580 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1581 ; AVX-SLOW-NEXT: vmovss %xmm1, (%rdi)
1582 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
1583 ; AVX-SLOW-NEXT: retq
1585 ; AVX-FAST-LABEL: extract_extract01_v4f32_fadd_f32_uses2:
1586 ; AVX-FAST: # %bb.0:
1587 ; AVX-FAST-NEXT: vextractps $1, %xmm0, (%rdi)
1588 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1589 ; AVX-FAST-NEXT: retq
1606 ; AVX-LABEL: extract_extract01_v4f32_fadd_f32_uses3:
1607 ; AVX: # %bb.0:
1608 ; AVX-NEXT: vmovss %xmm0, (%rdi)
1609 ; AVX-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1610 ; AVX-NEXT: vmovss %xmm1, (%rsi)
1611 ; AVX-NEXT: vaddss %xmm1, %xmm0, %xmm0
1612 ; AVX-NEXT: retq
1647 ; AVX-SLOW-LABEL: fadd_reduce_v8f32:
1648 ; AVX-SLOW: # %bb.0:
1649 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm1, %xmm2
1650 ; AVX-SLOW-NEXT: vaddps %xmm2, %xmm1, %xmm1
1651 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm1[1,0]
1652 ; AVX-SLOW-NEXT: vaddps %xmm2, %xmm1, %xmm1
1653 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm2 = xmm1[1,1,3,3]
1654 ; AVX-SLOW-NEXT: vaddss %xmm2, %xmm1, %xmm1
1655 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
1656 ; AVX-SLOW-NEXT: vzeroupper
1657 ; AVX-SLOW-NEXT: retq
1659 ; AVX-FAST-LABEL: fadd_reduce_v8f32:
1660 ; AVX-FAST: # %bb.0:
1661 ; AVX-FAST-NEXT: vextractf128 $1, %ymm1, %xmm2
1662 ; AVX-FAST-NEXT: vhaddps %xmm1, %xmm2, %xmm1
1663 ; AVX-FAST-NEXT: vhaddps %xmm1, %xmm1, %xmm1
1664 ; AVX-FAST-NEXT: vhaddps %xmm1, %xmm1, %xmm1
1665 ; AVX-FAST-NEXT: vaddss %xmm1, %xmm0, %xmm0
1666 ; AVX-FAST-NEXT: vzeroupper
1667 ; AVX-FAST-NEXT: retq
1689 ; AVX-SLOW-LABEL: fadd_reduce_v4f64:
1690 ; AVX-SLOW: # %bb.0:
1691 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm1, %xmm2
1692 ; AVX-SLOW-NEXT: vaddpd %xmm2, %xmm1, %xmm1
1693 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm2 = xmm1[1,0]
1694 ; AVX-SLOW-NEXT: vaddsd %xmm2, %xmm1, %xmm1
1695 ; AVX-SLOW-NEXT: vaddsd %xmm1, %xmm0, %xmm0
1696 ; AVX-SLOW-NEXT: vzeroupper
1697 ; AVX-SLOW-NEXT: retq
1699 ; AVX-FAST-LABEL: fadd_reduce_v4f64:
1700 ; AVX-FAST: # %bb.0:
1701 ; AVX-FAST-NEXT: vextractf128 $1, %ymm1, %xmm2
1702 ; AVX-FAST-NEXT: vhaddpd %xmm1, %xmm2, %xmm1
1703 ; AVX-FAST-NEXT: vhaddpd %xmm1, %xmm1, %xmm1
1704 ; AVX-FAST-NEXT: vaddsd %xmm1, %xmm0, %xmm0
1705 ; AVX-FAST-NEXT: vzeroupper
1706 ; AVX-FAST-NEXT: retq
1745 ; AVX-SLOW-LABEL: PR39936_v8f32:
1746 ; AVX-SLOW: # %bb.0:
1747 ; AVX-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm1
1748 ; AVX-SLOW-NEXT: vhaddps %xmm1, %xmm0, %xmm0
1749 ; AVX-SLOW-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1750 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1751 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
1752 ; AVX-SLOW-NEXT: vzeroupper
1753 ; AVX-SLOW-NEXT: retq
1755 ; AVX-FAST-LABEL: PR39936_v8f32:
1756 ; AVX-FAST: # %bb.0:
1757 ; AVX-FAST-NEXT: vextractf128 $1, %ymm0, %xmm1
1758 ; AVX-FAST-NEXT: vhaddps %xmm1, %xmm0, %xmm0
1759 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1760 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1761 ; AVX-FAST-NEXT: vzeroupper
1762 ; AVX-FAST-NEXT: retq
1793 ; AVX-SLOW-LABEL: hadd32_4:
1794 ; AVX-SLOW: # %bb.0:
1795 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1796 ; AVX-SLOW-NEXT: vaddps %xmm1, %xmm0, %xmm0
1797 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1798 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
1799 ; AVX-SLOW-NEXT: retq
1801 ; AVX-FAST-LABEL: hadd32_4:
1802 ; AVX-FAST: # %bb.0:
1803 ; AVX-FAST-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1804 ; AVX-FAST-NEXT: vaddps %xmm1, %xmm0, %xmm0
1805 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1806 ; AVX-FAST-NEXT: retq
1833 ; AVX-SLOW-LABEL: hadd32_8:
1834 ; AVX-SLOW: # %bb.0:
1835 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1836 ; AVX-SLOW-NEXT: vaddps %xmm1, %xmm0, %xmm0
1837 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1838 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
1839 ; AVX-SLOW-NEXT: vzeroupper
1840 ; AVX-SLOW-NEXT: retq
1842 ; AVX-FAST-LABEL: hadd32_8:
1843 ; AVX-FAST: # %bb.0:
1844 ; AVX-FAST-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1845 ; AVX-FAST-NEXT: vaddps %xmm1, %xmm0, %xmm0
1846 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1847 ; AVX-FAST-NEXT: vzeroupper
1848 ; AVX-FAST-NEXT: retq
1875 ; AVX-SLOW-LABEL: hadd32_16:
1876 ; AVX-SLOW: # %bb.0:
1877 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1878 ; AVX-SLOW-NEXT: vaddps %xmm1, %xmm0, %xmm0
1879 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1880 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
1881 ; AVX-SLOW-NEXT: vzeroupper
1882 ; AVX-SLOW-NEXT: retq
1884 ; AVX-FAST-LABEL: hadd32_16:
1885 ; AVX-FAST: # %bb.0:
1886 ; AVX-FAST-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1887 ; AVX-FAST-NEXT: vaddps %xmm1, %xmm0, %xmm0
1888 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1889 ; AVX-FAST-NEXT: vzeroupper
1890 ; AVX-FAST-NEXT: retq
1908 ; AVX-LABEL: hadd32_4_optsize:
1909 ; AVX: # %bb.0:
1910 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1911 ; AVX-NEXT: vaddps %xmm1, %xmm0, %xmm0
1912 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1913 ; AVX-NEXT: retq
1931 ; AVX-LABEL: hadd32_8_optsize:
1932 ; AVX: # %bb.0:
1933 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1934 ; AVX-NEXT: vaddps %xmm1, %xmm0, %xmm0
1935 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1936 ; AVX-NEXT: vzeroupper
1937 ; AVX-NEXT: retq
1955 ; AVX-LABEL: hadd32_16_optsize:
1956 ; AVX: # %bb.0:
1957 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1958 ; AVX-NEXT: vaddps %xmm1, %xmm0, %xmm0
1959 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1960 ; AVX-NEXT: vzeroupper
1961 ; AVX-NEXT: retq
1979 ; AVX-LABEL: hadd32_4_pgso:
1980 ; AVX: # %bb.0:
1981 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
1982 ; AVX-NEXT: vaddps %xmm1, %xmm0, %xmm0
1983 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
1984 ; AVX-NEXT: retq
2002 ; AVX-LABEL: hadd32_8_pgso:
2003 ; AVX: # %bb.0:
2004 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
2005 ; AVX-NEXT: vaddps %xmm1, %xmm0, %xmm0
2006 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
2007 ; AVX-NEXT: vzeroupper
2008 ; AVX-NEXT: retq
2026 ; AVX-LABEL: hadd32_16_pgso:
2027 ; AVX: # %bb.0:
2028 ; AVX-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
2029 ; AVX-NEXT: vaddps %xmm1, %xmm0, %xmm0
2030 ; AVX-NEXT: vhaddps %xmm0, %xmm0, %xmm0
2031 ; AVX-NEXT: vzeroupper
2032 ; AVX-NEXT: retq
2059 ; AVX-SLOW-LABEL: partial_reduction_fadd_v8f32:
2060 ; AVX-SLOW: # %bb.0:
2061 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
2062 ; AVX-SLOW-NEXT: vaddps %xmm1, %xmm0, %xmm0
2063 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
2064 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
2065 ; AVX-SLOW-NEXT: vzeroupper
2066 ; AVX-SLOW-NEXT: retq
2068 ; AVX-FAST-LABEL: partial_reduction_fadd_v8f32:
2069 ; AVX-FAST: # %bb.0:
2070 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
2071 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
2072 ; AVX-FAST-NEXT: vzeroupper
2073 ; AVX-FAST-NEXT: retq
2103 ; AVX-SLOW-LABEL: partial_reduction_fadd_v8f32_wrong_flags:
2104 ; AVX-SLOW: # %bb.0:
2105 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
2106 ; AVX-SLOW-NEXT: vaddps %xmm1, %xmm0, %xmm0
2107 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
2108 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
2109 ; AVX-SLOW-NEXT: vzeroupper
2110 ; AVX-SLOW-NEXT: retq
2112 ; AVX-FAST-LABEL: partial_reduction_fadd_v8f32_wrong_flags:
2113 ; AVX-FAST: # %bb.0:
2114 ; AVX-FAST-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
2115 ; AVX-FAST-NEXT: vaddps %xmm1, %xmm0, %xmm0
2116 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
2117 ; AVX-FAST-NEXT: vzeroupper
2118 ; AVX-FAST-NEXT: retq
2145 ; AVX-SLOW-LABEL: partial_reduction_fadd_v16f32:
2146 ; AVX-SLOW: # %bb.0:
2147 ; AVX-SLOW-NEXT: vpermilpd {{.*#+}} xmm1 = xmm0[1,0]
2148 ; AVX-SLOW-NEXT: vaddps %xmm1, %xmm0, %xmm0
2149 ; AVX-SLOW-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
2150 ; AVX-SLOW-NEXT: vaddss %xmm1, %xmm0, %xmm0
2151 ; AVX-SLOW-NEXT: vzeroupper
2152 ; AVX-SLOW-NEXT: retq
2154 ; AVX-FAST-LABEL: partial_reduction_fadd_v16f32:
2155 ; AVX-FAST: # %bb.0:
2156 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
2157 ; AVX-FAST-NEXT: vhaddps %xmm0, %xmm0, %xmm0
2158 ; AVX-FAST-NEXT: vzeroupper
2159 ; AVX-FAST-NEXT: retq