Lines Matching refs:SSSE3
3 …mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefix=SSE --check-prefix=SSSE3
55 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i32:
56 ; SSSE3: # %bb.0:
57 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
58 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
59 ; SSSE3-NEXT: pxor %xmm1, %xmm2
60 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
61 ; SSSE3-NEXT: pxor %xmm4, %xmm4
62 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
63 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [4294967295,4294967295]
64 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
65 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
66 ; SSSE3-NEXT: pand %xmm4, %xmm2
67 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
68 ; SSSE3-NEXT: por %xmm2, %xmm3
69 ; SSSE3-NEXT: pand %xmm3, %xmm0
70 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
71 ; SSSE3-NEXT: por %xmm0, %xmm3
72 ; SSSE3-NEXT: pxor %xmm3, %xmm1
73 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
74 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm2
75 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm2
76 ; SSSE3-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
77 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
78 ; SSSE3-NEXT: pand %xmm2, %xmm0
79 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
80 ; SSSE3-NEXT: por %xmm0, %xmm1
81 ; SSSE3-NEXT: pand %xmm1, %xmm3
82 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
83 ; SSSE3-NEXT: por %xmm3, %xmm1
84 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
85 ; SSSE3-NEXT: retq
197 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i32_store:
198 ; SSSE3: # %bb.0:
199 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
200 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
201 ; SSSE3-NEXT: pxor %xmm1, %xmm2
202 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
203 ; SSSE3-NEXT: pxor %xmm4, %xmm4
204 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
205 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [4294967295,4294967295]
206 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
207 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
208 ; SSSE3-NEXT: pand %xmm4, %xmm2
209 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
210 ; SSSE3-NEXT: por %xmm2, %xmm3
211 ; SSSE3-NEXT: pand %xmm3, %xmm0
212 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
213 ; SSSE3-NEXT: por %xmm0, %xmm3
214 ; SSSE3-NEXT: pxor %xmm3, %xmm1
215 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
216 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm2
217 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm2
218 ; SSSE3-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
219 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
220 ; SSSE3-NEXT: pand %xmm2, %xmm0
221 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
222 ; SSSE3-NEXT: por %xmm0, %xmm1
223 ; SSSE3-NEXT: pand %xmm1, %xmm3
224 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%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
370 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i32:
371 ; SSSE3: # %bb.0:
372 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [2147483647,2147483647]
373 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
374 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
375 ; SSSE3-NEXT: pxor %xmm2, %xmm4
376 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
377 ; SSSE3-NEXT: pxor %xmm6, %xmm6
378 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
379 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [4294967295,4294967295]
380 ; SSSE3-NEXT: movdqa %xmm3, %xmm7
381 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm7
382 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
383 ; SSSE3-NEXT: pand %xmm5, %xmm4
384 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
385 ; SSSE3-NEXT: por %xmm4, %xmm5
386 ; SSSE3-NEXT: pand %xmm5, %xmm0
387 ; SSSE3-NEXT: pandn %xmm8, %xmm5
388 ; SSSE3-NEXT: por %xmm5, %xmm0
389 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
390 ; SSSE3-NEXT: pxor %xmm2, %xmm4
391 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
392 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
393 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm3
394 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
395 ; SSSE3-NEXT: pand %xmm5, %xmm4
396 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
397 ; SSSE3-NEXT: por %xmm4, %xmm3
398 ; SSSE3-NEXT: pand %xmm3, %xmm1
399 ; SSSE3-NEXT: pandn %xmm8, %xmm3
400 ; SSSE3-NEXT: por %xmm1, %xmm3
401 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744071562067968,18446744071562067968]
402 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
403 ; SSSE3-NEXT: pxor %xmm2, %xmm4
404 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
405 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm6
406 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
407 ; SSSE3-NEXT: movdqa {{.*#+}} xmm7 = [18446744069414584320,18446744069414584320]
408 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm4
409 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
410 ; SSSE3-NEXT: pand %xmm5, %xmm1
411 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
412 ; SSSE3-NEXT: por %xmm1, %xmm4
413 ; SSSE3-NEXT: pand %xmm4, %xmm3
414 ; SSSE3-NEXT: pandn %xmm8, %xmm4
415 ; SSSE3-NEXT: por %xmm3, %xmm4
416 ; SSSE3-NEXT: pxor %xmm0, %xmm2
417 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
418 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm1
419 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm2
420 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
421 ; SSSE3-NEXT: pand %xmm1, %xmm3
422 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
423 ; SSSE3-NEXT: por %xmm3, %xmm1
424 ; SSSE3-NEXT: pand %xmm1, %xmm0
425 ; SSSE3-NEXT: pandn %xmm8, %xmm1
426 ; SSSE3-NEXT: por %xmm1, %xmm0
427 ; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm4[0,2]
428 ; SSSE3-NEXT: retq
694 ; SSSE3-LABEL: trunc_ssat_v8i64_v8i32:
695 ; SSSE3: # %bb.0:
696 ; SSSE3-NEXT: movdqa (%rdi), %xmm3
697 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm5
698 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm11
699 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm10
700 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [2147483647,2147483647]
701 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648]
702 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
703 ; SSSE3-NEXT: pxor %xmm0, %xmm2
704 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
705 ; SSSE3-NEXT: pxor %xmm9, %xmm9
706 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
707 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [4294967295,4294967295]
708 ; SSSE3-NEXT: movdqa %xmm1, %xmm6
709 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm6
710 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
711 ; SSSE3-NEXT: pand %xmm4, %xmm7
712 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
713 ; SSSE3-NEXT: por %xmm7, %xmm2
714 ; SSSE3-NEXT: pand %xmm2, %xmm3
715 ; SSSE3-NEXT: pandn %xmm8, %xmm2
716 ; SSSE3-NEXT: por %xmm3, %xmm2
717 ; SSSE3-NEXT: movdqa %xmm5, %xmm3
718 ; SSSE3-NEXT: pxor %xmm0, %xmm3
719 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
720 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
721 ; SSSE3-NEXT: movdqa %xmm1, %xmm6
722 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm6
723 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
724 ; SSSE3-NEXT: pand %xmm4, %xmm7
725 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
726 ; SSSE3-NEXT: por %xmm7, %xmm3
727 ; SSSE3-NEXT: pand %xmm3, %xmm5
728 ; SSSE3-NEXT: pandn %xmm8, %xmm3
729 ; SSSE3-NEXT: por %xmm5, %xmm3
730 ; SSSE3-NEXT: movdqa %xmm11, %xmm4
731 ; SSSE3-NEXT: pxor %xmm0, %xmm4
732 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
733 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
734 ; SSSE3-NEXT: movdqa %xmm1, %xmm6
735 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm6
736 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[0,0,2,2]
737 ; SSSE3-NEXT: pand %xmm5, %xmm4
738 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]
739 ; SSSE3-NEXT: por %xmm4, %xmm5
740 ; SSSE3-NEXT: pand %xmm5, %xmm11
741 ; SSSE3-NEXT: pandn %xmm8, %xmm5
742 ; SSSE3-NEXT: por %xmm11, %xmm5
743 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
744 ; SSSE3-NEXT: pxor %xmm0, %xmm4
745 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]
746 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
747 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm1
748 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[0,0,2,2]
749 ; SSSE3-NEXT: pand %xmm6, %xmm4
750 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
751 ; SSSE3-NEXT: por %xmm4, %xmm1
752 ; SSSE3-NEXT: pand %xmm1, %xmm10
753 ; SSSE3-NEXT: pandn %xmm8, %xmm1
754 ; SSSE3-NEXT: por %xmm10, %xmm1
755 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744071562067968,18446744071562067968]
756 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
757 ; SSSE3-NEXT: pxor %xmm0, %xmm4
758 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]
759 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm9
760 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
761 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [18446744069414584320,18446744069414584320]
762 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm4
763 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[0,0,2,2]
764 ; SSSE3-NEXT: pand %xmm6, %xmm7
765 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
766 ; SSSE3-NEXT: por %xmm7, %xmm4
767 ; SSSE3-NEXT: pand %xmm4, %xmm1
768 ; SSSE3-NEXT: pandn %xmm8, %xmm4
769 ; SSSE3-NEXT: por %xmm1, %xmm4
770 ; SSSE3-NEXT: movdqa %xmm5, %xmm1
771 ; SSSE3-NEXT: pxor %xmm0, %xmm1
772 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm1[1,1,3,3]
773 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
774 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm1
775 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm1[0,0,2,2]
776 ; SSSE3-NEXT: pand %xmm6, %xmm7
777 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
778 ; SSSE3-NEXT: por %xmm7, %xmm1
779 ; SSSE3-NEXT: pand %xmm1, %xmm5
780 ; SSSE3-NEXT: pandn %xmm8, %xmm1
781 ; SSSE3-NEXT: por %xmm5, %xmm1
782 ; SSSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm4[0,2]
783 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
784 ; SSSE3-NEXT: pxor %xmm0, %xmm4
785 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
786 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
787 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm4
788 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
789 ; SSSE3-NEXT: pand %xmm5, %xmm6
790 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
791 ; SSSE3-NEXT: por %xmm6, %xmm4
792 ; SSSE3-NEXT: pand %xmm4, %xmm3
793 ; SSSE3-NEXT: pandn %xmm8, %xmm4
794 ; SSSE3-NEXT: por %xmm3, %xmm4
795 ; SSSE3-NEXT: pxor %xmm2, %xmm0
796 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
797 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm3
798 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm0
799 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm0[0,0,2,2]
800 ; SSSE3-NEXT: pand %xmm3, %xmm5
801 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
802 ; SSSE3-NEXT: por %xmm5, %xmm0
803 ; SSSE3-NEXT: pand %xmm0, %xmm2
804 ; SSSE3-NEXT: pandn %xmm8, %xmm0
805 ; SSSE3-NEXT: por %xmm2, %xmm0
806 ; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm4[0,2]
807 ; SSSE3-NEXT: retq
1053 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i16:
1054 ; SSSE3: # %bb.0:
1055 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
1056 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
1057 ; SSSE3-NEXT: pxor %xmm1, %xmm2
1058 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
1059 ; SSSE3-NEXT: pxor %xmm4, %xmm4
1060 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
1061 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147516415,2147516415]
1062 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
1063 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
1064 ; SSSE3-NEXT: pand %xmm4, %xmm2
1065 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
1066 ; SSSE3-NEXT: por %xmm2, %xmm3
1067 ; SSSE3-NEXT: pand %xmm3, %xmm0
1068 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
1069 ; SSSE3-NEXT: por %xmm0, %xmm3
1070 ; SSSE3-NEXT: pxor %xmm3, %xmm1
1071 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
1072 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm2
1073 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm2
1074 ; SSSE3-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1075 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
1076 ; SSSE3-NEXT: pand %xmm2, %xmm0
1077 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1078 ; SSSE3-NEXT: por %xmm0, %xmm1
1079 ; SSSE3-NEXT: pand %xmm1, %xmm3
1080 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1081 ; SSSE3-NEXT: por %xmm3, %xmm1
1082 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
1083 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1084 ; SSSE3-NEXT: retq
1220 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i16_store:
1221 ; SSSE3: # %bb.0:
1222 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
1223 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
1224 ; SSSE3-NEXT: pxor %xmm1, %xmm2
1225 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
1226 ; SSSE3-NEXT: pxor %xmm4, %xmm4
1227 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
1228 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147516415,2147516415]
1229 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
1230 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
1231 ; SSSE3-NEXT: pand %xmm4, %xmm2
1232 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
1233 ; SSSE3-NEXT: por %xmm2, %xmm3
1234 ; SSSE3-NEXT: pand %xmm3, %xmm0
1235 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
1236 ; SSSE3-NEXT: por %xmm0, %xmm3
1237 ; SSSE3-NEXT: pxor %xmm3, %xmm1
1238 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
1239 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm2
1240 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm2
1241 ; SSSE3-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1242 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
1243 ; SSSE3-NEXT: pand %xmm2, %xmm0
1244 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1245 ; SSSE3-NEXT: por %xmm0, %xmm1
1246 ; SSSE3-NEXT: pand %xmm1, %xmm3
1247 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1248 ; SSSE3-NEXT: por %xmm3, %xmm1
1249 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
1250 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1251 ; SSSE3-NEXT: movd %xmm0, (%rdi)
1252 ; SSSE3-NEXT: retq
1422 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i16:
1423 ; SSSE3: # %bb.0:
1424 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [32767,32767]
1425 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
1426 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
1427 ; SSSE3-NEXT: pxor %xmm2, %xmm4
1428 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
1429 ; SSSE3-NEXT: pxor %xmm6, %xmm6
1430 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
1431 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147516415,2147516415]
1432 ; SSSE3-NEXT: movdqa %xmm3, %xmm7
1433 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm7
1434 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
1435 ; SSSE3-NEXT: pand %xmm5, %xmm4
1436 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
1437 ; SSSE3-NEXT: por %xmm4, %xmm5
1438 ; SSSE3-NEXT: pand %xmm5, %xmm0
1439 ; SSSE3-NEXT: pandn %xmm8, %xmm5
1440 ; SSSE3-NEXT: por %xmm5, %xmm0
1441 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
1442 ; SSSE3-NEXT: pxor %xmm2, %xmm4
1443 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
1444 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
1445 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm3
1446 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
1447 ; SSSE3-NEXT: pand %xmm5, %xmm4
1448 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
1449 ; SSSE3-NEXT: por %xmm4, %xmm3
1450 ; SSSE3-NEXT: pand %xmm3, %xmm1
1451 ; SSSE3-NEXT: pandn %xmm8, %xmm3
1452 ; SSSE3-NEXT: por %xmm1, %xmm3
1453 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709518848,18446744073709518848]
1454 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
1455 ; SSSE3-NEXT: pxor %xmm2, %xmm4
1456 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
1457 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm6
1458 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
1459 ; SSSE3-NEXT: movdqa {{.*#+}} xmm7 = [18446744071562035200,18446744071562035200]
1460 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm4
1461 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
1462 ; SSSE3-NEXT: pand %xmm5, %xmm1
1463 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
1464 ; SSSE3-NEXT: por %xmm1, %xmm4
1465 ; SSSE3-NEXT: pand %xmm4, %xmm3
1466 ; SSSE3-NEXT: pandn %xmm8, %xmm4
1467 ; SSSE3-NEXT: por %xmm3, %xmm4
1468 ; SSSE3-NEXT: pxor %xmm0, %xmm2
1469 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
1470 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm1
1471 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm2
1472 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
1473 ; SSSE3-NEXT: pand %xmm1, %xmm3
1474 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
1475 ; SSSE3-NEXT: por %xmm3, %xmm1
1476 ; SSSE3-NEXT: pand %xmm1, %xmm0
1477 ; SSSE3-NEXT: pandn %xmm8, %xmm1
1478 ; SSSE3-NEXT: por %xmm1, %xmm0
1479 ; SSSE3-NEXT: packssdw %xmm4, %xmm0
1480 ; SSSE3-NEXT: packssdw %xmm0, %xmm0
1481 ; SSSE3-NEXT: retq
1667 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i16_store:
1668 ; SSSE3: # %bb.0:
1669 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [32767,32767]
1670 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
1671 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
1672 ; SSSE3-NEXT: pxor %xmm2, %xmm3
1673 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
1674 ; SSSE3-NEXT: pxor %xmm9, %xmm9
1675 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
1676 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147516415,2147516415]
1677 ; SSSE3-NEXT: movdqa %xmm4, %xmm7
1678 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm7
1679 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
1680 ; SSSE3-NEXT: pand %xmm5, %xmm6
1681 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
1682 ; SSSE3-NEXT: por %xmm6, %xmm3
1683 ; SSSE3-NEXT: pand %xmm3, %xmm0
1684 ; SSSE3-NEXT: pandn %xmm8, %xmm3
1685 ; SSSE3-NEXT: por %xmm0, %xmm3
1686 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
1687 ; SSSE3-NEXT: pxor %xmm2, %xmm0
1688 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm0[1,1,3,3]
1689 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
1690 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
1691 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
1692 ; SSSE3-NEXT: pand %xmm5, %xmm0
1693 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
1694 ; SSSE3-NEXT: por %xmm0, %xmm4
1695 ; SSSE3-NEXT: pand %xmm4, %xmm1
1696 ; SSSE3-NEXT: pandn %xmm8, %xmm4
1697 ; SSSE3-NEXT: por %xmm1, %xmm4
1698 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709518848,18446744073709518848]
1699 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
1700 ; SSSE3-NEXT: pxor %xmm2, %xmm1
1701 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
1702 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm6
1703 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
1704 ; SSSE3-NEXT: movdqa {{.*#+}} xmm7 = [18446744071562035200,18446744071562035200]
1705 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm1
1706 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
1707 ; SSSE3-NEXT: pand %xmm5, %xmm0
1708 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1709 ; SSSE3-NEXT: por %xmm0, %xmm1
1710 ; SSSE3-NEXT: pand %xmm1, %xmm4
1711 ; SSSE3-NEXT: pandn %xmm8, %xmm1
1712 ; SSSE3-NEXT: por %xmm4, %xmm1
1713 ; SSSE3-NEXT: pxor %xmm3, %xmm2
1714 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
1715 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm0
1716 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm2
1717 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
1718 ; SSSE3-NEXT: pand %xmm0, %xmm4
1719 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
1720 ; SSSE3-NEXT: por %xmm4, %xmm0
1721 ; SSSE3-NEXT: pand %xmm0, %xmm3
1722 ; SSSE3-NEXT: pandn %xmm8, %xmm0
1723 ; SSSE3-NEXT: por %xmm3, %xmm0
1724 ; SSSE3-NEXT: packssdw %xmm1, %xmm0
1725 ; SSSE3-NEXT: packssdw %xmm0, %xmm0
1726 ; SSSE3-NEXT: movq %xmm0, (%rdi)
1727 ; SSSE3-NEXT: retq
1972 ; SSSE3-LABEL: trunc_ssat_v8i64_v8i16:
1973 ; SSSE3: # %bb.0:
1974 ; SSSE3-NEXT: movdqa (%rdi), %xmm11
1975 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm10
1976 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm3
1977 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm5
1978 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [32767,32767]
1979 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
1980 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
1981 ; SSSE3-NEXT: pxor %xmm1, %xmm2
1982 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
1983 ; SSSE3-NEXT: pxor %xmm9, %xmm9
1984 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
1985 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [2147516415,2147516415]
1986 ; SSSE3-NEXT: movdqa %xmm0, %xmm7
1987 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm7
1988 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
1989 ; SSSE3-NEXT: pand %xmm4, %xmm6
1990 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm7[1,1,3,3]
1991 ; SSSE3-NEXT: por %xmm6, %xmm2
1992 ; SSSE3-NEXT: pand %xmm2, %xmm3
1993 ; SSSE3-NEXT: pandn %xmm8, %xmm2
1994 ; SSSE3-NEXT: por %xmm3, %xmm2
1995 ; SSSE3-NEXT: movdqa %xmm5, %xmm3
1996 ; SSSE3-NEXT: pxor %xmm1, %xmm3
1997 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
1998 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
1999 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
2000 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm6
2001 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
2002 ; SSSE3-NEXT: pand %xmm4, %xmm7
2003 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
2004 ; SSSE3-NEXT: por %xmm7, %xmm3
2005 ; SSSE3-NEXT: pand %xmm3, %xmm5
2006 ; SSSE3-NEXT: pandn %xmm8, %xmm3
2007 ; SSSE3-NEXT: por %xmm5, %xmm3
2008 ; SSSE3-NEXT: movdqa %xmm11, %xmm4
2009 ; SSSE3-NEXT: pxor %xmm1, %xmm4
2010 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
2011 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
2012 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
2013 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm6
2014 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[0,0,2,2]
2015 ; SSSE3-NEXT: pand %xmm5, %xmm4
2016 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]
2017 ; SSSE3-NEXT: por %xmm4, %xmm5
2018 ; SSSE3-NEXT: pand %xmm5, %xmm11
2019 ; SSSE3-NEXT: pandn %xmm8, %xmm5
2020 ; SSSE3-NEXT: por %xmm11, %xmm5
2021 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
2022 ; SSSE3-NEXT: pxor %xmm1, %xmm4
2023 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]
2024 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
2025 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm0
2026 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[0,0,2,2]
2027 ; SSSE3-NEXT: pand %xmm6, %xmm4
2028 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2029 ; SSSE3-NEXT: por %xmm4, %xmm0
2030 ; SSSE3-NEXT: pand %xmm0, %xmm10
2031 ; SSSE3-NEXT: pandn %xmm8, %xmm0
2032 ; SSSE3-NEXT: por %xmm10, %xmm0
2033 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709518848,18446744073709518848]
2034 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
2035 ; SSSE3-NEXT: pxor %xmm1, %xmm4
2036 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]
2037 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm9
2038 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
2039 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [18446744071562035200,18446744071562035200]
2040 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm4
2041 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[0,0,2,2]
2042 ; SSSE3-NEXT: pand %xmm6, %xmm7
2043 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
2044 ; SSSE3-NEXT: por %xmm7, %xmm4
2045 ; SSSE3-NEXT: pand %xmm4, %xmm0
2046 ; SSSE3-NEXT: pandn %xmm8, %xmm4
2047 ; SSSE3-NEXT: por %xmm0, %xmm4
2048 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
2049 ; SSSE3-NEXT: pxor %xmm1, %xmm0
2050 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
2051 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
2052 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm0
2053 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm0[0,0,2,2]
2054 ; SSSE3-NEXT: pand %xmm6, %xmm7
2055 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2056 ; SSSE3-NEXT: por %xmm7, %xmm0
2057 ; SSSE3-NEXT: pand %xmm0, %xmm5
2058 ; SSSE3-NEXT: pandn %xmm8, %xmm0
2059 ; SSSE3-NEXT: por %xmm5, %xmm0
2060 ; SSSE3-NEXT: packssdw %xmm4, %xmm0
2061 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
2062 ; SSSE3-NEXT: pxor %xmm1, %xmm4
2063 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
2064 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
2065 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm4
2066 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
2067 ; SSSE3-NEXT: pand %xmm5, %xmm6
2068 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
2069 ; SSSE3-NEXT: por %xmm6, %xmm4
2070 ; SSSE3-NEXT: pand %xmm4, %xmm3
2071 ; SSSE3-NEXT: pandn %xmm8, %xmm4
2072 ; SSSE3-NEXT: por %xmm3, %xmm4
2073 ; SSSE3-NEXT: pxor %xmm2, %xmm1
2074 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
2075 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm3
2076 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm1
2077 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
2078 ; SSSE3-NEXT: pand %xmm3, %xmm5
2079 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2080 ; SSSE3-NEXT: por %xmm5, %xmm1
2081 ; SSSE3-NEXT: pand %xmm1, %xmm2
2082 ; SSSE3-NEXT: pandn %xmm8, %xmm1
2083 ; SSSE3-NEXT: por %xmm2, %xmm1
2084 ; SSSE3-NEXT: packssdw %xmm4, %xmm1
2085 ; SSSE3-NEXT: packssdw %xmm1, %xmm0
2086 ; SSSE3-NEXT: retq
2481 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i8:
2482 ; SSSE3: # %bb.0:
2483 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
2484 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2485 ; SSSE3-NEXT: pxor %xmm1, %xmm2
2486 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
2487 ; SSSE3-NEXT: pxor %xmm4, %xmm4
2488 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
2489 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483775,2147483775]
2490 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
2491 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
2492 ; SSSE3-NEXT: pand %xmm4, %xmm2
2493 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
2494 ; SSSE3-NEXT: por %xmm2, %xmm3
2495 ; SSSE3-NEXT: pand %xmm3, %xmm0
2496 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
2497 ; SSSE3-NEXT: por %xmm3, %xmm0
2498 ; SSSE3-NEXT: pxor %xmm0, %xmm1
2499 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
2500 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm3
2501 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm3
2502 ; SSSE3-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
2503 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,0,2,2]
2504 ; SSSE3-NEXT: pand %xmm3, %xmm2
2505 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2506 ; SSSE3-NEXT: por %xmm2, %xmm1
2507 ; SSSE3-NEXT: pand %xmm1, %xmm0
2508 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
2509 ; SSSE3-NEXT: por %xmm1, %xmm0
2510 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2511 ; SSSE3-NEXT: retq
2626 ; SSSE3-LABEL: trunc_ssat_v2i64_v2i8_store:
2627 ; SSSE3: # %bb.0:
2628 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
2629 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2630 ; SSSE3-NEXT: pxor %xmm1, %xmm2
2631 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
2632 ; SSSE3-NEXT: pxor %xmm4, %xmm4
2633 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
2634 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483775,2147483775]
2635 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
2636 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
2637 ; SSSE3-NEXT: pand %xmm4, %xmm2
2638 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
2639 ; SSSE3-NEXT: por %xmm2, %xmm3
2640 ; SSSE3-NEXT: pand %xmm3, %xmm0
2641 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
2642 ; SSSE3-NEXT: por %xmm0, %xmm3
2643 ; SSSE3-NEXT: pxor %xmm3, %xmm1
2644 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
2645 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm2
2646 ; SSSE3-NEXT: pcmpeqd %xmm0, %xmm2
2647 ; SSSE3-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
2648 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
2649 ; SSSE3-NEXT: pand %xmm2, %xmm0
2650 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2651 ; SSSE3-NEXT: por %xmm0, %xmm1
2652 ; SSSE3-NEXT: pand %xmm1, %xmm3
2653 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
2654 ; SSSE3-NEXT: por %xmm3, %xmm1
2655 ; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2656 ; SSSE3-NEXT: movd %xmm1, %eax
2657 ; SSSE3-NEXT: movw %ax, (%rdi)
2658 ; SSSE3-NEXT: retq
2805 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i8:
2806 ; SSSE3: # %bb.0:
2807 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
2808 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
2809 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
2810 ; SSSE3-NEXT: pxor %xmm2, %xmm3
2811 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
2812 ; SSSE3-NEXT: pxor %xmm9, %xmm9
2813 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
2814 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147483775,2147483775]
2815 ; SSSE3-NEXT: movdqa %xmm4, %xmm7
2816 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm7
2817 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
2818 ; SSSE3-NEXT: pand %xmm5, %xmm6
2819 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
2820 ; SSSE3-NEXT: por %xmm6, %xmm3
2821 ; SSSE3-NEXT: pand %xmm3, %xmm1
2822 ; SSSE3-NEXT: pandn %xmm8, %xmm3
2823 ; SSSE3-NEXT: por %xmm1, %xmm3
2824 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
2825 ; SSSE3-NEXT: pxor %xmm2, %xmm1
2826 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
2827 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
2828 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
2829 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
2830 ; SSSE3-NEXT: pand %xmm5, %xmm1
2831 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
2832 ; SSSE3-NEXT: por %xmm1, %xmm4
2833 ; SSSE3-NEXT: pand %xmm4, %xmm0
2834 ; SSSE3-NEXT: pandn %xmm8, %xmm4
2835 ; SSSE3-NEXT: por %xmm4, %xmm0
2836 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
2837 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
2838 ; SSSE3-NEXT: pxor %xmm2, %xmm4
2839 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
2840 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm6
2841 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
2842 ; SSSE3-NEXT: movdqa {{.*#+}} xmm7 = [18446744071562067840,18446744071562067840]
2843 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm4
2844 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
2845 ; SSSE3-NEXT: pand %xmm5, %xmm1
2846 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
2847 ; SSSE3-NEXT: por %xmm1, %xmm4
2848 ; SSSE3-NEXT: pand %xmm4, %xmm0
2849 ; SSSE3-NEXT: pandn %xmm8, %xmm4
2850 ; SSSE3-NEXT: por %xmm4, %xmm0
2851 ; SSSE3-NEXT: pxor %xmm3, %xmm2
2852 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
2853 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm1
2854 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm2
2855 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
2856 ; SSSE3-NEXT: pand %xmm1, %xmm4
2857 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
2858 ; SSSE3-NEXT: por %xmm4, %xmm1
2859 ; SSSE3-NEXT: pand %xmm1, %xmm3
2860 ; SSSE3-NEXT: pandn %xmm8, %xmm1
2861 ; SSSE3-NEXT: por %xmm3, %xmm1
2862 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
2863 ; SSSE3-NEXT: pshufb %xmm2, %xmm1
2864 ; SSSE3-NEXT: pshufb %xmm2, %xmm0
2865 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
2866 ; SSSE3-NEXT: retq
3063 ; SSSE3-LABEL: trunc_ssat_v4i64_v4i8_store:
3064 ; SSSE3: # %bb.0:
3065 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
3066 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
3067 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
3068 ; SSSE3-NEXT: pxor %xmm2, %xmm3
3069 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
3070 ; SSSE3-NEXT: pxor %xmm9, %xmm9
3071 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3072 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147483775,2147483775]
3073 ; SSSE3-NEXT: movdqa %xmm4, %xmm7
3074 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm7
3075 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
3076 ; SSSE3-NEXT: pand %xmm5, %xmm6
3077 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
3078 ; SSSE3-NEXT: por %xmm6, %xmm3
3079 ; SSSE3-NEXT: pand %xmm3, %xmm1
3080 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3081 ; SSSE3-NEXT: por %xmm1, %xmm3
3082 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
3083 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3084 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
3085 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3086 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
3087 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
3088 ; SSSE3-NEXT: pand %xmm5, %xmm1
3089 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3090 ; SSSE3-NEXT: por %xmm1, %xmm4
3091 ; SSSE3-NEXT: pand %xmm4, %xmm0
3092 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3093 ; SSSE3-NEXT: por %xmm0, %xmm4
3094 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
3095 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
3096 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3097 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
3098 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm6
3099 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
3100 ; SSSE3-NEXT: movdqa {{.*#+}} xmm7 = [18446744071562067840,18446744071562067840]
3101 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm1
3102 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
3103 ; SSSE3-NEXT: pand %xmm5, %xmm0
3104 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3105 ; SSSE3-NEXT: por %xmm0, %xmm1
3106 ; SSSE3-NEXT: pand %xmm1, %xmm4
3107 ; SSSE3-NEXT: pandn %xmm8, %xmm1
3108 ; SSSE3-NEXT: por %xmm4, %xmm1
3109 ; SSSE3-NEXT: pxor %xmm3, %xmm2
3110 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
3111 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm0
3112 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm2
3113 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
3114 ; SSSE3-NEXT: pand %xmm0, %xmm4
3115 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
3116 ; SSSE3-NEXT: por %xmm4, %xmm0
3117 ; SSSE3-NEXT: pand %xmm0, %xmm3
3118 ; SSSE3-NEXT: pandn %xmm8, %xmm0
3119 ; SSSE3-NEXT: por %xmm3, %xmm0
3120 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
3121 ; SSSE3-NEXT: pshufb %xmm2, %xmm0
3122 ; SSSE3-NEXT: pshufb %xmm2, %xmm1
3123 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],…
3124 ; SSSE3-NEXT: movd %xmm1, (%rdi)
3125 ; SSSE3-NEXT: retq
3378 ; SSSE3-LABEL: trunc_ssat_v8i64_v8i8:
3379 ; SSSE3: # %bb.0:
3380 ; SSSE3-NEXT: movdqa (%rdi), %xmm11
3381 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm10
3382 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm3
3383 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm5
3384 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
3385 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
3386 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
3387 ; SSSE3-NEXT: pxor %xmm1, %xmm2
3388 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
3389 ; SSSE3-NEXT: pxor %xmm9, %xmm9
3390 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
3391 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [2147483775,2147483775]
3392 ; SSSE3-NEXT: movdqa %xmm0, %xmm7
3393 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm7
3394 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
3395 ; SSSE3-NEXT: pand %xmm4, %xmm6
3396 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm7[1,1,3,3]
3397 ; SSSE3-NEXT: por %xmm6, %xmm2
3398 ; SSSE3-NEXT: pand %xmm2, %xmm3
3399 ; SSSE3-NEXT: pandn %xmm8, %xmm2
3400 ; SSSE3-NEXT: por %xmm3, %xmm2
3401 ; SSSE3-NEXT: movdqa %xmm5, %xmm3
3402 ; SSSE3-NEXT: pxor %xmm1, %xmm3
3403 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
3404 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
3405 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
3406 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm6
3407 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
3408 ; SSSE3-NEXT: pand %xmm4, %xmm7
3409 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
3410 ; SSSE3-NEXT: por %xmm7, %xmm3
3411 ; SSSE3-NEXT: pand %xmm3, %xmm5
3412 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3413 ; SSSE3-NEXT: por %xmm5, %xmm3
3414 ; SSSE3-NEXT: movdqa %xmm11, %xmm4
3415 ; SSSE3-NEXT: pxor %xmm1, %xmm4
3416 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
3417 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3418 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
3419 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm6
3420 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[0,0,2,2]
3421 ; SSSE3-NEXT: pand %xmm5, %xmm4
3422 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]
3423 ; SSSE3-NEXT: por %xmm4, %xmm5
3424 ; SSSE3-NEXT: pand %xmm5, %xmm11
3425 ; SSSE3-NEXT: pandn %xmm8, %xmm5
3426 ; SSSE3-NEXT: por %xmm11, %xmm5
3427 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
3428 ; SSSE3-NEXT: pxor %xmm1, %xmm4
3429 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]
3430 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
3431 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm0
3432 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[0,0,2,2]
3433 ; SSSE3-NEXT: pand %xmm6, %xmm4
3434 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3435 ; SSSE3-NEXT: por %xmm4, %xmm0
3436 ; SSSE3-NEXT: pand %xmm0, %xmm10
3437 ; SSSE3-NEXT: pandn %xmm8, %xmm0
3438 ; SSSE3-NEXT: por %xmm10, %xmm0
3439 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
3440 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
3441 ; SSSE3-NEXT: pxor %xmm1, %xmm4
3442 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]
3443 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm9
3444 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
3445 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [18446744071562067840,18446744071562067840]
3446 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm4
3447 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[0,0,2,2]
3448 ; SSSE3-NEXT: pand %xmm6, %xmm7
3449 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3450 ; SSSE3-NEXT: por %xmm7, %xmm4
3451 ; SSSE3-NEXT: pand %xmm4, %xmm0
3452 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3453 ; SSSE3-NEXT: por %xmm0, %xmm4
3454 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
3455 ; SSSE3-NEXT: pxor %xmm1, %xmm0
3456 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
3457 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
3458 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm0
3459 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm0[0,0,2,2]
3460 ; SSSE3-NEXT: pand %xmm6, %xmm7
3461 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3462 ; SSSE3-NEXT: por %xmm7, %xmm0
3463 ; SSSE3-NEXT: pand %xmm0, %xmm5
3464 ; SSSE3-NEXT: pandn %xmm8, %xmm0
3465 ; SSSE3-NEXT: por %xmm5, %xmm0
3466 ; SSSE3-NEXT: packssdw %xmm4, %xmm0
3467 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
3468 ; SSSE3-NEXT: pxor %xmm1, %xmm4
3469 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
3470 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3471 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm4
3472 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
3473 ; SSSE3-NEXT: pand %xmm5, %xmm6
3474 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3475 ; SSSE3-NEXT: por %xmm6, %xmm4
3476 ; SSSE3-NEXT: pand %xmm4, %xmm3
3477 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3478 ; SSSE3-NEXT: por %xmm3, %xmm4
3479 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3480 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
3481 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm3
3482 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm1
3483 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
3484 ; SSSE3-NEXT: pand %xmm3, %xmm5
3485 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3486 ; SSSE3-NEXT: por %xmm5, %xmm1
3487 ; SSSE3-NEXT: pand %xmm1, %xmm2
3488 ; SSSE3-NEXT: pandn %xmm8, %xmm1
3489 ; SSSE3-NEXT: por %xmm2, %xmm1
3490 ; SSSE3-NEXT: packssdw %xmm4, %xmm1
3491 ; SSSE3-NEXT: packssdw %xmm1, %xmm0
3492 ; SSSE3-NEXT: packsswb %xmm0, %xmm0
3493 ; SSSE3-NEXT: retq
3791 ; SSSE3-LABEL: trunc_ssat_v8i64_v8i8_store:
3792 ; SSSE3: # %bb.0:
3793 ; SSSE3-NEXT: movdqa (%rdi), %xmm11
3794 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm10
3795 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm2
3796 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm5
3797 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
3798 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648]
3799 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
3800 ; SSSE3-NEXT: pxor %xmm0, %xmm1
3801 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
3802 ; SSSE3-NEXT: pxor %xmm9, %xmm9
3803 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
3804 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483775,2147483775]
3805 ; SSSE3-NEXT: movdqa %xmm3, %xmm7
3806 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm7
3807 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
3808 ; SSSE3-NEXT: pand %xmm4, %xmm6
3809 ; SSSE3-NEXT: pshufd {{.*#+}} xmm12 = xmm7[1,1,3,3]
3810 ; SSSE3-NEXT: por %xmm6, %xmm12
3811 ; SSSE3-NEXT: pand %xmm12, %xmm2
3812 ; SSSE3-NEXT: pandn %xmm8, %xmm12
3813 ; SSSE3-NEXT: por %xmm2, %xmm12
3814 ; SSSE3-NEXT: movdqa %xmm5, %xmm2
3815 ; SSSE3-NEXT: pxor %xmm0, %xmm2
3816 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
3817 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
3818 ; SSSE3-NEXT: movdqa %xmm3, %xmm6
3819 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm6
3820 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
3821 ; SSSE3-NEXT: pand %xmm4, %xmm7
3822 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
3823 ; SSSE3-NEXT: por %xmm7, %xmm2
3824 ; SSSE3-NEXT: pand %xmm2, %xmm5
3825 ; SSSE3-NEXT: pandn %xmm8, %xmm2
3826 ; SSSE3-NEXT: por %xmm5, %xmm2
3827 ; SSSE3-NEXT: movdqa %xmm11, %xmm4
3828 ; SSSE3-NEXT: pxor %xmm0, %xmm4
3829 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
3830 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3831 ; SSSE3-NEXT: movdqa %xmm3, %xmm6
3832 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm6
3833 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[0,0,2,2]
3834 ; SSSE3-NEXT: pand %xmm5, %xmm4
3835 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]
3836 ; SSSE3-NEXT: por %xmm4, %xmm5
3837 ; SSSE3-NEXT: pand %xmm5, %xmm11
3838 ; SSSE3-NEXT: pandn %xmm8, %xmm5
3839 ; SSSE3-NEXT: por %xmm11, %xmm5
3840 ; SSSE3-NEXT: movdqa %xmm10, %xmm4
3841 ; SSSE3-NEXT: pxor %xmm0, %xmm4
3842 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]
3843 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
3844 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm3
3845 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
3846 ; SSSE3-NEXT: pand %xmm6, %xmm4
3847 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm3[1,1,3,3]
3848 ; SSSE3-NEXT: por %xmm4, %xmm7
3849 ; SSSE3-NEXT: pand %xmm7, %xmm10
3850 ; SSSE3-NEXT: pandn %xmm8, %xmm7
3851 ; SSSE3-NEXT: por %xmm10, %xmm7
3852 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
3853 ; SSSE3-NEXT: movdqa %xmm7, %xmm3
3854 ; SSSE3-NEXT: pxor %xmm0, %xmm3
3855 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
3856 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm9
3857 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
3858 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [18446744071562067840,18446744071562067840]
3859 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm3
3860 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2]
3861 ; SSSE3-NEXT: pand %xmm4, %xmm6
3862 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3863 ; SSSE3-NEXT: por %xmm6, %xmm3
3864 ; SSSE3-NEXT: pand %xmm3, %xmm7
3865 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3866 ; SSSE3-NEXT: por %xmm7, %xmm3
3867 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
3868 ; SSSE3-NEXT: pxor %xmm0, %xmm4
3869 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[1,1,3,3]
3870 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm6
3871 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm4
3872 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
3873 ; SSSE3-NEXT: pand %xmm6, %xmm1
3874 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[1,1,3,3]
3875 ; SSSE3-NEXT: por %xmm1, %xmm7
3876 ; SSSE3-NEXT: pand %xmm7, %xmm5
3877 ; SSSE3-NEXT: pandn %xmm8, %xmm7
3878 ; SSSE3-NEXT: por %xmm5, %xmm7
3879 ; SSSE3-NEXT: packssdw %xmm3, %xmm7
3880 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
3881 ; SSSE3-NEXT: pxor %xmm0, %xmm1
3882 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
3883 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm3
3884 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm1
3885 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[0,0,2,2]
3886 ; SSSE3-NEXT: pand %xmm3, %xmm4
3887 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3888 ; SSSE3-NEXT: por %xmm4, %xmm1
3889 ; SSSE3-NEXT: pand %xmm1, %xmm2
3890 ; SSSE3-NEXT: pandn %xmm8, %xmm1
3891 ; SSSE3-NEXT: por %xmm2, %xmm1
3892 ; SSSE3-NEXT: pxor %xmm12, %xmm0
3893 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
3894 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm2
3895 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm0
3896 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[0,0,2,2]
3897 ; SSSE3-NEXT: pand %xmm2, %xmm3
3898 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3899 ; SSSE3-NEXT: por %xmm3, %xmm0
3900 ; SSSE3-NEXT: pand %xmm0, %xmm12
3901 ; SSSE3-NEXT: pandn %xmm8, %xmm0
3902 ; SSSE3-NEXT: por %xmm12, %xmm0
3903 ; SSSE3-NEXT: packssdw %xmm1, %xmm0
3904 ; SSSE3-NEXT: packssdw %xmm0, %xmm7
3905 ; SSSE3-NEXT: packsswb %xmm7, %xmm7
3906 ; SSSE3-NEXT: movq %xmm7, (%rsi)
3907 ; SSSE3-NEXT: retq
4313 ; SSSE3-LABEL: trunc_ssat_v16i64_v16i8:
4314 ; SSSE3: # %bb.0:
4315 ; SSSE3-NEXT: movdqa (%rdi), %xmm11
4316 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm9
4317 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm14
4318 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm12
4319 ; SSSE3-NEXT: movdqa 80(%rdi), %xmm7
4320 ; SSSE3-NEXT: movdqa 64(%rdi), %xmm2
4321 ; SSSE3-NEXT: movdqa 112(%rdi), %xmm4
4322 ; SSSE3-NEXT: movdqa 96(%rdi), %xmm3
4323 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [127,127]
4324 ; SSSE3-NEXT: movdqa {{.*#+}} xmm15 = [2147483648,2147483648]
4325 ; SSSE3-NEXT: movdqa %xmm3, %xmm5
4326 ; SSSE3-NEXT: pxor %xmm15, %xmm5
4327 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[1,1,3,3]
4328 ; SSSE3-NEXT: pxor %xmm10, %xmm10
4329 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm6
4330 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483775,2147483775]
4331 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
4332 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm0
4333 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm0[0,0,2,2]
4334 ; SSSE3-NEXT: pand %xmm6, %xmm5
4335 ; SSSE3-NEXT: pshufd {{.*#+}} xmm13 = xmm0[1,1,3,3]
4336 ; SSSE3-NEXT: por %xmm5, %xmm13
4337 ; SSSE3-NEXT: pand %xmm13, %xmm3
4338 ; SSSE3-NEXT: pandn %xmm8, %xmm13
4339 ; SSSE3-NEXT: por %xmm3, %xmm13
4340 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
4341 ; SSSE3-NEXT: pxor %xmm15, %xmm0
4342 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
4343 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
4344 ; SSSE3-NEXT: movdqa %xmm1, %xmm5
4345 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm5
4346 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
4347 ; SSSE3-NEXT: pand %xmm3, %xmm0
4348 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
4349 ; SSSE3-NEXT: por %xmm0, %xmm3
4350 ; SSSE3-NEXT: pand %xmm3, %xmm4
4351 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4352 ; SSSE3-NEXT: por %xmm4, %xmm3
4353 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
4354 ; SSSE3-NEXT: pxor %xmm15, %xmm0
4355 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
4356 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm4
4357 ; SSSE3-NEXT: movdqa %xmm1, %xmm5
4358 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm5
4359 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
4360 ; SSSE3-NEXT: pand %xmm4, %xmm0
4361 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]
4362 ; SSSE3-NEXT: por %xmm0, %xmm4
4363 ; SSSE3-NEXT: pand %xmm4, %xmm2
4364 ; SSSE3-NEXT: pandn %xmm8, %xmm4
4365 ; SSSE3-NEXT: por %xmm2, %xmm4
4366 ; SSSE3-NEXT: movdqa %xmm7, %xmm0
4367 ; SSSE3-NEXT: pxor %xmm15, %xmm0
4368 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
4369 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
4370 ; SSSE3-NEXT: movdqa %xmm1, %xmm5
4371 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm5
4372 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
4373 ; SSSE3-NEXT: pand %xmm2, %xmm0
4374 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
4375 ; SSSE3-NEXT: por %xmm0, %xmm5
4376 ; SSSE3-NEXT: pand %xmm5, %xmm7
4377 ; SSSE3-NEXT: pandn %xmm8, %xmm5
4378 ; SSSE3-NEXT: por %xmm7, %xmm5
4379 ; SSSE3-NEXT: movdqa %xmm14, %xmm0
4380 ; SSSE3-NEXT: pxor %xmm15, %xmm0
4381 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
4382 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
4383 ; SSSE3-NEXT: movdqa %xmm1, %xmm6
4384 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
4385 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
4386 ; SSSE3-NEXT: pand %xmm2, %xmm0
4387 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm6[1,1,3,3]
4388 ; SSSE3-NEXT: por %xmm0, %xmm7
4389 ; SSSE3-NEXT: pand %xmm7, %xmm14
4390 ; SSSE3-NEXT: pandn %xmm8, %xmm7
4391 ; SSSE3-NEXT: por %xmm14, %xmm7
4392 ; SSSE3-NEXT: movdqa %xmm12, %xmm0
4393 ; SSSE3-NEXT: pxor %xmm15, %xmm0
4394 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
4395 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
4396 ; SSSE3-NEXT: movdqa %xmm1, %xmm6
4397 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
4398 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
4399 ; SSSE3-NEXT: pand %xmm2, %xmm0
4400 ; SSSE3-NEXT: pshufd {{.*#+}} xmm14 = xmm6[1,1,3,3]
4401 ; SSSE3-NEXT: por %xmm0, %xmm14
4402 ; SSSE3-NEXT: pand %xmm14, %xmm12
4403 ; SSSE3-NEXT: pandn %xmm8, %xmm14
4404 ; SSSE3-NEXT: por %xmm12, %xmm14
4405 ; SSSE3-NEXT: movdqa %xmm11, %xmm0
4406 ; SSSE3-NEXT: pxor %xmm15, %xmm0
4407 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
4408 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
4409 ; SSSE3-NEXT: movdqa %xmm1, %xmm6
4410 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
4411 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
4412 ; SSSE3-NEXT: pand %xmm2, %xmm0
4413 ; SSSE3-NEXT: pshufd {{.*#+}} xmm12 = xmm6[1,1,3,3]
4414 ; SSSE3-NEXT: por %xmm0, %xmm12
4415 ; SSSE3-NEXT: pand %xmm12, %xmm11
4416 ; SSSE3-NEXT: pandn %xmm8, %xmm12
4417 ; SSSE3-NEXT: por %xmm11, %xmm12
4418 ; SSSE3-NEXT: movdqa %xmm9, %xmm0
4419 ; SSSE3-NEXT: pxor %xmm15, %xmm0
4420 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
4421 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm6
4422 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm1
4423 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
4424 ; SSSE3-NEXT: pand %xmm6, %xmm0
4425 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
4426 ; SSSE3-NEXT: por %xmm0, %xmm1
4427 ; SSSE3-NEXT: pand %xmm1, %xmm9
4428 ; SSSE3-NEXT: pandn %xmm8, %xmm1
4429 ; SSSE3-NEXT: por %xmm9, %xmm1
4430 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [18446744073709551488,18446744073709551488]
4431 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
4432 ; SSSE3-NEXT: pxor %xmm15, %xmm0
4433 ; SSSE3-NEXT: pshufd {{.*#+}} xmm11 = xmm0[1,1,3,3]
4434 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm9
4435 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm11
4436 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [18446744071562067840,18446744071562067840]
4437 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm0
4438 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm0[0,0,2,2]
4439 ; SSSE3-NEXT: pand %xmm11, %xmm6
4440 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
4441 ; SSSE3-NEXT: por %xmm6, %xmm2
4442 ; SSSE3-NEXT: pand %xmm2, %xmm1
4443 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4444 ; SSSE3-NEXT: por %xmm1, %xmm2
4445 ; SSSE3-NEXT: movdqa %xmm12, %xmm0
4446 ; SSSE3-NEXT: pxor %xmm15, %xmm0
4447 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
4448 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm1
4449 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm0
4450 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm0[0,0,2,2]
4451 ; SSSE3-NEXT: pand %xmm1, %xmm6
4452 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4453 ; SSSE3-NEXT: por %xmm6, %xmm0
4454 ; SSSE3-NEXT: pand %xmm0, %xmm12
4455 ; SSSE3-NEXT: pandn %xmm8, %xmm0
4456 ; SSSE3-NEXT: por %xmm12, %xmm0
4457 ; SSSE3-NEXT: packssdw %xmm2, %xmm0
4458 ; SSSE3-NEXT: movdqa %xmm14, %xmm1
4459 ; SSSE3-NEXT: pxor %xmm15, %xmm1
4460 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
4461 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm2
4462 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm1
4463 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm1[0,0,2,2]
4464 ; SSSE3-NEXT: pand %xmm2, %xmm6
4465 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
4466 ; SSSE3-NEXT: por %xmm6, %xmm1
4467 ; SSSE3-NEXT: pand %xmm1, %xmm14
4468 ; SSSE3-NEXT: pandn %xmm8, %xmm1
4469 ; SSSE3-NEXT: por %xmm14, %xmm1
4470 ; SSSE3-NEXT: movdqa %xmm7, %xmm2
4471 ; SSSE3-NEXT: pxor %xmm15, %xmm2
4472 ; SSSE3-NEXT: pshufd {{.*#+}} xmm11 = xmm2[1,1,3,3]
4473 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm11
4474 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm2
4475 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm2[0,0,2,2]
4476 ; SSSE3-NEXT: pand %xmm11, %xmm6
4477 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4478 ; SSSE3-NEXT: por %xmm6, %xmm2
4479 ; SSSE3-NEXT: pand %xmm2, %xmm7
4480 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4481 ; SSSE3-NEXT: por %xmm7, %xmm2
4482 ; SSSE3-NEXT: packssdw %xmm1, %xmm2
4483 ; SSSE3-NEXT: packssdw %xmm2, %xmm0
4484 ; SSSE3-NEXT: movdqa %xmm5, %xmm1
4485 ; SSSE3-NEXT: pxor %xmm15, %xmm1
4486 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
4487 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm2
4488 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm1
4489 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm1[0,0,2,2]
4490 ; SSSE3-NEXT: pand %xmm2, %xmm6
4491 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
4492 ; SSSE3-NEXT: por %xmm6, %xmm1
4493 ; SSSE3-NEXT: pand %xmm1, %xmm5
4494 ; SSSE3-NEXT: pandn %xmm8, %xmm1
4495 ; SSSE3-NEXT: por %xmm5, %xmm1
4496 ; SSSE3-NEXT: movdqa %xmm4, %xmm2
4497 ; SSSE3-NEXT: pxor %xmm15, %xmm2
4498 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm2[1,1,3,3]
4499 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
4500 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm2
4501 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm2[0,0,2,2]
4502 ; SSSE3-NEXT: pand %xmm5, %xmm6
4503 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4504 ; SSSE3-NEXT: por %xmm6, %xmm2
4505 ; SSSE3-NEXT: pand %xmm2, %xmm4
4506 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4507 ; SSSE3-NEXT: por %xmm4, %xmm2
4508 ; SSSE3-NEXT: packssdw %xmm1, %xmm2
4509 ; SSSE3-NEXT: movdqa %xmm3, %xmm1
4510 ; SSSE3-NEXT: pxor %xmm15, %xmm1
4511 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
4512 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
4513 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm1
4514 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
4515 ; SSSE3-NEXT: pand %xmm4, %xmm5
4516 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
4517 ; SSSE3-NEXT: por %xmm5, %xmm1
4518 ; SSSE3-NEXT: pand %xmm1, %xmm3
4519 ; SSSE3-NEXT: pandn %xmm8, %xmm1
4520 ; SSSE3-NEXT: por %xmm3, %xmm1
4521 ; SSSE3-NEXT: pxor %xmm13, %xmm15
4522 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm15[1,1,3,3]
4523 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm3
4524 ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm15
4525 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm15[0,0,2,2]
4526 ; SSSE3-NEXT: pand %xmm3, %xmm4
4527 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm15[1,1,3,3]
4528 ; SSSE3-NEXT: por %xmm4, %xmm3
4529 ; SSSE3-NEXT: pand %xmm3, %xmm13
4530 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4531 ; SSSE3-NEXT: por %xmm13, %xmm3
4532 ; SSSE3-NEXT: packssdw %xmm1, %xmm3
4533 ; SSSE3-NEXT: packssdw %xmm3, %xmm2
4534 ; SSSE3-NEXT: packsswb %xmm2, %xmm0
4535 ; SSSE3-NEXT: retq
4868 ; SSSE3-LABEL: trunc_ssat_v4i32_v4i8:
4869 ; SSSE3: # %bb.0:
4870 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [127,127,127,127]
4871 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
4872 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4873 ; SSSE3-NEXT: pand %xmm2, %xmm0
4874 ; SSSE3-NEXT: pandn %xmm1, %xmm2
4875 ; SSSE3-NEXT: por %xmm2, %xmm0
4876 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [4294967168,4294967168,4294967168,4294967168]
4877 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
4878 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
4879 ; SSSE3-NEXT: pand %xmm2, %xmm0
4880 ; SSSE3-NEXT: pandn %xmm1, %xmm2
4881 ; SSSE3-NEXT: por %xmm2, %xmm0
4882 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
4883 ; SSSE3-NEXT: retq
4968 ; SSSE3-LABEL: trunc_ssat_v4i32_v4i8_store:
4969 ; SSSE3: # %bb.0:
4970 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [127,127,127,127]
4971 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
4972 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4973 ; SSSE3-NEXT: pand %xmm2, %xmm0
4974 ; SSSE3-NEXT: pandn %xmm1, %xmm2
4975 ; SSSE3-NEXT: por %xmm0, %xmm2
4976 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [4294967168,4294967168,4294967168,4294967168]
4977 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
4978 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm1
4979 ; SSSE3-NEXT: pand %xmm1, %xmm2
4980 ; SSSE3-NEXT: pandn %xmm0, %xmm1
4981 ; SSSE3-NEXT: por %xmm2, %xmm1
4982 ; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
4983 ; SSSE3-NEXT: movd %xmm1, (%rdi)
4984 ; SSSE3-NEXT: retq
5710 ; SSSE3-LABEL: trunc_ssat_v16i32_v16i24:
5711 ; SSSE3: # %bb.0:
5712 ; SSSE3-NEXT: pushq %rbp
5713 ; SSSE3-NEXT: pushq %r15
5714 ; SSSE3-NEXT: pushq %r14
5715 ; SSSE3-NEXT: pushq %r12
5716 ; SSSE3-NEXT: pushq %rbx
5717 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [8388607,8388607,8388607,8388607]
5718 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
5719 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm4
5720 ; SSSE3-NEXT: pand %xmm4, %xmm3
5721 ; SSSE3-NEXT: pandn %xmm5, %xmm4
5722 ; SSSE3-NEXT: por %xmm3, %xmm4
5723 ; SSSE3-NEXT: movdqa %xmm5, %xmm3
5724 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
5725 ; SSSE3-NEXT: pand %xmm3, %xmm2
5726 ; SSSE3-NEXT: pandn %xmm5, %xmm3
5727 ; SSSE3-NEXT: por %xmm2, %xmm3
5728 ; SSSE3-NEXT: movdqa %xmm5, %xmm2
5729 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
5730 ; SSSE3-NEXT: pand %xmm2, %xmm1
5731 ; SSSE3-NEXT: pandn %xmm5, %xmm2
5732 ; SSSE3-NEXT: por %xmm1, %xmm2
5733 ; SSSE3-NEXT: movdqa %xmm5, %xmm1
5734 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm1
5735 ; SSSE3-NEXT: pand %xmm1, %xmm0
5736 ; SSSE3-NEXT: pandn %xmm5, %xmm1
5737 ; SSSE3-NEXT: por %xmm0, %xmm1
5738 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [4286578688,4286578688,4286578688,4286578688]
5739 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
5740 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm0
5741 ; SSSE3-NEXT: pand %xmm0, %xmm1
5742 ; SSSE3-NEXT: pandn %xmm5, %xmm0
5743 ; SSSE3-NEXT: por %xmm1, %xmm0
5744 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
5745 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm1
5746 ; SSSE3-NEXT: pand %xmm1, %xmm2
5747 ; SSSE3-NEXT: pandn %xmm5, %xmm1
5748 ; SSSE3-NEXT: por %xmm2, %xmm1
5749 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
5750 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm2
5751 ; SSSE3-NEXT: pand %xmm2, %xmm3
5752 ; SSSE3-NEXT: pandn %xmm5, %xmm2
5753 ; SSSE3-NEXT: por %xmm3, %xmm2
5754 ; SSSE3-NEXT: movdqa %xmm4, %xmm3
5755 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm3
5756 ; SSSE3-NEXT: pand %xmm3, %xmm4
5757 ; SSSE3-NEXT: pandn %xmm5, %xmm3
5758 ; SSSE3-NEXT: por %xmm4, %xmm3
5759 ; SSSE3-NEXT: movd %xmm3, %edx
5760 ; SSSE3-NEXT: movw %dx, 36(%rdi)
5761 ; SSSE3-NEXT: movd %xmm2, %ecx
5762 ; SSSE3-NEXT: movw %cx, 24(%rdi)
5763 ; SSSE3-NEXT: movd %xmm1, %eax
5764 ; SSSE3-NEXT: movw %ax, 12(%rdi)
5765 ; SSSE3-NEXT: movd %xmm0, %r8d
5766 ; SSSE3-NEXT: movw %r8w, (%rdi)
5767 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[3,3,3,3]
5768 ; SSSE3-NEXT: movd %xmm4, %r9d
5769 ; SSSE3-NEXT: movw %r9w, 45(%rdi)
5770 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[2,3,2,3]
5771 ; SSSE3-NEXT: movd %xmm4, %r10d
5772 ; SSSE3-NEXT: movw %r10w, 42(%rdi)
5773 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,1,1]
5774 ; SSSE3-NEXT: movd %xmm3, %r11d
5775 ; SSSE3-NEXT: movw %r11w, 39(%rdi)
5776 ; SSSE3-NEXT: shrl $16, %edx
5777 ; SSSE3-NEXT: movb %dl, 38(%rdi)
5778 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[3,3,3,3]
5779 ; SSSE3-NEXT: movd %xmm3, %r14d
5780 ; SSSE3-NEXT: movw %r14w, 33(%rdi)
5781 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[2,3,2,3]
5782 ; SSSE3-NEXT: movd %xmm3, %r15d
5783 ; SSSE3-NEXT: movw %r15w, 30(%rdi)
5784 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,1,1]
5785 ; SSSE3-NEXT: movd %xmm2, %r12d
5786 ; SSSE3-NEXT: movw %r12w, 27(%rdi)
5787 ; SSSE3-NEXT: shrl $16, %ecx
5788 ; SSSE3-NEXT: movb %cl, 26(%rdi)
5789 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[3,3,3,3]
5790 ; SSSE3-NEXT: movd %xmm2, %esi
5791 ; SSSE3-NEXT: movw %si, 21(%rdi)
5792 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[2,3,2,3]
5793 ; SSSE3-NEXT: movd %xmm2, %ebx
5794 ; SSSE3-NEXT: movw %bx, 18(%rdi)
5795 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,1,1]
5796 ; SSSE3-NEXT: movd %xmm1, %ebp
5797 ; SSSE3-NEXT: movw %bp, 15(%rdi)
5798 ; SSSE3-NEXT: shrl $16, %eax
5799 ; SSSE3-NEXT: movb %al, 14(%rdi)
5800 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,3,3,3]
5801 ; SSSE3-NEXT: movd %xmm1, %eax
5802 ; SSSE3-NEXT: movw %ax, 9(%rdi)
5803 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
5804 ; SSSE3-NEXT: movd %xmm1, %ecx
5805 ; SSSE3-NEXT: movw %cx, 6(%rdi)
5806 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
5807 ; SSSE3-NEXT: movd %xmm0, %edx
5808 ; SSSE3-NEXT: movw %dx, 3(%rdi)
5809 ; SSSE3-NEXT: shrl $16, %r8d
5810 ; SSSE3-NEXT: movb %r8b, 2(%rdi)
5811 ; SSSE3-NEXT: shrl $16, %r9d
5812 ; SSSE3-NEXT: movb %r9b, 47(%rdi)
5813 ; SSSE3-NEXT: shrl $16, %r10d
5814 ; SSSE3-NEXT: movb %r10b, 44(%rdi)
5815 ; SSSE3-NEXT: shrl $16, %r11d
5816 ; SSSE3-NEXT: movb %r11b, 41(%rdi)
5817 ; SSSE3-NEXT: shrl $16, %r14d
5818 ; SSSE3-NEXT: movb %r14b, 35(%rdi)
5819 ; SSSE3-NEXT: shrl $16, %r15d
5820 ; SSSE3-NEXT: movb %r15b, 32(%rdi)
5821 ; SSSE3-NEXT: shrl $16, %r12d
5822 ; SSSE3-NEXT: movb %r12b, 29(%rdi)
5823 ; SSSE3-NEXT: shrl $16, %esi
5824 ; SSSE3-NEXT: movb %sil, 23(%rdi)
5825 ; SSSE3-NEXT: shrl $16, %ebx
5826 ; SSSE3-NEXT: movb %bl, 20(%rdi)
5827 ; SSSE3-NEXT: shrl $16, %ebp
5828 ; SSSE3-NEXT: movb %bpl, 17(%rdi)
5829 ; SSSE3-NEXT: shrl $16, %eax
5830 ; SSSE3-NEXT: movb %al, 11(%rdi)
5831 ; SSSE3-NEXT: shrl $16, %ecx
5832 ; SSSE3-NEXT: movb %cl, 8(%rdi)
5833 ; SSSE3-NEXT: shrl $16, %edx
5834 ; SSSE3-NEXT: movb %dl, 5(%rdi)
5835 ; SSSE3-NEXT: popq %rbx
5836 ; SSSE3-NEXT: popq %r12
5837 ; SSSE3-NEXT: popq %r14
5838 ; SSSE3-NEXT: popq %r15
5839 ; SSSE3-NEXT: popq %rbp
5840 ; SSSE3-NEXT: retq