Lines Matching refs:SSE2
2 …RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,SSE2
11 …lc < %s -mtriple=i686-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=X86-SSE,X86-SSE2
15 ; SSE2-LABEL: sext_16i8_to_8i16:
16 ; SSE2: # %bb.0: # %entry
17 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
18 ; SSE2-NEXT: psraw $8, %xmm0
19 ; SSE2-NEXT: retq
37 ; X86-SSE2-LABEL: sext_16i8_to_8i16:
38 ; X86-SSE2: # %bb.0: # %entry
39 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
40 ; X86-SSE2-NEXT: psraw $8, %xmm0
41 ; X86-SSE2-NEXT: retl
54 ; SSE2-LABEL: sext_16i8_to_16i16:
55 ; SSE2: # %bb.0: # %entry
56 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
57 ; SSE2-NEXT: psraw $8, %xmm2
58 ; SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11…
59 ; SSE2-NEXT: psraw $8, %xmm1
60 ; SSE2-NEXT: movdqa %xmm2, %xmm0
61 ; SSE2-NEXT: retq
98 ; X86-SSE2-LABEL: sext_16i8_to_16i16:
99 ; X86-SSE2: # %bb.0: # %entry
100 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[…
101 ; X86-SSE2-NEXT: psraw $8, %xmm2
102 ; X86-SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm…
103 ; X86-SSE2-NEXT: psraw $8, %xmm1
104 ; X86-SSE2-NEXT: movdqa %xmm2, %xmm0
105 ; X86-SSE2-NEXT: retl
120 ; SSE2-LABEL: sext_32i8_to_32i16:
121 ; SSE2: # %bb.0: # %entry
122 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],x…
123 ; SSE2-NEXT: psraw $8, %xmm4
124 ; SSE2-NEXT: punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm0[8],xmm5[9],xmm0[9],xmm5[10],xmm0[10],xmm5[11…
125 ; SSE2-NEXT: psraw $8, %xmm5
126 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
127 ; SSE2-NEXT: psraw $8, %xmm2
128 ; SSE2-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm1[8],xmm3[9],xmm1[9],xmm3[10],xmm1[10],xmm3[11…
129 ; SSE2-NEXT: psraw $8, %xmm3
130 ; SSE2-NEXT: movdqa %xmm4, %xmm0
131 ; SSE2-NEXT: movdqa %xmm5, %xmm1
132 ; SSE2-NEXT: retq
195 ; X86-SSE2-LABEL: sext_32i8_to_32i16:
196 ; X86-SSE2: # %bb.0: # %entry
197 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[…
198 ; X86-SSE2-NEXT: psraw $8, %xmm4
199 ; X86-SSE2-NEXT: punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm0[8],xmm5[9],xmm0[9],xmm5[10],xmm0[10],xmm…
200 ; X86-SSE2-NEXT: psraw $8, %xmm5
201 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[…
202 ; X86-SSE2-NEXT: psraw $8, %xmm2
203 ; X86-SSE2-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm1[8],xmm3[9],xmm1[9],xmm3[10],xmm1[10],xmm…
204 ; X86-SSE2-NEXT: psraw $8, %xmm3
205 ; X86-SSE2-NEXT: movdqa %xmm4, %xmm0
206 ; X86-SSE2-NEXT: movdqa %xmm5, %xmm1
207 ; X86-SSE2-NEXT: retl
226 ; SSE2-LABEL: sext_16i8_to_4i32:
227 ; SSE2: # %bb.0: # %entry
228 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
229 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
230 ; SSE2-NEXT: psrad $24, %xmm0
231 ; SSE2-NEXT: retq
250 ; X86-SSE2-LABEL: sext_16i8_to_4i32:
251 ; X86-SSE2: # %bb.0: # %entry
252 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
253 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
254 ; X86-SSE2-NEXT: psrad $24, %xmm0
255 ; X86-SSE2-NEXT: retl
268 ; SSE2-LABEL: sext_16i8_to_8i32:
269 ; SSE2: # %bb.0: # %entry
270 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
271 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
272 ; SSE2-NEXT: psrad $24, %xmm0
273 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
274 ; SSE2-NEXT: psrad $24, %xmm1
275 ; SSE2-NEXT: retq
312 ; X86-SSE2-LABEL: sext_16i8_to_8i32:
313 ; X86-SSE2: # %bb.0: # %entry
314 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[…
315 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[…
316 ; X86-SSE2-NEXT: psrad $24, %xmm0
317 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
318 ; X86-SSE2-NEXT: psrad $24, %xmm1
319 ; X86-SSE2-NEXT: retl
335 ; SSE2-LABEL: sext_16i8_to_16i32:
336 ; SSE2: # %bb.0: # %entry
337 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
338 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],x…
339 ; SSE2-NEXT: psrad $24, %xmm4
340 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
341 ; SSE2-NEXT: psrad $24, %xmm1
342 ; SSE2-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
343 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
344 ; SSE2-NEXT: psrad $24, %xmm2
345 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],x…
346 ; SSE2-NEXT: psrad $24, %xmm3
347 ; SSE2-NEXT: movdqa %xmm4, %xmm0
348 ; SSE2-NEXT: retq
404 ; X86-SSE2-LABEL: sext_16i8_to_16i32:
405 ; X86-SSE2: # %bb.0: # %entry
406 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[…
407 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[…
408 ; X86-SSE2-NEXT: psrad $24, %xmm4
409 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
410 ; X86-SSE2-NEXT: psrad $24, %xmm1
411 ; X86-SSE2-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
412 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[…
413 ; X86-SSE2-NEXT: psrad $24, %xmm2
414 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[…
415 ; X86-SSE2-NEXT: psrad $24, %xmm3
416 ; X86-SSE2-NEXT: movdqa %xmm4, %xmm0
417 ; X86-SSE2-NEXT: retl
436 ; SSE2-LABEL: sext_16i8_to_2i64:
437 ; SSE2: # %bb.0: # %entry
438 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
439 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
440 ; SSE2-NEXT: pxor %xmm1, %xmm1
441 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
442 ; SSE2-NEXT: psrad $24, %xmm0
443 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
444 ; SSE2-NEXT: retq
466 ; X86-SSE2-LABEL: sext_16i8_to_2i64:
467 ; X86-SSE2: # %bb.0: # %entry
468 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
469 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
470 ; X86-SSE2-NEXT: pxor %xmm1, %xmm1
471 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm1
472 ; X86-SSE2-NEXT: psrad $24, %xmm0
473 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
474 ; X86-SSE2-NEXT: retl
487 ; SSE2-LABEL: sext_16i8_to_4i64:
488 ; SSE2: # %bb.0: # %entry
489 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
490 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
491 ; SSE2-NEXT: psrad $24, %xmm1
492 ; SSE2-NEXT: pxor %xmm2, %xmm2
493 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
494 ; SSE2-NEXT: movdqa %xmm1, %xmm0
495 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
496 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
497 ; SSE2-NEXT: retq
537 ; X86-SSE2-LABEL: sext_16i8_to_4i64:
538 ; X86-SSE2: # %bb.0: # %entry
539 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
540 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[…
541 ; X86-SSE2-NEXT: psrad $24, %xmm1
542 ; X86-SSE2-NEXT: pxor %xmm2, %xmm2
543 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm2
544 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm0
545 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
546 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
547 ; X86-SSE2-NEXT: retl
563 ; SSE2-LABEL: sext_16i8_to_8i64:
564 ; SSE2: # %bb.0: # %entry
565 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
566 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
567 ; SSE2-NEXT: psrad $24, %xmm1
568 ; SSE2-NEXT: pxor %xmm4, %xmm4
569 ; SSE2-NEXT: pxor %xmm3, %xmm3
570 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm3
571 ; SSE2-NEXT: movdqa %xmm1, %xmm0
572 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
573 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm3[2],xmm1[3],xmm3[3]
574 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],x…
575 ; SSE2-NEXT: psrad $24, %xmm3
576 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm4
577 ; SSE2-NEXT: movdqa %xmm3, %xmm2
578 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
579 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm4[2],xmm3[3],xmm4[3]
580 ; SSE2-NEXT: retq
641 ; X86-SSE2-LABEL: sext_16i8_to_8i64:
642 ; X86-SSE2: # %bb.0: # %entry
643 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[…
644 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[…
645 ; X86-SSE2-NEXT: psrad $24, %xmm1
646 ; X86-SSE2-NEXT: pxor %xmm4, %xmm4
647 ; X86-SSE2-NEXT: pxor %xmm3, %xmm3
648 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm3
649 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm0
650 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
651 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm3[2],xmm1[3],xmm3[3]
652 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[…
653 ; X86-SSE2-NEXT: psrad $24, %xmm3
654 ; X86-SSE2-NEXT: pcmpgtd %xmm3, %xmm4
655 ; X86-SSE2-NEXT: movdqa %xmm3, %xmm2
656 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
657 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm4[2],xmm3[3],xmm4[3]
658 ; X86-SSE2-NEXT: retl
679 ; SSE2-LABEL: sext_8i16_to_4i32:
680 ; SSE2: # %bb.0: # %entry
681 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
682 ; SSE2-NEXT: psrad $16, %xmm0
683 ; SSE2-NEXT: retq
701 ; X86-SSE2-LABEL: sext_8i16_to_4i32:
702 ; X86-SSE2: # %bb.0: # %entry
703 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
704 ; X86-SSE2-NEXT: psrad $16, %xmm0
705 ; X86-SSE2-NEXT: retl
718 ; SSE2-LABEL: sext_8i16_to_8i32:
719 ; SSE2: # %bb.0: # %entry
720 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
721 ; SSE2-NEXT: psrad $16, %xmm2
722 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],x…
723 ; SSE2-NEXT: psrad $16, %xmm1
724 ; SSE2-NEXT: movdqa %xmm2, %xmm0
725 ; SSE2-NEXT: retq
762 ; X86-SSE2-LABEL: sext_8i16_to_8i32:
763 ; X86-SSE2: # %bb.0: # %entry
764 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[…
765 ; X86-SSE2-NEXT: psrad $16, %xmm2
766 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[…
767 ; X86-SSE2-NEXT: psrad $16, %xmm1
768 ; X86-SSE2-NEXT: movdqa %xmm2, %xmm0
769 ; X86-SSE2-NEXT: retl
784 ; SSE2-LABEL: sext_16i16_to_16i32:
785 ; SSE2: # %bb.0: # %entry
786 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],x…
787 ; SSE2-NEXT: psrad $16, %xmm4
788 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm0[4],xmm5[5],xmm0[5],xmm5[6],xmm0[6],xmm5[7],x…
789 ; SSE2-NEXT: psrad $16, %xmm5
790 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
791 ; SSE2-NEXT: psrad $16, %xmm2
792 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],x…
793 ; SSE2-NEXT: psrad $16, %xmm3
794 ; SSE2-NEXT: movdqa %xmm4, %xmm0
795 ; SSE2-NEXT: movdqa %xmm5, %xmm1
796 ; SSE2-NEXT: retq
851 ; X86-SSE2-LABEL: sext_16i16_to_16i32:
852 ; X86-SSE2: # %bb.0: # %entry
853 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[…
854 ; X86-SSE2-NEXT: psrad $16, %xmm4
855 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm0[4],xmm5[5],xmm0[5],xmm5[6],xmm0[6],xmm5[…
856 ; X86-SSE2-NEXT: psrad $16, %xmm5
857 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[…
858 ; X86-SSE2-NEXT: psrad $16, %xmm2
859 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[…
860 ; X86-SSE2-NEXT: psrad $16, %xmm3
861 ; X86-SSE2-NEXT: movdqa %xmm4, %xmm0
862 ; X86-SSE2-NEXT: movdqa %xmm5, %xmm1
863 ; X86-SSE2-NEXT: retl
882 ; SSE2-LABEL: sext_8i16_to_2i64:
883 ; SSE2: # %bb.0: # %entry
884 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
885 ; SSE2-NEXT: pxor %xmm1, %xmm1
886 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
887 ; SSE2-NEXT: psrad $16, %xmm0
888 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
889 ; SSE2-NEXT: retq
910 ; X86-SSE2-LABEL: sext_8i16_to_2i64:
911 ; X86-SSE2: # %bb.0: # %entry
912 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
913 ; X86-SSE2-NEXT: pxor %xmm1, %xmm1
914 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm1
915 ; X86-SSE2-NEXT: psrad $16, %xmm0
916 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
917 ; X86-SSE2-NEXT: retl
930 ; SSE2-LABEL: sext_8i16_to_4i64:
931 ; SSE2: # %bb.0: # %entry
932 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
933 ; SSE2-NEXT: psrad $16, %xmm1
934 ; SSE2-NEXT: pxor %xmm2, %xmm2
935 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
936 ; SSE2-NEXT: movdqa %xmm1, %xmm0
937 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
938 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
939 ; SSE2-NEXT: retq
978 ; X86-SSE2-LABEL: sext_8i16_to_4i64:
979 ; X86-SSE2: # %bb.0: # %entry
980 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[…
981 ; X86-SSE2-NEXT: psrad $16, %xmm1
982 ; X86-SSE2-NEXT: pxor %xmm2, %xmm2
983 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm2
984 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm0
985 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
986 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
987 ; X86-SSE2-NEXT: retl
1003 ; SSE2-LABEL: sext_8i16_to_8i64:
1004 ; SSE2: # %bb.0: # %entry
1005 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1006 ; SSE2-NEXT: psrad $16, %xmm1
1007 ; SSE2-NEXT: pxor %xmm5, %xmm5
1008 ; SSE2-NEXT: pxor %xmm2, %xmm2
1009 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
1010 ; SSE2-NEXT: movdqa %xmm1, %xmm4
1011 ; SSE2-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
1012 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1013 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],x…
1014 ; SSE2-NEXT: psrad $16, %xmm3
1015 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm5
1016 ; SSE2-NEXT: movdqa %xmm3, %xmm2
1017 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
1018 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm5[2],xmm3[3],xmm5[3]
1019 ; SSE2-NEXT: movdqa %xmm4, %xmm0
1020 ; SSE2-NEXT: retq
1080 ; X86-SSE2-LABEL: sext_8i16_to_8i64:
1081 ; X86-SSE2: # %bb.0: # %entry
1082 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[…
1083 ; X86-SSE2-NEXT: psrad $16, %xmm1
1084 ; X86-SSE2-NEXT: pxor %xmm5, %xmm5
1085 ; X86-SSE2-NEXT: pxor %xmm2, %xmm2
1086 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm2
1087 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm4
1088 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
1089 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
1090 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[…
1091 ; X86-SSE2-NEXT: psrad $16, %xmm3
1092 ; X86-SSE2-NEXT: pcmpgtd %xmm3, %xmm5
1093 ; X86-SSE2-NEXT: movdqa %xmm3, %xmm2
1094 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
1095 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm5[2],xmm3[3],xmm5[3]
1096 ; X86-SSE2-NEXT: movdqa %xmm4, %xmm0
1097 ; X86-SSE2-NEXT: retl
1116 ; SSE2-LABEL: sext_4i32_to_2i64:
1117 ; SSE2: # %bb.0: # %entry
1118 ; SSE2-NEXT: pxor %xmm1, %xmm1
1119 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
1120 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1121 ; SSE2-NEXT: retq
1140 ; X86-SSE2-LABEL: sext_4i32_to_2i64:
1141 ; X86-SSE2: # %bb.0: # %entry
1142 ; X86-SSE2-NEXT: pxor %xmm1, %xmm1
1143 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm1
1144 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1145 ; X86-SSE2-NEXT: retl
1158 ; SSE2-LABEL: sext_4i32_to_4i64:
1159 ; SSE2: # %bb.0: # %entry
1160 ; SSE2-NEXT: pxor %xmm2, %xmm2
1161 ; SSE2-NEXT: pxor %xmm3, %xmm3
1162 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm3
1163 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1164 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
1165 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
1166 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1167 ; SSE2-NEXT: retq
1206 ; X86-SSE2-LABEL: sext_4i32_to_4i64:
1207 ; X86-SSE2: # %bb.0: # %entry
1208 ; X86-SSE2-NEXT: pxor %xmm2, %xmm2
1209 ; X86-SSE2-NEXT: pxor %xmm3, %xmm3
1210 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm3
1211 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1212 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
1213 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm2
1214 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1215 ; X86-SSE2-NEXT: retl
1230 ; SSE2-LABEL: sext_8i32_to_8i64:
1231 ; SSE2: # %bb.0: # %entry
1232 ; SSE2-NEXT: movdqa %xmm1, %xmm2
1233 ; SSE2-NEXT: pxor %xmm4, %xmm4
1234 ; SSE2-NEXT: pxor %xmm3, %xmm3
1235 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm3
1236 ; SSE2-NEXT: pxor %xmm5, %xmm5
1237 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm5
1238 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1239 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
1240 ; SSE2-NEXT: pxor %xmm3, %xmm3
1241 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm3
1242 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
1243 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm2[2,3,2,3]
1244 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
1245 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm4
1246 ; SSE2-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
1247 ; SSE2-NEXT: retq
1307 ; X86-SSE2-LABEL: sext_8i32_to_8i64:
1308 ; X86-SSE2: # %bb.0: # %entry
1309 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm2
1310 ; X86-SSE2-NEXT: pxor %xmm4, %xmm4
1311 ; X86-SSE2-NEXT: pxor %xmm3, %xmm3
1312 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm3
1313 ; X86-SSE2-NEXT: pxor %xmm5, %xmm5
1314 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm5
1315 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1316 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
1317 ; X86-SSE2-NEXT: pxor %xmm3, %xmm3
1318 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm3
1319 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
1320 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm2[2,3,2,3]
1321 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1]
1322 ; X86-SSE2-NEXT: pcmpgtd %xmm3, %xmm4
1323 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
1324 ; X86-SSE2-NEXT: retl
1403 ; X86-SSE2-LABEL: load_sext_2i1_to_2i64:
1404 ; X86-SSE2: # %bb.0: # %entry
1405 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1406 ; X86-SSE2-NEXT: movzbl (%eax), %eax
1407 ; X86-SSE2-NEXT: movzbl %al, %ecx
1408 ; X86-SSE2-NEXT: shrb %al
1409 ; X86-SSE2-NEXT: movzbl %al, %eax
1410 ; X86-SSE2-NEXT: negl %eax
1411 ; X86-SSE2-NEXT: movd %eax, %xmm0
1412 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[0,0,1,1]
1413 ; X86-SSE2-NEXT: andl $1, %ecx
1414 ; X86-SSE2-NEXT: negl %ecx
1415 ; X86-SSE2-NEXT: movd %ecx, %xmm0
1416 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
1417 ; X86-SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1418 ; X86-SSE2-NEXT: retl
1442 ; SSE2-LABEL: load_sext_2i8_to_2i64:
1443 ; SSE2: # %bb.0: # %entry
1444 ; SSE2-NEXT: movzwl (%rdi), %eax
1445 ; SSE2-NEXT: movd %eax, %xmm0
1446 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1447 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1448 ; SSE2-NEXT: pxor %xmm1, %xmm1
1449 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
1450 ; SSE2-NEXT: psrad $24, %xmm0
1451 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1452 ; SSE2-NEXT: retq
1476 ; X86-SSE2-LABEL: load_sext_2i8_to_2i64:
1477 ; X86-SSE2: # %bb.0: # %entry
1478 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1479 ; X86-SSE2-NEXT: movzwl (%eax), %eax
1480 ; X86-SSE2-NEXT: movd %eax, %xmm0
1481 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1482 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1483 ; X86-SSE2-NEXT: pxor %xmm1, %xmm1
1484 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm1
1485 ; X86-SSE2-NEXT: psrad $24, %xmm0
1486 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1487 ; X86-SSE2-NEXT: retl
1501 ; SSE2-LABEL: load_sext_4i1_to_4i32:
1502 ; SSE2: # %bb.0: # %entry
1503 ; SSE2-NEXT: movzbl (%rdi), %eax
1504 ; SSE2-NEXT: movl %eax, %ecx
1505 ; SSE2-NEXT: shrb $3, %cl
1506 ; SSE2-NEXT: movzbl %cl, %ecx
1507 ; SSE2-NEXT: negl %ecx
1508 ; SSE2-NEXT: movd %ecx, %xmm0
1509 ; SSE2-NEXT: movzbl %al, %ecx
1510 ; SSE2-NEXT: shrb $2, %al
1511 ; SSE2-NEXT: movzbl %al, %eax
1512 ; SSE2-NEXT: andl $1, %eax
1513 ; SSE2-NEXT: negl %eax
1514 ; SSE2-NEXT: movd %eax, %xmm1
1515 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1516 ; SSE2-NEXT: movl %ecx, %eax
1517 ; SSE2-NEXT: andl $1, %eax
1518 ; SSE2-NEXT: negl %eax
1519 ; SSE2-NEXT: movd %eax, %xmm0
1520 ; SSE2-NEXT: shrb %cl
1521 ; SSE2-NEXT: movzbl %cl, %eax
1522 ; SSE2-NEXT: andl $1, %eax
1523 ; SSE2-NEXT: negl %eax
1524 ; SSE2-NEXT: movd %eax, %xmm2
1525 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1526 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1527 ; SSE2-NEXT: retq
1650 ; X86-SSE2-LABEL: load_sext_4i1_to_4i32:
1651 ; X86-SSE2: # %bb.0: # %entry
1652 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1653 ; X86-SSE2-NEXT: movzbl (%eax), %eax
1654 ; X86-SSE2-NEXT: movl %eax, %ecx
1655 ; X86-SSE2-NEXT: shrb $3, %cl
1656 ; X86-SSE2-NEXT: movzbl %cl, %ecx
1657 ; X86-SSE2-NEXT: negl %ecx
1658 ; X86-SSE2-NEXT: movd %ecx, %xmm0
1659 ; X86-SSE2-NEXT: movl %eax, %ecx
1660 ; X86-SSE2-NEXT: shrb $2, %cl
1661 ; X86-SSE2-NEXT: movzbl %cl, %ecx
1662 ; X86-SSE2-NEXT: andl $1, %ecx
1663 ; X86-SSE2-NEXT: negl %ecx
1664 ; X86-SSE2-NEXT: movd %ecx, %xmm1
1665 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1666 ; X86-SSE2-NEXT: movzbl %al, %ecx
1667 ; X86-SSE2-NEXT: andl $1, %ecx
1668 ; X86-SSE2-NEXT: negl %ecx
1669 ; X86-SSE2-NEXT: movd %ecx, %xmm0
1670 ; X86-SSE2-NEXT: shrb %al
1671 ; X86-SSE2-NEXT: movzbl %al, %eax
1672 ; X86-SSE2-NEXT: andl $1, %eax
1673 ; X86-SSE2-NEXT: negl %eax
1674 ; X86-SSE2-NEXT: movd %eax, %xmm2
1675 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1676 ; X86-SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1677 ; X86-SSE2-NEXT: retl
1711 ; SSE2-LABEL: load_sext_4i8_to_4i32:
1712 ; SSE2: # %bb.0: # %entry
1713 ; SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
1714 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1715 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1716 ; SSE2-NEXT: psrad $24, %xmm0
1717 ; SSE2-NEXT: retq
1737 ; X86-SSE2-LABEL: load_sext_4i8_to_4i32:
1738 ; X86-SSE2: # %bb.0: # %entry
1739 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1740 ; X86-SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
1741 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1742 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1743 ; X86-SSE2-NEXT: psrad $24, %xmm0
1744 ; X86-SSE2-NEXT: retl
1758 ; SSE2-LABEL: load_sext_4i1_to_4i64:
1759 ; SSE2: # %bb.0: # %entry
1760 ; SSE2-NEXT: movzbl (%rdi), %eax
1761 ; SSE2-NEXT: movl %eax, %ecx
1762 ; SSE2-NEXT: shrb %cl
1763 ; SSE2-NEXT: andb $1, %cl
1764 ; SSE2-NEXT: movzbl %cl, %ecx
1765 ; SSE2-NEXT: movl %eax, %edx
1766 ; SSE2-NEXT: andb $1, %dl
1767 ; SSE2-NEXT: movzbl %dl, %edx
1768 ; SSE2-NEXT: movd %edx, %xmm1
1769 ; SSE2-NEXT: pinsrw $2, %ecx, %xmm1
1770 ; SSE2-NEXT: movl %eax, %ecx
1771 ; SSE2-NEXT: shrb $2, %cl
1772 ; SSE2-NEXT: andb $1, %cl
1773 ; SSE2-NEXT: movzbl %cl, %ecx
1774 ; SSE2-NEXT: pinsrw $4, %ecx, %xmm1
1775 ; SSE2-NEXT: shrb $3, %al
1776 ; SSE2-NEXT: movzbl %al, %eax
1777 ; SSE2-NEXT: pinsrw $6, %eax, %xmm1
1778 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,1,1,3]
1779 ; SSE2-NEXT: psllq $63, %xmm0
1780 ; SSE2-NEXT: psrad $31, %xmm0
1781 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1782 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]
1783 ; SSE2-NEXT: psllq $63, %xmm1
1784 ; SSE2-NEXT: psrad $31, %xmm1
1785 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1786 ; SSE2-NEXT: retq
1921 ; X86-SSE2-LABEL: load_sext_4i1_to_4i64:
1922 ; X86-SSE2: # %bb.0: # %entry
1923 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1924 ; X86-SSE2-NEXT: movzbl (%eax), %eax
1925 ; X86-SSE2-NEXT: movl %eax, %ecx
1926 ; X86-SSE2-NEXT: shrb %cl
1927 ; X86-SSE2-NEXT: andb $1, %cl
1928 ; X86-SSE2-NEXT: movzbl %cl, %ecx
1929 ; X86-SSE2-NEXT: movl %eax, %edx
1930 ; X86-SSE2-NEXT: andb $1, %dl
1931 ; X86-SSE2-NEXT: movzbl %dl, %edx
1932 ; X86-SSE2-NEXT: movd %edx, %xmm1
1933 ; X86-SSE2-NEXT: pinsrw $2, %ecx, %xmm1
1934 ; X86-SSE2-NEXT: movl %eax, %ecx
1935 ; X86-SSE2-NEXT: shrb $2, %cl
1936 ; X86-SSE2-NEXT: andb $1, %cl
1937 ; X86-SSE2-NEXT: movzbl %cl, %ecx
1938 ; X86-SSE2-NEXT: pinsrw $4, %ecx, %xmm1
1939 ; X86-SSE2-NEXT: shrb $3, %al
1940 ; X86-SSE2-NEXT: movzbl %al, %eax
1941 ; X86-SSE2-NEXT: pinsrw $6, %eax, %xmm1
1942 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,1,1,3]
1943 ; X86-SSE2-NEXT: psllq $63, %xmm0
1944 ; X86-SSE2-NEXT: psrad $31, %xmm0
1945 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1946 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]
1947 ; X86-SSE2-NEXT: psllq $63, %xmm1
1948 ; X86-SSE2-NEXT: psrad $31, %xmm1
1949 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1950 ; X86-SSE2-NEXT: retl
1989 ; SSE2-LABEL: load_sext_4i8_to_4i64:
1990 ; SSE2: # %bb.0: # %entry
1991 ; SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
1992 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1993 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1994 ; SSE2-NEXT: psrad $24, %xmm1
1995 ; SSE2-NEXT: pxor %xmm2, %xmm2
1996 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
1997 ; SSE2-NEXT: movdqa %xmm1, %xmm0
1998 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1999 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2000 ; SSE2-NEXT: retq
2038 ; X86-SSE2-LABEL: load_sext_4i8_to_4i64:
2039 ; X86-SSE2: # %bb.0: # %entry
2040 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2041 ; X86-SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2042 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2043 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[…
2044 ; X86-SSE2-NEXT: psrad $24, %xmm1
2045 ; X86-SSE2-NEXT: pxor %xmm2, %xmm2
2046 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm2
2047 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm0
2048 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2049 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2050 ; X86-SSE2-NEXT: retl
2065 ; SSE2-LABEL: load_sext_4i8_to_4i64_extract:
2066 ; SSE2: # %bb.0:
2067 ; SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2068 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2069 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
2070 ; SSE2-NEXT: psrad $24, %xmm0
2071 ; SSE2-NEXT: pxor %xmm1, %xmm1
2072 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
2073 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
2074 ; SSE2-NEXT: retq
2111 ; X86-SSE2-LABEL: load_sext_4i8_to_4i64_extract:
2112 ; X86-SSE2: # %bb.0:
2113 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2114 ; X86-SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2115 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2116 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
2117 ; X86-SSE2-NEXT: psrad $24, %xmm0
2118 ; X86-SSE2-NEXT: pxor %xmm1, %xmm1
2119 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm1
2120 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
2121 ; X86-SSE2-NEXT: retl
2202 ; SSE2-LABEL: load_sext_8i8_to_8i16:
2203 ; SSE2: # %bb.0: # %entry
2204 ; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2205 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2206 ; SSE2-NEXT: psraw $8, %xmm0
2207 ; SSE2-NEXT: retq
2226 ; X86-SSE2-LABEL: load_sext_8i8_to_8i16:
2227 ; X86-SSE2: # %bb.0: # %entry
2228 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2229 ; X86-SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2230 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2231 ; X86-SSE2-NEXT: psraw $8, %xmm0
2232 ; X86-SSE2-NEXT: retl
2246 ; SSE2-LABEL: load_sext_8i8_to_8i64:
2247 ; SSE2: # %bb.0: # %entry
2248 ; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2249 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
2250 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
2251 ; SSE2-NEXT: psrad $24, %xmm1
2252 ; SSE2-NEXT: pxor %xmm4, %xmm4
2253 ; SSE2-NEXT: pxor %xmm3, %xmm3
2254 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm3
2255 ; SSE2-NEXT: movdqa %xmm1, %xmm0
2256 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
2257 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm3[2],xmm1[3],xmm3[3]
2258 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],x…
2259 ; SSE2-NEXT: psrad $24, %xmm3
2260 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm4
2261 ; SSE2-NEXT: movdqa %xmm3, %xmm2
2262 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
2263 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm4[2],xmm3[3],xmm4[3]
2264 ; SSE2-NEXT: retq
2315 ; X86-SSE2-LABEL: load_sext_8i8_to_8i64:
2316 ; X86-SSE2: # %bb.0: # %entry
2317 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2318 ; X86-SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2319 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[…
2320 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[…
2321 ; X86-SSE2-NEXT: psrad $24, %xmm1
2322 ; X86-SSE2-NEXT: pxor %xmm4, %xmm4
2323 ; X86-SSE2-NEXT: pxor %xmm3, %xmm3
2324 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm3
2325 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm0
2326 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
2327 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm3[2],xmm1[3],xmm3[3]
2328 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[…
2329 ; X86-SSE2-NEXT: psrad $24, %xmm3
2330 ; X86-SSE2-NEXT: pcmpgtd %xmm3, %xmm4
2331 ; X86-SSE2-NEXT: movdqa %xmm3, %xmm2
2332 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
2333 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm3 = xmm3[2],xmm4[2],xmm3[3],xmm4[3]
2334 ; X86-SSE2-NEXT: retl
2423 ; SSE2-LABEL: load_sext_8i8_to_8i32:
2424 ; SSE2: # %bb.0: # %entry
2425 ; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2426 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
2427 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
2428 ; SSE2-NEXT: psrad $24, %xmm0
2429 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
2430 ; SSE2-NEXT: psrad $24, %xmm1
2431 ; SSE2-NEXT: retq
2466 ; X86-SSE2-LABEL: load_sext_8i8_to_8i32:
2467 ; X86-SSE2: # %bb.0: # %entry
2468 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2469 ; X86-SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2470 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[…
2471 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[…
2472 ; X86-SSE2-NEXT: psrad $24, %xmm0
2473 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
2474 ; X86-SSE2-NEXT: psrad $24, %xmm1
2475 ; X86-SSE2-NEXT: retl
2490 ; SSE2-LABEL: load_sext_16i1_to_16i8:
2491 ; SSE2: # %bb.0: # %entry
2492 ; SSE2-NEXT: movzwl (%rdi), %eax
2493 ; SSE2-NEXT: movd %eax, %xmm0
2494 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2495 ; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,1,1,4,5,6,7]
2496 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2497 ; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]
2498 ; SSE2-NEXT: pand %xmm1, %xmm0
2499 ; SSE2-NEXT: pcmpeqb %xmm1, %xmm0
2500 ; SSE2-NEXT: retq
2559 ; X86-SSE2-LABEL: load_sext_16i1_to_16i8:
2560 ; X86-SSE2: # %bb.0: # %entry
2561 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2562 ; X86-SSE2-NEXT: movzwl (%eax), %eax
2563 ; X86-SSE2-NEXT: movd %eax, %xmm0
2564 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2565 ; X86-SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,1,1,4,5,6,7]
2566 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
2567 ; X86-SSE2-NEXT: movdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]
2568 ; X86-SSE2-NEXT: pand %xmm1, %xmm0
2569 ; X86-SSE2-NEXT: pcmpeqb %xmm1, %xmm0
2570 ; X86-SSE2-NEXT: retl
2744 ; SSE2-LABEL: load_sext_16i8_to_16i16:
2745 ; SSE2: # %bb.0: # %entry
2746 ; SSE2-NEXT: movdqa (%rdi), %xmm1
2747 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
2748 ; SSE2-NEXT: psraw $8, %xmm0
2749 ; SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2750 ; SSE2-NEXT: psraw $8, %xmm1
2751 ; SSE2-NEXT: retq
2785 ; X86-SSE2-LABEL: load_sext_16i8_to_16i16:
2786 ; X86-SSE2: # %bb.0: # %entry
2787 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2788 ; X86-SSE2-NEXT: movdqa (%eax), %xmm1
2789 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[…
2790 ; X86-SSE2-NEXT: psraw $8, %xmm0
2791 ; X86-SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2792 ; X86-SSE2-NEXT: psraw $8, %xmm1
2793 ; X86-SSE2-NEXT: retl
2808 ; SSE2-LABEL: load_sext_2i16_to_2i64:
2809 ; SSE2: # %bb.0: # %entry
2810 ; SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2811 ; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,2,1,4,5,6,7]
2812 ; SSE2-NEXT: pxor %xmm1, %xmm1
2813 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
2814 ; SSE2-NEXT: psrad $16, %xmm0
2815 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
2816 ; SSE2-NEXT: retq
2838 ; X86-SSE2-LABEL: load_sext_2i16_to_2i64:
2839 ; X86-SSE2: # %bb.0: # %entry
2840 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2841 ; X86-SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2842 ; X86-SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,2,1,4,5,6,7]
2843 ; X86-SSE2-NEXT: pxor %xmm1, %xmm1
2844 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm1
2845 ; X86-SSE2-NEXT: psrad $16, %xmm0
2846 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
2847 ; X86-SSE2-NEXT: retl
2861 ; SSE2-LABEL: load_sext_4i16_to_4i32:
2862 ; SSE2: # %bb.0: # %entry
2863 ; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2864 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
2865 ; SSE2-NEXT: psrad $16, %xmm0
2866 ; SSE2-NEXT: retq
2885 ; X86-SSE2-LABEL: load_sext_4i16_to_4i32:
2886 ; X86-SSE2: # %bb.0: # %entry
2887 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2888 ; X86-SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2889 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
2890 ; X86-SSE2-NEXT: psrad $16, %xmm0
2891 ; X86-SSE2-NEXT: retl
2905 ; SSE2-LABEL: load_sext_4i16_to_4i64:
2906 ; SSE2: # %bb.0: # %entry
2907 ; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2908 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
2909 ; SSE2-NEXT: psrad $16, %xmm1
2910 ; SSE2-NEXT: pxor %xmm2, %xmm2
2911 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
2912 ; SSE2-NEXT: movdqa %xmm1, %xmm0
2913 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2914 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2915 ; SSE2-NEXT: retq
2952 ; X86-SSE2-LABEL: load_sext_4i16_to_4i64:
2953 ; X86-SSE2: # %bb.0: # %entry
2954 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
2955 ; X86-SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2956 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[…
2957 ; X86-SSE2-NEXT: psrad $16, %xmm1
2958 ; X86-SSE2-NEXT: pxor %xmm2, %xmm2
2959 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm2
2960 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm0
2961 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2962 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2963 ; X86-SSE2-NEXT: retl
2978 ; SSE2-LABEL: load_sext_8i16_to_8i32:
2979 ; SSE2: # %bb.0: # %entry
2980 ; SSE2-NEXT: movdqa (%rdi), %xmm1
2981 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
2982 ; SSE2-NEXT: psrad $16, %xmm0
2983 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
2984 ; SSE2-NEXT: psrad $16, %xmm1
2985 ; SSE2-NEXT: retq
3019 ; X86-SSE2-LABEL: load_sext_8i16_to_8i32:
3020 ; X86-SSE2: # %bb.0: # %entry
3021 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
3022 ; X86-SSE2-NEXT: movdqa (%eax), %xmm1
3023 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[…
3024 ; X86-SSE2-NEXT: psrad $16, %xmm0
3025 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
3026 ; X86-SSE2-NEXT: psrad $16, %xmm1
3027 ; X86-SSE2-NEXT: retl
3042 ; SSE2-LABEL: load_sext_2i32_to_2i64:
3043 ; SSE2: # %bb.0: # %entry
3044 ; SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
3045 ; SSE2-NEXT: pxor %xmm1, %xmm1
3046 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
3047 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3048 ; SSE2-NEXT: retq
3068 ; X86-SSE2-LABEL: load_sext_2i32_to_2i64:
3069 ; X86-SSE2: # %bb.0: # %entry
3070 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
3071 ; X86-SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
3072 ; X86-SSE2-NEXT: pxor %xmm1, %xmm1
3073 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm1
3074 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3075 ; X86-SSE2-NEXT: retl
3089 ; SSE2-LABEL: load_sext_4i32_to_4i64:
3090 ; SSE2: # %bb.0: # %entry
3091 ; SSE2-NEXT: movdqa (%rdi), %xmm0
3092 ; SSE2-NEXT: pxor %xmm2, %xmm2
3093 ; SSE2-NEXT: pxor %xmm3, %xmm3
3094 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm3
3095 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
3096 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
3097 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
3098 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
3099 ; SSE2-NEXT: retq
3136 ; X86-SSE2-LABEL: load_sext_4i32_to_4i64:
3137 ; X86-SSE2: # %bb.0: # %entry
3138 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
3139 ; X86-SSE2-NEXT: movdqa (%eax), %xmm0
3140 ; X86-SSE2-NEXT: pxor %xmm2, %xmm2
3141 ; X86-SSE2-NEXT: pxor %xmm3, %xmm3
3142 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm3
3143 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
3144 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
3145 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm2
3146 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
3147 ; X86-SSE2-NEXT: retl
3162 ; SSE2-LABEL: sext_2i8_to_i32:
3163 ; SSE2: # %bb.0: # %entry
3164 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3165 ; SSE2-NEXT: psraw $8, %xmm0
3166 ; SSE2-NEXT: movd %xmm0, %eax
3167 ; SSE2-NEXT: retq
3188 ; X86-SSE2-LABEL: sext_2i8_to_i32:
3189 ; X86-SSE2: # %bb.0: # %entry
3190 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3191 ; X86-SSE2-NEXT: psraw $8, %xmm0
3192 ; X86-SSE2-NEXT: movd %xmm0, %eax
3193 ; X86-SSE2-NEXT: retl
3208 ; SSE2-LABEL: sext_4i1_to_4i64:
3209 ; SSE2: # %bb.0:
3210 ; SSE2-NEXT: pslld $31, %xmm0
3211 ; SSE2-NEXT: psrad $31, %xmm0
3212 ; SSE2-NEXT: pxor %xmm2, %xmm2
3213 ; SSE2-NEXT: pxor %xmm3, %xmm3
3214 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm3
3215 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
3216 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
3217 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
3218 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
3219 ; SSE2-NEXT: retq
3268 ; X86-SSE2-LABEL: sext_4i1_to_4i64:
3269 ; X86-SSE2: # %bb.0:
3270 ; X86-SSE2-NEXT: pslld $31, %xmm0
3271 ; X86-SSE2-NEXT: psrad $31, %xmm0
3272 ; X86-SSE2-NEXT: pxor %xmm2, %xmm2
3273 ; X86-SSE2-NEXT: pxor %xmm3, %xmm3
3274 ; X86-SSE2-NEXT: pcmpgtd %xmm0, %xmm3
3275 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
3276 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
3277 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm2
3278 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
3279 ; X86-SSE2-NEXT: retl
3295 ; SSE2-LABEL: sext_4i8_to_4i64:
3296 ; SSE2: # %bb.0:
3297 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3298 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
3299 ; SSE2-NEXT: psrad $24, %xmm1
3300 ; SSE2-NEXT: pxor %xmm2, %xmm2
3301 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
3302 ; SSE2-NEXT: movdqa %xmm1, %xmm0
3303 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
3304 ; SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
3305 ; SSE2-NEXT: retq
3345 ; X86-SSE2-LABEL: sext_4i8_to_4i64:
3346 ; X86-SSE2: # %bb.0:
3347 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3348 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[…
3349 ; X86-SSE2-NEXT: psrad $24, %xmm1
3350 ; X86-SSE2-NEXT: pxor %xmm2, %xmm2
3351 ; X86-SSE2-NEXT: pcmpgtd %xmm1, %xmm2
3352 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm0
3353 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
3354 ; X86-SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
3355 ; X86-SSE2-NEXT: retl
3446 ; SSE2-LABEL: sext_2i8_to_2i32:
3447 ; SSE2: # %bb.0:
3448 ; SSE2-NEXT: movzwl (%rdi), %eax
3449 ; SSE2-NEXT: movd %eax, %xmm0
3450 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3451 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
3452 ; SSE2-NEXT: psrad $24, %xmm0
3453 ; SSE2-NEXT: paddd %xmm0, %xmm0
3454 ; SSE2-NEXT: retq
3482 ; X86-SSE2-LABEL: sext_2i8_to_2i32:
3483 ; X86-SSE2: # %bb.0:
3484 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
3485 ; X86-SSE2-NEXT: movzwl (%eax), %eax
3486 ; X86-SSE2-NEXT: movd %eax, %xmm0
3487 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3488 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
3489 ; X86-SSE2-NEXT: psrad $24, %xmm0
3490 ; X86-SSE2-NEXT: paddd %xmm0, %xmm0
3491 ; X86-SSE2-NEXT: retl
3508 ; SSE2-LABEL: sext_4i17_to_4i32:
3509 ; SSE2: # %bb.0:
3510 ; SSE2-NEXT: movq (%rdi), %rax
3511 ; SSE2-NEXT: movl %eax, %ecx
3512 ; SSE2-NEXT: shll $15, %ecx
3513 ; SSE2-NEXT: sarl $15, %ecx
3514 ; SSE2-NEXT: movd %ecx, %xmm0
3515 ; SSE2-NEXT: movq %rax, %rcx
3516 ; SSE2-NEXT: shrq $17, %rcx
3517 ; SSE2-NEXT: shll $15, %ecx
3518 ; SSE2-NEXT: sarl $15, %ecx
3519 ; SSE2-NEXT: movd %ecx, %xmm1
3520 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3521 ; SSE2-NEXT: movl 8(%rdi), %ecx
3522 ; SSE2-NEXT: shll $13, %ecx
3523 ; SSE2-NEXT: movq %rax, %rdx
3524 ; SSE2-NEXT: shrq $51, %rdx
3525 ; SSE2-NEXT: orl %ecx, %edx
3526 ; SSE2-NEXT: shll $15, %edx
3527 ; SSE2-NEXT: sarl $15, %edx
3528 ; SSE2-NEXT: movd %edx, %xmm1
3529 ; SSE2-NEXT: shrq $34, %rax
3530 ; SSE2-NEXT: shll $15, %eax
3531 ; SSE2-NEXT: sarl $15, %eax
3532 ; SSE2-NEXT: movd %eax, %xmm2
3533 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
3534 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
3535 ; SSE2-NEXT: retq
3618 ; X86-SSE2-LABEL: sext_4i17_to_4i32:
3619 ; X86-SSE2: # %bb.0:
3620 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
3621 ; X86-SSE2-NEXT: movl (%edx), %ecx
3622 ; X86-SSE2-NEXT: movl 4(%edx), %eax
3623 ; X86-SSE2-NEXT: movl 8(%edx), %edx
3624 ; X86-SSE2-NEXT: shldl $13, %eax, %edx
3625 ; X86-SSE2-NEXT: shll $15, %edx
3626 ; X86-SSE2-NEXT: sarl $15, %edx
3627 ; X86-SSE2-NEXT: movd %edx, %xmm0
3628 ; X86-SSE2-NEXT: movl %eax, %edx
3629 ; X86-SSE2-NEXT: shll $13, %edx
3630 ; X86-SSE2-NEXT: sarl $15, %edx
3631 ; X86-SSE2-NEXT: movd %edx, %xmm1
3632 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
3633 ; X86-SSE2-NEXT: shldl $15, %ecx, %eax
3634 ; X86-SSE2-NEXT: shll $15, %ecx
3635 ; X86-SSE2-NEXT: sarl $15, %ecx
3636 ; X86-SSE2-NEXT: movd %ecx, %xmm0
3637 ; X86-SSE2-NEXT: shll $15, %eax
3638 ; X86-SSE2-NEXT: sarl $15, %eax
3639 ; X86-SSE2-NEXT: movd %eax, %xmm2
3640 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
3641 ; X86-SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3642 ; X86-SSE2-NEXT: retl
3677 ; SSE2-LABEL: sext_8i6_to_8i64:
3678 ; SSE2: # %bb.0: # %entry
3679 ; SSE2-NEXT: movd %edi, %xmm0
3680 ; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
3681 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm0[0,0,0,0]
3682 ; SSE2-NEXT: paddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3
3683 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,0,0]
3684 ; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
3685 ; SSE2-NEXT: psllq $58, %xmm0
3686 ; SSE2-NEXT: movdqa %xmm0, %xmm1
3687 ; SSE2-NEXT: psrad $31, %xmm1
3688 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,3,2,3]
3689 ; SSE2-NEXT: psrad $26, %xmm0
3690 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,3,2,3]
3691 ; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3692 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,1,1]
3693 ; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
3694 ; SSE2-NEXT: psllq $58, %xmm1
3695 ; SSE2-NEXT: movdqa %xmm1, %xmm2
3696 ; SSE2-NEXT: psrad $31, %xmm2
3697 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,3,2,3]
3698 ; SSE2-NEXT: psrad $26, %xmm1
3699 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,3,2,3]
3700 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
3701 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[2,2,2,2]
3702 ; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,5,5,5]
3703 ; SSE2-NEXT: psllq $58, %xmm2
3704 ; SSE2-NEXT: movdqa %xmm2, %xmm4
3705 ; SSE2-NEXT: psrad $31, %xmm4
3706 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,3,2,3]
3707 ; SSE2-NEXT: psrad $26, %xmm2
3708 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,3,2,3]
3709 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
3710 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[3,3,3,3]
3711 ; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,5,5,5]
3712 ; SSE2-NEXT: psllq $58, %xmm3
3713 ; SSE2-NEXT: movdqa %xmm3, %xmm4
3714 ; SSE2-NEXT: psrad $31, %xmm4
3715 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,3,2,3]
3716 ; SSE2-NEXT: psrad $26, %xmm3
3717 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,3,2,3]
3718 ; SSE2-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
3719 ; SSE2-NEXT: retq
3845 ; X86-SSE2-LABEL: sext_8i6_to_8i64:
3846 ; X86-SSE2: # %bb.0: # %entry
3847 ; X86-SSE2-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
3848 ; X86-SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
3849 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm0[0,0,0,0]
3850 ; X86-SSE2-NEXT: paddw {{\.?LCPI[0-9]+_[0-9]+}}, %xmm3
3851 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,0,0,0]
3852 ; X86-SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
3853 ; X86-SSE2-NEXT: psllq $58, %xmm0
3854 ; X86-SSE2-NEXT: movdqa %xmm0, %xmm1
3855 ; X86-SSE2-NEXT: psrad $31, %xmm1
3856 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,3,2,3]
3857 ; X86-SSE2-NEXT: psrad $26, %xmm0
3858 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,3,2,3]
3859 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3860 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,1,1]
3861 ; X86-SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
3862 ; X86-SSE2-NEXT: psllq $58, %xmm1
3863 ; X86-SSE2-NEXT: movdqa %xmm1, %xmm2
3864 ; X86-SSE2-NEXT: psrad $31, %xmm2
3865 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,3,2,3]
3866 ; X86-SSE2-NEXT: psrad $26, %xmm1
3867 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,3,2,3]
3868 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
3869 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[2,2,2,2]
3870 ; X86-SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,5,5,5]
3871 ; X86-SSE2-NEXT: psllq $58, %xmm2
3872 ; X86-SSE2-NEXT: movdqa %xmm2, %xmm4
3873 ; X86-SSE2-NEXT: psrad $31, %xmm4
3874 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,3,2,3]
3875 ; X86-SSE2-NEXT: psrad $26, %xmm2
3876 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,3,2,3]
3877 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1]
3878 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[3,3,3,3]
3879 ; X86-SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,5,5,5]
3880 ; X86-SSE2-NEXT: psllq $58, %xmm3
3881 ; X86-SSE2-NEXT: movdqa %xmm3, %xmm4
3882 ; X86-SSE2-NEXT: psrad $31, %xmm4
3883 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[1,3,2,3]
3884 ; X86-SSE2-NEXT: psrad $26, %xmm3
3885 ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,3,2,3]
3886 ; X86-SSE2-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
3887 ; X86-SSE2-NEXT: retl
3937 ; SSE2-LABEL: zext_negate_sext:
3938 ; SSE2: # %bb.0:
3939 ; SSE2-NEXT: pxor %xmm1, %xmm1
3940 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
3941 ; SSE2-NEXT: psubw %xmm0, %xmm1
3942 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
3943 ; SSE2-NEXT: psrad $16, %xmm0
3944 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
3945 ; SSE2-NEXT: psrad $16, %xmm1
3946 ; SSE2-NEXT: retq
3994 ; X86-SSE2-LABEL: zext_negate_sext:
3995 ; X86-SSE2: # %bb.0:
3996 ; X86-SSE2-NEXT: pxor %xmm1, %xmm1
3997 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[…
3998 ; X86-SSE2-NEXT: psubw %xmm0, %xmm1
3999 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[…
4000 ; X86-SSE2-NEXT: psrad $16, %xmm0
4001 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
4002 ; X86-SSE2-NEXT: psrad $16, %xmm1
4003 ; X86-SSE2-NEXT: retl
4021 ; SSE2-LABEL: zext_decremenet_sext:
4022 ; SSE2: # %bb.0:
4023 ; SSE2-NEXT: pxor %xmm1, %xmm1
4024 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
4025 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm1
4026 ; SSE2-NEXT: paddw %xmm0, %xmm1
4027 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
4028 ; SSE2-NEXT: psrad $16, %xmm0
4029 ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
4030 ; SSE2-NEXT: psrad $16, %xmm1
4031 ; SSE2-NEXT: retq
4080 ; X86-SSE2-LABEL: zext_decremenet_sext:
4081 ; X86-SSE2: # %bb.0:
4082 ; X86-SSE2-NEXT: pxor %xmm1, %xmm1
4083 ; X86-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[…
4084 ; X86-SSE2-NEXT: pcmpeqd %xmm1, %xmm1
4085 ; X86-SSE2-NEXT: paddw %xmm0, %xmm1
4086 ; X86-SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[…
4087 ; X86-SSE2-NEXT: psrad $16, %xmm0
4088 ; X86-SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
4089 ; X86-SSE2-NEXT: psrad $16, %xmm1
4090 ; X86-SSE2-NEXT: retl