Lines Matching refs:SSSE3
3 …mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefix=SSE --check-prefix=SSSE3
53 ; SSSE3-LABEL: trunc_packus_v2i64_v2i32:
54 ; SSSE3: # %bb.0:
55 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
56 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
57 ; SSSE3-NEXT: pxor %xmm1, %xmm2
58 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
59 ; SSSE3-NEXT: pxor %xmm4, %xmm4
60 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
61 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483647,2147483647]
62 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
63 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
64 ; SSSE3-NEXT: pand %xmm4, %xmm2
65 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
66 ; SSSE3-NEXT: por %xmm2, %xmm3
67 ; SSSE3-NEXT: pand %xmm3, %xmm0
68 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
69 ; SSSE3-NEXT: por %xmm0, %xmm3
70 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
71 ; SSSE3-NEXT: pxor %xmm1, %xmm0
72 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
73 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
74 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm0
75 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
76 ; SSSE3-NEXT: pand %xmm2, %xmm0
77 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
78 ; SSSE3-NEXT: por %xmm0, %xmm1
79 ; SSSE3-NEXT: pand %xmm3, %xmm1
80 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
81 ; SSSE3-NEXT: retq
201 ; SSSE3-LABEL: trunc_packus_v2i64_v2i32_store:
202 ; SSSE3: # %bb.0:
203 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
204 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
205 ; SSSE3-NEXT: pxor %xmm1, %xmm2
206 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
207 ; SSSE3-NEXT: pxor %xmm4, %xmm4
208 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
209 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483647,2147483647]
210 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
211 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
212 ; SSSE3-NEXT: pand %xmm4, %xmm2
213 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
214 ; SSSE3-NEXT: por %xmm2, %xmm3
215 ; SSSE3-NEXT: pand %xmm3, %xmm0
216 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
217 ; SSSE3-NEXT: por %xmm0, %xmm3
218 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
219 ; SSSE3-NEXT: pxor %xmm1, %xmm0
220 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
221 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
222 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm0
223 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
224 ; SSSE3-NEXT: pand %xmm2, %xmm0
225 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
226 ; SSSE3-NEXT: por %xmm0, %xmm1
227 ; SSSE3-NEXT: pand %xmm3, %xmm1
228 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
229 ; SSSE3-NEXT: movq %xmm0, (%rdi)
230 ; SSSE3-NEXT: retq
376 ; SSSE3-LABEL: trunc_packus_v4i64_v4i32:
377 ; SSSE3: # %bb.0:
378 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [4294967295,4294967295]
379 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
380 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
381 ; SSSE3-NEXT: pxor %xmm2, %xmm4
382 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
383 ; SSSE3-NEXT: pxor %xmm6, %xmm6
384 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
385 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483647,2147483647]
386 ; SSSE3-NEXT: movdqa %xmm3, %xmm7
387 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm7
388 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
389 ; SSSE3-NEXT: pand %xmm5, %xmm4
390 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
391 ; SSSE3-NEXT: por %xmm4, %xmm5
392 ; SSSE3-NEXT: pand %xmm5, %xmm0
393 ; SSSE3-NEXT: pandn %xmm8, %xmm5
394 ; SSSE3-NEXT: por %xmm5, %xmm0
395 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
396 ; SSSE3-NEXT: pxor %xmm2, %xmm4
397 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
398 ; SSSE3-NEXT: pcmpeqd %xmm6, %xmm5
399 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm3
400 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
401 ; SSSE3-NEXT: pand %xmm5, %xmm4
402 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
403 ; SSSE3-NEXT: por %xmm4, %xmm3
404 ; SSSE3-NEXT: pand %xmm3, %xmm1
405 ; SSSE3-NEXT: pandn %xmm8, %xmm3
406 ; SSSE3-NEXT: por %xmm1, %xmm3
407 ; SSSE3-NEXT: movdqa %xmm3, %xmm1
408 ; SSSE3-NEXT: pxor %xmm2, %xmm1
409 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
410 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
411 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm1
412 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
413 ; SSSE3-NEXT: pand %xmm4, %xmm1
414 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
415 ; SSSE3-NEXT: por %xmm1, %xmm4
416 ; SSSE3-NEXT: pand %xmm3, %xmm4
417 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
418 ; SSSE3-NEXT: pxor %xmm2, %xmm1
419 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
420 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
421 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm1
422 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
423 ; SSSE3-NEXT: pand %xmm3, %xmm1
424 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3]
425 ; SSSE3-NEXT: por %xmm1, %xmm2
426 ; SSSE3-NEXT: pand %xmm2, %xmm0
427 ; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm4[0,2]
428 ; SSSE3-NEXT: retq
694 ; SSSE3-LABEL: trunc_packus_v8i64_v8i32:
695 ; SSSE3: # %bb.0:
696 ; SSSE3-NEXT: movdqa (%rdi), %xmm3
697 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm4
698 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm6
699 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm10
700 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [4294967295,4294967295]
701 ; SSSE3-NEXT: movdqa {{.*#+}} xmm11 = [2147483648,2147483648]
702 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
703 ; SSSE3-NEXT: pxor %xmm11, %xmm2
704 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm2[1,1,3,3]
705 ; SSSE3-NEXT: pxor %xmm9, %xmm9
706 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm7
707 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483647,2147483647]
708 ; SSSE3-NEXT: movdqa %xmm1, %xmm5
709 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm5
710 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
711 ; SSSE3-NEXT: pand %xmm7, %xmm0
712 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm5[1,1,3,3]
713 ; SSSE3-NEXT: por %xmm0, %xmm2
714 ; SSSE3-NEXT: pand %xmm2, %xmm3
715 ; SSSE3-NEXT: pandn %xmm8, %xmm2
716 ; SSSE3-NEXT: por %xmm3, %xmm2
717 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
718 ; SSSE3-NEXT: pxor %xmm11, %xmm0
719 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
720 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm3
721 ; SSSE3-NEXT: movdqa %xmm1, %xmm5
722 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm5
723 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
724 ; SSSE3-NEXT: pand %xmm3, %xmm0
725 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
726 ; SSSE3-NEXT: por %xmm0, %xmm3
727 ; SSSE3-NEXT: pand %xmm3, %xmm4
728 ; SSSE3-NEXT: pandn %xmm8, %xmm3
729 ; SSSE3-NEXT: por %xmm4, %xmm3
730 ; SSSE3-NEXT: movdqa %xmm6, %xmm0
731 ; SSSE3-NEXT: pxor %xmm11, %xmm0
732 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
733 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
734 ; SSSE3-NEXT: movdqa %xmm1, %xmm5
735 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm5
736 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
737 ; SSSE3-NEXT: pand %xmm4, %xmm0
738 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]
739 ; SSSE3-NEXT: por %xmm0, %xmm4
740 ; SSSE3-NEXT: pand %xmm4, %xmm6
741 ; SSSE3-NEXT: pandn %xmm8, %xmm4
742 ; SSSE3-NEXT: por %xmm6, %xmm4
743 ; SSSE3-NEXT: movdqa %xmm10, %xmm0
744 ; SSSE3-NEXT: pxor %xmm11, %xmm0
745 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm0[1,1,3,3]
746 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
747 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm1
748 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
749 ; SSSE3-NEXT: pand %xmm5, %xmm0
750 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
751 ; SSSE3-NEXT: por %xmm0, %xmm1
752 ; SSSE3-NEXT: pand %xmm1, %xmm10
753 ; SSSE3-NEXT: pandn %xmm8, %xmm1
754 ; SSSE3-NEXT: por %xmm10, %xmm1
755 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
756 ; SSSE3-NEXT: pxor %xmm11, %xmm0
757 ; SSSE3-NEXT: movdqa %xmm0, %xmm5
758 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm5
759 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
760 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
761 ; SSSE3-NEXT: pand %xmm5, %xmm0
762 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
763 ; SSSE3-NEXT: por %xmm0, %xmm5
764 ; SSSE3-NEXT: pand %xmm1, %xmm5
765 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
766 ; SSSE3-NEXT: pxor %xmm11, %xmm0
767 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
768 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm1
769 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
770 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
771 ; SSSE3-NEXT: pand %xmm1, %xmm0
772 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
773 ; SSSE3-NEXT: por %xmm0, %xmm1
774 ; SSSE3-NEXT: pand %xmm4, %xmm1
775 ; SSSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm5[0,2]
776 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
777 ; SSSE3-NEXT: pxor %xmm11, %xmm0
778 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
779 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm4
780 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
781 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
782 ; SSSE3-NEXT: pand %xmm4, %xmm0
783 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
784 ; SSSE3-NEXT: por %xmm0, %xmm4
785 ; SSSE3-NEXT: pand %xmm3, %xmm4
786 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
787 ; SSSE3-NEXT: pxor %xmm11, %xmm0
788 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
789 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm3
790 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
791 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm0[1,1,3,3]
792 ; SSSE3-NEXT: pand %xmm3, %xmm5
793 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[1,1,3,3]
794 ; SSSE3-NEXT: por %xmm5, %xmm0
795 ; SSSE3-NEXT: pand %xmm2, %xmm0
796 ; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm4[0,2]
797 ; SSSE3-NEXT: retq
1044 ; SSSE3-LABEL: trunc_packus_v2i64_v2i16:
1045 ; SSSE3: # %bb.0:
1046 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
1047 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
1048 ; SSSE3-NEXT: pxor %xmm1, %xmm2
1049 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
1050 ; SSSE3-NEXT: pxor %xmm4, %xmm4
1051 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
1052 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147549183,2147549183]
1053 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
1054 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
1055 ; SSSE3-NEXT: pand %xmm4, %xmm2
1056 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
1057 ; SSSE3-NEXT: por %xmm2, %xmm3
1058 ; SSSE3-NEXT: pand %xmm3, %xmm0
1059 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
1060 ; SSSE3-NEXT: por %xmm0, %xmm3
1061 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
1062 ; SSSE3-NEXT: pxor %xmm1, %xmm0
1063 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
1064 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
1065 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
1066 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm0
1067 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1068 ; SSSE3-NEXT: pand %xmm4, %xmm0
1069 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
1070 ; SSSE3-NEXT: por %xmm0, %xmm1
1071 ; SSSE3-NEXT: pand %xmm3, %xmm1
1072 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
1073 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1074 ; SSSE3-NEXT: retq
1219 ; SSSE3-LABEL: trunc_packus_v2i64_v2i16_store:
1220 ; SSSE3: # %bb.0:
1221 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
1222 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
1223 ; SSSE3-NEXT: pxor %xmm1, %xmm2
1224 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
1225 ; SSSE3-NEXT: pxor %xmm4, %xmm4
1226 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
1227 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147549183,2147549183]
1228 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
1229 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
1230 ; SSSE3-NEXT: pand %xmm4, %xmm2
1231 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
1232 ; SSSE3-NEXT: por %xmm2, %xmm3
1233 ; SSSE3-NEXT: pand %xmm3, %xmm0
1234 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
1235 ; SSSE3-NEXT: por %xmm0, %xmm3
1236 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
1237 ; SSSE3-NEXT: pxor %xmm1, %xmm0
1238 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
1239 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
1240 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
1241 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm0
1242 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1243 ; SSSE3-NEXT: pand %xmm4, %xmm0
1244 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
1245 ; SSSE3-NEXT: por %xmm0, %xmm1
1246 ; SSSE3-NEXT: pand %xmm3, %xmm1
1247 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
1248 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1249 ; SSSE3-NEXT: movd %xmm0, (%rdi)
1250 ; SSSE3-NEXT: retq
1429 ; SSSE3-LABEL: trunc_packus_v4i64_v4i16:
1430 ; SSSE3: # %bb.0:
1431 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [65535,65535]
1432 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
1433 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
1434 ; SSSE3-NEXT: pxor %xmm2, %xmm3
1435 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
1436 ; SSSE3-NEXT: pxor %xmm9, %xmm9
1437 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
1438 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147549183,2147549183]
1439 ; SSSE3-NEXT: movdqa %xmm4, %xmm7
1440 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm7
1441 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
1442 ; SSSE3-NEXT: pand %xmm5, %xmm6
1443 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
1444 ; SSSE3-NEXT: por %xmm6, %xmm3
1445 ; SSSE3-NEXT: pand %xmm3, %xmm1
1446 ; SSSE3-NEXT: pandn %xmm8, %xmm3
1447 ; SSSE3-NEXT: por %xmm1, %xmm3
1448 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
1449 ; SSSE3-NEXT: pxor %xmm2, %xmm1
1450 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
1451 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
1452 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
1453 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
1454 ; SSSE3-NEXT: pand %xmm5, %xmm1
1455 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
1456 ; SSSE3-NEXT: por %xmm1, %xmm4
1457 ; SSSE3-NEXT: pand %xmm4, %xmm0
1458 ; SSSE3-NEXT: pandn %xmm8, %xmm4
1459 ; SSSE3-NEXT: por %xmm0, %xmm4
1460 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
1461 ; SSSE3-NEXT: pxor %xmm2, %xmm0
1462 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
1463 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm1
1464 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
1465 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm0
1466 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1467 ; SSSE3-NEXT: pand %xmm5, %xmm0
1468 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1469 ; SSSE3-NEXT: por %xmm0, %xmm1
1470 ; SSSE3-NEXT: pand %xmm4, %xmm1
1471 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
1472 ; SSSE3-NEXT: pxor %xmm2, %xmm0
1473 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
1474 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
1475 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
1476 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm0
1477 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1478 ; SSSE3-NEXT: pand %xmm5, %xmm0
1479 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]
1480 ; SSSE3-NEXT: por %xmm0, %xmm2
1481 ; SSSE3-NEXT: pand %xmm3, %xmm2
1482 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
1483 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm2 = xmm0[0,2,2,3,4,5,6,7]
1484 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
1485 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1486 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1487 ; SSSE3-NEXT: retq
1682 ; SSSE3-LABEL: trunc_packus_v4i64_v4i16_store:
1683 ; SSSE3: # %bb.0:
1684 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [65535,65535]
1685 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
1686 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
1687 ; SSSE3-NEXT: pxor %xmm2, %xmm3
1688 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
1689 ; SSSE3-NEXT: pxor %xmm9, %xmm9
1690 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
1691 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147549183,2147549183]
1692 ; SSSE3-NEXT: movdqa %xmm4, %xmm7
1693 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm7
1694 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
1695 ; SSSE3-NEXT: pand %xmm5, %xmm6
1696 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
1697 ; SSSE3-NEXT: por %xmm6, %xmm3
1698 ; SSSE3-NEXT: pand %xmm3, %xmm1
1699 ; SSSE3-NEXT: pandn %xmm8, %xmm3
1700 ; SSSE3-NEXT: por %xmm1, %xmm3
1701 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
1702 ; SSSE3-NEXT: pxor %xmm2, %xmm1
1703 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
1704 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
1705 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
1706 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
1707 ; SSSE3-NEXT: pand %xmm5, %xmm1
1708 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
1709 ; SSSE3-NEXT: por %xmm1, %xmm4
1710 ; SSSE3-NEXT: pand %xmm4, %xmm0
1711 ; SSSE3-NEXT: pandn %xmm8, %xmm4
1712 ; SSSE3-NEXT: por %xmm0, %xmm4
1713 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
1714 ; SSSE3-NEXT: pxor %xmm2, %xmm0
1715 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
1716 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm1
1717 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
1718 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm0
1719 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1720 ; SSSE3-NEXT: pand %xmm5, %xmm0
1721 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1722 ; SSSE3-NEXT: por %xmm0, %xmm1
1723 ; SSSE3-NEXT: pand %xmm4, %xmm1
1724 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
1725 ; SSSE3-NEXT: pxor %xmm2, %xmm0
1726 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
1727 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
1728 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
1729 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm0
1730 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1731 ; SSSE3-NEXT: pand %xmm5, %xmm0
1732 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]
1733 ; SSSE3-NEXT: por %xmm0, %xmm2
1734 ; SSSE3-NEXT: pand %xmm3, %xmm2
1735 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
1736 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1737 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
1738 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7]
1739 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1740 ; SSSE3-NEXT: movq %xmm1, (%rdi)
1741 ; SSSE3-NEXT: retq
1998 ; SSSE3-LABEL: trunc_packus_v8i64_v8i16:
1999 ; SSSE3: # %bb.0:
2000 ; SSSE3-NEXT: movdqa (%rdi), %xmm4
2001 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm2
2002 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm10
2003 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm6
2004 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [65535,65535]
2005 ; SSSE3-NEXT: movdqa {{.*#+}} xmm11 = [2147483648,2147483648]
2006 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
2007 ; SSSE3-NEXT: pxor %xmm11, %xmm1
2008 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm1[1,1,3,3]
2009 ; SSSE3-NEXT: pxor %xmm9, %xmm9
2010 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm7
2011 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147549183,2147549183]
2012 ; SSSE3-NEXT: movdqa %xmm3, %xmm5
2013 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm5
2014 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
2015 ; SSSE3-NEXT: pand %xmm7, %xmm0
2016 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm5[1,1,3,3]
2017 ; SSSE3-NEXT: por %xmm0, %xmm1
2018 ; SSSE3-NEXT: pand %xmm1, %xmm2
2019 ; SSSE3-NEXT: pandn %xmm8, %xmm1
2020 ; SSSE3-NEXT: por %xmm2, %xmm1
2021 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
2022 ; SSSE3-NEXT: pxor %xmm11, %xmm0
2023 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
2024 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm2
2025 ; SSSE3-NEXT: movdqa %xmm3, %xmm5
2026 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm5
2027 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
2028 ; SSSE3-NEXT: pand %xmm2, %xmm0
2029 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm5[1,1,3,3]
2030 ; SSSE3-NEXT: por %xmm0, %xmm2
2031 ; SSSE3-NEXT: pand %xmm2, %xmm4
2032 ; SSSE3-NEXT: pandn %xmm8, %xmm2
2033 ; SSSE3-NEXT: por %xmm4, %xmm2
2034 ; SSSE3-NEXT: movdqa %xmm6, %xmm0
2035 ; SSSE3-NEXT: pxor %xmm11, %xmm0
2036 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
2037 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
2038 ; SSSE3-NEXT: movdqa %xmm3, %xmm5
2039 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm5
2040 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
2041 ; SSSE3-NEXT: pand %xmm4, %xmm0
2042 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]
2043 ; SSSE3-NEXT: por %xmm0, %xmm4
2044 ; SSSE3-NEXT: pand %xmm4, %xmm6
2045 ; SSSE3-NEXT: pandn %xmm8, %xmm4
2046 ; SSSE3-NEXT: por %xmm6, %xmm4
2047 ; SSSE3-NEXT: movdqa %xmm10, %xmm0
2048 ; SSSE3-NEXT: pxor %xmm11, %xmm0
2049 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm0[1,1,3,3]
2050 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
2051 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm3
2052 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
2053 ; SSSE3-NEXT: pand %xmm5, %xmm0
2054 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
2055 ; SSSE3-NEXT: por %xmm0, %xmm5
2056 ; SSSE3-NEXT: pand %xmm5, %xmm10
2057 ; SSSE3-NEXT: pandn %xmm8, %xmm5
2058 ; SSSE3-NEXT: por %xmm10, %xmm5
2059 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
2060 ; SSSE3-NEXT: pxor %xmm11, %xmm0
2061 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
2062 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm3
2063 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2]
2064 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
2065 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2066 ; SSSE3-NEXT: pand %xmm6, %xmm0
2067 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
2068 ; SSSE3-NEXT: por %xmm0, %xmm3
2069 ; SSSE3-NEXT: pand %xmm5, %xmm3
2070 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
2071 ; SSSE3-NEXT: pxor %xmm11, %xmm0
2072 ; SSSE3-NEXT: movdqa %xmm0, %xmm5
2073 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm5
2074 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
2075 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
2076 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2077 ; SSSE3-NEXT: pand %xmm6, %xmm0
2078 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
2079 ; SSSE3-NEXT: por %xmm0, %xmm5
2080 ; SSSE3-NEXT: pand %xmm4, %xmm5
2081 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
2082 ; SSSE3-NEXT: pxor %xmm11, %xmm0
2083 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
2084 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm4
2085 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm4[0,0,2,2]
2086 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
2087 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2088 ; SSSE3-NEXT: pand %xmm6, %xmm0
2089 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
2090 ; SSSE3-NEXT: por %xmm0, %xmm4
2091 ; SSSE3-NEXT: pand %xmm2, %xmm4
2092 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
2093 ; SSSE3-NEXT: pxor %xmm11, %xmm0
2094 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2095 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm2
2096 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm2[0,0,2,2]
2097 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
2098 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2099 ; SSSE3-NEXT: pand %xmm6, %xmm0
2100 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
2101 ; SSSE3-NEXT: por %xmm0, %xmm2
2102 ; SSSE3-NEXT: pand %xmm1, %xmm2
2103 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
2104 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
2105 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,2,2,3]
2106 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7]
2107 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
2108 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,2,2,3]
2109 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm2 = xmm0[0,1,0,2,4,5,6,7]
2110 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,2,2,3]
2111 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,2,4,5,6,7]
2112 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2113 ; SSSE3-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
2114 ; SSSE3-NEXT: retq
2308 ; SSSE3-LABEL: trunc_packus_v4i32_v4i16:
2309 ; SSSE3: # %bb.0:
2310 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535]
2311 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
2312 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
2313 ; SSSE3-NEXT: pand %xmm2, %xmm0
2314 ; SSSE3-NEXT: pandn %xmm1, %xmm2
2315 ; SSSE3-NEXT: por %xmm2, %xmm0
2316 ; SSSE3-NEXT: pxor %xmm1, %xmm1
2317 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2318 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
2319 ; SSSE3-NEXT: pand %xmm2, %xmm0
2320 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
2321 ; SSSE3-NEXT: retq
2369 ; SSSE3-LABEL: trunc_packus_v4i32_v4i16_store:
2370 ; SSSE3: # %bb.0:
2371 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535]
2372 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
2373 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
2374 ; SSSE3-NEXT: pand %xmm2, %xmm0
2375 ; SSSE3-NEXT: pandn %xmm1, %xmm2
2376 ; SSSE3-NEXT: por %xmm0, %xmm2
2377 ; SSSE3-NEXT: pxor %xmm0, %xmm0
2378 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
2379 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm1
2380 ; SSSE3-NEXT: pand %xmm2, %xmm1
2381 ; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,1,4,5,8,9,12,13,u,u,u,u,u,u,u,u]
2382 ; SSSE3-NEXT: movq %xmm1, (%rdi)
2383 ; SSSE3-NEXT: retq
2466 ; SSSE3-LABEL: trunc_packus_v8i32_v8i16:
2467 ; SSSE3: # %bb.0:
2468 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,65535]
2469 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
2470 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
2471 ; SSSE3-NEXT: pand %xmm3, %xmm1
2472 ; SSSE3-NEXT: pandn %xmm2, %xmm3
2473 ; SSSE3-NEXT: por %xmm1, %xmm3
2474 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
2475 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm1
2476 ; SSSE3-NEXT: pand %xmm1, %xmm0
2477 ; SSSE3-NEXT: pandn %xmm2, %xmm1
2478 ; SSSE3-NEXT: por %xmm1, %xmm0
2479 ; SSSE3-NEXT: pxor %xmm1, %xmm1
2480 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2481 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
2482 ; SSSE3-NEXT: pand %xmm2, %xmm0
2483 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
2484 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
2485 ; SSSE3-NEXT: pand %xmm3, %xmm2
2486 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
2487 ; SSSE3-NEXT: pshufb %xmm1, %xmm2
2488 ; SSSE3-NEXT: pshufb %xmm1, %xmm0
2489 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
2490 ; SSSE3-NEXT: retq
2609 ; SSSE3-LABEL: trunc_packus_v16i32_v16i16:
2610 ; SSSE3: # %bb.0:
2611 ; SSSE3-NEXT: movdqa (%rdi), %xmm1
2612 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm3
2613 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm0
2614 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm4
2615 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [65535,65535,65535,65535]
2616 ; SSSE3-NEXT: movdqa %xmm5, %xmm2
2617 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm2
2618 ; SSSE3-NEXT: pand %xmm2, %xmm3
2619 ; SSSE3-NEXT: pandn %xmm5, %xmm2
2620 ; SSSE3-NEXT: por %xmm3, %xmm2
2621 ; SSSE3-NEXT: movdqa %xmm5, %xmm3
2622 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
2623 ; SSSE3-NEXT: pand %xmm3, %xmm1
2624 ; SSSE3-NEXT: pandn %xmm5, %xmm3
2625 ; SSSE3-NEXT: por %xmm1, %xmm3
2626 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
2627 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm6
2628 ; SSSE3-NEXT: pand %xmm6, %xmm4
2629 ; SSSE3-NEXT: pandn %xmm5, %xmm6
2630 ; SSSE3-NEXT: por %xmm4, %xmm6
2631 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
2632 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
2633 ; SSSE3-NEXT: pand %xmm4, %xmm0
2634 ; SSSE3-NEXT: pandn %xmm5, %xmm4
2635 ; SSSE3-NEXT: por %xmm0, %xmm4
2636 ; SSSE3-NEXT: pxor %xmm5, %xmm5
2637 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
2638 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm1
2639 ; SSSE3-NEXT: pand %xmm4, %xmm1
2640 ; SSSE3-NEXT: movdqa %xmm6, %xmm4
2641 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm4
2642 ; SSSE3-NEXT: pand %xmm6, %xmm4
2643 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
2644 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm0
2645 ; SSSE3-NEXT: pand %xmm3, %xmm0
2646 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
2647 ; SSSE3-NEXT: pcmpgtd %xmm5, %xmm3
2648 ; SSSE3-NEXT: pand %xmm2, %xmm3
2649 ; SSSE3-NEXT: pslld $16, %xmm3
2650 ; SSSE3-NEXT: psrad $16, %xmm3
2651 ; SSSE3-NEXT: pslld $16, %xmm0
2652 ; SSSE3-NEXT: psrad $16, %xmm0
2653 ; SSSE3-NEXT: packssdw %xmm3, %xmm0
2654 ; SSSE3-NEXT: pslld $16, %xmm4
2655 ; SSSE3-NEXT: psrad $16, %xmm4
2656 ; SSSE3-NEXT: pslld $16, %xmm1
2657 ; SSSE3-NEXT: psrad $16, %xmm1
2658 ; SSSE3-NEXT: packssdw %xmm4, %xmm1
2659 ; SSSE3-NEXT: retq
2745 ; SSSE3-LABEL: trunc_packus_v2i64_v2i8:
2746 ; SSSE3: # %bb.0:
2747 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
2748 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2749 ; SSSE3-NEXT: pxor %xmm1, %xmm2
2750 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
2751 ; SSSE3-NEXT: pxor %xmm4, %xmm4
2752 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
2753 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483903,2147483903]
2754 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
2755 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
2756 ; SSSE3-NEXT: pand %xmm4, %xmm2
2757 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
2758 ; SSSE3-NEXT: por %xmm2, %xmm3
2759 ; SSSE3-NEXT: pand %xmm3, %xmm0
2760 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
2761 ; SSSE3-NEXT: por %xmm3, %xmm0
2762 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2763 ; SSSE3-NEXT: pxor %xmm1, %xmm2
2764 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
2765 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
2766 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
2767 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm2
2768 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
2769 ; SSSE3-NEXT: pand %xmm4, %xmm1
2770 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3]
2771 ; SSSE3-NEXT: por %xmm1, %xmm2
2772 ; SSSE3-NEXT: pand %xmm2, %xmm0
2773 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2774 ; SSSE3-NEXT: retq
2897 ; SSSE3-LABEL: trunc_packus_v2i64_v2i8_store:
2898 ; SSSE3: # %bb.0:
2899 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
2900 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2901 ; SSSE3-NEXT: pxor %xmm1, %xmm2
2902 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
2903 ; SSSE3-NEXT: pxor %xmm4, %xmm4
2904 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
2905 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483903,2147483903]
2906 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
2907 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm3[0,0,2,2]
2908 ; SSSE3-NEXT: pand %xmm4, %xmm2
2909 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
2910 ; SSSE3-NEXT: por %xmm2, %xmm3
2911 ; SSSE3-NEXT: pand %xmm3, %xmm0
2912 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
2913 ; SSSE3-NEXT: por %xmm0, %xmm3
2914 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
2915 ; SSSE3-NEXT: pxor %xmm1, %xmm0
2916 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
2917 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
2918 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[0,0,2,2]
2919 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm0
2920 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2921 ; SSSE3-NEXT: pand %xmm4, %xmm0
2922 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
2923 ; SSSE3-NEXT: por %xmm0, %xmm1
2924 ; SSSE3-NEXT: pand %xmm3, %xmm1
2925 ; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2926 ; SSSE3-NEXT: movd %xmm1, %eax
2927 ; SSSE3-NEXT: movw %ax, (%rdi)
2928 ; SSSE3-NEXT: retq
3078 ; SSSE3-LABEL: trunc_packus_v4i64_v4i8:
3079 ; SSSE3: # %bb.0:
3080 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255]
3081 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
3082 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
3083 ; SSSE3-NEXT: pxor %xmm2, %xmm3
3084 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
3085 ; SSSE3-NEXT: pxor %xmm9, %xmm9
3086 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3087 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147483903,2147483903]
3088 ; SSSE3-NEXT: movdqa %xmm4, %xmm7
3089 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm7
3090 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
3091 ; SSSE3-NEXT: pand %xmm5, %xmm6
3092 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
3093 ; SSSE3-NEXT: por %xmm6, %xmm3
3094 ; SSSE3-NEXT: pand %xmm3, %xmm1
3095 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3096 ; SSSE3-NEXT: por %xmm1, %xmm3
3097 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
3098 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3099 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
3100 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3101 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
3102 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
3103 ; SSSE3-NEXT: pand %xmm5, %xmm1
3104 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3105 ; SSSE3-NEXT: por %xmm1, %xmm4
3106 ; SSSE3-NEXT: pand %xmm4, %xmm0
3107 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3108 ; SSSE3-NEXT: por %xmm4, %xmm0
3109 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
3110 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3111 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
3112 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
3113 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
3114 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm1
3115 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3116 ; SSSE3-NEXT: pand %xmm5, %xmm1
3117 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3118 ; SSSE3-NEXT: por %xmm1, %xmm4
3119 ; SSSE3-NEXT: pand %xmm4, %xmm0
3120 ; SSSE3-NEXT: movdqa %xmm3, %xmm1
3121 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3122 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
3123 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
3124 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
3125 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm1
3126 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3127 ; SSSE3-NEXT: pand %xmm5, %xmm1
3128 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]
3129 ; SSSE3-NEXT: por %xmm1, %xmm2
3130 ; SSSE3-NEXT: pand %xmm3, %xmm2
3131 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
3132 ; SSSE3-NEXT: pshufb %xmm1, %xmm2
3133 ; SSSE3-NEXT: pshufb %xmm1, %xmm0
3134 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],…
3135 ; SSSE3-NEXT: retq
3335 ; SSSE3-LABEL: trunc_packus_v4i64_v4i8_store:
3336 ; SSSE3: # %bb.0:
3337 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255]
3338 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
3339 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
3340 ; SSSE3-NEXT: pxor %xmm2, %xmm3
3341 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
3342 ; SSSE3-NEXT: pxor %xmm9, %xmm9
3343 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3344 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147483903,2147483903]
3345 ; SSSE3-NEXT: movdqa %xmm4, %xmm7
3346 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm7
3347 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm7[0,0,2,2]
3348 ; SSSE3-NEXT: pand %xmm5, %xmm6
3349 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
3350 ; SSSE3-NEXT: por %xmm6, %xmm3
3351 ; SSSE3-NEXT: pand %xmm3, %xmm1
3352 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3353 ; SSSE3-NEXT: por %xmm1, %xmm3
3354 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
3355 ; SSSE3-NEXT: pxor %xmm2, %xmm1
3356 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
3357 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3358 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
3359 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
3360 ; SSSE3-NEXT: pand %xmm5, %xmm1
3361 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3362 ; SSSE3-NEXT: por %xmm1, %xmm4
3363 ; SSSE3-NEXT: pand %xmm4, %xmm0
3364 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3365 ; SSSE3-NEXT: por %xmm0, %xmm4
3366 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
3367 ; SSSE3-NEXT: pxor %xmm2, %xmm0
3368 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
3369 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm1
3370 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
3371 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm0
3372 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3373 ; SSSE3-NEXT: pand %xmm5, %xmm0
3374 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3375 ; SSSE3-NEXT: por %xmm0, %xmm1
3376 ; SSSE3-NEXT: pand %xmm4, %xmm1
3377 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
3378 ; SSSE3-NEXT: pxor %xmm2, %xmm0
3379 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
3380 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
3381 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
3382 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm0
3383 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3384 ; SSSE3-NEXT: pand %xmm5, %xmm0
3385 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]
3386 ; SSSE3-NEXT: por %xmm0, %xmm2
3387 ; SSSE3-NEXT: pand %xmm3, %xmm2
3388 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
3389 ; SSSE3-NEXT: pshufb %xmm0, %xmm2
3390 ; SSSE3-NEXT: pshufb %xmm0, %xmm1
3391 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],…
3392 ; SSSE3-NEXT: movd %xmm1, (%rdi)
3393 ; SSSE3-NEXT: retq
3650 ; SSSE3-LABEL: trunc_packus_v8i64_v8i8:
3651 ; SSSE3: # %bb.0:
3652 ; SSSE3-NEXT: movdqa (%rdi), %xmm5
3653 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm10
3654 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm3
3655 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm4
3656 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255]
3657 ; SSSE3-NEXT: movdqa {{.*#+}} xmm11 = [2147483648,2147483648]
3658 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
3659 ; SSSE3-NEXT: pxor %xmm11, %xmm2
3660 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm2[1,1,3,3]
3661 ; SSSE3-NEXT: pxor %xmm9, %xmm9
3662 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm7
3663 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [2147483903,2147483903]
3664 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
3665 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm6
3666 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm6[0,0,2,2]
3667 ; SSSE3-NEXT: pand %xmm7, %xmm1
3668 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
3669 ; SSSE3-NEXT: por %xmm1, %xmm2
3670 ; SSSE3-NEXT: pand %xmm2, %xmm3
3671 ; SSSE3-NEXT: pandn %xmm8, %xmm2
3672 ; SSSE3-NEXT: por %xmm3, %xmm2
3673 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
3674 ; SSSE3-NEXT: pxor %xmm11, %xmm1
3675 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
3676 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm3
3677 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
3678 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm6
3679 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm6[0,0,2,2]
3680 ; SSSE3-NEXT: pand %xmm3, %xmm1
3681 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
3682 ; SSSE3-NEXT: por %xmm1, %xmm3
3683 ; SSSE3-NEXT: pand %xmm3, %xmm4
3684 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3685 ; SSSE3-NEXT: por %xmm4, %xmm3
3686 ; SSSE3-NEXT: movdqa %xmm5, %xmm1
3687 ; SSSE3-NEXT: pxor %xmm11, %xmm1
3688 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
3689 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
3690 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
3691 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm6
3692 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm6[0,0,2,2]
3693 ; SSSE3-NEXT: pand %xmm4, %xmm1
3694 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[1,1,3,3]
3695 ; SSSE3-NEXT: por %xmm1, %xmm4
3696 ; SSSE3-NEXT: pand %xmm4, %xmm5
3697 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3698 ; SSSE3-NEXT: por %xmm5, %xmm4
3699 ; SSSE3-NEXT: movdqa %xmm10, %xmm1
3700 ; SSSE3-NEXT: pxor %xmm11, %xmm1
3701 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
3702 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
3703 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm0
3704 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[0,0,2,2]
3705 ; SSSE3-NEXT: pand %xmm5, %xmm1
3706 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3707 ; SSSE3-NEXT: por %xmm1, %xmm0
3708 ; SSSE3-NEXT: pand %xmm0, %xmm10
3709 ; SSSE3-NEXT: pandn %xmm8, %xmm0
3710 ; SSSE3-NEXT: por %xmm10, %xmm0
3711 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
3712 ; SSSE3-NEXT: pxor %xmm11, %xmm1
3713 ; SSSE3-NEXT: movdqa %xmm1, %xmm5
3714 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm5
3715 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
3716 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm1
3717 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3718 ; SSSE3-NEXT: pand %xmm6, %xmm1
3719 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
3720 ; SSSE3-NEXT: por %xmm1, %xmm5
3721 ; SSSE3-NEXT: pand %xmm0, %xmm5
3722 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
3723 ; SSSE3-NEXT: pxor %xmm11, %xmm0
3724 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
3725 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm1
3726 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm1[0,0,2,2]
3727 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
3728 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm0[1,1,3,3]
3729 ; SSSE3-NEXT: pand %xmm6, %xmm7
3730 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
3731 ; SSSE3-NEXT: por %xmm7, %xmm0
3732 ; SSSE3-NEXT: pand %xmm4, %xmm0
3733 ; SSSE3-NEXT: packuswb %xmm5, %xmm0
3734 ; SSSE3-NEXT: movdqa %xmm3, %xmm1
3735 ; SSSE3-NEXT: pxor %xmm11, %xmm1
3736 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
3737 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm4
3738 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
3739 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm1
3740 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3741 ; SSSE3-NEXT: pand %xmm5, %xmm1
3742 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
3743 ; SSSE3-NEXT: por %xmm1, %xmm4
3744 ; SSSE3-NEXT: pand %xmm3, %xmm4
3745 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
3746 ; SSSE3-NEXT: pxor %xmm11, %xmm1
3747 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
3748 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm3
3749 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[0,0,2,2]
3750 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm1
3751 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3752 ; SSSE3-NEXT: pand %xmm5, %xmm1
3753 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3754 ; SSSE3-NEXT: por %xmm1, %xmm3
3755 ; SSSE3-NEXT: pand %xmm2, %xmm3
3756 ; SSSE3-NEXT: packuswb %xmm4, %xmm3
3757 ; SSSE3-NEXT: packuswb %xmm3, %xmm0
3758 ; SSSE3-NEXT: packuswb %xmm0, %xmm0
3759 ; SSSE3-NEXT: retq
4051 ; SSSE3-LABEL: trunc_packus_v8i64_v8i8_store:
4052 ; SSSE3: # %bb.0:
4053 ; SSSE3-NEXT: movdqa (%rdi), %xmm5
4054 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm10
4055 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm2
4056 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm4
4057 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255]
4058 ; SSSE3-NEXT: movdqa {{.*#+}} xmm11 = [2147483648,2147483648]
4059 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
4060 ; SSSE3-NEXT: pxor %xmm11, %xmm1
4061 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm1[1,1,3,3]
4062 ; SSSE3-NEXT: pxor %xmm9, %xmm9
4063 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm7
4064 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483903,2147483903]
4065 ; SSSE3-NEXT: movdqa %xmm3, %xmm6
4066 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm6
4067 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
4068 ; SSSE3-NEXT: pand %xmm7, %xmm0
4069 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm6[1,1,3,3]
4070 ; SSSE3-NEXT: por %xmm0, %xmm1
4071 ; SSSE3-NEXT: pand %xmm1, %xmm2
4072 ; SSSE3-NEXT: pandn %xmm8, %xmm1
4073 ; SSSE3-NEXT: por %xmm2, %xmm1
4074 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
4075 ; SSSE3-NEXT: pxor %xmm11, %xmm0
4076 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
4077 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm2
4078 ; SSSE3-NEXT: movdqa %xmm3, %xmm6
4079 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
4080 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
4081 ; SSSE3-NEXT: pand %xmm2, %xmm0
4082 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
4083 ; SSSE3-NEXT: por %xmm0, %xmm2
4084 ; SSSE3-NEXT: pand %xmm2, %xmm4
4085 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4086 ; SSSE3-NEXT: por %xmm4, %xmm2
4087 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
4088 ; SSSE3-NEXT: pxor %xmm11, %xmm0
4089 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
4090 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm4
4091 ; SSSE3-NEXT: movdqa %xmm3, %xmm6
4092 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
4093 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
4094 ; SSSE3-NEXT: pand %xmm4, %xmm0
4095 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[1,1,3,3]
4096 ; SSSE3-NEXT: por %xmm0, %xmm4
4097 ; SSSE3-NEXT: pand %xmm4, %xmm5
4098 ; SSSE3-NEXT: pandn %xmm8, %xmm4
4099 ; SSSE3-NEXT: por %xmm5, %xmm4
4100 ; SSSE3-NEXT: movdqa %xmm10, %xmm0
4101 ; SSSE3-NEXT: pxor %xmm11, %xmm0
4102 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm0[1,1,3,3]
4103 ; SSSE3-NEXT: pcmpeqd %xmm9, %xmm5
4104 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm3
4105 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4106 ; SSSE3-NEXT: pand %xmm5, %xmm0
4107 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
4108 ; SSSE3-NEXT: por %xmm0, %xmm3
4109 ; SSSE3-NEXT: pand %xmm3, %xmm10
4110 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4111 ; SSSE3-NEXT: por %xmm10, %xmm3
4112 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
4113 ; SSSE3-NEXT: pxor %xmm11, %xmm0
4114 ; SSSE3-NEXT: movdqa %xmm0, %xmm5
4115 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm5
4116 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
4117 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
4118 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4119 ; SSSE3-NEXT: pand %xmm6, %xmm0
4120 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
4121 ; SSSE3-NEXT: por %xmm0, %xmm5
4122 ; SSSE3-NEXT: pand %xmm3, %xmm5
4123 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
4124 ; SSSE3-NEXT: pxor %xmm11, %xmm0
4125 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
4126 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm3
4127 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2]
4128 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
4129 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4130 ; SSSE3-NEXT: pand %xmm6, %xmm0
4131 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
4132 ; SSSE3-NEXT: por %xmm0, %xmm3
4133 ; SSSE3-NEXT: pand %xmm4, %xmm3
4134 ; SSSE3-NEXT: packuswb %xmm5, %xmm3
4135 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
4136 ; SSSE3-NEXT: pxor %xmm11, %xmm0
4137 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
4138 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm4
4139 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
4140 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
4141 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4142 ; SSSE3-NEXT: pand %xmm5, %xmm0
4143 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
4144 ; SSSE3-NEXT: por %xmm0, %xmm4
4145 ; SSSE3-NEXT: pand %xmm2, %xmm4
4146 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
4147 ; SSSE3-NEXT: pxor %xmm11, %xmm0
4148 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
4149 ; SSSE3-NEXT: pcmpgtd %xmm11, %xmm2
4150 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,0,2,2]
4151 ; SSSE3-NEXT: pcmpeqd %xmm11, %xmm0
4152 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4153 ; SSSE3-NEXT: pand %xmm5, %xmm0
4154 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4155 ; SSSE3-NEXT: por %xmm0, %xmm2
4156 ; SSSE3-NEXT: pand %xmm1, %xmm2
4157 ; SSSE3-NEXT: packuswb %xmm4, %xmm2
4158 ; SSSE3-NEXT: packuswb %xmm2, %xmm3
4159 ; SSSE3-NEXT: packuswb %xmm3, %xmm3
4160 ; SSSE3-NEXT: movq %xmm3, (%rsi)
4161 ; SSSE3-NEXT: retq
4559 ; SSSE3-LABEL: trunc_packus_v16i64_v16i8:
4560 ; SSSE3: # %bb.0:
4561 ; SSSE3-NEXT: movdqa (%rdi), %xmm11
4562 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm9
4563 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm15
4564 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm12
4565 ; SSSE3-NEXT: movdqa 80(%rdi), %xmm2
4566 ; SSSE3-NEXT: movdqa 64(%rdi), %xmm5
4567 ; SSSE3-NEXT: movdqa 112(%rdi), %xmm3
4568 ; SSSE3-NEXT: movdqa 96(%rdi), %xmm14
4569 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255]
4570 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
4571 ; SSSE3-NEXT: movdqa %xmm14, %xmm7
4572 ; SSSE3-NEXT: pxor %xmm1, %xmm7
4573 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
4574 ; SSSE3-NEXT: pxor %xmm10, %xmm10
4575 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm0
4576 ; SSSE3-NEXT: movdqa {{.*#+}} xmm6 = [2147483903,2147483903]
4577 ; SSSE3-NEXT: movdqa %xmm6, %xmm4
4578 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm4
4579 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[0,0,2,2]
4580 ; SSSE3-NEXT: pand %xmm0, %xmm7
4581 ; SSSE3-NEXT: pshufd {{.*#+}} xmm13 = xmm4[1,1,3,3]
4582 ; SSSE3-NEXT: por %xmm7, %xmm13
4583 ; SSSE3-NEXT: pand %xmm13, %xmm14
4584 ; SSSE3-NEXT: pandn %xmm8, %xmm13
4585 ; SSSE3-NEXT: por %xmm14, %xmm13
4586 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
4587 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4588 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
4589 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm4
4590 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
4591 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm7
4592 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
4593 ; SSSE3-NEXT: pand %xmm4, %xmm0
4594 ; SSSE3-NEXT: pshufd {{.*#+}} xmm14 = xmm7[1,1,3,3]
4595 ; SSSE3-NEXT: por %xmm0, %xmm14
4596 ; SSSE3-NEXT: pand %xmm14, %xmm3
4597 ; SSSE3-NEXT: pandn %xmm8, %xmm14
4598 ; SSSE3-NEXT: por %xmm3, %xmm14
4599 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
4600 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4601 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
4602 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
4603 ; SSSE3-NEXT: movdqa %xmm6, %xmm4
4604 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
4605 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
4606 ; SSSE3-NEXT: pand %xmm3, %xmm0
4607 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
4608 ; SSSE3-NEXT: por %xmm0, %xmm4
4609 ; SSSE3-NEXT: pand %xmm4, %xmm5
4610 ; SSSE3-NEXT: pandn %xmm8, %xmm4
4611 ; SSSE3-NEXT: por %xmm5, %xmm4
4612 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
4613 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4614 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
4615 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
4616 ; SSSE3-NEXT: movdqa %xmm6, %xmm5
4617 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm5
4618 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
4619 ; SSSE3-NEXT: pand %xmm3, %xmm0
4620 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
4621 ; SSSE3-NEXT: por %xmm0, %xmm5
4622 ; SSSE3-NEXT: pand %xmm5, %xmm2
4623 ; SSSE3-NEXT: pandn %xmm8, %xmm5
4624 ; SSSE3-NEXT: por %xmm2, %xmm5
4625 ; SSSE3-NEXT: movdqa %xmm15, %xmm0
4626 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4627 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
4628 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
4629 ; SSSE3-NEXT: movdqa %xmm6, %xmm3
4630 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm3
4631 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4632 ; SSSE3-NEXT: pand %xmm2, %xmm0
4633 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm3[1,1,3,3]
4634 ; SSSE3-NEXT: por %xmm0, %xmm7
4635 ; SSSE3-NEXT: pand %xmm7, %xmm15
4636 ; SSSE3-NEXT: pandn %xmm8, %xmm7
4637 ; SSSE3-NEXT: por %xmm15, %xmm7
4638 ; SSSE3-NEXT: movdqa %xmm12, %xmm0
4639 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4640 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
4641 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
4642 ; SSSE3-NEXT: movdqa %xmm6, %xmm3
4643 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm3
4644 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4645 ; SSSE3-NEXT: pand %xmm2, %xmm0
4646 ; SSSE3-NEXT: pshufd {{.*#+}} xmm15 = xmm3[1,1,3,3]
4647 ; SSSE3-NEXT: por %xmm0, %xmm15
4648 ; SSSE3-NEXT: pand %xmm15, %xmm12
4649 ; SSSE3-NEXT: pandn %xmm8, %xmm15
4650 ; SSSE3-NEXT: por %xmm12, %xmm15
4651 ; SSSE3-NEXT: movdqa %xmm11, %xmm0
4652 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4653 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
4654 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
4655 ; SSSE3-NEXT: movdqa %xmm6, %xmm2
4656 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4657 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,0,2,2]
4658 ; SSSE3-NEXT: pand %xmm3, %xmm0
4659 ; SSSE3-NEXT: pshufd {{.*#+}} xmm12 = xmm2[1,1,3,3]
4660 ; SSSE3-NEXT: por %xmm0, %xmm12
4661 ; SSSE3-NEXT: pand %xmm12, %xmm11
4662 ; SSSE3-NEXT: pandn %xmm8, %xmm12
4663 ; SSSE3-NEXT: por %xmm11, %xmm12
4664 ; SSSE3-NEXT: movdqa %xmm9, %xmm0
4665 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4666 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
4667 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
4668 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
4669 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
4670 ; SSSE3-NEXT: pand %xmm2, %xmm0
4671 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
4672 ; SSSE3-NEXT: por %xmm0, %xmm2
4673 ; SSSE3-NEXT: pand %xmm2, %xmm9
4674 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4675 ; SSSE3-NEXT: por %xmm9, %xmm2
4676 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
4677 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4678 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
4679 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm6
4680 ; SSSE3-NEXT: pshufd {{.*#+}} xmm8 = xmm6[0,0,2,2]
4681 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm0
4682 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
4683 ; SSSE3-NEXT: pand %xmm8, %xmm0
4684 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
4685 ; SSSE3-NEXT: por %xmm0, %xmm6
4686 ; SSSE3-NEXT: pand %xmm2, %xmm6
4687 ; SSSE3-NEXT: movdqa %xmm12, %xmm0
4688 ; SSSE3-NEXT: pxor %xmm1, %xmm0
4689 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
4690 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
4691 ; SSSE3-NEXT: pshufd {{.*#+}} xmm8 = xmm2[0,0,2,2]
4692 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm0
4693 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
4694 ; SSSE3-NEXT: pand %xmm8, %xmm3
4695 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
4696 ; SSSE3-NEXT: por %xmm3, %xmm0
4697 ; SSSE3-NEXT: pand %xmm12, %xmm0
4698 ; SSSE3-NEXT: packuswb %xmm6, %xmm0
4699 ; SSSE3-NEXT: movdqa %xmm15, %xmm2
4700 ; SSSE3-NEXT: pxor %xmm1, %xmm2
4701 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
4702 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
4703 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2]
4704 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm2
4705 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4706 ; SSSE3-NEXT: pand %xmm6, %xmm2
4707 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
4708 ; SSSE3-NEXT: por %xmm2, %xmm3
4709 ; SSSE3-NEXT: pand %xmm15, %xmm3
4710 ; SSSE3-NEXT: movdqa %xmm7, %xmm2
4711 ; SSSE3-NEXT: pxor %xmm1, %xmm2
4712 ; SSSE3-NEXT: movdqa %xmm2, %xmm6
4713 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm6
4714 ; SSSE3-NEXT: pshufd {{.*#+}} xmm8 = xmm6[0,0,2,2]
4715 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm2
4716 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4717 ; SSSE3-NEXT: pand %xmm8, %xmm2
4718 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
4719 ; SSSE3-NEXT: por %xmm2, %xmm6
4720 ; SSSE3-NEXT: pand %xmm7, %xmm6
4721 ; SSSE3-NEXT: packuswb %xmm3, %xmm6
4722 ; SSSE3-NEXT: packuswb %xmm6, %xmm0
4723 ; SSSE3-NEXT: movdqa %xmm5, %xmm2
4724 ; SSSE3-NEXT: pxor %xmm1, %xmm2
4725 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
4726 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
4727 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm3[0,0,2,2]
4728 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm2
4729 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
4730 ; SSSE3-NEXT: pand %xmm6, %xmm2
4731 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
4732 ; SSSE3-NEXT: por %xmm2, %xmm3
4733 ; SSSE3-NEXT: pand %xmm5, %xmm3
4734 ; SSSE3-NEXT: movdqa %xmm4, %xmm2
4735 ; SSSE3-NEXT: pxor %xmm1, %xmm2
4736 ; SSSE3-NEXT: movdqa %xmm2, %xmm5
4737 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm5
4738 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
4739 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm2
4740 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm2[1,1,3,3]
4741 ; SSSE3-NEXT: pand %xmm6, %xmm7
4742 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm5[1,1,3,3]
4743 ; SSSE3-NEXT: por %xmm7, %xmm2
4744 ; SSSE3-NEXT: pand %xmm4, %xmm2
4745 ; SSSE3-NEXT: packuswb %xmm3, %xmm2
4746 ; SSSE3-NEXT: movdqa %xmm14, %xmm3
4747 ; SSSE3-NEXT: pxor %xmm1, %xmm3
4748 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
4749 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
4750 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
4751 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm3
4752 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
4753 ; SSSE3-NEXT: pand %xmm5, %xmm3
4754 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,1,3,3]
4755 ; SSSE3-NEXT: por %xmm3, %xmm4
4756 ; SSSE3-NEXT: pand %xmm14, %xmm4
4757 ; SSSE3-NEXT: movdqa %xmm13, %xmm3
4758 ; SSSE3-NEXT: pxor %xmm1, %xmm3
4759 ; SSSE3-NEXT: movdqa %xmm3, %xmm5
4760 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm5
4761 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
4762 ; SSSE3-NEXT: pcmpeqd %xmm1, %xmm3
4763 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3]
4764 ; SSSE3-NEXT: pand %xmm6, %xmm1
4765 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
4766 ; SSSE3-NEXT: por %xmm1, %xmm3
4767 ; SSSE3-NEXT: pand %xmm13, %xmm3
4768 ; SSSE3-NEXT: packuswb %xmm4, %xmm3
4769 ; SSSE3-NEXT: packuswb %xmm3, %xmm2
4770 ; SSSE3-NEXT: packuswb %xmm2, %xmm0
4771 ; SSSE3-NEXT: retq
5104 ; SSSE3-LABEL: trunc_packus_v4i32_v4i8:
5105 ; SSSE3: # %bb.0:
5106 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,255]
5107 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
5108 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
5109 ; SSSE3-NEXT: pand %xmm2, %xmm0
5110 ; SSSE3-NEXT: pandn %xmm1, %xmm2
5111 ; SSSE3-NEXT: por %xmm2, %xmm0
5112 ; SSSE3-NEXT: pxor %xmm1, %xmm1
5113 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
5114 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
5115 ; SSSE3-NEXT: pand %xmm2, %xmm0
5116 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
5117 ; SSSE3-NEXT: retq
5210 ; SSSE3-LABEL: trunc_packus_v4i32_v4i8_store:
5211 ; SSSE3: # %bb.0:
5212 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,255]
5213 ; SSSE3-NEXT: movdqa %xmm1, %xmm2
5214 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
5215 ; SSSE3-NEXT: pand %xmm2, %xmm0
5216 ; SSSE3-NEXT: pandn %xmm1, %xmm2
5217 ; SSSE3-NEXT: por %xmm0, %xmm2
5218 ; SSSE3-NEXT: pxor %xmm0, %xmm0
5219 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
5220 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm1
5221 ; SSSE3-NEXT: pand %xmm2, %xmm1
5222 ; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
5223 ; SSSE3-NEXT: movd %xmm1, (%rdi)
5224 ; SSSE3-NEXT: retq