Lines Matching full:sse41
3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE41
28 ; SSE41-LABEL: var_shift_v2i64:
29 ; SSE41: # BB#0:
30 ; SSE41-NEXT: movdqa %xmm0, %xmm2
31 ; SSE41-NEXT: psrlq %xmm1, %xmm2
32 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
33 ; SSE41-NEXT: psrlq %xmm1, %xmm0
34 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm0[4,5,6,7]
35 ; SSE41-NEXT: retq
106 ; SSE41-LABEL: var_shift_v4i32:
107 ; SSE41: # BB#0:
108 ; SSE41-NEXT: movdqa %xmm1, %xmm2
109 ; SSE41-NEXT: psrldq {{.*#+}} xmm2 = xmm2[12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
110 ; SSE41-NEXT: movdqa %xmm0, %xmm3
111 ; SSE41-NEXT: psrld %xmm2, %xmm3
112 ; SSE41-NEXT: movdqa %xmm1, %xmm2
113 ; SSE41-NEXT: psrlq $32, %xmm2
114 ; SSE41-NEXT: movdqa %xmm0, %xmm4
115 ; SSE41-NEXT: psrld %xmm2, %xmm4
116 ; SSE41-NEXT: pblendw {{.*#+}} xmm4 = xmm4[0,1,2,3],xmm3[4,5,6,7]
117 ; SSE41-NEXT: pxor %xmm2, %xmm2
118 ; SSE41-NEXT: pmovzxdq {{.*#+}} xmm3 = xmm1[0],zero,xmm1[1],zero
119 ; SSE41-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
120 ; SSE41-NEXT: movdqa %xmm0, %xmm2
121 ; SSE41-NEXT: psrld %xmm1, %xmm2
122 ; SSE41-NEXT: psrld %xmm3, %xmm0
123 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm2[4,5,6,7]
124 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm4[2,3],xmm0[4,5],xmm4[6,7]
125 ; SSE41-NEXT: retq
228 ; SSE41-LABEL: var_shift_v8i16:
229 ; SSE41: # BB#0:
230 ; SSE41-NEXT: movdqa %xmm0, %xmm2
231 ; SSE41-NEXT: movdqa %xmm1, %xmm0
232 ; SSE41-NEXT: psllw $12, %xmm0
233 ; SSE41-NEXT: psllw $4, %xmm1
234 ; SSE41-NEXT: por %xmm0, %xmm1
235 ; SSE41-NEXT: movdqa %xmm1, %xmm3
236 ; SSE41-NEXT: paddw %xmm3, %xmm3
237 ; SSE41-NEXT: movdqa %xmm2, %xmm4
238 ; SSE41-NEXT: psrlw $8, %xmm4
239 ; SSE41-NEXT: movdqa %xmm1, %xmm0
240 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
241 ; SSE41-NEXT: movdqa %xmm2, %xmm1
242 ; SSE41-NEXT: psrlw $4, %xmm1
243 ; SSE41-NEXT: movdqa %xmm3, %xmm0
244 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
245 ; SSE41-NEXT: movdqa %xmm2, %xmm1
246 ; SSE41-NEXT: psrlw $2, %xmm1
247 ; SSE41-NEXT: paddw %xmm3, %xmm3
248 ; SSE41-NEXT: movdqa %xmm3, %xmm0
249 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
250 ; SSE41-NEXT: movdqa %xmm2, %xmm1
251 ; SSE41-NEXT: psrlw $1, %xmm1
252 ; SSE41-NEXT: paddw %xmm3, %xmm3
253 ; SSE41-NEXT: movdqa %xmm3, %xmm0
254 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
255 ; SSE41-NEXT: movdqa %xmm2, %xmm0
256 ; SSE41-NEXT: retq
372 ; SSE41-LABEL: var_shift_v16i8:
373 ; SSE41: # BB#0:
374 ; SSE41-NEXT: movdqa %xmm0, %xmm2
375 ; SSE41-NEXT: psllw $5, %xmm1
376 ; SSE41-NEXT: movdqa %xmm2, %xmm3
377 ; SSE41-NEXT: psrlw $4, %xmm3
378 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
379 ; SSE41-NEXT: movdqa %xmm1, %xmm0
380 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
381 ; SSE41-NEXT: movdqa %xmm2, %xmm3
382 ; SSE41-NEXT: psrlw $2, %xmm3
383 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
384 ; SSE41-NEXT: paddb %xmm1, %xmm1
385 ; SSE41-NEXT: movdqa %xmm1, %xmm0
386 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
387 ; SSE41-NEXT: movdqa %xmm2, %xmm3
388 ; SSE41-NEXT: psrlw $1, %xmm3
389 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
390 ; SSE41-NEXT: paddb %xmm1, %xmm1
391 ; SSE41-NEXT: movdqa %xmm1, %xmm0
392 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
393 ; SSE41-NEXT: movdqa %xmm2, %xmm0
394 ; SSE41-NEXT: retq
512 ; SSE41-LABEL: splatvar_shift_v4i32:
513 ; SSE41: # BB#0:
514 ; SSE41-NEXT: pxor %xmm2, %xmm2
515 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm1[0,1],xmm2[2,3,4,5,6,7]
516 ; SSE41-NEXT: psrld %xmm2, %xmm0
517 ; SSE41-NEXT: retq
560 ; SSE41-LABEL: splatvar_shift_v8i16:
561 ; SSE41: # BB#0:
562 ; SSE41-NEXT: pxor %xmm2, %xmm2
563 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm1[0],xmm2[1,2,3,4,5,6,7]
564 ; SSE41-NEXT: psrlw %xmm2, %xmm0
565 ; SSE41-NEXT: retq
635 ; SSE41-LABEL: splatvar_shift_v16i8:
636 ; SSE41: # BB#0:
637 ; SSE41-NEXT: movdqa %xmm0, %xmm2
638 ; SSE41-NEXT: pxor %xmm0, %xmm0
639 ; SSE41-NEXT: pshufb %xmm0, %xmm1
640 ; SSE41-NEXT: psllw $5, %xmm1
641 ; SSE41-NEXT: movdqa %xmm1, %xmm3
642 ; SSE41-NEXT: paddb %xmm3, %xmm3
643 ; SSE41-NEXT: movdqa %xmm2, %xmm4
644 ; SSE41-NEXT: psrlw $4, %xmm4
645 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm4
646 ; SSE41-NEXT: movdqa %xmm1, %xmm0
647 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
648 ; SSE41-NEXT: movdqa %xmm2, %xmm1
649 ; SSE41-NEXT: psrlw $2, %xmm1
650 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
651 ; SSE41-NEXT: movdqa %xmm3, %xmm0
652 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
653 ; SSE41-NEXT: movdqa %xmm2, %xmm1
654 ; SSE41-NEXT: psrlw $1, %xmm1
655 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
656 ; SSE41-NEXT: paddb %xmm3, %xmm3
657 ; SSE41-NEXT: movdqa %xmm3, %xmm0
658 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
659 ; SSE41-NEXT: movdqa %xmm2, %xmm0
660 ; SSE41-NEXT: retq
782 ; SSE41-LABEL: constant_shift_v2i64:
783 ; SSE41: # BB#0:
784 ; SSE41-NEXT: movdqa %xmm0, %xmm1
785 ; SSE41-NEXT: psrlq $7, %xmm1
786 ; SSE41-NEXT: psrlq $1, %xmm0
787 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
788 ; SSE41-NEXT: retq
848 ; SSE41-LABEL: constant_shift_v4i32:
849 ; SSE41: # BB#0:
850 ; SSE41-NEXT: movdqa %xmm0, %xmm1
851 ; SSE41-NEXT: psrld $7, %xmm1
852 ; SSE41-NEXT: movdqa %xmm0, %xmm2
853 ; SSE41-NEXT: psrld $5, %xmm2
854 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1,2,3],xmm1[4,5,6,7]
855 ; SSE41-NEXT: movdqa %xmm0, %xmm1
856 ; SSE41-NEXT: psrld $6, %xmm1
857 ; SSE41-NEXT: psrld $4, %xmm0
858 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
859 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,3],xmm0[4,5],xmm2[6,7]
860 ; SSE41-NEXT: retq
930 ; SSE41-LABEL: constant_shift_v8i16:
931 ; SSE41: # BB#0:
932 ; SSE41-NEXT: movdqa %xmm0, %xmm1
933 ; SSE41-NEXT: psrlw $4, %xmm1
934 ; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4,5,6,7]
935 ; SSE41-NEXT: movdqa %xmm1, %xmm2
936 ; SSE41-NEXT: psrlw $2, %xmm2
937 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm1[0,1],xmm2[2,3],xmm1[4,5],xmm2[6,7]
938 ; SSE41-NEXT: movdqa %xmm2, %xmm0
939 ; SSE41-NEXT: psrlw $1, %xmm0
940 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0],xmm0[1],xmm2[2],xmm0[3],xmm2[4],xmm0[5],xmm2[6],xmm0[7]
941 ; SSE41-NEXT: retq
1031 ; SSE41-LABEL: constant_shift_v16i8:
1032 ; SSE41: # BB#0:
1033 ; SSE41-NEXT: movdqa %xmm0, %xmm1
1034 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0]
1035 ; SSE41-NEXT: psllw $5, %xmm0
1036 ; SSE41-NEXT: movdqa %xmm1, %xmm2
1037 ; SSE41-NEXT: psrlw $4, %xmm2
1038 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
1039 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
1040 ; SSE41-NEXT: movdqa %xmm1, %xmm2
1041 ; SSE41-NEXT: psrlw $2, %xmm2
1042 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
1043 ; SSE41-NEXT: paddb %xmm0, %xmm0
1044 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
1045 ; SSE41-NEXT: movdqa %xmm1, %xmm2
1046 ; SSE41-NEXT: psrlw $1, %xmm2
1047 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
1048 ; SSE41-NEXT: paddb %xmm0, %xmm0
1049 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
1050 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1051 ; SSE41-NEXT: retq