• Home
  • Raw
  • Download

Lines Matching refs:SSE41

4 …: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefixes=SSE,SSE41
12 …< %s -mtriple=i686-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefixes=X86-SSE,X86-SSE41
27 ; SSE41-LABEL: sext_16i8_to_8i16:
28 ; SSE41: # %bb.0: # %entry
29 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
30 ; SSE41-NEXT: retq
43 ; X86-SSE41-LABEL: sext_16i8_to_8i16:
44 ; X86-SSE41: # %bb.0: # %entry
45 ; X86-SSE41-NEXT: pmovsxbw %xmm0, %xmm0
46 ; X86-SSE41-NEXT: retl
72 ; SSE41-LABEL: sext_16i8_to_16i16:
73 ; SSE41: # %bb.0: # %entry
74 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm2
75 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
76 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm1
77 ; SSE41-NEXT: movdqa %xmm2, %xmm0
78 ; SSE41-NEXT: retq
107 ; X86-SSE41-LABEL: sext_16i8_to_16i16:
108 ; X86-SSE41: # %bb.0: # %entry
109 ; X86-SSE41-NEXT: pmovsxbw %xmm0, %xmm2
110 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
111 ; X86-SSE41-NEXT: pmovsxbw %xmm0, %xmm1
112 ; X86-SSE41-NEXT: movdqa %xmm2, %xmm0
113 ; X86-SSE41-NEXT: retl
148 ; SSE41-LABEL: sext_32i8_to_32i16:
149 ; SSE41: # %bb.0: # %entry
150 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm5
151 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm2
152 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
153 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm4
154 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
155 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm3
156 ; SSE41-NEXT: movdqa %xmm5, %xmm0
157 ; SSE41-NEXT: movdqa %xmm4, %xmm1
158 ; SSE41-NEXT: retq
209 ; X86-SSE41-LABEL: sext_32i8_to_32i16:
210 ; X86-SSE41: # %bb.0: # %entry
211 ; X86-SSE41-NEXT: pmovsxbw %xmm0, %xmm5
212 ; X86-SSE41-NEXT: pmovsxbw %xmm1, %xmm2
213 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
214 ; X86-SSE41-NEXT: pmovsxbw %xmm0, %xmm4
215 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
216 ; X86-SSE41-NEXT: pmovsxbw %xmm0, %xmm3
217 ; X86-SSE41-NEXT: movdqa %xmm5, %xmm0
218 ; X86-SSE41-NEXT: movdqa %xmm4, %xmm1
219 ; X86-SSE41-NEXT: retl
240 ; SSE41-LABEL: sext_16i8_to_4i32:
241 ; SSE41: # %bb.0: # %entry
242 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm0
243 ; SSE41-NEXT: retq
257 ; X86-SSE41-LABEL: sext_16i8_to_4i32:
258 ; X86-SSE41: # %bb.0: # %entry
259 ; X86-SSE41-NEXT: pmovsxbd %xmm0, %xmm0
260 ; X86-SSE41-NEXT: retl
286 ; SSE41-LABEL: sext_16i8_to_8i32:
287 ; SSE41: # %bb.0: # %entry
288 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm2
289 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
290 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm1
291 ; SSE41-NEXT: movdqa %xmm2, %xmm0
292 ; SSE41-NEXT: retq
321 ; X86-SSE41-LABEL: sext_16i8_to_8i32:
322 ; X86-SSE41: # %bb.0: # %entry
323 ; X86-SSE41-NEXT: pmovsxbd %xmm0, %xmm2
324 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
325 ; X86-SSE41-NEXT: pmovsxbd %xmm0, %xmm1
326 ; X86-SSE41-NEXT: movdqa %xmm2, %xmm0
327 ; X86-SSE41-NEXT: retl
365 ; SSE41-LABEL: sext_16i8_to_16i32:
366 ; SSE41: # %bb.0: # %entry
367 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm4
368 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
369 ; SSE41-NEXT: pmovsxbd %xmm1, %xmm1
370 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
371 ; SSE41-NEXT: pmovsxbd %xmm2, %xmm2
372 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
373 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm3
374 ; SSE41-NEXT: movdqa %xmm4, %xmm0
375 ; SSE41-NEXT: retq
419 ; X86-SSE41-LABEL: sext_16i8_to_16i32:
420 ; X86-SSE41: # %bb.0: # %entry
421 ; X86-SSE41-NEXT: pmovsxbd %xmm0, %xmm4
422 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
423 ; X86-SSE41-NEXT: pmovsxbd %xmm1, %xmm1
424 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
425 ; X86-SSE41-NEXT: pmovsxbd %xmm2, %xmm2
426 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
427 ; X86-SSE41-NEXT: pmovsxbd %xmm0, %xmm3
428 ; X86-SSE41-NEXT: movdqa %xmm4, %xmm0
429 ; X86-SSE41-NEXT: retl
456 ; SSE41-LABEL: sext_16i8_to_2i64:
457 ; SSE41: # %bb.0: # %entry
458 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm0
459 ; SSE41-NEXT: retq
476 ; X86-SSE41-LABEL: sext_16i8_to_2i64:
477 ; X86-SSE41: # %bb.0: # %entry
478 ; X86-SSE41-NEXT: pmovsxbq %xmm0, %xmm0
479 ; X86-SSE41-NEXT: retl
511 ; SSE41-LABEL: sext_16i8_to_4i64:
512 ; SSE41: # %bb.0: # %entry
513 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm2
514 ; SSE41-NEXT: psrld $16, %xmm0
515 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm1
516 ; SSE41-NEXT: movdqa %xmm2, %xmm0
517 ; SSE41-NEXT: retq
549 ; X86-SSE41-LABEL: sext_16i8_to_4i64:
550 ; X86-SSE41: # %bb.0: # %entry
551 ; X86-SSE41-NEXT: pmovsxbq %xmm0, %xmm2
552 ; X86-SSE41-NEXT: psrld $16, %xmm0
553 ; X86-SSE41-NEXT: pmovsxbq %xmm0, %xmm1
554 ; X86-SSE41-NEXT: movdqa %xmm2, %xmm0
555 ; X86-SSE41-NEXT: retl
601 ; SSE41-LABEL: sext_16i8_to_8i64:
602 ; SSE41: # %bb.0: # %entry
603 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm4
604 ; SSE41-NEXT: movdqa %xmm0, %xmm1
605 ; SSE41-NEXT: psrld $16, %xmm1
606 ; SSE41-NEXT: pmovsxbq %xmm1, %xmm1
607 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,1,1]
608 ; SSE41-NEXT: pmovsxbq %xmm2, %xmm2
609 ; SSE41-NEXT: psrlq $48, %xmm0
610 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm3
611 ; SSE41-NEXT: movdqa %xmm4, %xmm0
612 ; SSE41-NEXT: retq
660 ; X86-SSE41-LABEL: sext_16i8_to_8i64:
661 ; X86-SSE41: # %bb.0: # %entry
662 ; X86-SSE41-NEXT: pmovsxbq %xmm0, %xmm4
663 ; X86-SSE41-NEXT: movdqa %xmm0, %xmm1
664 ; X86-SSE41-NEXT: psrld $16, %xmm1
665 ; X86-SSE41-NEXT: pmovsxbq %xmm1, %xmm1
666 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,1,1]
667 ; X86-SSE41-NEXT: pmovsxbq %xmm2, %xmm2
668 ; X86-SSE41-NEXT: psrlq $48, %xmm0
669 ; X86-SSE41-NEXT: pmovsxbq %xmm0, %xmm3
670 ; X86-SSE41-NEXT: movdqa %xmm4, %xmm0
671 ; X86-SSE41-NEXT: retl
691 ; SSE41-LABEL: sext_8i16_to_4i32:
692 ; SSE41: # %bb.0: # %entry
693 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm0
694 ; SSE41-NEXT: retq
707 ; X86-SSE41-LABEL: sext_8i16_to_4i32:
708 ; X86-SSE41: # %bb.0: # %entry
709 ; X86-SSE41-NEXT: pmovsxwd %xmm0, %xmm0
710 ; X86-SSE41-NEXT: retl
736 ; SSE41-LABEL: sext_8i16_to_8i32:
737 ; SSE41: # %bb.0: # %entry
738 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm2
739 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
740 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm1
741 ; SSE41-NEXT: movdqa %xmm2, %xmm0
742 ; SSE41-NEXT: retq
771 ; X86-SSE41-LABEL: sext_8i16_to_8i32:
772 ; X86-SSE41: # %bb.0: # %entry
773 ; X86-SSE41-NEXT: pmovsxwd %xmm0, %xmm2
774 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
775 ; X86-SSE41-NEXT: pmovsxwd %xmm0, %xmm1
776 ; X86-SSE41-NEXT: movdqa %xmm2, %xmm0
777 ; X86-SSE41-NEXT: retl
812 ; SSE41-LABEL: sext_16i16_to_16i32:
813 ; SSE41: # %bb.0: # %entry
814 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm5
815 ; SSE41-NEXT: pmovsxwd %xmm1, %xmm2
816 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
817 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm4
818 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
819 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm3
820 ; SSE41-NEXT: movdqa %xmm5, %xmm0
821 ; SSE41-NEXT: movdqa %xmm4, %xmm1
822 ; SSE41-NEXT: retq
865 ; X86-SSE41-LABEL: sext_16i16_to_16i32:
866 ; X86-SSE41: # %bb.0: # %entry
867 ; X86-SSE41-NEXT: pmovsxwd %xmm0, %xmm5
868 ; X86-SSE41-NEXT: pmovsxwd %xmm1, %xmm2
869 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
870 ; X86-SSE41-NEXT: pmovsxwd %xmm0, %xmm4
871 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
872 ; X86-SSE41-NEXT: pmovsxwd %xmm0, %xmm3
873 ; X86-SSE41-NEXT: movdqa %xmm5, %xmm0
874 ; X86-SSE41-NEXT: movdqa %xmm4, %xmm1
875 ; X86-SSE41-NEXT: retl
900 ; SSE41-LABEL: sext_8i16_to_2i64:
901 ; SSE41: # %bb.0: # %entry
902 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm0
903 ; SSE41-NEXT: retq
919 ; X86-SSE41-LABEL: sext_8i16_to_2i64:
920 ; X86-SSE41: # %bb.0: # %entry
921 ; X86-SSE41-NEXT: pmovsxwq %xmm0, %xmm0
922 ; X86-SSE41-NEXT: retl
952 ; SSE41-LABEL: sext_8i16_to_4i64:
953 ; SSE41: # %bb.0: # %entry
954 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm2
955 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
956 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm1
957 ; SSE41-NEXT: movdqa %xmm2, %xmm0
958 ; SSE41-NEXT: retq
989 ; X86-SSE41-LABEL: sext_8i16_to_4i64:
990 ; X86-SSE41: # %bb.0: # %entry
991 ; X86-SSE41-NEXT: pmovsxwq %xmm0, %xmm2
992 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
993 ; X86-SSE41-NEXT: pmovsxwq %xmm0, %xmm1
994 ; X86-SSE41-NEXT: movdqa %xmm2, %xmm0
995 ; X86-SSE41-NEXT: retl
1041 ; SSE41-LABEL: sext_8i16_to_8i64:
1042 ; SSE41: # %bb.0: # %entry
1043 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm4
1044 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1045 ; SSE41-NEXT: pmovsxwq %xmm1, %xmm1
1046 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
1047 ; SSE41-NEXT: pmovsxwq %xmm2, %xmm2
1048 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
1049 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm3
1050 ; SSE41-NEXT: movdqa %xmm4, %xmm0
1051 ; SSE41-NEXT: retq
1099 ; X86-SSE41-LABEL: sext_8i16_to_8i64:
1100 ; X86-SSE41: # %bb.0: # %entry
1101 ; X86-SSE41-NEXT: pmovsxwq %xmm0, %xmm4
1102 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1103 ; X86-SSE41-NEXT: pmovsxwq %xmm1, %xmm1
1104 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
1105 ; X86-SSE41-NEXT: pmovsxwq %xmm2, %xmm2
1106 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
1107 ; X86-SSE41-NEXT: pmovsxwq %xmm0, %xmm3
1108 ; X86-SSE41-NEXT: movdqa %xmm4, %xmm0
1109 ; X86-SSE41-NEXT: retl
1130 ; SSE41-LABEL: sext_4i32_to_2i64:
1131 ; SSE41: # %bb.0: # %entry
1132 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm0
1133 ; SSE41-NEXT: retq
1147 ; X86-SSE41-LABEL: sext_4i32_to_2i64:
1148 ; X86-SSE41: # %bb.0: # %entry
1149 ; X86-SSE41-NEXT: pmovsxdq %xmm0, %xmm0
1150 ; X86-SSE41-NEXT: retl
1180 ; SSE41-LABEL: sext_4i32_to_4i64:
1181 ; SSE41: # %bb.0: # %entry
1182 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm2
1183 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
1184 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm1
1185 ; SSE41-NEXT: movdqa %xmm2, %xmm0
1186 ; SSE41-NEXT: retq
1217 ; X86-SSE41-LABEL: sext_4i32_to_4i64:
1218 ; X86-SSE41: # %bb.0: # %entry
1219 ; X86-SSE41-NEXT: pmovsxdq %xmm0, %xmm2
1220 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
1221 ; X86-SSE41-NEXT: pmovsxdq %xmm0, %xmm1
1222 ; X86-SSE41-NEXT: movdqa %xmm2, %xmm0
1223 ; X86-SSE41-NEXT: retl
1268 ; SSE41-LABEL: sext_8i32_to_8i64:
1269 ; SSE41: # %bb.0: # %entry
1270 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm5
1271 ; SSE41-NEXT: pmovsxdq %xmm1, %xmm2
1272 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
1273 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm4
1274 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
1275 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm3
1276 ; SSE41-NEXT: movdqa %xmm5, %xmm0
1277 ; SSE41-NEXT: movdqa %xmm4, %xmm1
1278 ; SSE41-NEXT: retq
1326 ; X86-SSE41-LABEL: sext_8i32_to_8i64:
1327 ; X86-SSE41: # %bb.0: # %entry
1328 ; X86-SSE41-NEXT: pmovsxdq %xmm0, %xmm5
1329 ; X86-SSE41-NEXT: pmovsxdq %xmm1, %xmm2
1330 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
1331 ; X86-SSE41-NEXT: pmovsxdq %xmm0, %xmm4
1332 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
1333 ; X86-SSE41-NEXT: pmovsxdq %xmm0, %xmm3
1334 ; X86-SSE41-NEXT: movdqa %xmm5, %xmm0
1335 ; X86-SSE41-NEXT: movdqa %xmm4, %xmm1
1336 ; X86-SSE41-NEXT: retl
1410 ; X86-SSE41-LABEL: load_sext_2i1_to_2i64:
1411 ; X86-SSE41: # %bb.0: # %entry
1412 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1413 ; X86-SSE41-NEXT: movb (%eax), %al
1414 ; X86-SSE41-NEXT: movzbl %al, %ecx
1415 ; X86-SSE41-NEXT: andl $1, %ecx
1416 ; X86-SSE41-NEXT: negl %ecx
1417 ; X86-SSE41-NEXT: movd %ecx, %xmm0
1418 ; X86-SSE41-NEXT: pinsrd $1, %ecx, %xmm0
1419 ; X86-SSE41-NEXT: shrb %al
1420 ; X86-SSE41-NEXT: movzbl %al, %eax
1421 ; X86-SSE41-NEXT: negl %eax
1422 ; X86-SSE41-NEXT: pinsrd $2, %eax, %xmm0
1423 ; X86-SSE41-NEXT: pinsrd $3, %eax, %xmm0
1424 ; X86-SSE41-NEXT: retl
1456 ; SSE41-LABEL: load_sext_2i8_to_2i64:
1457 ; SSE41: # %bb.0: # %entry
1458 ; SSE41-NEXT: pmovsxbq (%rdi), %xmm0
1459 ; SSE41-NEXT: retq
1479 ; X86-SSE41-LABEL: load_sext_2i8_to_2i64:
1480 ; X86-SSE41: # %bb.0: # %entry
1481 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1482 ; X86-SSE41-NEXT: pmovsxbq (%eax), %xmm0
1483 ; X86-SSE41-NEXT: retl
1547 ; SSE41-LABEL: load_sext_4i1_to_4i32:
1548 ; SSE41: # %bb.0: # %entry
1549 ; SSE41-NEXT: movb (%rdi), %al
1550 ; SSE41-NEXT: movzbl %al, %ecx
1551 ; SSE41-NEXT: shrb %al
1552 ; SSE41-NEXT: movzbl %al, %eax
1553 ; SSE41-NEXT: andl $1, %eax
1554 ; SSE41-NEXT: negl %eax
1555 ; SSE41-NEXT: movl %ecx, %edx
1556 ; SSE41-NEXT: andl $1, %edx
1557 ; SSE41-NEXT: negl %edx
1558 ; SSE41-NEXT: movd %edx, %xmm0
1559 ; SSE41-NEXT: pinsrd $1, %eax, %xmm0
1560 ; SSE41-NEXT: movl %ecx, %eax
1561 ; SSE41-NEXT: shrb $2, %al
1562 ; SSE41-NEXT: movzbl %al, %eax
1563 ; SSE41-NEXT: andl $1, %eax
1564 ; SSE41-NEXT: negl %eax
1565 ; SSE41-NEXT: pinsrd $2, %eax, %xmm0
1566 ; SSE41-NEXT: shrb $3, %cl
1567 ; SSE41-NEXT: movzbl %cl, %eax
1568 ; SSE41-NEXT: negl %eax
1569 ; SSE41-NEXT: pinsrd $3, %eax, %xmm0
1570 ; SSE41-NEXT: retq
1659 ; X86-SSE41-LABEL: load_sext_4i1_to_4i32:
1660 ; X86-SSE41: # %bb.0: # %entry
1661 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1662 ; X86-SSE41-NEXT: movb (%eax), %al
1663 ; X86-SSE41-NEXT: movl %eax, %ecx
1664 ; X86-SSE41-NEXT: shrb %cl
1665 ; X86-SSE41-NEXT: movzbl %cl, %ecx
1666 ; X86-SSE41-NEXT: andl $1, %ecx
1667 ; X86-SSE41-NEXT: negl %ecx
1668 ; X86-SSE41-NEXT: movzbl %al, %edx
1669 ; X86-SSE41-NEXT: andl $1, %edx
1670 ; X86-SSE41-NEXT: negl %edx
1671 ; X86-SSE41-NEXT: movd %edx, %xmm0
1672 ; X86-SSE41-NEXT: pinsrd $1, %ecx, %xmm0
1673 ; X86-SSE41-NEXT: movl %eax, %ecx
1674 ; X86-SSE41-NEXT: shrb $2, %cl
1675 ; X86-SSE41-NEXT: movzbl %cl, %ecx
1676 ; X86-SSE41-NEXT: andl $1, %ecx
1677 ; X86-SSE41-NEXT: negl %ecx
1678 ; X86-SSE41-NEXT: pinsrd $2, %ecx, %xmm0
1679 ; X86-SSE41-NEXT: shrb $3, %al
1680 ; X86-SSE41-NEXT: movzbl %al, %eax
1681 ; X86-SSE41-NEXT: negl %eax
1682 ; X86-SSE41-NEXT: pinsrd $3, %eax, %xmm0
1683 ; X86-SSE41-NEXT: retl
1707 ; SSE41-LABEL: load_sext_4i8_to_4i32:
1708 ; SSE41: # %bb.0: # %entry
1709 ; SSE41-NEXT: pmovsxbd (%rdi), %xmm0
1710 ; SSE41-NEXT: retq
1726 ; X86-SSE41-LABEL: load_sext_4i8_to_4i32:
1727 ; X86-SSE41: # %bb.0: # %entry
1728 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1729 ; X86-SSE41-NEXT: pmovsxbd (%eax), %xmm0
1730 ; X86-SSE41-NEXT: retl
1798 ; SSE41-LABEL: load_sext_4i1_to_4i64:
1799 ; SSE41: # %bb.0: # %entry
1800 ; SSE41-NEXT: movb (%rdi), %al
1801 ; SSE41-NEXT: movl %eax, %ecx
1802 ; SSE41-NEXT: shrb %cl
1803 ; SSE41-NEXT: andb $1, %cl
1804 ; SSE41-NEXT: movzbl %cl, %ecx
1805 ; SSE41-NEXT: movl %eax, %edx
1806 ; SSE41-NEXT: andb $1, %dl
1807 ; SSE41-NEXT: movzbl %dl, %edx
1808 ; SSE41-NEXT: movd %edx, %xmm1
1809 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm1
1810 ; SSE41-NEXT: movl %eax, %ecx
1811 ; SSE41-NEXT: shrb $2, %cl
1812 ; SSE41-NEXT: andb $1, %cl
1813 ; SSE41-NEXT: movzbl %cl, %ecx
1814 ; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
1815 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm1
1816 ; SSE41-NEXT: shrb $3, %al
1817 ; SSE41-NEXT: movzbl %al, %eax
1818 ; SSE41-NEXT: pinsrb $12, %eax, %xmm1
1819 ; SSE41-NEXT: psllq $63, %xmm0
1820 ; SSE41-NEXT: psrad $31, %xmm0
1821 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1822 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1823 ; SSE41-NEXT: psllq $63, %xmm1
1824 ; SSE41-NEXT: psrad $31, %xmm1
1825 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1826 ; SSE41-NEXT: retq
1923 ; X86-SSE41-LABEL: load_sext_4i1_to_4i64:
1924 ; X86-SSE41: # %bb.0: # %entry
1925 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1926 ; X86-SSE41-NEXT: movb (%eax), %al
1927 ; X86-SSE41-NEXT: movl %eax, %ecx
1928 ; X86-SSE41-NEXT: shrb %cl
1929 ; X86-SSE41-NEXT: andb $1, %cl
1930 ; X86-SSE41-NEXT: movzbl %cl, %ecx
1931 ; X86-SSE41-NEXT: movl %eax, %edx
1932 ; X86-SSE41-NEXT: andb $1, %dl
1933 ; X86-SSE41-NEXT: movzbl %dl, %edx
1934 ; X86-SSE41-NEXT: movd %edx, %xmm1
1935 ; X86-SSE41-NEXT: pinsrb $4, %ecx, %xmm1
1936 ; X86-SSE41-NEXT: movl %eax, %ecx
1937 ; X86-SSE41-NEXT: shrb $2, %cl
1938 ; X86-SSE41-NEXT: andb $1, %cl
1939 ; X86-SSE41-NEXT: movzbl %cl, %ecx
1940 ; X86-SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
1941 ; X86-SSE41-NEXT: pinsrb $8, %ecx, %xmm1
1942 ; X86-SSE41-NEXT: shrb $3, %al
1943 ; X86-SSE41-NEXT: movzbl %al, %eax
1944 ; X86-SSE41-NEXT: pinsrb $12, %eax, %xmm1
1945 ; X86-SSE41-NEXT: psllq $63, %xmm0
1946 ; X86-SSE41-NEXT: psrad $31, %xmm0
1947 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1948 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1949 ; X86-SSE41-NEXT: psllq $63, %xmm1
1950 ; X86-SSE41-NEXT: psrad $31, %xmm1
1951 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1952 ; X86-SSE41-NEXT: retl
1986 ; SSE41-LABEL: load_sext_4i8_to_4i64:
1987 ; SSE41: # %bb.0: # %entry
1988 ; SSE41-NEXT: pmovsxbq (%rdi), %xmm0
1989 ; SSE41-NEXT: pmovsxbq 2(%rdi), %xmm1
1990 ; SSE41-NEXT: retq
2023 ; X86-SSE41-LABEL: load_sext_4i8_to_4i64:
2024 ; X86-SSE41: # %bb.0: # %entry
2025 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2026 ; X86-SSE41-NEXT: pmovsxbq (%eax), %xmm0
2027 ; X86-SSE41-NEXT: pmovsxbq 2(%eax), %xmm1
2028 ; X86-SSE41-NEXT: retl
2058 ; SSE41-LABEL: load_sext_4i8_to_4i64_extract:
2059 ; SSE41: # %bb.0:
2060 ; SSE41-NEXT: pmovsxbq 2(%rdi), %xmm0
2061 ; SSE41-NEXT: retq
2094 ; X86-SSE41-LABEL: load_sext_4i8_to_4i64_extract:
2095 ; X86-SSE41: # %bb.0:
2096 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2097 ; X86-SSE41-NEXT: pmovsxbq 2(%eax), %xmm0
2098 ; X86-SSE41-NEXT: retl
2182 ; SSE41-LABEL: load_sext_8i8_to_8i16:
2183 ; SSE41: # %bb.0: # %entry
2184 ; SSE41-NEXT: pmovsxbw (%rdi), %xmm0
2185 ; SSE41-NEXT: retq
2200 ; X86-SSE41-LABEL: load_sext_8i8_to_8i16:
2201 ; X86-SSE41: # %bb.0: # %entry
2202 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2203 ; X86-SSE41-NEXT: pmovsxbw (%eax), %xmm0
2204 ; X86-SSE41-NEXT: retl
2252 ; SSE41-LABEL: load_sext_8i8_to_8i64:
2253 ; SSE41: # %bb.0: # %entry
2254 ; SSE41-NEXT: pmovsxbq (%rdi), %xmm0
2255 ; SSE41-NEXT: pmovsxbq 2(%rdi), %xmm1
2256 ; SSE41-NEXT: pmovsxbq 4(%rdi), %xmm2
2257 ; SSE41-NEXT: pmovsxbq 6(%rdi), %xmm3
2258 ; SSE41-NEXT: retq
2302 ; X86-SSE41-LABEL: load_sext_8i8_to_8i64:
2303 ; X86-SSE41: # %bb.0: # %entry
2304 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2305 ; X86-SSE41-NEXT: pmovsxbq (%eax), %xmm0
2306 ; X86-SSE41-NEXT: pmovsxbq 2(%eax), %xmm1
2307 ; X86-SSE41-NEXT: pmovsxbq 4(%eax), %xmm2
2308 ; X86-SSE41-NEXT: pmovsxbq 6(%eax), %xmm3
2309 ; X86-SSE41-NEXT: retl
2401 ; SSE41-LABEL: load_sext_8i8_to_8i32:
2402 ; SSE41: # %bb.0: # %entry
2403 ; SSE41-NEXT: pmovsxbd (%rdi), %xmm0
2404 ; SSE41-NEXT: pmovsxbd 4(%rdi), %xmm1
2405 ; SSE41-NEXT: retq
2435 ; X86-SSE41-LABEL: load_sext_8i8_to_8i32:
2436 ; X86-SSE41: # %bb.0: # %entry
2437 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2438 ; X86-SSE41-NEXT: pmovsxbd (%eax), %xmm0
2439 ; X86-SSE41-NEXT: pmovsxbd 4(%eax), %xmm1
2440 ; X86-SSE41-NEXT: retl
2468 ; SSE41-LABEL: load_sext_16i1_to_16i8:
2469 ; SSE41: # %bb.0: # %entry
2470 ; SSE41-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2471 ; SSE41-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1]
2472 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]
2473 ; SSE41-NEXT: pand %xmm1, %xmm0
2474 ; SSE41-NEXT: pcmpeqb %xmm1, %xmm0
2475 ; SSE41-NEXT: retq
2524 ; X86-SSE41-LABEL: load_sext_16i1_to_16i8:
2525 ; X86-SSE41: # %bb.0: # %entry
2526 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2527 ; X86-SSE41-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2528 ; X86-SSE41-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1]
2529 ; X86-SSE41-NEXT: movdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]
2530 ; X86-SSE41-NEXT: pand %xmm1, %xmm0
2531 ; X86-SSE41-NEXT: pcmpeqb %xmm1, %xmm0
2532 ; X86-SSE41-NEXT: retl
2716 ; SSE41-LABEL: load_sext_16i8_to_16i16:
2717 ; SSE41: # %bb.0: # %entry
2718 ; SSE41-NEXT: pmovsxbw (%rdi), %xmm0
2719 ; SSE41-NEXT: pmovsxbw 8(%rdi), %xmm1
2720 ; SSE41-NEXT: retq
2749 ; X86-SSE41-LABEL: load_sext_16i8_to_16i16:
2750 ; X86-SSE41: # %bb.0: # %entry
2751 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2752 ; X86-SSE41-NEXT: pmovsxbw (%eax), %xmm0
2753 ; X86-SSE41-NEXT: pmovsxbw 8(%eax), %xmm1
2754 ; X86-SSE41-NEXT: retl
2782 ; SSE41-LABEL: load_sext_2i16_to_2i64:
2783 ; SSE41: # %bb.0: # %entry
2784 ; SSE41-NEXT: pmovsxwq (%rdi), %xmm0
2785 ; SSE41-NEXT: retq
2803 ; X86-SSE41-LABEL: load_sext_2i16_to_2i64:
2804 ; X86-SSE41: # %bb.0: # %entry
2805 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2806 ; X86-SSE41-NEXT: pmovsxwq (%eax), %xmm0
2807 ; X86-SSE41-NEXT: retl
2829 ; SSE41-LABEL: load_sext_4i16_to_4i32:
2830 ; SSE41: # %bb.0: # %entry
2831 ; SSE41-NEXT: pmovsxwd (%rdi), %xmm0
2832 ; SSE41-NEXT: retq
2847 ; X86-SSE41-LABEL: load_sext_4i16_to_4i32:
2848 ; X86-SSE41: # %bb.0: # %entry
2849 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2850 ; X86-SSE41-NEXT: pmovsxwd (%eax), %xmm0
2851 ; X86-SSE41-NEXT: retl
2883 ; SSE41-LABEL: load_sext_4i16_to_4i64:
2884 ; SSE41: # %bb.0: # %entry
2885 ; SSE41-NEXT: pmovsxwq (%rdi), %xmm0
2886 ; SSE41-NEXT: pmovsxwq 4(%rdi), %xmm1
2887 ; SSE41-NEXT: retq
2919 ; X86-SSE41-LABEL: load_sext_4i16_to_4i64:
2920 ; X86-SSE41: # %bb.0: # %entry
2921 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2922 ; X86-SSE41-NEXT: pmovsxwq (%eax), %xmm0
2923 ; X86-SSE41-NEXT: pmovsxwq 4(%eax), %xmm1
2924 ; X86-SSE41-NEXT: retl
2950 ; SSE41-LABEL: load_sext_8i16_to_8i32:
2951 ; SSE41: # %bb.0: # %entry
2952 ; SSE41-NEXT: pmovsxwd (%rdi), %xmm0
2953 ; SSE41-NEXT: pmovsxwd 8(%rdi), %xmm1
2954 ; SSE41-NEXT: retq
2983 ; X86-SSE41-LABEL: load_sext_8i16_to_8i32:
2984 ; X86-SSE41: # %bb.0: # %entry
2985 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2986 ; X86-SSE41-NEXT: pmovsxwd (%eax), %xmm0
2987 ; X86-SSE41-NEXT: pmovsxwd 8(%eax), %xmm1
2988 ; X86-SSE41-NEXT: retl
3012 ; SSE41-LABEL: load_sext_2i32_to_2i64:
3013 ; SSE41: # %bb.0: # %entry
3014 ; SSE41-NEXT: pmovsxdq (%rdi), %xmm0
3015 ; SSE41-NEXT: retq
3031 ; X86-SSE41-LABEL: load_sext_2i32_to_2i64:
3032 ; X86-SSE41: # %bb.0: # %entry
3033 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3034 ; X86-SSE41-NEXT: pmovsxdq (%eax), %xmm0
3035 ; X86-SSE41-NEXT: retl
3067 ; SSE41-LABEL: load_sext_4i32_to_4i64:
3068 ; SSE41: # %bb.0: # %entry
3069 ; SSE41-NEXT: pmovsxdq (%rdi), %xmm0
3070 ; SSE41-NEXT: pmovsxdq 8(%rdi), %xmm1
3071 ; SSE41-NEXT: retq
3103 ; X86-SSE41-LABEL: load_sext_4i32_to_4i64:
3104 ; X86-SSE41: # %bb.0: # %entry
3105 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3106 ; X86-SSE41-NEXT: pmovsxdq (%eax), %xmm0
3107 ; X86-SSE41-NEXT: pmovsxdq 8(%eax), %xmm1
3108 ; X86-SSE41-NEXT: retl
3130 ; SSE41-LABEL: sext_2i8_to_i32:
3131 ; SSE41: # %bb.0: # %entry
3132 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
3133 ; SSE41-NEXT: movd %xmm0, %eax
3134 ; SSE41-NEXT: retq
3149 ; X86-SSE41-LABEL: sext_2i8_to_i32:
3150 ; X86-SSE41: # %bb.0: # %entry
3151 ; X86-SSE41-NEXT: pmovsxbw %xmm0, %xmm0
3152 ; X86-SSE41-NEXT: movd %xmm0, %eax
3153 ; X86-SSE41-NEXT: retl
3188 ; SSE41-LABEL: sext_4i1_to_4i64:
3189 ; SSE41: # %bb.0:
3190 ; SSE41-NEXT: pslld $31, %xmm0
3191 ; SSE41-NEXT: psrad $31, %xmm0
3192 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm2
3193 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
3194 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm1
3195 ; SSE41-NEXT: movdqa %xmm2, %xmm0
3196 ; SSE41-NEXT: retq
3235 ; X86-SSE41-LABEL: sext_4i1_to_4i64:
3236 ; X86-SSE41: # %bb.0:
3237 ; X86-SSE41-NEXT: pslld $31, %xmm0
3238 ; X86-SSE41-NEXT: psrad $31, %xmm0
3239 ; X86-SSE41-NEXT: pmovsxdq %xmm0, %xmm2
3240 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
3241 ; X86-SSE41-NEXT: pmovsxdq %xmm0, %xmm1
3242 ; X86-SSE41-NEXT: movdqa %xmm2, %xmm0
3243 ; X86-SSE41-NEXT: retl
3273 ; SSE41-LABEL: sext_4i8_to_4i64:
3274 ; SSE41: # %bb.0:
3275 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm2
3276 ; SSE41-NEXT: psrld $16, %xmm0
3277 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm1
3278 ; SSE41-NEXT: movdqa %xmm2, %xmm0
3279 ; SSE41-NEXT: retq
3311 ; X86-SSE41-LABEL: sext_4i8_to_4i64:
3312 ; X86-SSE41: # %bb.0:
3313 ; X86-SSE41-NEXT: pmovsxbq %xmm0, %xmm2
3314 ; X86-SSE41-NEXT: psrld $16, %xmm0
3315 ; X86-SSE41-NEXT: pmovsxbq %xmm0, %xmm1
3316 ; X86-SSE41-NEXT: movdqa %xmm2, %xmm0
3317 ; X86-SSE41-NEXT: retl
3420 ; SSE41-LABEL: sext_2i8_to_2i32:
3421 ; SSE41: # %bb.0:
3422 ; SSE41-NEXT: movzwl (%rdi), %eax
3423 ; SSE41-NEXT: movd %eax, %xmm0
3424 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm0
3425 ; SSE41-NEXT: paddd %xmm0, %xmm0
3426 ; SSE41-NEXT: retq
3447 ; X86-SSE41-LABEL: sext_2i8_to_2i32:
3448 ; X86-SSE41: # %bb.0:
3449 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3450 ; X86-SSE41-NEXT: movzwl (%eax), %eax
3451 ; X86-SSE41-NEXT: movd %eax, %xmm0
3452 ; X86-SSE41-NEXT: pmovsxbd %xmm0, %xmm0
3453 ; X86-SSE41-NEXT: paddd %xmm0, %xmm0
3454 ; X86-SSE41-NEXT: retl
3520 ; SSE41-LABEL: sext_4i17_to_4i32:
3521 ; SSE41: # %bb.0:
3522 ; SSE41-NEXT: movq (%rdi), %rax
3523 ; SSE41-NEXT: movq %rax, %rcx
3524 ; SSE41-NEXT: shrq $17, %rcx
3525 ; SSE41-NEXT: shll $15, %ecx
3526 ; SSE41-NEXT: sarl $15, %ecx
3527 ; SSE41-NEXT: movl %eax, %edx
3528 ; SSE41-NEXT: shll $15, %edx
3529 ; SSE41-NEXT: sarl $15, %edx
3530 ; SSE41-NEXT: movd %edx, %xmm0
3531 ; SSE41-NEXT: pinsrd $1, %ecx, %xmm0
3532 ; SSE41-NEXT: movq %rax, %rcx
3533 ; SSE41-NEXT: shrq $34, %rcx
3534 ; SSE41-NEXT: shll $15, %ecx
3535 ; SSE41-NEXT: sarl $15, %ecx
3536 ; SSE41-NEXT: pinsrd $2, %ecx, %xmm0
3537 ; SSE41-NEXT: movl 8(%rdi), %ecx
3538 ; SSE41-NEXT: shll $13, %ecx
3539 ; SSE41-NEXT: shrq $51, %rax
3540 ; SSE41-NEXT: orl %ecx, %eax
3541 ; SSE41-NEXT: shll $15, %eax
3542 ; SSE41-NEXT: sarl $15, %eax
3543 ; SSE41-NEXT: pinsrd $3, %eax, %xmm0
3544 ; SSE41-NEXT: retq
3598 ; X86-SSE41-LABEL: sext_4i17_to_4i32:
3599 ; X86-SSE41: # %bb.0:
3600 ; X86-SSE41-NEXT: pushl %esi
3601 ; X86-SSE41-NEXT: .cfi_def_cfa_offset 8
3602 ; X86-SSE41-NEXT: .cfi_offset %esi, -8
3603 ; X86-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3604 ; X86-SSE41-NEXT: movl (%eax), %ecx
3605 ; X86-SSE41-NEXT: movl 4(%eax), %edx
3606 ; X86-SSE41-NEXT: movl %edx, %esi
3607 ; X86-SSE41-NEXT: movl 8(%eax), %eax
3608 ; X86-SSE41-NEXT: shldl $13, %edx, %eax
3609 ; X86-SSE41-NEXT: shldl $15, %ecx, %edx
3610 ; X86-SSE41-NEXT: shll $15, %edx
3611 ; X86-SSE41-NEXT: sarl $15, %edx
3612 ; X86-SSE41-NEXT: shll $15, %ecx
3613 ; X86-SSE41-NEXT: sarl $15, %ecx
3614 ; X86-SSE41-NEXT: movd %ecx, %xmm0
3615 ; X86-SSE41-NEXT: pinsrd $1, %edx, %xmm0
3616 ; X86-SSE41-NEXT: shll $13, %esi
3617 ; X86-SSE41-NEXT: sarl $15, %esi
3618 ; X86-SSE41-NEXT: pinsrd $2, %esi, %xmm0
3619 ; X86-SSE41-NEXT: shll $15, %eax
3620 ; X86-SSE41-NEXT: sarl $15, %eax
3621 ; X86-SSE41-NEXT: pinsrd $3, %eax, %xmm0
3622 ; X86-SSE41-NEXT: popl %esi
3623 ; X86-SSE41-NEXT: .cfi_def_cfa_offset 4
3624 ; X86-SSE41-NEXT: retl
3719 ; SSE41-LABEL: sext_8i6_to_8i64:
3720 ; SSE41: # %bb.0: # %entry
3721 ; SSE41-NEXT: movd %edi, %xmm0
3722 ; SSE41-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
3723 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[0,0,0,0]
3724 ; SSE41-NEXT: paddw {{.*}}(%rip), %xmm3
3725 ; SSE41-NEXT: pmovzxwq {{.*#+}} xmm0 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero
3726 ; SSE41-NEXT: psllq $58, %xmm0
3727 ; SSE41-NEXT: movdqa %xmm0, %xmm1
3728 ; SSE41-NEXT: psrad $31, %xmm1
3729 ; SSE41-NEXT: psrad $26, %xmm0
3730 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3731 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5],xmm1[6,7]
3732 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,1,1]
3733 ; SSE41-NEXT: pmovzxwq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
3734 ; SSE41-NEXT: psllq $58, %xmm1
3735 ; SSE41-NEXT: movdqa %xmm1, %xmm2
3736 ; SSE41-NEXT: psrad $31, %xmm2
3737 ; SSE41-NEXT: psrad $26, %xmm1
3738 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3739 ; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5],xmm2[6,7]
3740 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm3[2,3,2,3]
3741 ; SSE41-NEXT: pmovzxwq {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero
3742 ; SSE41-NEXT: psllq $58, %xmm2
3743 ; SSE41-NEXT: movdqa %xmm2, %xmm4
3744 ; SSE41-NEXT: psrad $31, %xmm4
3745 ; SSE41-NEXT: psrad $26, %xmm2
3746 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
3747 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,3],xmm2[4,5],xmm4[6,7]
3748 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm3[3,3,3,3]
3749 ; SSE41-NEXT: pmovzxwq {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero
3750 ; SSE41-NEXT: psllq $58, %xmm3
3751 ; SSE41-NEXT: movdqa %xmm3, %xmm4
3752 ; SSE41-NEXT: psrad $31, %xmm4
3753 ; SSE41-NEXT: psrad $26, %xmm3
3754 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3755 ; SSE41-NEXT: pblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3],xmm3[4,5],xmm4[6,7]
3756 ; SSE41-NEXT: retq
3843 ; X86-SSE41-LABEL: sext_8i6_to_8i64:
3844 ; X86-SSE41: # %bb.0: # %entry
3845 ; X86-SSE41-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
3846 ; X86-SSE41-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
3847 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[0,0,0,0]
3848 ; X86-SSE41-NEXT: paddw {{\.LCPI.*}}, %xmm3
3849 ; X86-SSE41-NEXT: pmovzxwq {{.*#+}} xmm0 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero
3850 ; X86-SSE41-NEXT: psllq $58, %xmm0
3851 ; X86-SSE41-NEXT: movdqa %xmm0, %xmm1
3852 ; X86-SSE41-NEXT: psrad $31, %xmm1
3853 ; X86-SSE41-NEXT: psrad $26, %xmm0
3854 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
3855 ; X86-SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5],xmm1[6,7]
3856 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,1,1]
3857 ; X86-SSE41-NEXT: pmovzxwq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
3858 ; X86-SSE41-NEXT: psllq $58, %xmm1
3859 ; X86-SSE41-NEXT: movdqa %xmm1, %xmm2
3860 ; X86-SSE41-NEXT: psrad $31, %xmm2
3861 ; X86-SSE41-NEXT: psrad $26, %xmm1
3862 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
3863 ; X86-SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5],xmm2[6,7]
3864 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm3[2,3,2,3]
3865 ; X86-SSE41-NEXT: pmovzxwq {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero
3866 ; X86-SSE41-NEXT: psllq $58, %xmm2
3867 ; X86-SSE41-NEXT: movdqa %xmm2, %xmm4
3868 ; X86-SSE41-NEXT: psrad $31, %xmm4
3869 ; X86-SSE41-NEXT: psrad $26, %xmm2
3870 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
3871 ; X86-SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,3],xmm2[4,5],xmm4[6,7]
3872 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm3[3,3,3,3]
3873 ; X86-SSE41-NEXT: pmovzxwq {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero
3874 ; X86-SSE41-NEXT: psllq $58, %xmm3
3875 ; X86-SSE41-NEXT: movdqa %xmm3, %xmm4
3876 ; X86-SSE41-NEXT: psrad $31, %xmm4
3877 ; X86-SSE41-NEXT: psrad $26, %xmm3
3878 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
3879 ; X86-SSE41-NEXT: pblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3],xmm3[4,5],xmm4[6,7]
3880 ; X86-SSE41-NEXT: retl
3913 ; SSE41-LABEL: zext_negate_sext:
3914 ; SSE41: # %bb.0:
3915 ; SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
3916 ; SSE41-NEXT: pxor %xmm1, %xmm1
3917 ; SSE41-NEXT: psubw %xmm0, %xmm1
3918 ; SSE41-NEXT: pmovsxwd %xmm1, %xmm0
3919 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]
3920 ; SSE41-NEXT: pmovsxwd %xmm1, %xmm1
3921 ; SSE41-NEXT: retq
3959 ; X86-SSE41-LABEL: zext_negate_sext:
3960 ; X86-SSE41: # %bb.0:
3961 ; X86-SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,x…
3962 ; X86-SSE41-NEXT: pxor %xmm1, %xmm1
3963 ; X86-SSE41-NEXT: psubw %xmm0, %xmm1
3964 ; X86-SSE41-NEXT: pmovsxwd %xmm1, %xmm0
3965 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]
3966 ; X86-SSE41-NEXT: pmovsxwd %xmm1, %xmm1
3967 ; X86-SSE41-NEXT: retl
3999 ; SSE41-LABEL: zext_decremenet_sext:
4000 ; SSE41: # %bb.0:
4001 ; SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
4002 ; SSE41-NEXT: pcmpeqd %xmm1, %xmm1
4003 ; SSE41-NEXT: paddw %xmm0, %xmm1
4004 ; SSE41-NEXT: pmovsxwd %xmm1, %xmm0
4005 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]
4006 ; SSE41-NEXT: pmovsxwd %xmm1, %xmm1
4007 ; SSE41-NEXT: retq
4046 ; X86-SSE41-LABEL: zext_decremenet_sext:
4047 ; X86-SSE41: # %bb.0:
4048 ; X86-SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,x…
4049 ; X86-SSE41-NEXT: pcmpeqd %xmm1, %xmm1
4050 ; X86-SSE41-NEXT: paddw %xmm0, %xmm1
4051 ; X86-SSE41-NEXT: pmovsxwd %xmm1, %xmm0
4052 ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]
4053 ; X86-SSE41-NEXT: pmovsxwd %xmm1, %xmm1
4054 ; X86-SSE41-NEXT: retl