Lines Matching refs:SSSE3

3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefix=SSSE3
41 ; SSSE3-LABEL: trunc_usat_v2i64_v2i32:
42 ; SSSE3: # %bb.0:
43 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [9223372039002259456,9223372039002259456]
44 ; SSSE3-NEXT: pxor %xmm0, %xmm1
45 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259455,9223372039002259455]
46 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
47 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
48 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
49 ; SSSE3-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
50 ; SSSE3-NEXT: pand %xmm3, %xmm1
51 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
52 ; SSSE3-NEXT: por %xmm1, %xmm2
53 ; SSSE3-NEXT: pand %xmm2, %xmm0
54 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
55 ; SSSE3-NEXT: por %xmm0, %xmm2
56 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
57 ; SSSE3-NEXT: retq
142 ; SSSE3-LABEL: trunc_usat_v2i64_v2i32_store:
143 ; SSSE3: # %bb.0:
144 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [9223372039002259456,9223372039002259456]
145 ; SSSE3-NEXT: pxor %xmm0, %xmm1
146 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259455,9223372039002259455]
147 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
148 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
149 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
150 ; SSSE3-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
151 ; SSSE3-NEXT: pand %xmm3, %xmm1
152 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
153 ; SSSE3-NEXT: por %xmm1, %xmm2
154 ; SSSE3-NEXT: pand %xmm2, %xmm0
155 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
156 ; SSSE3-NEXT: por %xmm0, %xmm2
157 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
158 ; SSSE3-NEXT: movq %xmm0, (%rdi)
159 ; SSSE3-NEXT: retq
260 ; SSSE3-LABEL: trunc_usat_v4i64_v4i32:
261 ; SSSE3: # %bb.0:
262 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]
263 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
264 ; SSSE3-NEXT: pxor %xmm2, %xmm3
265 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
266 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm4
267 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [9223372039002259455,9223372039002259455]
268 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
269 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm6
270 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[0,0,2,2]
271 ; SSSE3-NEXT: pand %xmm4, %xmm3
272 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[1,1,3,3]
273 ; SSSE3-NEXT: por %xmm3, %xmm4
274 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
275 ; SSSE3-NEXT: pxor %xmm2, %xmm3
276 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm3[1,1,3,3]
277 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm6
278 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm5
279 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm5[0,0,2,2]
280 ; SSSE3-NEXT: pand %xmm6, %xmm2
281 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
282 ; SSSE3-NEXT: por %xmm2, %xmm3
283 ; SSSE3-NEXT: pand %xmm3, %xmm1
284 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
285 ; SSSE3-NEXT: por %xmm1, %xmm3
286 ; SSSE3-NEXT: pand %xmm4, %xmm0
287 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm4
288 ; SSSE3-NEXT: por %xmm4, %xmm0
289 ; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm3[0,2]
290 ; SSSE3-NEXT: retq
498 ; SSSE3-LABEL: trunc_usat_v8i64_v8i32:
499 ; SSSE3: # %bb.0:
500 ; SSSE3-NEXT: movdqa (%rdi), %xmm9
501 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm5
502 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm6
503 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm1
504 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [4294967295,4294967295]
505 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [9223372039002259456,9223372039002259456]
506 ; SSSE3-NEXT: movdqa %xmm1, %xmm7
507 ; SSSE3-NEXT: pxor %xmm10, %xmm7
508 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
509 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
510 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259455,9223372039002259455]
511 ; SSSE3-NEXT: movdqa %xmm2, %xmm4
512 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm4
513 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[0,0,2,2]
514 ; SSSE3-NEXT: pand %xmm3, %xmm7
515 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
516 ; SSSE3-NEXT: por %xmm7, %xmm3
517 ; SSSE3-NEXT: pand %xmm3, %xmm1
518 ; SSSE3-NEXT: pandn %xmm8, %xmm3
519 ; SSSE3-NEXT: por %xmm1, %xmm3
520 ; SSSE3-NEXT: movdqa %xmm6, %xmm1
521 ; SSSE3-NEXT: pxor %xmm10, %xmm1
522 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
523 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm4
524 ; SSSE3-NEXT: movdqa %xmm2, %xmm7
525 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm7
526 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm7[0,0,2,2]
527 ; SSSE3-NEXT: pand %xmm4, %xmm0
528 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm7[1,1,3,3]
529 ; SSSE3-NEXT: por %xmm0, %xmm1
530 ; SSSE3-NEXT: pand %xmm1, %xmm6
531 ; SSSE3-NEXT: pandn %xmm8, %xmm1
532 ; SSSE3-NEXT: por %xmm6, %xmm1
533 ; SSSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,2],xmm3[0,2]
534 ; SSSE3-NEXT: movdqa %xmm5, %xmm0
535 ; SSSE3-NEXT: pxor %xmm10, %xmm0
536 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
537 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
538 ; SSSE3-NEXT: movdqa %xmm2, %xmm4
539 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm4
540 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm4[0,0,2,2]
541 ; SSSE3-NEXT: pand %xmm3, %xmm0
542 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
543 ; SSSE3-NEXT: por %xmm0, %xmm3
544 ; SSSE3-NEXT: pand %xmm3, %xmm5
545 ; SSSE3-NEXT: pandn %xmm8, %xmm3
546 ; SSSE3-NEXT: por %xmm5, %xmm3
547 ; SSSE3-NEXT: movdqa %xmm9, %xmm0
548 ; SSSE3-NEXT: pxor %xmm10, %xmm0
549 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
550 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm4
551 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
552 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,0,2,2]
553 ; SSSE3-NEXT: pand %xmm4, %xmm5
554 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
555 ; SSSE3-NEXT: por %xmm5, %xmm0
556 ; SSSE3-NEXT: pand %xmm0, %xmm9
557 ; SSSE3-NEXT: pandn %xmm8, %xmm0
558 ; SSSE3-NEXT: por %xmm9, %xmm0
559 ; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2],xmm3[0,2]
560 ; SSSE3-NEXT: retq
740 ; SSSE3-LABEL: trunc_usat_v2i64_v2i16:
741 ; SSSE3: # %bb.0:
742 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [9223372039002259456,9223372039002259456]
743 ; SSSE3-NEXT: pxor %xmm0, %xmm1
744 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002324991,9223372039002324991]
745 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
746 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
747 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
748 ; SSSE3-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
749 ; SSSE3-NEXT: pand %xmm3, %xmm1
750 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
751 ; SSSE3-NEXT: por %xmm1, %xmm2
752 ; SSSE3-NEXT: pand %xmm2, %xmm0
753 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
754 ; SSSE3-NEXT: por %xmm0, %xmm2
755 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
756 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
757 ; SSSE3-NEXT: retq
864 ; SSSE3-LABEL: trunc_usat_v2i64_v2i16_store:
865 ; SSSE3: # %bb.0:
866 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [9223372039002259456,9223372039002259456]
867 ; SSSE3-NEXT: pxor %xmm0, %xmm1
868 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002324991,9223372039002324991]
869 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
870 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
871 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
872 ; SSSE3-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
873 ; SSSE3-NEXT: pand %xmm3, %xmm1
874 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
875 ; SSSE3-NEXT: por %xmm1, %xmm2
876 ; SSSE3-NEXT: pand %xmm2, %xmm0
877 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
878 ; SSSE3-NEXT: por %xmm0, %xmm2
879 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
880 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
881 ; SSSE3-NEXT: movd %xmm0, (%rdi)
882 ; SSSE3-NEXT: retq
1013 ; SSSE3-LABEL: trunc_usat_v4i64_v4i16:
1014 ; SSSE3: # %bb.0:
1015 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535]
1016 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [9223372039002259456,9223372039002259456]
1017 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
1018 ; SSSE3-NEXT: pxor %xmm3, %xmm4
1019 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
1020 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm5
1021 ; SSSE3-NEXT: movdqa {{.*#+}} xmm6 = [9223372039002324991,9223372039002324991]
1022 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
1023 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm7
1024 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
1025 ; SSSE3-NEXT: pand %xmm5, %xmm4
1026 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
1027 ; SSSE3-NEXT: por %xmm4, %xmm5
1028 ; SSSE3-NEXT: pand %xmm5, %xmm0
1029 ; SSSE3-NEXT: pandn %xmm2, %xmm5
1030 ; SSSE3-NEXT: por %xmm0, %xmm5
1031 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
1032 ; SSSE3-NEXT: pxor %xmm3, %xmm0
1033 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
1034 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
1035 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
1036 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
1037 ; SSSE3-NEXT: pand %xmm4, %xmm0
1038 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
1039 ; SSSE3-NEXT: por %xmm0, %xmm3
1040 ; SSSE3-NEXT: pand %xmm3, %xmm1
1041 ; SSSE3-NEXT: pandn %xmm2, %xmm3
1042 ; SSSE3-NEXT: por %xmm1, %xmm3
1043 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,2,2,3]
1044 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm1 = xmm0[0,2,2,3,4,5,6,7]
1045 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,2,2,3]
1046 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1047 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1048 ; SSSE3-NEXT: retq
1187 ; SSSE3-LABEL: trunc_usat_v4i64_v4i16_store:
1188 ; SSSE3: # %bb.0:
1189 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535]
1190 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [9223372039002259456,9223372039002259456]
1191 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
1192 ; SSSE3-NEXT: pxor %xmm3, %xmm4
1193 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
1194 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm5
1195 ; SSSE3-NEXT: movdqa {{.*#+}} xmm6 = [9223372039002324991,9223372039002324991]
1196 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
1197 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm7
1198 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
1199 ; SSSE3-NEXT: pand %xmm5, %xmm4
1200 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
1201 ; SSSE3-NEXT: por %xmm4, %xmm5
1202 ; SSSE3-NEXT: pand %xmm5, %xmm0
1203 ; SSSE3-NEXT: pandn %xmm2, %xmm5
1204 ; SSSE3-NEXT: por %xmm0, %xmm5
1205 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
1206 ; SSSE3-NEXT: pxor %xmm3, %xmm0
1207 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
1208 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm4
1209 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
1210 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
1211 ; SSSE3-NEXT: pand %xmm4, %xmm0
1212 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
1213 ; SSSE3-NEXT: por %xmm0, %xmm3
1214 ; SSSE3-NEXT: pand %xmm3, %xmm1
1215 ; SSSE3-NEXT: pandn %xmm2, %xmm3
1216 ; SSSE3-NEXT: por %xmm1, %xmm3
1217 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,2,2,3]
1218 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1219 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,2,2,3]
1220 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7]
1221 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1222 ; SSSE3-NEXT: movq %xmm1, (%rdi)
1223 ; SSSE3-NEXT: retq
1402 ; SSSE3-LABEL: trunc_usat_v8i64_v8i16:
1403 ; SSSE3: # %bb.0:
1404 ; SSSE3-NEXT: movdqa (%rdi), %xmm4
1405 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm9
1406 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm6
1407 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm7
1408 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [65535,65535]
1409 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [9223372039002259456,9223372039002259456]
1410 ; SSSE3-NEXT: movdqa %xmm6, %xmm2
1411 ; SSSE3-NEXT: pxor %xmm10, %xmm2
1412 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm2[1,1,3,3]
1413 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm1
1414 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [9223372039002324991,9223372039002324991]
1415 ; SSSE3-NEXT: movdqa %xmm0, %xmm5
1416 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm5
1417 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[0,0,2,2]
1418 ; SSSE3-NEXT: pand %xmm1, %xmm3
1419 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm5[1,1,3,3]
1420 ; SSSE3-NEXT: por %xmm3, %xmm2
1421 ; SSSE3-NEXT: pand %xmm2, %xmm6
1422 ; SSSE3-NEXT: pandn %xmm8, %xmm2
1423 ; SSSE3-NEXT: por %xmm6, %xmm2
1424 ; SSSE3-NEXT: movdqa %xmm7, %xmm1
1425 ; SSSE3-NEXT: pxor %xmm10, %xmm1
1426 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
1427 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
1428 ; SSSE3-NEXT: movdqa %xmm0, %xmm5
1429 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm5
1430 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,0,2,2]
1431 ; SSSE3-NEXT: pand %xmm3, %xmm1
1432 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[1,1,3,3]
1433 ; SSSE3-NEXT: por %xmm1, %xmm6
1434 ; SSSE3-NEXT: pand %xmm6, %xmm7
1435 ; SSSE3-NEXT: pandn %xmm8, %xmm6
1436 ; SSSE3-NEXT: por %xmm7, %xmm6
1437 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
1438 ; SSSE3-NEXT: pxor %xmm10, %xmm1
1439 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
1440 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
1441 ; SSSE3-NEXT: movdqa %xmm0, %xmm5
1442 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm5
1443 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,0,2,2]
1444 ; SSSE3-NEXT: pand %xmm3, %xmm1
1445 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
1446 ; SSSE3-NEXT: por %xmm1, %xmm3
1447 ; SSSE3-NEXT: pand %xmm3, %xmm4
1448 ; SSSE3-NEXT: pandn %xmm8, %xmm3
1449 ; SSSE3-NEXT: por %xmm4, %xmm3
1450 ; SSSE3-NEXT: movdqa %xmm9, %xmm1
1451 ; SSSE3-NEXT: pxor %xmm10, %xmm1
1452 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
1453 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm4
1454 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm0
1455 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[0,0,2,2]
1456 ; SSSE3-NEXT: pand %xmm4, %xmm1
1457 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1458 ; SSSE3-NEXT: por %xmm1, %xmm0
1459 ; SSSE3-NEXT: pand %xmm0, %xmm9
1460 ; SSSE3-NEXT: pandn %xmm8, %xmm0
1461 ; SSSE3-NEXT: por %xmm9, %xmm0
1462 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
1463 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
1464 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3]
1465 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7]
1466 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1467 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,2,2,3]
1468 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm3 = xmm0[0,1,0,2,4,5,6,7]
1469 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
1470 ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,2,4,5,6,7]
1471 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
1472 ; SSSE3-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
1473 ; SSSE3-NEXT: retq
1612 ; SSSE3-LABEL: trunc_usat_v4i32_v4i16:
1613 ; SSSE3: # %bb.0:
1614 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648,2147483648,2147483648]
1615 ; SSSE3-NEXT: pxor %xmm0, %xmm1
1616 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147549183,2147549183,2147549183,2147549183]
1617 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
1618 ; SSSE3-NEXT: pand %xmm2, %xmm0
1619 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
1620 ; SSSE3-NEXT: por %xmm2, %xmm0
1621 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
1622 ; SSSE3-NEXT: retq
1695 ; SSSE3-LABEL: trunc_usat_v4i32_v4i16_store:
1696 ; SSSE3: # %bb.0:
1697 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648,2147483648,2147483648]
1698 ; SSSE3-NEXT: pxor %xmm0, %xmm1
1699 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147549183,2147549183,2147549183,2147549183]
1700 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
1701 ; SSSE3-NEXT: pand %xmm2, %xmm0
1702 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
1703 ; SSSE3-NEXT: por %xmm0, %xmm2
1704 ; SSSE3-NEXT: pshufb {{.*#+}} xmm2 = xmm2[0,1,4,5,8,9,12,13,u,u,u,u,u,u,u,u]
1705 ; SSSE3-NEXT: movq %xmm2, (%rdi)
1706 ; SSSE3-NEXT: retq
1792 ; SSSE3-LABEL: trunc_usat_v8i32_v8i16:
1793 ; SSSE3: # %bb.0:
1794 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [65535,65535,65535,65535]
1795 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648,2147483648,2147483648]
1796 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
1797 ; SSSE3-NEXT: pxor %xmm3, %xmm4
1798 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [2147549183,2147549183,2147549183,2147549183]
1799 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
1800 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm6
1801 ; SSSE3-NEXT: pand %xmm6, %xmm0
1802 ; SSSE3-NEXT: pandn %xmm2, %xmm6
1803 ; SSSE3-NEXT: por %xmm6, %xmm0
1804 ; SSSE3-NEXT: pxor %xmm1, %xmm3
1805 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm5
1806 ; SSSE3-NEXT: pand %xmm5, %xmm1
1807 ; SSSE3-NEXT: pandn %xmm2, %xmm5
1808 ; SSSE3-NEXT: por %xmm1, %xmm5
1809 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
1810 ; SSSE3-NEXT: pshufb %xmm1, %xmm5
1811 ; SSSE3-NEXT: pshufb %xmm1, %xmm0
1812 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm5[0]
1813 ; SSSE3-NEXT: retq
1929 ; SSSE3-LABEL: trunc_usat_v16i32_v16i16:
1930 ; SSSE3: # %bb.0:
1931 ; SSSE3-NEXT: movdqa (%rdi), %xmm5
1932 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm8
1933 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm0
1934 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm4
1935 ; SSSE3-NEXT: movdqa {{.*#+}} xmm6 = [2147483648,2147483648,2147483648,2147483648]
1936 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
1937 ; SSSE3-NEXT: pxor %xmm6, %xmm3
1938 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147549183,2147549183,2147549183,2147549183]
1939 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
1940 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm1
1941 ; SSSE3-NEXT: pcmpeqd %xmm7, %xmm7
1942 ; SSSE3-NEXT: pand %xmm1, %xmm0
1943 ; SSSE3-NEXT: pxor %xmm7, %xmm1
1944 ; SSSE3-NEXT: por %xmm0, %xmm1
1945 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
1946 ; SSSE3-NEXT: pxor %xmm6, %xmm0
1947 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
1948 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm3
1949 ; SSSE3-NEXT: pand %xmm3, %xmm4
1950 ; SSSE3-NEXT: pxor %xmm7, %xmm3
1951 ; SSSE3-NEXT: por %xmm4, %xmm3
1952 ; SSSE3-NEXT: movdqa %xmm5, %xmm4
1953 ; SSSE3-NEXT: pxor %xmm6, %xmm4
1954 ; SSSE3-NEXT: movdqa %xmm2, %xmm0
1955 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm0
1956 ; SSSE3-NEXT: pand %xmm0, %xmm5
1957 ; SSSE3-NEXT: pxor %xmm7, %xmm0
1958 ; SSSE3-NEXT: por %xmm5, %xmm0
1959 ; SSSE3-NEXT: pxor %xmm8, %xmm6
1960 ; SSSE3-NEXT: pcmpgtd %xmm6, %xmm2
1961 ; SSSE3-NEXT: pxor %xmm2, %xmm7
1962 ; SSSE3-NEXT: pand %xmm8, %xmm2
1963 ; SSSE3-NEXT: por %xmm7, %xmm2
1964 ; SSSE3-NEXT: pslld $16, %xmm2
1965 ; SSSE3-NEXT: psrad $16, %xmm2
1966 ; SSSE3-NEXT: pslld $16, %xmm0
1967 ; SSSE3-NEXT: psrad $16, %xmm0
1968 ; SSSE3-NEXT: packssdw %xmm2, %xmm0
1969 ; SSSE3-NEXT: pslld $16, %xmm3
1970 ; SSSE3-NEXT: psrad $16, %xmm3
1971 ; SSSE3-NEXT: pslld $16, %xmm1
1972 ; SSSE3-NEXT: psrad $16, %xmm1
1973 ; SSSE3-NEXT: packssdw %xmm3, %xmm1
1974 ; SSSE3-NEXT: retq
2055 ; SSSE3-LABEL: trunc_usat_v2i64_v2i8:
2056 ; SSSE3: # %bb.0:
2057 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [9223372039002259456,9223372039002259456]
2058 ; SSSE3-NEXT: pxor %xmm0, %xmm1
2059 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259711,9223372039002259711]
2060 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
2061 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
2062 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2063 ; SSSE3-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
2064 ; SSSE3-NEXT: pand %xmm3, %xmm1
2065 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
2066 ; SSSE3-NEXT: por %xmm1, %xmm2
2067 ; SSSE3-NEXT: pand %xmm2, %xmm0
2068 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
2069 ; SSSE3-NEXT: por %xmm2, %xmm0
2070 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2071 ; SSSE3-NEXT: retq
2159 ; SSSE3-LABEL: trunc_usat_v2i64_v2i8_store:
2160 ; SSSE3: # %bb.0:
2161 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [9223372039002259456,9223372039002259456]
2162 ; SSSE3-NEXT: pxor %xmm0, %xmm1
2163 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259711,9223372039002259711]
2164 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
2165 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
2166 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2167 ; SSSE3-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
2168 ; SSSE3-NEXT: pand %xmm3, %xmm1
2169 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
2170 ; SSSE3-NEXT: por %xmm1, %xmm2
2171 ; SSSE3-NEXT: pand %xmm2, %xmm0
2172 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
2173 ; SSSE3-NEXT: por %xmm0, %xmm2
2174 ; SSSE3-NEXT: pshufb {{.*#+}} xmm2 = xmm2[0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2175 ; SSSE3-NEXT: movd %xmm2, %eax
2176 ; SSSE3-NEXT: movw %ax, (%rdi)
2177 ; SSSE3-NEXT: retq
2283 ; SSSE3-LABEL: trunc_usat_v4i64_v4i8:
2284 ; SSSE3: # %bb.0:
2285 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [255,255]
2286 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [9223372039002259456,9223372039002259456]
2287 ; SSSE3-NEXT: movdqa %xmm0, %xmm4
2288 ; SSSE3-NEXT: pxor %xmm3, %xmm4
2289 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
2290 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm5
2291 ; SSSE3-NEXT: movdqa {{.*#+}} xmm6 = [9223372039002259711,9223372039002259711]
2292 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
2293 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm7
2294 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
2295 ; SSSE3-NEXT: pand %xmm5, %xmm4
2296 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
2297 ; SSSE3-NEXT: por %xmm4, %xmm5
2298 ; SSSE3-NEXT: pand %xmm5, %xmm0
2299 ; SSSE3-NEXT: pandn %xmm2, %xmm5
2300 ; SSSE3-NEXT: por %xmm5, %xmm0
2301 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
2302 ; SSSE3-NEXT: pxor %xmm3, %xmm4
2303 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm4[1,1,3,3]
2304 ; SSSE3-NEXT: pcmpeqd %xmm3, %xmm5
2305 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm6
2306 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[0,0,2,2]
2307 ; SSSE3-NEXT: pand %xmm5, %xmm3
2308 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm6[1,1,3,3]
2309 ; SSSE3-NEXT: por %xmm3, %xmm4
2310 ; SSSE3-NEXT: pand %xmm4, %xmm1
2311 ; SSSE3-NEXT: pandn %xmm2, %xmm4
2312 ; SSSE3-NEXT: por %xmm1, %xmm4
2313 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
2314 ; SSSE3-NEXT: pshufb %xmm1, %xmm4
2315 ; SSSE3-NEXT: pshufb %xmm1, %xmm0
2316 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],…
2317 ; SSSE3-NEXT: retq
2461 ; SSSE3-LABEL: trunc_usat_v4i64_v4i8_store:
2462 ; SSSE3: # %bb.0:
2463 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255]
2464 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]
2465 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
2466 ; SSSE3-NEXT: pxor %xmm4, %xmm3
2467 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
2468 ; SSSE3-NEXT: pcmpeqd %xmm4, %xmm5
2469 ; SSSE3-NEXT: movdqa {{.*#+}} xmm6 = [9223372039002259711,9223372039002259711]
2470 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
2471 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm7
2472 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm7[0,0,2,2]
2473 ; SSSE3-NEXT: pand %xmm5, %xmm2
2474 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[1,1,3,3]
2475 ; SSSE3-NEXT: por %xmm2, %xmm3
2476 ; SSSE3-NEXT: pand %xmm3, %xmm0
2477 ; SSSE3-NEXT: pandn %xmm8, %xmm3
2478 ; SSSE3-NEXT: por %xmm0, %xmm3
2479 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
2480 ; SSSE3-NEXT: pxor %xmm4, %xmm0
2481 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]
2482 ; SSSE3-NEXT: pcmpeqd %xmm4, %xmm2
2483 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm6
2484 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]
2485 ; SSSE3-NEXT: pand %xmm2, %xmm0
2486 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
2487 ; SSSE3-NEXT: por %xmm0, %xmm2
2488 ; SSSE3-NEXT: pand %xmm2, %xmm1
2489 ; SSSE3-NEXT: pandn %xmm8, %xmm2
2490 ; SSSE3-NEXT: por %xmm1, %xmm2
2491 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = <0,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u>
2492 ; SSSE3-NEXT: pshufb %xmm0, %xmm2
2493 ; SSSE3-NEXT: pshufb %xmm0, %xmm3
2494 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],…
2495 ; SSSE3-NEXT: movd %xmm3, (%rdi)
2496 ; SSSE3-NEXT: retq
2673 ; SSSE3-LABEL: trunc_usat_v8i64_v8i8:
2674 ; SSSE3: # %bb.0:
2675 ; SSSE3-NEXT: movdqa (%rdi), %xmm6
2676 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm0
2677 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm9
2678 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm5
2679 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255]
2680 ; SSSE3-NEXT: movdqa {{.*#+}} xmm10 = [9223372039002259456,9223372039002259456]
2681 ; SSSE3-NEXT: movdqa %xmm0, %xmm7
2682 ; SSSE3-NEXT: pxor %xmm10, %xmm7
2683 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm7[1,1,3,3]
2684 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm2
2685 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [9223372039002259711,9223372039002259711]
2686 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
2687 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm4
2688 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm4[0,0,2,2]
2689 ; SSSE3-NEXT: pand %xmm2, %xmm7
2690 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]
2691 ; SSSE3-NEXT: por %xmm7, %xmm2
2692 ; SSSE3-NEXT: pand %xmm2, %xmm0
2693 ; SSSE3-NEXT: pandn %xmm8, %xmm2
2694 ; SSSE3-NEXT: por %xmm0, %xmm2
2695 ; SSSE3-NEXT: movdqa %xmm6, %xmm0
2696 ; SSSE3-NEXT: pxor %xmm10, %xmm0
2697 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
2698 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm4
2699 ; SSSE3-NEXT: movdqa %xmm1, %xmm7
2700 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm7
2701 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[0,0,2,2]
2702 ; SSSE3-NEXT: pand %xmm4, %xmm3
2703 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
2704 ; SSSE3-NEXT: por %xmm3, %xmm0
2705 ; SSSE3-NEXT: pand %xmm0, %xmm6
2706 ; SSSE3-NEXT: pandn %xmm8, %xmm0
2707 ; SSSE3-NEXT: por %xmm6, %xmm0
2708 ; SSSE3-NEXT: packuswb %xmm2, %xmm0
2709 ; SSSE3-NEXT: movdqa %xmm5, %xmm2
2710 ; SSSE3-NEXT: pxor %xmm10, %xmm2
2711 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
2712 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm3
2713 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
2714 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm4
2715 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm4[0,0,2,2]
2716 ; SSSE3-NEXT: pand %xmm3, %xmm2
2717 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
2718 ; SSSE3-NEXT: por %xmm2, %xmm3
2719 ; SSSE3-NEXT: pand %xmm3, %xmm5
2720 ; SSSE3-NEXT: pandn %xmm8, %xmm3
2721 ; SSSE3-NEXT: por %xmm5, %xmm3
2722 ; SSSE3-NEXT: movdqa %xmm9, %xmm2
2723 ; SSSE3-NEXT: pxor %xmm10, %xmm2
2724 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm2[1,1,3,3]
2725 ; SSSE3-NEXT: pcmpeqd %xmm10, %xmm4
2726 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm1
2727 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm1[0,0,2,2]
2728 ; SSSE3-NEXT: pand %xmm4, %xmm2
2729 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
2730 ; SSSE3-NEXT: por %xmm2, %xmm1
2731 ; SSSE3-NEXT: pand %xmm1, %xmm9
2732 ; SSSE3-NEXT: pandn %xmm8, %xmm1
2733 ; SSSE3-NEXT: por %xmm9, %xmm1
2734 ; SSSE3-NEXT: packuswb %xmm3, %xmm1
2735 ; SSSE3-NEXT: packuswb %xmm1, %xmm0
2736 ; SSSE3-NEXT: packuswb %xmm0, %xmm0
2737 ; SSSE3-NEXT: retq
2932 ; SSSE3-LABEL: trunc_usat_v8i64_v8i8_store:
2933 ; SSSE3: # %bb.0:
2934 ; SSSE3-NEXT: movdqa (%rdi), %xmm6
2935 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm5
2936 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm9
2937 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm4
2938 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255]
2939 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]
2940 ; SSSE3-NEXT: movdqa %xmm5, %xmm7
2941 ; SSSE3-NEXT: pxor %xmm2, %xmm7
2942 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm7[1,1,3,3]
2943 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm1
2944 ; SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [9223372039002259711,9223372039002259711]
2945 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
2946 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm3
2947 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm3[0,0,2,2]
2948 ; SSSE3-NEXT: pand %xmm1, %xmm7
2949 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3]
2950 ; SSSE3-NEXT: por %xmm7, %xmm1
2951 ; SSSE3-NEXT: pand %xmm1, %xmm5
2952 ; SSSE3-NEXT: pandn %xmm8, %xmm1
2953 ; SSSE3-NEXT: por %xmm5, %xmm1
2954 ; SSSE3-NEXT: movdqa %xmm6, %xmm3
2955 ; SSSE3-NEXT: pxor %xmm2, %xmm3
2956 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
2957 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm5
2958 ; SSSE3-NEXT: movdqa %xmm0, %xmm7
2959 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm7
2960 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm7[0,0,2,2]
2961 ; SSSE3-NEXT: pand %xmm5, %xmm3
2962 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
2963 ; SSSE3-NEXT: por %xmm3, %xmm5
2964 ; SSSE3-NEXT: pand %xmm5, %xmm6
2965 ; SSSE3-NEXT: pandn %xmm8, %xmm5
2966 ; SSSE3-NEXT: por %xmm6, %xmm5
2967 ; SSSE3-NEXT: packuswb %xmm1, %xmm5
2968 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
2969 ; SSSE3-NEXT: pxor %xmm2, %xmm1
2970 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
2971 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm3
2972 ; SSSE3-NEXT: movdqa %xmm0, %xmm6
2973 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm6
2974 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm6[0,0,2,2]
2975 ; SSSE3-NEXT: pand %xmm3, %xmm1
2976 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm6[1,1,3,3]
2977 ; SSSE3-NEXT: por %xmm1, %xmm3
2978 ; SSSE3-NEXT: pand %xmm3, %xmm4
2979 ; SSSE3-NEXT: pandn %xmm8, %xmm3
2980 ; SSSE3-NEXT: por %xmm4, %xmm3
2981 ; SSSE3-NEXT: movdqa %xmm9, %xmm1
2982 ; SSSE3-NEXT: pxor %xmm2, %xmm1
2983 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
2984 ; SSSE3-NEXT: pcmpeqd %xmm2, %xmm4
2985 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm0
2986 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[0,0,2,2]
2987 ; SSSE3-NEXT: pand %xmm4, %xmm1
2988 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
2989 ; SSSE3-NEXT: por %xmm1, %xmm0
2990 ; SSSE3-NEXT: pand %xmm0, %xmm9
2991 ; SSSE3-NEXT: pandn %xmm8, %xmm0
2992 ; SSSE3-NEXT: por %xmm9, %xmm0
2993 ; SSSE3-NEXT: packuswb %xmm3, %xmm0
2994 ; SSSE3-NEXT: packuswb %xmm0, %xmm5
2995 ; SSSE3-NEXT: packuswb %xmm5, %xmm5
2996 ; SSSE3-NEXT: movq %xmm5, (%rsi)
2997 ; SSSE3-NEXT: retq
3253 ; SSSE3-LABEL: trunc_usat_v16i64_v16i8:
3254 ; SSSE3: # %bb.0:
3255 ; SSSE3-NEXT: movdqa 96(%rdi), %xmm9
3256 ; SSSE3-NEXT: movdqa 112(%rdi), %xmm10
3257 ; SSSE3-NEXT: movdqa 64(%rdi), %xmm11
3258 ; SSSE3-NEXT: movdqa 80(%rdi), %xmm12
3259 ; SSSE3-NEXT: movdqa (%rdi), %xmm3
3260 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm6
3261 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm13
3262 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm1
3263 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255]
3264 ; SSSE3-NEXT: movdqa {{.*#+}} xmm14 = [9223372039002259456,9223372039002259456]
3265 ; SSSE3-NEXT: movdqa %xmm6, %xmm0
3266 ; SSSE3-NEXT: pxor %xmm14, %xmm0
3267 ; SSSE3-NEXT: pshufd {{.*#+}} xmm7 = xmm0[1,1,3,3]
3268 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm7
3269 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [9223372039002259711,9223372039002259711]
3270 ; SSSE3-NEXT: movdqa %xmm2, %xmm5
3271 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm5
3272 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]
3273 ; SSSE3-NEXT: pand %xmm7, %xmm0
3274 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
3275 ; SSSE3-NEXT: por %xmm0, %xmm5
3276 ; SSSE3-NEXT: pand %xmm5, %xmm6
3277 ; SSSE3-NEXT: pandn %xmm8, %xmm5
3278 ; SSSE3-NEXT: por %xmm6, %xmm5
3279 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
3280 ; SSSE3-NEXT: pxor %xmm14, %xmm0
3281 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
3282 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm6
3283 ; SSSE3-NEXT: movdqa %xmm2, %xmm7
3284 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm7
3285 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
3286 ; SSSE3-NEXT: pand %xmm6, %xmm4
3287 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
3288 ; SSSE3-NEXT: por %xmm4, %xmm0
3289 ; SSSE3-NEXT: pand %xmm0, %xmm3
3290 ; SSSE3-NEXT: pandn %xmm8, %xmm0
3291 ; SSSE3-NEXT: por %xmm3, %xmm0
3292 ; SSSE3-NEXT: packuswb %xmm5, %xmm0
3293 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
3294 ; SSSE3-NEXT: pxor %xmm14, %xmm3
3295 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
3296 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm4
3297 ; SSSE3-NEXT: movdqa %xmm2, %xmm5
3298 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm5
3299 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[0,0,2,2]
3300 ; SSSE3-NEXT: pand %xmm4, %xmm3
3301 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]
3302 ; SSSE3-NEXT: por %xmm3, %xmm4
3303 ; SSSE3-NEXT: pand %xmm4, %xmm1
3304 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3305 ; SSSE3-NEXT: por %xmm1, %xmm4
3306 ; SSSE3-NEXT: movdqa %xmm13, %xmm1
3307 ; SSSE3-NEXT: pxor %xmm14, %xmm1
3308 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
3309 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm3
3310 ; SSSE3-NEXT: movdqa %xmm2, %xmm5
3311 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm5
3312 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm5[0,0,2,2]
3313 ; SSSE3-NEXT: pand %xmm3, %xmm1
3314 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
3315 ; SSSE3-NEXT: por %xmm1, %xmm3
3316 ; SSSE3-NEXT: pand %xmm3, %xmm13
3317 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3318 ; SSSE3-NEXT: por %xmm13, %xmm3
3319 ; SSSE3-NEXT: packuswb %xmm4, %xmm3
3320 ; SSSE3-NEXT: packuswb %xmm3, %xmm0
3321 ; SSSE3-NEXT: movdqa %xmm12, %xmm1
3322 ; SSSE3-NEXT: pxor %xmm14, %xmm1
3323 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
3324 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm3
3325 ; SSSE3-NEXT: movdqa %xmm2, %xmm4
3326 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm4
3327 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm4[0,0,2,2]
3328 ; SSSE3-NEXT: pand %xmm3, %xmm1
3329 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
3330 ; SSSE3-NEXT: por %xmm1, %xmm3
3331 ; SSSE3-NEXT: pand %xmm3, %xmm12
3332 ; SSSE3-NEXT: pandn %xmm8, %xmm3
3333 ; SSSE3-NEXT: por %xmm12, %xmm3
3334 ; SSSE3-NEXT: movdqa %xmm11, %xmm1
3335 ; SSSE3-NEXT: pxor %xmm14, %xmm1
3336 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
3337 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm4
3338 ; SSSE3-NEXT: movdqa %xmm2, %xmm5
3339 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm5
3340 ; SSSE3-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
3341 ; SSSE3-NEXT: pand %xmm4, %xmm6
3342 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm5[1,1,3,3]
3343 ; SSSE3-NEXT: por %xmm6, %xmm1
3344 ; SSSE3-NEXT: pand %xmm1, %xmm11
3345 ; SSSE3-NEXT: pandn %xmm8, %xmm1
3346 ; SSSE3-NEXT: por %xmm11, %xmm1
3347 ; SSSE3-NEXT: packuswb %xmm3, %xmm1
3348 ; SSSE3-NEXT: movdqa %xmm10, %xmm3
3349 ; SSSE3-NEXT: pxor %xmm14, %xmm3
3350 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
3351 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm4
3352 ; SSSE3-NEXT: movdqa %xmm2, %xmm5
3353 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm5
3354 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm5[0,0,2,2]
3355 ; SSSE3-NEXT: pand %xmm4, %xmm3
3356 ; SSSE3-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]
3357 ; SSSE3-NEXT: por %xmm3, %xmm4
3358 ; SSSE3-NEXT: pand %xmm4, %xmm10
3359 ; SSSE3-NEXT: pandn %xmm8, %xmm4
3360 ; SSSE3-NEXT: por %xmm10, %xmm4
3361 ; SSSE3-NEXT: movdqa %xmm9, %xmm3
3362 ; SSSE3-NEXT: pxor %xmm14, %xmm3
3363 ; SSSE3-NEXT: pshufd {{.*#+}} xmm5 = xmm3[1,1,3,3]
3364 ; SSSE3-NEXT: pcmpeqd %xmm14, %xmm5
3365 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm2
3366 ; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
3367 ; SSSE3-NEXT: pand %xmm5, %xmm3
3368 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
3369 ; SSSE3-NEXT: por %xmm3, %xmm2
3370 ; SSSE3-NEXT: pand %xmm2, %xmm9
3371 ; SSSE3-NEXT: pandn %xmm8, %xmm2
3372 ; SSSE3-NEXT: por %xmm9, %xmm2
3373 ; SSSE3-NEXT: packuswb %xmm4, %xmm2
3374 ; SSSE3-NEXT: packuswb %xmm2, %xmm1
3375 ; SSSE3-NEXT: packuswb %xmm1, %xmm0
3376 ; SSSE3-NEXT: retq
3605 ; SSSE3-LABEL: trunc_usat_v4i32_v4i8:
3606 ; SSSE3: # %bb.0:
3607 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648,2147483648,2147483648]
3608 ; SSSE3-NEXT: pxor %xmm0, %xmm1
3609 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483903,2147483903,2147483903,2147483903]
3610 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
3611 ; SSSE3-NEXT: pand %xmm2, %xmm0
3612 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
3613 ; SSSE3-NEXT: por %xmm2, %xmm0
3614 ; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
3615 ; SSSE3-NEXT: retq
3689 ; SSSE3-LABEL: trunc_usat_v4i32_v4i8_store:
3690 ; SSSE3: # %bb.0:
3691 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [2147483648,2147483648,2147483648,2147483648]
3692 ; SSSE3-NEXT: pxor %xmm0, %xmm1
3693 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483903,2147483903,2147483903,2147483903]
3694 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm2
3695 ; SSSE3-NEXT: pand %xmm2, %xmm0
3696 ; SSSE3-NEXT: pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
3697 ; SSSE3-NEXT: por %xmm0, %xmm2
3698 ; SSSE3-NEXT: pshufb {{.*#+}} xmm2 = xmm2[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
3699 ; SSSE3-NEXT: movd %xmm2, (%rdi)
3700 ; SSSE3-NEXT: retq
3786 ; SSSE3-LABEL: trunc_usat_v8i32_v8i8:
3787 ; SSSE3: # %bb.0:
3788 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,255]
3789 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648,2147483648,2147483648]
3790 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
3791 ; SSSE3-NEXT: pxor %xmm3, %xmm4
3792 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [2147483903,2147483903,2147483903,2147483903]
3793 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
3794 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm6
3795 ; SSSE3-NEXT: pand %xmm6, %xmm1
3796 ; SSSE3-NEXT: pandn %xmm2, %xmm6
3797 ; SSSE3-NEXT: por %xmm1, %xmm6
3798 ; SSSE3-NEXT: pxor %xmm0, %xmm3
3799 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm5
3800 ; SSSE3-NEXT: pand %xmm5, %xmm0
3801 ; SSSE3-NEXT: pandn %xmm2, %xmm5
3802 ; SSSE3-NEXT: por %xmm5, %xmm0
3803 ; SSSE3-NEXT: packuswb %xmm6, %xmm0
3804 ; SSSE3-NEXT: packuswb %xmm0, %xmm0
3805 ; SSSE3-NEXT: retq
3897 ; SSSE3-LABEL: trunc_usat_v8i32_v8i8_store:
3898 ; SSSE3: # %bb.0:
3899 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,255]
3900 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648,2147483648,2147483648]
3901 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
3902 ; SSSE3-NEXT: pxor %xmm3, %xmm4
3903 ; SSSE3-NEXT: movdqa {{.*#+}} xmm5 = [2147483903,2147483903,2147483903,2147483903]
3904 ; SSSE3-NEXT: movdqa %xmm5, %xmm6
3905 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm6
3906 ; SSSE3-NEXT: pand %xmm6, %xmm1
3907 ; SSSE3-NEXT: pandn %xmm2, %xmm6
3908 ; SSSE3-NEXT: por %xmm1, %xmm6
3909 ; SSSE3-NEXT: pxor %xmm0, %xmm3
3910 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm5
3911 ; SSSE3-NEXT: pand %xmm5, %xmm0
3912 ; SSSE3-NEXT: pandn %xmm2, %xmm5
3913 ; SSSE3-NEXT: por %xmm0, %xmm5
3914 ; SSSE3-NEXT: packuswb %xmm6, %xmm5
3915 ; SSSE3-NEXT: packuswb %xmm5, %xmm5
3916 ; SSSE3-NEXT: movq %xmm5, (%rdi)
3917 ; SSSE3-NEXT: retq
4033 ; SSSE3-LABEL: trunc_usat_v16i32_v16i8:
4034 ; SSSE3: # %bb.0:
4035 ; SSSE3-NEXT: movdqa (%rdi), %xmm6
4036 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm0
4037 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm1
4038 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm5
4039 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,255]
4040 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]
4041 ; SSSE3-NEXT: movdqa %xmm0, %xmm7
4042 ; SSSE3-NEXT: pxor %xmm4, %xmm7
4043 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483903,2147483903,2147483903,2147483903]
4044 ; SSSE3-NEXT: movdqa %xmm3, %xmm2
4045 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm2
4046 ; SSSE3-NEXT: pand %xmm2, %xmm0
4047 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4048 ; SSSE3-NEXT: por %xmm0, %xmm2
4049 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
4050 ; SSSE3-NEXT: pxor %xmm4, %xmm7
4051 ; SSSE3-NEXT: movdqa %xmm3, %xmm0
4052 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm0
4053 ; SSSE3-NEXT: pand %xmm0, %xmm6
4054 ; SSSE3-NEXT: pandn %xmm8, %xmm0
4055 ; SSSE3-NEXT: por %xmm6, %xmm0
4056 ; SSSE3-NEXT: packuswb %xmm2, %xmm0
4057 ; SSSE3-NEXT: movdqa %xmm5, %xmm2
4058 ; SSSE3-NEXT: pxor %xmm4, %xmm2
4059 ; SSSE3-NEXT: movdqa %xmm3, %xmm6
4060 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm6
4061 ; SSSE3-NEXT: pand %xmm6, %xmm5
4062 ; SSSE3-NEXT: pandn %xmm8, %xmm6
4063 ; SSSE3-NEXT: por %xmm5, %xmm6
4064 ; SSSE3-NEXT: pxor %xmm1, %xmm4
4065 ; SSSE3-NEXT: pcmpgtd %xmm4, %xmm3
4066 ; SSSE3-NEXT: pand %xmm3, %xmm1
4067 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4068 ; SSSE3-NEXT: por %xmm1, %xmm3
4069 ; SSSE3-NEXT: packuswb %xmm6, %xmm3
4070 ; SSSE3-NEXT: packuswb %xmm3, %xmm0
4071 ; SSSE3-NEXT: retq
4174 ; SSSE3-LABEL: trunc_usat_v16i32_v16i8_store:
4175 ; SSSE3: # %bb.0:
4176 ; SSSE3-NEXT: movdqa (%rdi), %xmm6
4177 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm5
4178 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm0
4179 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm4
4180 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,255]
4181 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [2147483648,2147483648,2147483648,2147483648]
4182 ; SSSE3-NEXT: movdqa %xmm5, %xmm7
4183 ; SSSE3-NEXT: pxor %xmm3, %xmm7
4184 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [2147483903,2147483903,2147483903,2147483903]
4185 ; SSSE3-NEXT: movdqa %xmm2, %xmm1
4186 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm1
4187 ; SSSE3-NEXT: pand %xmm1, %xmm5
4188 ; SSSE3-NEXT: pandn %xmm8, %xmm1
4189 ; SSSE3-NEXT: por %xmm5, %xmm1
4190 ; SSSE3-NEXT: movdqa %xmm6, %xmm7
4191 ; SSSE3-NEXT: pxor %xmm3, %xmm7
4192 ; SSSE3-NEXT: movdqa %xmm2, %xmm5
4193 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm5
4194 ; SSSE3-NEXT: pand %xmm5, %xmm6
4195 ; SSSE3-NEXT: pandn %xmm8, %xmm5
4196 ; SSSE3-NEXT: por %xmm6, %xmm5
4197 ; SSSE3-NEXT: packuswb %xmm1, %xmm5
4198 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
4199 ; SSSE3-NEXT: pxor %xmm3, %xmm1
4200 ; SSSE3-NEXT: movdqa %xmm2, %xmm6
4201 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm6
4202 ; SSSE3-NEXT: pand %xmm6, %xmm4
4203 ; SSSE3-NEXT: pandn %xmm8, %xmm6
4204 ; SSSE3-NEXT: por %xmm4, %xmm6
4205 ; SSSE3-NEXT: pxor %xmm0, %xmm3
4206 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm2
4207 ; SSSE3-NEXT: pand %xmm2, %xmm0
4208 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4209 ; SSSE3-NEXT: por %xmm0, %xmm2
4210 ; SSSE3-NEXT: packuswb %xmm6, %xmm2
4211 ; SSSE3-NEXT: packuswb %xmm2, %xmm5
4212 ; SSSE3-NEXT: movdqa %xmm5, (%rsi)
4213 ; SSSE3-NEXT: retq
4287 ; SSSE3-LABEL: trunc_usat_v8i16_v8i8:
4288 ; SSSE3: # %bb.0:
4289 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
4290 ; SSSE3-NEXT: psubusw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
4291 ; SSSE3-NEXT: psubw %xmm1, %xmm0
4292 ; SSSE3-NEXT: packuswb %xmm0, %xmm0
4293 ; SSSE3-NEXT: retq
4352 ; SSSE3-LABEL: trunc_usat_v8i16_v8i8_store:
4353 ; SSSE3: # %bb.0:
4354 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
4355 ; SSSE3-NEXT: psubusw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
4356 ; SSSE3-NEXT: psubw %xmm1, %xmm0
4357 ; SSSE3-NEXT: packuswb %xmm0, %xmm0
4358 ; SSSE3-NEXT: movq %xmm0, (%rdi)
4359 ; SSSE3-NEXT: retq
4426 ; SSSE3-LABEL: trunc_usat_v16i16_v16i8:
4427 ; SSSE3: # %bb.0:
4428 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,255,255,255,255,255]
4429 ; SSSE3-NEXT: movdqa %xmm1, %xmm3
4430 ; SSSE3-NEXT: psubusw %xmm2, %xmm3
4431 ; SSSE3-NEXT: psubw %xmm3, %xmm1
4432 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
4433 ; SSSE3-NEXT: psubusw %xmm2, %xmm3
4434 ; SSSE3-NEXT: psubw %xmm3, %xmm0
4435 ; SSSE3-NEXT: packuswb %xmm1, %xmm0
4436 ; SSSE3-NEXT: retq
4529 ; SSSE3-LABEL: trunc_usat_v32i16_v32i8:
4530 ; SSSE3: # %bb.0:
4531 ; SSSE3-NEXT: movdqa (%rdi), %xmm0
4532 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm2
4533 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm1
4534 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm3
4535 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255]
4536 ; SSSE3-NEXT: movdqa %xmm3, %xmm5
4537 ; SSSE3-NEXT: psubusw %xmm4, %xmm5
4538 ; SSSE3-NEXT: psubw %xmm5, %xmm3
4539 ; SSSE3-NEXT: movdqa %xmm1, %xmm5
4540 ; SSSE3-NEXT: psubusw %xmm4, %xmm5
4541 ; SSSE3-NEXT: psubw %xmm5, %xmm1
4542 ; SSSE3-NEXT: packuswb %xmm3, %xmm1
4543 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
4544 ; SSSE3-NEXT: psubusw %xmm4, %xmm3
4545 ; SSSE3-NEXT: psubw %xmm3, %xmm2
4546 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
4547 ; SSSE3-NEXT: psubusw %xmm4, %xmm3
4548 ; SSSE3-NEXT: psubw %xmm3, %xmm0
4549 ; SSSE3-NEXT: packuswb %xmm2, %xmm0
4550 ; SSSE3-NEXT: retq
4711 ; SSSE3-LABEL: trunc_usat_v32i32_v32i8:
4712 ; SSSE3: # %bb.0:
4713 ; SSSE3-NEXT: movdqa (%rdi), %xmm11
4714 ; SSSE3-NEXT: movdqa 16(%rdi), %xmm12
4715 ; SSSE3-NEXT: movdqa 32(%rdi), %xmm9
4716 ; SSSE3-NEXT: movdqa 48(%rdi), %xmm10
4717 ; SSSE3-NEXT: movdqa 96(%rdi), %xmm0
4718 ; SSSE3-NEXT: movdqa 112(%rdi), %xmm2
4719 ; SSSE3-NEXT: movdqa 64(%rdi), %xmm5
4720 ; SSSE3-NEXT: movdqa 80(%rdi), %xmm7
4721 ; SSSE3-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,255]
4722 ; SSSE3-NEXT: movdqa {{.*#+}} xmm6 = [2147483648,2147483648,2147483648,2147483648]
4723 ; SSSE3-NEXT: movdqa %xmm7, %xmm1
4724 ; SSSE3-NEXT: pxor %xmm6, %xmm1
4725 ; SSSE3-NEXT: movdqa {{.*#+}} xmm4 = [2147483903,2147483903,2147483903,2147483903]
4726 ; SSSE3-NEXT: movdqa %xmm4, %xmm3
4727 ; SSSE3-NEXT: pcmpgtd %xmm1, %xmm3
4728 ; SSSE3-NEXT: pand %xmm3, %xmm7
4729 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4730 ; SSSE3-NEXT: por %xmm7, %xmm3
4731 ; SSSE3-NEXT: movdqa %xmm5, %xmm7
4732 ; SSSE3-NEXT: pxor %xmm6, %xmm7
4733 ; SSSE3-NEXT: movdqa %xmm4, %xmm1
4734 ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm1
4735 ; SSSE3-NEXT: pand %xmm1, %xmm5
4736 ; SSSE3-NEXT: pandn %xmm8, %xmm1
4737 ; SSSE3-NEXT: por %xmm5, %xmm1
4738 ; SSSE3-NEXT: packuswb %xmm3, %xmm1
4739 ; SSSE3-NEXT: movdqa %xmm2, %xmm3
4740 ; SSSE3-NEXT: pxor %xmm6, %xmm3
4741 ; SSSE3-NEXT: movdqa %xmm4, %xmm5
4742 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm5
4743 ; SSSE3-NEXT: pand %xmm5, %xmm2
4744 ; SSSE3-NEXT: pandn %xmm8, %xmm5
4745 ; SSSE3-NEXT: por %xmm2, %xmm5
4746 ; SSSE3-NEXT: movdqa %xmm0, %xmm2
4747 ; SSSE3-NEXT: pxor %xmm6, %xmm2
4748 ; SSSE3-NEXT: movdqa %xmm4, %xmm3
4749 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
4750 ; SSSE3-NEXT: pand %xmm3, %xmm0
4751 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4752 ; SSSE3-NEXT: por %xmm0, %xmm3
4753 ; SSSE3-NEXT: packuswb %xmm5, %xmm3
4754 ; SSSE3-NEXT: packuswb %xmm3, %xmm1
4755 ; SSSE3-NEXT: movdqa %xmm12, %xmm0
4756 ; SSSE3-NEXT: pxor %xmm6, %xmm0
4757 ; SSSE3-NEXT: movdqa %xmm4, %xmm2
4758 ; SSSE3-NEXT: pcmpgtd %xmm0, %xmm2
4759 ; SSSE3-NEXT: pand %xmm2, %xmm12
4760 ; SSSE3-NEXT: pandn %xmm8, %xmm2
4761 ; SSSE3-NEXT: por %xmm12, %xmm2
4762 ; SSSE3-NEXT: movdqa %xmm11, %xmm3
4763 ; SSSE3-NEXT: pxor %xmm6, %xmm3
4764 ; SSSE3-NEXT: movdqa %xmm4, %xmm0
4765 ; SSSE3-NEXT: pcmpgtd %xmm3, %xmm0
4766 ; SSSE3-NEXT: pand %xmm0, %xmm11
4767 ; SSSE3-NEXT: pandn %xmm8, %xmm0
4768 ; SSSE3-NEXT: por %xmm11, %xmm0
4769 ; SSSE3-NEXT: packuswb %xmm2, %xmm0
4770 ; SSSE3-NEXT: movdqa %xmm10, %xmm2
4771 ; SSSE3-NEXT: pxor %xmm6, %xmm2
4772 ; SSSE3-NEXT: movdqa %xmm4, %xmm3
4773 ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm3
4774 ; SSSE3-NEXT: pand %xmm3, %xmm10
4775 ; SSSE3-NEXT: pandn %xmm8, %xmm3
4776 ; SSSE3-NEXT: por %xmm10, %xmm3
4777 ; SSSE3-NEXT: pxor %xmm9, %xmm6
4778 ; SSSE3-NEXT: pcmpgtd %xmm6, %xmm4
4779 ; SSSE3-NEXT: pand %xmm4, %xmm9
4780 ; SSSE3-NEXT: pandn %xmm8, %xmm4
4781 ; SSSE3-NEXT: por %xmm9, %xmm4
4782 ; SSSE3-NEXT: packuswb %xmm3, %xmm4
4783 ; SSSE3-NEXT: packuswb %xmm4, %xmm0
4784 ; SSSE3-NEXT: retq