Lines Matching refs:SSE41
4 …triple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE --check-prefix=SSE41
9 ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=X32-SSE41
24 ; SSE41-LABEL: sext_16i8_to_8i16:
25 ; SSE41: # BB#0: # %entry
26 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
27 ; SSE41-NEXT: retq
34 ; X32-SSE41-LABEL: sext_16i8_to_8i16:
35 ; X32-SSE41: # BB#0: # %entry
36 ; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm0
37 ; X32-SSE41-NEXT: retl
63 ; SSE41-LABEL: sext_16i8_to_16i16:
64 ; SSE41: # BB#0: # %entry
65 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm2
66 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
67 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm1
68 ; SSE41-NEXT: movdqa %xmm2, %xmm0
69 ; SSE41-NEXT: retq
84 ; X32-SSE41-LABEL: sext_16i8_to_16i16:
85 ; X32-SSE41: # BB#0: # %entry
86 ; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm2
87 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
88 ; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm1
89 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
90 ; X32-SSE41-NEXT: retl
111 ; SSE41-LABEL: sext_16i8_to_4i32:
112 ; SSE41: # BB#0: # %entry
113 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm0
114 ; SSE41-NEXT: retq
121 ; X32-SSE41-LABEL: sext_16i8_to_4i32:
122 ; X32-SSE41: # BB#0: # %entry
123 ; X32-SSE41-NEXT: pmovsxbd %xmm0, %xmm0
124 ; X32-SSE41-NEXT: retl
156 ; SSE41-LABEL: sext_16i8_to_8i32:
157 ; SSE41: # BB#0: # %entry
158 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm2
159 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
160 ; SSE41-NEXT: pmovsxbd %xmm0, %xmm1
161 ; SSE41-NEXT: movdqa %xmm2, %xmm0
162 ; SSE41-NEXT: retq
179 ; X32-SSE41-LABEL: sext_16i8_to_8i32:
180 ; X32-SSE41: # BB#0: # %entry
181 ; X32-SSE41-NEXT: pmovsxbd %xmm0, %xmm2
182 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
183 ; X32-SSE41-NEXT: pmovsxbd %xmm0, %xmm1
184 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
185 ; X32-SSE41-NEXT: retl
213 ; SSE41-LABEL: sext_16i8_to_2i64:
214 ; SSE41: # BB#0: # %entry
215 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm0
216 ; SSE41-NEXT: retq
223 ; X32-SSE41-LABEL: sext_16i8_to_2i64:
224 ; X32-SSE41: # BB#0: # %entry
225 ; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm0
226 ; X32-SSE41-NEXT: retl
270 ; SSE41-LABEL: sext_16i8_to_4i64:
271 ; SSE41: # BB#0: # %entry
272 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm2
273 ; SSE41-NEXT: psrld $16, %xmm0
274 ; SSE41-NEXT: pmovsxbq %xmm0, %xmm1
275 ; SSE41-NEXT: movdqa %xmm2, %xmm0
276 ; SSE41-NEXT: retq
294 ; X32-SSE41-LABEL: sext_16i8_to_4i64:
295 ; X32-SSE41: # BB#0: # %entry
296 ; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm2
297 ; X32-SSE41-NEXT: psrld $16, %xmm0
298 ; X32-SSE41-NEXT: pmovsxbq %xmm0, %xmm1
299 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
300 ; X32-SSE41-NEXT: retl
320 ; SSE41-LABEL: sext_8i16_to_4i32:
321 ; SSE41: # BB#0: # %entry
322 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm0
323 ; SSE41-NEXT: retq
330 ; X32-SSE41-LABEL: sext_8i16_to_4i32:
331 ; X32-SSE41: # BB#0: # %entry
332 ; X32-SSE41-NEXT: pmovsxwd %xmm0, %xmm0
333 ; X32-SSE41-NEXT: retl
359 ; SSE41-LABEL: sext_8i16_to_8i32:
360 ; SSE41: # BB#0: # %entry
361 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm2
362 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
363 ; SSE41-NEXT: pmovsxwd %xmm0, %xmm1
364 ; SSE41-NEXT: movdqa %xmm2, %xmm0
365 ; SSE41-NEXT: retq
380 ; X32-SSE41-LABEL: sext_8i16_to_8i32:
381 ; X32-SSE41: # BB#0: # %entry
382 ; X32-SSE41-NEXT: pmovsxwd %xmm0, %xmm2
383 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
384 ; X32-SSE41-NEXT: pmovsxwd %xmm0, %xmm1
385 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
386 ; X32-SSE41-NEXT: retl
411 ; SSE41-LABEL: sext_8i16_to_2i64:
412 ; SSE41: # BB#0: # %entry
413 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm0
414 ; SSE41-NEXT: retq
421 ; X32-SSE41-LABEL: sext_8i16_to_2i64:
422 ; X32-SSE41: # BB#0: # %entry
423 ; X32-SSE41-NEXT: pmovsxwq %xmm0, %xmm0
424 ; X32-SSE41-NEXT: retl
464 ; SSE41-LABEL: sext_8i16_to_4i64:
465 ; SSE41: # BB#0: # %entry
466 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm2
467 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
468 ; SSE41-NEXT: pmovsxwq %xmm0, %xmm1
469 ; SSE41-NEXT: movdqa %xmm2, %xmm0
470 ; SSE41-NEXT: retq
488 ; X32-SSE41-LABEL: sext_8i16_to_4i64:
489 ; X32-SSE41: # BB#0: # %entry
490 ; X32-SSE41-NEXT: pmovsxwq %xmm0, %xmm2
491 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
492 ; X32-SSE41-NEXT: pmovsxwq %xmm0, %xmm1
493 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
494 ; X32-SSE41-NEXT: retl
516 ; SSE41-LABEL: sext_4i32_to_2i64:
517 ; SSE41: # BB#0: # %entry
518 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm0
519 ; SSE41-NEXT: retq
526 ; X32-SSE41-LABEL: sext_4i32_to_2i64:
527 ; X32-SSE41: # BB#0: # %entry
528 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm0
529 ; X32-SSE41-NEXT: retl
559 ; SSE41-LABEL: sext_4i32_to_4i64:
560 ; SSE41: # BB#0: # %entry
561 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm2
562 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
563 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm1
564 ; SSE41-NEXT: movdqa %xmm2, %xmm0
565 ; SSE41-NEXT: retq
580 ; X32-SSE41-LABEL: sext_4i32_to_4i64:
581 ; X32-SSE41: # BB#0: # %entry
582 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm2
583 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
584 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm1
585 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
586 ; X32-SSE41-NEXT: retl
619 ; X32-SSE41-LABEL: load_sext_2i1_to_2i64:
620 ; X32-SSE41: # BB#0: # %entry
621 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
622 ; X32-SSE41-NEXT: movzbl (%eax), %eax
623 ; X32-SSE41-NEXT: movl %eax, %ecx
624 ; X32-SSE41-NEXT: shll $31, %ecx
625 ; X32-SSE41-NEXT: sarl $31, %ecx
626 ; X32-SSE41-NEXT: movd %ecx, %xmm0
627 ; X32-SSE41-NEXT: pinsrd $1, %ecx, %xmm0
628 ; X32-SSE41-NEXT: shll $30, %eax
629 ; X32-SSE41-NEXT: sarl $31, %eax
630 ; X32-SSE41-NEXT: pinsrd $2, %eax, %xmm0
631 ; X32-SSE41-NEXT: pinsrd $3, %eax, %xmm0
632 ; X32-SSE41-NEXT: retl
664 ; SSE41-LABEL: load_sext_2i8_to_2i64:
665 ; SSE41: # BB#0: # %entry
666 ; SSE41-NEXT: pmovsxbq (%rdi), %xmm0
667 ; SSE41-NEXT: retq
674 ; X32-SSE41-LABEL: load_sext_2i8_to_2i64:
675 ; X32-SSE41: # BB#0: # %entry
676 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
677 ; X32-SSE41-NEXT: pmovsxbq (%eax), %xmm0
678 ; X32-SSE41-NEXT: retl
732 ; SSE41-LABEL: load_sext_4i1_to_4i32:
733 ; SSE41: # BB#0: # %entry
734 ; SSE41-NEXT: movzbl (%rdi), %eax
735 ; SSE41-NEXT: movq %rax, %rcx
736 ; SSE41-NEXT: shlq $62, %rcx
737 ; SSE41-NEXT: sarq $63, %rcx
738 ; SSE41-NEXT: movq %rax, %rdx
739 ; SSE41-NEXT: shlq $63, %rdx
740 ; SSE41-NEXT: sarq $63, %rdx
741 ; SSE41-NEXT: movd %edx, %xmm0
742 ; SSE41-NEXT: pinsrd $1, %ecx, %xmm0
743 ; SSE41-NEXT: movq %rax, %rcx
744 ; SSE41-NEXT: shlq $61, %rcx
745 ; SSE41-NEXT: sarq $63, %rcx
746 ; SSE41-NEXT: pinsrd $2, %ecx, %xmm0
747 ; SSE41-NEXT: shlq $60, %rax
748 ; SSE41-NEXT: sarq $63, %rax
749 ; SSE41-NEXT: pinsrd $3, %eax, %xmm0
750 ; SSE41-NEXT: retq
772 ; X32-SSE41-LABEL: load_sext_4i1_to_4i32:
773 ; X32-SSE41: # BB#0: # %entry
774 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
775 ; X32-SSE41-NEXT: movl (%eax), %eax
776 ; X32-SSE41-NEXT: movl %eax, %ecx
777 ; X32-SSE41-NEXT: shll $30, %ecx
778 ; X32-SSE41-NEXT: sarl $31, %ecx
779 ; X32-SSE41-NEXT: movl %eax, %edx
780 ; X32-SSE41-NEXT: shll $31, %edx
781 ; X32-SSE41-NEXT: sarl $31, %edx
782 ; X32-SSE41-NEXT: movd %edx, %xmm0
783 ; X32-SSE41-NEXT: pinsrd $1, %ecx, %xmm0
784 ; X32-SSE41-NEXT: movl %eax, %ecx
785 ; X32-SSE41-NEXT: shll $29, %ecx
786 ; X32-SSE41-NEXT: sarl $31, %ecx
787 ; X32-SSE41-NEXT: pinsrd $2, %ecx, %xmm0
788 ; X32-SSE41-NEXT: shll $28, %eax
789 ; X32-SSE41-NEXT: sarl $31, %eax
790 ; X32-SSE41-NEXT: pinsrd $3, %eax, %xmm0
791 ; X32-SSE41-NEXT: retl
815 ; SSE41-LABEL: load_sext_4i8_to_4i32:
816 ; SSE41: # BB#0: # %entry
817 ; SSE41-NEXT: pmovsxbd (%rdi), %xmm0
818 ; SSE41-NEXT: retq
825 ; X32-SSE41-LABEL: load_sext_4i8_to_4i32:
826 ; X32-SSE41: # BB#0: # %entry
827 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
828 ; X32-SSE41-NEXT: pmovsxbd (%eax), %xmm0
829 ; X32-SSE41-NEXT: retl
897 ; SSE41-LABEL: load_sext_4i1_to_4i64:
898 ; SSE41: # BB#0: # %entry
899 ; SSE41-NEXT: movzbl (%rdi), %eax
900 ; SSE41-NEXT: movl %eax, %ecx
901 ; SSE41-NEXT: shrl %ecx
902 ; SSE41-NEXT: andl $1, %ecx
903 ; SSE41-NEXT: movl %eax, %edx
904 ; SSE41-NEXT: andl $1, %edx
905 ; SSE41-NEXT: movd %edx, %xmm1
906 ; SSE41-NEXT: pinsrd $1, %ecx, %xmm1
907 ; SSE41-NEXT: movl %eax, %ecx
908 ; SSE41-NEXT: shrl $2, %ecx
909 ; SSE41-NEXT: andl $1, %ecx
910 ; SSE41-NEXT: pinsrd $2, %ecx, %xmm1
911 ; SSE41-NEXT: shrl $3, %eax
912 ; SSE41-NEXT: andl $1, %eax
913 ; SSE41-NEXT: pinsrd $3, %eax, %xmm1
914 ; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
915 ; SSE41-NEXT: psllq $63, %xmm0
916 ; SSE41-NEXT: psrad $31, %xmm0
917 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
918 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
919 ; SSE41-NEXT: psllq $63, %xmm1
920 ; SSE41-NEXT: psrad $31, %xmm1
921 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
922 ; SSE41-NEXT: retq
971 ; X32-SSE41-LABEL: load_sext_4i1_to_4i64:
972 ; X32-SSE41: # BB#0: # %entry
973 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
974 ; X32-SSE41-NEXT: movzbl (%eax), %eax
975 ; X32-SSE41-NEXT: movl %eax, %ecx
976 ; X32-SSE41-NEXT: shrl %ecx
977 ; X32-SSE41-NEXT: andl $1, %ecx
978 ; X32-SSE41-NEXT: movl %eax, %edx
979 ; X32-SSE41-NEXT: andl $1, %edx
980 ; X32-SSE41-NEXT: movd %edx, %xmm1
981 ; X32-SSE41-NEXT: pinsrd $1, %ecx, %xmm1
982 ; X32-SSE41-NEXT: movl %eax, %ecx
983 ; X32-SSE41-NEXT: shrl $2, %ecx
984 ; X32-SSE41-NEXT: andl $1, %ecx
985 ; X32-SSE41-NEXT: pinsrd $2, %ecx, %xmm1
986 ; X32-SSE41-NEXT: shrl $3, %eax
987 ; X32-SSE41-NEXT: andl $1, %eax
988 ; X32-SSE41-NEXT: pinsrd $3, %eax, %xmm1
989 ; X32-SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
990 ; X32-SSE41-NEXT: psllq $63, %xmm0
991 ; X32-SSE41-NEXT: psrad $31, %xmm0
992 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
993 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
994 ; X32-SSE41-NEXT: psllq $63, %xmm1
995 ; X32-SSE41-NEXT: psrad $31, %xmm1
996 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
997 ; X32-SSE41-NEXT: retl
1033 ; SSE41-LABEL: load_sext_4i8_to_4i64:
1034 ; SSE41: # BB#0: # %entry
1035 ; SSE41-NEXT: pmovsxbq (%rdi), %xmm0
1036 ; SSE41-NEXT: pmovsxbq 2(%rdi), %xmm1
1037 ; SSE41-NEXT: retq
1053 ; X32-SSE41-LABEL: load_sext_4i8_to_4i64:
1054 ; X32-SSE41: # BB#0: # %entry
1055 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1056 ; X32-SSE41-NEXT: pmovsxbq (%eax), %xmm0
1057 ; X32-SSE41-NEXT: pmovsxbq 2(%eax), %xmm1
1058 ; X32-SSE41-NEXT: retl
1150 ; SSE41-LABEL: load_sext_8i1_to_8i16:
1151 ; SSE41: # BB#0: # %entry
1152 ; SSE41-NEXT: movsbq (%rdi), %rax
1153 ; SSE41-NEXT: movq %rax, %rcx
1154 ; SSE41-NEXT: shlq $62, %rcx
1155 ; SSE41-NEXT: sarq $63, %rcx
1156 ; SSE41-NEXT: movq %rax, %rdx
1157 ; SSE41-NEXT: shlq $63, %rdx
1158 ; SSE41-NEXT: sarq $63, %rdx
1159 ; SSE41-NEXT: movd %edx, %xmm0
1160 ; SSE41-NEXT: pinsrw $1, %ecx, %xmm0
1161 ; SSE41-NEXT: movq %rax, %rcx
1162 ; SSE41-NEXT: shlq $61, %rcx
1163 ; SSE41-NEXT: sarq $63, %rcx
1164 ; SSE41-NEXT: pinsrw $2, %ecx, %xmm0
1165 ; SSE41-NEXT: movq %rax, %rcx
1166 ; SSE41-NEXT: shlq $60, %rcx
1167 ; SSE41-NEXT: sarq $63, %rcx
1168 ; SSE41-NEXT: pinsrw $3, %ecx, %xmm0
1169 ; SSE41-NEXT: movq %rax, %rcx
1170 ; SSE41-NEXT: shlq $59, %rcx
1171 ; SSE41-NEXT: sarq $63, %rcx
1172 ; SSE41-NEXT: pinsrw $4, %ecx, %xmm0
1173 ; SSE41-NEXT: movq %rax, %rcx
1174 ; SSE41-NEXT: shlq $58, %rcx
1175 ; SSE41-NEXT: sarq $63, %rcx
1176 ; SSE41-NEXT: pinsrw $5, %ecx, %xmm0
1177 ; SSE41-NEXT: movq %rax, %rcx
1178 ; SSE41-NEXT: shlq $57, %rcx
1179 ; SSE41-NEXT: sarq $63, %rcx
1180 ; SSE41-NEXT: pinsrw $6, %ecx, %xmm0
1181 ; SSE41-NEXT: shrq $7, %rax
1182 ; SSE41-NEXT: pinsrw $7, %eax, %xmm0
1183 ; SSE41-NEXT: retq
1220 ; X32-SSE41-LABEL: load_sext_8i1_to_8i16:
1221 ; X32-SSE41: # BB#0: # %entry
1222 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1223 ; X32-SSE41-NEXT: movsbl (%eax), %eax
1224 ; X32-SSE41-NEXT: movl %eax, %ecx
1225 ; X32-SSE41-NEXT: shll $30, %ecx
1226 ; X32-SSE41-NEXT: sarl $31, %ecx
1227 ; X32-SSE41-NEXT: movl %eax, %edx
1228 ; X32-SSE41-NEXT: shll $31, %edx
1229 ; X32-SSE41-NEXT: sarl $31, %edx
1230 ; X32-SSE41-NEXT: movd %edx, %xmm0
1231 ; X32-SSE41-NEXT: pinsrw $1, %ecx, %xmm0
1232 ; X32-SSE41-NEXT: movl %eax, %ecx
1233 ; X32-SSE41-NEXT: shll $29, %ecx
1234 ; X32-SSE41-NEXT: sarl $31, %ecx
1235 ; X32-SSE41-NEXT: pinsrw $2, %ecx, %xmm0
1236 ; X32-SSE41-NEXT: movl %eax, %ecx
1237 ; X32-SSE41-NEXT: shll $28, %ecx
1238 ; X32-SSE41-NEXT: sarl $31, %ecx
1239 ; X32-SSE41-NEXT: pinsrw $3, %ecx, %xmm0
1240 ; X32-SSE41-NEXT: movl %eax, %ecx
1241 ; X32-SSE41-NEXT: shll $27, %ecx
1242 ; X32-SSE41-NEXT: sarl $31, %ecx
1243 ; X32-SSE41-NEXT: pinsrw $4, %ecx, %xmm0
1244 ; X32-SSE41-NEXT: movl %eax, %ecx
1245 ; X32-SSE41-NEXT: shll $26, %ecx
1246 ; X32-SSE41-NEXT: sarl $31, %ecx
1247 ; X32-SSE41-NEXT: pinsrw $5, %ecx, %xmm0
1248 ; X32-SSE41-NEXT: movl %eax, %ecx
1249 ; X32-SSE41-NEXT: shll $25, %ecx
1250 ; X32-SSE41-NEXT: sarl $31, %ecx
1251 ; X32-SSE41-NEXT: pinsrw $6, %ecx, %xmm0
1252 ; X32-SSE41-NEXT: shrl $7, %eax
1253 ; X32-SSE41-NEXT: pinsrw $7, %eax, %xmm0
1254 ; X32-SSE41-NEXT: retl
1276 ; SSE41-LABEL: load_sext_8i8_to_8i16:
1277 ; SSE41: # BB#0: # %entry
1278 ; SSE41-NEXT: pmovsxbw (%rdi), %xmm0
1279 ; SSE41-NEXT: retq
1286 ; X32-SSE41-LABEL: load_sext_8i8_to_8i16:
1287 ; X32-SSE41: # BB#0: # %entry
1288 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1289 ; X32-SSE41-NEXT: pmovsxbw (%eax), %xmm0
1290 ; X32-SSE41-NEXT: retl
1396 ; SSE41-LABEL: load_sext_8i1_to_8i32:
1397 ; SSE41: # BB#0: # %entry
1398 ; SSE41-NEXT: movzbl (%rdi), %eax
1399 ; SSE41-NEXT: movl %eax, %ecx
1400 ; SSE41-NEXT: shrl %ecx
1401 ; SSE41-NEXT: andl $1, %ecx
1402 ; SSE41-NEXT: movl %eax, %edx
1403 ; SSE41-NEXT: andl $1, %edx
1404 ; SSE41-NEXT: movd %edx, %xmm1
1405 ; SSE41-NEXT: pinsrw $1, %ecx, %xmm1
1406 ; SSE41-NEXT: movl %eax, %ecx
1407 ; SSE41-NEXT: shrl $2, %ecx
1408 ; SSE41-NEXT: andl $1, %ecx
1409 ; SSE41-NEXT: pinsrw $2, %ecx, %xmm1
1410 ; SSE41-NEXT: movl %eax, %ecx
1411 ; SSE41-NEXT: shrl $3, %ecx
1412 ; SSE41-NEXT: andl $1, %ecx
1413 ; SSE41-NEXT: pinsrw $3, %ecx, %xmm1
1414 ; SSE41-NEXT: movl %eax, %ecx
1415 ; SSE41-NEXT: shrl $4, %ecx
1416 ; SSE41-NEXT: andl $1, %ecx
1417 ; SSE41-NEXT: pinsrw $4, %ecx, %xmm1
1418 ; SSE41-NEXT: movl %eax, %ecx
1419 ; SSE41-NEXT: shrl $5, %ecx
1420 ; SSE41-NEXT: andl $1, %ecx
1421 ; SSE41-NEXT: pinsrw $5, %ecx, %xmm1
1422 ; SSE41-NEXT: movl %eax, %ecx
1423 ; SSE41-NEXT: shrl $6, %ecx
1424 ; SSE41-NEXT: andl $1, %ecx
1425 ; SSE41-NEXT: pinsrw $6, %ecx, %xmm1
1426 ; SSE41-NEXT: shrl $7, %eax
1427 ; SSE41-NEXT: movzwl %ax, %eax
1428 ; SSE41-NEXT: pinsrw $7, %eax, %xmm1
1429 ; SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
1430 ; SSE41-NEXT: pslld $31, %xmm0
1431 ; SSE41-NEXT: psrad $31, %xmm0
1432 ; SSE41-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],…
1433 ; SSE41-NEXT: pslld $31, %xmm1
1434 ; SSE41-NEXT: psrad $31, %xmm1
1435 ; SSE41-NEXT: retq
1509 ; X32-SSE41-LABEL: load_sext_8i1_to_8i32:
1510 ; X32-SSE41: # BB#0: # %entry
1511 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1512 ; X32-SSE41-NEXT: movzbl (%eax), %eax
1513 ; X32-SSE41-NEXT: movl %eax, %ecx
1514 ; X32-SSE41-NEXT: shrl %ecx
1515 ; X32-SSE41-NEXT: andl $1, %ecx
1516 ; X32-SSE41-NEXT: movl %eax, %edx
1517 ; X32-SSE41-NEXT: andl $1, %edx
1518 ; X32-SSE41-NEXT: movd %edx, %xmm1
1519 ; X32-SSE41-NEXT: pinsrw $1, %ecx, %xmm1
1520 ; X32-SSE41-NEXT: movl %eax, %ecx
1521 ; X32-SSE41-NEXT: shrl $2, %ecx
1522 ; X32-SSE41-NEXT: andl $1, %ecx
1523 ; X32-SSE41-NEXT: pinsrw $2, %ecx, %xmm1
1524 ; X32-SSE41-NEXT: movl %eax, %ecx
1525 ; X32-SSE41-NEXT: shrl $3, %ecx
1526 ; X32-SSE41-NEXT: andl $1, %ecx
1527 ; X32-SSE41-NEXT: pinsrw $3, %ecx, %xmm1
1528 ; X32-SSE41-NEXT: movl %eax, %ecx
1529 ; X32-SSE41-NEXT: shrl $4, %ecx
1530 ; X32-SSE41-NEXT: andl $1, %ecx
1531 ; X32-SSE41-NEXT: pinsrw $4, %ecx, %xmm1
1532 ; X32-SSE41-NEXT: movl %eax, %ecx
1533 ; X32-SSE41-NEXT: shrl $5, %ecx
1534 ; X32-SSE41-NEXT: andl $1, %ecx
1535 ; X32-SSE41-NEXT: pinsrw $5, %ecx, %xmm1
1536 ; X32-SSE41-NEXT: movl %eax, %ecx
1537 ; X32-SSE41-NEXT: shrl $6, %ecx
1538 ; X32-SSE41-NEXT: andl $1, %ecx
1539 ; X32-SSE41-NEXT: pinsrw $6, %ecx, %xmm1
1540 ; X32-SSE41-NEXT: shrl $7, %eax
1541 ; X32-SSE41-NEXT: pinsrw $7, %eax, %xmm1
1542 ; X32-SSE41-NEXT: pmovzxwd {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero
1543 ; X32-SSE41-NEXT: pslld $31, %xmm0
1544 ; X32-SSE41-NEXT: psrad $31, %xmm0
1545 ; X32-SSE41-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1…
1546 ; X32-SSE41-NEXT: pslld $31, %xmm1
1547 ; X32-SSE41-NEXT: psrad $31, %xmm1
1548 ; X32-SSE41-NEXT: retl
1580 ; SSE41-LABEL: load_sext_8i8_to_8i32:
1581 ; SSE41: # BB#0: # %entry
1582 ; SSE41-NEXT: pmovsxbd (%rdi), %xmm0
1583 ; SSE41-NEXT: pmovsxbd 4(%rdi), %xmm1
1584 ; SSE41-NEXT: retq
1600 ; X32-SSE41-LABEL: load_sext_8i8_to_8i32:
1601 ; X32-SSE41: # BB#0: # %entry
1602 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1603 ; X32-SSE41-NEXT: pmovsxbd (%eax), %xmm0
1604 ; X32-SSE41-NEXT: pmovsxbd 4(%eax), %xmm1
1605 ; X32-SSE41-NEXT: retl
1801 ; SSE41-LABEL: load_sext_16i1_to_16i8:
1802 ; SSE41: # BB#0: # %entry
1803 ; SSE41-NEXT: movswq (%rdi), %rax
1804 ; SSE41-NEXT: movq %rax, %rcx
1805 ; SSE41-NEXT: shlq $62, %rcx
1806 ; SSE41-NEXT: sarq $63, %rcx
1807 ; SSE41-NEXT: movq %rax, %rdx
1808 ; SSE41-NEXT: shlq $63, %rdx
1809 ; SSE41-NEXT: sarq $63, %rdx
1810 ; SSE41-NEXT: movd %edx, %xmm0
1811 ; SSE41-NEXT: pinsrb $1, %ecx, %xmm0
1812 ; SSE41-NEXT: movq %rax, %rcx
1813 ; SSE41-NEXT: shlq $61, %rcx
1814 ; SSE41-NEXT: sarq $63, %rcx
1815 ; SSE41-NEXT: pinsrb $2, %ecx, %xmm0
1816 ; SSE41-NEXT: movq %rax, %rcx
1817 ; SSE41-NEXT: shlq $60, %rcx
1818 ; SSE41-NEXT: sarq $63, %rcx
1819 ; SSE41-NEXT: pinsrb $3, %ecx, %xmm0
1820 ; SSE41-NEXT: movq %rax, %rcx
1821 ; SSE41-NEXT: shlq $59, %rcx
1822 ; SSE41-NEXT: sarq $63, %rcx
1823 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm0
1824 ; SSE41-NEXT: movq %rax, %rcx
1825 ; SSE41-NEXT: shlq $58, %rcx
1826 ; SSE41-NEXT: sarq $63, %rcx
1827 ; SSE41-NEXT: pinsrb $5, %ecx, %xmm0
1828 ; SSE41-NEXT: movq %rax, %rcx
1829 ; SSE41-NEXT: shlq $57, %rcx
1830 ; SSE41-NEXT: sarq $63, %rcx
1831 ; SSE41-NEXT: pinsrb $6, %ecx, %xmm0
1832 ; SSE41-NEXT: movsbq %al, %rcx
1833 ; SSE41-NEXT: shrq $7, %rcx
1834 ; SSE41-NEXT: pinsrb $7, %ecx, %xmm0
1835 ; SSE41-NEXT: movq %rax, %rcx
1836 ; SSE41-NEXT: shlq $55, %rcx
1837 ; SSE41-NEXT: sarq $63, %rcx
1838 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm0
1839 ; SSE41-NEXT: movq %rax, %rcx
1840 ; SSE41-NEXT: shlq $54, %rcx
1841 ; SSE41-NEXT: sarq $63, %rcx
1842 ; SSE41-NEXT: pinsrb $9, %ecx, %xmm0
1843 ; SSE41-NEXT: movq %rax, %rcx
1844 ; SSE41-NEXT: shlq $53, %rcx
1845 ; SSE41-NEXT: sarq $63, %rcx
1846 ; SSE41-NEXT: pinsrb $10, %ecx, %xmm0
1847 ; SSE41-NEXT: movq %rax, %rcx
1848 ; SSE41-NEXT: shlq $52, %rcx
1849 ; SSE41-NEXT: sarq $63, %rcx
1850 ; SSE41-NEXT: pinsrb $11, %ecx, %xmm0
1851 ; SSE41-NEXT: movq %rax, %rcx
1852 ; SSE41-NEXT: shlq $51, %rcx
1853 ; SSE41-NEXT: sarq $63, %rcx
1854 ; SSE41-NEXT: pinsrb $12, %ecx, %xmm0
1855 ; SSE41-NEXT: movq %rax, %rcx
1856 ; SSE41-NEXT: shlq $50, %rcx
1857 ; SSE41-NEXT: sarq $63, %rcx
1858 ; SSE41-NEXT: pinsrb $13, %ecx, %xmm0
1859 ; SSE41-NEXT: movq %rax, %rcx
1860 ; SSE41-NEXT: shlq $49, %rcx
1861 ; SSE41-NEXT: sarq $63, %rcx
1862 ; SSE41-NEXT: pinsrb $14, %ecx, %xmm0
1863 ; SSE41-NEXT: shrq $15, %rax
1864 ; SSE41-NEXT: pinsrb $15, %eax, %xmm0
1865 ; SSE41-NEXT: retq
1933 ; X32-SSE41-LABEL: load_sext_16i1_to_16i8:
1934 ; X32-SSE41: # BB#0: # %entry
1935 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
1936 ; X32-SSE41-NEXT: movswl (%eax), %eax
1937 ; X32-SSE41-NEXT: movl %eax, %ecx
1938 ; X32-SSE41-NEXT: shll $30, %ecx
1939 ; X32-SSE41-NEXT: sarl $31, %ecx
1940 ; X32-SSE41-NEXT: movl %eax, %edx
1941 ; X32-SSE41-NEXT: shll $31, %edx
1942 ; X32-SSE41-NEXT: sarl $31, %edx
1943 ; X32-SSE41-NEXT: movd %edx, %xmm0
1944 ; X32-SSE41-NEXT: pinsrb $1, %ecx, %xmm0
1945 ; X32-SSE41-NEXT: movl %eax, %ecx
1946 ; X32-SSE41-NEXT: shll $29, %ecx
1947 ; X32-SSE41-NEXT: sarl $31, %ecx
1948 ; X32-SSE41-NEXT: pinsrb $2, %ecx, %xmm0
1949 ; X32-SSE41-NEXT: movl %eax, %ecx
1950 ; X32-SSE41-NEXT: shll $28, %ecx
1951 ; X32-SSE41-NEXT: sarl $31, %ecx
1952 ; X32-SSE41-NEXT: pinsrb $3, %ecx, %xmm0
1953 ; X32-SSE41-NEXT: movl %eax, %ecx
1954 ; X32-SSE41-NEXT: shll $27, %ecx
1955 ; X32-SSE41-NEXT: sarl $31, %ecx
1956 ; X32-SSE41-NEXT: pinsrb $4, %ecx, %xmm0
1957 ; X32-SSE41-NEXT: movl %eax, %ecx
1958 ; X32-SSE41-NEXT: shll $26, %ecx
1959 ; X32-SSE41-NEXT: sarl $31, %ecx
1960 ; X32-SSE41-NEXT: pinsrb $5, %ecx, %xmm0
1961 ; X32-SSE41-NEXT: movl %eax, %ecx
1962 ; X32-SSE41-NEXT: shll $25, %ecx
1963 ; X32-SSE41-NEXT: sarl $31, %ecx
1964 ; X32-SSE41-NEXT: pinsrb $6, %ecx, %xmm0
1965 ; X32-SSE41-NEXT: movsbl %al, %ecx
1966 ; X32-SSE41-NEXT: shrl $7, %ecx
1967 ; X32-SSE41-NEXT: pinsrb $7, %ecx, %xmm0
1968 ; X32-SSE41-NEXT: movl %eax, %ecx
1969 ; X32-SSE41-NEXT: shll $23, %ecx
1970 ; X32-SSE41-NEXT: sarl $31, %ecx
1971 ; X32-SSE41-NEXT: pinsrb $8, %ecx, %xmm0
1972 ; X32-SSE41-NEXT: movl %eax, %ecx
1973 ; X32-SSE41-NEXT: shll $22, %ecx
1974 ; X32-SSE41-NEXT: sarl $31, %ecx
1975 ; X32-SSE41-NEXT: pinsrb $9, %ecx, %xmm0
1976 ; X32-SSE41-NEXT: movl %eax, %ecx
1977 ; X32-SSE41-NEXT: shll $21, %ecx
1978 ; X32-SSE41-NEXT: sarl $31, %ecx
1979 ; X32-SSE41-NEXT: pinsrb $10, %ecx, %xmm0
1980 ; X32-SSE41-NEXT: movl %eax, %ecx
1981 ; X32-SSE41-NEXT: shll $20, %ecx
1982 ; X32-SSE41-NEXT: sarl $31, %ecx
1983 ; X32-SSE41-NEXT: pinsrb $11, %ecx, %xmm0
1984 ; X32-SSE41-NEXT: movl %eax, %ecx
1985 ; X32-SSE41-NEXT: shll $19, %ecx
1986 ; X32-SSE41-NEXT: sarl $31, %ecx
1987 ; X32-SSE41-NEXT: pinsrb $12, %ecx, %xmm0
1988 ; X32-SSE41-NEXT: movl %eax, %ecx
1989 ; X32-SSE41-NEXT: shll $18, %ecx
1990 ; X32-SSE41-NEXT: sarl $31, %ecx
1991 ; X32-SSE41-NEXT: pinsrb $13, %ecx, %xmm0
1992 ; X32-SSE41-NEXT: movl %eax, %ecx
1993 ; X32-SSE41-NEXT: shll $17, %ecx
1994 ; X32-SSE41-NEXT: sarl $31, %ecx
1995 ; X32-SSE41-NEXT: pinsrb $14, %ecx, %xmm0
1996 ; X32-SSE41-NEXT: shrl $15, %eax
1997 ; X32-SSE41-NEXT: pinsrb $15, %eax, %xmm0
1998 ; X32-SSE41-NEXT: retl
2184 ; SSE41-LABEL: load_sext_16i1_to_16i16:
2185 ; SSE41: # BB#0: # %entry
2186 ; SSE41-NEXT: movzwl (%rdi), %eax
2187 ; SSE41-NEXT: movl %eax, %ecx
2188 ; SSE41-NEXT: shrl %ecx
2189 ; SSE41-NEXT: andl $1, %ecx
2190 ; SSE41-NEXT: movl %eax, %edx
2191 ; SSE41-NEXT: andl $1, %edx
2192 ; SSE41-NEXT: movd %edx, %xmm1
2193 ; SSE41-NEXT: pinsrb $1, %ecx, %xmm1
2194 ; SSE41-NEXT: movl %eax, %ecx
2195 ; SSE41-NEXT: shrl $2, %ecx
2196 ; SSE41-NEXT: andl $1, %ecx
2197 ; SSE41-NEXT: pinsrb $2, %ecx, %xmm1
2198 ; SSE41-NEXT: movl %eax, %ecx
2199 ; SSE41-NEXT: shrl $3, %ecx
2200 ; SSE41-NEXT: andl $1, %ecx
2201 ; SSE41-NEXT: pinsrb $3, %ecx, %xmm1
2202 ; SSE41-NEXT: movl %eax, %ecx
2203 ; SSE41-NEXT: shrl $4, %ecx
2204 ; SSE41-NEXT: andl $1, %ecx
2205 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm1
2206 ; SSE41-NEXT: movl %eax, %ecx
2207 ; SSE41-NEXT: shrl $5, %ecx
2208 ; SSE41-NEXT: andl $1, %ecx
2209 ; SSE41-NEXT: pinsrb $5, %ecx, %xmm1
2210 ; SSE41-NEXT: movl %eax, %ecx
2211 ; SSE41-NEXT: shrl $6, %ecx
2212 ; SSE41-NEXT: andl $1, %ecx
2213 ; SSE41-NEXT: pinsrb $6, %ecx, %xmm1
2214 ; SSE41-NEXT: movl %eax, %ecx
2215 ; SSE41-NEXT: shrl $7, %ecx
2216 ; SSE41-NEXT: andl $1, %ecx
2217 ; SSE41-NEXT: pinsrb $7, %ecx, %xmm1
2218 ; SSE41-NEXT: movl %eax, %ecx
2219 ; SSE41-NEXT: shrl $8, %ecx
2220 ; SSE41-NEXT: andl $1, %ecx
2221 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm1
2222 ; SSE41-NEXT: movl %eax, %ecx
2223 ; SSE41-NEXT: shrl $9, %ecx
2224 ; SSE41-NEXT: andl $1, %ecx
2225 ; SSE41-NEXT: pinsrb $9, %ecx, %xmm1
2226 ; SSE41-NEXT: movl %eax, %ecx
2227 ; SSE41-NEXT: shrl $10, %ecx
2228 ; SSE41-NEXT: andl $1, %ecx
2229 ; SSE41-NEXT: pinsrb $10, %ecx, %xmm1
2230 ; SSE41-NEXT: movl %eax, %ecx
2231 ; SSE41-NEXT: shrl $11, %ecx
2232 ; SSE41-NEXT: andl $1, %ecx
2233 ; SSE41-NEXT: pinsrb $11, %ecx, %xmm1
2234 ; SSE41-NEXT: movl %eax, %ecx
2235 ; SSE41-NEXT: shrl $12, %ecx
2236 ; SSE41-NEXT: andl $1, %ecx
2237 ; SSE41-NEXT: pinsrb $12, %ecx, %xmm1
2238 ; SSE41-NEXT: movl %eax, %ecx
2239 ; SSE41-NEXT: shrl $13, %ecx
2240 ; SSE41-NEXT: andl $1, %ecx
2241 ; SSE41-NEXT: pinsrb $13, %ecx, %xmm1
2242 ; SSE41-NEXT: movl %eax, %ecx
2243 ; SSE41-NEXT: shrl $14, %ecx
2244 ; SSE41-NEXT: andl $1, %ecx
2245 ; SSE41-NEXT: pinsrb $14, %ecx, %xmm1
2246 ; SSE41-NEXT: shrl $15, %eax
2247 ; SSE41-NEXT: movzwl %ax, %eax
2248 ; SSE41-NEXT: pinsrb $15, %eax, %xmm1
2249 ; SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[…
2250 ; SSE41-NEXT: psllw $15, %xmm0
2251 ; SSE41-NEXT: psraw $15, %xmm0
2252 ; SSE41-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2253 ; SSE41-NEXT: psllw $15, %xmm1
2254 ; SSE41-NEXT: psraw $15, %xmm1
2255 ; SSE41-NEXT: retq
2463 ; X32-SSE41-LABEL: load_sext_16i1_to_16i16:
2464 ; X32-SSE41: # BB#0: # %entry
2465 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
2466 ; X32-SSE41-NEXT: movzwl (%eax), %eax
2467 ; X32-SSE41-NEXT: movl %eax, %ecx
2468 ; X32-SSE41-NEXT: shrl %ecx
2469 ; X32-SSE41-NEXT: andl $1, %ecx
2470 ; X32-SSE41-NEXT: movl %eax, %edx
2471 ; X32-SSE41-NEXT: andl $1, %edx
2472 ; X32-SSE41-NEXT: movd %edx, %xmm1
2473 ; X32-SSE41-NEXT: pinsrb $1, %ecx, %xmm1
2474 ; X32-SSE41-NEXT: movl %eax, %ecx
2475 ; X32-SSE41-NEXT: shrl $2, %ecx
2476 ; X32-SSE41-NEXT: andl $1, %ecx
2477 ; X32-SSE41-NEXT: pinsrb $2, %ecx, %xmm1
2478 ; X32-SSE41-NEXT: movl %eax, %ecx
2479 ; X32-SSE41-NEXT: shrl $3, %ecx
2480 ; X32-SSE41-NEXT: andl $1, %ecx
2481 ; X32-SSE41-NEXT: pinsrb $3, %ecx, %xmm1
2482 ; X32-SSE41-NEXT: movl %eax, %ecx
2483 ; X32-SSE41-NEXT: shrl $4, %ecx
2484 ; X32-SSE41-NEXT: andl $1, %ecx
2485 ; X32-SSE41-NEXT: pinsrb $4, %ecx, %xmm1
2486 ; X32-SSE41-NEXT: movl %eax, %ecx
2487 ; X32-SSE41-NEXT: shrl $5, %ecx
2488 ; X32-SSE41-NEXT: andl $1, %ecx
2489 ; X32-SSE41-NEXT: pinsrb $5, %ecx, %xmm1
2490 ; X32-SSE41-NEXT: movl %eax, %ecx
2491 ; X32-SSE41-NEXT: shrl $6, %ecx
2492 ; X32-SSE41-NEXT: andl $1, %ecx
2493 ; X32-SSE41-NEXT: pinsrb $6, %ecx, %xmm1
2494 ; X32-SSE41-NEXT: movl %eax, %ecx
2495 ; X32-SSE41-NEXT: shrl $7, %ecx
2496 ; X32-SSE41-NEXT: andl $1, %ecx
2497 ; X32-SSE41-NEXT: pinsrb $7, %ecx, %xmm1
2498 ; X32-SSE41-NEXT: movl %eax, %ecx
2499 ; X32-SSE41-NEXT: shrl $8, %ecx
2500 ; X32-SSE41-NEXT: andl $1, %ecx
2501 ; X32-SSE41-NEXT: pinsrb $8, %ecx, %xmm1
2502 ; X32-SSE41-NEXT: movl %eax, %ecx
2503 ; X32-SSE41-NEXT: shrl $9, %ecx
2504 ; X32-SSE41-NEXT: andl $1, %ecx
2505 ; X32-SSE41-NEXT: pinsrb $9, %ecx, %xmm1
2506 ; X32-SSE41-NEXT: movl %eax, %ecx
2507 ; X32-SSE41-NEXT: shrl $10, %ecx
2508 ; X32-SSE41-NEXT: andl $1, %ecx
2509 ; X32-SSE41-NEXT: pinsrb $10, %ecx, %xmm1
2510 ; X32-SSE41-NEXT: movl %eax, %ecx
2511 ; X32-SSE41-NEXT: shrl $11, %ecx
2512 ; X32-SSE41-NEXT: andl $1, %ecx
2513 ; X32-SSE41-NEXT: pinsrb $11, %ecx, %xmm1
2514 ; X32-SSE41-NEXT: movl %eax, %ecx
2515 ; X32-SSE41-NEXT: shrl $12, %ecx
2516 ; X32-SSE41-NEXT: andl $1, %ecx
2517 ; X32-SSE41-NEXT: pinsrb $12, %ecx, %xmm1
2518 ; X32-SSE41-NEXT: movl %eax, %ecx
2519 ; X32-SSE41-NEXT: shrl $13, %ecx
2520 ; X32-SSE41-NEXT: andl $1, %ecx
2521 ; X32-SSE41-NEXT: pinsrb $13, %ecx, %xmm1
2522 ; X32-SSE41-NEXT: movl %eax, %ecx
2523 ; X32-SSE41-NEXT: shrl $14, %ecx
2524 ; X32-SSE41-NEXT: andl $1, %ecx
2525 ; X32-SSE41-NEXT: pinsrb $14, %ecx, %xmm1
2526 ; X32-SSE41-NEXT: shrl $15, %eax
2527 ; X32-SSE41-NEXT: pinsrb $15, %eax, %xmm1
2528 ; X32-SSE41-NEXT: pmovzxbw {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,x…
2529 ; X32-SSE41-NEXT: psllw $15, %xmm0
2530 ; X32-SSE41-NEXT: psraw $15, %xmm0
2531 ; X32-SSE41-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2532 ; X32-SSE41-NEXT: psllw $15, %xmm1
2533 ; X32-SSE41-NEXT: psraw $15, %xmm1
2534 ; X32-SSE41-NEXT: retl
2886 ; SSE41-LABEL: load_sext_32i1_to_32i8:
2887 ; SSE41: # BB#0: # %entry
2888 ; SSE41-NEXT: movswq (%rdi), %rax
2889 ; SSE41-NEXT: movq %rax, %rcx
2890 ; SSE41-NEXT: shlq $62, %rcx
2891 ; SSE41-NEXT: sarq $63, %rcx
2892 ; SSE41-NEXT: movq %rax, %rdx
2893 ; SSE41-NEXT: shlq $63, %rdx
2894 ; SSE41-NEXT: sarq $63, %rdx
2895 ; SSE41-NEXT: movd %edx, %xmm0
2896 ; SSE41-NEXT: pinsrb $1, %ecx, %xmm0
2897 ; SSE41-NEXT: movq %rax, %rcx
2898 ; SSE41-NEXT: shlq $61, %rcx
2899 ; SSE41-NEXT: sarq $63, %rcx
2900 ; SSE41-NEXT: pinsrb $2, %ecx, %xmm0
2901 ; SSE41-NEXT: movq %rax, %rcx
2902 ; SSE41-NEXT: shlq $60, %rcx
2903 ; SSE41-NEXT: sarq $63, %rcx
2904 ; SSE41-NEXT: pinsrb $3, %ecx, %xmm0
2905 ; SSE41-NEXT: movq %rax, %rcx
2906 ; SSE41-NEXT: shlq $59, %rcx
2907 ; SSE41-NEXT: sarq $63, %rcx
2908 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm0
2909 ; SSE41-NEXT: movq %rax, %rcx
2910 ; SSE41-NEXT: shlq $58, %rcx
2911 ; SSE41-NEXT: sarq $63, %rcx
2912 ; SSE41-NEXT: pinsrb $5, %ecx, %xmm0
2913 ; SSE41-NEXT: movq %rax, %rcx
2914 ; SSE41-NEXT: shlq $57, %rcx
2915 ; SSE41-NEXT: sarq $63, %rcx
2916 ; SSE41-NEXT: pinsrb $6, %ecx, %xmm0
2917 ; SSE41-NEXT: movsbq %al, %rcx
2918 ; SSE41-NEXT: shrq $7, %rcx
2919 ; SSE41-NEXT: pinsrb $7, %ecx, %xmm0
2920 ; SSE41-NEXT: movq %rax, %rcx
2921 ; SSE41-NEXT: shlq $55, %rcx
2922 ; SSE41-NEXT: sarq $63, %rcx
2923 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm0
2924 ; SSE41-NEXT: movq %rax, %rcx
2925 ; SSE41-NEXT: shlq $54, %rcx
2926 ; SSE41-NEXT: sarq $63, %rcx
2927 ; SSE41-NEXT: pinsrb $9, %ecx, %xmm0
2928 ; SSE41-NEXT: movq %rax, %rcx
2929 ; SSE41-NEXT: shlq $53, %rcx
2930 ; SSE41-NEXT: sarq $63, %rcx
2931 ; SSE41-NEXT: pinsrb $10, %ecx, %xmm0
2932 ; SSE41-NEXT: movq %rax, %rcx
2933 ; SSE41-NEXT: shlq $52, %rcx
2934 ; SSE41-NEXT: sarq $63, %rcx
2935 ; SSE41-NEXT: pinsrb $11, %ecx, %xmm0
2936 ; SSE41-NEXT: movq %rax, %rcx
2937 ; SSE41-NEXT: shlq $51, %rcx
2938 ; SSE41-NEXT: sarq $63, %rcx
2939 ; SSE41-NEXT: pinsrb $12, %ecx, %xmm0
2940 ; SSE41-NEXT: movq %rax, %rcx
2941 ; SSE41-NEXT: shlq $50, %rcx
2942 ; SSE41-NEXT: sarq $63, %rcx
2943 ; SSE41-NEXT: pinsrb $13, %ecx, %xmm0
2944 ; SSE41-NEXT: movq %rax, %rcx
2945 ; SSE41-NEXT: shlq $49, %rcx
2946 ; SSE41-NEXT: sarq $63, %rcx
2947 ; SSE41-NEXT: pinsrb $14, %ecx, %xmm0
2948 ; SSE41-NEXT: shrq $15, %rax
2949 ; SSE41-NEXT: pinsrb $15, %eax, %xmm0
2950 ; SSE41-NEXT: movswq 2(%rdi), %rax
2951 ; SSE41-NEXT: movq %rax, %rcx
2952 ; SSE41-NEXT: shlq $62, %rcx
2953 ; SSE41-NEXT: sarq $63, %rcx
2954 ; SSE41-NEXT: movq %rax, %rdx
2955 ; SSE41-NEXT: shlq $63, %rdx
2956 ; SSE41-NEXT: sarq $63, %rdx
2957 ; SSE41-NEXT: movd %edx, %xmm1
2958 ; SSE41-NEXT: pinsrb $1, %ecx, %xmm1
2959 ; SSE41-NEXT: movq %rax, %rcx
2960 ; SSE41-NEXT: shlq $61, %rcx
2961 ; SSE41-NEXT: sarq $63, %rcx
2962 ; SSE41-NEXT: pinsrb $2, %ecx, %xmm1
2963 ; SSE41-NEXT: movq %rax, %rcx
2964 ; SSE41-NEXT: shlq $60, %rcx
2965 ; SSE41-NEXT: sarq $63, %rcx
2966 ; SSE41-NEXT: pinsrb $3, %ecx, %xmm1
2967 ; SSE41-NEXT: movq %rax, %rcx
2968 ; SSE41-NEXT: shlq $59, %rcx
2969 ; SSE41-NEXT: sarq $63, %rcx
2970 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm1
2971 ; SSE41-NEXT: movq %rax, %rcx
2972 ; SSE41-NEXT: shlq $58, %rcx
2973 ; SSE41-NEXT: sarq $63, %rcx
2974 ; SSE41-NEXT: pinsrb $5, %ecx, %xmm1
2975 ; SSE41-NEXT: movq %rax, %rcx
2976 ; SSE41-NEXT: shlq $57, %rcx
2977 ; SSE41-NEXT: sarq $63, %rcx
2978 ; SSE41-NEXT: pinsrb $6, %ecx, %xmm1
2979 ; SSE41-NEXT: movsbq %al, %rcx
2980 ; SSE41-NEXT: shrq $7, %rcx
2981 ; SSE41-NEXT: pinsrb $7, %ecx, %xmm1
2982 ; SSE41-NEXT: movq %rax, %rcx
2983 ; SSE41-NEXT: shlq $55, %rcx
2984 ; SSE41-NEXT: sarq $63, %rcx
2985 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm1
2986 ; SSE41-NEXT: movq %rax, %rcx
2987 ; SSE41-NEXT: shlq $54, %rcx
2988 ; SSE41-NEXT: sarq $63, %rcx
2989 ; SSE41-NEXT: pinsrb $9, %ecx, %xmm1
2990 ; SSE41-NEXT: movq %rax, %rcx
2991 ; SSE41-NEXT: shlq $53, %rcx
2992 ; SSE41-NEXT: sarq $63, %rcx
2993 ; SSE41-NEXT: pinsrb $10, %ecx, %xmm1
2994 ; SSE41-NEXT: movq %rax, %rcx
2995 ; SSE41-NEXT: shlq $52, %rcx
2996 ; SSE41-NEXT: sarq $63, %rcx
2997 ; SSE41-NEXT: pinsrb $11, %ecx, %xmm1
2998 ; SSE41-NEXT: movq %rax, %rcx
2999 ; SSE41-NEXT: shlq $51, %rcx
3000 ; SSE41-NEXT: sarq $63, %rcx
3001 ; SSE41-NEXT: pinsrb $12, %ecx, %xmm1
3002 ; SSE41-NEXT: movq %rax, %rcx
3003 ; SSE41-NEXT: shlq $50, %rcx
3004 ; SSE41-NEXT: sarq $63, %rcx
3005 ; SSE41-NEXT: pinsrb $13, %ecx, %xmm1
3006 ; SSE41-NEXT: movq %rax, %rcx
3007 ; SSE41-NEXT: shlq $49, %rcx
3008 ; SSE41-NEXT: sarq $63, %rcx
3009 ; SSE41-NEXT: pinsrb $14, %ecx, %xmm1
3010 ; SSE41-NEXT: shrq $15, %rax
3011 ; SSE41-NEXT: pinsrb $15, %eax, %xmm1
3012 ; SSE41-NEXT: retq
3300 ; X32-SSE41-LABEL: load_sext_32i1_to_32i8:
3301 ; X32-SSE41: # BB#0: # %entry
3302 ; X32-SSE41-NEXT: pushl %esi
3303 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3304 ; X32-SSE41-NEXT: movswl (%eax), %ecx
3305 ; X32-SSE41-NEXT: movl %ecx, %edx
3306 ; X32-SSE41-NEXT: shll $30, %edx
3307 ; X32-SSE41-NEXT: sarl $31, %edx
3308 ; X32-SSE41-NEXT: movl %ecx, %esi
3309 ; X32-SSE41-NEXT: shll $31, %esi
3310 ; X32-SSE41-NEXT: sarl $31, %esi
3311 ; X32-SSE41-NEXT: movd %esi, %xmm0
3312 ; X32-SSE41-NEXT: pinsrb $1, %edx, %xmm0
3313 ; X32-SSE41-NEXT: movl %ecx, %edx
3314 ; X32-SSE41-NEXT: shll $29, %edx
3315 ; X32-SSE41-NEXT: sarl $31, %edx
3316 ; X32-SSE41-NEXT: pinsrb $2, %edx, %xmm0
3317 ; X32-SSE41-NEXT: movl %ecx, %edx
3318 ; X32-SSE41-NEXT: shll $28, %edx
3319 ; X32-SSE41-NEXT: sarl $31, %edx
3320 ; X32-SSE41-NEXT: pinsrb $3, %edx, %xmm0
3321 ; X32-SSE41-NEXT: movl %ecx, %edx
3322 ; X32-SSE41-NEXT: shll $27, %edx
3323 ; X32-SSE41-NEXT: sarl $31, %edx
3324 ; X32-SSE41-NEXT: pinsrb $4, %edx, %xmm0
3325 ; X32-SSE41-NEXT: movl %ecx, %edx
3326 ; X32-SSE41-NEXT: shll $26, %edx
3327 ; X32-SSE41-NEXT: sarl $31, %edx
3328 ; X32-SSE41-NEXT: pinsrb $5, %edx, %xmm0
3329 ; X32-SSE41-NEXT: movl %ecx, %edx
3330 ; X32-SSE41-NEXT: shll $25, %edx
3331 ; X32-SSE41-NEXT: sarl $31, %edx
3332 ; X32-SSE41-NEXT: pinsrb $6, %edx, %xmm0
3333 ; X32-SSE41-NEXT: movsbl %cl, %edx
3334 ; X32-SSE41-NEXT: shrl $7, %edx
3335 ; X32-SSE41-NEXT: pinsrb $7, %edx, %xmm0
3336 ; X32-SSE41-NEXT: movl %ecx, %edx
3337 ; X32-SSE41-NEXT: shll $23, %edx
3338 ; X32-SSE41-NEXT: sarl $31, %edx
3339 ; X32-SSE41-NEXT: pinsrb $8, %edx, %xmm0
3340 ; X32-SSE41-NEXT: movl %ecx, %edx
3341 ; X32-SSE41-NEXT: shll $22, %edx
3342 ; X32-SSE41-NEXT: sarl $31, %edx
3343 ; X32-SSE41-NEXT: pinsrb $9, %edx, %xmm0
3344 ; X32-SSE41-NEXT: movl %ecx, %edx
3345 ; X32-SSE41-NEXT: shll $21, %edx
3346 ; X32-SSE41-NEXT: sarl $31, %edx
3347 ; X32-SSE41-NEXT: pinsrb $10, %edx, %xmm0
3348 ; X32-SSE41-NEXT: movl %ecx, %edx
3349 ; X32-SSE41-NEXT: shll $20, %edx
3350 ; X32-SSE41-NEXT: sarl $31, %edx
3351 ; X32-SSE41-NEXT: pinsrb $11, %edx, %xmm0
3352 ; X32-SSE41-NEXT: movl %ecx, %edx
3353 ; X32-SSE41-NEXT: shll $19, %edx
3354 ; X32-SSE41-NEXT: sarl $31, %edx
3355 ; X32-SSE41-NEXT: pinsrb $12, %edx, %xmm0
3356 ; X32-SSE41-NEXT: movl %ecx, %edx
3357 ; X32-SSE41-NEXT: shll $18, %edx
3358 ; X32-SSE41-NEXT: sarl $31, %edx
3359 ; X32-SSE41-NEXT: pinsrb $13, %edx, %xmm0
3360 ; X32-SSE41-NEXT: movl %ecx, %edx
3361 ; X32-SSE41-NEXT: shll $17, %edx
3362 ; X32-SSE41-NEXT: sarl $31, %edx
3363 ; X32-SSE41-NEXT: pinsrb $14, %edx, %xmm0
3364 ; X32-SSE41-NEXT: shrl $15, %ecx
3365 ; X32-SSE41-NEXT: pinsrb $15, %ecx, %xmm0
3366 ; X32-SSE41-NEXT: movswl 2(%eax), %eax
3367 ; X32-SSE41-NEXT: movl %eax, %ecx
3368 ; X32-SSE41-NEXT: shll $30, %ecx
3369 ; X32-SSE41-NEXT: sarl $31, %ecx
3370 ; X32-SSE41-NEXT: movl %eax, %edx
3371 ; X32-SSE41-NEXT: shll $31, %edx
3372 ; X32-SSE41-NEXT: sarl $31, %edx
3373 ; X32-SSE41-NEXT: movd %edx, %xmm1
3374 ; X32-SSE41-NEXT: pinsrb $1, %ecx, %xmm1
3375 ; X32-SSE41-NEXT: movl %eax, %ecx
3376 ; X32-SSE41-NEXT: shll $29, %ecx
3377 ; X32-SSE41-NEXT: sarl $31, %ecx
3378 ; X32-SSE41-NEXT: pinsrb $2, %ecx, %xmm1
3379 ; X32-SSE41-NEXT: movl %eax, %ecx
3380 ; X32-SSE41-NEXT: shll $28, %ecx
3381 ; X32-SSE41-NEXT: sarl $31, %ecx
3382 ; X32-SSE41-NEXT: pinsrb $3, %ecx, %xmm1
3383 ; X32-SSE41-NEXT: movl %eax, %ecx
3384 ; X32-SSE41-NEXT: shll $27, %ecx
3385 ; X32-SSE41-NEXT: sarl $31, %ecx
3386 ; X32-SSE41-NEXT: pinsrb $4, %ecx, %xmm1
3387 ; X32-SSE41-NEXT: movl %eax, %ecx
3388 ; X32-SSE41-NEXT: shll $26, %ecx
3389 ; X32-SSE41-NEXT: sarl $31, %ecx
3390 ; X32-SSE41-NEXT: pinsrb $5, %ecx, %xmm1
3391 ; X32-SSE41-NEXT: movl %eax, %ecx
3392 ; X32-SSE41-NEXT: shll $25, %ecx
3393 ; X32-SSE41-NEXT: sarl $31, %ecx
3394 ; X32-SSE41-NEXT: pinsrb $6, %ecx, %xmm1
3395 ; X32-SSE41-NEXT: movsbl %al, %ecx
3396 ; X32-SSE41-NEXT: shrl $7, %ecx
3397 ; X32-SSE41-NEXT: pinsrb $7, %ecx, %xmm1
3398 ; X32-SSE41-NEXT: movl %eax, %ecx
3399 ; X32-SSE41-NEXT: shll $23, %ecx
3400 ; X32-SSE41-NEXT: sarl $31, %ecx
3401 ; X32-SSE41-NEXT: pinsrb $8, %ecx, %xmm1
3402 ; X32-SSE41-NEXT: movl %eax, %ecx
3403 ; X32-SSE41-NEXT: shll $22, %ecx
3404 ; X32-SSE41-NEXT: sarl $31, %ecx
3405 ; X32-SSE41-NEXT: pinsrb $9, %ecx, %xmm1
3406 ; X32-SSE41-NEXT: movl %eax, %ecx
3407 ; X32-SSE41-NEXT: shll $21, %ecx
3408 ; X32-SSE41-NEXT: sarl $31, %ecx
3409 ; X32-SSE41-NEXT: pinsrb $10, %ecx, %xmm1
3410 ; X32-SSE41-NEXT: movl %eax, %ecx
3411 ; X32-SSE41-NEXT: shll $20, %ecx
3412 ; X32-SSE41-NEXT: sarl $31, %ecx
3413 ; X32-SSE41-NEXT: pinsrb $11, %ecx, %xmm1
3414 ; X32-SSE41-NEXT: movl %eax, %ecx
3415 ; X32-SSE41-NEXT: shll $19, %ecx
3416 ; X32-SSE41-NEXT: sarl $31, %ecx
3417 ; X32-SSE41-NEXT: pinsrb $12, %ecx, %xmm1
3418 ; X32-SSE41-NEXT: movl %eax, %ecx
3419 ; X32-SSE41-NEXT: shll $18, %ecx
3420 ; X32-SSE41-NEXT: sarl $31, %ecx
3421 ; X32-SSE41-NEXT: pinsrb $13, %ecx, %xmm1
3422 ; X32-SSE41-NEXT: movl %eax, %ecx
3423 ; X32-SSE41-NEXT: shll $17, %ecx
3424 ; X32-SSE41-NEXT: sarl $31, %ecx
3425 ; X32-SSE41-NEXT: pinsrb $14, %ecx, %xmm1
3426 ; X32-SSE41-NEXT: shrl $15, %eax
3427 ; X32-SSE41-NEXT: pinsrb $15, %eax, %xmm1
3428 ; X32-SSE41-NEXT: popl %esi
3429 ; X32-SSE41-NEXT: retl
3457 ; SSE41-LABEL: load_sext_16i8_to_16i16:
3458 ; SSE41: # BB#0: # %entry
3459 ; SSE41-NEXT: pmovsxbw (%rdi), %xmm0
3460 ; SSE41-NEXT: pmovsxbw 8(%rdi), %xmm1
3461 ; SSE41-NEXT: retq
3475 ; X32-SSE41-LABEL: load_sext_16i8_to_16i16:
3476 ; X32-SSE41: # BB#0: # %entry
3477 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3478 ; X32-SSE41-NEXT: pmovsxbw (%eax), %xmm0
3479 ; X32-SSE41-NEXT: pmovsxbw 8(%eax), %xmm1
3480 ; X32-SSE41-NEXT: retl
3508 ; SSE41-LABEL: load_sext_2i16_to_2i64:
3509 ; SSE41: # BB#0: # %entry
3510 ; SSE41-NEXT: pmovsxwq (%rdi), %xmm0
3511 ; SSE41-NEXT: retq
3518 ; X32-SSE41-LABEL: load_sext_2i16_to_2i64:
3519 ; X32-SSE41: # BB#0: # %entry
3520 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3521 ; X32-SSE41-NEXT: pmovsxwq (%eax), %xmm0
3522 ; X32-SSE41-NEXT: retl
3544 ; SSE41-LABEL: load_sext_4i16_to_4i32:
3545 ; SSE41: # BB#0: # %entry
3546 ; SSE41-NEXT: pmovsxwd (%rdi), %xmm0
3547 ; SSE41-NEXT: retq
3554 ; X32-SSE41-LABEL: load_sext_4i16_to_4i32:
3555 ; X32-SSE41: # BB#0: # %entry
3556 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3557 ; X32-SSE41-NEXT: pmovsxwd (%eax), %xmm0
3558 ; X32-SSE41-NEXT: retl
3594 ; SSE41-LABEL: load_sext_4i16_to_4i64:
3595 ; SSE41: # BB#0: # %entry
3596 ; SSE41-NEXT: pmovsxwq (%rdi), %xmm0
3597 ; SSE41-NEXT: pmovsxwq 4(%rdi), %xmm1
3598 ; SSE41-NEXT: retq
3614 ; X32-SSE41-LABEL: load_sext_4i16_to_4i64:
3615 ; X32-SSE41: # BB#0: # %entry
3616 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3617 ; X32-SSE41-NEXT: pmovsxwq (%eax), %xmm0
3618 ; X32-SSE41-NEXT: pmovsxwq 4(%eax), %xmm1
3619 ; X32-SSE41-NEXT: retl
3647 ; SSE41-LABEL: load_sext_8i16_to_8i32:
3648 ; SSE41: # BB#0: # %entry
3649 ; SSE41-NEXT: pmovsxwd (%rdi), %xmm0
3650 ; SSE41-NEXT: pmovsxwd 8(%rdi), %xmm1
3651 ; SSE41-NEXT: retq
3665 ; X32-SSE41-LABEL: load_sext_8i16_to_8i32:
3666 ; X32-SSE41: # BB#0: # %entry
3667 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3668 ; X32-SSE41-NEXT: pmovsxwd (%eax), %xmm0
3669 ; X32-SSE41-NEXT: pmovsxwd 8(%eax), %xmm1
3670 ; X32-SSE41-NEXT: retl
3694 ; SSE41-LABEL: load_sext_2i32_to_2i64:
3695 ; SSE41: # BB#0: # %entry
3696 ; SSE41-NEXT: pmovsxdq (%rdi), %xmm0
3697 ; SSE41-NEXT: retq
3704 ; X32-SSE41-LABEL: load_sext_2i32_to_2i64:
3705 ; X32-SSE41: # BB#0: # %entry
3706 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3707 ; X32-SSE41-NEXT: pmovsxdq (%eax), %xmm0
3708 ; X32-SSE41-NEXT: retl
3740 ; SSE41-LABEL: load_sext_4i32_to_4i64:
3741 ; SSE41: # BB#0: # %entry
3742 ; SSE41-NEXT: pmovsxdq (%rdi), %xmm0
3743 ; SSE41-NEXT: pmovsxdq 8(%rdi), %xmm1
3744 ; SSE41-NEXT: retq
3758 ; X32-SSE41-LABEL: load_sext_4i32_to_4i64:
3759 ; X32-SSE41: # BB#0: # %entry
3760 ; X32-SSE41-NEXT: movl {{[0-9]+}}(%esp), %eax
3761 ; X32-SSE41-NEXT: pmovsxdq (%eax), %xmm0
3762 ; X32-SSE41-NEXT: pmovsxdq 8(%eax), %xmm1
3763 ; X32-SSE41-NEXT: retl
3785 ; SSE41-LABEL: sext_2i8_to_i32:
3786 ; SSE41: # BB#0: # %entry
3787 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
3788 ; SSE41-NEXT: movd %xmm0, %eax
3789 ; SSE41-NEXT: retq
3797 ; X32-SSE41-LABEL: sext_2i8_to_i32:
3798 ; X32-SSE41: # BB#0: # %entry
3799 ; X32-SSE41-NEXT: pushl %eax
3800 ; X32-SSE41-NEXT: .Ltmp0:
3801 ; X32-SSE41-NEXT: .cfi_def_cfa_offset 8
3802 ; X32-SSE41-NEXT: pmovsxbw %xmm0, %xmm0
3803 ; X32-SSE41-NEXT: movd %xmm0, %eax
3804 ; X32-SSE41-NEXT: popl %ecx
3805 ; X32-SSE41-NEXT: retl
3840 ; SSE41-LABEL: sext_4i1_to_4i64:
3841 ; SSE41: # BB#0:
3842 ; SSE41-NEXT: pslld $31, %xmm0
3843 ; SSE41-NEXT: psrad $31, %xmm0
3844 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm2
3845 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
3846 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm1
3847 ; SSE41-NEXT: movdqa %xmm2, %xmm0
3848 ; SSE41-NEXT: retq
3867 ; X32-SSE41-LABEL: sext_4i1_to_4i64:
3868 ; X32-SSE41: # BB#0:
3869 ; X32-SSE41-NEXT: pslld $31, %xmm0
3870 ; X32-SSE41-NEXT: psrad $31, %xmm0
3871 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm2
3872 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
3873 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm1
3874 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
3875 ; X32-SSE41-NEXT: retl
3907 ; SSE41-LABEL: sext_4i8_to_4i64:
3908 ; SSE41: # BB#0:
3909 ; SSE41-NEXT: pslld $24, %xmm0
3910 ; SSE41-NEXT: psrad $24, %xmm0
3911 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm2
3912 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
3913 ; SSE41-NEXT: pmovsxdq %xmm0, %xmm1
3914 ; SSE41-NEXT: movdqa %xmm2, %xmm0
3915 ; SSE41-NEXT: retq
3934 ; X32-SSE41-LABEL: sext_4i8_to_4i64:
3935 ; X32-SSE41: # BB#0:
3936 ; X32-SSE41-NEXT: pslld $24, %xmm0
3937 ; X32-SSE41-NEXT: psrad $24, %xmm0
3938 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm2
3939 ; X32-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
3940 ; X32-SSE41-NEXT: pmovsxdq %xmm0, %xmm1
3941 ; X32-SSE41-NEXT: movdqa %xmm2, %xmm0
3942 ; X32-SSE41-NEXT: retl