• Home
  • Raw
  • Download

Lines Matching refs:SSE41

4 …triple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE --check-prefix=SSE41
81 ; SSE41-LABEL: trunc_packus_v2i64_v2i32:
82 ; SSE41: # %bb.0:
83 ; SSE41-NEXT: movdqa %xmm0, %xmm1
84 ; SSE41-NEXT: movapd {{.*#+}} xmm2 = [4294967295,4294967295]
85 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
86 ; SSE41-NEXT: pxor %xmm3, %xmm0
87 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [2147483647,2147483647]
88 ; SSE41-NEXT: movdqa %xmm4, %xmm5
89 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
90 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
91 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
92 ; SSE41-NEXT: pand %xmm5, %xmm0
93 ; SSE41-NEXT: por %xmm4, %xmm0
94 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm2
95 ; SSE41-NEXT: xorpd %xmm1, %xmm1
96 ; SSE41-NEXT: movapd %xmm2, %xmm4
97 ; SSE41-NEXT: xorpd %xmm3, %xmm4
98 ; SSE41-NEXT: movapd %xmm4, %xmm5
99 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm5
100 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
101 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
102 ; SSE41-NEXT: pand %xmm5, %xmm0
103 ; SSE41-NEXT: por %xmm4, %xmm0
104 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
105 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
106 ; SSE41-NEXT: retq
232 ; SSE41-LABEL: trunc_packus_v2i64_v2i32_store:
233 ; SSE41: # %bb.0:
234 ; SSE41-NEXT: movdqa %xmm0, %xmm1
235 ; SSE41-NEXT: movapd {{.*#+}} xmm2 = [4294967295,4294967295]
236 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
237 ; SSE41-NEXT: pxor %xmm3, %xmm0
238 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [2147483647,2147483647]
239 ; SSE41-NEXT: movdqa %xmm4, %xmm5
240 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
241 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
242 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
243 ; SSE41-NEXT: pand %xmm5, %xmm0
244 ; SSE41-NEXT: por %xmm4, %xmm0
245 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm2
246 ; SSE41-NEXT: xorpd %xmm1, %xmm1
247 ; SSE41-NEXT: movapd %xmm2, %xmm4
248 ; SSE41-NEXT: xorpd %xmm3, %xmm4
249 ; SSE41-NEXT: movapd %xmm4, %xmm5
250 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm5
251 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
252 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
253 ; SSE41-NEXT: pand %xmm5, %xmm0
254 ; SSE41-NEXT: por %xmm4, %xmm0
255 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
256 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
257 ; SSE41-NEXT: movq %xmm0, (%rdi)
258 ; SSE41-NEXT: retq
434 ; SSE41-LABEL: trunc_packus_v4i64_v4i32:
435 ; SSE41: # %bb.0:
436 ; SSE41-NEXT: movdqa %xmm0, %xmm2
437 ; SSE41-NEXT: movapd {{.*#+}} xmm4 = [4294967295,4294967295]
438 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
439 ; SSE41-NEXT: pxor %xmm3, %xmm0
440 ; SSE41-NEXT: movdqa {{.*#+}} xmm6 = [2147483647,2147483647]
441 ; SSE41-NEXT: movdqa %xmm6, %xmm5
442 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
443 ; SSE41-NEXT: movdqa %xmm6, %xmm7
444 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm7
445 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
446 ; SSE41-NEXT: pand %xmm5, %xmm0
447 ; SSE41-NEXT: por %xmm7, %xmm0
448 ; SSE41-NEXT: movapd %xmm4, %xmm5
449 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm5
450 ; SSE41-NEXT: movdqa %xmm1, %xmm0
451 ; SSE41-NEXT: pxor %xmm3, %xmm0
452 ; SSE41-NEXT: movdqa %xmm6, %xmm2
453 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm2
454 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
455 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
456 ; SSE41-NEXT: pand %xmm2, %xmm0
457 ; SSE41-NEXT: por %xmm6, %xmm0
458 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm4
459 ; SSE41-NEXT: xorpd %xmm1, %xmm1
460 ; SSE41-NEXT: movapd %xmm4, %xmm2
461 ; SSE41-NEXT: xorpd %xmm3, %xmm2
462 ; SSE41-NEXT: movapd %xmm2, %xmm6
463 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
464 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm2
465 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,0,2,2]
466 ; SSE41-NEXT: pand %xmm6, %xmm0
467 ; SSE41-NEXT: por %xmm2, %xmm0
468 ; SSE41-NEXT: pxor %xmm2, %xmm2
469 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm2
470 ; SSE41-NEXT: movapd %xmm5, %xmm4
471 ; SSE41-NEXT: xorpd %xmm3, %xmm4
472 ; SSE41-NEXT: movapd %xmm4, %xmm6
473 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
474 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
475 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
476 ; SSE41-NEXT: pand %xmm6, %xmm0
477 ; SSE41-NEXT: por %xmm4, %xmm0
478 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm1
479 ; SSE41-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm2[0,2]
480 ; SSE41-NEXT: movaps %xmm1, %xmm0
481 ; SSE41-NEXT: retq
798 ; SSE41-LABEL: trunc_packus_v8i64_v8i32:
799 ; SSE41: # %bb.0:
800 ; SSE41-NEXT: movdqa (%rdi), %xmm5
801 ; SSE41-NEXT: movdqa 16(%rdi), %xmm4
802 ; SSE41-NEXT: movdqa 32(%rdi), %xmm10
803 ; SSE41-NEXT: movdqa 48(%rdi), %xmm9
804 ; SSE41-NEXT: movapd {{.*#+}} xmm1 = [4294967295,4294967295]
805 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
806 ; SSE41-NEXT: movdqa %xmm5, %xmm0
807 ; SSE41-NEXT: pxor %xmm3, %xmm0
808 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [2147483647,2147483647]
809 ; SSE41-NEXT: movdqa %xmm2, %xmm7
810 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm7
811 ; SSE41-NEXT: movdqa %xmm2, %xmm6
812 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
813 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
814 ; SSE41-NEXT: pand %xmm7, %xmm0
815 ; SSE41-NEXT: por %xmm6, %xmm0
816 ; SSE41-NEXT: movapd %xmm1, %xmm8
817 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm8
818 ; SSE41-NEXT: movdqa %xmm4, %xmm0
819 ; SSE41-NEXT: pxor %xmm3, %xmm0
820 ; SSE41-NEXT: movdqa %xmm2, %xmm5
821 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
822 ; SSE41-NEXT: movdqa %xmm2, %xmm6
823 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
824 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
825 ; SSE41-NEXT: pand %xmm5, %xmm0
826 ; SSE41-NEXT: por %xmm6, %xmm0
827 ; SSE41-NEXT: movapd %xmm1, %xmm5
828 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm5
829 ; SSE41-NEXT: movdqa %xmm10, %xmm0
830 ; SSE41-NEXT: pxor %xmm3, %xmm0
831 ; SSE41-NEXT: movdqa %xmm2, %xmm4
832 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm4
833 ; SSE41-NEXT: movdqa %xmm2, %xmm6
834 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
835 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
836 ; SSE41-NEXT: pand %xmm4, %xmm0
837 ; SSE41-NEXT: por %xmm6, %xmm0
838 ; SSE41-NEXT: movapd %xmm1, %xmm4
839 ; SSE41-NEXT: blendvpd %xmm0, %xmm10, %xmm4
840 ; SSE41-NEXT: movdqa %xmm9, %xmm0
841 ; SSE41-NEXT: pxor %xmm3, %xmm0
842 ; SSE41-NEXT: movdqa %xmm2, %xmm6
843 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm6
844 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm2
845 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,0,2,2]
846 ; SSE41-NEXT: pand %xmm6, %xmm0
847 ; SSE41-NEXT: por %xmm2, %xmm0
848 ; SSE41-NEXT: blendvpd %xmm0, %xmm9, %xmm1
849 ; SSE41-NEXT: pxor %xmm2, %xmm2
850 ; SSE41-NEXT: movapd %xmm1, %xmm6
851 ; SSE41-NEXT: xorpd %xmm3, %xmm6
852 ; SSE41-NEXT: movapd %xmm6, %xmm7
853 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm7
854 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm6
855 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
856 ; SSE41-NEXT: pand %xmm7, %xmm0
857 ; SSE41-NEXT: por %xmm6, %xmm0
858 ; SSE41-NEXT: pxor %xmm6, %xmm6
859 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm6
860 ; SSE41-NEXT: movapd %xmm4, %xmm1
861 ; SSE41-NEXT: xorpd %xmm3, %xmm1
862 ; SSE41-NEXT: movapd %xmm1, %xmm7
863 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm7
864 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm1
865 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
866 ; SSE41-NEXT: pand %xmm7, %xmm0
867 ; SSE41-NEXT: por %xmm1, %xmm0
868 ; SSE41-NEXT: pxor %xmm1, %xmm1
869 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm1
870 ; SSE41-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm6[0,2]
871 ; SSE41-NEXT: movapd %xmm5, %xmm4
872 ; SSE41-NEXT: xorpd %xmm3, %xmm4
873 ; SSE41-NEXT: movapd %xmm4, %xmm6
874 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
875 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
876 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
877 ; SSE41-NEXT: pand %xmm6, %xmm0
878 ; SSE41-NEXT: por %xmm4, %xmm0
879 ; SSE41-NEXT: pxor %xmm4, %xmm4
880 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm4
881 ; SSE41-NEXT: movapd %xmm8, %xmm5
882 ; SSE41-NEXT: xorpd %xmm3, %xmm5
883 ; SSE41-NEXT: movapd %xmm5, %xmm6
884 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
885 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm5
886 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
887 ; SSE41-NEXT: pand %xmm6, %xmm0
888 ; SSE41-NEXT: por %xmm5, %xmm0
889 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2
890 ; SSE41-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,2],xmm4[0,2]
891 ; SSE41-NEXT: movaps %xmm2, %xmm0
892 ; SSE41-NEXT: retq
1056 ; SSE41-LABEL: trunc_packus_v2i64_v2i16:
1057 ; SSE41: # %bb.0:
1058 ; SSE41-NEXT: movdqa %xmm0, %xmm1
1059 ; SSE41-NEXT: movapd {{.*#+}} xmm2 = [65535,65535]
1060 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
1061 ; SSE41-NEXT: pxor %xmm3, %xmm0
1062 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [2147549183,2147549183]
1063 ; SSE41-NEXT: movdqa %xmm4, %xmm5
1064 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
1065 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
1066 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
1067 ; SSE41-NEXT: pand %xmm5, %xmm0
1068 ; SSE41-NEXT: por %xmm4, %xmm0
1069 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1070 ; SSE41-NEXT: xorpd %xmm1, %xmm1
1071 ; SSE41-NEXT: movapd %xmm2, %xmm4
1072 ; SSE41-NEXT: xorpd %xmm3, %xmm4
1073 ; SSE41-NEXT: movapd %xmm4, %xmm5
1074 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm5
1075 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
1076 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
1077 ; SSE41-NEXT: pand %xmm5, %xmm0
1078 ; SSE41-NEXT: por %xmm4, %xmm0
1079 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1080 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
1081 ; SSE41-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1082 ; SSE41-NEXT: retq
1232 ; SSE41-LABEL: trunc_packus_v2i64_v2i16_store:
1233 ; SSE41: # %bb.0:
1234 ; SSE41-NEXT: movdqa %xmm0, %xmm1
1235 ; SSE41-NEXT: movapd {{.*#+}} xmm2 = [65535,65535]
1236 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
1237 ; SSE41-NEXT: pxor %xmm3, %xmm0
1238 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [2147549183,2147549183]
1239 ; SSE41-NEXT: movdqa %xmm4, %xmm5
1240 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
1241 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
1242 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
1243 ; SSE41-NEXT: pand %xmm5, %xmm0
1244 ; SSE41-NEXT: por %xmm4, %xmm0
1245 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1246 ; SSE41-NEXT: xorpd %xmm1, %xmm1
1247 ; SSE41-NEXT: movapd %xmm2, %xmm4
1248 ; SSE41-NEXT: xorpd %xmm3, %xmm4
1249 ; SSE41-NEXT: movapd %xmm4, %xmm5
1250 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm5
1251 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
1252 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
1253 ; SSE41-NEXT: pand %xmm5, %xmm0
1254 ; SSE41-NEXT: por %xmm4, %xmm0
1255 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1256 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3]
1257 ; SSE41-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1258 ; SSE41-NEXT: movd %xmm0, (%rdi)
1259 ; SSE41-NEXT: retq
1469 ; SSE41-LABEL: trunc_packus_v4i64_v4i16:
1470 ; SSE41: # %bb.0:
1471 ; SSE41-NEXT: movdqa %xmm0, %xmm2
1472 ; SSE41-NEXT: movapd {{.*#+}} xmm4 = [65535,65535]
1473 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
1474 ; SSE41-NEXT: pxor %xmm3, %xmm0
1475 ; SSE41-NEXT: movdqa {{.*#+}} xmm6 = [2147549183,2147549183]
1476 ; SSE41-NEXT: movdqa %xmm6, %xmm5
1477 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
1478 ; SSE41-NEXT: movdqa %xmm6, %xmm7
1479 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm7
1480 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
1481 ; SSE41-NEXT: pand %xmm5, %xmm0
1482 ; SSE41-NEXT: por %xmm7, %xmm0
1483 ; SSE41-NEXT: movapd %xmm4, %xmm5
1484 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm5
1485 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1486 ; SSE41-NEXT: pxor %xmm3, %xmm0
1487 ; SSE41-NEXT: movdqa %xmm6, %xmm2
1488 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm2
1489 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
1490 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
1491 ; SSE41-NEXT: pand %xmm2, %xmm0
1492 ; SSE41-NEXT: por %xmm6, %xmm0
1493 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm4
1494 ; SSE41-NEXT: xorpd %xmm1, %xmm1
1495 ; SSE41-NEXT: movapd %xmm4, %xmm2
1496 ; SSE41-NEXT: xorpd %xmm3, %xmm2
1497 ; SSE41-NEXT: movapd %xmm2, %xmm6
1498 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
1499 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm2
1500 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,0,2,2]
1501 ; SSE41-NEXT: pand %xmm6, %xmm0
1502 ; SSE41-NEXT: por %xmm2, %xmm0
1503 ; SSE41-NEXT: pxor %xmm2, %xmm2
1504 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm2
1505 ; SSE41-NEXT: movapd %xmm5, %xmm4
1506 ; SSE41-NEXT: xorpd %xmm3, %xmm4
1507 ; SSE41-NEXT: movapd %xmm4, %xmm6
1508 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
1509 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
1510 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
1511 ; SSE41-NEXT: pand %xmm6, %xmm0
1512 ; SSE41-NEXT: por %xmm4, %xmm0
1513 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm1
1514 ; SSE41-NEXT: packusdw %xmm2, %xmm1
1515 ; SSE41-NEXT: packusdw %xmm1, %xmm1
1516 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1517 ; SSE41-NEXT: retq
1723 ; SSE41-LABEL: trunc_packus_v4i64_v4i16_store:
1724 ; SSE41: # %bb.0:
1725 ; SSE41-NEXT: movdqa %xmm0, %xmm2
1726 ; SSE41-NEXT: movapd {{.*#+}} xmm4 = [65535,65535]
1727 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
1728 ; SSE41-NEXT: pxor %xmm3, %xmm0
1729 ; SSE41-NEXT: movdqa {{.*#+}} xmm6 = [2147549183,2147549183]
1730 ; SSE41-NEXT: movdqa %xmm6, %xmm5
1731 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
1732 ; SSE41-NEXT: movdqa %xmm6, %xmm7
1733 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm7
1734 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
1735 ; SSE41-NEXT: pand %xmm5, %xmm0
1736 ; SSE41-NEXT: por %xmm7, %xmm0
1737 ; SSE41-NEXT: movapd %xmm4, %xmm5
1738 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm5
1739 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1740 ; SSE41-NEXT: pxor %xmm3, %xmm0
1741 ; SSE41-NEXT: movdqa %xmm6, %xmm2
1742 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm2
1743 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
1744 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
1745 ; SSE41-NEXT: pand %xmm2, %xmm0
1746 ; SSE41-NEXT: por %xmm6, %xmm0
1747 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm4
1748 ; SSE41-NEXT: xorpd %xmm1, %xmm1
1749 ; SSE41-NEXT: movapd %xmm4, %xmm2
1750 ; SSE41-NEXT: xorpd %xmm3, %xmm2
1751 ; SSE41-NEXT: movapd %xmm2, %xmm6
1752 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
1753 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm2
1754 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,0,2,2]
1755 ; SSE41-NEXT: pand %xmm6, %xmm0
1756 ; SSE41-NEXT: por %xmm2, %xmm0
1757 ; SSE41-NEXT: pxor %xmm2, %xmm2
1758 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm2
1759 ; SSE41-NEXT: movapd %xmm5, %xmm4
1760 ; SSE41-NEXT: xorpd %xmm3, %xmm4
1761 ; SSE41-NEXT: movapd %xmm4, %xmm6
1762 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
1763 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
1764 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
1765 ; SSE41-NEXT: pand %xmm6, %xmm0
1766 ; SSE41-NEXT: por %xmm4, %xmm0
1767 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm1
1768 ; SSE41-NEXT: packusdw %xmm2, %xmm1
1769 ; SSE41-NEXT: packusdw %xmm1, %xmm1
1770 ; SSE41-NEXT: movq %xmm1, (%rdi)
1771 ; SSE41-NEXT: retq
2096 ; SSE41-LABEL: trunc_packus_v8i64_v8i16:
2097 ; SSE41: # %bb.0:
2098 ; SSE41-NEXT: movdqa (%rdi), %xmm10
2099 ; SSE41-NEXT: movdqa 16(%rdi), %xmm9
2100 ; SSE41-NEXT: movdqa 32(%rdi), %xmm3
2101 ; SSE41-NEXT: movdqa 48(%rdi), %xmm5
2102 ; SSE41-NEXT: movapd {{.*#+}} xmm1 = [65535,65535]
2103 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
2104 ; SSE41-NEXT: movdqa %xmm3, %xmm0
2105 ; SSE41-NEXT: pxor %xmm2, %xmm0
2106 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [2147549183,2147549183]
2107 ; SSE41-NEXT: movdqa %xmm4, %xmm7
2108 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm7
2109 ; SSE41-NEXT: movdqa %xmm4, %xmm6
2110 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
2111 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
2112 ; SSE41-NEXT: pand %xmm7, %xmm0
2113 ; SSE41-NEXT: por %xmm6, %xmm0
2114 ; SSE41-NEXT: movapd %xmm1, %xmm8
2115 ; SSE41-NEXT: blendvpd %xmm0, %xmm3, %xmm8
2116 ; SSE41-NEXT: movdqa %xmm5, %xmm0
2117 ; SSE41-NEXT: pxor %xmm2, %xmm0
2118 ; SSE41-NEXT: movdqa %xmm4, %xmm3
2119 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
2120 ; SSE41-NEXT: movdqa %xmm4, %xmm6
2121 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
2122 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
2123 ; SSE41-NEXT: pand %xmm3, %xmm0
2124 ; SSE41-NEXT: por %xmm6, %xmm0
2125 ; SSE41-NEXT: movapd %xmm1, %xmm6
2126 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm6
2127 ; SSE41-NEXT: movdqa %xmm10, %xmm0
2128 ; SSE41-NEXT: pxor %xmm2, %xmm0
2129 ; SSE41-NEXT: movdqa %xmm4, %xmm3
2130 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
2131 ; SSE41-NEXT: movdqa %xmm4, %xmm5
2132 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm5
2133 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
2134 ; SSE41-NEXT: pand %xmm3, %xmm0
2135 ; SSE41-NEXT: por %xmm5, %xmm0
2136 ; SSE41-NEXT: movapd %xmm1, %xmm3
2137 ; SSE41-NEXT: blendvpd %xmm0, %xmm10, %xmm3
2138 ; SSE41-NEXT: movdqa %xmm9, %xmm0
2139 ; SSE41-NEXT: pxor %xmm2, %xmm0
2140 ; SSE41-NEXT: movdqa %xmm4, %xmm5
2141 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
2142 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
2143 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
2144 ; SSE41-NEXT: pand %xmm5, %xmm0
2145 ; SSE41-NEXT: por %xmm4, %xmm0
2146 ; SSE41-NEXT: blendvpd %xmm0, %xmm9, %xmm1
2147 ; SSE41-NEXT: pxor %xmm5, %xmm5
2148 ; SSE41-NEXT: movapd %xmm1, %xmm4
2149 ; SSE41-NEXT: xorpd %xmm2, %xmm4
2150 ; SSE41-NEXT: movapd %xmm4, %xmm7
2151 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm7
2152 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm4
2153 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
2154 ; SSE41-NEXT: pand %xmm7, %xmm0
2155 ; SSE41-NEXT: por %xmm4, %xmm0
2156 ; SSE41-NEXT: pxor %xmm4, %xmm4
2157 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm4
2158 ; SSE41-NEXT: movapd %xmm3, %xmm1
2159 ; SSE41-NEXT: xorpd %xmm2, %xmm1
2160 ; SSE41-NEXT: movapd %xmm1, %xmm7
2161 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm7
2162 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm1
2163 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
2164 ; SSE41-NEXT: pand %xmm7, %xmm0
2165 ; SSE41-NEXT: por %xmm1, %xmm0
2166 ; SSE41-NEXT: pxor %xmm1, %xmm1
2167 ; SSE41-NEXT: blendvpd %xmm0, %xmm3, %xmm1
2168 ; SSE41-NEXT: packusdw %xmm4, %xmm1
2169 ; SSE41-NEXT: movapd %xmm6, %xmm3
2170 ; SSE41-NEXT: xorpd %xmm2, %xmm3
2171 ; SSE41-NEXT: movapd %xmm3, %xmm4
2172 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm4
2173 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm3
2174 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
2175 ; SSE41-NEXT: pand %xmm4, %xmm0
2176 ; SSE41-NEXT: por %xmm3, %xmm0
2177 ; SSE41-NEXT: pxor %xmm3, %xmm3
2178 ; SSE41-NEXT: blendvpd %xmm0, %xmm6, %xmm3
2179 ; SSE41-NEXT: movapd %xmm8, %xmm4
2180 ; SSE41-NEXT: xorpd %xmm2, %xmm4
2181 ; SSE41-NEXT: movapd %xmm4, %xmm6
2182 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm6
2183 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm4
2184 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
2185 ; SSE41-NEXT: pand %xmm6, %xmm0
2186 ; SSE41-NEXT: por %xmm4, %xmm0
2187 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm5
2188 ; SSE41-NEXT: packusdw %xmm3, %xmm5
2189 ; SSE41-NEXT: packusdw %xmm5, %xmm1
2190 ; SSE41-NEXT: movdqa %xmm1, %xmm0
2191 ; SSE41-NEXT: retq
2303 ; SSE41-LABEL: trunc_packus_v4i32_v4i16:
2304 ; SSE41: # %bb.0:
2305 ; SSE41-NEXT: packusdw %xmm0, %xmm0
2306 ; SSE41-NEXT: retq
2365 ; SSE41-LABEL: trunc_packus_v4i32_v4i16_store:
2366 ; SSE41: # %bb.0:
2367 ; SSE41-NEXT: packusdw %xmm0, %xmm0
2368 ; SSE41-NEXT: movq %xmm0, (%rdi)
2369 ; SSE41-NEXT: retq
2472 ; SSE41-LABEL: trunc_packus_v8i32_v8i16:
2473 ; SSE41: # %bb.0:
2474 ; SSE41-NEXT: packusdw %xmm1, %xmm0
2475 ; SSE41-NEXT: retq
2641 ; SSE41-LABEL: trunc_packus_v16i32_v16i16:
2642 ; SSE41: # %bb.0:
2643 ; SSE41-NEXT: movdqa (%rdi), %xmm0
2644 ; SSE41-NEXT: movdqa 32(%rdi), %xmm1
2645 ; SSE41-NEXT: packusdw 16(%rdi), %xmm0
2646 ; SSE41-NEXT: packusdw 48(%rdi), %xmm1
2647 ; SSE41-NEXT: retq
2757 ; SSE41-LABEL: trunc_packus_v2i64_v2i8:
2758 ; SSE41: # %bb.0:
2759 ; SSE41-NEXT: movdqa %xmm0, %xmm1
2760 ; SSE41-NEXT: movapd {{.*#+}} xmm2 = [255,255]
2761 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
2762 ; SSE41-NEXT: pxor %xmm3, %xmm0
2763 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [2147483903,2147483903]
2764 ; SSE41-NEXT: movdqa %xmm4, %xmm5
2765 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
2766 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
2767 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
2768 ; SSE41-NEXT: pand %xmm5, %xmm0
2769 ; SSE41-NEXT: por %xmm4, %xmm0
2770 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm2
2771 ; SSE41-NEXT: xorpd %xmm1, %xmm1
2772 ; SSE41-NEXT: movapd %xmm2, %xmm4
2773 ; SSE41-NEXT: xorpd %xmm3, %xmm4
2774 ; SSE41-NEXT: movapd %xmm4, %xmm5
2775 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm5
2776 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
2777 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
2778 ; SSE41-NEXT: pand %xmm5, %xmm0
2779 ; SSE41-NEXT: por %xmm4, %xmm0
2780 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
2781 ; SSE41-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2782 ; SSE41-NEXT: movdqa %xmm1, %xmm0
2783 ; SSE41-NEXT: retq
2912 ; SSE41-LABEL: trunc_packus_v2i64_v2i8_store:
2913 ; SSE41: # %bb.0:
2914 ; SSE41-NEXT: movdqa %xmm0, %xmm1
2915 ; SSE41-NEXT: movapd {{.*#+}} xmm2 = [255,255]
2916 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
2917 ; SSE41-NEXT: pxor %xmm3, %xmm0
2918 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [2147483903,2147483903]
2919 ; SSE41-NEXT: movdqa %xmm4, %xmm5
2920 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
2921 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
2922 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
2923 ; SSE41-NEXT: pand %xmm5, %xmm0
2924 ; SSE41-NEXT: por %xmm4, %xmm0
2925 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm2
2926 ; SSE41-NEXT: xorpd %xmm1, %xmm1
2927 ; SSE41-NEXT: movapd %xmm2, %xmm4
2928 ; SSE41-NEXT: xorpd %xmm3, %xmm4
2929 ; SSE41-NEXT: movapd %xmm4, %xmm5
2930 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm5
2931 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
2932 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
2933 ; SSE41-NEXT: pand %xmm5, %xmm0
2934 ; SSE41-NEXT: por %xmm4, %xmm0
2935 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
2936 ; SSE41-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2937 ; SSE41-NEXT: pextrw $0, %xmm1, (%rdi)
2938 ; SSE41-NEXT: retq
3121 ; SSE41-LABEL: trunc_packus_v4i64_v4i8:
3122 ; SSE41: # %bb.0:
3123 ; SSE41-NEXT: movdqa %xmm0, %xmm2
3124 ; SSE41-NEXT: movapd {{.*#+}} xmm4 = [255,255]
3125 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
3126 ; SSE41-NEXT: movdqa %xmm1, %xmm0
3127 ; SSE41-NEXT: pxor %xmm3, %xmm0
3128 ; SSE41-NEXT: movdqa {{.*#+}} xmm6 = [2147483903,2147483903]
3129 ; SSE41-NEXT: movdqa %xmm6, %xmm5
3130 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
3131 ; SSE41-NEXT: movdqa %xmm6, %xmm7
3132 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm7
3133 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
3134 ; SSE41-NEXT: pand %xmm5, %xmm0
3135 ; SSE41-NEXT: por %xmm7, %xmm0
3136 ; SSE41-NEXT: movapd %xmm4, %xmm5
3137 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm5
3138 ; SSE41-NEXT: movdqa %xmm2, %xmm0
3139 ; SSE41-NEXT: pxor %xmm3, %xmm0
3140 ; SSE41-NEXT: movdqa %xmm6, %xmm1
3141 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm1
3142 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
3143 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
3144 ; SSE41-NEXT: pand %xmm1, %xmm0
3145 ; SSE41-NEXT: por %xmm6, %xmm0
3146 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm4
3147 ; SSE41-NEXT: xorpd %xmm2, %xmm2
3148 ; SSE41-NEXT: movapd %xmm4, %xmm1
3149 ; SSE41-NEXT: xorpd %xmm3, %xmm1
3150 ; SSE41-NEXT: movapd %xmm1, %xmm6
3151 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
3152 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm1
3153 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
3154 ; SSE41-NEXT: pand %xmm6, %xmm0
3155 ; SSE41-NEXT: por %xmm1, %xmm0
3156 ; SSE41-NEXT: pxor %xmm1, %xmm1
3157 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm1
3158 ; SSE41-NEXT: movapd %xmm5, %xmm4
3159 ; SSE41-NEXT: xorpd %xmm3, %xmm4
3160 ; SSE41-NEXT: movapd %xmm4, %xmm6
3161 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
3162 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
3163 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
3164 ; SSE41-NEXT: pand %xmm6, %xmm0
3165 ; SSE41-NEXT: por %xmm4, %xmm0
3166 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm2
3167 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
3168 ; SSE41-NEXT: pshufb %xmm0, %xmm2
3169 ; SSE41-NEXT: pshufb %xmm0, %xmm1
3170 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],…
3171 ; SSE41-NEXT: movdqa %xmm1, %xmm0
3172 ; SSE41-NEXT: retq
3381 ; SSE41-LABEL: trunc_packus_v4i64_v4i8_store:
3382 ; SSE41: # %bb.0:
3383 ; SSE41-NEXT: movdqa %xmm0, %xmm2
3384 ; SSE41-NEXT: movapd {{.*#+}} xmm4 = [255,255]
3385 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648]
3386 ; SSE41-NEXT: movdqa %xmm1, %xmm0
3387 ; SSE41-NEXT: pxor %xmm3, %xmm0
3388 ; SSE41-NEXT: movdqa {{.*#+}} xmm6 = [2147483903,2147483903]
3389 ; SSE41-NEXT: movdqa %xmm6, %xmm5
3390 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
3391 ; SSE41-NEXT: movdqa %xmm6, %xmm7
3392 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm7
3393 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
3394 ; SSE41-NEXT: pand %xmm5, %xmm0
3395 ; SSE41-NEXT: por %xmm7, %xmm0
3396 ; SSE41-NEXT: movapd %xmm4, %xmm5
3397 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm5
3398 ; SSE41-NEXT: movdqa %xmm2, %xmm0
3399 ; SSE41-NEXT: pxor %xmm3, %xmm0
3400 ; SSE41-NEXT: movdqa %xmm6, %xmm1
3401 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm1
3402 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
3403 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
3404 ; SSE41-NEXT: pand %xmm1, %xmm0
3405 ; SSE41-NEXT: por %xmm6, %xmm0
3406 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm4
3407 ; SSE41-NEXT: pxor %xmm1, %xmm1
3408 ; SSE41-NEXT: movapd %xmm4, %xmm2
3409 ; SSE41-NEXT: xorpd %xmm3, %xmm2
3410 ; SSE41-NEXT: movapd %xmm2, %xmm6
3411 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
3412 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm2
3413 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,0,2,2]
3414 ; SSE41-NEXT: pand %xmm6, %xmm0
3415 ; SSE41-NEXT: por %xmm2, %xmm0
3416 ; SSE41-NEXT: pxor %xmm2, %xmm2
3417 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm2
3418 ; SSE41-NEXT: movapd %xmm5, %xmm4
3419 ; SSE41-NEXT: xorpd %xmm3, %xmm4
3420 ; SSE41-NEXT: movapd %xmm4, %xmm6
3421 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm6
3422 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
3423 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
3424 ; SSE41-NEXT: pand %xmm6, %xmm0
3425 ; SSE41-NEXT: por %xmm4, %xmm0
3426 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm1
3427 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
3428 ; SSE41-NEXT: pshufb %xmm0, %xmm1
3429 ; SSE41-NEXT: pshufb %xmm0, %xmm2
3430 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],…
3431 ; SSE41-NEXT: movd %xmm2, (%rdi)
3432 ; SSE41-NEXT: retq
3747 ; SSE41-LABEL: trunc_packus_v8i64_v8i8:
3748 ; SSE41: # %bb.0:
3749 ; SSE41-NEXT: movdqa (%rdi), %xmm10
3750 ; SSE41-NEXT: movdqa 16(%rdi), %xmm9
3751 ; SSE41-NEXT: movdqa 32(%rdi), %xmm3
3752 ; SSE41-NEXT: movdqa 48(%rdi), %xmm5
3753 ; SSE41-NEXT: movapd {{.*#+}} xmm1 = [255,255]
3754 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
3755 ; SSE41-NEXT: movdqa %xmm3, %xmm0
3756 ; SSE41-NEXT: pxor %xmm2, %xmm0
3757 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [2147483903,2147483903]
3758 ; SSE41-NEXT: movdqa %xmm4, %xmm7
3759 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm7
3760 ; SSE41-NEXT: movdqa %xmm4, %xmm6
3761 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
3762 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
3763 ; SSE41-NEXT: pand %xmm7, %xmm0
3764 ; SSE41-NEXT: por %xmm6, %xmm0
3765 ; SSE41-NEXT: movapd %xmm1, %xmm8
3766 ; SSE41-NEXT: blendvpd %xmm0, %xmm3, %xmm8
3767 ; SSE41-NEXT: movdqa %xmm5, %xmm0
3768 ; SSE41-NEXT: pxor %xmm2, %xmm0
3769 ; SSE41-NEXT: movdqa %xmm4, %xmm3
3770 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
3771 ; SSE41-NEXT: movdqa %xmm4, %xmm6
3772 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
3773 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
3774 ; SSE41-NEXT: pand %xmm3, %xmm0
3775 ; SSE41-NEXT: por %xmm6, %xmm0
3776 ; SSE41-NEXT: movapd %xmm1, %xmm6
3777 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm6
3778 ; SSE41-NEXT: movdqa %xmm10, %xmm0
3779 ; SSE41-NEXT: pxor %xmm2, %xmm0
3780 ; SSE41-NEXT: movdqa %xmm4, %xmm3
3781 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
3782 ; SSE41-NEXT: movdqa %xmm4, %xmm5
3783 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm5
3784 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
3785 ; SSE41-NEXT: pand %xmm3, %xmm0
3786 ; SSE41-NEXT: por %xmm5, %xmm0
3787 ; SSE41-NEXT: movapd %xmm1, %xmm3
3788 ; SSE41-NEXT: blendvpd %xmm0, %xmm10, %xmm3
3789 ; SSE41-NEXT: movdqa %xmm9, %xmm0
3790 ; SSE41-NEXT: pxor %xmm2, %xmm0
3791 ; SSE41-NEXT: movdqa %xmm4, %xmm5
3792 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
3793 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
3794 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
3795 ; SSE41-NEXT: pand %xmm5, %xmm0
3796 ; SSE41-NEXT: por %xmm4, %xmm0
3797 ; SSE41-NEXT: blendvpd %xmm0, %xmm9, %xmm1
3798 ; SSE41-NEXT: pxor %xmm5, %xmm5
3799 ; SSE41-NEXT: movapd %xmm1, %xmm4
3800 ; SSE41-NEXT: xorpd %xmm2, %xmm4
3801 ; SSE41-NEXT: movapd %xmm4, %xmm7
3802 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm7
3803 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm4
3804 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
3805 ; SSE41-NEXT: pand %xmm7, %xmm0
3806 ; SSE41-NEXT: por %xmm4, %xmm0
3807 ; SSE41-NEXT: pxor %xmm4, %xmm4
3808 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm4
3809 ; SSE41-NEXT: movapd %xmm3, %xmm1
3810 ; SSE41-NEXT: xorpd %xmm2, %xmm1
3811 ; SSE41-NEXT: movapd %xmm1, %xmm7
3812 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm7
3813 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm1
3814 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
3815 ; SSE41-NEXT: pand %xmm7, %xmm0
3816 ; SSE41-NEXT: por %xmm1, %xmm0
3817 ; SSE41-NEXT: pxor %xmm1, %xmm1
3818 ; SSE41-NEXT: blendvpd %xmm0, %xmm3, %xmm1
3819 ; SSE41-NEXT: packusdw %xmm4, %xmm1
3820 ; SSE41-NEXT: movapd %xmm6, %xmm3
3821 ; SSE41-NEXT: xorpd %xmm2, %xmm3
3822 ; SSE41-NEXT: movapd %xmm3, %xmm4
3823 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm4
3824 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm3
3825 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
3826 ; SSE41-NEXT: pand %xmm4, %xmm0
3827 ; SSE41-NEXT: por %xmm3, %xmm0
3828 ; SSE41-NEXT: pxor %xmm3, %xmm3
3829 ; SSE41-NEXT: blendvpd %xmm0, %xmm6, %xmm3
3830 ; SSE41-NEXT: movapd %xmm8, %xmm4
3831 ; SSE41-NEXT: xorpd %xmm2, %xmm4
3832 ; SSE41-NEXT: movapd %xmm4, %xmm6
3833 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm6
3834 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm4
3835 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
3836 ; SSE41-NEXT: pand %xmm6, %xmm0
3837 ; SSE41-NEXT: por %xmm4, %xmm0
3838 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm5
3839 ; SSE41-NEXT: packusdw %xmm3, %xmm5
3840 ; SSE41-NEXT: packusdw %xmm5, %xmm1
3841 ; SSE41-NEXT: packuswb %xmm1, %xmm1
3842 ; SSE41-NEXT: movdqa %xmm1, %xmm0
3843 ; SSE41-NEXT: retq
4149 ; SSE41-LABEL: trunc_packus_v8i64_v8i8_store:
4150 ; SSE41: # %bb.0:
4151 ; SSE41-NEXT: movdqa (%rdi), %xmm10
4152 ; SSE41-NEXT: movdqa 16(%rdi), %xmm9
4153 ; SSE41-NEXT: movdqa 32(%rdi), %xmm2
4154 ; SSE41-NEXT: movdqa 48(%rdi), %xmm5
4155 ; SSE41-NEXT: movapd {{.*#+}} xmm4 = [255,255]
4156 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648]
4157 ; SSE41-NEXT: movdqa %xmm2, %xmm0
4158 ; SSE41-NEXT: pxor %xmm1, %xmm0
4159 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2147483903,2147483903]
4160 ; SSE41-NEXT: movdqa %xmm3, %xmm7
4161 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm7
4162 ; SSE41-NEXT: movdqa %xmm3, %xmm6
4163 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
4164 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
4165 ; SSE41-NEXT: pand %xmm7, %xmm0
4166 ; SSE41-NEXT: por %xmm6, %xmm0
4167 ; SSE41-NEXT: movapd %xmm4, %xmm8
4168 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm8
4169 ; SSE41-NEXT: movdqa %xmm5, %xmm0
4170 ; SSE41-NEXT: pxor %xmm1, %xmm0
4171 ; SSE41-NEXT: movdqa %xmm3, %xmm2
4172 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm2
4173 ; SSE41-NEXT: movdqa %xmm3, %xmm6
4174 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm6
4175 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
4176 ; SSE41-NEXT: pand %xmm2, %xmm0
4177 ; SSE41-NEXT: por %xmm6, %xmm0
4178 ; SSE41-NEXT: movapd %xmm4, %xmm6
4179 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm6
4180 ; SSE41-NEXT: movdqa %xmm10, %xmm0
4181 ; SSE41-NEXT: pxor %xmm1, %xmm0
4182 ; SSE41-NEXT: movdqa %xmm3, %xmm2
4183 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm2
4184 ; SSE41-NEXT: movdqa %xmm3, %xmm5
4185 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm5
4186 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
4187 ; SSE41-NEXT: pand %xmm2, %xmm0
4188 ; SSE41-NEXT: por %xmm5, %xmm0
4189 ; SSE41-NEXT: movapd %xmm4, %xmm2
4190 ; SSE41-NEXT: blendvpd %xmm0, %xmm10, %xmm2
4191 ; SSE41-NEXT: movdqa %xmm9, %xmm0
4192 ; SSE41-NEXT: pxor %xmm1, %xmm0
4193 ; SSE41-NEXT: movdqa %xmm3, %xmm5
4194 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
4195 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm3
4196 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4197 ; SSE41-NEXT: pand %xmm5, %xmm0
4198 ; SSE41-NEXT: por %xmm3, %xmm0
4199 ; SSE41-NEXT: blendvpd %xmm0, %xmm9, %xmm4
4200 ; SSE41-NEXT: pxor %xmm5, %xmm5
4201 ; SSE41-NEXT: movapd %xmm4, %xmm3
4202 ; SSE41-NEXT: xorpd %xmm1, %xmm3
4203 ; SSE41-NEXT: movapd %xmm3, %xmm7
4204 ; SSE41-NEXT: pcmpeqd %xmm1, %xmm7
4205 ; SSE41-NEXT: pcmpgtd %xmm1, %xmm3
4206 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4207 ; SSE41-NEXT: pand %xmm7, %xmm0
4208 ; SSE41-NEXT: por %xmm3, %xmm0
4209 ; SSE41-NEXT: pxor %xmm3, %xmm3
4210 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm3
4211 ; SSE41-NEXT: movapd %xmm2, %xmm4
4212 ; SSE41-NEXT: xorpd %xmm1, %xmm4
4213 ; SSE41-NEXT: movapd %xmm4, %xmm7
4214 ; SSE41-NEXT: pcmpeqd %xmm1, %xmm7
4215 ; SSE41-NEXT: pcmpgtd %xmm1, %xmm4
4216 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
4217 ; SSE41-NEXT: pand %xmm7, %xmm0
4218 ; SSE41-NEXT: por %xmm4, %xmm0
4219 ; SSE41-NEXT: pxor %xmm4, %xmm4
4220 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm4
4221 ; SSE41-NEXT: packusdw %xmm3, %xmm4
4222 ; SSE41-NEXT: movapd %xmm6, %xmm2
4223 ; SSE41-NEXT: xorpd %xmm1, %xmm2
4224 ; SSE41-NEXT: movapd %xmm2, %xmm3
4225 ; SSE41-NEXT: pcmpeqd %xmm1, %xmm3
4226 ; SSE41-NEXT: pcmpgtd %xmm1, %xmm2
4227 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,0,2,2]
4228 ; SSE41-NEXT: pand %xmm3, %xmm0
4229 ; SSE41-NEXT: por %xmm2, %xmm0
4230 ; SSE41-NEXT: pxor %xmm2, %xmm2
4231 ; SSE41-NEXT: blendvpd %xmm0, %xmm6, %xmm2
4232 ; SSE41-NEXT: movapd %xmm8, %xmm3
4233 ; SSE41-NEXT: xorpd %xmm1, %xmm3
4234 ; SSE41-NEXT: movapd %xmm3, %xmm6
4235 ; SSE41-NEXT: pcmpeqd %xmm1, %xmm6
4236 ; SSE41-NEXT: pcmpgtd %xmm1, %xmm3
4237 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4238 ; SSE41-NEXT: pand %xmm6, %xmm0
4239 ; SSE41-NEXT: por %xmm3, %xmm0
4240 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm5
4241 ; SSE41-NEXT: packusdw %xmm2, %xmm5
4242 ; SSE41-NEXT: packusdw %xmm5, %xmm4
4243 ; SSE41-NEXT: packuswb %xmm4, %xmm4
4244 ; SSE41-NEXT: movq %xmm4, (%rsi)
4245 ; SSE41-NEXT: retq
4759 ; SSE41-LABEL: trunc_packus_v16i64_v16i8:
4760 ; SSE41: # %bb.0:
4761 ; SSE41-NEXT: movdqa (%rdi), %xmm10
4762 ; SSE41-NEXT: movdqa 16(%rdi), %xmm9
4763 ; SSE41-NEXT: movdqa 32(%rdi), %xmm14
4764 ; SSE41-NEXT: movdqa 48(%rdi), %xmm12
4765 ; SSE41-NEXT: movdqa 80(%rdi), %xmm15
4766 ; SSE41-NEXT: movdqa 64(%rdi), %xmm6
4767 ; SSE41-NEXT: movdqa 112(%rdi), %xmm13
4768 ; SSE41-NEXT: movdqa 96(%rdi), %xmm4
4769 ; SSE41-NEXT: movapd {{.*#+}} xmm1 = [255,255]
4770 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,2147483648]
4771 ; SSE41-NEXT: movdqa %xmm4, %xmm0
4772 ; SSE41-NEXT: pxor %xmm2, %xmm0
4773 ; SSE41-NEXT: movdqa {{.*#+}} xmm7 = [2147483903,2147483903]
4774 ; SSE41-NEXT: movdqa %xmm7, %xmm3
4775 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
4776 ; SSE41-NEXT: movdqa %xmm7, %xmm5
4777 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm5
4778 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
4779 ; SSE41-NEXT: pand %xmm3, %xmm0
4780 ; SSE41-NEXT: por %xmm5, %xmm0
4781 ; SSE41-NEXT: movapd %xmm1, %xmm8
4782 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm8
4783 ; SSE41-NEXT: movdqa %xmm13, %xmm0
4784 ; SSE41-NEXT: pxor %xmm2, %xmm0
4785 ; SSE41-NEXT: movdqa %xmm7, %xmm3
4786 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
4787 ; SSE41-NEXT: movdqa %xmm7, %xmm4
4788 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
4789 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
4790 ; SSE41-NEXT: pand %xmm3, %xmm0
4791 ; SSE41-NEXT: por %xmm4, %xmm0
4792 ; SSE41-NEXT: movapd %xmm1, %xmm11
4793 ; SSE41-NEXT: blendvpd %xmm0, %xmm13, %xmm11
4794 ; SSE41-NEXT: movdqa %xmm6, %xmm0
4795 ; SSE41-NEXT: pxor %xmm2, %xmm0
4796 ; SSE41-NEXT: movdqa %xmm7, %xmm3
4797 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
4798 ; SSE41-NEXT: movdqa %xmm7, %xmm4
4799 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
4800 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
4801 ; SSE41-NEXT: pand %xmm3, %xmm0
4802 ; SSE41-NEXT: por %xmm4, %xmm0
4803 ; SSE41-NEXT: movapd %xmm1, %xmm13
4804 ; SSE41-NEXT: blendvpd %xmm0, %xmm6, %xmm13
4805 ; SSE41-NEXT: movdqa %xmm15, %xmm0
4806 ; SSE41-NEXT: pxor %xmm2, %xmm0
4807 ; SSE41-NEXT: movdqa %xmm7, %xmm3
4808 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
4809 ; SSE41-NEXT: movdqa %xmm7, %xmm4
4810 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
4811 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
4812 ; SSE41-NEXT: pand %xmm3, %xmm0
4813 ; SSE41-NEXT: por %xmm4, %xmm0
4814 ; SSE41-NEXT: movapd %xmm1, %xmm6
4815 ; SSE41-NEXT: blendvpd %xmm0, %xmm15, %xmm6
4816 ; SSE41-NEXT: movdqa %xmm14, %xmm0
4817 ; SSE41-NEXT: pxor %xmm2, %xmm0
4818 ; SSE41-NEXT: movdqa %xmm7, %xmm3
4819 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
4820 ; SSE41-NEXT: movdqa %xmm7, %xmm4
4821 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm4
4822 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
4823 ; SSE41-NEXT: pand %xmm3, %xmm0
4824 ; SSE41-NEXT: por %xmm4, %xmm0
4825 ; SSE41-NEXT: movapd %xmm1, %xmm15
4826 ; SSE41-NEXT: blendvpd %xmm0, %xmm14, %xmm15
4827 ; SSE41-NEXT: movdqa %xmm12, %xmm0
4828 ; SSE41-NEXT: pxor %xmm2, %xmm0
4829 ; SSE41-NEXT: movdqa %xmm7, %xmm4
4830 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm4
4831 ; SSE41-NEXT: movdqa %xmm7, %xmm5
4832 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm5
4833 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
4834 ; SSE41-NEXT: pand %xmm4, %xmm0
4835 ; SSE41-NEXT: por %xmm5, %xmm0
4836 ; SSE41-NEXT: movapd %xmm1, %xmm4
4837 ; SSE41-NEXT: blendvpd %xmm0, %xmm12, %xmm4
4838 ; SSE41-NEXT: movdqa %xmm10, %xmm0
4839 ; SSE41-NEXT: pxor %xmm2, %xmm0
4840 ; SSE41-NEXT: movdqa %xmm7, %xmm5
4841 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm5
4842 ; SSE41-NEXT: movdqa %xmm7, %xmm3
4843 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm3
4844 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4845 ; SSE41-NEXT: pand %xmm5, %xmm0
4846 ; SSE41-NEXT: por %xmm3, %xmm0
4847 ; SSE41-NEXT: movapd %xmm1, %xmm5
4848 ; SSE41-NEXT: blendvpd %xmm0, %xmm10, %xmm5
4849 ; SSE41-NEXT: movdqa %xmm9, %xmm0
4850 ; SSE41-NEXT: pxor %xmm2, %xmm0
4851 ; SSE41-NEXT: movdqa %xmm7, %xmm3
4852 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm3
4853 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm7
4854 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
4855 ; SSE41-NEXT: pand %xmm3, %xmm0
4856 ; SSE41-NEXT: por %xmm7, %xmm0
4857 ; SSE41-NEXT: blendvpd %xmm0, %xmm9, %xmm1
4858 ; SSE41-NEXT: xorpd %xmm9, %xmm9
4859 ; SSE41-NEXT: movapd %xmm1, %xmm3
4860 ; SSE41-NEXT: xorpd %xmm2, %xmm3
4861 ; SSE41-NEXT: movapd %xmm3, %xmm7
4862 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm7
4863 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm3
4864 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4865 ; SSE41-NEXT: pand %xmm7, %xmm0
4866 ; SSE41-NEXT: por %xmm3, %xmm0
4867 ; SSE41-NEXT: pxor %xmm3, %xmm3
4868 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3
4869 ; SSE41-NEXT: movapd %xmm5, %xmm1
4870 ; SSE41-NEXT: xorpd %xmm2, %xmm1
4871 ; SSE41-NEXT: movapd %xmm1, %xmm7
4872 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm7
4873 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm1
4874 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,2,2]
4875 ; SSE41-NEXT: pand %xmm7, %xmm0
4876 ; SSE41-NEXT: por %xmm1, %xmm0
4877 ; SSE41-NEXT: pxor %xmm1, %xmm1
4878 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm1
4879 ; SSE41-NEXT: packusdw %xmm3, %xmm1
4880 ; SSE41-NEXT: movapd %xmm4, %xmm3
4881 ; SSE41-NEXT: xorpd %xmm2, %xmm3
4882 ; SSE41-NEXT: movapd %xmm3, %xmm5
4883 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm5
4884 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm3
4885 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4886 ; SSE41-NEXT: pand %xmm5, %xmm0
4887 ; SSE41-NEXT: por %xmm3, %xmm0
4888 ; SSE41-NEXT: pxor %xmm3, %xmm3
4889 ; SSE41-NEXT: blendvpd %xmm0, %xmm4, %xmm3
4890 ; SSE41-NEXT: movapd %xmm15, %xmm4
4891 ; SSE41-NEXT: xorpd %xmm2, %xmm4
4892 ; SSE41-NEXT: movapd %xmm4, %xmm5
4893 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm5
4894 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm4
4895 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
4896 ; SSE41-NEXT: pand %xmm5, %xmm0
4897 ; SSE41-NEXT: por %xmm4, %xmm0
4898 ; SSE41-NEXT: pxor %xmm4, %xmm4
4899 ; SSE41-NEXT: blendvpd %xmm0, %xmm15, %xmm4
4900 ; SSE41-NEXT: packusdw %xmm3, %xmm4
4901 ; SSE41-NEXT: packusdw %xmm4, %xmm1
4902 ; SSE41-NEXT: movapd %xmm6, %xmm3
4903 ; SSE41-NEXT: xorpd %xmm2, %xmm3
4904 ; SSE41-NEXT: movapd %xmm3, %xmm4
4905 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm4
4906 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm3
4907 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4908 ; SSE41-NEXT: pand %xmm4, %xmm0
4909 ; SSE41-NEXT: por %xmm3, %xmm0
4910 ; SSE41-NEXT: pxor %xmm4, %xmm4
4911 ; SSE41-NEXT: blendvpd %xmm0, %xmm6, %xmm4
4912 ; SSE41-NEXT: movapd %xmm13, %xmm3
4913 ; SSE41-NEXT: xorpd %xmm2, %xmm3
4914 ; SSE41-NEXT: movapd %xmm3, %xmm5
4915 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm5
4916 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm3
4917 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]
4918 ; SSE41-NEXT: pand %xmm5, %xmm0
4919 ; SSE41-NEXT: por %xmm3, %xmm0
4920 ; SSE41-NEXT: pxor %xmm3, %xmm3
4921 ; SSE41-NEXT: blendvpd %xmm0, %xmm13, %xmm3
4922 ; SSE41-NEXT: packusdw %xmm4, %xmm3
4923 ; SSE41-NEXT: movapd %xmm11, %xmm4
4924 ; SSE41-NEXT: xorpd %xmm2, %xmm4
4925 ; SSE41-NEXT: movapd %xmm4, %xmm5
4926 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm5
4927 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm4
4928 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
4929 ; SSE41-NEXT: pand %xmm5, %xmm0
4930 ; SSE41-NEXT: por %xmm4, %xmm0
4931 ; SSE41-NEXT: pxor %xmm4, %xmm4
4932 ; SSE41-NEXT: blendvpd %xmm0, %xmm11, %xmm4
4933 ; SSE41-NEXT: movapd %xmm8, %xmm5
4934 ; SSE41-NEXT: xorpd %xmm2, %xmm5
4935 ; SSE41-NEXT: movapd %xmm5, %xmm6
4936 ; SSE41-NEXT: pcmpeqd %xmm2, %xmm6
4937 ; SSE41-NEXT: pcmpgtd %xmm2, %xmm5
4938 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
4939 ; SSE41-NEXT: pand %xmm6, %xmm0
4940 ; SSE41-NEXT: por %xmm5, %xmm0
4941 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm9
4942 ; SSE41-NEXT: packusdw %xmm4, %xmm9
4943 ; SSE41-NEXT: packusdw %xmm9, %xmm3
4944 ; SSE41-NEXT: packuswb %xmm3, %xmm1
4945 ; SSE41-NEXT: movdqa %xmm1, %xmm0
4946 ; SSE41-NEXT: retq
5105 ; SSE41-LABEL: trunc_packus_v4i32_v4i8:
5106 ; SSE41: # %bb.0:
5107 ; SSE41-NEXT: pminsd {{.*}}(%rip), %xmm0
5108 ; SSE41-NEXT: pxor %xmm1, %xmm1
5109 ; SSE41-NEXT: pmaxsd %xmm0, %xmm1
5110 ; SSE41-NEXT: packusdw %xmm1, %xmm1
5111 ; SSE41-NEXT: packuswb %xmm1, %xmm1
5112 ; SSE41-NEXT: movdqa %xmm1, %xmm0
5113 ; SSE41-NEXT: retq
5213 ; SSE41-LABEL: trunc_packus_v4i32_v4i8_store:
5214 ; SSE41: # %bb.0:
5215 ; SSE41-NEXT: pminsd {{.*}}(%rip), %xmm0
5216 ; SSE41-NEXT: pxor %xmm1, %xmm1
5217 ; SSE41-NEXT: pmaxsd %xmm0, %xmm1
5218 ; SSE41-NEXT: packusdw %xmm1, %xmm1
5219 ; SSE41-NEXT: packuswb %xmm1, %xmm1
5220 ; SSE41-NEXT: movd %xmm1, (%rdi)
5221 ; SSE41-NEXT: retq