Lines Matching refs:SSE41
4 …triple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE --check-prefix=SSE41
10 ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=X32-SSE41
25 ; SSE41-LABEL: sext_16i8_to_8i16:
26 ; SSE41: # BB#0: # %entry
27 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
28 ; SSE41-NEXT: retq
35 ; X32-SSE41-LABEL: sext_16i8_to_8i16:
36 ; X32-SSE41: # BB#0: # %entry
37 ; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm0
38 ; X32-SSE41-NEXT: retl
64 ; SSE41-LABEL: sext_16i8_to_16i16:
65 ; SSE41: # BB#0: # %entry
66 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm2
67 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
68 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm1
69 ; SSE41-NEXT: movdqa %xmm2, %xmm0
70 ; SSE41-NEXT: retq
90 ; X32-SSE41-LABEL: sext_16i8_to_16i16:
91 ; X32-SSE41: # BB#0: # %entry
92 ; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm2
93 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
94 ; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm1
95 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
96 ; X32-SSE41-NEXT: retl
117 ; SSE41-LABEL: sext_16i8_to_4i32:
118 ; SSE41: # BB#0: # %entry
119 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm0
120 ; SSE41-NEXT: retq
127 ; X32-SSE41-LABEL: sext_16i8_to_4i32:
128 ; X32-SSE41: # BB#0: # %entry
129 ; X32-SSE41-NEXT: pmovsxbd %xmm0, %xmm0
130 ; X32-SSE41-NEXT: retl
160 ; SSE41-LABEL: sext_16i8_to_8i32:
161 ; SSE41: # BB#0: # %entry
162 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm2
163 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
164 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm1
165 ; SSE41-NEXT: movdqa %xmm2, %xmm0
166 ; SSE41-NEXT: retq
186 ; X32-SSE41-LABEL: sext_16i8_to_8i32:
187 ; X32-SSE41: # BB#0: # %entry
188 ; X32-SSE41-NEXT: pmovsxbd %xmm0, %xmm2
189 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
190 ; X32-SSE41-NEXT: pmovsxbd %xmm0, %xmm1
191 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
192 ; X32-SSE41-NEXT: retl
220 ; SSE41-LABEL: sext_16i8_to_2i64:
221 ; SSE41: # BB#0: # %entry
222 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm0
223 ; SSE41-NEXT: retq
230 ; X32-SSE41-LABEL: sext_16i8_to_2i64:
231 ; X32-SSE41: # BB#0: # %entry
232 ; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm0
233 ; X32-SSE41-NEXT: retl
277 ; SSE41-LABEL: sext_16i8_to_4i64:
278 ; SSE41: # BB#0: # %entry
279 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm2
280 ; SSE41-NEXT: psrld $16, %xmm0
281 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm1
282 ; SSE41-NEXT: movdqa %xmm2, %xmm0
283 ; SSE41-NEXT: retq
303 ; X32-SSE41-LABEL: sext_16i8_to_4i64:
304 ; X32-SSE41: # BB#0: # %entry
305 ; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm2
306 ; X32-SSE41-NEXT: psrld $16, %xmm0
307 ; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm1
308 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
309 ; X32-SSE41-NEXT: retl
381 ; SSE41-LABEL: sext_16i8_to_8i64:
382 ; SSE41: # BB#0: # %entry
383 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm4
384 ; SSE41-NEXT: movdqa %xmm0, %xmm1
385 ; SSE41-NEXT: psrld $16, %xmm1
386 ; SSE41-NEXT: pmovsxbq %xmm1, %xmm1
387 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
388 ; SSE41-NEXT: pmovsxbq %xmm2, %xmm2
389 ; SSE41-NEXT: psrlq $48, %xmm0
390 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm3
391 ; SSE41-NEXT: movdqa %xmm4, %xmm0
392 ; SSE41-NEXT: retq
429 ; X32-SSE41-LABEL: sext_16i8_to_8i64:
430 ; X32-SSE41: # BB#0: # %entry
431 ; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm4
432 ; X32-SSE41-NEXT: movdqa %xmm0, %xmm1
433 ; X32-SSE41-NEXT: psrld $16, %xmm1
434 ; X32-SSE41-NEXT: pmovsxbq %xmm1, %xmm1
435 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
436 ; X32-SSE41-NEXT: pmovsxbq %xmm2, %xmm2
437 ; X32-SSE41-NEXT: psrlq $48, %xmm0
438 ; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm3
439 ; X32-SSE41-NEXT: movdqa %xmm4, %xmm0
440 ; X32-SSE41-NEXT: retl
460 ; SSE41-LABEL: sext_8i16_to_4i32:
461 ; SSE41: # BB#0: # %entry
462 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm0
463 ; SSE41-NEXT: retq
470 ; X32-SSE41-LABEL: sext_8i16_to_4i32:
471 ; X32-SSE41: # BB#0: # %entry
472 ; X32-SSE41-NEXT: pmovsxwd %xmm0, %xmm0
473 ; X32-SSE41-NEXT: retl
499 ; SSE41-LABEL: sext_8i16_to_8i32:
500 ; SSE41: # BB#0: # %entry
501 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm2
502 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
503 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm1
504 ; SSE41-NEXT: movdqa %xmm2, %xmm0
505 ; SSE41-NEXT: retq
525 ; X32-SSE41-LABEL: sext_8i16_to_8i32:
526 ; X32-SSE41: # BB#0: # %entry
527 ; X32-SSE41-NEXT: pmovsxwd %xmm0, %xmm2
528 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
529 ; X32-SSE41-NEXT: pmovsxwd %xmm0, %xmm1
530 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
531 ; X32-SSE41-NEXT: retl
556 ; SSE41-LABEL: sext_8i16_to_2i64:
557 ; SSE41: # BB#0: # %entry
558 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm0
559 ; SSE41-NEXT: retq
566 ; X32-SSE41-LABEL: sext_8i16_to_2i64:
567 ; X32-SSE41: # BB#0: # %entry
568 ; X32-SSE41-NEXT: pmovsxwq %xmm0, %xmm0
569 ; X32-SSE41-NEXT: retl
609 ; SSE41-LABEL: sext_8i16_to_4i64:
610 ; SSE41: # BB#0: # %entry
611 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm2
612 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
613 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm1
614 ; SSE41-NEXT: movdqa %xmm2, %xmm0
615 ; SSE41-NEXT: retq
635 ; X32-SSE41-LABEL: sext_8i16_to_4i64:
636 ; X32-SSE41: # BB#0: # %entry
637 ; X32-SSE41-NEXT: pmovsxwq %xmm0, %xmm2
638 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
639 ; X32-SSE41-NEXT: pmovsxwq %xmm0, %xmm1
640 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
641 ; X32-SSE41-NEXT: retl
663 ; SSE41-LABEL: sext_4i32_to_2i64:
664 ; SSE41: # BB#0: # %entry
665 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm0
666 ; SSE41-NEXT: retq
673 ; X32-SSE41-LABEL: sext_4i32_to_2i64:
674 ; X32-SSE41: # BB#0: # %entry
675 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm0
676 ; X32-SSE41-NEXT: retl
706 ; SSE41-LABEL: sext_4i32_to_4i64:
707 ; SSE41: # BB#0: # %entry
708 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm2
709 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
710 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm1
711 ; SSE41-NEXT: movdqa %xmm2, %xmm0
712 ; SSE41-NEXT: retq
732 ; X32-SSE41-LABEL: sext_4i32_to_4i64:
733 ; X32-SSE41: # BB#0: # %entry
734 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm2
735 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
736 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm1
737 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
738 ; X32-SSE41-NEXT: retl
793 ; X32-SSE41-LABEL: load_sext_2i1_to_2i64:
794 ; X32-SSE41: # BB#0: # %entry
795 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
796 ; X32-SSE41-NEXT: movzbl (%eax), %eax
797 ; X32-SSE41-NEXT: movl %eax, %ecx
798 ; X32-SSE41-NEXT: shll $31, %ecx
799 ; X32-SSE41-NEXT: sarl $31, %ecx
800 ; X32-SSE41-NEXT: movd %ecx, %xmm0
801 ; X32-SSE41-NEXT: pinsrd $1, %ecx, %xmm0
802 ; X32-SSE41-NEXT: shll $30, %eax
803 ; X32-SSE41-NEXT: sarl $31, %eax
804 ; X32-SSE41-NEXT: pinsrd $2, %eax, %xmm0
805 ; X32-SSE41-NEXT: pinsrd $3, %eax, %xmm0
806 ; X32-SSE41-NEXT: retl
838 ; SSE41-LABEL: load_sext_2i8_to_2i64:
839 ; SSE41: # BB#0: # %entry
840 ; SSE41-NEXT: pmovsxbq (%rdi), %xmm0
841 ; SSE41-NEXT: retq
848 ; X32-SSE41-LABEL: load_sext_2i8_to_2i64:
849 ; X32-SSE41: # BB#0: # %entry
850 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
851 ; X32-SSE41-NEXT: pmovsxbq (%eax), %xmm0
852 ; X32-SSE41-NEXT: retl
906 ; SSE41-LABEL: load_sext_4i1_to_4i32:
907 ; SSE41: # BB#0: # %entry
908 ; SSE41-NEXT: movzbl (%rdi), %eax
909 ; SSE41-NEXT: movq %rax, %rcx
910 ; SSE41-NEXT: shlq $62, %rcx
911 ; SSE41-NEXT: sarq $63, %rcx
912 ; SSE41-NEXT: movq %rax, %rdx
913 ; SSE41-NEXT: shlq $63, %rdx
914 ; SSE41-NEXT: sarq $63, %rdx
915 ; SSE41-NEXT: movd %edx, %xmm0
916 ; SSE41-NEXT: pinsrd $1, %ecx, %xmm0
917 ; SSE41-NEXT: movq %rax, %rcx
918 ; SSE41-NEXT: shlq $61, %rcx
919 ; SSE41-NEXT: sarq $63, %rcx
920 ; SSE41-NEXT: pinsrd $2, %ecx, %xmm0
921 ; SSE41-NEXT: shlq $60, %rax
922 ; SSE41-NEXT: sarq $63, %rax
923 ; SSE41-NEXT: pinsrd $3, %eax, %xmm0
924 ; SSE41-NEXT: retq
976 ; X32-SSE41-LABEL: load_sext_4i1_to_4i32:
977 ; X32-SSE41: # BB#0: # %entry
978 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
979 ; X32-SSE41-NEXT: movl (%eax), %eax
980 ; X32-SSE41-NEXT: movl %eax, %ecx
981 ; X32-SSE41-NEXT: shll $30, %ecx
982 ; X32-SSE41-NEXT: sarl $31, %ecx
983 ; X32-SSE41-NEXT: movl %eax, %edx
984 ; X32-SSE41-NEXT: shll $31, %edx
985 ; X32-SSE41-NEXT: sarl $31, %edx
986 ; X32-SSE41-NEXT: movd %edx, %xmm0
987 ; X32-SSE41-NEXT: pinsrd $1, %ecx, %xmm0
988 ; X32-SSE41-NEXT: movl %eax, %ecx
989 ; X32-SSE41-NEXT: shll $29, %ecx
990 ; X32-SSE41-NEXT: sarl $31, %ecx
991 ; X32-SSE41-NEXT: pinsrd $2, %ecx, %xmm0
992 ; X32-SSE41-NEXT: shll $28, %eax
993 ; X32-SSE41-NEXT: sarl $31, %eax
994 ; X32-SSE41-NEXT: pinsrd $3, %eax, %xmm0
995 ; X32-SSE41-NEXT: retl
1019 ; SSE41-LABEL: load_sext_4i8_to_4i32:
1020 ; SSE41: # BB#0: # %entry
1021 ; SSE41-NEXT: pmovsxbd (%rdi), %xmm0
1022 ; SSE41-NEXT: retq
1029 ; X32-SSE41-LABEL: load_sext_4i8_to_4i32:
1030 ; X32-SSE41: # BB#0: # %entry
1031 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1032 ; X32-SSE41-NEXT: pmovsxbd (%eax), %xmm0
1033 ; X32-SSE41-NEXT: retl
1093 ; SSE41-LABEL: load_sext_4i1_to_4i64:
1094 ; SSE41: # BB#0: # %entry
1095 ; SSE41-NEXT: movl (%rdi), %eax
1096 ; SSE41-NEXT: movl %eax, %ecx
1097 ; SSE41-NEXT: shrl %ecx
1098 ; SSE41-NEXT: movd %eax, %xmm1
1099 ; SSE41-NEXT: pinsrd $1, %ecx, %xmm1
1100 ; SSE41-NEXT: movl %eax, %ecx
1101 ; SSE41-NEXT: shrl $2, %ecx
1102 ; SSE41-NEXT: pinsrd $2, %ecx, %xmm1
1103 ; SSE41-NEXT: shrl $3, %eax
1104 ; SSE41-NEXT: pinsrd $3, %eax, %xmm1
1105 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
1106 ; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
1107 ; SSE41-NEXT: psllq $63, %xmm0
1108 ; SSE41-NEXT: psrad $31, %xmm0
1109 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1110 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1111 ; SSE41-NEXT: psllq $63, %xmm1
1112 ; SSE41-NEXT: psrad $31, %xmm1
1113 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1114 ; SSE41-NEXT: retq
1172 ; X32-SSE41-LABEL: load_sext_4i1_to_4i64:
1173 ; X32-SSE41: # BB#0: # %entry
1174 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1175 ; X32-SSE41-NEXT: movzbl (%eax), %eax
1176 ; X32-SSE41-NEXT: movl %eax, %ecx
1177 ; X32-SSE41-NEXT: shrl %ecx
1178 ; X32-SSE41-NEXT: movd %eax, %xmm1
1179 ; X32-SSE41-NEXT: pinsrd $1, %ecx, %xmm1
1180 ; X32-SSE41-NEXT: movl %eax, %ecx
1181 ; X32-SSE41-NEXT: shrl $2, %ecx
1182 ; X32-SSE41-NEXT: pinsrd $2, %ecx, %xmm1
1183 ; X32-SSE41-NEXT: shrl $3, %eax
1184 ; X32-SSE41-NEXT: pinsrd $3, %eax, %xmm1
1185 ; X32-SSE41-NEXT: pand {{\.LCPI.*}}, %xmm1
1186 ; X32-SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
1187 ; X32-SSE41-NEXT: psllq $63, %xmm0
1188 ; X32-SSE41-NEXT: psrad $31, %xmm0
1189 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1190 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1191 ; X32-SSE41-NEXT: psllq $63, %xmm1
1192 ; X32-SSE41-NEXT: psrad $31, %xmm1
1193 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1194 ; X32-SSE41-NEXT: retl
1230 ; SSE41-LABEL: load_sext_4i8_to_4i64:
1231 ; SSE41: # BB#0: # %entry
1232 ; SSE41-NEXT: pmovsxbq (%rdi), %xmm0
1233 ; SSE41-NEXT: pmovsxbq 2(%rdi), %xmm1
1234 ; SSE41-NEXT: retq
1255 ; X32-SSE41-LABEL: load_sext_4i8_to_4i64:
1256 ; X32-SSE41: # BB#0: # %entry
1257 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1258 ; X32-SSE41-NEXT: pmovsxbq (%eax), %xmm0
1259 ; X32-SSE41-NEXT: pmovsxbq 2(%eax), %xmm1
1260 ; X32-SSE41-NEXT: retl
1352 ; SSE41-LABEL: load_sext_8i1_to_8i16:
1353 ; SSE41: # BB#0: # %entry
1354 ; SSE41-NEXT: movsbq (%rdi), %rax
1355 ; SSE41-NEXT: movq %rax, %rcx
1356 ; SSE41-NEXT: shlq $62, %rcx
1357 ; SSE41-NEXT: sarq $63, %rcx
1358 ; SSE41-NEXT: movq %rax, %rdx
1359 ; SSE41-NEXT: shlq $63, %rdx
1360 ; SSE41-NEXT: sarq $63, %rdx
1361 ; SSE41-NEXT: movd %edx, %xmm0
1362 ; SSE41-NEXT: pinsrw $1, %ecx, %xmm0
1363 ; SSE41-NEXT: movq %rax, %rcx
1364 ; SSE41-NEXT: shlq $61, %rcx
1365 ; SSE41-NEXT: sarq $63, %rcx
1366 ; SSE41-NEXT: pinsrw $2, %ecx, %xmm0
1367 ; SSE41-NEXT: movq %rax, %rcx
1368 ; SSE41-NEXT: shlq $60, %rcx
1369 ; SSE41-NEXT: sarq $63, %rcx
1370 ; SSE41-NEXT: pinsrw $3, %ecx, %xmm0
1371 ; SSE41-NEXT: movq %rax, %rcx
1372 ; SSE41-NEXT: shlq $59, %rcx
1373 ; SSE41-NEXT: sarq $63, %rcx
1374 ; SSE41-NEXT: pinsrw $4, %ecx, %xmm0
1375 ; SSE41-NEXT: movq %rax, %rcx
1376 ; SSE41-NEXT: shlq $58, %rcx
1377 ; SSE41-NEXT: sarq $63, %rcx
1378 ; SSE41-NEXT: pinsrw $5, %ecx, %xmm0
1379 ; SSE41-NEXT: movq %rax, %rcx
1380 ; SSE41-NEXT: shlq $57, %rcx
1381 ; SSE41-NEXT: sarq $63, %rcx
1382 ; SSE41-NEXT: pinsrw $6, %ecx, %xmm0
1383 ; SSE41-NEXT: shrq $7, %rax
1384 ; SSE41-NEXT: pinsrw $7, %eax, %xmm0
1385 ; SSE41-NEXT: retq
1466 ; X32-SSE41-LABEL: load_sext_8i1_to_8i16:
1467 ; X32-SSE41: # BB#0: # %entry
1468 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1469 ; X32-SSE41-NEXT: movsbl (%eax), %eax
1470 ; X32-SSE41-NEXT: movl %eax, %ecx
1471 ; X32-SSE41-NEXT: shll $30, %ecx
1472 ; X32-SSE41-NEXT: sarl $31, %ecx
1473 ; X32-SSE41-NEXT: movl %eax, %edx
1474 ; X32-SSE41-NEXT: shll $31, %edx
1475 ; X32-SSE41-NEXT: sarl $31, %edx
1476 ; X32-SSE41-NEXT: movd %edx, %xmm0
1477 ; X32-SSE41-NEXT: pinsrw $1, %ecx, %xmm0
1478 ; X32-SSE41-NEXT: movl %eax, %ecx
1479 ; X32-SSE41-NEXT: shll $29, %ecx
1480 ; X32-SSE41-NEXT: sarl $31, %ecx
1481 ; X32-SSE41-NEXT: pinsrw $2, %ecx, %xmm0
1482 ; X32-SSE41-NEXT: movl %eax, %ecx
1483 ; X32-SSE41-NEXT: shll $28, %ecx
1484 ; X32-SSE41-NEXT: sarl $31, %ecx
1485 ; X32-SSE41-NEXT: pinsrw $3, %ecx, %xmm0
1486 ; X32-SSE41-NEXT: movl %eax, %ecx
1487 ; X32-SSE41-NEXT: shll $27, %ecx
1488 ; X32-SSE41-NEXT: sarl $31, %ecx
1489 ; X32-SSE41-NEXT: pinsrw $4, %ecx, %xmm0
1490 ; X32-SSE41-NEXT: movl %eax, %ecx
1491 ; X32-SSE41-NEXT: shll $26, %ecx
1492 ; X32-SSE41-NEXT: sarl $31, %ecx
1493 ; X32-SSE41-NEXT: pinsrw $5, %ecx, %xmm0
1494 ; X32-SSE41-NEXT: movl %eax, %ecx
1495 ; X32-SSE41-NEXT: shll $25, %ecx
1496 ; X32-SSE41-NEXT: sarl $31, %ecx
1497 ; X32-SSE41-NEXT: pinsrw $6, %ecx, %xmm0
1498 ; X32-SSE41-NEXT: shrl $7, %eax
1499 ; X32-SSE41-NEXT: pinsrw $7, %eax, %xmm0
1500 ; X32-SSE41-NEXT: retl
1522 ; SSE41-LABEL: load_sext_8i8_to_8i16:
1523 ; SSE41: # BB#0: # %entry
1524 ; SSE41-NEXT: pmovsxbw (%rdi), %xmm0
1525 ; SSE41-NEXT: retq
1532 ; X32-SSE41-LABEL: load_sext_8i8_to_8i16:
1533 ; X32-SSE41: # BB#0: # %entry
1534 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1535 ; X32-SSE41-NEXT: pmovsxbw (%eax), %xmm0
1536 ; X32-SSE41-NEXT: retl
1592 ; SSE41-LABEL: load_sext_8i8_to_8i64:
1593 ; SSE41: # BB#0: # %entry
1594 ; SSE41-NEXT: pmovsxbq (%rdi), %xmm0
1595 ; SSE41-NEXT: pmovsxbq 2(%rdi), %xmm1
1596 ; SSE41-NEXT: pmovsxbq 4(%rdi), %xmm2
1597 ; SSE41-NEXT: pmovsxbq 6(%rdi), %xmm3
1598 ; SSE41-NEXT: retq
1625 ; X32-SSE41-LABEL: load_sext_8i8_to_8i64:
1626 ; X32-SSE41: # BB#0: # %entry
1627 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1628 ; X32-SSE41-NEXT: pmovsxbq (%eax), %xmm0
1629 ; X32-SSE41-NEXT: pmovsxbq 2(%eax), %xmm1
1630 ; X32-SSE41-NEXT: pmovsxbq 4(%eax), %xmm2
1631 ; X32-SSE41-NEXT: pmovsxbq 6(%eax), %xmm3
1632 ; X32-SSE41-NEXT: retl
1738 ; SSE41-LABEL: load_sext_8i1_to_8i32:
1739 ; SSE41: # BB#0: # %entry
1740 ; SSE41-NEXT: movzbl (%rdi), %eax
1741 ; SSE41-NEXT: movl %eax, %ecx
1742 ; SSE41-NEXT: shrl %ecx
1743 ; SSE41-NEXT: andl $1, %ecx
1744 ; SSE41-NEXT: movl %eax, %edx
1745 ; SSE41-NEXT: andl $1, %edx
1746 ; SSE41-NEXT: movd %edx, %xmm1
1747 ; SSE41-NEXT: pinsrw $1, %ecx, %xmm1
1748 ; SSE41-NEXT: movl %eax, %ecx
1749 ; SSE41-NEXT: shrl $2, %ecx
1750 ; SSE41-NEXT: andl $1, %ecx
1751 ; SSE41-NEXT: pinsrw $2, %ecx, %xmm1
1752 ; SSE41-NEXT: movl %eax, %ecx
1753 ; SSE41-NEXT: shrl $3, %ecx
1754 ; SSE41-NEXT: andl $1, %ecx
1755 ; SSE41-NEXT: pinsrw $3, %ecx, %xmm1
1756 ; SSE41-NEXT: movl %eax, %ecx
1757 ; SSE41-NEXT: shrl $4, %ecx
1758 ; SSE41-NEXT: andl $1, %ecx
1759 ; SSE41-NEXT: pinsrw $4, %ecx, %xmm1
1760 ; SSE41-NEXT: movl %eax, %ecx
1761 ; SSE41-NEXT: shrl $5, %ecx
1762 ; SSE41-NEXT: andl $1, %ecx
1763 ; SSE41-NEXT: pinsrw $5, %ecx, %xmm1
1764 ; SSE41-NEXT: movl %eax, %ecx
1765 ; SSE41-NEXT: shrl $6, %ecx
1766 ; SSE41-NEXT: andl $1, %ecx
1767 ; SSE41-NEXT: pinsrw $6, %ecx, %xmm1
1768 ; SSE41-NEXT: shrl $7, %eax
1769 ; SSE41-NEXT: movzwl %ax, %eax
1770 ; SSE41-NEXT: pinsrw $7, %eax, %xmm1
1771 ; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
1772 ; SSE41-NEXT: pslld $31, %xmm0
1773 ; SSE41-NEXT: psrad $31, %xmm0
1774 ; SSE41-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],…
1775 ; SSE41-NEXT: pslld $31, %xmm1
1776 ; SSE41-NEXT: psrad $31, %xmm1
1777 ; SSE41-NEXT: retq
1860 ; X32-SSE41-LABEL: load_sext_8i1_to_8i32:
1861 ; X32-SSE41: # BB#0: # %entry
1862 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1863 ; X32-SSE41-NEXT: movzbl (%eax), %eax
1864 ; X32-SSE41-NEXT: movl %eax, %ecx
1865 ; X32-SSE41-NEXT: shrl %ecx
1866 ; X32-SSE41-NEXT: andl $1, %ecx
1867 ; X32-SSE41-NEXT: movl %eax, %edx
1868 ; X32-SSE41-NEXT: andl $1, %edx
1869 ; X32-SSE41-NEXT: movd %edx, %xmm1
1870 ; X32-SSE41-NEXT: pinsrw $1, %ecx, %xmm1
1871 ; X32-SSE41-NEXT: movl %eax, %ecx
1872 ; X32-SSE41-NEXT: shrl $2, %ecx
1873 ; X32-SSE41-NEXT: andl $1, %ecx
1874 ; X32-SSE41-NEXT: pinsrw $2, %ecx, %xmm1
1875 ; X32-SSE41-NEXT: movl %eax, %ecx
1876 ; X32-SSE41-NEXT: shrl $3, %ecx
1877 ; X32-SSE41-NEXT: andl $1, %ecx
1878 ; X32-SSE41-NEXT: pinsrw $3, %ecx, %xmm1
1879 ; X32-SSE41-NEXT: movl %eax, %ecx
1880 ; X32-SSE41-NEXT: shrl $4, %ecx
1881 ; X32-SSE41-NEXT: andl $1, %ecx
1882 ; X32-SSE41-NEXT: pinsrw $4, %ecx, %xmm1
1883 ; X32-SSE41-NEXT: movl %eax, %ecx
1884 ; X32-SSE41-NEXT: shrl $5, %ecx
1885 ; X32-SSE41-NEXT: andl $1, %ecx
1886 ; X32-SSE41-NEXT: pinsrw $5, %ecx, %xmm1
1887 ; X32-SSE41-NEXT: movl %eax, %ecx
1888 ; X32-SSE41-NEXT: shrl $6, %ecx
1889 ; X32-SSE41-NEXT: andl $1, %ecx
1890 ; X32-SSE41-NEXT: pinsrw $6, %ecx, %xmm1
1891 ; X32-SSE41-NEXT: shrl $7, %eax
1892 ; X32-SSE41-NEXT: pinsrw $7, %eax, %xmm1
1893 ; X32-SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
1894 ; X32-SSE41-NEXT: pslld $31, %xmm0
1895 ; X32-SSE41-NEXT: psrad $31, %xmm0
1896 ; X32-SSE41-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1…
1897 ; X32-SSE41-NEXT: pslld $31, %xmm1
1898 ; X32-SSE41-NEXT: psrad $31, %xmm1
1899 ; X32-SSE41-NEXT: retl
1931 ; SSE41-LABEL: load_sext_8i8_to_8i32:
1932 ; SSE41: # BB#0: # %entry
1933 ; SSE41-NEXT: pmovsxbd (%rdi), %xmm0
1934 ; SSE41-NEXT: pmovsxbd 4(%rdi), %xmm1
1935 ; SSE41-NEXT: retq
1956 ; X32-SSE41-LABEL: load_sext_8i8_to_8i32:
1957 ; X32-SSE41: # BB#0: # %entry
1958 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1959 ; X32-SSE41-NEXT: pmovsxbd (%eax), %xmm0
1960 ; X32-SSE41-NEXT: pmovsxbd 4(%eax), %xmm1
1961 ; X32-SSE41-NEXT: retl
2157 ; SSE41-LABEL: load_sext_16i1_to_16i8:
2158 ; SSE41: # BB#0: # %entry
2159 ; SSE41-NEXT: movswq (%rdi), %rax
2160 ; SSE41-NEXT: movq %rax, %rcx
2161 ; SSE41-NEXT: shlq $62, %rcx
2162 ; SSE41-NEXT: sarq $63, %rcx
2163 ; SSE41-NEXT: movq %rax, %rdx
2164 ; SSE41-NEXT: shlq $63, %rdx
2165 ; SSE41-NEXT: sarq $63, %rdx
2166 ; SSE41-NEXT: movd %edx, %xmm0
2167 ; SSE41-NEXT: pinsrb $1, %ecx, %xmm0
2168 ; SSE41-NEXT: movq %rax, %rcx
2169 ; SSE41-NEXT: shlq $61, %rcx
2170 ; SSE41-NEXT: sarq $63, %rcx
2171 ; SSE41-NEXT: pinsrb $2, %ecx, %xmm0
2172 ; SSE41-NEXT: movq %rax, %rcx
2173 ; SSE41-NEXT: shlq $60, %rcx
2174 ; SSE41-NEXT: sarq $63, %rcx
2175 ; SSE41-NEXT: pinsrb $3, %ecx, %xmm0
2176 ; SSE41-NEXT: movq %rax, %rcx
2177 ; SSE41-NEXT: shlq $59, %rcx
2178 ; SSE41-NEXT: sarq $63, %rcx
2179 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm0
2180 ; SSE41-NEXT: movq %rax, %rcx
2181 ; SSE41-NEXT: shlq $58, %rcx
2182 ; SSE41-NEXT: sarq $63, %rcx
2183 ; SSE41-NEXT: pinsrb $5, %ecx, %xmm0
2184 ; SSE41-NEXT: movq %rax, %rcx
2185 ; SSE41-NEXT: shlq $57, %rcx
2186 ; SSE41-NEXT: sarq $63, %rcx
2187 ; SSE41-NEXT: pinsrb $6, %ecx, %xmm0
2188 ; SSE41-NEXT: movsbq %al, %rcx
2189 ; SSE41-NEXT: shrq $7, %rcx
2190 ; SSE41-NEXT: pinsrb $7, %ecx, %xmm0
2191 ; SSE41-NEXT: movq %rax, %rcx
2192 ; SSE41-NEXT: shlq $55, %rcx
2193 ; SSE41-NEXT: sarq $63, %rcx
2194 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm0
2195 ; SSE41-NEXT: movq %rax, %rcx
2196 ; SSE41-NEXT: shlq $54, %rcx
2197 ; SSE41-NEXT: sarq $63, %rcx
2198 ; SSE41-NEXT: pinsrb $9, %ecx, %xmm0
2199 ; SSE41-NEXT: movq %rax, %rcx
2200 ; SSE41-NEXT: shlq $53, %rcx
2201 ; SSE41-NEXT: sarq $63, %rcx
2202 ; SSE41-NEXT: pinsrb $10, %ecx, %xmm0
2203 ; SSE41-NEXT: movq %rax, %rcx
2204 ; SSE41-NEXT: shlq $52, %rcx
2205 ; SSE41-NEXT: sarq $63, %rcx
2206 ; SSE41-NEXT: pinsrb $11, %ecx, %xmm0
2207 ; SSE41-NEXT: movq %rax, %rcx
2208 ; SSE41-NEXT: shlq $51, %rcx
2209 ; SSE41-NEXT: sarq $63, %rcx
2210 ; SSE41-NEXT: pinsrb $12, %ecx, %xmm0
2211 ; SSE41-NEXT: movq %rax, %rcx
2212 ; SSE41-NEXT: shlq $50, %rcx
2213 ; SSE41-NEXT: sarq $63, %rcx
2214 ; SSE41-NEXT: pinsrb $13, %ecx, %xmm0
2215 ; SSE41-NEXT: movq %rax, %rcx
2216 ; SSE41-NEXT: shlq $49, %rcx
2217 ; SSE41-NEXT: sarq $63, %rcx
2218 ; SSE41-NEXT: pinsrb $14, %ecx, %xmm0
2219 ; SSE41-NEXT: shrq $15, %rax
2220 ; SSE41-NEXT: pinsrb $15, %eax, %xmm0
2221 ; SSE41-NEXT: retq
2363 ; X32-SSE41-LABEL: load_sext_16i1_to_16i8:
2364 ; X32-SSE41: # BB#0: # %entry
2365 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2366 ; X32-SSE41-NEXT: movswl (%eax), %eax
2367 ; X32-SSE41-NEXT: movl %eax, %ecx
2368 ; X32-SSE41-NEXT: shll $30, %ecx
2369 ; X32-SSE41-NEXT: sarl $31, %ecx
2370 ; X32-SSE41-NEXT: movl %eax, %edx
2371 ; X32-SSE41-NEXT: shll $31, %edx
2372 ; X32-SSE41-NEXT: sarl $31, %edx
2373 ; X32-SSE41-NEXT: movd %edx, %xmm0
2374 ; X32-SSE41-NEXT: pinsrb $1, %ecx, %xmm0
2375 ; X32-SSE41-NEXT: movl %eax, %ecx
2376 ; X32-SSE41-NEXT: shll $29, %ecx
2377 ; X32-SSE41-NEXT: sarl $31, %ecx
2378 ; X32-SSE41-NEXT: pinsrb $2, %ecx, %xmm0
2379 ; X32-SSE41-NEXT: movl %eax, %ecx
2380 ; X32-SSE41-NEXT: shll $28, %ecx
2381 ; X32-SSE41-NEXT: sarl $31, %ecx
2382 ; X32-SSE41-NEXT: pinsrb $3, %ecx, %xmm0
2383 ; X32-SSE41-NEXT: movl %eax, %ecx
2384 ; X32-SSE41-NEXT: shll $27, %ecx
2385 ; X32-SSE41-NEXT: sarl $31, %ecx
2386 ; X32-SSE41-NEXT: pinsrb $4, %ecx, %xmm0
2387 ; X32-SSE41-NEXT: movl %eax, %ecx
2388 ; X32-SSE41-NEXT: shll $26, %ecx
2389 ; X32-SSE41-NEXT: sarl $31, %ecx
2390 ; X32-SSE41-NEXT: pinsrb $5, %ecx, %xmm0
2391 ; X32-SSE41-NEXT: movl %eax, %ecx
2392 ; X32-SSE41-NEXT: shll $25, %ecx
2393 ; X32-SSE41-NEXT: sarl $31, %ecx
2394 ; X32-SSE41-NEXT: pinsrb $6, %ecx, %xmm0
2395 ; X32-SSE41-NEXT: movsbl %al, %ecx
2396 ; X32-SSE41-NEXT: shrl $7, %ecx
2397 ; X32-SSE41-NEXT: pinsrb $7, %ecx, %xmm0
2398 ; X32-SSE41-NEXT: movl %eax, %ecx
2399 ; X32-SSE41-NEXT: shll $23, %ecx
2400 ; X32-SSE41-NEXT: sarl $31, %ecx
2401 ; X32-SSE41-NEXT: pinsrb $8, %ecx, %xmm0
2402 ; X32-SSE41-NEXT: movl %eax, %ecx
2403 ; X32-SSE41-NEXT: shll $22, %ecx
2404 ; X32-SSE41-NEXT: sarl $31, %ecx
2405 ; X32-SSE41-NEXT: pinsrb $9, %ecx, %xmm0
2406 ; X32-SSE41-NEXT: movl %eax, %ecx
2407 ; X32-SSE41-NEXT: shll $21, %ecx
2408 ; X32-SSE41-NEXT: sarl $31, %ecx
2409 ; X32-SSE41-NEXT: pinsrb $10, %ecx, %xmm0
2410 ; X32-SSE41-NEXT: movl %eax, %ecx
2411 ; X32-SSE41-NEXT: shll $20, %ecx
2412 ; X32-SSE41-NEXT: sarl $31, %ecx
2413 ; X32-SSE41-NEXT: pinsrb $11, %ecx, %xmm0
2414 ; X32-SSE41-NEXT: movl %eax, %ecx
2415 ; X32-SSE41-NEXT: shll $19, %ecx
2416 ; X32-SSE41-NEXT: sarl $31, %ecx
2417 ; X32-SSE41-NEXT: pinsrb $12, %ecx, %xmm0
2418 ; X32-SSE41-NEXT: movl %eax, %ecx
2419 ; X32-SSE41-NEXT: shll $18, %ecx
2420 ; X32-SSE41-NEXT: sarl $31, %ecx
2421 ; X32-SSE41-NEXT: pinsrb $13, %ecx, %xmm0
2422 ; X32-SSE41-NEXT: movl %eax, %ecx
2423 ; X32-SSE41-NEXT: shll $17, %ecx
2424 ; X32-SSE41-NEXT: sarl $31, %ecx
2425 ; X32-SSE41-NEXT: pinsrb $14, %ecx, %xmm0
2426 ; X32-SSE41-NEXT: shrl $15, %eax
2427 ; X32-SSE41-NEXT: pinsrb $15, %eax, %xmm0
2428 ; X32-SSE41-NEXT: retl
2614 ; SSE41-LABEL: load_sext_16i1_to_16i16:
2615 ; SSE41: # BB#0: # %entry
2616 ; SSE41-NEXT: movzwl (%rdi), %eax
2617 ; SSE41-NEXT: movl %eax, %ecx
2618 ; SSE41-NEXT: shrl %ecx
2619 ; SSE41-NEXT: andl $1, %ecx
2620 ; SSE41-NEXT: movl %eax, %edx
2621 ; SSE41-NEXT: andl $1, %edx
2622 ; SSE41-NEXT: movd %edx, %xmm1
2623 ; SSE41-NEXT: pinsrb $1, %ecx, %xmm1
2624 ; SSE41-NEXT: movl %eax, %ecx
2625 ; SSE41-NEXT: shrl $2, %ecx
2626 ; SSE41-NEXT: andl $1, %ecx
2627 ; SSE41-NEXT: pinsrb $2, %ecx, %xmm1
2628 ; SSE41-NEXT: movl %eax, %ecx
2629 ; SSE41-NEXT: shrl $3, %ecx
2630 ; SSE41-NEXT: andl $1, %ecx
2631 ; SSE41-NEXT: pinsrb $3, %ecx, %xmm1
2632 ; SSE41-NEXT: movl %eax, %ecx
2633 ; SSE41-NEXT: shrl $4, %ecx
2634 ; SSE41-NEXT: andl $1, %ecx
2635 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm1
2636 ; SSE41-NEXT: movl %eax, %ecx
2637 ; SSE41-NEXT: shrl $5, %ecx
2638 ; SSE41-NEXT: andl $1, %ecx
2639 ; SSE41-NEXT: pinsrb $5, %ecx, %xmm1
2640 ; SSE41-NEXT: movl %eax, %ecx
2641 ; SSE41-NEXT: shrl $6, %ecx
2642 ; SSE41-NEXT: andl $1, %ecx
2643 ; SSE41-NEXT: pinsrb $6, %ecx, %xmm1
2644 ; SSE41-NEXT: movl %eax, %ecx
2645 ; SSE41-NEXT: shrl $7, %ecx
2646 ; SSE41-NEXT: andl $1, %ecx
2647 ; SSE41-NEXT: pinsrb $7, %ecx, %xmm1
2648 ; SSE41-NEXT: movl %eax, %ecx
2649 ; SSE41-NEXT: shrl $8, %ecx
2650 ; SSE41-NEXT: andl $1, %ecx
2651 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm1
2652 ; SSE41-NEXT: movl %eax, %ecx
2653 ; SSE41-NEXT: shrl $9, %ecx
2654 ; SSE41-NEXT: andl $1, %ecx
2655 ; SSE41-NEXT: pinsrb $9, %ecx, %xmm1
2656 ; SSE41-NEXT: movl %eax, %ecx
2657 ; SSE41-NEXT: shrl $10, %ecx
2658 ; SSE41-NEXT: andl $1, %ecx
2659 ; SSE41-NEXT: pinsrb $10, %ecx, %xmm1
2660 ; SSE41-NEXT: movl %eax, %ecx
2661 ; SSE41-NEXT: shrl $11, %ecx
2662 ; SSE41-NEXT: andl $1, %ecx
2663 ; SSE41-NEXT: pinsrb $11, %ecx, %xmm1
2664 ; SSE41-NEXT: movl %eax, %ecx
2665 ; SSE41-NEXT: shrl $12, %ecx
2666 ; SSE41-NEXT: andl $1, %ecx
2667 ; SSE41-NEXT: pinsrb $12, %ecx, %xmm1
2668 ; SSE41-NEXT: movl %eax, %ecx
2669 ; SSE41-NEXT: shrl $13, %ecx
2670 ; SSE41-NEXT: andl $1, %ecx
2671 ; SSE41-NEXT: pinsrb $13, %ecx, %xmm1
2672 ; SSE41-NEXT: movl %eax, %ecx
2673 ; SSE41-NEXT: shrl $14, %ecx
2674 ; SSE41-NEXT: andl $1, %ecx
2675 ; SSE41-NEXT: pinsrb $14, %ecx, %xmm1
2676 ; SSE41-NEXT: shrl $15, %eax
2677 ; SSE41-NEXT: movzwl %ax, %eax
2678 ; SSE41-NEXT: pinsrb $15, %eax, %xmm1
2679 ; SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[…
2680 ; SSE41-NEXT: psllw $15, %xmm0
2681 ; SSE41-NEXT: psraw $15, %xmm0
2682 ; SSE41-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2683 ; SSE41-NEXT: psllw $15, %xmm1
2684 ; SSE41-NEXT: psraw $15, %xmm1
2685 ; SSE41-NEXT: retq
2901 ; X32-SSE41-LABEL: load_sext_16i1_to_16i16:
2902 ; X32-SSE41: # BB#0: # %entry
2903 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2904 ; X32-SSE41-NEXT: movzwl (%eax), %eax
2905 ; X32-SSE41-NEXT: movl %eax, %ecx
2906 ; X32-SSE41-NEXT: shrl %ecx
2907 ; X32-SSE41-NEXT: andl $1, %ecx
2908 ; X32-SSE41-NEXT: movl %eax, %edx
2909 ; X32-SSE41-NEXT: andl $1, %edx
2910 ; X32-SSE41-NEXT: movd %edx, %xmm1
2911 ; X32-SSE41-NEXT: pinsrb $1, %ecx, %xmm1
2912 ; X32-SSE41-NEXT: movl %eax, %ecx
2913 ; X32-SSE41-NEXT: shrl $2, %ecx
2914 ; X32-SSE41-NEXT: andl $1, %ecx
2915 ; X32-SSE41-NEXT: pinsrb $2, %ecx, %xmm1
2916 ; X32-SSE41-NEXT: movl %eax, %ecx
2917 ; X32-SSE41-NEXT: shrl $3, %ecx
2918 ; X32-SSE41-NEXT: andl $1, %ecx
2919 ; X32-SSE41-NEXT: pinsrb $3, %ecx, %xmm1
2920 ; X32-SSE41-NEXT: movl %eax, %ecx
2921 ; X32-SSE41-NEXT: shrl $4, %ecx
2922 ; X32-SSE41-NEXT: andl $1, %ecx
2923 ; X32-SSE41-NEXT: pinsrb $4, %ecx, %xmm1
2924 ; X32-SSE41-NEXT: movl %eax, %ecx
2925 ; X32-SSE41-NEXT: shrl $5, %ecx
2926 ; X32-SSE41-NEXT: andl $1, %ecx
2927 ; X32-SSE41-NEXT: pinsrb $5, %ecx, %xmm1
2928 ; X32-SSE41-NEXT: movl %eax, %ecx
2929 ; X32-SSE41-NEXT: shrl $6, %ecx
2930 ; X32-SSE41-NEXT: andl $1, %ecx
2931 ; X32-SSE41-NEXT: pinsrb $6, %ecx, %xmm1
2932 ; X32-SSE41-NEXT: movl %eax, %ecx
2933 ; X32-SSE41-NEXT: shrl $7, %ecx
2934 ; X32-SSE41-NEXT: andl $1, %ecx
2935 ; X32-SSE41-NEXT: pinsrb $7, %ecx, %xmm1
2936 ; X32-SSE41-NEXT: movl %eax, %ecx
2937 ; X32-SSE41-NEXT: shrl $8, %ecx
2938 ; X32-SSE41-NEXT: andl $1, %ecx
2939 ; X32-SSE41-NEXT: pinsrb $8, %ecx, %xmm1
2940 ; X32-SSE41-NEXT: movl %eax, %ecx
2941 ; X32-SSE41-NEXT: shrl $9, %ecx
2942 ; X32-SSE41-NEXT: andl $1, %ecx
2943 ; X32-SSE41-NEXT: pinsrb $9, %ecx, %xmm1
2944 ; X32-SSE41-NEXT: movl %eax, %ecx
2945 ; X32-SSE41-NEXT: shrl $10, %ecx
2946 ; X32-SSE41-NEXT: andl $1, %ecx
2947 ; X32-SSE41-NEXT: pinsrb $10, %ecx, %xmm1
2948 ; X32-SSE41-NEXT: movl %eax, %ecx
2949 ; X32-SSE41-NEXT: shrl $11, %ecx
2950 ; X32-SSE41-NEXT: andl $1, %ecx
2951 ; X32-SSE41-NEXT: pinsrb $11, %ecx, %xmm1
2952 ; X32-SSE41-NEXT: movl %eax, %ecx
2953 ; X32-SSE41-NEXT: shrl $12, %ecx
2954 ; X32-SSE41-NEXT: andl $1, %ecx
2955 ; X32-SSE41-NEXT: pinsrb $12, %ecx, %xmm1
2956 ; X32-SSE41-NEXT: movl %eax, %ecx
2957 ; X32-SSE41-NEXT: shrl $13, %ecx
2958 ; X32-SSE41-NEXT: andl $1, %ecx
2959 ; X32-SSE41-NEXT: pinsrb $13, %ecx, %xmm1
2960 ; X32-SSE41-NEXT: movl %eax, %ecx
2961 ; X32-SSE41-NEXT: shrl $14, %ecx
2962 ; X32-SSE41-NEXT: andl $1, %ecx
2963 ; X32-SSE41-NEXT: pinsrb $14, %ecx, %xmm1
2964 ; X32-SSE41-NEXT: shrl $15, %eax
2965 ; X32-SSE41-NEXT: pinsrb $15, %eax, %xmm1
2966 ; X32-SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,x…
2967 ; X32-SSE41-NEXT: psllw $15, %xmm0
2968 ; X32-SSE41-NEXT: psraw $15, %xmm0
2969 ; X32-SSE41-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2970 ; X32-SSE41-NEXT: psllw $15, %xmm1
2971 ; X32-SSE41-NEXT: psraw $15, %xmm1
2972 ; X32-SSE41-NEXT: retl
3324 ; SSE41-LABEL: load_sext_32i1_to_32i8:
3325 ; SSE41: # BB#0: # %entry
3326 ; SSE41-NEXT: movswq (%rdi), %rax
3327 ; SSE41-NEXT: movq %rax, %rcx
3328 ; SSE41-NEXT: shlq $62, %rcx
3329 ; SSE41-NEXT: sarq $63, %rcx
3330 ; SSE41-NEXT: movq %rax, %rdx
3331 ; SSE41-NEXT: shlq $63, %rdx
3332 ; SSE41-NEXT: sarq $63, %rdx
3333 ; SSE41-NEXT: movd %edx, %xmm0
3334 ; SSE41-NEXT: pinsrb $1, %ecx, %xmm0
3335 ; SSE41-NEXT: movq %rax, %rcx
3336 ; SSE41-NEXT: shlq $61, %rcx
3337 ; SSE41-NEXT: sarq $63, %rcx
3338 ; SSE41-NEXT: pinsrb $2, %ecx, %xmm0
3339 ; SSE41-NEXT: movq %rax, %rcx
3340 ; SSE41-NEXT: shlq $60, %rcx
3341 ; SSE41-NEXT: sarq $63, %rcx
3342 ; SSE41-NEXT: pinsrb $3, %ecx, %xmm0
3343 ; SSE41-NEXT: movq %rax, %rcx
3344 ; SSE41-NEXT: shlq $59, %rcx
3345 ; SSE41-NEXT: sarq $63, %rcx
3346 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm0
3347 ; SSE41-NEXT: movq %rax, %rcx
3348 ; SSE41-NEXT: shlq $58, %rcx
3349 ; SSE41-NEXT: sarq $63, %rcx
3350 ; SSE41-NEXT: pinsrb $5, %ecx, %xmm0
3351 ; SSE41-NEXT: movq %rax, %rcx
3352 ; SSE41-NEXT: shlq $57, %rcx
3353 ; SSE41-NEXT: sarq $63, %rcx
3354 ; SSE41-NEXT: pinsrb $6, %ecx, %xmm0
3355 ; SSE41-NEXT: movsbq %al, %rcx
3356 ; SSE41-NEXT: shrq $7, %rcx
3357 ; SSE41-NEXT: pinsrb $7, %ecx, %xmm0
3358 ; SSE41-NEXT: movq %rax, %rcx
3359 ; SSE41-NEXT: shlq $55, %rcx
3360 ; SSE41-NEXT: sarq $63, %rcx
3361 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm0
3362 ; SSE41-NEXT: movq %rax, %rcx
3363 ; SSE41-NEXT: shlq $54, %rcx
3364 ; SSE41-NEXT: sarq $63, %rcx
3365 ; SSE41-NEXT: pinsrb $9, %ecx, %xmm0
3366 ; SSE41-NEXT: movq %rax, %rcx
3367 ; SSE41-NEXT: shlq $53, %rcx
3368 ; SSE41-NEXT: sarq $63, %rcx
3369 ; SSE41-NEXT: pinsrb $10, %ecx, %xmm0
3370 ; SSE41-NEXT: movq %rax, %rcx
3371 ; SSE41-NEXT: shlq $52, %rcx
3372 ; SSE41-NEXT: sarq $63, %rcx
3373 ; SSE41-NEXT: pinsrb $11, %ecx, %xmm0
3374 ; SSE41-NEXT: movq %rax, %rcx
3375 ; SSE41-NEXT: shlq $51, %rcx
3376 ; SSE41-NEXT: sarq $63, %rcx
3377 ; SSE41-NEXT: pinsrb $12, %ecx, %xmm0
3378 ; SSE41-NEXT: movq %rax, %rcx
3379 ; SSE41-NEXT: shlq $50, %rcx
3380 ; SSE41-NEXT: sarq $63, %rcx
3381 ; SSE41-NEXT: pinsrb $13, %ecx, %xmm0
3382 ; SSE41-NEXT: movq %rax, %rcx
3383 ; SSE41-NEXT: shlq $49, %rcx
3384 ; SSE41-NEXT: sarq $63, %rcx
3385 ; SSE41-NEXT: pinsrb $14, %ecx, %xmm0
3386 ; SSE41-NEXT: shrq $15, %rax
3387 ; SSE41-NEXT: pinsrb $15, %eax, %xmm0
3388 ; SSE41-NEXT: movswq 2(%rdi), %rax
3389 ; SSE41-NEXT: movq %rax, %rcx
3390 ; SSE41-NEXT: shlq $62, %rcx
3391 ; SSE41-NEXT: sarq $63, %rcx
3392 ; SSE41-NEXT: movq %rax, %rdx
3393 ; SSE41-NEXT: shlq $63, %rdx
3394 ; SSE41-NEXT: sarq $63, %rdx
3395 ; SSE41-NEXT: movd %edx, %xmm1
3396 ; SSE41-NEXT: pinsrb $1, %ecx, %xmm1
3397 ; SSE41-NEXT: movq %rax, %rcx
3398 ; SSE41-NEXT: shlq $61, %rcx
3399 ; SSE41-NEXT: sarq $63, %rcx
3400 ; SSE41-NEXT: pinsrb $2, %ecx, %xmm1
3401 ; SSE41-NEXT: movq %rax, %rcx
3402 ; SSE41-NEXT: shlq $60, %rcx
3403 ; SSE41-NEXT: sarq $63, %rcx
3404 ; SSE41-NEXT: pinsrb $3, %ecx, %xmm1
3405 ; SSE41-NEXT: movq %rax, %rcx
3406 ; SSE41-NEXT: shlq $59, %rcx
3407 ; SSE41-NEXT: sarq $63, %rcx
3408 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm1
3409 ; SSE41-NEXT: movq %rax, %rcx
3410 ; SSE41-NEXT: shlq $58, %rcx
3411 ; SSE41-NEXT: sarq $63, %rcx
3412 ; SSE41-NEXT: pinsrb $5, %ecx, %xmm1
3413 ; SSE41-NEXT: movq %rax, %rcx
3414 ; SSE41-NEXT: shlq $57, %rcx
3415 ; SSE41-NEXT: sarq $63, %rcx
3416 ; SSE41-NEXT: pinsrb $6, %ecx, %xmm1
3417 ; SSE41-NEXT: movsbq %al, %rcx
3418 ; SSE41-NEXT: shrq $7, %rcx
3419 ; SSE41-NEXT: pinsrb $7, %ecx, %xmm1
3420 ; SSE41-NEXT: movq %rax, %rcx
3421 ; SSE41-NEXT: shlq $55, %rcx
3422 ; SSE41-NEXT: sarq $63, %rcx
3423 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm1
3424 ; SSE41-NEXT: movq %rax, %rcx
3425 ; SSE41-NEXT: shlq $54, %rcx
3426 ; SSE41-NEXT: sarq $63, %rcx
3427 ; SSE41-NEXT: pinsrb $9, %ecx, %xmm1
3428 ; SSE41-NEXT: movq %rax, %rcx
3429 ; SSE41-NEXT: shlq $53, %rcx
3430 ; SSE41-NEXT: sarq $63, %rcx
3431 ; SSE41-NEXT: pinsrb $10, %ecx, %xmm1
3432 ; SSE41-NEXT: movq %rax, %rcx
3433 ; SSE41-NEXT: shlq $52, %rcx
3434 ; SSE41-NEXT: sarq $63, %rcx
3435 ; SSE41-NEXT: pinsrb $11, %ecx, %xmm1
3436 ; SSE41-NEXT: movq %rax, %rcx
3437 ; SSE41-NEXT: shlq $51, %rcx
3438 ; SSE41-NEXT: sarq $63, %rcx
3439 ; SSE41-NEXT: pinsrb $12, %ecx, %xmm1
3440 ; SSE41-NEXT: movq %rax, %rcx
3441 ; SSE41-NEXT: shlq $50, %rcx
3442 ; SSE41-NEXT: sarq $63, %rcx
3443 ; SSE41-NEXT: pinsrb $13, %ecx, %xmm1
3444 ; SSE41-NEXT: movq %rax, %rcx
3445 ; SSE41-NEXT: shlq $49, %rcx
3446 ; SSE41-NEXT: sarq $63, %rcx
3447 ; SSE41-NEXT: pinsrb $14, %ecx, %xmm1
3448 ; SSE41-NEXT: shrq $15, %rax
3449 ; SSE41-NEXT: pinsrb $15, %eax, %xmm1
3450 ; SSE41-NEXT: retq
3750 ; X32-SSE41-LABEL: load_sext_32i1_to_32i8:
3751 ; X32-SSE41: # BB#0: # %entry
3752 ; X32-SSE41-NEXT: pushl %esi
3753 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3754 ; X32-SSE41-NEXT: movswl (%eax), %ecx
3755 ; X32-SSE41-NEXT: movl %ecx, %edx
3756 ; X32-SSE41-NEXT: shll $30, %edx
3757 ; X32-SSE41-NEXT: sarl $31, %edx
3758 ; X32-SSE41-NEXT: movl %ecx, %esi
3759 ; X32-SSE41-NEXT: shll $31, %esi
3760 ; X32-SSE41-NEXT: sarl $31, %esi
3761 ; X32-SSE41-NEXT: movd %esi, %xmm0
3762 ; X32-SSE41-NEXT: pinsrb $1, %edx, %xmm0
3763 ; X32-SSE41-NEXT: movl %ecx, %edx
3764 ; X32-SSE41-NEXT: shll $29, %edx
3765 ; X32-SSE41-NEXT: sarl $31, %edx
3766 ; X32-SSE41-NEXT: pinsrb $2, %edx, %xmm0
3767 ; X32-SSE41-NEXT: movl %ecx, %edx
3768 ; X32-SSE41-NEXT: shll $28, %edx
3769 ; X32-SSE41-NEXT: sarl $31, %edx
3770 ; X32-SSE41-NEXT: pinsrb $3, %edx, %xmm0
3771 ; X32-SSE41-NEXT: movl %ecx, %edx
3772 ; X32-SSE41-NEXT: shll $27, %edx
3773 ; X32-SSE41-NEXT: sarl $31, %edx
3774 ; X32-SSE41-NEXT: pinsrb $4, %edx, %xmm0
3775 ; X32-SSE41-NEXT: movl %ecx, %edx
3776 ; X32-SSE41-NEXT: shll $26, %edx
3777 ; X32-SSE41-NEXT: sarl $31, %edx
3778 ; X32-SSE41-NEXT: pinsrb $5, %edx, %xmm0
3779 ; X32-SSE41-NEXT: movl %ecx, %edx
3780 ; X32-SSE41-NEXT: shll $25, %edx
3781 ; X32-SSE41-NEXT: sarl $31, %edx
3782 ; X32-SSE41-NEXT: pinsrb $6, %edx, %xmm0
3783 ; X32-SSE41-NEXT: movsbl %cl, %edx
3784 ; X32-SSE41-NEXT: shrl $7, %edx
3785 ; X32-SSE41-NEXT: pinsrb $7, %edx, %xmm0
3786 ; X32-SSE41-NEXT: movl %ecx, %edx
3787 ; X32-SSE41-NEXT: shll $23, %edx
3788 ; X32-SSE41-NEXT: sarl $31, %edx
3789 ; X32-SSE41-NEXT: pinsrb $8, %edx, %xmm0
3790 ; X32-SSE41-NEXT: movl %ecx, %edx
3791 ; X32-SSE41-NEXT: shll $22, %edx
3792 ; X32-SSE41-NEXT: sarl $31, %edx
3793 ; X32-SSE41-NEXT: pinsrb $9, %edx, %xmm0
3794 ; X32-SSE41-NEXT: movl %ecx, %edx
3795 ; X32-SSE41-NEXT: shll $21, %edx
3796 ; X32-SSE41-NEXT: sarl $31, %edx
3797 ; X32-SSE41-NEXT: pinsrb $10, %edx, %xmm0
3798 ; X32-SSE41-NEXT: movl %ecx, %edx
3799 ; X32-SSE41-NEXT: shll $20, %edx
3800 ; X32-SSE41-NEXT: sarl $31, %edx
3801 ; X32-SSE41-NEXT: pinsrb $11, %edx, %xmm0
3802 ; X32-SSE41-NEXT: movl %ecx, %edx
3803 ; X32-SSE41-NEXT: shll $19, %edx
3804 ; X32-SSE41-NEXT: sarl $31, %edx
3805 ; X32-SSE41-NEXT: pinsrb $12, %edx, %xmm0
3806 ; X32-SSE41-NEXT: movl %ecx, %edx
3807 ; X32-SSE41-NEXT: shll $18, %edx
3808 ; X32-SSE41-NEXT: sarl $31, %edx
3809 ; X32-SSE41-NEXT: pinsrb $13, %edx, %xmm0
3810 ; X32-SSE41-NEXT: movl %ecx, %edx
3811 ; X32-SSE41-NEXT: shll $17, %edx
3812 ; X32-SSE41-NEXT: sarl $31, %edx
3813 ; X32-SSE41-NEXT: pinsrb $14, %edx, %xmm0
3814 ; X32-SSE41-NEXT: shrl $15, %ecx
3815 ; X32-SSE41-NEXT: pinsrb $15, %ecx, %xmm0
3816 ; X32-SSE41-NEXT: movswl 2(%eax), %eax
3817 ; X32-SSE41-NEXT: movl %eax, %ecx
3818 ; X32-SSE41-NEXT: shll $30, %ecx
3819 ; X32-SSE41-NEXT: sarl $31, %ecx
3820 ; X32-SSE41-NEXT: movl %eax, %edx
3821 ; X32-SSE41-NEXT: shll $31, %edx
3822 ; X32-SSE41-NEXT: sarl $31, %edx
3823 ; X32-SSE41-NEXT: movd %edx, %xmm1
3824 ; X32-SSE41-NEXT: pinsrb $1, %ecx, %xmm1
3825 ; X32-SSE41-NEXT: movl %eax, %ecx
3826 ; X32-SSE41-NEXT: shll $29, %ecx
3827 ; X32-SSE41-NEXT: sarl $31, %ecx
3828 ; X32-SSE41-NEXT: pinsrb $2, %ecx, %xmm1
3829 ; X32-SSE41-NEXT: movl %eax, %ecx
3830 ; X32-SSE41-NEXT: shll $28, %ecx
3831 ; X32-SSE41-NEXT: sarl $31, %ecx
3832 ; X32-SSE41-NEXT: pinsrb $3, %ecx, %xmm1
3833 ; X32-SSE41-NEXT: movl %eax, %ecx
3834 ; X32-SSE41-NEXT: shll $27, %ecx
3835 ; X32-SSE41-NEXT: sarl $31, %ecx
3836 ; X32-SSE41-NEXT: pinsrb $4, %ecx, %xmm1
3837 ; X32-SSE41-NEXT: movl %eax, %ecx
3838 ; X32-SSE41-NEXT: shll $26, %ecx
3839 ; X32-SSE41-NEXT: sarl $31, %ecx
3840 ; X32-SSE41-NEXT: pinsrb $5, %ecx, %xmm1
3841 ; X32-SSE41-NEXT: movl %eax, %ecx
3842 ; X32-SSE41-NEXT: shll $25, %ecx
3843 ; X32-SSE41-NEXT: sarl $31, %ecx
3844 ; X32-SSE41-NEXT: pinsrb $6, %ecx, %xmm1
3845 ; X32-SSE41-NEXT: movsbl %al, %ecx
3846 ; X32-SSE41-NEXT: shrl $7, %ecx
3847 ; X32-SSE41-NEXT: pinsrb $7, %ecx, %xmm1
3848 ; X32-SSE41-NEXT: movl %eax, %ecx
3849 ; X32-SSE41-NEXT: shll $23, %ecx
3850 ; X32-SSE41-NEXT: sarl $31, %ecx
3851 ; X32-SSE41-NEXT: pinsrb $8, %ecx, %xmm1
3852 ; X32-SSE41-NEXT: movl %eax, %ecx
3853 ; X32-SSE41-NEXT: shll $22, %ecx
3854 ; X32-SSE41-NEXT: sarl $31, %ecx
3855 ; X32-SSE41-NEXT: pinsrb $9, %ecx, %xmm1
3856 ; X32-SSE41-NEXT: movl %eax, %ecx
3857 ; X32-SSE41-NEXT: shll $21, %ecx
3858 ; X32-SSE41-NEXT: sarl $31, %ecx
3859 ; X32-SSE41-NEXT: pinsrb $10, %ecx, %xmm1
3860 ; X32-SSE41-NEXT: movl %eax, %ecx
3861 ; X32-SSE41-NEXT: shll $20, %ecx
3862 ; X32-SSE41-NEXT: sarl $31, %ecx
3863 ; X32-SSE41-NEXT: pinsrb $11, %ecx, %xmm1
3864 ; X32-SSE41-NEXT: movl %eax, %ecx
3865 ; X32-SSE41-NEXT: shll $19, %ecx
3866 ; X32-SSE41-NEXT: sarl $31, %ecx
3867 ; X32-SSE41-NEXT: pinsrb $12, %ecx, %xmm1
3868 ; X32-SSE41-NEXT: movl %eax, %ecx
3869 ; X32-SSE41-NEXT: shll $18, %ecx
3870 ; X32-SSE41-NEXT: sarl $31, %ecx
3871 ; X32-SSE41-NEXT: pinsrb $13, %ecx, %xmm1
3872 ; X32-SSE41-NEXT: movl %eax, %ecx
3873 ; X32-SSE41-NEXT: shll $17, %ecx
3874 ; X32-SSE41-NEXT: sarl $31, %ecx
3875 ; X32-SSE41-NEXT: pinsrb $14, %ecx, %xmm1
3876 ; X32-SSE41-NEXT: shrl $15, %eax
3877 ; X32-SSE41-NEXT: pinsrb $15, %eax, %xmm1
3878 ; X32-SSE41-NEXT: popl %esi
3879 ; X32-SSE41-NEXT: retl
3907 ; SSE41-LABEL: load_sext_16i8_to_16i16:
3908 ; SSE41: # BB#0: # %entry
3909 ; SSE41-NEXT: pmovsxbw (%rdi), %xmm0
3910 ; SSE41-NEXT: pmovsxbw 8(%rdi), %xmm1
3911 ; SSE41-NEXT: retq
3930 ; X32-SSE41-LABEL: load_sext_16i8_to_16i16:
3931 ; X32-SSE41: # BB#0: # %entry
3932 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3933 ; X32-SSE41-NEXT: pmovsxbw (%eax), %xmm0
3934 ; X32-SSE41-NEXT: pmovsxbw 8(%eax), %xmm1
3935 ; X32-SSE41-NEXT: retl
3963 ; SSE41-LABEL: load_sext_2i16_to_2i64:
3964 ; SSE41: # BB#0: # %entry
3965 ; SSE41-NEXT: pmovsxwq (%rdi), %xmm0
3966 ; SSE41-NEXT: retq
3973 ; X32-SSE41-LABEL: load_sext_2i16_to_2i64:
3974 ; X32-SSE41: # BB#0: # %entry
3975 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3976 ; X32-SSE41-NEXT: pmovsxwq (%eax), %xmm0
3977 ; X32-SSE41-NEXT: retl
3999 ; SSE41-LABEL: load_sext_4i16_to_4i32:
4000 ; SSE41: # BB#0: # %entry
4001 ; SSE41-NEXT: pmovsxwd (%rdi), %xmm0
4002 ; SSE41-NEXT: retq
4009 ; X32-SSE41-LABEL: load_sext_4i16_to_4i32:
4010 ; X32-SSE41: # BB#0: # %entry
4011 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
4012 ; X32-SSE41-NEXT: pmovsxwd (%eax), %xmm0
4013 ; X32-SSE41-NEXT: retl
4049 ; SSE41-LABEL: load_sext_4i16_to_4i64:
4050 ; SSE41: # BB#0: # %entry
4051 ; SSE41-NEXT: pmovsxwq (%rdi), %xmm0
4052 ; SSE41-NEXT: pmovsxwq 4(%rdi), %xmm1
4053 ; SSE41-NEXT: retq
4074 ; X32-SSE41-LABEL: load_sext_4i16_to_4i64:
4075 ; X32-SSE41: # BB#0: # %entry
4076 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
4077 ; X32-SSE41-NEXT: pmovsxwq (%eax), %xmm0
4078 ; X32-SSE41-NEXT: pmovsxwq 4(%eax), %xmm1
4079 ; X32-SSE41-NEXT: retl
4107 ; SSE41-LABEL: load_sext_8i16_to_8i32:
4108 ; SSE41: # BB#0: # %entry
4109 ; SSE41-NEXT: pmovsxwd (%rdi), %xmm0
4110 ; SSE41-NEXT: pmovsxwd 8(%rdi), %xmm1
4111 ; SSE41-NEXT: retq
4130 ; X32-SSE41-LABEL: load_sext_8i16_to_8i32:
4131 ; X32-SSE41: # BB#0: # %entry
4132 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
4133 ; X32-SSE41-NEXT: pmovsxwd (%eax), %xmm0
4134 ; X32-SSE41-NEXT: pmovsxwd 8(%eax), %xmm1
4135 ; X32-SSE41-NEXT: retl
4159 ; SSE41-LABEL: load_sext_2i32_to_2i64:
4160 ; SSE41: # BB#0: # %entry
4161 ; SSE41-NEXT: pmovsxdq (%rdi), %xmm0
4162 ; SSE41-NEXT: retq
4169 ; X32-SSE41-LABEL: load_sext_2i32_to_2i64:
4170 ; X32-SSE41: # BB#0: # %entry
4171 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
4172 ; X32-SSE41-NEXT: pmovsxdq (%eax), %xmm0
4173 ; X32-SSE41-NEXT: retl
4205 ; SSE41-LABEL: load_sext_4i32_to_4i64:
4206 ; SSE41: # BB#0: # %entry
4207 ; SSE41-NEXT: pmovsxdq (%rdi), %xmm0
4208 ; SSE41-NEXT: pmovsxdq 8(%rdi), %xmm1
4209 ; SSE41-NEXT: retq
4228 ; X32-SSE41-LABEL: load_sext_4i32_to_4i64:
4229 ; X32-SSE41: # BB#0: # %entry
4230 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
4231 ; X32-SSE41-NEXT: pmovsxdq (%eax), %xmm0
4232 ; X32-SSE41-NEXT: pmovsxdq 8(%eax), %xmm1
4233 ; X32-SSE41-NEXT: retl
4255 ; SSE41-LABEL: sext_2i8_to_i32:
4256 ; SSE41: # BB#0: # %entry
4257 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
4258 ; SSE41-NEXT: movd %xmm0, %eax
4259 ; SSE41-NEXT: retq
4267 ; X32-SSE41-LABEL: sext_2i8_to_i32:
4268 ; X32-SSE41: # BB#0: # %entry
4269 ; X32-SSE41-NEXT: pushl %eax
4270 ; X32-SSE41-NEXT: .Ltmp0:
4271 ; X32-SSE41-NEXT: .cfi_def_cfa_offset 8
4272 ; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm0
4273 ; X32-SSE41-NEXT: movd %xmm0, %eax
4274 ; X32-SSE41-NEXT: popl %ecx
4275 ; X32-SSE41-NEXT: retl
4310 ; SSE41-LABEL: sext_4i1_to_4i64:
4311 ; SSE41: # BB#0:
4312 ; SSE41-NEXT: pslld $31, %xmm0
4313 ; SSE41-NEXT: psrad $31, %xmm0
4314 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm2
4315 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4316 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm1
4317 ; SSE41-NEXT: movdqa %xmm2, %xmm0
4318 ; SSE41-NEXT: retq
4344 ; X32-SSE41-LABEL: sext_4i1_to_4i64:
4345 ; X32-SSE41: # BB#0:
4346 ; X32-SSE41-NEXT: pslld $31, %xmm0
4347 ; X32-SSE41-NEXT: psrad $31, %xmm0
4348 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm2
4349 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4350 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm1
4351 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
4352 ; X32-SSE41-NEXT: retl
4384 ; SSE41-LABEL: sext_4i8_to_4i64:
4385 ; SSE41: # BB#0:
4386 ; SSE41-NEXT: pslld $24, %xmm0
4387 ; SSE41-NEXT: psrad $24, %xmm0
4388 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm2
4389 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4390 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm1
4391 ; SSE41-NEXT: movdqa %xmm2, %xmm0
4392 ; SSE41-NEXT: retq
4418 ; X32-SSE41-LABEL: sext_4i8_to_4i64:
4419 ; X32-SSE41: # BB#0:
4420 ; X32-SSE41-NEXT: pslld $24, %xmm0
4421 ; X32-SSE41-NEXT: psrad $24, %xmm0
4422 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm2
4423 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
4424 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm1
4425 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
4426 ; X32-SSE41-NEXT: retl