Lines Matching refs:SSSE3
2 …llc < %s -mtriple=x86_64-unknown -mattr=+ssse3 | FileCheck %s --check-prefixes=SSSE3-SLOW
3 …llc < %s -mtriple=x86_64-unknown -mattr=+ssse3,fast-hops | FileCheck %s --check-prefixes=SSSE3-FAST
20 ; SSSE3-SLOW-LABEL: pair_sum_v4f32_v4f32:
21 ; SSSE3-SLOW: # %bb.0:
22 ; SSSE3-SLOW-NEXT: haddps %xmm1, %xmm0
23 ; SSSE3-SLOW-NEXT: haddps %xmm2, %xmm3
24 ; SSSE3-SLOW-NEXT: haddps %xmm3, %xmm0
25 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1,3,2]
26 ; SSSE3-SLOW-NEXT: retq
28 ; SSSE3-FAST-LABEL: pair_sum_v4f32_v4f32:
29 ; SSSE3-FAST: # %bb.0:
30 ; SSSE3-FAST-NEXT: haddps %xmm1, %xmm0
31 ; SSSE3-FAST-NEXT: haddps %xmm3, %xmm2
32 ; SSSE3-FAST-NEXT: haddps %xmm2, %xmm0
33 ; SSSE3-FAST-NEXT: retq
94 ; SSSE3-SLOW-LABEL: pair_sum_v4i32_v4i32:
95 ; SSSE3-SLOW: # %bb.0:
96 ; SSSE3-SLOW-NEXT: phaddd %xmm1, %xmm0
97 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,3,1,3]
98 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
99 ; SSSE3-SLOW-NEXT: paddd %xmm1, %xmm0
100 ; SSSE3-SLOW-NEXT: phaddd %xmm2, %xmm3
101 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3]
102 ; SSSE3-SLOW-NEXT: paddd %xmm3, %xmm1
103 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,0]
104 ; SSSE3-SLOW-NEXT: retq
106 ; SSSE3-FAST-LABEL: pair_sum_v4i32_v4i32:
107 ; SSSE3-FAST: # %bb.0:
108 ; SSSE3-FAST-NEXT: phaddd %xmm1, %xmm0
109 ; SSSE3-FAST-NEXT: phaddd %xmm3, %xmm2
110 ; SSSE3-FAST-NEXT: phaddd %xmm2, %xmm0
111 ; SSSE3-FAST-NEXT: retq
186 ; SSSE3-SLOW-LABEL: pair_sum_v8f32_v4f32:
187 ; SSSE3-SLOW: # %bb.0:
188 ; SSSE3-SLOW-NEXT: haddps %xmm1, %xmm0
189 ; SSSE3-SLOW-NEXT: movaps %xmm0, %xmm1
190 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,3],xmm0[1,3]
191 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2,1,3]
192 ; SSSE3-SLOW-NEXT: addps %xmm1, %xmm0
193 ; SSSE3-SLOW-NEXT: haddps %xmm3, %xmm2
194 ; SSSE3-SLOW-NEXT: movaps %xmm5, %xmm1
195 ; SSSE3-SLOW-NEXT: haddps %xmm4, %xmm1
196 ; SSSE3-SLOW-NEXT: haddps %xmm1, %xmm2
197 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,1,3,2]
198 ; SSSE3-SLOW-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]
199 ; SSSE3-SLOW-NEXT: haddps %xmm7, %xmm6
200 ; SSSE3-SLOW-NEXT: haddps %xmm5, %xmm4
201 ; SSSE3-SLOW-NEXT: haddps %xmm6, %xmm4
202 ; SSSE3-SLOW-NEXT: movaps %xmm4, %xmm1
203 ; SSSE3-SLOW-NEXT: retq
205 ; SSSE3-FAST-LABEL: pair_sum_v8f32_v4f32:
206 ; SSSE3-FAST: # %bb.0:
207 ; SSSE3-FAST-NEXT: haddps %xmm1, %xmm0
208 ; SSSE3-FAST-NEXT: haddps %xmm0, %xmm0
209 ; SSSE3-FAST-NEXT: haddps %xmm3, %xmm2
210 ; SSSE3-FAST-NEXT: haddps %xmm5, %xmm4
211 ; SSSE3-FAST-NEXT: haddps %xmm4, %xmm2
212 ; SSSE3-FAST-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]
213 ; SSSE3-FAST-NEXT: haddps %xmm7, %xmm6
214 ; SSSE3-FAST-NEXT: haddps %xmm6, %xmm4
215 ; SSSE3-FAST-NEXT: movaps %xmm4, %xmm1
216 ; SSSE3-FAST-NEXT: retq
354 ; SSSE3-SLOW-LABEL: pair_sum_v8i32_v4i32:
355 ; SSSE3-SLOW: # %bb.0:
356 ; SSSE3-SLOW-NEXT: phaddd %xmm1, %xmm0
357 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,3,1,3]
358 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
359 ; SSSE3-SLOW-NEXT: paddd %xmm1, %xmm0
360 ; SSSE3-SLOW-NEXT: phaddd %xmm3, %xmm2
361 ; SSSE3-SLOW-NEXT: phaddd %xmm4, %xmm5
362 ; SSSE3-SLOW-NEXT: phaddd %xmm5, %xmm2
363 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm2[0,1,3,2]
364 ; SSSE3-SLOW-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
365 ; SSSE3-SLOW-NEXT: phaddd %xmm7, %xmm6
366 ; SSSE3-SLOW-NEXT: phaddd %xmm6, %xmm6
367 ; SSSE3-SLOW-NEXT: palignr {{.*#+}} xmm6 = xmm1[8,9,10,11,12,13,14,15],xmm6[0,1,2,3,4,5,6,7]
368 ; SSSE3-SLOW-NEXT: movdqa %xmm6, %xmm1
369 ; SSSE3-SLOW-NEXT: retq
371 ; SSSE3-FAST-LABEL: pair_sum_v8i32_v4i32:
372 ; SSSE3-FAST: # %bb.0:
373 ; SSSE3-FAST-NEXT: phaddd %xmm1, %xmm0
374 ; SSSE3-FAST-NEXT: phaddd %xmm0, %xmm0
375 ; SSSE3-FAST-NEXT: phaddd %xmm3, %xmm2
376 ; SSSE3-FAST-NEXT: phaddd %xmm5, %xmm4
377 ; SSSE3-FAST-NEXT: phaddd %xmm4, %xmm2
378 ; SSSE3-FAST-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
379 ; SSSE3-FAST-NEXT: phaddd %xmm6, %xmm6
380 ; SSSE3-FAST-NEXT: phaddd %xmm7, %xmm7
381 ; SSSE3-FAST-NEXT: phaddd %xmm7, %xmm6
382 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm2 = xmm2[2,3],xmm6[0,2]
383 ; SSSE3-FAST-NEXT: movaps %xmm2, %xmm1
384 ; SSSE3-FAST-NEXT: retq
536 ; SSSE3-SLOW-LABEL: sequential_sum_v4f32_v4f32:
537 ; SSSE3-SLOW: # %bb.0:
538 ; SSSE3-SLOW-NEXT: movaps %xmm0, %xmm5
539 ; SSSE3-SLOW-NEXT: haddps %xmm1, %xmm5
540 ; SSSE3-SLOW-NEXT: movaps %xmm0, %xmm4
541 ; SSSE3-SLOW-NEXT: unpckhps {{.*#+}} xmm4 = xmm4[2],xmm1[2],xmm4[3],xmm1[3]
542 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3],xmm0[3,3]
543 ; SSSE3-SLOW-NEXT: movshdup {{.*#+}} xmm0 = xmm2[1,1,3,3]
544 ; SSSE3-SLOW-NEXT: addps %xmm2, %xmm0
545 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm0[0,1]
546 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,3]
547 ; SSSE3-SLOW-NEXT: addps %xmm5, %xmm4
548 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm2[3,3]
549 ; SSSE3-SLOW-NEXT: addps %xmm1, %xmm4
550 ; SSSE3-SLOW-NEXT: movshdup {{.*#+}} xmm0 = xmm3[1,1,3,3]
551 ; SSSE3-SLOW-NEXT: addps %xmm3, %xmm0
552 ; SSSE3-SLOW-NEXT: movaps %xmm3, %xmm1
553 ; SSSE3-SLOW-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm3[1]
554 ; SSSE3-SLOW-NEXT: addps %xmm0, %xmm1
555 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,3,3,3]
556 ; SSSE3-SLOW-NEXT: addps %xmm1, %xmm3
557 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3]
558 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[2,0]
559 ; SSSE3-SLOW-NEXT: movaps %xmm4, %xmm0
560 ; SSSE3-SLOW-NEXT: retq
562 ; SSSE3-FAST-LABEL: sequential_sum_v4f32_v4f32:
563 ; SSSE3-FAST: # %bb.0:
564 ; SSSE3-FAST-NEXT: movaps %xmm0, %xmm5
565 ; SSSE3-FAST-NEXT: haddps %xmm1, %xmm5
566 ; SSSE3-FAST-NEXT: movaps %xmm0, %xmm4
567 ; SSSE3-FAST-NEXT: unpckhps {{.*#+}} xmm4 = xmm4[2],xmm1[2],xmm4[3],xmm1[3]
568 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3],xmm0[3,3]
569 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,3]
570 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm2[3,3]
571 ; SSSE3-FAST-NEXT: haddps %xmm2, %xmm2
572 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,2],xmm2[0,1]
573 ; SSSE3-FAST-NEXT: addps %xmm5, %xmm4
574 ; SSSE3-FAST-NEXT: addps %xmm1, %xmm4
575 ; SSSE3-FAST-NEXT: movaps %xmm3, %xmm0
576 ; SSSE3-FAST-NEXT: haddps %xmm3, %xmm0
577 ; SSSE3-FAST-NEXT: movaps %xmm3, %xmm1
578 ; SSSE3-FAST-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm3[1]
579 ; SSSE3-FAST-NEXT: addps %xmm0, %xmm1
580 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,3,3,3]
581 ; SSSE3-FAST-NEXT: addps %xmm1, %xmm3
582 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3]
583 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[2,0]
584 ; SSSE3-FAST-NEXT: movaps %xmm4, %xmm0
585 ; SSSE3-FAST-NEXT: retq
650 ; SSSE3-SLOW-LABEL: sequential_sum_v4i32_v4i32:
651 ; SSSE3-SLOW: # %bb.0:
652 ; SSSE3-SLOW-NEXT: movdqa %xmm0, %xmm4
653 ; SSSE3-SLOW-NEXT: phaddd %xmm1, %xmm4
654 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]
655 ; SSSE3-SLOW-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
656 ; SSSE3-SLOW-NEXT: paddd %xmm0, %xmm4
657 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,1,1]
658 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,1,0,1]
659 ; SSSE3-SLOW-NEXT: paddd %xmm2, %xmm5
660 ; SSSE3-SLOW-NEXT: paddd %xmm1, %xmm5
661 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,1,1]
662 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm6 = xmm3[2,3,2,3]
663 ; SSSE3-SLOW-NEXT: paddd %xmm3, %xmm6
664 ; SSSE3-SLOW-NEXT: paddd %xmm1, %xmm6
665 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm6 = xmm6[0,1],xmm5[2,3]
666 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm6[2,0]
667 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,3],xmm2[3,3]
668 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,3],xmm3[2,0]
669 ; SSSE3-SLOW-NEXT: paddd %xmm4, %xmm0
670 ; SSSE3-SLOW-NEXT: retq
672 ; SSSE3-FAST-LABEL: sequential_sum_v4i32_v4i32:
673 ; SSSE3-FAST: # %bb.0:
674 ; SSSE3-FAST-NEXT: movdqa %xmm0, %xmm4
675 ; SSSE3-FAST-NEXT: phaddd %xmm1, %xmm4
676 ; SSSE3-FAST-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]
677 ; SSSE3-FAST-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
678 ; SSSE3-FAST-NEXT: paddd %xmm0, %xmm4
679 ; SSSE3-FAST-NEXT: movdqa %xmm2, %xmm1
680 ; SSSE3-FAST-NEXT: phaddd %xmm2, %xmm1
681 ; SSSE3-FAST-NEXT: paddd %xmm2, %xmm1
682 ; SSSE3-FAST-NEXT: movdqa %xmm3, %xmm5
683 ; SSSE3-FAST-NEXT: phaddd %xmm3, %xmm5
684 ; SSSE3-FAST-NEXT: pshufd {{.*#+}} xmm6 = xmm3[2,3,2,3]
685 ; SSSE3-FAST-NEXT: paddd %xmm5, %xmm6
686 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm6 = xmm6[0,1],xmm1[2,3]
687 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm6[2,0]
688 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,3],xmm2[3,3]
689 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,3],xmm3[2,0]
690 ; SSSE3-FAST-NEXT: paddd %xmm4, %xmm0
691 ; SSSE3-FAST-NEXT: retq
820 ; SSSE3-SLOW-LABEL: reduction_sum_v4f32_v4f32:
821 ; SSSE3-SLOW: # %bb.0:
822 ; SSSE3-SLOW-NEXT: movshdup {{.*#+}} xmm4 = xmm0[1,1,3,3]
823 ; SSSE3-SLOW-NEXT: addss %xmm0, %xmm4
824 ; SSSE3-SLOW-NEXT: movaps %xmm0, %xmm5
825 ; SSSE3-SLOW-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]
826 ; SSSE3-SLOW-NEXT: addss %xmm4, %xmm5
827 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]
828 ; SSSE3-SLOW-NEXT: addss %xmm5, %xmm0
829 ; SSSE3-SLOW-NEXT: movshdup {{.*#+}} xmm4 = xmm1[1,1,3,3]
830 ; SSSE3-SLOW-NEXT: addss %xmm1, %xmm4
831 ; SSSE3-SLOW-NEXT: movaps %xmm1, %xmm5
832 ; SSSE3-SLOW-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]
833 ; SSSE3-SLOW-NEXT: addss %xmm4, %xmm5
834 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]
835 ; SSSE3-SLOW-NEXT: addss %xmm5, %xmm1
836 ; SSSE3-SLOW-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
837 ; SSSE3-SLOW-NEXT: movshdup {{.*#+}} xmm1 = xmm2[1,1,3,3]
838 ; SSSE3-SLOW-NEXT: addss %xmm2, %xmm1
839 ; SSSE3-SLOW-NEXT: movaps %xmm2, %xmm4
840 ; SSSE3-SLOW-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]
841 ; SSSE3-SLOW-NEXT: addss %xmm1, %xmm4
842 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,3,3,3]
843 ; SSSE3-SLOW-NEXT: addss %xmm4, %xmm2
844 ; SSSE3-SLOW-NEXT: movshdup {{.*#+}} xmm1 = xmm3[1,1,3,3]
845 ; SSSE3-SLOW-NEXT: addss %xmm3, %xmm1
846 ; SSSE3-SLOW-NEXT: movaps %xmm3, %xmm4
847 ; SSSE3-SLOW-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]
848 ; SSSE3-SLOW-NEXT: addss %xmm1, %xmm4
849 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,3,3,3]
850 ; SSSE3-SLOW-NEXT: addss %xmm4, %xmm3
851 ; SSSE3-SLOW-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
852 ; SSSE3-SLOW-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]
853 ; SSSE3-SLOW-NEXT: retq
855 ; SSSE3-FAST-LABEL: reduction_sum_v4f32_v4f32:
856 ; SSSE3-FAST: # %bb.0:
857 ; SSSE3-FAST-NEXT: movaps %xmm0, %xmm4
858 ; SSSE3-FAST-NEXT: haddps %xmm0, %xmm4
859 ; SSSE3-FAST-NEXT: movaps %xmm0, %xmm5
860 ; SSSE3-FAST-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm0[1]
861 ; SSSE3-FAST-NEXT: addss %xmm4, %xmm5
862 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]
863 ; SSSE3-FAST-NEXT: addss %xmm5, %xmm0
864 ; SSSE3-FAST-NEXT: movaps %xmm1, %xmm4
865 ; SSSE3-FAST-NEXT: haddps %xmm1, %xmm4
866 ; SSSE3-FAST-NEXT: movaps %xmm1, %xmm5
867 ; SSSE3-FAST-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]
868 ; SSSE3-FAST-NEXT: addss %xmm4, %xmm5
869 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]
870 ; SSSE3-FAST-NEXT: addss %xmm5, %xmm1
871 ; SSSE3-FAST-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
872 ; SSSE3-FAST-NEXT: movaps %xmm2, %xmm1
873 ; SSSE3-FAST-NEXT: haddps %xmm2, %xmm1
874 ; SSSE3-FAST-NEXT: movaps %xmm2, %xmm4
875 ; SSSE3-FAST-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]
876 ; SSSE3-FAST-NEXT: addss %xmm1, %xmm4
877 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,3,3,3]
878 ; SSSE3-FAST-NEXT: addss %xmm4, %xmm2
879 ; SSSE3-FAST-NEXT: movaps %xmm3, %xmm1
880 ; SSSE3-FAST-NEXT: haddps %xmm3, %xmm1
881 ; SSSE3-FAST-NEXT: movaps %xmm3, %xmm4
882 ; SSSE3-FAST-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]
883 ; SSSE3-FAST-NEXT: addss %xmm1, %xmm4
884 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,3,3,3]
885 ; SSSE3-FAST-NEXT: addss %xmm4, %xmm3
886 ; SSSE3-FAST-NEXT: unpcklps {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
887 ; SSSE3-FAST-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]
888 ; SSSE3-FAST-NEXT: retq
960 ; SSSE3-SLOW-LABEL: reduction_sum_v4f32_v4f32_reassoc:
961 ; SSSE3-SLOW: # %bb.0:
962 ; SSSE3-SLOW-NEXT: movaps %xmm0, %xmm4
963 ; SSSE3-SLOW-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]
964 ; SSSE3-SLOW-NEXT: addps %xmm4, %xmm0
965 ; SSSE3-SLOW-NEXT: movshdup {{.*#+}} xmm4 = xmm0[1,1,3,3]
966 ; SSSE3-SLOW-NEXT: movaps %xmm1, %xmm5
967 ; SSSE3-SLOW-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm1[1]
968 ; SSSE3-SLOW-NEXT: addps %xmm1, %xmm5
969 ; SSSE3-SLOW-NEXT: movshdup {{.*#+}} xmm1 = xmm5[1,1,3,3]
970 ; SSSE3-SLOW-NEXT: unpcklps {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]
971 ; SSSE3-SLOW-NEXT: movaps %xmm2, %xmm1
972 ; SSSE3-SLOW-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm2[1]
973 ; SSSE3-SLOW-NEXT: addps %xmm2, %xmm1
974 ; SSSE3-SLOW-NEXT: movaps %xmm3, %xmm2
975 ; SSSE3-SLOW-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm3[1]
976 ; SSSE3-SLOW-NEXT: addps %xmm3, %xmm2
977 ; SSSE3-SLOW-NEXT: movaps %xmm2, %xmm3
978 ; SSSE3-SLOW-NEXT: movlhps {{.*#+}} xmm3 = xmm3[0],xmm1[0]
979 ; SSSE3-SLOW-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1]
980 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm3[2,0]
981 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1],xmm1[1,1]
982 ; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,0]
983 ; SSSE3-SLOW-NEXT: addps %xmm4, %xmm0
984 ; SSSE3-SLOW-NEXT: retq
986 ; SSSE3-FAST-LABEL: reduction_sum_v4f32_v4f32_reassoc:
987 ; SSSE3-FAST: # %bb.0:
988 ; SSSE3-FAST-NEXT: movaps %xmm0, %xmm4
989 ; SSSE3-FAST-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]
990 ; SSSE3-FAST-NEXT: addps %xmm4, %xmm0
991 ; SSSE3-FAST-NEXT: movaps %xmm1, %xmm4
992 ; SSSE3-FAST-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm1[1]
993 ; SSSE3-FAST-NEXT: addps %xmm1, %xmm4
994 ; SSSE3-FAST-NEXT: haddps %xmm4, %xmm0
995 ; SSSE3-FAST-NEXT: movaps %xmm2, %xmm1
996 ; SSSE3-FAST-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm2[1]
997 ; SSSE3-FAST-NEXT: addps %xmm2, %xmm1
998 ; SSSE3-FAST-NEXT: movaps %xmm3, %xmm2
999 ; SSSE3-FAST-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1],xmm3[1]
1000 ; SSSE3-FAST-NEXT: addps %xmm3, %xmm2
1001 ; SSSE3-FAST-NEXT: haddps %xmm2, %xmm1
1002 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm1[0,2]
1003 ; SSSE3-FAST-NEXT: retq
1050 ; SSSE3-SLOW-LABEL: reduction_sum_v4i32_v4i32:
1051 ; SSSE3-SLOW: # %bb.0:
1052 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm4 = xmm0[2,3,2,3]
1053 ; SSSE3-SLOW-NEXT: paddd %xmm4, %xmm0
1054 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,1,1]
1055 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm5 = xmm1[2,3,2,3]
1056 ; SSSE3-SLOW-NEXT: paddd %xmm1, %xmm5
1057 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm5[1,1,1,1]
1058 ; SSSE3-SLOW-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]
1059 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm2[2,3,2,3]
1060 ; SSSE3-SLOW-NEXT: paddd %xmm2, %xmm1
1061 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,1,1]
1062 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm6 = xmm3[2,3,2,3]
1063 ; SSSE3-SLOW-NEXT: paddd %xmm3, %xmm6
1064 ; SSSE3-SLOW-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,1,1]
1065 ; SSSE3-SLOW-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1066 ; SSSE3-SLOW-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]
1067 ; SSSE3-SLOW-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1]
1068 ; SSSE3-SLOW-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1]
1069 ; SSSE3-SLOW-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1070 ; SSSE3-SLOW-NEXT: paddd %xmm4, %xmm0
1071 ; SSSE3-SLOW-NEXT: retq
1073 ; SSSE3-FAST-LABEL: reduction_sum_v4i32_v4i32:
1074 ; SSSE3-FAST: # %bb.0:
1075 ; SSSE3-FAST-NEXT: pshufd {{.*#+}} xmm4 = xmm0[2,3,2,3]
1076 ; SSSE3-FAST-NEXT: paddd %xmm4, %xmm0
1077 ; SSSE3-FAST-NEXT: pshufd {{.*#+}} xmm4 = xmm1[2,3,2,3]
1078 ; SSSE3-FAST-NEXT: paddd %xmm1, %xmm4
1079 ; SSSE3-FAST-NEXT: phaddd %xmm4, %xmm0
1080 ; SSSE3-FAST-NEXT: pshufd {{.*#+}} xmm1 = xmm2[2,3,2,3]
1081 ; SSSE3-FAST-NEXT: paddd %xmm2, %xmm1
1082 ; SSSE3-FAST-NEXT: pshufd {{.*#+}} xmm2 = xmm3[2,3,2,3]
1083 ; SSSE3-FAST-NEXT: paddd %xmm3, %xmm2
1084 ; SSSE3-FAST-NEXT: phaddd %xmm2, %xmm1
1085 ; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm1[0,2]
1086 ; SSSE3-FAST-NEXT: retq