Lines Matching refs:SSE3

2 …%s -mtriple=x86_64-unknown -mattr=+sse2,+sse3 | FileCheck %s --check-prefix=SSE --check-prefix=SSE3
124 ; SSE3-LABEL: phadd_d_test1:
125 ; SSE3: # %bb.0:
126 ; SSE3-NEXT: movd %xmm0, %eax
127 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,1,1]
128 ; SSE3-NEXT: movd %xmm2, %ecx
129 ; SSE3-NEXT: addl %eax, %ecx
130 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
131 ; SSE3-NEXT: movd %xmm2, %eax
132 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
133 ; SSE3-NEXT: movd %xmm0, %edx
134 ; SSE3-NEXT: addl %eax, %edx
135 ; SSE3-NEXT: movd %xmm1, %eax
136 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
137 ; SSE3-NEXT: movd %xmm0, %esi
138 ; SSE3-NEXT: addl %eax, %esi
139 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
140 ; SSE3-NEXT: movd %xmm0, %eax
141 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
142 ; SSE3-NEXT: movd %xmm0, %edi
143 ; SSE3-NEXT: addl %eax, %edi
144 ; SSE3-NEXT: movd %edi, %xmm0
145 ; SSE3-NEXT: movd %esi, %xmm1
146 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
147 ; SSE3-NEXT: movd %edx, %xmm2
148 ; SSE3-NEXT: movd %ecx, %xmm0
149 ; SSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
150 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
151 ; SSE3-NEXT: retq
182 ; SSE3-LABEL: phadd_d_test2:
183 ; SSE3: # %bb.0:
184 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
185 ; SSE3-NEXT: movd %xmm2, %eax
186 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[3,3,3,3]
187 ; SSE3-NEXT: movd %xmm2, %ecx
188 ; SSE3-NEXT: addl %eax, %ecx
189 ; SSE3-NEXT: movd %xmm0, %eax
190 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
191 ; SSE3-NEXT: movd %xmm0, %edx
192 ; SSE3-NEXT: addl %eax, %edx
193 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
194 ; SSE3-NEXT: movd %xmm0, %eax
195 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
196 ; SSE3-NEXT: movd %xmm0, %esi
197 ; SSE3-NEXT: addl %eax, %esi
198 ; SSE3-NEXT: movd %esi, %xmm0
199 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,1,1]
200 ; SSE3-NEXT: movd %xmm2, %eax
201 ; SSE3-NEXT: movd %xmm1, %esi
202 ; SSE3-NEXT: addl %eax, %esi
203 ; SSE3-NEXT: movd %esi, %xmm1
204 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
205 ; SSE3-NEXT: movd %ecx, %xmm2
206 ; SSE3-NEXT: movd %edx, %xmm0
207 ; SSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
208 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
209 ; SSE3-NEXT: retq
240 ; SSE3-LABEL: phsub_d_test1:
241 ; SSE3: # %bb.0:
242 ; SSE3-NEXT: movd %xmm0, %eax
243 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,1,1]
244 ; SSE3-NEXT: movd %xmm2, %ecx
245 ; SSE3-NEXT: subl %ecx, %eax
246 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
247 ; SSE3-NEXT: movd %xmm2, %ecx
248 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
249 ; SSE3-NEXT: movd %xmm0, %edx
250 ; SSE3-NEXT: subl %edx, %ecx
251 ; SSE3-NEXT: movd %xmm1, %edx
252 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
253 ; SSE3-NEXT: movd %xmm0, %esi
254 ; SSE3-NEXT: subl %esi, %edx
255 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
256 ; SSE3-NEXT: movd %xmm0, %esi
257 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
258 ; SSE3-NEXT: movd %xmm0, %edi
259 ; SSE3-NEXT: subl %edi, %esi
260 ; SSE3-NEXT: movd %esi, %xmm0
261 ; SSE3-NEXT: movd %edx, %xmm1
262 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
263 ; SSE3-NEXT: movd %ecx, %xmm2
264 ; SSE3-NEXT: movd %eax, %xmm0
265 ; SSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
266 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
267 ; SSE3-NEXT: retq
298 ; SSE3-LABEL: phsub_d_test2:
299 ; SSE3: # %bb.0:
300 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
301 ; SSE3-NEXT: movd %xmm2, %eax
302 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[3,3,3,3]
303 ; SSE3-NEXT: movd %xmm2, %ecx
304 ; SSE3-NEXT: subl %ecx, %eax
305 ; SSE3-NEXT: movd %xmm0, %ecx
306 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
307 ; SSE3-NEXT: movd %xmm0, %edx
308 ; SSE3-NEXT: subl %edx, %ecx
309 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
310 ; SSE3-NEXT: movd %xmm0, %edx
311 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
312 ; SSE3-NEXT: movd %xmm0, %esi
313 ; SSE3-NEXT: subl %esi, %edx
314 ; SSE3-NEXT: movd %edx, %xmm0
315 ; SSE3-NEXT: movd %xmm1, %edx
316 ; SSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,1,1]
317 ; SSE3-NEXT: movd %xmm1, %esi
318 ; SSE3-NEXT: subl %esi, %edx
319 ; SSE3-NEXT: movd %edx, %xmm1
320 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
321 ; SSE3-NEXT: movd %eax, %xmm2
322 ; SSE3-NEXT: movd %ecx, %xmm0
323 ; SSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
324 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
325 ; SSE3-NEXT: retq
518 ; SSE3-LABEL: avx2_vphadd_d_test:
519 ; SSE3: # %bb.0:
520 ; SSE3-NEXT: movd %xmm0, %ecx
521 ; SSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,1,1]
522 ; SSE3-NEXT: movd %xmm4, %r8d
523 ; SSE3-NEXT: addl %ecx, %r8d
524 ; SSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[2,3,2,3]
525 ; SSE3-NEXT: movd %xmm4, %edx
526 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
527 ; SSE3-NEXT: movd %xmm0, %r9d
528 ; SSE3-NEXT: addl %edx, %r9d
529 ; SSE3-NEXT: movd %xmm1, %edx
530 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
531 ; SSE3-NEXT: movd %xmm0, %esi
532 ; SSE3-NEXT: addl %edx, %esi
533 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
534 ; SSE3-NEXT: movd %xmm0, %edx
535 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
536 ; SSE3-NEXT: movd %xmm0, %edi
537 ; SSE3-NEXT: addl %edx, %edi
538 ; SSE3-NEXT: movd %xmm2, %eax
539 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,1,1]
540 ; SSE3-NEXT: movd %xmm0, %r10d
541 ; SSE3-NEXT: addl %eax, %r10d
542 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,3,2,3]
543 ; SSE3-NEXT: movd %xmm0, %eax
544 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[3,3,3,3]
545 ; SSE3-NEXT: movd %xmm0, %ecx
546 ; SSE3-NEXT: addl %eax, %ecx
547 ; SSE3-NEXT: movd %xmm3, %eax
548 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[1,1,1,1]
549 ; SSE3-NEXT: movd %xmm0, %edx
550 ; SSE3-NEXT: addl %eax, %edx
551 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[2,3,2,3]
552 ; SSE3-NEXT: movd %xmm0, %r11d
553 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[3,3,3,3]
554 ; SSE3-NEXT: movd %xmm0, %eax
555 ; SSE3-NEXT: addl %r11d, %eax
556 ; SSE3-NEXT: movd %edi, %xmm0
557 ; SSE3-NEXT: movd %esi, %xmm1
558 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
559 ; SSE3-NEXT: movd %r9d, %xmm2
560 ; SSE3-NEXT: movd %r8d, %xmm0
561 ; SSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
562 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
563 ; SSE3-NEXT: movd %eax, %xmm1
564 ; SSE3-NEXT: movd %edx, %xmm2
565 ; SSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
566 ; SSE3-NEXT: movd %ecx, %xmm3
567 ; SSE3-NEXT: movd %r10d, %xmm1
568 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
569 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
570 ; SSE3-NEXT: retq
629 ; SSE3-LABEL: avx2_vphadd_w_test:
630 ; SSE3: # %bb.0:
631 ; SSE3-NEXT: pushq %rbp
632 ; SSE3-NEXT: pushq %r15
633 ; SSE3-NEXT: pushq %r14
634 ; SSE3-NEXT: pushq %r13
635 ; SSE3-NEXT: pushq %r12
636 ; SSE3-NEXT: pushq %rbx
637 ; SSE3-NEXT: movd %xmm0, %eax
638 ; SSE3-NEXT: pextrw $1, %xmm0, %ecx
639 ; SSE3-NEXT: addl %eax, %ecx
640 ; SSE3-NEXT: movl %ecx, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
641 ; SSE3-NEXT: pextrw $2, %xmm0, %eax
642 ; SSE3-NEXT: pextrw $3, %xmm0, %ecx
643 ; SSE3-NEXT: addl %eax, %ecx
644 ; SSE3-NEXT: movl %ecx, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
645 ; SSE3-NEXT: pextrw $4, %xmm0, %eax
646 ; SSE3-NEXT: pextrw $5, %xmm0, %r11d
647 ; SSE3-NEXT: addl %eax, %r11d
648 ; SSE3-NEXT: pextrw $6, %xmm0, %eax
649 ; SSE3-NEXT: pextrw $7, %xmm0, %r15d
650 ; SSE3-NEXT: addl %eax, %r15d
651 ; SSE3-NEXT: movd %xmm1, %eax
652 ; SSE3-NEXT: pextrw $1, %xmm1, %r13d
653 ; SSE3-NEXT: addl %eax, %r13d
654 ; SSE3-NEXT: pextrw $2, %xmm1, %eax
655 ; SSE3-NEXT: pextrw $3, %xmm1, %ebx
656 ; SSE3-NEXT: addl %eax, %ebx
657 ; SSE3-NEXT: pextrw $4, %xmm1, %eax
658 ; SSE3-NEXT: pextrw $5, %xmm1, %r8d
659 ; SSE3-NEXT: addl %eax, %r8d
660 ; SSE3-NEXT: pextrw $6, %xmm1, %eax
661 ; SSE3-NEXT: pextrw $7, %xmm1, %esi
662 ; SSE3-NEXT: addl %eax, %esi
663 ; SSE3-NEXT: movd %xmm2, %eax
664 ; SSE3-NEXT: pextrw $1, %xmm2, %r10d
665 ; SSE3-NEXT: addl %eax, %r10d
666 ; SSE3-NEXT: pextrw $2, %xmm2, %eax
667 ; SSE3-NEXT: pextrw $3, %xmm2, %r14d
668 ; SSE3-NEXT: addl %eax, %r14d
669 ; SSE3-NEXT: pextrw $4, %xmm2, %eax
670 ; SSE3-NEXT: pextrw $5, %xmm2, %r12d
671 ; SSE3-NEXT: addl %eax, %r12d
672 ; SSE3-NEXT: pextrw $6, %xmm2, %eax
673 ; SSE3-NEXT: pextrw $7, %xmm2, %r9d
674 ; SSE3-NEXT: addl %eax, %r9d
675 ; SSE3-NEXT: movd %xmm3, %eax
676 ; SSE3-NEXT: pextrw $1, %xmm3, %ebp
677 ; SSE3-NEXT: addl %eax, %ebp
678 ; SSE3-NEXT: pextrw $2, %xmm3, %edx
679 ; SSE3-NEXT: pextrw $3, %xmm3, %edi
680 ; SSE3-NEXT: addl %edx, %edi
681 ; SSE3-NEXT: pextrw $4, %xmm3, %edx
682 ; SSE3-NEXT: pextrw $5, %xmm3, %ecx
683 ; SSE3-NEXT: addl %edx, %ecx
684 ; SSE3-NEXT: pextrw $6, %xmm3, %edx
685 ; SSE3-NEXT: pextrw $7, %xmm3, %eax
686 ; SSE3-NEXT: addl %edx, %eax
687 ; SSE3-NEXT: movd %esi, %xmm8
688 ; SSE3-NEXT: movd %r8d, %xmm3
689 ; SSE3-NEXT: movd %ebx, %xmm9
690 ; SSE3-NEXT: movd %r13d, %xmm4
691 ; SSE3-NEXT: movd %r15d, %xmm10
692 ; SSE3-NEXT: movd %r11d, %xmm7
693 ; SSE3-NEXT: movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 4-byte Folded Reload
694 ; SSE3-NEXT: # xmm11 = mem[0],zero,zero,zero
695 ; SSE3-NEXT: movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Folded Reload
696 ; SSE3-NEXT: # xmm0 = mem[0],zero,zero,zero
697 ; SSE3-NEXT: movd %eax, %xmm12
698 ; SSE3-NEXT: movd %ecx, %xmm6
699 ; SSE3-NEXT: movd %edi, %xmm13
700 ; SSE3-NEXT: movd %ebp, %xmm5
701 ; SSE3-NEXT: movd %r9d, %xmm14
702 ; SSE3-NEXT: movd %r12d, %xmm2
703 ; SSE3-NEXT: movd %r14d, %xmm15
704 ; SSE3-NEXT: movd %r10d, %xmm1
705 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],x…
706 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm9[0],xmm4[1],xmm9[1],xmm4[2],xmm9[2],xmm4[3],x…
707 ; SSE3-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
708 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm10[0],xmm7[1],xmm10[1],xmm7[2],xmm10[2],xmm7[3…
709 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm11[0],xmm0[1],xmm11[1],xmm0[2],xmm11[2],xmm0[3…
710 ; SSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1]
711 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0]
712 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1],xmm6[2],xmm12[2],xmm6[3…
713 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm13[0],xmm5[1],xmm13[1],xmm5[2],xmm13[2],xmm5[3…
714 ; SSE3-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]
715 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm14[0],xmm2[1],xmm14[1],xmm2[2],xmm14[2],xmm2[3…
716 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm15[0],xmm1[1],xmm15[1],xmm1[2],xmm15[2],xmm1[3…
717 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
718 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0]
719 ; SSE3-NEXT: popq %rbx
720 ; SSE3-NEXT: popq %r12
721 ; SSE3-NEXT: popq %r13
722 ; SSE3-NEXT: popq %r14
723 ; SSE3-NEXT: popq %r15
724 ; SSE3-NEXT: popq %rbp
725 ; SSE3-NEXT: retq
1132 ; SSE3-LABEL: avx2_hadd_d:
1133 ; SSE3: # %bb.0:
1134 ; SSE3-NEXT: movd %xmm0, %ecx
1135 ; SSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,1,1]
1136 ; SSE3-NEXT: movd %xmm4, %r8d
1137 ; SSE3-NEXT: addl %ecx, %r8d
1138 ; SSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[2,3,2,3]
1139 ; SSE3-NEXT: movd %xmm4, %edx
1140 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
1141 ; SSE3-NEXT: movd %xmm0, %r9d
1142 ; SSE3-NEXT: addl %edx, %r9d
1143 ; SSE3-NEXT: movd %xmm2, %edx
1144 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,1,1]
1145 ; SSE3-NEXT: movd %xmm0, %esi
1146 ; SSE3-NEXT: addl %edx, %esi
1147 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,3,2,3]
1148 ; SSE3-NEXT: movd %xmm0, %edx
1149 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[3,3,3,3]
1150 ; SSE3-NEXT: movd %xmm0, %edi
1151 ; SSE3-NEXT: addl %edx, %edi
1152 ; SSE3-NEXT: movd %xmm1, %eax
1153 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,1,1]
1154 ; SSE3-NEXT: movd %xmm0, %r10d
1155 ; SSE3-NEXT: addl %eax, %r10d
1156 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
1157 ; SSE3-NEXT: movd %xmm0, %eax
1158 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
1159 ; SSE3-NEXT: movd %xmm0, %ecx
1160 ; SSE3-NEXT: addl %eax, %ecx
1161 ; SSE3-NEXT: movd %xmm3, %eax
1162 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[1,1,1,1]
1163 ; SSE3-NEXT: movd %xmm0, %edx
1164 ; SSE3-NEXT: addl %eax, %edx
1165 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[2,3,2,3]
1166 ; SSE3-NEXT: movd %xmm0, %r11d
1167 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[3,3,3,3]
1168 ; SSE3-NEXT: movd %xmm0, %eax
1169 ; SSE3-NEXT: addl %r11d, %eax
1170 ; SSE3-NEXT: movd %edi, %xmm0
1171 ; SSE3-NEXT: movd %esi, %xmm1
1172 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1173 ; SSE3-NEXT: movd %r9d, %xmm2
1174 ; SSE3-NEXT: movd %r8d, %xmm0
1175 ; SSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1176 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1177 ; SSE3-NEXT: movd %eax, %xmm1
1178 ; SSE3-NEXT: movd %edx, %xmm2
1179 ; SSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
1180 ; SSE3-NEXT: movd %ecx, %xmm3
1181 ; SSE3-NEXT: movd %r10d, %xmm1
1182 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
1183 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
1184 ; SSE3-NEXT: retq
1241 ; SSE3-LABEL: avx2_hadd_w:
1242 ; SSE3: # %bb.0:
1243 ; SSE3-NEXT: pushq %rbp
1244 ; SSE3-NEXT: pushq %r15
1245 ; SSE3-NEXT: pushq %r14
1246 ; SSE3-NEXT: pushq %r13
1247 ; SSE3-NEXT: pushq %r12
1248 ; SSE3-NEXT: pushq %rbx
1249 ; SSE3-NEXT: movd %xmm0, %eax
1250 ; SSE3-NEXT: pextrw $1, %xmm0, %r10d
1251 ; SSE3-NEXT: addl %eax, %r10d
1252 ; SSE3-NEXT: pextrw $2, %xmm0, %eax
1253 ; SSE3-NEXT: pextrw $3, %xmm0, %r11d
1254 ; SSE3-NEXT: addl %eax, %r11d
1255 ; SSE3-NEXT: pextrw $4, %xmm0, %eax
1256 ; SSE3-NEXT: pextrw $5, %xmm0, %r12d
1257 ; SSE3-NEXT: addl %eax, %r12d
1258 ; SSE3-NEXT: pextrw $6, %xmm0, %eax
1259 ; SSE3-NEXT: pextrw $7, %xmm0, %r13d
1260 ; SSE3-NEXT: addl %eax, %r13d
1261 ; SSE3-NEXT: movd %xmm1, %eax
1262 ; SSE3-NEXT: pextrw $1, %xmm1, %ecx
1263 ; SSE3-NEXT: addl %eax, %ecx
1264 ; SSE3-NEXT: movl %ecx, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1265 ; SSE3-NEXT: pextrw $2, %xmm1, %eax
1266 ; SSE3-NEXT: pextrw $3, %xmm1, %ecx
1267 ; SSE3-NEXT: addl %eax, %ecx
1268 ; SSE3-NEXT: movl %ecx, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1269 ; SSE3-NEXT: pextrw $4, %xmm1, %eax
1270 ; SSE3-NEXT: pextrw $5, %xmm1, %r14d
1271 ; SSE3-NEXT: addl %eax, %r14d
1272 ; SSE3-NEXT: pextrw $6, %xmm1, %esi
1273 ; SSE3-NEXT: pextrw $7, %xmm1, %r15d
1274 ; SSE3-NEXT: addl %esi, %r15d
1275 ; SSE3-NEXT: movd %xmm2, %esi
1276 ; SSE3-NEXT: pextrw $1, %xmm2, %ebp
1277 ; SSE3-NEXT: addl %esi, %ebp
1278 ; SSE3-NEXT: pextrw $2, %xmm2, %esi
1279 ; SSE3-NEXT: pextrw $3, %xmm2, %edi
1280 ; SSE3-NEXT: addl %esi, %edi
1281 ; SSE3-NEXT: pextrw $4, %xmm2, %esi
1282 ; SSE3-NEXT: pextrw $5, %xmm2, %eax
1283 ; SSE3-NEXT: addl %esi, %eax
1284 ; SSE3-NEXT: pextrw $6, %xmm2, %esi
1285 ; SSE3-NEXT: pextrw $7, %xmm2, %ecx
1286 ; SSE3-NEXT: addl %esi, %ecx
1287 ; SSE3-NEXT: movd %xmm3, %ebx
1288 ; SSE3-NEXT: pextrw $1, %xmm3, %r9d
1289 ; SSE3-NEXT: addl %ebx, %r9d
1290 ; SSE3-NEXT: pextrw $2, %xmm3, %edx
1291 ; SSE3-NEXT: pextrw $3, %xmm3, %ebx
1292 ; SSE3-NEXT: addl %edx, %ebx
1293 ; SSE3-NEXT: pextrw $4, %xmm3, %edx
1294 ; SSE3-NEXT: pextrw $5, %xmm3, %esi
1295 ; SSE3-NEXT: addl %edx, %esi
1296 ; SSE3-NEXT: pextrw $6, %xmm3, %r8d
1297 ; SSE3-NEXT: pextrw $7, %xmm3, %edx
1298 ; SSE3-NEXT: addl %r8d, %edx
1299 ; SSE3-NEXT: movd %ecx, %xmm8
1300 ; SSE3-NEXT: movd %eax, %xmm3
1301 ; SSE3-NEXT: movd %edi, %xmm9
1302 ; SSE3-NEXT: movd %ebp, %xmm4
1303 ; SSE3-NEXT: movd %r13d, %xmm10
1304 ; SSE3-NEXT: movd %r12d, %xmm7
1305 ; SSE3-NEXT: movd %r11d, %xmm11
1306 ; SSE3-NEXT: movd %r10d, %xmm0
1307 ; SSE3-NEXT: movd %edx, %xmm12
1308 ; SSE3-NEXT: movd %esi, %xmm6
1309 ; SSE3-NEXT: movd %ebx, %xmm13
1310 ; SSE3-NEXT: movd %r9d, %xmm5
1311 ; SSE3-NEXT: movd %r15d, %xmm14
1312 ; SSE3-NEXT: movd %r14d, %xmm2
1313 ; SSE3-NEXT: movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 4-byte Folded Reload
1314 ; SSE3-NEXT: # xmm15 = mem[0],zero,zero,zero
1315 ; SSE3-NEXT: movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Folded Reload
1316 ; SSE3-NEXT: # xmm1 = mem[0],zero,zero,zero
1317 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],x…
1318 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm9[0],xmm4[1],xmm9[1],xmm4[2],xmm9[2],xmm4[3],x…
1319 ; SSE3-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
1320 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm10[0],xmm7[1],xmm10[1],xmm7[2],xmm10[2],xmm7[3…
1321 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm11[0],xmm0[1],xmm11[1],xmm0[2],xmm11[2],xmm0[3…
1322 ; SSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1]
1323 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm4[0]
1324 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1],xmm6[2],xmm12[2],xmm6[3…
1325 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm13[0],xmm5[1],xmm13[1],xmm5[2],xmm13[2],xmm5[3…
1326 ; SSE3-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]
1327 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm14[0],xmm2[1],xmm14[1],xmm2[2],xmm14[2],xmm2[3…
1328 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm15[0],xmm1[1],xmm15[1],xmm1[2],xmm15[2],xmm1[3…
1329 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1330 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0]
1331 ; SSE3-NEXT: popq %rbx
1332 ; SSE3-NEXT: popq %r12
1333 ; SSE3-NEXT: popq %r13
1334 ; SSE3-NEXT: popq %r14
1335 ; SSE3-NEXT: popq %r15
1336 ; SSE3-NEXT: popq %rbp
1337 ; SSE3-NEXT: retq