Lines Matching refs:SSSE3
3 … llc < %s -mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefixes=CHECK,SSSE3
76 ; SSSE3-LABEL: smulo_v2i32:
77 ; SSSE3: # %bb.0:
78 ; SSSE3-NEXT: pxor %xmm2, %xmm2
79 ; SSSE3-NEXT: pxor %xmm3, %xmm3
80 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
81 ; SSSE3-NEXT: pand %xmm0, %xmm3
82 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
83 ; SSSE3-NEXT: pand %xmm1, %xmm2
84 ; SSSE3-NEXT: paddd %xmm3, %xmm2
85 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
86 ; SSSE3-NEXT: pmuludq %xmm1, %xmm0
87 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,3,2,3]
88 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
89 ; SSSE3-NEXT: pmuludq %xmm3, %xmm1
90 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,3,2,3]
91 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
92 ; SSSE3-NEXT: psubd %xmm2, %xmm4
93 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
94 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
95 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
96 ; SSSE3-NEXT: movq %xmm0, (%rdi)
97 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
98 ; SSSE3-NEXT: psrad $31, %xmm1
99 ; SSSE3-NEXT: pcmpeqd %xmm4, %xmm1
100 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm0
101 ; SSSE3-NEXT: pxor %xmm1, %xmm0
102 ; SSSE3-NEXT: retq
184 ; SSSE3-LABEL: smulo_v3i32:
185 ; SSSE3: # %bb.0:
186 ; SSSE3-NEXT: pxor %xmm2, %xmm2
187 ; SSSE3-NEXT: pxor %xmm3, %xmm3
188 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
189 ; SSSE3-NEXT: pand %xmm0, %xmm3
190 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
191 ; SSSE3-NEXT: pand %xmm1, %xmm2
192 ; SSSE3-NEXT: paddd %xmm3, %xmm2
193 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
194 ; SSSE3-NEXT: pmuludq %xmm1, %xmm0
195 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,3,2,3]
196 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
197 ; SSSE3-NEXT: pmuludq %xmm3, %xmm1
198 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,3,2,3]
199 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
200 ; SSSE3-NEXT: psubd %xmm2, %xmm4
201 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[0,2,2,3]
202 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
203 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
204 ; SSSE3-NEXT: movq %xmm2, (%rdi)
205 ; SSSE3-NEXT: psrad $31, %xmm2
206 ; SSSE3-NEXT: pcmpeqd %xmm4, %xmm2
207 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm1
208 ; SSSE3-NEXT: pxor %xmm2, %xmm1
209 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
210 ; SSSE3-NEXT: movd %xmm0, 8(%rdi)
211 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
212 ; SSSE3-NEXT: retq
320 ; SSSE3-LABEL: smulo_v4i32:
321 ; SSSE3: # %bb.0:
322 ; SSSE3-NEXT: pxor %xmm2, %xmm2
323 ; SSSE3-NEXT: pxor %xmm3, %xmm3
324 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
325 ; SSSE3-NEXT: pand %xmm0, %xmm3
326 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
327 ; SSSE3-NEXT: pand %xmm1, %xmm2
328 ; SSSE3-NEXT: paddd %xmm3, %xmm2
329 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
330 ; SSSE3-NEXT: pmuludq %xmm1, %xmm0
331 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,3,2,3]
332 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
333 ; SSSE3-NEXT: pmuludq %xmm3, %xmm1
334 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,3,2,3]
335 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
336 ; SSSE3-NEXT: psubd %xmm2, %xmm4
337 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
338 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
339 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
340 ; SSSE3-NEXT: movdqa %xmm0, (%rdi)
341 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
342 ; SSSE3-NEXT: psrad $31, %xmm1
343 ; SSSE3-NEXT: pcmpeqd %xmm4, %xmm1
344 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm0
345 ; SSSE3-NEXT: pxor %xmm1, %xmm0
346 ; SSSE3-NEXT: retq
494 ; SSSE3-LABEL: smulo_v6i32:
495 ; SSSE3: # %bb.0:
496 ; SSSE3-NEXT: movq %rdi, %rax
497 ; SSSE3-NEXT: movd %r8d, %xmm0
498 ; SSSE3-NEXT: movd %ecx, %xmm1
499 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
500 ; SSSE3-NEXT: movd %edx, %xmm0
501 ; SSSE3-NEXT: movd %esi, %xmm2
502 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
503 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0]
504 ; SSSE3-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
505 ; SSSE3-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
506 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
507 ; SSSE3-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
508 ; SSSE3-NEXT: movd {{.*#+}} xmm5 = mem[0],zero,zero,zero
509 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]
510 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm1[0]
511 ; SSSE3-NEXT: movd %r9d, %xmm10
512 ; SSSE3-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
513 ; SSSE3-NEXT: movdqa %xmm10, %xmm9
514 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm9 = xmm9[0],xmm1[0],xmm9[1],xmm1[1]
515 ; SSSE3-NEXT: movd {{.*#+}} xmm8 = mem[0],zero,zero,zero
516 ; SSSE3-NEXT: movd {{.*#+}} xmm6 = mem[0],zero,zero,zero
517 ; SSSE3-NEXT: pmuludq %xmm6, %xmm10
518 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm6 = xmm6[0],xmm8[0],xmm6[1],xmm8[1]
519 ; SSSE3-NEXT: movq {{[0-9]+}}(%rsp), %rcx
520 ; SSSE3-NEXT: pxor %xmm7, %xmm7
521 ; SSSE3-NEXT: pxor %xmm4, %xmm4
522 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm4
523 ; SSSE3-NEXT: pand %xmm2, %xmm4
524 ; SSSE3-NEXT: pxor %xmm3, %xmm3
525 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
526 ; SSSE3-NEXT: pand %xmm5, %xmm3
527 ; SSSE3-NEXT: paddd %xmm4, %xmm3
528 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
529 ; SSSE3-NEXT: pmuludq %xmm5, %xmm2
530 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,3,2,3]
531 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
532 ; SSSE3-NEXT: pmuludq %xmm4, %xmm5
533 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,3,2,3]
534 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
535 ; SSSE3-NEXT: psubd %xmm3, %xmm0
536 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
537 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[0,2,2,3]
538 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
539 ; SSSE3-NEXT: movdqa %xmm2, (%rcx)
540 ; SSSE3-NEXT: psrad $31, %xmm2
541 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm2
542 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm0
543 ; SSSE3-NEXT: pxor %xmm0, %xmm2
544 ; SSSE3-NEXT: pxor %xmm3, %xmm3
545 ; SSSE3-NEXT: pcmpgtd %xmm6, %xmm3
546 ; SSSE3-NEXT: pand %xmm9, %xmm3
547 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm7
548 ; SSSE3-NEXT: pand %xmm6, %xmm7
549 ; SSSE3-NEXT: paddd %xmm3, %xmm7
550 ; SSSE3-NEXT: pmuludq %xmm8, %xmm1
551 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,3,2,3]
552 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm10[1,3,2,3]
553 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
554 ; SSSE3-NEXT: psubd %xmm7, %xmm4
555 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
556 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm10[0,2,2,3]
557 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
558 ; SSSE3-NEXT: movq %xmm3, 16(%rcx)
559 ; SSSE3-NEXT: psrad $31, %xmm3
560 ; SSSE3-NEXT: pcmpeqd %xmm4, %xmm3
561 ; SSSE3-NEXT: pxor %xmm0, %xmm3
562 ; SSSE3-NEXT: movq %xmm3, 16(%rdi)
563 ; SSSE3-NEXT: movdqa %xmm2, (%rdi)
564 ; SSSE3-NEXT: retq
734 ; SSSE3-LABEL: smulo_v8i32:
735 ; SSSE3: # %bb.0:
736 ; SSSE3-NEXT: pxor %xmm4, %xmm4
737 ; SSSE3-NEXT: pxor %xmm5, %xmm5
738 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm5
739 ; SSSE3-NEXT: pand %xmm0, %xmm5
740 ; SSSE3-NEXT: pxor %xmm6, %xmm6
741 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
742 ; SSSE3-NEXT: pand %xmm2, %xmm6
743 ; SSSE3-NEXT: paddd %xmm5, %xmm6
744 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm0[1,1,3,3]
745 ; SSSE3-NEXT: pmuludq %xmm2, %xmm0
746 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm0[1,3,2,3]
747 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
748 ; SSSE3-NEXT: pmuludq %xmm7, %xmm2
749 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm2[1,3,2,3]
750 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm7[0],xmm5[1],xmm7[1]
751 ; SSSE3-NEXT: psubd %xmm6, %xmm5
752 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
753 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
754 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
755 ; SSSE3-NEXT: movdqa %xmm0, (%rdi)
756 ; SSSE3-NEXT: psrad $31, %xmm0
757 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm0
758 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm2
759 ; SSSE3-NEXT: pxor %xmm2, %xmm0
760 ; SSSE3-NEXT: pxor %xmm5, %xmm5
761 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm5
762 ; SSSE3-NEXT: pand %xmm1, %xmm5
763 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
764 ; SSSE3-NEXT: pand %xmm3, %xmm4
765 ; SSSE3-NEXT: paddd %xmm5, %xmm4
766 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
767 ; SSSE3-NEXT: pmuludq %xmm3, %xmm1
768 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm1[1,3,2,3]
769 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
770 ; SSSE3-NEXT: pmuludq %xmm5, %xmm3
771 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,3,2,3]
772 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1]
773 ; SSSE3-NEXT: psubd %xmm4, %xmm6
774 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
775 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]
776 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
777 ; SSSE3-NEXT: movdqa %xmm1, 16(%rdi)
778 ; SSSE3-NEXT: psrad $31, %xmm1
779 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm1
780 ; SSSE3-NEXT: pxor %xmm2, %xmm1
781 ; SSSE3-NEXT: retq
975 ; SSSE3-LABEL: smulo_v16i32:
976 ; SSSE3: # %bb.0:
977 ; SSSE3-NEXT: pxor %xmm8, %xmm8
978 ; SSSE3-NEXT: pxor %xmm9, %xmm9
979 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm9
980 ; SSSE3-NEXT: pand %xmm0, %xmm9
981 ; SSSE3-NEXT: pxor %xmm10, %xmm10
982 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm10
983 ; SSSE3-NEXT: pand %xmm4, %xmm10
984 ; SSSE3-NEXT: paddd %xmm9, %xmm10
985 ; SSSE3-NEXT: pshufd {{.*#+}} xmm11 = xmm0[1,1,3,3]
986 ; SSSE3-NEXT: pmuludq %xmm4, %xmm0
987 ; SSSE3-NEXT: pshufd {{.*#+}} xmm9 = xmm0[1,3,2,3]
988 ; SSSE3-NEXT: pshufd {{.*#+}} xmm12 = xmm4[1,1,3,3]
989 ; SSSE3-NEXT: pmuludq %xmm11, %xmm12
990 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm12[1,3,2,3]
991 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm9 = xmm9[0],xmm4[0],xmm9[1],xmm4[1]
992 ; SSSE3-NEXT: psubd %xmm10, %xmm9
993 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
994 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm12[0,2,2,3]
995 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
996 ; SSSE3-NEXT: movdqa %xmm0, (%rdi)
997 ; SSSE3-NEXT: psrad $31, %xmm0
998 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm0
999 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm9
1000 ; SSSE3-NEXT: pxor %xmm9, %xmm0
1001 ; SSSE3-NEXT: pxor %xmm10, %xmm10
1002 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm10
1003 ; SSSE3-NEXT: pand %xmm1, %xmm10
1004 ; SSSE3-NEXT: pxor %xmm4, %xmm4
1005 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
1006 ; SSSE3-NEXT: pand %xmm5, %xmm4
1007 ; SSSE3-NEXT: paddd %xmm10, %xmm4
1008 ; SSSE3-NEXT: pshufd {{.*#+}} xmm10 = xmm1[1,1,3,3]
1009 ; SSSE3-NEXT: pmuludq %xmm5, %xmm1
1010 ; SSSE3-NEXT: pshufd {{.*#+}} xmm11 = xmm1[1,3,2,3]
1011 ; SSSE3-NEXT: pshufd {{.*#+}} xmm12 = xmm5[1,1,3,3]
1012 ; SSSE3-NEXT: pmuludq %xmm10, %xmm12
1013 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm12[1,3,2,3]
1014 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm11 = xmm11[0],xmm5[0],xmm11[1],xmm5[1]
1015 ; SSSE3-NEXT: psubd %xmm4, %xmm11
1016 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
1017 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm12[0,2,2,3]
1018 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
1019 ; SSSE3-NEXT: movdqa %xmm1, 16(%rdi)
1020 ; SSSE3-NEXT: psrad $31, %xmm1
1021 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm1
1022 ; SSSE3-NEXT: pxor %xmm9, %xmm1
1023 ; SSSE3-NEXT: pxor %xmm4, %xmm4
1024 ; SSSE3-NEXT: pcmpgtd %xmm6, %xmm4
1025 ; SSSE3-NEXT: pand %xmm2, %xmm4
1026 ; SSSE3-NEXT: pxor %xmm5, %xmm5
1027 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm5
1028 ; SSSE3-NEXT: pand %xmm6, %xmm5
1029 ; SSSE3-NEXT: paddd %xmm4, %xmm5
1030 ; SSSE3-NEXT: pshufd {{.*#+}} xmm10 = xmm2[1,1,3,3]
1031 ; SSSE3-NEXT: pmuludq %xmm6, %xmm2
1032 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,3,2,3]
1033 ; SSSE3-NEXT: pshufd {{.*#+}} xmm11 = xmm6[1,1,3,3]
1034 ; SSSE3-NEXT: pmuludq %xmm10, %xmm11
1035 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm11[1,3,2,3]
1036 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1]
1037 ; SSSE3-NEXT: psubd %xmm5, %xmm4
1038 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
1039 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm11[0,2,2,3]
1040 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
1041 ; SSSE3-NEXT: movdqa %xmm2, 32(%rdi)
1042 ; SSSE3-NEXT: psrad $31, %xmm2
1043 ; SSSE3-NEXT: pcmpeqd %xmm4, %xmm2
1044 ; SSSE3-NEXT: pxor %xmm9, %xmm2
1045 ; SSSE3-NEXT: pxor %xmm4, %xmm4
1046 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm4
1047 ; SSSE3-NEXT: pand %xmm3, %xmm4
1048 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm8
1049 ; SSSE3-NEXT: pand %xmm7, %xmm8
1050 ; SSSE3-NEXT: paddd %xmm4, %xmm8
1051 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
1052 ; SSSE3-NEXT: pmuludq %xmm7, %xmm3
1053 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,3,2,3]
1054 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]
1055 ; SSSE3-NEXT: pmuludq %xmm4, %xmm6
1056 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[1,3,2,3]
1057 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
1058 ; SSSE3-NEXT: psubd %xmm8, %xmm5
1059 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]
1060 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[0,2,2,3]
1061 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
1062 ; SSSE3-NEXT: movdqa %xmm3, 48(%rdi)
1063 ; SSSE3-NEXT: psrad $31, %xmm3
1064 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm3
1065 ; SSSE3-NEXT: pxor %xmm9, %xmm3
1066 ; SSSE3-NEXT: retq
1289 ; SSSE3-LABEL: smulo_v16i8:
1290 ; SSSE3: # %bb.0:
1291 ; SSSE3-NEXT: pxor %xmm2, %xmm2
1292 ; SSSE3-NEXT: pxor %xmm3, %xmm3
1293 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm1[8],xmm3[9],xmm1[9],xmm3[10],xmm1[10],xmm3[1…
1294 ; SSSE3-NEXT: pxor %xmm5, %xmm5
1295 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm0[8],xmm5[9],xmm0[9],xmm5[10],xmm0[10],xmm5[1…
1296 ; SSSE3-NEXT: pmulhw %xmm3, %xmm5
1297 ; SSSE3-NEXT: movdqa %xmm5, %xmm3
1298 ; SSSE3-NEXT: psrlw $8, %xmm3
1299 ; SSSE3-NEXT: pxor %xmm6, %xmm6
1300 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm1[0],xmm6[1],xmm1[1],xmm6[2],xmm1[2],xmm6[3],…
1301 ; SSSE3-NEXT: pxor %xmm4, %xmm4
1302 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],…
1303 ; SSSE3-NEXT: pmulhw %xmm6, %xmm4
1304 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
1305 ; SSSE3-NEXT: psrlw $8, %xmm0
1306 ; SSSE3-NEXT: packuswb %xmm3, %xmm0
1307 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255]
1308 ; SSSE3-NEXT: pand %xmm1, %xmm5
1309 ; SSSE3-NEXT: pand %xmm1, %xmm4
1310 ; SSSE3-NEXT: packuswb %xmm5, %xmm4
1311 ; SSSE3-NEXT: pcmpgtb %xmm4, %xmm2
1312 ; SSSE3-NEXT: pcmpeqb %xmm0, %xmm2
1313 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm3
1314 ; SSSE3-NEXT: pxor %xmm2, %xmm3
1315 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],…
1316 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1317 ; SSSE3-NEXT: psrad $24, %xmm0
1318 ; SSSE3-NEXT: movdqa %xmm3, %xmm1
1319 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1320 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
1321 ; SSSE3-NEXT: pslld $31, %xmm1
1322 ; SSSE3-NEXT: psrad $31, %xmm1
1323 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1324 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
1325 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3]
1326 ; SSSE3-NEXT: pslld $31, %xmm2
1327 ; SSSE3-NEXT: psrad $31, %xmm2
1328 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4,4,5,5,6,6,7,7]
1329 ; SSSE3-NEXT: pslld $31, %xmm3
1330 ; SSSE3-NEXT: psrad $31, %xmm3
1331 ; SSSE3-NEXT: movdqa %xmm4, (%rdi)
1332 ; SSSE3-NEXT: retq
1560 ; SSSE3-LABEL: smulo_v32i8:
1561 ; SSSE3: # %bb.0:
1562 ; SSSE3-NEXT: movq %rdi, %rax
1563 ; SSSE3-NEXT: pxor %xmm4, %xmm4
1564 ; SSSE3-NEXT: pxor %xmm5, %xmm5
1565 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm3[8],xmm5[9],xmm3[9],xmm5[10],xmm3[10],xmm5[1…
1566 ; SSSE3-NEXT: pxor %xmm6, %xmm6
1567 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm1[8],xmm6[9],xmm1[9],xmm6[10],xmm1[10],xmm6[1…
1568 ; SSSE3-NEXT: pmulhw %xmm5, %xmm6
1569 ; SSSE3-NEXT: movdqa %xmm6, %xmm5
1570 ; SSSE3-NEXT: psrlw $8, %xmm5
1571 ; SSSE3-NEXT: pxor %xmm7, %xmm7
1572 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],…
1573 ; SSSE3-NEXT: pxor %xmm10, %xmm10
1574 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm1[0],xmm10[1],xmm1[1],xmm10[2],xmm1[2],xmm1…
1575 ; SSSE3-NEXT: pmulhw %xmm7, %xmm10
1576 ; SSSE3-NEXT: movdqa %xmm10, %xmm7
1577 ; SSSE3-NEXT: psrlw $8, %xmm7
1578 ; SSSE3-NEXT: packuswb %xmm5, %xmm7
1579 ; SSSE3-NEXT: movdqa {{.*#+}} xmm9 = [255,255,255,255,255,255,255,255]
1580 ; SSSE3-NEXT: pand %xmm9, %xmm6
1581 ; SSSE3-NEXT: pand %xmm9, %xmm10
1582 ; SSSE3-NEXT: packuswb %xmm6, %xmm10
1583 ; SSSE3-NEXT: pxor %xmm3, %xmm3
1584 ; SSSE3-NEXT: pcmpgtb %xmm10, %xmm3
1585 ; SSSE3-NEXT: pcmpeqb %xmm7, %xmm3
1586 ; SSSE3-NEXT: pcmpeqd %xmm8, %xmm8
1587 ; SSSE3-NEXT: pxor %xmm8, %xmm3
1588 ; SSSE3-NEXT: pxor %xmm7, %xmm7
1589 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm2[8],xmm7[9],xmm2[9],xmm7[10],xmm2[10],xmm7[1…
1590 ; SSSE3-NEXT: pxor %xmm6, %xmm6
1591 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm0[8],xmm6[9],xmm0[9],xmm6[10],xmm0[10],xmm6[1…
1592 ; SSSE3-NEXT: pmulhw %xmm7, %xmm6
1593 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
1594 ; SSSE3-NEXT: psrlw $8, %xmm7
1595 ; SSSE3-NEXT: pxor %xmm5, %xmm5
1596 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],…
1597 ; SSSE3-NEXT: pxor %xmm11, %xmm11
1598 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm0[0],xmm11[1],xmm0[1],xmm11[2],xmm0[2],xmm1…
1599 ; SSSE3-NEXT: pmulhw %xmm5, %xmm11
1600 ; SSSE3-NEXT: movdqa %xmm11, %xmm0
1601 ; SSSE3-NEXT: psrlw $8, %xmm0
1602 ; SSSE3-NEXT: packuswb %xmm7, %xmm0
1603 ; SSSE3-NEXT: pand %xmm9, %xmm6
1604 ; SSSE3-NEXT: pand %xmm9, %xmm11
1605 ; SSSE3-NEXT: packuswb %xmm6, %xmm11
1606 ; SSSE3-NEXT: pcmpgtb %xmm11, %xmm4
1607 ; SSSE3-NEXT: pcmpeqb %xmm0, %xmm4
1608 ; SSSE3-NEXT: pxor %xmm8, %xmm4
1609 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
1610 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm4[0],xmm8[1],xmm4[1],xmm8[2],xmm4[2],xmm8[3],…
1611 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1612 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4,4,5,5,6,6,7,7]
1613 ; SSSE3-NEXT: pslld $31, %xmm4
1614 ; SSSE3-NEXT: psrad $31, %xmm4
1615 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1616 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
1617 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm6 = xmm6[0,0,1,1,2,2,3,3]
1618 ; SSSE3-NEXT: pslld $31, %xmm6
1619 ; SSSE3-NEXT: psrad $31, %xmm6
1620 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]
1621 ; SSSE3-NEXT: pslld $31, %xmm0
1622 ; SSSE3-NEXT: psrad $31, %xmm0
1623 ; SSSE3-NEXT: movdqa %xmm3, %xmm7
1624 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1625 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm7 = xmm7[4,4,5,5,6,6,7,7]
1626 ; SSSE3-NEXT: pslld $31, %xmm7
1627 ; SSSE3-NEXT: psrad $31, %xmm7
1628 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm3[0],xmm9[1],xmm3[1],xmm9[2],xmm3[2],xmm9[3],…
1629 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1630 ; SSSE3-NEXT: movdqa %xmm3, %xmm1
1631 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3]
1632 ; SSSE3-NEXT: pslld $31, %xmm1
1633 ; SSSE3-NEXT: psrad $31, %xmm1
1634 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4,4,5,5,6,6,7,7]
1635 ; SSSE3-NEXT: pslld $31, %xmm3
1636 ; SSSE3-NEXT: psrad $31, %xmm3
1637 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm8[0],xmm5[1],xmm8[1],xmm5[2],xmm8[2],xmm5[3],…
1638 ; SSSE3-NEXT: psrad $24, %xmm5
1639 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm9[0],xmm2[1],xmm9[1],xmm2[2],xmm9[2],xmm2[3],…
1640 ; SSSE3-NEXT: psrad $24, %xmm2
1641 ; SSSE3-NEXT: movdqa %xmm10, 16(%rsi)
1642 ; SSSE3-NEXT: movdqa %xmm11, (%rsi)
1643 ; SSSE3-NEXT: movdqa %xmm2, 64(%rdi)
1644 ; SSSE3-NEXT: movdqa %xmm5, (%rdi)
1645 ; SSSE3-NEXT: movdqa %xmm3, 112(%rdi)
1646 ; SSSE3-NEXT: movdqa %xmm1, 96(%rdi)
1647 ; SSSE3-NEXT: movdqa %xmm7, 80(%rdi)
1648 ; SSSE3-NEXT: movdqa %xmm0, 48(%rdi)
1649 ; SSSE3-NEXT: movdqa %xmm6, 32(%rdi)
1650 ; SSSE3-NEXT: movdqa %xmm4, 16(%rdi)
1651 ; SSSE3-NEXT: retq
2061 ; SSSE3-LABEL: smulo_v64i8:
2062 ; SSSE3: # %bb.0:
2063 ; SSSE3-NEXT: movq %rdi, %rax
2064 ; SSSE3-NEXT: pxor %xmm8, %xmm8
2065 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm7[8],xmm8[9],xmm7[9],xmm8[10],xmm7[10],xmm8[1…
2066 ; SSSE3-NEXT: pxor %xmm9, %xmm9
2067 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm9 = xmm9[8],xmm3[8],xmm9[9],xmm3[9],xmm9[10],xmm3[10],xmm9[1…
2068 ; SSSE3-NEXT: pmulhw %xmm8, %xmm9
2069 ; SSSE3-NEXT: movdqa %xmm9, %xmm8
2070 ; SSSE3-NEXT: psrlw $8, %xmm8
2071 ; SSSE3-NEXT: pxor %xmm10, %xmm10
2072 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm7[0],xmm10[1],xmm7[1],xmm10[2],xmm7[2],xmm1…
2073 ; SSSE3-NEXT: pxor %xmm11, %xmm11
2074 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm3[0],xmm11[1],xmm3[1],xmm11[2],xmm3[2],xmm1…
2075 ; SSSE3-NEXT: pmulhw %xmm10, %xmm11
2076 ; SSSE3-NEXT: movdqa %xmm11, %xmm7
2077 ; SSSE3-NEXT: psrlw $8, %xmm7
2078 ; SSSE3-NEXT: packuswb %xmm8, %xmm7
2079 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,255,255,255,255,255]
2080 ; SSSE3-NEXT: pand %xmm8, %xmm9
2081 ; SSSE3-NEXT: pand %xmm8, %xmm11
2082 ; SSSE3-NEXT: packuswb %xmm9, %xmm11
2083 ; SSSE3-NEXT: pxor %xmm9, %xmm9
2084 ; SSSE3-NEXT: pcmpgtb %xmm11, %xmm9
2085 ; SSSE3-NEXT: pcmpeqb %xmm7, %xmm9
2086 ; SSSE3-NEXT: pxor %xmm7, %xmm7
2087 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm6[8],xmm7[9],xmm6[9],xmm7[10],xmm6[10],xmm7[1…
2088 ; SSSE3-NEXT: pxor %xmm3, %xmm3
2089 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[1…
2090 ; SSSE3-NEXT: pmulhw %xmm7, %xmm3
2091 ; SSSE3-NEXT: pxor %xmm7, %xmm7
2092 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],…
2093 ; SSSE3-NEXT: pxor %xmm6, %xmm6
2094 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1],xmm6[2],xmm2[2],xmm6[3],…
2095 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
2096 ; SSSE3-NEXT: psrlw $8, %xmm2
2097 ; SSSE3-NEXT: pmulhw %xmm7, %xmm6
2098 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
2099 ; SSSE3-NEXT: psrlw $8, %xmm7
2100 ; SSSE3-NEXT: packuswb %xmm2, %xmm7
2101 ; SSSE3-NEXT: pand %xmm8, %xmm3
2102 ; SSSE3-NEXT: pand %xmm8, %xmm6
2103 ; SSSE3-NEXT: packuswb %xmm3, %xmm6
2104 ; SSSE3-NEXT: pxor %xmm2, %xmm2
2105 ; SSSE3-NEXT: pcmpgtb %xmm6, %xmm2
2106 ; SSSE3-NEXT: pcmpeqb %xmm7, %xmm2
2107 ; SSSE3-NEXT: pxor %xmm3, %xmm3
2108 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm5[8],xmm3[9],xmm5[9],xmm3[10],xmm5[10],xmm3[1…
2109 ; SSSE3-NEXT: pxor %xmm7, %xmm7
2110 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm1[8],xmm7[9],xmm1[9],xmm7[10],xmm1[10],xmm7[1…
2111 ; SSSE3-NEXT: pmulhw %xmm3, %xmm7
2112 ; SSSE3-NEXT: pxor %xmm3, %xmm3
2113 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],…
2114 ; SSSE3-NEXT: pxor %xmm5, %xmm5
2115 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],…
2116 ; SSSE3-NEXT: movdqa %xmm7, %xmm1
2117 ; SSSE3-NEXT: psrlw $8, %xmm1
2118 ; SSSE3-NEXT: pmulhw %xmm3, %xmm5
2119 ; SSSE3-NEXT: movdqa %xmm5, %xmm3
2120 ; SSSE3-NEXT: psrlw $8, %xmm3
2121 ; SSSE3-NEXT: packuswb %xmm1, %xmm3
2122 ; SSSE3-NEXT: pand %xmm8, %xmm7
2123 ; SSSE3-NEXT: pand %xmm8, %xmm5
2124 ; SSSE3-NEXT: packuswb %xmm7, %xmm5
2125 ; SSSE3-NEXT: pxor %xmm1, %xmm1
2126 ; SSSE3-NEXT: pcmpgtb %xmm5, %xmm1
2127 ; SSSE3-NEXT: pcmpeqb %xmm3, %xmm1
2128 ; SSSE3-NEXT: pxor %xmm3, %xmm3
2129 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm4[8],xmm3[9],xmm4[9],xmm3[10],xmm4[10],xmm3[1…
2130 ; SSSE3-NEXT: pxor %xmm7, %xmm7
2131 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm0[8],xmm7[9],xmm0[9],xmm7[10],xmm0[10],xmm7[1…
2132 ; SSSE3-NEXT: pmulhw %xmm3, %xmm7
2133 ; SSSE3-NEXT: pxor %xmm3, %xmm3
2134 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],…
2135 ; SSSE3-NEXT: pxor %xmm4, %xmm4
2136 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],…
2137 ; SSSE3-NEXT: movdqa %xmm7, %xmm0
2138 ; SSSE3-NEXT: psrlw $8, %xmm0
2139 ; SSSE3-NEXT: pmulhw %xmm3, %xmm4
2140 ; SSSE3-NEXT: movdqa %xmm4, %xmm3
2141 ; SSSE3-NEXT: psrlw $8, %xmm3
2142 ; SSSE3-NEXT: packuswb %xmm0, %xmm3
2143 ; SSSE3-NEXT: pand %xmm8, %xmm7
2144 ; SSSE3-NEXT: pand %xmm8, %xmm4
2145 ; SSSE3-NEXT: packuswb %xmm7, %xmm4
2146 ; SSSE3-NEXT: pxor %xmm0, %xmm0
2147 ; SSSE3-NEXT: pcmpgtb %xmm4, %xmm0
2148 ; SSSE3-NEXT: pcmpeqb %xmm3, %xmm0
2149 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm3
2150 ; SSSE3-NEXT: pxor %xmm3, %xmm9
2151 ; SSSE3-NEXT: pxor %xmm3, %xmm2
2152 ; SSSE3-NEXT: pxor %xmm3, %xmm1
2153 ; SSSE3-NEXT: pxor %xmm3, %xmm0
2154 ; SSSE3-NEXT: movdqa %xmm11, 48(%rsi)
2155 ; SSSE3-NEXT: movdqa %xmm6, 32(%rsi)
2156 ; SSSE3-NEXT: movdqa %xmm5, 16(%rsi)
2157 ; SSSE3-NEXT: movdqa %xmm9, %xmm3
2158 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2159 ; SSSE3-NEXT: movdqa %xmm4, (%rsi)
2160 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm9[0],xmm4[1],xmm9[1],xmm4[2],xmm9[2],xmm4[3],…
2161 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3]
2162 ; SSSE3-NEXT: psrad $24, %xmm4
2163 ; SSSE3-NEXT: movdqa %xmm4, 192(%rdi)
2164 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],…
2165 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3]
2166 ; SSSE3-NEXT: psrad $24, %xmm4
2167 ; SSSE3-NEXT: movdqa %xmm4, 128(%rdi)
2168 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],…
2169 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3]
2170 ; SSSE3-NEXT: psrad $24, %xmm4
2171 ; SSSE3-NEXT: movdqa %xmm4, 64(%rdi)
2172 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],…
2173 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3]
2174 ; SSSE3-NEXT: psrad $24, %xmm4
2175 ; SSSE3-NEXT: movdqa %xmm4, (%rdi)
2176 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
2177 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3]
2178 ; SSSE3-NEXT: pslld $31, %xmm3
2179 ; SSSE3-NEXT: psrad $31, %xmm3
2180 ; SSSE3-NEXT: movdqa %xmm3, 224(%rdi)
2181 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4,4,5,5,6,6,7,7]
2182 ; SSSE3-NEXT: pslld $31, %xmm4
2183 ; SSSE3-NEXT: psrad $31, %xmm4
2184 ; SSSE3-NEXT: movdqa %xmm4, 240(%rdi)
2185 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
2186 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2187 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm9 = xmm9[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2188 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm9 = xmm9[4,4,5,5,6,6,7,7]
2189 ; SSSE3-NEXT: pslld $31, %xmm9
2190 ; SSSE3-NEXT: psrad $31, %xmm9
2191 ; SSSE3-NEXT: movdqa %xmm9, 208(%rdi)
2192 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
2193 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3]
2194 ; SSSE3-NEXT: pslld $31, %xmm3
2195 ; SSSE3-NEXT: psrad $31, %xmm3
2196 ; SSSE3-NEXT: movdqa %xmm3, 160(%rdi)
2197 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm4 = xmm4[4,4,5,5,6,6,7,7]
2198 ; SSSE3-NEXT: pslld $31, %xmm4
2199 ; SSSE3-NEXT: psrad $31, %xmm4
2200 ; SSSE3-NEXT: movdqa %xmm4, 176(%rdi)
2201 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
2202 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2203 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2204 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4,4,5,5,6,6,7,7]
2205 ; SSSE3-NEXT: pslld $31, %xmm2
2206 ; SSSE3-NEXT: psrad $31, %xmm2
2207 ; SSSE3-NEXT: movdqa %xmm2, 144(%rdi)
2208 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
2209 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3]
2210 ; SSSE3-NEXT: pslld $31, %xmm3
2211 ; SSSE3-NEXT: psrad $31, %xmm3
2212 ; SSSE3-NEXT: movdqa %xmm3, 96(%rdi)
2213 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4,4,5,5,6,6,7,7]
2214 ; SSSE3-NEXT: pslld $31, %xmm2
2215 ; SSSE3-NEXT: psrad $31, %xmm2
2216 ; SSSE3-NEXT: movdqa %xmm2, 112(%rdi)
2217 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2218 ; SSSE3-NEXT: punpckhbw {{.*#+}} xmm2 = xmm2[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2219 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2220 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
2221 ; SSSE3-NEXT: pslld $31, %xmm1
2222 ; SSSE3-NEXT: psrad $31, %xmm1
2223 ; SSSE3-NEXT: movdqa %xmm1, 80(%rdi)
2224 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
2225 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3]
2226 ; SSSE3-NEXT: pslld $31, %xmm2
2227 ; SSSE3-NEXT: psrad $31, %xmm2
2228 ; SSSE3-NEXT: movdqa %xmm2, 32(%rdi)
2229 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
2230 ; SSSE3-NEXT: pslld $31, %xmm1
2231 ; SSSE3-NEXT: psrad $31, %xmm1
2232 ; SSSE3-NEXT: movdqa %xmm1, 48(%rdi)
2233 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2234 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm0 = xmm0[4,4,5,5,6,6,7,7]
2235 ; SSSE3-NEXT: pslld $31, %xmm0
2236 ; SSSE3-NEXT: psrad $31, %xmm0
2237 ; SSSE3-NEXT: movdqa %xmm0, 16(%rdi)
2238 ; SSSE3-NEXT: retq
2703 ; SSSE3-LABEL: smulo_v8i16:
2704 ; SSSE3: # %bb.0:
2705 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2706 ; SSSE3-NEXT: pmulhw %xmm1, %xmm2
2707 ; SSSE3-NEXT: pmullw %xmm1, %xmm0
2708 ; SSSE3-NEXT: movdqa %xmm0, (%rdi)
2709 ; SSSE3-NEXT: psraw $15, %xmm0
2710 ; SSSE3-NEXT: pcmpeqw %xmm2, %xmm0
2711 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm1
2712 ; SSSE3-NEXT: pxor %xmm0, %xmm1
2713 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
2714 ; SSSE3-NEXT: psrad $16, %xmm0
2715 ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
2716 ; SSSE3-NEXT: pslld $31, %xmm1
2717 ; SSSE3-NEXT: psrad $31, %xmm1
2718 ; SSSE3-NEXT: retq
2821 ; SSSE3-LABEL: smulo_v2i64:
2822 ; SSSE3: # %bb.0:
2823 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[2,3,2,3]
2824 ; SSSE3-NEXT: movq %xmm2, %r8
2825 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
2826 ; SSSE3-NEXT: movq %xmm2, %rcx
2827 ; SSSE3-NEXT: movq %xmm1, %rdx
2828 ; SSSE3-NEXT: movq %xmm0, %rsi
2829 ; SSSE3-NEXT: xorl %eax, %eax
2830 ; SSSE3-NEXT: imulq %rdx, %rsi
2831 ; SSSE3-NEXT: movq $-1, %r9
2832 ; SSSE3-NEXT: movl $0, %edx
2833 ; SSSE3-NEXT: cmovoq %r9, %rdx
2834 ; SSSE3-NEXT: movq %rsi, %xmm1
2835 ; SSSE3-NEXT: imulq %r8, %rcx
2836 ; SSSE3-NEXT: movq %rcx, %xmm0
2837 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2838 ; SSSE3-NEXT: movq %rdx, %xmm0
2839 ; SSSE3-NEXT: cmovoq %r9, %rax
2840 ; SSSE3-NEXT: movq %rax, %xmm2
2841 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
2842 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
2843 ; SSSE3-NEXT: movdqa %xmm1, (%rdi)
2844 ; SSSE3-NEXT: retq
3003 ; SSSE3-LABEL: smulo_v4i24:
3004 ; SSSE3: # %bb.0:
3005 ; SSSE3-NEXT: pslld $8, %xmm0
3006 ; SSSE3-NEXT: psrad $8, %xmm0
3007 ; SSSE3-NEXT: pslld $8, %xmm1
3008 ; SSSE3-NEXT: psrad $8, %xmm1
3009 ; SSSE3-NEXT: pxor %xmm3, %xmm3
3010 ; SSSE3-NEXT: pxor %xmm2, %xmm2
3011 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
3012 ; SSSE3-NEXT: pand %xmm0, %xmm2
3013 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm3
3014 ; SSSE3-NEXT: pand %xmm1, %xmm3
3015 ; SSSE3-NEXT: paddd %xmm2, %xmm3
3016 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
3017 ; SSSE3-NEXT: pmuludq %xmm1, %xmm0
3018 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm0[1,3,2,3]
3019 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
3020 ; SSSE3-NEXT: pmuludq %xmm4, %xmm2
3021 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,3,2,3]
3022 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]
3023 ; SSSE3-NEXT: psubd %xmm3, %xmm5
3024 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]
3025 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[0,2,2,3]
3026 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
3027 ; SSSE3-NEXT: movdqa %xmm3, %xmm1
3028 ; SSSE3-NEXT: pslld $8, %xmm1
3029 ; SSSE3-NEXT: psrad $8, %xmm1
3030 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm1
3031 ; SSSE3-NEXT: psrad $31, %xmm3
3032 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm3
3033 ; SSSE3-NEXT: pcmpeqd %xmm4, %xmm4
3034 ; SSSE3-NEXT: pxor %xmm4, %xmm3
3035 ; SSSE3-NEXT: pxor %xmm4, %xmm1
3036 ; SSSE3-NEXT: por %xmm3, %xmm1
3037 ; SSSE3-NEXT: movd %xmm0, %eax
3038 ; SSSE3-NEXT: movw %ax, (%rdi)
3039 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
3040 ; SSSE3-NEXT: movd %xmm0, %ecx
3041 ; SSSE3-NEXT: movw %cx, 6(%rdi)
3042 ; SSSE3-NEXT: movd %xmm2, %edx
3043 ; SSSE3-NEXT: movw %dx, 3(%rdi)
3044 ; SSSE3-NEXT: shrl $16, %eax
3045 ; SSSE3-NEXT: movb %al, 2(%rdi)
3046 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,2,2,2]
3047 ; SSSE3-NEXT: movd %xmm0, %eax
3048 ; SSSE3-NEXT: movw %ax, 9(%rdi)
3049 ; SSSE3-NEXT: shrl $16, %ecx
3050 ; SSSE3-NEXT: movb %cl, 8(%rdi)
3051 ; SSSE3-NEXT: shrl $16, %edx
3052 ; SSSE3-NEXT: movb %dl, 5(%rdi)
3053 ; SSSE3-NEXT: shrl $16, %eax
3054 ; SSSE3-NEXT: movb %al, 11(%rdi)
3055 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
3056 ; SSSE3-NEXT: retq
3236 ; SSSE3-LABEL: smulo_v4i1:
3237 ; SSSE3: # %bb.0:
3238 ; SSSE3-NEXT: pand %xmm1, %xmm0
3239 ; SSSE3-NEXT: pslld $31, %xmm0
3240 ; SSSE3-NEXT: movmskps %xmm0, %eax
3241 ; SSSE3-NEXT: psrad $31, %xmm0
3242 ; SSSE3-NEXT: movb %al, (%rdi)
3243 ; SSSE3-NEXT: retq
3428 ; SSSE3-LABEL: smulo_v2i128:
3429 ; SSSE3: # %bb.0:
3430 ; SSSE3-NEXT: pushq %rbp
3431 ; SSSE3-NEXT: pushq %r15
3432 ; SSSE3-NEXT: pushq %r14
3433 ; SSSE3-NEXT: pushq %r13
3434 ; SSSE3-NEXT: pushq %r12
3435 ; SSSE3-NEXT: pushq %rbx
3436 ; SSSE3-NEXT: movq %r8, %r14
3437 ; SSSE3-NEXT: movq %rcx, %r11
3438 ; SSSE3-NEXT: movq %rdx, %r15
3439 ; SSSE3-NEXT: movq %rsi, %r13
3440 ; SSSE3-NEXT: movq {{[0-9]+}}(%rsp), %r8
3441 ; SSSE3-NEXT: movq %rsi, %rcx
3442 ; SSSE3-NEXT: sarq $63, %rcx
3443 ; SSSE3-NEXT: movq %r14, %rsi
3444 ; SSSE3-NEXT: imulq %rcx, %rsi
3445 ; SSSE3-NEXT: movq %r14, %rax
3446 ; SSSE3-NEXT: mulq %rcx
3447 ; SSSE3-NEXT: movq %rax, %r10
3448 ; SSSE3-NEXT: addq %rsi, %rdx
3449 ; SSSE3-NEXT: imulq %r9, %rcx
3450 ; SSSE3-NEXT: addq %rdx, %rcx
3451 ; SSSE3-NEXT: movq %r9, %rbx
3452 ; SSSE3-NEXT: sarq $63, %rbx
3453 ; SSSE3-NEXT: movq %rbx, %rsi
3454 ; SSSE3-NEXT: imulq %r13, %rsi
3455 ; SSSE3-NEXT: movq %rbx, %rax
3456 ; SSSE3-NEXT: mulq %rdi
3457 ; SSSE3-NEXT: movq %rax, %r12
3458 ; SSSE3-NEXT: addq %rsi, %rdx
3459 ; SSSE3-NEXT: imulq %rdi, %rbx
3460 ; SSSE3-NEXT: addq %rdx, %rbx
3461 ; SSSE3-NEXT: addq %r10, %r12
3462 ; SSSE3-NEXT: adcq %rcx, %rbx
3463 ; SSSE3-NEXT: movq %rdi, %rax
3464 ; SSSE3-NEXT: mulq %r14
3465 ; SSSE3-NEXT: movq %rdx, %rbp
3466 ; SSSE3-NEXT: movq %rax, %r10
3467 ; SSSE3-NEXT: movq %r13, %rax
3468 ; SSSE3-NEXT: mulq %r14
3469 ; SSSE3-NEXT: movq %rdx, %rsi
3470 ; SSSE3-NEXT: movq %rax, %rcx
3471 ; SSSE3-NEXT: addq %rbp, %rcx
3472 ; SSSE3-NEXT: adcq $0, %rsi
3473 ; SSSE3-NEXT: movq %rdi, %rax
3474 ; SSSE3-NEXT: mulq %r9
3475 ; SSSE3-NEXT: movq %rdx, %rbp
3476 ; SSSE3-NEXT: movq %rax, %rdi
3477 ; SSSE3-NEXT: addq %rcx, %rdi
3478 ; SSSE3-NEXT: adcq %rsi, %rbp
3479 ; SSSE3-NEXT: setb %al
3480 ; SSSE3-NEXT: movzbl %al, %ecx
3481 ; SSSE3-NEXT: movq %r13, %rax
3482 ; SSSE3-NEXT: mulq %r9
3483 ; SSSE3-NEXT: addq %rbp, %rax
3484 ; SSSE3-NEXT: adcq %rcx, %rdx
3485 ; SSSE3-NEXT: addq %r12, %rax
3486 ; SSSE3-NEXT: adcq %rbx, %rdx
3487 ; SSSE3-NEXT: movq {{[0-9]+}}(%rsp), %r13
3488 ; SSSE3-NEXT: movq %rdi, 8(%r13)
3489 ; SSSE3-NEXT: sarq $63, %rdi
3490 ; SSSE3-NEXT: xorq %rdi, %rdx
3491 ; SSSE3-NEXT: xorq %rax, %rdi
3492 ; SSSE3-NEXT: xorl %r12d, %r12d
3493 ; SSSE3-NEXT: orq %rdx, %rdi
3494 ; SSSE3-NEXT: setne %r12b
3495 ; SSSE3-NEXT: movq %r11, %rdi
3496 ; SSSE3-NEXT: sarq $63, %rdi
3497 ; SSSE3-NEXT: movq %r8, %rax
3498 ; SSSE3-NEXT: movq %r8, %rsi
3499 ; SSSE3-NEXT: imulq %rdi, %rsi
3500 ; SSSE3-NEXT: movq %r8, %rbx
3501 ; SSSE3-NEXT: mulq %rdi
3502 ; SSSE3-NEXT: movq %rax, %rcx
3503 ; SSSE3-NEXT: addq %rsi, %rdx
3504 ; SSSE3-NEXT: movq {{[0-9]+}}(%rsp), %r8
3505 ; SSSE3-NEXT: imulq %r8, %rdi
3506 ; SSSE3-NEXT: addq %rdx, %rdi
3507 ; SSSE3-NEXT: movq %r8, %rsi
3508 ; SSSE3-NEXT: sarq $63, %rsi
3509 ; SSSE3-NEXT: movq %rsi, %rbp
3510 ; SSSE3-NEXT: imulq %r11, %rbp
3511 ; SSSE3-NEXT: movq %rsi, %rax
3512 ; SSSE3-NEXT: mulq %r15
3513 ; SSSE3-NEXT: movq %rax, %r14
3514 ; SSSE3-NEXT: addq %rbp, %rdx
3515 ; SSSE3-NEXT: imulq %r15, %rsi
3516 ; SSSE3-NEXT: addq %rdx, %rsi
3517 ; SSSE3-NEXT: addq %rcx, %r14
3518 ; SSSE3-NEXT: adcq %rdi, %rsi
3519 ; SSSE3-NEXT: movq %r15, %rax
3520 ; SSSE3-NEXT: mulq %rbx
3521 ; SSSE3-NEXT: movq %rdx, %rcx
3522 ; SSSE3-NEXT: movq %rax, %r9
3523 ; SSSE3-NEXT: movq %r11, %rax
3524 ; SSSE3-NEXT: mulq %rbx
3525 ; SSSE3-NEXT: movq %rdx, %rbx
3526 ; SSSE3-NEXT: movq %rax, %rbp
3527 ; SSSE3-NEXT: addq %rcx, %rbp
3528 ; SSSE3-NEXT: adcq $0, %rbx
3529 ; SSSE3-NEXT: movq %r15, %rax
3530 ; SSSE3-NEXT: mulq %r8
3531 ; SSSE3-NEXT: movq %rdx, %rcx
3532 ; SSSE3-NEXT: movq %rax, %rdi
3533 ; SSSE3-NEXT: addq %rbp, %rdi
3534 ; SSSE3-NEXT: adcq %rbx, %rcx
3535 ; SSSE3-NEXT: setb %al
3536 ; SSSE3-NEXT: movzbl %al, %ebp
3537 ; SSSE3-NEXT: movq %r11, %rax
3538 ; SSSE3-NEXT: mulq %r8
3539 ; SSSE3-NEXT: addq %rcx, %rax
3540 ; SSSE3-NEXT: adcq %rbp, %rdx
3541 ; SSSE3-NEXT: addq %r14, %rax
3542 ; SSSE3-NEXT: adcq %rsi, %rdx
3543 ; SSSE3-NEXT: movq %rdi, 24(%r13)
3544 ; SSSE3-NEXT: sarq $63, %rdi
3545 ; SSSE3-NEXT: xorq %rdi, %rdx
3546 ; SSSE3-NEXT: xorq %rax, %rdi
3547 ; SSSE3-NEXT: xorl %eax, %eax
3548 ; SSSE3-NEXT: orq %rdx, %rdi
3549 ; SSSE3-NEXT: setne %al
3550 ; SSSE3-NEXT: negl %eax
3551 ; SSSE3-NEXT: movd %eax, %xmm1
3552 ; SSSE3-NEXT: negl %r12d
3553 ; SSSE3-NEXT: movd %r12d, %xmm0
3554 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3555 ; SSSE3-NEXT: movq %r9, 16(%r13)
3556 ; SSSE3-NEXT: movq %r10, (%r13)
3557 ; SSSE3-NEXT: popq %rbx
3558 ; SSSE3-NEXT: popq %r12
3559 ; SSSE3-NEXT: popq %r13
3560 ; SSSE3-NEXT: popq %r14
3561 ; SSSE3-NEXT: popq %r15
3562 ; SSSE3-NEXT: popq %rbp
3563 ; SSSE3-NEXT: retq