Home | History | Annotate | Download | only in X86

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: psllq %xmm1, %xmm2
32 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
33 ; SSE41-NEXT: psllq %xmm1, %xmm0
34 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm0[4,5,6,7]
35 ; SSE41-NEXT: retq
95 ; SSE41-LABEL: var_shift_v4i32:
96 ; SSE41: # BB#0:
97 ; SSE41-NEXT: pslld $23, %xmm1
98 ; SSE41-NEXT: paddd {{.*}}(%rip), %xmm1
99 ; SSE41-NEXT: cvttps2dq %xmm1, %xmm1
100 ; SSE41-NEXT: pmulld %xmm1, %xmm0
101 ; SSE41-NEXT: retq
185 ; SSE41-LABEL: var_shift_v8i16:
186 ; SSE41: # BB#0:
187 ; SSE41-NEXT: movdqa %xmm0, %xmm2
188 ; SSE41-NEXT: movdqa %xmm1, %xmm0
189 ; SSE41-NEXT: psllw $12, %xmm0
190 ; SSE41-NEXT: psllw $4, %xmm1
191 ; SSE41-NEXT: por %xmm0, %xmm1
192 ; SSE41-NEXT: movdqa %xmm1, %xmm3
193 ; SSE41-NEXT: paddw %xmm3, %xmm3
194 ; SSE41-NEXT: movdqa %xmm2, %xmm4
195 ; SSE41-NEXT: psllw $8, %xmm4
196 ; SSE41-NEXT: movdqa %xmm1, %xmm0
197 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
198 ; SSE41-NEXT: movdqa %xmm2, %xmm1
199 ; SSE41-NEXT: psllw $4, %xmm1
200 ; SSE41-NEXT: movdqa %xmm3, %xmm0
201 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
202 ; SSE41-NEXT: movdqa %xmm2, %xmm1
203 ; SSE41-NEXT: psllw $2, %xmm1
204 ; SSE41-NEXT: paddw %xmm3, %xmm3
205 ; SSE41-NEXT: movdqa %xmm3, %xmm0
206 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
207 ; SSE41-NEXT: movdqa %xmm2, %xmm1
208 ; SSE41-NEXT: psllw $1, %xmm1
209 ; SSE41-NEXT: paddw %xmm3, %xmm3
210 ; SSE41-NEXT: movdqa %xmm3, %xmm0
211 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
212 ; SSE41-NEXT: movdqa %xmm2, %xmm0
213 ; SSE41-NEXT: retq
326 ; SSE41-LABEL: var_shift_v16i8:
327 ; SSE41: # BB#0:
328 ; SSE41-NEXT: movdqa %xmm0, %xmm2
329 ; SSE41-NEXT: psllw $5, %xmm1
330 ; SSE41-NEXT: movdqa %xmm2, %xmm3
331 ; SSE41-NEXT: psllw $4, %xmm3
332 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
333 ; SSE41-NEXT: movdqa %xmm1, %xmm0
334 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
335 ; SSE41-NEXT: movdqa %xmm2, %xmm3
336 ; SSE41-NEXT: psllw $2, %xmm3
337 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
338 ; SSE41-NEXT: paddb %xmm1, %xmm1
339 ; SSE41-NEXT: movdqa %xmm1, %xmm0
340 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
341 ; SSE41-NEXT: movdqa %xmm2, %xmm3
342 ; SSE41-NEXT: paddb %xmm3, %xmm3
343 ; SSE41-NEXT: paddb %xmm1, %xmm1
344 ; SSE41-NEXT: movdqa %xmm1, %xmm0
345 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
346 ; SSE41-NEXT: movdqa %xmm2, %xmm0
347 ; SSE41-NEXT: retq
460 ; SSE41-LABEL: splatvar_shift_v4i32:
461 ; SSE41: # BB#0:
462 ; SSE41-NEXT: pxor %xmm2, %xmm2
463 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm1[0,1],xmm2[2,3,4,5,6,7]
464 ; SSE41-NEXT: pslld %xmm2, %xmm0
465 ; SSE41-NEXT: retq
508 ; SSE41-LABEL: splatvar_shift_v8i16:
509 ; SSE41: # BB#0:
510 ; SSE41-NEXT: pxor %xmm2, %xmm2
511 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm1[0],xmm2[1,2,3,4,5,6,7]
512 ; SSE41-NEXT: psllw %xmm2, %xmm0
513 ; SSE41-NEXT: retq
582 ; SSE41-LABEL: splatvar_shift_v16i8:
583 ; SSE41: # BB#0:
584 ; SSE41-NEXT: movdqa %xmm0, %xmm2
585 ; SSE41-NEXT: pxor %xmm0, %xmm0
586 ; SSE41-NEXT: pshufb %xmm0, %xmm1
587 ; SSE41-NEXT: psllw $5, %xmm1
588 ; SSE41-NEXT: movdqa %xmm1, %xmm3
589 ; SSE41-NEXT: paddb %xmm3, %xmm3
590 ; SSE41-NEXT: movdqa %xmm2, %xmm4
591 ; SSE41-NEXT: psllw $4, %xmm4
592 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm4
593 ; SSE41-NEXT: movdqa %xmm1, %xmm0
594 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
595 ; SSE41-NEXT: movdqa %xmm2, %xmm1
596 ; SSE41-NEXT: psllw $2, %xmm1
597 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
598 ; SSE41-NEXT: movdqa %xmm3, %xmm0
599 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
600 ; SSE41-NEXT: movdqa %xmm2, %xmm1
601 ; SSE41-NEXT: paddb %xmm1, %xmm1
602 ; SSE41-NEXT: paddb %xmm3, %xmm3
603 ; SSE41-NEXT: movdqa %xmm3, %xmm0
604 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
605 ; SSE41-NEXT: movdqa %xmm2, %xmm0
606 ; SSE41-NEXT: retq
721 ; SSE41-LABEL: constant_shift_v2i64:
722 ; SSE41: # BB#0:
723 ; SSE41-NEXT: movdqa %xmm0, %xmm1
724 ; SSE41-NEXT: psllq $7, %xmm1
725 ; SSE41-NEXT: psllq $1, %xmm0
726 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
727 ; SSE41-NEXT: retq
781 ; SSE41-LABEL: constant_shift_v4i32:
782 ; SSE41: # BB#0:
783 ; SSE41-NEXT: pmulld {{.*}}(%rip), %xmm0
784 ; SSE41-NEXT: retq
890 ; SSE41-LABEL: constant_shift_v16i8:
891 ; SSE41: # BB#0:
892 ; SSE41-NEXT: movdqa %xmm0, %xmm1
893 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0]
894 ; SSE41-NEXT: psllw $5, %xmm0
895 ; SSE41-NEXT: movdqa %xmm1, %xmm2
896 ; SSE41-NEXT: psllw $4, %xmm2
897 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
898 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
899 ; SSE41-NEXT: movdqa %xmm1, %xmm2
900 ; SSE41-NEXT: psllw $2, %xmm2
901 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
902 ; SSE41-NEXT: paddb %xmm0, %xmm0
903 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
904 ; SSE41-NEXT: movdqa %xmm1, %xmm2
905 ; SSE41-NEXT: paddb %xmm2, %xmm2
906 ; SSE41-NEXT: paddb %xmm0, %xmm0
907 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
908 ; SSE41-NEXT: movdqa %xmm1, %xmm0
909 ; SSE41-NEXT: retq