Lines Matching refs:SSE3

2 …s -mtriple=x86_64-unknown -mattr=+ssse3              | FileCheck %s --check-prefixes=SSE3,SSE3-SLOW
3 …s -mtriple=x86_64-unknown -mattr=+ssse3,fast-hops | FileCheck %s --check-prefixes=SSE3,SSE3-FAST
14 ; SSE3-SLOW-LABEL: extract_extract01_v4i32_add_i32:
15 ; SSE3-SLOW: # %bb.0:
16 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
17 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
18 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
19 ; SSE3-SLOW-NEXT: addl %ecx, %eax
20 ; SSE3-SLOW-NEXT: retq
22 ; SSE3-FAST-LABEL: extract_extract01_v4i32_add_i32:
23 ; SSE3-FAST: # %bb.0:
24 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
25 ; SSE3-FAST-NEXT: movd %xmm0, %eax
26 ; SSE3-FAST-NEXT: retq
47 ; SSE3-SLOW-LABEL: extract_extract23_v4i32_add_i32:
48 ; SSE3-SLOW: # %bb.0:
49 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
50 ; SSE3-SLOW-NEXT: movd %xmm1, %ecx
51 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
52 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
53 ; SSE3-SLOW-NEXT: addl %ecx, %eax
54 ; SSE3-SLOW-NEXT: retq
56 ; SSE3-FAST-LABEL: extract_extract23_v4i32_add_i32:
57 ; SSE3-FAST: # %bb.0:
58 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
59 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
60 ; SSE3-FAST-NEXT: movd %xmm0, %eax
61 ; SSE3-FAST-NEXT: retq
82 ; SSE3-SLOW-LABEL: extract_extract01_v4i32_add_i32_commute:
83 ; SSE3-SLOW: # %bb.0:
84 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
85 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
86 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
87 ; SSE3-SLOW-NEXT: addl %ecx, %eax
88 ; SSE3-SLOW-NEXT: retq
90 ; SSE3-FAST-LABEL: extract_extract01_v4i32_add_i32_commute:
91 ; SSE3-FAST: # %bb.0:
92 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
93 ; SSE3-FAST-NEXT: movd %xmm0, %eax
94 ; SSE3-FAST-NEXT: retq
115 ; SSE3-SLOW-LABEL: extract_extract23_v4i32_add_i32_commute:
116 ; SSE3-SLOW: # %bb.0:
117 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
118 ; SSE3-SLOW-NEXT: movd %xmm1, %ecx
119 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
120 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
121 ; SSE3-SLOW-NEXT: addl %ecx, %eax
122 ; SSE3-SLOW-NEXT: retq
124 ; SSE3-FAST-LABEL: extract_extract23_v4i32_add_i32_commute:
125 ; SSE3-FAST: # %bb.0:
126 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
127 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
128 ; SSE3-FAST-NEXT: movd %xmm0, %eax
129 ; SSE3-FAST-NEXT: retq
150 ; SSE3-SLOW-LABEL: extract_extract01_v8i16_add_i16:
151 ; SSE3-SLOW: # %bb.0:
152 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
153 ; SSE3-SLOW-NEXT: pextrw $1, %xmm0, %eax
154 ; SSE3-SLOW-NEXT: addl %ecx, %eax
155 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
156 ; SSE3-SLOW-NEXT: retq
158 ; SSE3-FAST-LABEL: extract_extract01_v8i16_add_i16:
159 ; SSE3-FAST: # %bb.0:
160 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
161 ; SSE3-FAST-NEXT: movd %xmm0, %eax
162 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
163 ; SSE3-FAST-NEXT: retq
186 ; SSE3-SLOW-LABEL: extract_extract45_v8i16_add_i16:
187 ; SSE3-SLOW: # %bb.0:
188 ; SSE3-SLOW-NEXT: pextrw $4, %xmm0, %ecx
189 ; SSE3-SLOW-NEXT: pextrw $5, %xmm0, %eax
190 ; SSE3-SLOW-NEXT: addl %ecx, %eax
191 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
192 ; SSE3-SLOW-NEXT: retq
194 ; SSE3-FAST-LABEL: extract_extract45_v8i16_add_i16:
195 ; SSE3-FAST: # %bb.0:
196 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
197 ; SSE3-FAST-NEXT: pextrw $2, %xmm0, %eax
198 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
199 ; SSE3-FAST-NEXT: retq
222 ; SSE3-SLOW-LABEL: extract_extract01_v8i16_add_i16_commute:
223 ; SSE3-SLOW: # %bb.0:
224 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
225 ; SSE3-SLOW-NEXT: pextrw $1, %xmm0, %eax
226 ; SSE3-SLOW-NEXT: addl %ecx, %eax
227 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
228 ; SSE3-SLOW-NEXT: retq
230 ; SSE3-FAST-LABEL: extract_extract01_v8i16_add_i16_commute:
231 ; SSE3-FAST: # %bb.0:
232 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
233 ; SSE3-FAST-NEXT: movd %xmm0, %eax
234 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
235 ; SSE3-FAST-NEXT: retq
258 ; SSE3-SLOW-LABEL: extract_extract45_v8i16_add_i16_commute:
259 ; SSE3-SLOW: # %bb.0:
260 ; SSE3-SLOW-NEXT: pextrw $4, %xmm0, %ecx
261 ; SSE3-SLOW-NEXT: pextrw $5, %xmm0, %eax
262 ; SSE3-SLOW-NEXT: addl %ecx, %eax
263 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
264 ; SSE3-SLOW-NEXT: retq
266 ; SSE3-FAST-LABEL: extract_extract45_v8i16_add_i16_commute:
267 ; SSE3-FAST: # %bb.0:
268 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
269 ; SSE3-FAST-NEXT: pextrw $2, %xmm0, %eax
270 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
271 ; SSE3-FAST-NEXT: retq
294 ; SSE3-SLOW-LABEL: extract_extract01_v4i32_sub_i32:
295 ; SSE3-SLOW: # %bb.0:
296 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
297 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
298 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
299 ; SSE3-SLOW-NEXT: subl %ecx, %eax
300 ; SSE3-SLOW-NEXT: retq
302 ; SSE3-FAST-LABEL: extract_extract01_v4i32_sub_i32:
303 ; SSE3-FAST: # %bb.0:
304 ; SSE3-FAST-NEXT: phsubd %xmm0, %xmm0
305 ; SSE3-FAST-NEXT: movd %xmm0, %eax
306 ; SSE3-FAST-NEXT: retq
327 ; SSE3-SLOW-LABEL: extract_extract23_v4i32_sub_i32:
328 ; SSE3-SLOW: # %bb.0:
329 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
330 ; SSE3-SLOW-NEXT: movd %xmm1, %eax
331 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
332 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
333 ; SSE3-SLOW-NEXT: subl %ecx, %eax
334 ; SSE3-SLOW-NEXT: retq
336 ; SSE3-FAST-LABEL: extract_extract23_v4i32_sub_i32:
337 ; SSE3-FAST: # %bb.0:
338 ; SSE3-FAST-NEXT: phsubd %xmm0, %xmm0
339 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
340 ; SSE3-FAST-NEXT: movd %xmm0, %eax
341 ; SSE3-FAST-NEXT: retq
362 ; SSE3-LABEL: extract_extract01_v4i32_sub_i32_commute:
363 ; SSE3: # %bb.0:
364 ; SSE3-NEXT: movd %xmm0, %ecx
365 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
366 ; SSE3-NEXT: movd %xmm0, %eax
367 ; SSE3-NEXT: subl %ecx, %eax
368 ; SSE3-NEXT: retq
383 ; SSE3-LABEL: extract_extract23_v4i32_sub_i32_commute:
384 ; SSE3: # %bb.0:
385 ; SSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
386 ; SSE3-NEXT: movd %xmm1, %ecx
387 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
388 ; SSE3-NEXT: movd %xmm0, %eax
389 ; SSE3-NEXT: subl %ecx, %eax
390 ; SSE3-NEXT: retq
405 ; SSE3-SLOW-LABEL: extract_extract01_v8i16_sub_i16:
406 ; SSE3-SLOW: # %bb.0:
407 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
408 ; SSE3-SLOW-NEXT: pextrw $1, %xmm0, %ecx
409 ; SSE3-SLOW-NEXT: subl %ecx, %eax
410 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
411 ; SSE3-SLOW-NEXT: retq
413 ; SSE3-FAST-LABEL: extract_extract01_v8i16_sub_i16:
414 ; SSE3-FAST: # %bb.0:
415 ; SSE3-FAST-NEXT: phsubw %xmm0, %xmm0
416 ; SSE3-FAST-NEXT: movd %xmm0, %eax
417 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
418 ; SSE3-FAST-NEXT: retq
441 ; SSE3-SLOW-LABEL: extract_extract23_v8i16_sub_i16:
442 ; SSE3-SLOW: # %bb.0:
443 ; SSE3-SLOW-NEXT: pextrw $2, %xmm0, %eax
444 ; SSE3-SLOW-NEXT: pextrw $3, %xmm0, %ecx
445 ; SSE3-SLOW-NEXT: subl %ecx, %eax
446 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
447 ; SSE3-SLOW-NEXT: retq
449 ; SSE3-FAST-LABEL: extract_extract23_v8i16_sub_i16:
450 ; SSE3-FAST: # %bb.0:
451 ; SSE3-FAST-NEXT: phsubw %xmm0, %xmm0
452 ; SSE3-FAST-NEXT: pextrw $1, %xmm0, %eax
453 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
454 ; SSE3-FAST-NEXT: retq
477 ; SSE3-LABEL: extract_extract01_v8i16_sub_i16_commute:
478 ; SSE3: # %bb.0:
479 ; SSE3-NEXT: movd %xmm0, %ecx
480 ; SSE3-NEXT: pextrw $1, %xmm0, %eax
481 ; SSE3-NEXT: subl %ecx, %eax
482 ; SSE3-NEXT: # kill: def $ax killed $ax killed $eax
483 ; SSE3-NEXT: retq
499 ; SSE3-LABEL: extract_extract23_v8i16_sub_i16_commute:
500 ; SSE3: # %bb.0:
501 ; SSE3-NEXT: pextrw $2, %xmm0, %ecx
502 ; SSE3-NEXT: pextrw $3, %xmm0, %eax
503 ; SSE3-NEXT: subl %ecx, %eax
504 ; SSE3-NEXT: # kill: def $ax killed $ax killed $eax
505 ; SSE3-NEXT: retq
523 ; SSE3-SLOW-LABEL: extract_extract01_v8i32_add_i32:
524 ; SSE3-SLOW: # %bb.0:
525 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
526 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
527 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
528 ; SSE3-SLOW-NEXT: addl %ecx, %eax
529 ; SSE3-SLOW-NEXT: retq
531 ; SSE3-FAST-LABEL: extract_extract01_v8i32_add_i32:
532 ; SSE3-FAST: # %bb.0:
533 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
534 ; SSE3-FAST-NEXT: movd %xmm0, %eax
535 ; SSE3-FAST-NEXT: retq
558 ; SSE3-SLOW-LABEL: extract_extract23_v8i32_add_i32:
559 ; SSE3-SLOW: # %bb.0:
560 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
561 ; SSE3-SLOW-NEXT: movd %xmm1, %ecx
562 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
563 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
564 ; SSE3-SLOW-NEXT: addl %ecx, %eax
565 ; SSE3-SLOW-NEXT: retq
567 ; SSE3-FAST-LABEL: extract_extract23_v8i32_add_i32:
568 ; SSE3-FAST: # %bb.0:
569 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
570 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
571 ; SSE3-FAST-NEXT: movd %xmm0, %eax
572 ; SSE3-FAST-NEXT: retq
595 ; SSE3-SLOW-LABEL: extract_extract67_v8i32_add_i32:
596 ; SSE3-SLOW: # %bb.0:
597 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
598 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
599 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
600 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
601 ; SSE3-SLOW-NEXT: addl %ecx, %eax
602 ; SSE3-SLOW-NEXT: retq
604 ; SSE3-FAST-LABEL: extract_extract67_v8i32_add_i32:
605 ; SSE3-FAST: # %bb.0:
606 ; SSE3-FAST-NEXT: phaddd %xmm1, %xmm1
607 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
608 ; SSE3-FAST-NEXT: movd %xmm0, %eax
609 ; SSE3-FAST-NEXT: retq
650 ; SSE3-SLOW-LABEL: extract_extract01_v8i32_add_i32_commute:
651 ; SSE3-SLOW: # %bb.0:
652 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
653 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
654 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
655 ; SSE3-SLOW-NEXT: addl %ecx, %eax
656 ; SSE3-SLOW-NEXT: retq
658 ; SSE3-FAST-LABEL: extract_extract01_v8i32_add_i32_commute:
659 ; SSE3-FAST: # %bb.0:
660 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
661 ; SSE3-FAST-NEXT: movd %xmm0, %eax
662 ; SSE3-FAST-NEXT: retq
685 ; SSE3-SLOW-LABEL: extract_extract23_v8i32_add_i32_commute:
686 ; SSE3-SLOW: # %bb.0:
687 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
688 ; SSE3-SLOW-NEXT: movd %xmm1, %ecx
689 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
690 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
691 ; SSE3-SLOW-NEXT: addl %ecx, %eax
692 ; SSE3-SLOW-NEXT: retq
694 ; SSE3-FAST-LABEL: extract_extract23_v8i32_add_i32_commute:
695 ; SSE3-FAST: # %bb.0:
696 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
697 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
698 ; SSE3-FAST-NEXT: movd %xmm0, %eax
699 ; SSE3-FAST-NEXT: retq
722 ; SSE3-SLOW-LABEL: extract_extract67_v8i32_add_i32_commute:
723 ; SSE3-SLOW: # %bb.0:
724 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
725 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
726 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
727 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
728 ; SSE3-SLOW-NEXT: addl %ecx, %eax
729 ; SSE3-SLOW-NEXT: retq
731 ; SSE3-FAST-LABEL: extract_extract67_v8i32_add_i32_commute:
732 ; SSE3-FAST: # %bb.0:
733 ; SSE3-FAST-NEXT: phaddd %xmm1, %xmm1
734 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
735 ; SSE3-FAST-NEXT: movd %xmm0, %eax
736 ; SSE3-FAST-NEXT: retq
777 ; SSE3-SLOW-LABEL: extract_extract01_v16i16_add_i16:
778 ; SSE3-SLOW: # %bb.0:
779 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
780 ; SSE3-SLOW-NEXT: pextrw $1, %xmm0, %eax
781 ; SSE3-SLOW-NEXT: addl %ecx, %eax
782 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
783 ; SSE3-SLOW-NEXT: retq
785 ; SSE3-FAST-LABEL: extract_extract01_v16i16_add_i16:
786 ; SSE3-FAST: # %bb.0:
787 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
788 ; SSE3-FAST-NEXT: movd %xmm0, %eax
789 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
790 ; SSE3-FAST-NEXT: retq
815 ; SSE3-SLOW-LABEL: extract_extract23_v16i16_add_i16:
816 ; SSE3-SLOW: # %bb.0:
817 ; SSE3-SLOW-NEXT: pextrw $2, %xmm0, %ecx
818 ; SSE3-SLOW-NEXT: pextrw $3, %xmm0, %eax
819 ; SSE3-SLOW-NEXT: addl %ecx, %eax
820 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
821 ; SSE3-SLOW-NEXT: retq
823 ; SSE3-FAST-LABEL: extract_extract23_v16i16_add_i16:
824 ; SSE3-FAST: # %bb.0:
825 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
826 ; SSE3-FAST-NEXT: pextrw $1, %xmm0, %eax
827 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
828 ; SSE3-FAST-NEXT: retq
853 ; SSE3-SLOW-LABEL: extract_extract89_v16i16_add_i16:
854 ; SSE3-SLOW: # %bb.0:
855 ; SSE3-SLOW-NEXT: movd %xmm1, %ecx
856 ; SSE3-SLOW-NEXT: pextrw $1, %xmm1, %eax
857 ; SSE3-SLOW-NEXT: addl %ecx, %eax
858 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
859 ; SSE3-SLOW-NEXT: retq
861 ; SSE3-FAST-LABEL: extract_extract89_v16i16_add_i16:
862 ; SSE3-FAST: # %bb.0:
863 ; SSE3-FAST-NEXT: phaddw %xmm1, %xmm1
864 ; SSE3-FAST-NEXT: movd %xmm1, %eax
865 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
866 ; SSE3-FAST-NEXT: retq
931 ; SSE3-SLOW-LABEL: extract_extract01_v16i16_add_i16_commute:
932 ; SSE3-SLOW: # %bb.0:
933 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
934 ; SSE3-SLOW-NEXT: pextrw $1, %xmm0, %eax
935 ; SSE3-SLOW-NEXT: addl %ecx, %eax
936 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
937 ; SSE3-SLOW-NEXT: retq
939 ; SSE3-FAST-LABEL: extract_extract01_v16i16_add_i16_commute:
940 ; SSE3-FAST: # %bb.0:
941 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
942 ; SSE3-FAST-NEXT: movd %xmm0, %eax
943 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
944 ; SSE3-FAST-NEXT: retq
969 ; SSE3-SLOW-LABEL: extract_extract45_v16i16_add_i16_commute:
970 ; SSE3-SLOW: # %bb.0:
971 ; SSE3-SLOW-NEXT: pextrw $4, %xmm0, %ecx
972 ; SSE3-SLOW-NEXT: pextrw $5, %xmm0, %eax
973 ; SSE3-SLOW-NEXT: addl %ecx, %eax
974 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
975 ; SSE3-SLOW-NEXT: retq
977 ; SSE3-FAST-LABEL: extract_extract45_v16i16_add_i16_commute:
978 ; SSE3-FAST: # %bb.0:
979 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
980 ; SSE3-FAST-NEXT: pextrw $2, %xmm0, %eax
981 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
982 ; SSE3-FAST-NEXT: retq
1007 ; SSE3-SLOW-LABEL: extract_extract89_v16i16_add_i16_commute:
1008 ; SSE3-SLOW: # %bb.0:
1009 ; SSE3-SLOW-NEXT: movd %xmm1, %ecx
1010 ; SSE3-SLOW-NEXT: pextrw $1, %xmm1, %eax
1011 ; SSE3-SLOW-NEXT: addl %ecx, %eax
1012 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1013 ; SSE3-SLOW-NEXT: retq
1015 ; SSE3-FAST-LABEL: extract_extract89_v16i16_add_i16_commute:
1016 ; SSE3-FAST: # %bb.0:
1017 ; SSE3-FAST-NEXT: phaddw %xmm1, %xmm1
1018 ; SSE3-FAST-NEXT: movd %xmm1, %eax
1019 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1020 ; SSE3-FAST-NEXT: retq
1085 ; SSE3-SLOW-LABEL: extract_extract01_v8i32_sub_i32:
1086 ; SSE3-SLOW: # %bb.0:
1087 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1088 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1089 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1090 ; SSE3-SLOW-NEXT: subl %ecx, %eax
1091 ; SSE3-SLOW-NEXT: retq
1093 ; SSE3-FAST-LABEL: extract_extract01_v8i32_sub_i32:
1094 ; SSE3-FAST: # %bb.0:
1095 ; SSE3-FAST-NEXT: phsubd %xmm0, %xmm0
1096 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1097 ; SSE3-FAST-NEXT: retq
1120 ; SSE3-SLOW-LABEL: extract_extract23_v8i32_sub_i32:
1121 ; SSE3-SLOW: # %bb.0:
1122 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1123 ; SSE3-SLOW-NEXT: movd %xmm1, %eax
1124 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
1125 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1126 ; SSE3-SLOW-NEXT: subl %ecx, %eax
1127 ; SSE3-SLOW-NEXT: retq
1129 ; SSE3-FAST-LABEL: extract_extract23_v8i32_sub_i32:
1130 ; SSE3-FAST: # %bb.0:
1131 ; SSE3-FAST-NEXT: phsubd %xmm0, %xmm0
1132 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1133 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1134 ; SSE3-FAST-NEXT: retq
1157 ; SSE3-SLOW-LABEL: extract_extract67_v8i32_sub_i32:
1158 ; SSE3-SLOW: # %bb.0:
1159 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
1160 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1161 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
1162 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1163 ; SSE3-SLOW-NEXT: subl %ecx, %eax
1164 ; SSE3-SLOW-NEXT: retq
1166 ; SSE3-FAST-LABEL: extract_extract67_v8i32_sub_i32:
1167 ; SSE3-FAST: # %bb.0:
1168 ; SSE3-FAST-NEXT: phsubd %xmm1, %xmm1
1169 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1170 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1171 ; SSE3-FAST-NEXT: retq
1214 ; SSE3-LABEL: extract_extract01_v8i32_sub_i32_commute:
1215 ; SSE3: # %bb.0:
1216 ; SSE3-NEXT: movd %xmm0, %ecx
1217 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1218 ; SSE3-NEXT: movd %xmm0, %eax
1219 ; SSE3-NEXT: subl %ecx, %eax
1220 ; SSE3-NEXT: retq
1236 ; SSE3-SLOW-LABEL: extract_extract01_v16i16_sub_i16:
1237 ; SSE3-SLOW: # %bb.0:
1238 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1239 ; SSE3-SLOW-NEXT: pextrw $1, %xmm0, %ecx
1240 ; SSE3-SLOW-NEXT: subl %ecx, %eax
1241 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1242 ; SSE3-SLOW-NEXT: retq
1244 ; SSE3-FAST-LABEL: extract_extract01_v16i16_sub_i16:
1245 ; SSE3-FAST: # %bb.0:
1246 ; SSE3-FAST-NEXT: phsubw %xmm0, %xmm0
1247 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1248 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1249 ; SSE3-FAST-NEXT: retq
1276 ; SSE3-LABEL: extract_extract01_v16i16_sub_i16_commute:
1277 ; SSE3: # %bb.0:
1278 ; SSE3-NEXT: movd %xmm0, %ecx
1279 ; SSE3-NEXT: pextrw $1, %xmm0, %eax
1280 ; SSE3-NEXT: subl %ecx, %eax
1281 ; SSE3-NEXT: # kill: def $ax killed $ax killed $eax
1282 ; SSE3-NEXT: retq
1301 ; SSE3-SLOW-LABEL: extract_extract01_v16i32_add_i32:
1302 ; SSE3-SLOW: # %bb.0:
1303 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1304 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1305 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1306 ; SSE3-SLOW-NEXT: addl %ecx, %eax
1307 ; SSE3-SLOW-NEXT: retq
1309 ; SSE3-FAST-LABEL: extract_extract01_v16i32_add_i32:
1310 ; SSE3-FAST: # %bb.0:
1311 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
1312 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1313 ; SSE3-FAST-NEXT: retq
1336 ; SSE3-SLOW-LABEL: extract_extract01_v16i32_add_i32_commute:
1337 ; SSE3-SLOW: # %bb.0:
1338 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1339 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1340 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1341 ; SSE3-SLOW-NEXT: addl %ecx, %eax
1342 ; SSE3-SLOW-NEXT: retq
1344 ; SSE3-FAST-LABEL: extract_extract01_v16i32_add_i32_commute:
1345 ; SSE3-FAST: # %bb.0:
1346 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
1347 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1348 ; SSE3-FAST-NEXT: retq
1371 ; SSE3-SLOW-LABEL: extract_extract01_v32i16_add_i16:
1372 ; SSE3-SLOW: # %bb.0:
1373 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1374 ; SSE3-SLOW-NEXT: pextrw $1, %xmm0, %eax
1375 ; SSE3-SLOW-NEXT: addl %ecx, %eax
1376 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1377 ; SSE3-SLOW-NEXT: retq
1379 ; SSE3-FAST-LABEL: extract_extract01_v32i16_add_i16:
1380 ; SSE3-FAST: # %bb.0:
1381 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
1382 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1383 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1384 ; SSE3-FAST-NEXT: retq
1409 ; SSE3-SLOW-LABEL: extract_extract01_v32i16_add_i16_commute:
1410 ; SSE3-SLOW: # %bb.0:
1411 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1412 ; SSE3-SLOW-NEXT: pextrw $1, %xmm0, %eax
1413 ; SSE3-SLOW-NEXT: addl %ecx, %eax
1414 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1415 ; SSE3-SLOW-NEXT: retq
1417 ; SSE3-FAST-LABEL: extract_extract01_v32i16_add_i16_commute:
1418 ; SSE3-FAST: # %bb.0:
1419 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
1420 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1421 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1422 ; SSE3-FAST-NEXT: retq
1447 ; SSE3-SLOW-LABEL: extract_extract01_v16i32_sub_i32:
1448 ; SSE3-SLOW: # %bb.0:
1449 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1450 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1451 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1452 ; SSE3-SLOW-NEXT: subl %ecx, %eax
1453 ; SSE3-SLOW-NEXT: retq
1455 ; SSE3-FAST-LABEL: extract_extract01_v16i32_sub_i32:
1456 ; SSE3-FAST: # %bb.0:
1457 ; SSE3-FAST-NEXT: phsubd %xmm0, %xmm0
1458 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1459 ; SSE3-FAST-NEXT: retq
1482 ; SSE3-LABEL: extract_extract01_v16i32_sub_i32_commute:
1483 ; SSE3: # %bb.0:
1484 ; SSE3-NEXT: movd %xmm0, %ecx
1485 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1486 ; SSE3-NEXT: movd %xmm0, %eax
1487 ; SSE3-NEXT: subl %ecx, %eax
1488 ; SSE3-NEXT: retq
1504 ; SSE3-SLOW-LABEL: extract_extract01_v32i16_sub_i16:
1505 ; SSE3-SLOW: # %bb.0:
1506 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1507 ; SSE3-SLOW-NEXT: pextrw $1, %xmm0, %ecx
1508 ; SSE3-SLOW-NEXT: subl %ecx, %eax
1509 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1510 ; SSE3-SLOW-NEXT: retq
1512 ; SSE3-FAST-LABEL: extract_extract01_v32i16_sub_i16:
1513 ; SSE3-FAST: # %bb.0:
1514 ; SSE3-FAST-NEXT: phsubw %xmm0, %xmm0
1515 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1516 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1517 ; SSE3-FAST-NEXT: retq
1542 ; SSE3-LABEL: extract_extract01_v32i16_sub_i16_commute:
1543 ; SSE3: # %bb.0:
1544 ; SSE3-NEXT: movd %xmm0, %ecx
1545 ; SSE3-NEXT: pextrw $1, %xmm0, %eax
1546 ; SSE3-NEXT: subl %ecx, %eax
1547 ; SSE3-NEXT: # kill: def $ax killed $ax killed $eax
1548 ; SSE3-NEXT: retq
1567 ; SSE3-SLOW-LABEL: extract_extract01_v4i32_add_i32_uses1:
1568 ; SSE3-SLOW: # %bb.0:
1569 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1570 ; SSE3-SLOW-NEXT: movd %xmm0, (%rdi)
1571 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1572 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1573 ; SSE3-SLOW-NEXT: addl %ecx, %eax
1574 ; SSE3-SLOW-NEXT: retq
1576 ; SSE3-FAST-LABEL: extract_extract01_v4i32_add_i32_uses1:
1577 ; SSE3-FAST: # %bb.0:
1578 ; SSE3-FAST-NEXT: movd %xmm0, (%rdi)
1579 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
1580 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1581 ; SSE3-FAST-NEXT: retq
1605 ; SSE3-SLOW-LABEL: extract_extract01_v4i32_add_i32_uses2:
1606 ; SSE3-SLOW: # %bb.0:
1607 ; SSE3-SLOW-NEXT: movd %xmm0, %ecx
1608 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1609 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1610 ; SSE3-SLOW-NEXT: addl %ecx, %eax
1611 ; SSE3-SLOW-NEXT: movd %xmm0, (%rdi)
1612 ; SSE3-SLOW-NEXT: retq
1614 ; SSE3-FAST-LABEL: extract_extract01_v4i32_add_i32_uses2:
1615 ; SSE3-FAST: # %bb.0:
1616 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1617 ; SSE3-FAST-NEXT: movd %xmm1, (%rdi)
1618 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
1619 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1620 ; SSE3-FAST-NEXT: retq
1644 ; SSE3-LABEL: extract_extract01_v4i32_add_i32_uses3:
1645 ; SSE3: # %bb.0:
1646 ; SSE3-NEXT: movd %xmm0, %ecx
1647 ; SSE3-NEXT: movd %xmm0, (%rdi)
1648 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1649 ; SSE3-NEXT: movd %xmm0, %eax
1650 ; SSE3-NEXT: addl %ecx, %eax
1651 ; SSE3-NEXT: movd %xmm0, (%rsi)
1652 ; SSE3-NEXT: retq
1673 ; SSE3-SLOW-LABEL: partial_reduction_add_v8i32:
1674 ; SSE3-SLOW: # %bb.0:
1675 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1676 ; SSE3-SLOW-NEXT: paddd %xmm0, %xmm1
1677 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1678 ; SSE3-SLOW-NEXT: paddd %xmm1, %xmm0
1679 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1680 ; SSE3-SLOW-NEXT: retq
1682 ; SSE3-FAST-LABEL: partial_reduction_add_v8i32:
1683 ; SSE3-FAST: # %bb.0:
1684 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1685 ; SSE3-FAST-NEXT: paddd %xmm0, %xmm1
1686 ; SSE3-FAST-NEXT: phaddd %xmm1, %xmm1
1687 ; SSE3-FAST-NEXT: movd %xmm1, %eax
1688 ; SSE3-FAST-NEXT: retq
1716 ; SSE3-SLOW-LABEL: partial_reduction_add_v16i32:
1717 ; SSE3-SLOW: # %bb.0:
1718 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1719 ; SSE3-SLOW-NEXT: paddd %xmm0, %xmm1
1720 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1721 ; SSE3-SLOW-NEXT: paddd %xmm1, %xmm0
1722 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1723 ; SSE3-SLOW-NEXT: retq
1725 ; SSE3-FAST-LABEL: partial_reduction_add_v16i32:
1726 ; SSE3-FAST: # %bb.0:
1727 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1728 ; SSE3-FAST-NEXT: paddd %xmm0, %xmm1
1729 ; SSE3-FAST-NEXT: phaddd %xmm1, %xmm1
1730 ; SSE3-FAST-NEXT: movd %xmm1, %eax
1731 ; SSE3-FAST-NEXT: retq
1759 ; SSE3-SLOW-LABEL: partial_reduction_sub_v8i32:
1760 ; SSE3-SLOW: # %bb.0:
1761 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1762 ; SSE3-SLOW-NEXT: psubd %xmm1, %xmm0
1763 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1764 ; SSE3-SLOW-NEXT: psubd %xmm1, %xmm0
1765 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1766 ; SSE3-SLOW-NEXT: retq
1768 ; SSE3-FAST-LABEL: partial_reduction_sub_v8i32:
1769 ; SSE3-FAST: # %bb.0:
1770 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1771 ; SSE3-FAST-NEXT: psubd %xmm1, %xmm0
1772 ; SSE3-FAST-NEXT: phsubd %xmm0, %xmm0
1773 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1774 ; SSE3-FAST-NEXT: retq
1803 ; SSE3-SLOW-LABEL: partial_reduction_sub_v16i32:
1804 ; SSE3-SLOW: # %bb.0:
1805 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1806 ; SSE3-SLOW-NEXT: psubd %xmm1, %xmm0
1807 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1808 ; SSE3-SLOW-NEXT: psubd %xmm1, %xmm0
1809 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1810 ; SSE3-SLOW-NEXT: retq
1812 ; SSE3-FAST-LABEL: partial_reduction_sub_v16i32:
1813 ; SSE3-FAST: # %bb.0:
1814 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1815 ; SSE3-FAST-NEXT: psubd %xmm1, %xmm0
1816 ; SSE3-FAST-NEXT: phsubd %xmm0, %xmm0
1817 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1818 ; SSE3-FAST-NEXT: retq
1868 ; SSE3-LABEL: negative_extract_v16i16_v8i16:
1869 ; SSE3: # %bb.0:
1870 ; SSE3-NEXT: paddw %xmm1, %xmm0
1871 ; SSE3-NEXT: retq
1926 ; SSE3-SLOW-LABEL: hadd16_8:
1927 ; SSE3-SLOW: # %bb.0:
1928 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1929 ; SSE3-SLOW-NEXT: paddw %xmm0, %xmm1
1930 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1931 ; SSE3-SLOW-NEXT: paddw %xmm1, %xmm0
1932 ; SSE3-SLOW-NEXT: movdqa %xmm0, %xmm1
1933 ; SSE3-SLOW-NEXT: psrld $16, %xmm1
1934 ; SSE3-SLOW-NEXT: paddw %xmm0, %xmm1
1935 ; SSE3-SLOW-NEXT: movd %xmm1, %eax
1936 ; SSE3-SLOW-NEXT: # kill: def $ax killed $ax killed $eax
1937 ; SSE3-SLOW-NEXT: retq
1939 ; SSE3-FAST-LABEL: hadd16_8:
1940 ; SSE3-FAST: # %bb.0:
1941 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
1942 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
1943 ; SSE3-FAST-NEXT: phaddw %xmm0, %xmm0
1944 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1945 ; SSE3-FAST-NEXT: # kill: def $ax killed $ax killed $eax
1946 ; SSE3-FAST-NEXT: retq
1979 ; SSE3-SLOW-LABEL: hadd32_4:
1980 ; SSE3-SLOW: # %bb.0:
1981 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1982 ; SSE3-SLOW-NEXT: paddd %xmm0, %xmm1
1983 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1984 ; SSE3-SLOW-NEXT: paddd %xmm1, %xmm0
1985 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
1986 ; SSE3-SLOW-NEXT: retq
1988 ; SSE3-FAST-LABEL: hadd32_4:
1989 ; SSE3-FAST: # %bb.0:
1990 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
1991 ; SSE3-FAST-NEXT: phaddd %xmm0, %xmm0
1992 ; SSE3-FAST-NEXT: movd %xmm0, %eax
1993 ; SSE3-FAST-NEXT: retq
2019 ; SSE3-SLOW-LABEL: hadd32_8:
2020 ; SSE3-SLOW: # %bb.0:
2021 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
2022 ; SSE3-SLOW-NEXT: paddd %xmm0, %xmm1
2023 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
2024 ; SSE3-SLOW-NEXT: paddd %xmm1, %xmm0
2025 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
2026 ; SSE3-SLOW-NEXT: retq
2028 ; SSE3-FAST-LABEL: hadd32_8:
2029 ; SSE3-FAST: # %bb.0:
2030 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
2031 ; SSE3-FAST-NEXT: paddd %xmm0, %xmm1
2032 ; SSE3-FAST-NEXT: phaddd %xmm1, %xmm1
2033 ; SSE3-FAST-NEXT: movd %xmm1, %eax
2034 ; SSE3-FAST-NEXT: retq
2062 ; SSE3-SLOW-LABEL: hadd32_16:
2063 ; SSE3-SLOW: # %bb.0:
2064 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
2065 ; SSE3-SLOW-NEXT: paddd %xmm0, %xmm1
2066 ; SSE3-SLOW-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
2067 ; SSE3-SLOW-NEXT: paddd %xmm1, %xmm0
2068 ; SSE3-SLOW-NEXT: movd %xmm0, %eax
2069 ; SSE3-SLOW-NEXT: retq
2071 ; SSE3-FAST-LABEL: hadd32_16:
2072 ; SSE3-FAST: # %bb.0:
2073 ; SSE3-FAST-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
2074 ; SSE3-FAST-NEXT: paddd %xmm0, %xmm1
2075 ; SSE3-FAST-NEXT: phaddd %xmm1, %xmm1
2076 ; SSE3-FAST-NEXT: movd %xmm1, %eax
2077 ; SSE3-FAST-NEXT: retq
2105 ; SSE3-LABEL: hadd16_8_optsize:
2106 ; SSE3: # %bb.0:
2107 ; SSE3-NEXT: phaddw %xmm0, %xmm0
2108 ; SSE3-NEXT: phaddw %xmm0, %xmm0
2109 ; SSE3-NEXT: phaddw %xmm0, %xmm0
2110 ; SSE3-NEXT: movd %xmm0, %eax
2111 ; SSE3-NEXT: # kill: def $ax killed $ax killed $eax
2112 ; SSE3-NEXT: retq
2133 ; SSE3-LABEL: hadd32_4_optsize:
2134 ; SSE3: # %bb.0:
2135 ; SSE3-NEXT: phaddd %xmm0, %xmm0
2136 ; SSE3-NEXT: phaddd %xmm0, %xmm0
2137 ; SSE3-NEXT: movd %xmm0, %eax
2138 ; SSE3-NEXT: retq
2155 ; SSE3-LABEL: hadd32_4_pgso:
2156 ; SSE3: # %bb.0:
2157 ; SSE3-NEXT: phaddd %xmm0, %xmm0
2158 ; SSE3-NEXT: phaddd %xmm0, %xmm0
2159 ; SSE3-NEXT: movd %xmm0, %eax
2160 ; SSE3-NEXT: retq
2177 ; SSE3-LABEL: hadd32_8_optsize:
2178 ; SSE3: # %bb.0:
2179 ; SSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
2180 ; SSE3-NEXT: paddd %xmm0, %xmm1
2181 ; SSE3-NEXT: phaddd %xmm1, %xmm1
2182 ; SSE3-NEXT: movd %xmm1, %eax
2183 ; SSE3-NEXT: retq
2201 ; SSE3-LABEL: hadd32_16_optsize:
2202 ; SSE3: # %bb.0:
2203 ; SSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
2204 ; SSE3-NEXT: paddd %xmm0, %xmm1
2205 ; SSE3-NEXT: phaddd %xmm1, %xmm1
2206 ; SSE3-NEXT: movd %xmm1, %eax
2207 ; SSE3-NEXT: retq