• Home
  • Raw
  • Download

Lines Matching refs:SSSE3

3 …mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefix=SSE --check-prefix=SSSE3
52 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i32:
53 ; SSSE3: # %bb.0:
54 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
55 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
56 ; SSSE3-NEXT: pxor %xmm1, %xmm2
57 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [4294967295,4294967295]
58 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
59 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
60 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
61 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm2
62 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
63 ; SSSE3-NEXT: pand %xmm5, %xmm2
64 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
65 ; SSSE3-NEXT: por %xmm2, %xmm3
66 ; SSSE3-NEXT: pand %xmm3, %xmm0
67 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm3
68 ; SSSE3-NEXT: por %xmm0, %xmm3
69 ; SSSE3-NEXT: pxor %xmm3, %xmm1
70 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [18446744069414584320,18446744069414584320]
71 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
72 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
73 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
74 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm1
75 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
76 ; SSSE3-NEXT: pand %xmm4, %xmm0
77 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
78 ; SSSE3-NEXT: por %xmm0, %xmm1
79 ; SSSE3-NEXT: pand %xmm1, %xmm3
80 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm1
81 ; SSSE3-NEXT: por %xmm3, %xmm1
82 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
83 ; SSSE3-NEXT: retq
196 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i32_store:
197 ; SSSE3: # %bb.0:
198 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
199 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
200 ; SSSE3-NEXT: pxor %xmm1, %xmm2
201 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [4294967295,4294967295]
202 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
203 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
204 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
205 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm2
206 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
207 ; SSSE3-NEXT: pand %xmm5, %xmm2
208 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
209 ; SSSE3-NEXT: por %xmm2, %xmm3
210 ; SSSE3-NEXT: pand %xmm3, %xmm0
211 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm3
212 ; SSSE3-NEXT: por %xmm0, %xmm3
213 ; SSSE3-NEXT: pxor %xmm3, %xmm1
214 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [18446744069414584320,18446744069414584320]
215 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
216 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
217 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
218 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm1
219 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
220 ; SSSE3-NEXT: pand %xmm4, %xmm0
221 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
222 ; SSSE3-NEXT: por %xmm0, %xmm1
223 ; SSSE3-NEXT: pand %xmm1, %xmm3
224 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm1
225 ; SSSE3-NEXT: por %xmm3, %xmm1
226 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
227 ; SSSE3-NEXT: movq %xmm0, (%rdi)
228 ; SSSE3-NEXT: retq
371 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i32:
372 ; SSSE3: # %bb.0:
373 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [2147483647,2147483647]
374 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
375 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
376 ; SSSE3-NEXT: pxor %xmm2, %xmm3
377 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [4294967295,4294967295]
378 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
379 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm6
380 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
381 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm3
382 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
383 ; SSSE3-NEXT: pand %xmm7, %xmm4
384 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
385 ; SSSE3-NEXT: por %xmm4, %xmm3
386 ; SSSE3-NEXT: pand %xmm3, %xmm0
387 ; SSSE3-NEXT: pandn %xmm8, %xmm3
388 ; SSSE3-NEXT: por %xmm0, %xmm3
389 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
390 ; SSSE3-NEXT: pxor %xmm2, %xmm0
391 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
392 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
393 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
394 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm0
395 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
396 ; SSSE3-NEXT: pand %xmm6, %xmm0
397 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
398 ; SSSE3-NEXT: por %xmm0, %xmm4
399 ; SSSE3-NEXT: pand %xmm4, %xmm1
400 ; SSSE3-NEXT: pandn %xmm8, %xmm4
401 ; SSSE3-NEXT: por %xmm1, %xmm4
402 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [18446744071562067968,18446744071562067968]
403 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
404 ; SSSE3-NEXT: pxor %xmm2, %xmm0
405 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [18446744069414584320,18446744069414584320]
406 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
407 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm6
408 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
409 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm0
410 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
411 ; SSSE3-NEXT: pand %xmm7, %xmm0
412 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
413 ; SSSE3-NEXT: por %xmm0, %xmm6
414 ; SSSE3-NEXT: pand %xmm6, %xmm4
415 ; SSSE3-NEXT: pandn %xmm1, %xmm6
416 ; SSSE3-NEXT: por %xmm4, %xmm6
417 ; SSSE3-NEXT: pxor %xmm3, %xmm2
418 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
419 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm0
420 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[0,0,2,2]
421 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm2
422 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
423 ; SSSE3-NEXT: pand %xmm4, %xmm2
424 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
425 ; SSSE3-NEXT: por %xmm2, %xmm0
426 ; SSSE3-NEXT: pand %xmm0, %xmm3
427 ; SSSE3-NEXT: pandn %xmm1, %xmm0
428 ; SSSE3-NEXT: por %xmm3, %xmm0
429 ; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm6[0,2]
430 ; SSSE3-NEXT: retq
686 ; SSSE3-LABEL: trunc_ssat_v8i64_v8i32:
687 ; SSSE3: # %bb.0:
688 ; SSSE3-NEXT: movdqa (%rdi), %xmm3
689 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm5
690 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm7
691 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm9
692 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [2147483647,2147483647]
693 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648]
694 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
695 ; SSSE3-NEXT: pxor %xmm0, %xmm2
696 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [4294967295,4294967295]
697 ; SSSE3-NEXT: movdqa %xmm10, %xmm6
698 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm6
699 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm6[0,0,2,2]
700 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
701 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
702 ; SSSE3-NEXT: pand %xmm1, %xmm4
703 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
704 ; SSSE3-NEXT: por %xmm4, %xmm2
705 ; SSSE3-NEXT: pand %xmm2, %xmm3
706 ; SSSE3-NEXT: pandn %xmm8, %xmm2
707 ; SSSE3-NEXT: por %xmm3, %xmm2
708 ; SSSE3-NEXT: movdqa %xmm5, %xmm1
709 ; SSSE3-NEXT: pxor %xmm0, %xmm1
710 ; SSSE3-NEXT: movdqa %xmm10, %xmm3
711 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
712 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
713 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm1
714 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
715 ; SSSE3-NEXT: pand %xmm4, %xmm1
716 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
717 ; SSSE3-NEXT: por %xmm1, %xmm3
718 ; SSSE3-NEXT: pand %xmm3, %xmm5
719 ; SSSE3-NEXT: pandn %xmm8, %xmm3
720 ; SSSE3-NEXT: por %xmm5, %xmm3
721 ; SSSE3-NEXT: movdqa %xmm7, %xmm1
722 ; SSSE3-NEXT: pxor %xmm0, %xmm1
723 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
724 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
725 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
726 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm1
727 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
728 ; SSSE3-NEXT: pand %xmm5, %xmm1
729 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
730 ; SSSE3-NEXT: por %xmm1, %xmm5
731 ; SSSE3-NEXT: pand %xmm5, %xmm7
732 ; SSSE3-NEXT: pandn %xmm8, %xmm5
733 ; SSSE3-NEXT: por %xmm7, %xmm5
734 ; SSSE3-NEXT: movdqa %xmm9, %xmm1
735 ; SSSE3-NEXT: pxor %xmm0, %xmm1
736 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
737 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
738 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
739 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm1
740 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
741 ; SSSE3-NEXT: pand %xmm6, %xmm1
742 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[1,1,3,3]
743 ; SSSE3-NEXT: por %xmm1, %xmm7
744 ; SSSE3-NEXT: pand %xmm7, %xmm9
745 ; SSSE3-NEXT: pandn %xmm8, %xmm7
746 ; SSSE3-NEXT: por %xmm9, %xmm7
747 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744071562067968,18446744071562067968]
748 ; SSSE3-NEXT: movdqa %xmm7, %xmm1
749 ; SSSE3-NEXT: pxor %xmm0, %xmm1
750 ; SSSE3-NEXT: movdqa {{.*#+}} xmm9 = [18446744069414584320,18446744069414584320]
751 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
752 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm4
753 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
754 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm1
755 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
756 ; SSSE3-NEXT: pand %xmm6, %xmm1
757 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
758 ; SSSE3-NEXT: por %xmm1, %xmm4
759 ; SSSE3-NEXT: pand %xmm4, %xmm7
760 ; SSSE3-NEXT: pandn %xmm8, %xmm4
761 ; SSSE3-NEXT: por %xmm7, %xmm4
762 ; SSSE3-NEXT: movdqa %xmm5, %xmm1
763 ; SSSE3-NEXT: pxor %xmm0, %xmm1
764 ; SSSE3-NEXT: movdqa %xmm1, %xmm6
765 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm6
766 ; SSSE3-NEXT: pshufd {{.*#+}} xmm10 = xmm6[0,0,2,2]
767 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm1
768 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm1[1,1,3,3]
769 ; SSSE3-NEXT: pand %xmm10, %xmm7
770 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm6[1,1,3,3]
771 ; SSSE3-NEXT: por %xmm7, %xmm1
772 ; SSSE3-NEXT: pand %xmm1, %xmm5
773 ; SSSE3-NEXT: pandn %xmm8, %xmm1
774 ; SSSE3-NEXT: por %xmm5, %xmm1
775 ; SSSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm4[0,2]
776 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
777 ; SSSE3-NEXT: pxor %xmm0, %xmm4
778 ; SSSE3-NEXT: movdqa %xmm4, %xmm5
779 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm5
780 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
781 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
782 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
783 ; SSSE3-NEXT: pand %xmm6, %xmm4
784 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
785 ; SSSE3-NEXT: por %xmm4, %xmm5
786 ; SSSE3-NEXT: pand %xmm5, %xmm3
787 ; SSSE3-NEXT: pandn %xmm8, %xmm5
788 ; SSSE3-NEXT: por %xmm3, %xmm5
789 ; SSSE3-NEXT: pxor %xmm2, %xmm0
790 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
791 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm3
792 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
793 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm0
794 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
795 ; SSSE3-NEXT: pand %xmm4, %xmm6
796 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[1,1,3,3]
797 ; SSSE3-NEXT: por %xmm6, %xmm0
798 ; SSSE3-NEXT: pand %xmm0, %xmm2
799 ; SSSE3-NEXT: pandn %xmm8, %xmm0
800 ; SSSE3-NEXT: por %xmm2, %xmm0
801 ; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm5[0,2]
802 ; SSSE3-NEXT: retq
1030 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i16:
1031 ; SSSE3: # %bb.0:
1032 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
1033 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
1034 ; SSSE3-NEXT: pxor %xmm1, %xmm2
1035 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147516415,2147516415]
1036 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
1037 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
1038 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
1039 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm2
1040 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
1041 ; SSSE3-NEXT: pand %xmm5, %xmm2
1042 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
1043 ; SSSE3-NEXT: por %xmm2, %xmm3
1044 ; SSSE3-NEXT: pand %xmm3, %xmm0
1045 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm3
1046 ; SSSE3-NEXT: por %xmm0, %xmm3
1047 ; SSSE3-NEXT: pxor %xmm3, %xmm1
1048 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [18446744071562035200,18446744071562035200]
1049 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
1050 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
1051 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
1052 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm1
1053 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
1054 ; SSSE3-NEXT: pand %xmm4, %xmm0
1055 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
1056 ; SSSE3-NEXT: por %xmm0, %xmm1
1057 ; SSSE3-NEXT: pand %xmm1, %xmm3
1058 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm1
1059 ; SSSE3-NEXT: por %xmm3, %xmm1
1060 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
1061 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1062 ; SSSE3-NEXT: retq
1199 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i16_store:
1200 ; SSSE3: # %bb.0:
1201 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
1202 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
1203 ; SSSE3-NEXT: pxor %xmm1, %xmm2
1204 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147516415,2147516415]
1205 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
1206 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
1207 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
1208 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm2
1209 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
1210 ; SSSE3-NEXT: pand %xmm5, %xmm2
1211 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
1212 ; SSSE3-NEXT: por %xmm2, %xmm3
1213 ; SSSE3-NEXT: pand %xmm3, %xmm0
1214 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm3
1215 ; SSSE3-NEXT: por %xmm0, %xmm3
1216 ; SSSE3-NEXT: pxor %xmm3, %xmm1
1217 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [18446744071562035200,18446744071562035200]
1218 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
1219 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
1220 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
1221 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm1
1222 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
1223 ; SSSE3-NEXT: pand %xmm4, %xmm0
1224 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
1225 ; SSSE3-NEXT: por %xmm0, %xmm1
1226 ; SSSE3-NEXT: pand %xmm1, %xmm3
1227 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm1
1228 ; SSSE3-NEXT: por %xmm3, %xmm1
1229 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
1230 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1231 ; SSSE3-NEXT: movd %xmm0, (%rdi)
1232 ; SSSE3-NEXT: retq
1403 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i16:
1404 ; SSSE3: # %bb.0:
1405 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [32767,32767]
1406 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
1407 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
1408 ; SSSE3-NEXT: pxor %xmm2, %xmm3
1409 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [2147516415,2147516415]
1410 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
1411 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm6
1412 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
1413 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm3
1414 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
1415 ; SSSE3-NEXT: pand %xmm7, %xmm4
1416 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
1417 ; SSSE3-NEXT: por %xmm4, %xmm3
1418 ; SSSE3-NEXT: pand %xmm3, %xmm0
1419 ; SSSE3-NEXT: pandn %xmm8, %xmm3
1420 ; SSSE3-NEXT: por %xmm0, %xmm3
1421 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
1422 ; SSSE3-NEXT: pxor %xmm2, %xmm0
1423 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
1424 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
1425 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
1426 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm0
1427 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1428 ; SSSE3-NEXT: pand %xmm6, %xmm0
1429 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
1430 ; SSSE3-NEXT: por %xmm0, %xmm4
1431 ; SSSE3-NEXT: pand %xmm4, %xmm1
1432 ; SSSE3-NEXT: pandn %xmm8, %xmm4
1433 ; SSSE3-NEXT: por %xmm1, %xmm4
1434 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [18446744073709518848,18446744073709518848]
1435 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
1436 ; SSSE3-NEXT: pxor %xmm2, %xmm0
1437 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [18446744071562035200,18446744071562035200]
1438 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
1439 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm6
1440 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
1441 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm0
1442 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1443 ; SSSE3-NEXT: pand %xmm7, %xmm0
1444 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
1445 ; SSSE3-NEXT: por %xmm0, %xmm6
1446 ; SSSE3-NEXT: pand %xmm6, %xmm4
1447 ; SSSE3-NEXT: pandn %xmm1, %xmm6
1448 ; SSSE3-NEXT: por %xmm4, %xmm6
1449 ; SSSE3-NEXT: pxor %xmm3, %xmm2
1450 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
1451 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm0
1452 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[0,0,2,2]
1453 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm2
1454 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
1455 ; SSSE3-NEXT: pand %xmm4, %xmm2
1456 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1457 ; SSSE3-NEXT: por %xmm2, %xmm0
1458 ; SSSE3-NEXT: pand %xmm0, %xmm3
1459 ; SSSE3-NEXT: pandn %xmm1, %xmm0
1460 ; SSSE3-NEXT: por %xmm3, %xmm0
1461 ; SSSE3-NEXT: packssdw %xmm6, %xmm0
1462 ; SSSE3-NEXT: packssdw %xmm0, %xmm0
1463 ; SSSE3-NEXT: retq
1650 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i16_store:
1651 ; SSSE3: # %bb.0:
1652 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [32767,32767]
1653 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
1654 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
1655 ; SSSE3-NEXT: pxor %xmm2, %xmm3
1656 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [2147516415,2147516415]
1657 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
1658 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm6
1659 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
1660 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm3
1661 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
1662 ; SSSE3-NEXT: pand %xmm7, %xmm4
1663 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
1664 ; SSSE3-NEXT: por %xmm4, %xmm3
1665 ; SSSE3-NEXT: pand %xmm3, %xmm0
1666 ; SSSE3-NEXT: pandn %xmm8, %xmm3
1667 ; SSSE3-NEXT: por %xmm0, %xmm3
1668 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
1669 ; SSSE3-NEXT: pxor %xmm2, %xmm0
1670 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
1671 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
1672 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
1673 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm0
1674 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1675 ; SSSE3-NEXT: pand %xmm6, %xmm0
1676 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
1677 ; SSSE3-NEXT: por %xmm0, %xmm4
1678 ; SSSE3-NEXT: pand %xmm4, %xmm1
1679 ; SSSE3-NEXT: pandn %xmm8, %xmm4
1680 ; SSSE3-NEXT: por %xmm1, %xmm4
1681 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [18446744073709518848,18446744073709518848]
1682 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
1683 ; SSSE3-NEXT: pxor %xmm2, %xmm1
1684 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [18446744071562035200,18446744071562035200]
1685 ; SSSE3-NEXT: movdqa %xmm1, %xmm6
1686 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm6
1687 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
1688 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm1
1689 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1690 ; SSSE3-NEXT: pand %xmm7, %xmm1
1691 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
1692 ; SSSE3-NEXT: por %xmm1, %xmm6
1693 ; SSSE3-NEXT: pand %xmm6, %xmm4
1694 ; SSSE3-NEXT: pandn %xmm0, %xmm6
1695 ; SSSE3-NEXT: por %xmm4, %xmm6
1696 ; SSSE3-NEXT: pxor %xmm3, %xmm2
1697 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
1698 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm1
1699 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[0,0,2,2]
1700 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm2
1701 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
1702 ; SSSE3-NEXT: pand %xmm4, %xmm2
1703 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1704 ; SSSE3-NEXT: por %xmm2, %xmm1
1705 ; SSSE3-NEXT: pand %xmm1, %xmm3
1706 ; SSSE3-NEXT: pandn %xmm0, %xmm1
1707 ; SSSE3-NEXT: por %xmm3, %xmm1
1708 ; SSSE3-NEXT: packssdw %xmm6, %xmm1
1709 ; SSSE3-NEXT: packssdw %xmm1, %xmm1
1710 ; SSSE3-NEXT: movq %xmm1, (%rdi)
1711 ; SSSE3-NEXT: retq
1959 ; SSSE3-LABEL: trunc_ssat_v8i64_v8i16:
1960 ; SSSE3: # %bb.0:
1961 ; SSSE3-NEXT: movdqa (%rdi), %xmm6
1962 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm9
1963 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm3
1964 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm5
1965 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [32767,32767]
1966 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
1967 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
1968 ; SSSE3-NEXT: pxor %xmm1, %xmm2
1969 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [2147516415,2147516415]
1970 ; SSSE3-NEXT: movdqa %xmm10, %xmm7
1971 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm7
1972 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
1973 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
1974 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
1975 ; SSSE3-NEXT: pand %xmm0, %xmm4
1976 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm7[1,1,3,3]
1977 ; SSSE3-NEXT: por %xmm4, %xmm2
1978 ; SSSE3-NEXT: pand %xmm2, %xmm3
1979 ; SSSE3-NEXT: pandn %xmm8, %xmm2
1980 ; SSSE3-NEXT: por %xmm3, %xmm2
1981 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
1982 ; SSSE3-NEXT: pxor %xmm1, %xmm0
1983 ; SSSE3-NEXT: movdqa %xmm10, %xmm3
1984 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm3
1985 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
1986 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm0
1987 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1988 ; SSSE3-NEXT: pand %xmm4, %xmm0
1989 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
1990 ; SSSE3-NEXT: por %xmm0, %xmm3
1991 ; SSSE3-NEXT: pand %xmm3, %xmm5
1992 ; SSSE3-NEXT: pandn %xmm8, %xmm3
1993 ; SSSE3-NEXT: por %xmm5, %xmm3
1994 ; SSSE3-NEXT: movdqa %xmm6, %xmm0
1995 ; SSSE3-NEXT: pxor %xmm1, %xmm0
1996 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
1997 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
1998 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
1999 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm0
2000 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2001 ; SSSE3-NEXT: pand %xmm5, %xmm0
2002 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
2003 ; SSSE3-NEXT: por %xmm0, %xmm5
2004 ; SSSE3-NEXT: pand %xmm5, %xmm6
2005 ; SSSE3-NEXT: pandn %xmm8, %xmm5
2006 ; SSSE3-NEXT: por %xmm6, %xmm5
2007 ; SSSE3-NEXT: movdqa %xmm9, %xmm0
2008 ; SSSE3-NEXT: pxor %xmm1, %xmm0
2009 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
2010 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
2011 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
2012 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm0
2013 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2014 ; SSSE3-NEXT: pand %xmm6, %xmm0
2015 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[1,1,3,3]
2016 ; SSSE3-NEXT: por %xmm0, %xmm7
2017 ; SSSE3-NEXT: pand %xmm7, %xmm9
2018 ; SSSE3-NEXT: pandn %xmm8, %xmm7
2019 ; SSSE3-NEXT: por %xmm9, %xmm7
2020 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709518848,18446744073709518848]
2021 ; SSSE3-NEXT: movdqa %xmm7, %xmm0
2022 ; SSSE3-NEXT: pxor %xmm1, %xmm0
2023 ; SSSE3-NEXT: movdqa {{.*#+}} xmm9 = [18446744071562035200,18446744071562035200]
2024 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
2025 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm4
2026 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
2027 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm0
2028 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2029 ; SSSE3-NEXT: pand %xmm6, %xmm0
2030 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
2031 ; SSSE3-NEXT: por %xmm0, %xmm4
2032 ; SSSE3-NEXT: pand %xmm4, %xmm7
2033 ; SSSE3-NEXT: pandn %xmm8, %xmm4
2034 ; SSSE3-NEXT: por %xmm7, %xmm4
2035 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
2036 ; SSSE3-NEXT: pxor %xmm1, %xmm0
2037 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
2038 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm6
2039 ; SSSE3-NEXT: pshufd {{.*#+}} xmm10 = xmm6[0,0,2,2]
2040 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm0
2041 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm0[1,1,3,3]
2042 ; SSSE3-NEXT: pand %xmm10, %xmm7
2043 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
2044 ; SSSE3-NEXT: por %xmm7, %xmm0
2045 ; SSSE3-NEXT: pand %xmm0, %xmm5
2046 ; SSSE3-NEXT: pandn %xmm8, %xmm0
2047 ; SSSE3-NEXT: por %xmm5, %xmm0
2048 ; SSSE3-NEXT: packssdw %xmm4, %xmm0
2049 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
2050 ; SSSE3-NEXT: pxor %xmm1, %xmm4
2051 ; SSSE3-NEXT: movdqa %xmm4, %xmm5
2052 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm5
2053 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
2054 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
2055 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
2056 ; SSSE3-NEXT: pand %xmm6, %xmm4
2057 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
2058 ; SSSE3-NEXT: por %xmm4, %xmm5
2059 ; SSSE3-NEXT: pand %xmm5, %xmm3
2060 ; SSSE3-NEXT: pandn %xmm8, %xmm5
2061 ; SSSE3-NEXT: por %xmm3, %xmm5
2062 ; SSSE3-NEXT: pxor %xmm2, %xmm1
2063 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
2064 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm3
2065 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
2066 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm1
2067 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2068 ; SSSE3-NEXT: pand %xmm4, %xmm1
2069 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
2070 ; SSSE3-NEXT: por %xmm1, %xmm3
2071 ; SSSE3-NEXT: pand %xmm3, %xmm2
2072 ; SSSE3-NEXT: pandn %xmm8, %xmm3
2073 ; SSSE3-NEXT: por %xmm2, %xmm3
2074 ; SSSE3-NEXT: packssdw %xmm5, %xmm3
2075 ; SSSE3-NEXT: packssdw %xmm3, %xmm0
2076 ; SSSE3-NEXT: retq
2472 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i8:
2473 ; SSSE3: # %bb.0:
2474 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
2475 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2476 ; SSSE3-NEXT: pxor %xmm1, %xmm2
2477 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483775,2147483775]
2478 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
2479 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
2480 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
2481 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm2
2482 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
2483 ; SSSE3-NEXT: pand %xmm5, %xmm2
2484 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
2485 ; SSSE3-NEXT: por %xmm2, %xmm3
2486 ; SSSE3-NEXT: pand %xmm3, %xmm0
2487 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm3
2488 ; SSSE3-NEXT: por %xmm0, %xmm3
2489 ; SSSE3-NEXT: pxor %xmm3, %xmm1
2490 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [18446744071562067840,18446744071562067840]
2491 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
2492 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
2493 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
2494 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm1
2495 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2496 ; SSSE3-NEXT: pand %xmm4, %xmm1
2497 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
2498 ; SSSE3-NEXT: por %xmm1, %xmm0
2499 ; SSSE3-NEXT: pand %xmm0, %xmm3
2500 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm0
2501 ; SSSE3-NEXT: por %xmm3, %xmm0
2502 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2503 ; SSSE3-NEXT: retq
2619 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i8_store:
2620 ; SSSE3: # %bb.0:
2621 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
2622 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2623 ; SSSE3-NEXT: pxor %xmm1, %xmm2
2624 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483775,2147483775]
2625 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
2626 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
2627 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
2628 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm2
2629 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
2630 ; SSSE3-NEXT: pand %xmm5, %xmm2
2631 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
2632 ; SSSE3-NEXT: por %xmm2, %xmm3
2633 ; SSSE3-NEXT: pand %xmm3, %xmm0
2634 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm3
2635 ; SSSE3-NEXT: por %xmm0, %xmm3
2636 ; SSSE3-NEXT: pxor %xmm3, %xmm1
2637 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [18446744071562067840,18446744071562067840]
2638 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
2639 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
2640 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
2641 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm1
2642 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
2643 ; SSSE3-NEXT: pand %xmm4, %xmm0
2644 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
2645 ; SSSE3-NEXT: por %xmm0, %xmm1
2646 ; SSSE3-NEXT: pand %xmm1, %xmm3
2647 ; SSSE3-NEXT: pandn {{.*}}(%rip), %xmm1
2648 ; SSSE3-NEXT: por %xmm3, %xmm1
2649 ; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2650 ; SSSE3-NEXT: movd %xmm1, %eax
2651 ; SSSE3-NEXT: movw %ax, (%rdi)
2652 ; SSSE3-NEXT: retq
2800 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i8:
2801 ; SSSE3: # %bb.0:
2802 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
2803 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
2804 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
2805 ; SSSE3-NEXT: pxor %xmm2, %xmm3
2806 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [2147483775,2147483775]
2807 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
2808 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm6
2809 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
2810 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm3
2811 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
2812 ; SSSE3-NEXT: pand %xmm7, %xmm4
2813 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
2814 ; SSSE3-NEXT: por %xmm4, %xmm3
2815 ; SSSE3-NEXT: pand %xmm3, %xmm1
2816 ; SSSE3-NEXT: pandn %xmm8, %xmm3
2817 ; SSSE3-NEXT: por %xmm1, %xmm3
2818 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
2819 ; SSSE3-NEXT: pxor %xmm2, %xmm1
2820 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
2821 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
2822 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
2823 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm1
2824 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2825 ; SSSE3-NEXT: pand %xmm6, %xmm1
2826 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
2827 ; SSSE3-NEXT: por %xmm1, %xmm4
2828 ; SSSE3-NEXT: pand %xmm4, %xmm0
2829 ; SSSE3-NEXT: pandn %xmm8, %xmm4
2830 ; SSSE3-NEXT: por %xmm0, %xmm4
2831 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
2832 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
2833 ; SSSE3-NEXT: pxor %xmm2, %xmm0
2834 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [18446744071562067840,18446744071562067840]
2835 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
2836 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm6
2837 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
2838 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm0
2839 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
2840 ; SSSE3-NEXT: pand %xmm7, %xmm1
2841 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
2842 ; SSSE3-NEXT: por %xmm1, %xmm0
2843 ; SSSE3-NEXT: pand %xmm0, %xmm4
2844 ; SSSE3-NEXT: pandn %xmm8, %xmm0
2845 ; SSSE3-NEXT: por %xmm4, %xmm0
2846 ; SSSE3-NEXT: pxor %xmm3, %xmm2
2847 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
2848 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm1
2849 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[0,0,2,2]
2850 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm2
2851 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
2852 ; SSSE3-NEXT: pand %xmm4, %xmm2
2853 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2854 ; SSSE3-NEXT: por %xmm2, %xmm1
2855 ; SSSE3-NEXT: pand %xmm1, %xmm3
2856 ; SSSE3-NEXT: pandn %xmm8, %xmm1
2857 ; SSSE3-NEXT: por %xmm3, %xmm1
2858 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
2859 ; SSSE3-NEXT: pshufb %xmm2, %xmm1
2860 ; SSSE3-NEXT: pshufb %xmm2, %xmm0
2861 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
2862 ; SSSE3-NEXT: retq
3060 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i8_store:
3061 ; SSSE3: # %bb.0:
3062 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
3063 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
3064 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
3065 ; SSSE3-NEXT: pxor %xmm2, %xmm3
3066 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [2147483775,2147483775]
3067 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
3068 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm6
3069 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
3070 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm3
3071 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
3072 ; SSSE3-NEXT: pand %xmm7, %xmm4
3073 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
3074 ; SSSE3-NEXT: por %xmm4, %xmm3
3075 ; SSSE3-NEXT: pand %xmm3, %xmm1
3076 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3077 ; SSSE3-NEXT: por %xmm1, %xmm3
3078 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
3079 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3080 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
3081 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
3082 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
3083 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm1
3084 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3085 ; SSSE3-NEXT: pand %xmm6, %xmm1
3086 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3087 ; SSSE3-NEXT: por %xmm1, %xmm4
3088 ; SSSE3-NEXT: pand %xmm4, %xmm0
3089 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3090 ; SSSE3-NEXT: por %xmm0, %xmm4
3091 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
3092 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
3093 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3094 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [18446744071562067840,18446744071562067840]
3095 ; SSSE3-NEXT: movdqa %xmm1, %xmm6
3096 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm6
3097 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
3098 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm1
3099 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
3100 ; SSSE3-NEXT: pand %xmm7, %xmm0
3101 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm6[1,1,3,3]
3102 ; SSSE3-NEXT: por %xmm0, %xmm1
3103 ; SSSE3-NEXT: pand %xmm1, %xmm4
3104 ; SSSE3-NEXT: pandn %xmm8, %xmm1
3105 ; SSSE3-NEXT: por %xmm4, %xmm1
3106 ; SSSE3-NEXT: pxor %xmm3, %xmm2
3107 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
3108 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm0
3109 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[0,0,2,2]
3110 ; SSSE3-NEXT: pcmpeqd %xmm5, %xmm2
3111 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
3112 ; SSSE3-NEXT: pand %xmm4, %xmm2
3113 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3114 ; SSSE3-NEXT: por %xmm2, %xmm0
3115 ; SSSE3-NEXT: pand %xmm0, %xmm3
3116 ; SSSE3-NEXT: pandn %xmm8, %xmm0
3117 ; SSSE3-NEXT: por %xmm3, %xmm0
3118 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
3119 ; SSSE3-NEXT: pshufb %xmm2, %xmm0
3120 ; SSSE3-NEXT: pshufb %xmm2, %xmm1
3121 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],…
3122 ; SSSE3-NEXT: movd %xmm1, (%rdi)
3123 ; SSSE3-NEXT: retq
3379 ; SSSE3-LABEL: trunc_ssat_v8i64_v8i8:
3380 ; SSSE3: # %bb.0:
3381 ; SSSE3-NEXT: movdqa (%rdi), %xmm6
3382 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm9
3383 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm3
3384 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm5
3385 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
3386 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
3387 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
3388 ; SSSE3-NEXT: pxor %xmm1, %xmm2
3389 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [2147483775,2147483775]
3390 ; SSSE3-NEXT: movdqa %xmm10, %xmm7
3391 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm7
3392 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
3393 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
3394 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
3395 ; SSSE3-NEXT: pand %xmm0, %xmm4
3396 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm7[1,1,3,3]
3397 ; SSSE3-NEXT: por %xmm4, %xmm2
3398 ; SSSE3-NEXT: pand %xmm2, %xmm3
3399 ; SSSE3-NEXT: pandn %xmm8, %xmm2
3400 ; SSSE3-NEXT: por %xmm3, %xmm2
3401 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
3402 ; SSSE3-NEXT: pxor %xmm1, %xmm0
3403 ; SSSE3-NEXT: movdqa %xmm10, %xmm3
3404 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm3
3405 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
3406 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm0
3407 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3408 ; SSSE3-NEXT: pand %xmm4, %xmm0
3409 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3410 ; SSSE3-NEXT: por %xmm0, %xmm3
3411 ; SSSE3-NEXT: pand %xmm3, %xmm5
3412 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3413 ; SSSE3-NEXT: por %xmm5, %xmm3
3414 ; SSSE3-NEXT: movdqa %xmm6, %xmm0
3415 ; SSSE3-NEXT: pxor %xmm1, %xmm0
3416 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
3417 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
3418 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
3419 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm0
3420 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3421 ; SSSE3-NEXT: pand %xmm5, %xmm0
3422 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
3423 ; SSSE3-NEXT: por %xmm0, %xmm5
3424 ; SSSE3-NEXT: pand %xmm5, %xmm6
3425 ; SSSE3-NEXT: pandn %xmm8, %xmm5
3426 ; SSSE3-NEXT: por %xmm6, %xmm5
3427 ; SSSE3-NEXT: movdqa %xmm9, %xmm0
3428 ; SSSE3-NEXT: pxor %xmm1, %xmm0
3429 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
3430 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
3431 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
3432 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm0
3433 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3434 ; SSSE3-NEXT: pand %xmm6, %xmm0
3435 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[1,1,3,3]
3436 ; SSSE3-NEXT: por %xmm0, %xmm7
3437 ; SSSE3-NEXT: pand %xmm7, %xmm9
3438 ; SSSE3-NEXT: pandn %xmm8, %xmm7
3439 ; SSSE3-NEXT: por %xmm9, %xmm7
3440 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
3441 ; SSSE3-NEXT: movdqa %xmm7, %xmm0
3442 ; SSSE3-NEXT: pxor %xmm1, %xmm0
3443 ; SSSE3-NEXT: movdqa {{.*#+}} xmm9 = [18446744071562067840,18446744071562067840]
3444 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
3445 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm4
3446 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
3447 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm0
3448 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3449 ; SSSE3-NEXT: pand %xmm6, %xmm0
3450 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3451 ; SSSE3-NEXT: por %xmm0, %xmm4
3452 ; SSSE3-NEXT: pand %xmm4, %xmm7
3453 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3454 ; SSSE3-NEXT: por %xmm7, %xmm4
3455 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
3456 ; SSSE3-NEXT: pxor %xmm1, %xmm0
3457 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
3458 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm6
3459 ; SSSE3-NEXT: pshufd {{.*#+}} xmm10 = xmm6[0,0,2,2]
3460 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm0
3461 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm0[1,1,3,3]
3462 ; SSSE3-NEXT: pand %xmm10, %xmm7
3463 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
3464 ; SSSE3-NEXT: por %xmm7, %xmm0
3465 ; SSSE3-NEXT: pand %xmm0, %xmm5
3466 ; SSSE3-NEXT: pandn %xmm8, %xmm0
3467 ; SSSE3-NEXT: por %xmm5, %xmm0
3468 ; SSSE3-NEXT: packssdw %xmm4, %xmm0
3469 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
3470 ; SSSE3-NEXT: pxor %xmm1, %xmm4
3471 ; SSSE3-NEXT: movdqa %xmm4, %xmm5
3472 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm5
3473 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
3474 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
3475 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3476 ; SSSE3-NEXT: pand %xmm6, %xmm4
3477 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
3478 ; SSSE3-NEXT: por %xmm4, %xmm5
3479 ; SSSE3-NEXT: pand %xmm5, %xmm3
3480 ; SSSE3-NEXT: pandn %xmm8, %xmm5
3481 ; SSSE3-NEXT: por %xmm3, %xmm5
3482 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3483 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
3484 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm3
3485 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
3486 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm1
3487 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3488 ; SSSE3-NEXT: pand %xmm4, %xmm1
3489 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3490 ; SSSE3-NEXT: por %xmm1, %xmm3
3491 ; SSSE3-NEXT: pand %xmm3, %xmm2
3492 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3493 ; SSSE3-NEXT: por %xmm2, %xmm3
3494 ; SSSE3-NEXT: packssdw %xmm5, %xmm3
3495 ; SSSE3-NEXT: packssdw %xmm3, %xmm0
3496 ; SSSE3-NEXT: packsswb %xmm0, %xmm0
3497 ; SSSE3-NEXT: retq
3798 ; SSSE3-LABEL: trunc_ssat_v8i64_v8i8_store:
3799 ; SSSE3: # %bb.0:
3800 ; SSSE3-NEXT: movdqa (%rdi), %xmm6
3801 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm9
3802 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm2
3803 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm5
3804 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
3805 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648]
3806 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
3807 ; SSSE3-NEXT: pxor %xmm0, %xmm1
3808 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [2147483775,2147483775]
3809 ; SSSE3-NEXT: movdqa %xmm10, %xmm7
3810 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm7
3811 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[0,0,2,2]
3812 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm1
3813 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
3814 ; SSSE3-NEXT: pand %xmm3, %xmm4
3815 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm7[1,1,3,3]
3816 ; SSSE3-NEXT: por %xmm4, %xmm1
3817 ; SSSE3-NEXT: pand %xmm1, %xmm2
3818 ; SSSE3-NEXT: pandn %xmm8, %xmm1
3819 ; SSSE3-NEXT: por %xmm2, %xmm1
3820 ; SSSE3-NEXT: movdqa %xmm5, %xmm2
3821 ; SSSE3-NEXT: pxor %xmm0, %xmm2
3822 ; SSSE3-NEXT: movdqa %xmm10, %xmm3
3823 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
3824 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
3825 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
3826 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm2[1,1,3,3]
3827 ; SSSE3-NEXT: pand %xmm4, %xmm7
3828 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3]
3829 ; SSSE3-NEXT: por %xmm7, %xmm2
3830 ; SSSE3-NEXT: pand %xmm2, %xmm5
3831 ; SSSE3-NEXT: pandn %xmm8, %xmm2
3832 ; SSSE3-NEXT: por %xmm5, %xmm2
3833 ; SSSE3-NEXT: movdqa %xmm6, %xmm3
3834 ; SSSE3-NEXT: pxor %xmm0, %xmm3
3835 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
3836 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm4
3837 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
3838 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
3839 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3840 ; SSSE3-NEXT: pand %xmm5, %xmm3
3841 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
3842 ; SSSE3-NEXT: por %xmm3, %xmm5
3843 ; SSSE3-NEXT: pand %xmm5, %xmm6
3844 ; SSSE3-NEXT: pandn %xmm8, %xmm5
3845 ; SSSE3-NEXT: por %xmm6, %xmm5
3846 ; SSSE3-NEXT: movdqa %xmm9, %xmm3
3847 ; SSSE3-NEXT: pxor %xmm0, %xmm3
3848 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
3849 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm4
3850 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
3851 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
3852 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3853 ; SSSE3-NEXT: pand %xmm6, %xmm3
3854 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]
3855 ; SSSE3-NEXT: por %xmm3, %xmm6
3856 ; SSSE3-NEXT: pand %xmm6, %xmm9
3857 ; SSSE3-NEXT: pandn %xmm8, %xmm6
3858 ; SSSE3-NEXT: por %xmm9, %xmm6
3859 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
3860 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
3861 ; SSSE3-NEXT: pxor %xmm0, %xmm7
3862 ; SSSE3-NEXT: movdqa {{.*#+}} xmm9 = [18446744071562067840,18446744071562067840]
3863 ; SSSE3-NEXT: movdqa %xmm7, %xmm3
3864 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm3
3865 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
3866 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm7
3867 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm7[1,1,3,3]
3868 ; SSSE3-NEXT: pand %xmm4, %xmm7
3869 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3870 ; SSSE3-NEXT: por %xmm7, %xmm3
3871 ; SSSE3-NEXT: pand %xmm3, %xmm6
3872 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3873 ; SSSE3-NEXT: por %xmm6, %xmm3
3874 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
3875 ; SSSE3-NEXT: pxor %xmm0, %xmm4
3876 ; SSSE3-NEXT: movdqa %xmm4, %xmm6
3877 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm6
3878 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
3879 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
3880 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3881 ; SSSE3-NEXT: pand %xmm7, %xmm4
3882 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
3883 ; SSSE3-NEXT: por %xmm4, %xmm6
3884 ; SSSE3-NEXT: pand %xmm6, %xmm5
3885 ; SSSE3-NEXT: pandn %xmm8, %xmm6
3886 ; SSSE3-NEXT: por %xmm5, %xmm6
3887 ; SSSE3-NEXT: packssdw %xmm3, %xmm6
3888 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
3889 ; SSSE3-NEXT: pxor %xmm0, %xmm3
3890 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
3891 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm4
3892 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
3893 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm3
3894 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3895 ; SSSE3-NEXT: pand %xmm5, %xmm3
3896 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3897 ; SSSE3-NEXT: por %xmm3, %xmm4
3898 ; SSSE3-NEXT: pand %xmm4, %xmm2
3899 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3900 ; SSSE3-NEXT: por %xmm2, %xmm4
3901 ; SSSE3-NEXT: pxor %xmm1, %xmm0
3902 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
3903 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm2
3904 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
3905 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm0
3906 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3907 ; SSSE3-NEXT: pand %xmm3, %xmm0
3908 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
3909 ; SSSE3-NEXT: por %xmm0, %xmm2
3910 ; SSSE3-NEXT: pand %xmm2, %xmm1
3911 ; SSSE3-NEXT: pandn %xmm8, %xmm2
3912 ; SSSE3-NEXT: por %xmm1, %xmm2
3913 ; SSSE3-NEXT: packssdw %xmm4, %xmm2
3914 ; SSSE3-NEXT: packssdw %xmm2, %xmm6
3915 ; SSSE3-NEXT: packsswb %xmm6, %xmm6
3916 ; SSSE3-NEXT: movq %xmm6, (%rsi)
3917 ; SSSE3-NEXT: retq
4330 ; SSSE3-LABEL: trunc_ssat_v16i64_v16i8:
4331 ; SSSE3: # %bb.0:
4332 ; SSSE3-NEXT: movdqa (%rdi), %xmm10
4333 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm9
4334 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm15
4335 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm13
4336 ; SSSE3-NEXT: movdqa 80(%rdi), %xmm6
4337 ; SSSE3-NEXT: movdqa 64(%rdi), %xmm3
4338 ; SSSE3-NEXT: movdqa 112(%rdi), %xmm4
4339 ; SSSE3-NEXT: movdqa 96(%rdi), %xmm7
4340 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
4341 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
4342 ; SSSE3-NEXT: movdqa %xmm7, %xmm5
4343 ; SSSE3-NEXT: pxor %xmm1, %xmm5
4344 ; SSSE3-NEXT: movdqa {{.*#+}} xmm14 = [2147483775,2147483775]
4345 ; SSSE3-NEXT: movdqa %xmm14, %xmm0
4346 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm0
4347 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[0,0,2,2]
4348 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm5
4349 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
4350 ; SSSE3-NEXT: pand %xmm2, %xmm5
4351 ; SSSE3-NEXT: pshufd {{.*#+}} xmm11 = xmm0[1,1,3,3]
4352 ; SSSE3-NEXT: por %xmm5, %xmm11
4353 ; SSSE3-NEXT: pand %xmm11, %xmm7
4354 ; SSSE3-NEXT: pandn %xmm8, %xmm11
4355 ; SSSE3-NEXT: por %xmm7, %xmm11
4356 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
4357 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4358 ; SSSE3-NEXT: movdqa %xmm14, %xmm2
4359 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4360 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,0,2,2]
4361 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm0
4362 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4363 ; SSSE3-NEXT: pand %xmm5, %xmm0
4364 ; SSSE3-NEXT: pshufd {{.*#+}} xmm12 = xmm2[1,1,3,3]
4365 ; SSSE3-NEXT: por %xmm0, %xmm12
4366 ; SSSE3-NEXT: pand %xmm12, %xmm4
4367 ; SSSE3-NEXT: pandn %xmm8, %xmm12
4368 ; SSSE3-NEXT: por %xmm4, %xmm12
4369 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
4370 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4371 ; SSSE3-NEXT: movdqa %xmm14, %xmm2
4372 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4373 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
4374 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm0
4375 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4376 ; SSSE3-NEXT: pand %xmm4, %xmm0
4377 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
4378 ; SSSE3-NEXT: por %xmm0, %xmm4
4379 ; SSSE3-NEXT: pand %xmm4, %xmm3
4380 ; SSSE3-NEXT: pandn %xmm8, %xmm4
4381 ; SSSE3-NEXT: por %xmm3, %xmm4
4382 ; SSSE3-NEXT: movdqa %xmm6, %xmm0
4383 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4384 ; SSSE3-NEXT: movdqa %xmm14, %xmm2
4385 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4386 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
4387 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm0
4388 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4389 ; SSSE3-NEXT: pand %xmm3, %xmm0
4390 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm2[1,1,3,3]
4391 ; SSSE3-NEXT: por %xmm0, %xmm5
4392 ; SSSE3-NEXT: pand %xmm5, %xmm6
4393 ; SSSE3-NEXT: pandn %xmm8, %xmm5
4394 ; SSSE3-NEXT: por %xmm6, %xmm5
4395 ; SSSE3-NEXT: movdqa %xmm15, %xmm0
4396 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4397 ; SSSE3-NEXT: movdqa %xmm14, %xmm2
4398 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4399 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
4400 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm0
4401 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4402 ; SSSE3-NEXT: pand %xmm3, %xmm0
4403 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm2[1,1,3,3]
4404 ; SSSE3-NEXT: por %xmm0, %xmm6
4405 ; SSSE3-NEXT: pand %xmm6, %xmm15
4406 ; SSSE3-NEXT: pandn %xmm8, %xmm6
4407 ; SSSE3-NEXT: por %xmm15, %xmm6
4408 ; SSSE3-NEXT: movdqa %xmm13, %xmm0
4409 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4410 ; SSSE3-NEXT: movdqa %xmm14, %xmm2
4411 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4412 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
4413 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm0
4414 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4415 ; SSSE3-NEXT: pand %xmm3, %xmm0
4416 ; SSSE3-NEXT: pshufd {{.*#+}} xmm15 = xmm2[1,1,3,3]
4417 ; SSSE3-NEXT: por %xmm0, %xmm15
4418 ; SSSE3-NEXT: pand %xmm15, %xmm13
4419 ; SSSE3-NEXT: pandn %xmm8, %xmm15
4420 ; SSSE3-NEXT: por %xmm13, %xmm15
4421 ; SSSE3-NEXT: movdqa %xmm10, %xmm0
4422 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4423 ; SSSE3-NEXT: movdqa %xmm14, %xmm3
4424 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm3
4425 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm3[0,0,2,2]
4426 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm0
4427 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4428 ; SSSE3-NEXT: pand %xmm7, %xmm0
4429 ; SSSE3-NEXT: pshufd {{.*#+}} xmm13 = xmm3[1,1,3,3]
4430 ; SSSE3-NEXT: por %xmm0, %xmm13
4431 ; SSSE3-NEXT: pand %xmm13, %xmm10
4432 ; SSSE3-NEXT: pandn %xmm8, %xmm13
4433 ; SSSE3-NEXT: por %xmm10, %xmm13
4434 ; SSSE3-NEXT: movdqa %xmm9, %xmm0
4435 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4436 ; SSSE3-NEXT: movdqa %xmm14, %xmm7
4437 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm7
4438 ; SSSE3-NEXT: pshufd {{.*#+}} xmm10 = xmm7[0,0,2,2]
4439 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm0
4440 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4441 ; SSSE3-NEXT: pand %xmm10, %xmm0
4442 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm7[1,1,3,3]
4443 ; SSSE3-NEXT: por %xmm0, %xmm7
4444 ; SSSE3-NEXT: pand %xmm7, %xmm9
4445 ; SSSE3-NEXT: pandn %xmm8, %xmm7
4446 ; SSSE3-NEXT: por %xmm9, %xmm7
4447 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
4448 ; SSSE3-NEXT: movdqa %xmm7, %xmm0
4449 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4450 ; SSSE3-NEXT: movdqa {{.*#+}} xmm9 = [18446744071562067840,18446744071562067840]
4451 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
4452 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm2
4453 ; SSSE3-NEXT: pshufd {{.*#+}} xmm10 = xmm2[0,0,2,2]
4454 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm0
4455 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4456 ; SSSE3-NEXT: pand %xmm10, %xmm0
4457 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4458 ; SSSE3-NEXT: por %xmm0, %xmm2
4459 ; SSSE3-NEXT: pand %xmm2, %xmm7
4460 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4461 ; SSSE3-NEXT: por %xmm7, %xmm2
4462 ; SSSE3-NEXT: movdqa %xmm13, %xmm0
4463 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4464 ; SSSE3-NEXT: movdqa %xmm0, %xmm7
4465 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm7
4466 ; SSSE3-NEXT: pshufd {{.*#+}} xmm10 = xmm7[0,0,2,2]
4467 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm0
4468 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
4469 ; SSSE3-NEXT: pand %xmm10, %xmm3
4470 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
4471 ; SSSE3-NEXT: por %xmm3, %xmm0
4472 ; SSSE3-NEXT: pand %xmm0, %xmm13
4473 ; SSSE3-NEXT: pandn %xmm8, %xmm0
4474 ; SSSE3-NEXT: por %xmm13, %xmm0
4475 ; SSSE3-NEXT: packssdw %xmm2, %xmm0
4476 ; SSSE3-NEXT: movdqa %xmm15, %xmm2
4477 ; SSSE3-NEXT: pxor %xmm1, %xmm2
4478 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
4479 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm3
4480 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm3[0,0,2,2]
4481 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm2
4482 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4483 ; SSSE3-NEXT: pand %xmm7, %xmm2
4484 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
4485 ; SSSE3-NEXT: por %xmm2, %xmm3
4486 ; SSSE3-NEXT: pand %xmm3, %xmm15
4487 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4488 ; SSSE3-NEXT: por %xmm15, %xmm3
4489 ; SSSE3-NEXT: movdqa %xmm6, %xmm2
4490 ; SSSE3-NEXT: pxor %xmm1, %xmm2
4491 ; SSSE3-NEXT: movdqa %xmm2, %xmm7
4492 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm7
4493 ; SSSE3-NEXT: pshufd {{.*#+}} xmm10 = xmm7[0,0,2,2]
4494 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm2
4495 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4496 ; SSSE3-NEXT: pand %xmm10, %xmm2
4497 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm7[1,1,3,3]
4498 ; SSSE3-NEXT: por %xmm2, %xmm7
4499 ; SSSE3-NEXT: pand %xmm7, %xmm6
4500 ; SSSE3-NEXT: pandn %xmm8, %xmm7
4501 ; SSSE3-NEXT: por %xmm6, %xmm7
4502 ; SSSE3-NEXT: packssdw %xmm3, %xmm7
4503 ; SSSE3-NEXT: packssdw %xmm7, %xmm0
4504 ; SSSE3-NEXT: movdqa %xmm5, %xmm2
4505 ; SSSE3-NEXT: pxor %xmm1, %xmm2
4506 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
4507 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm3
4508 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2]
4509 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm2
4510 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4511 ; SSSE3-NEXT: pand %xmm6, %xmm2
4512 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
4513 ; SSSE3-NEXT: por %xmm2, %xmm3
4514 ; SSSE3-NEXT: pand %xmm3, %xmm5
4515 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4516 ; SSSE3-NEXT: por %xmm5, %xmm3
4517 ; SSSE3-NEXT: movdqa %xmm4, %xmm2
4518 ; SSSE3-NEXT: pxor %xmm1, %xmm2
4519 ; SSSE3-NEXT: movdqa %xmm2, %xmm5
4520 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm5
4521 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
4522 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm2
4523 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm2[1,1,3,3]
4524 ; SSSE3-NEXT: pand %xmm6, %xmm7
4525 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm5[1,1,3,3]
4526 ; SSSE3-NEXT: por %xmm7, %xmm2
4527 ; SSSE3-NEXT: pand %xmm2, %xmm4
4528 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4529 ; SSSE3-NEXT: por %xmm4, %xmm2
4530 ; SSSE3-NEXT: packssdw %xmm3, %xmm2
4531 ; SSSE3-NEXT: movdqa %xmm12, %xmm3
4532 ; SSSE3-NEXT: pxor %xmm1, %xmm3
4533 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
4534 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm4
4535 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
4536 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm3
4537 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
4538 ; SSSE3-NEXT: pand %xmm5, %xmm3
4539 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
4540 ; SSSE3-NEXT: por %xmm3, %xmm4
4541 ; SSSE3-NEXT: pand %xmm4, %xmm12
4542 ; SSSE3-NEXT: pandn %xmm8, %xmm4
4543 ; SSSE3-NEXT: por %xmm12, %xmm4
4544 ; SSSE3-NEXT: pxor %xmm11, %xmm1
4545 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
4546 ; SSSE3-NEXT: pcmpgtd %xmm9, %xmm3
4547 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[0,0,2,2]
4548 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm1
4549 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
4550 ; SSSE3-NEXT: pand %xmm5, %xmm1
4551 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
4552 ; SSSE3-NEXT: por %xmm1, %xmm3
4553 ; SSSE3-NEXT: pand %xmm3, %xmm11
4554 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4555 ; SSSE3-NEXT: por %xmm11, %xmm3
4556 ; SSSE3-NEXT: packssdw %xmm4, %xmm3
4557 ; SSSE3-NEXT: packssdw %xmm3, %xmm2
4558 ; SSSE3-NEXT: packsswb %xmm2, %xmm0
4559 ; SSSE3-NEXT: retq
4892 ; SSSE3-LABEL: trunc_ssat_v4i32_v4i8:
4893 ; SSSE3: # %bb.0:
4894 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [127,127,127,127]
4895 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
4896 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4897 ; SSSE3-NEXT: pand %xmm2, %xmm0
4898 ; SSSE3-NEXT: pandn %xmm1, %xmm2
4899 ; SSSE3-NEXT: por %xmm0, %xmm2
4900 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [4294967168,4294967168,4294967168,4294967168]
4901 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
4902 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm0
4903 ; SSSE3-NEXT: pand %xmm0, %xmm2
4904 ; SSSE3-NEXT: pandn %xmm1, %xmm0
4905 ; SSSE3-NEXT: por %xmm2, %xmm0
4906 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
4907 ; SSSE3-NEXT: retq
4992 ; SSSE3-LABEL: trunc_ssat_v4i32_v4i8_store:
4993 ; SSSE3: # %bb.0:
4994 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [127,127,127,127]
4995 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
4996 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4997 ; SSSE3-NEXT: pand %xmm2, %xmm0
4998 ; SSSE3-NEXT: pandn %xmm1, %xmm2
4999 ; SSSE3-NEXT: por %xmm0, %xmm2
5000 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [4294967168,4294967168,4294967168,4294967168]
5001 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
5002 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm1
5003 ; SSSE3-NEXT: pand %xmm1, %xmm2
5004 ; SSSE3-NEXT: pandn %xmm0, %xmm1
5005 ; SSSE3-NEXT: por %xmm2, %xmm1
5006 ; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
5007 ; SSSE3-NEXT: movd %xmm1, (%rdi)
5008 ; SSSE3-NEXT: retq