Lines Matching refs:SSE41

3 …wn-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE41
36 ; SSE41-LABEL: var_rotate_v2i64:
37 ; SSE41: # BB#0:
38 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [64,64]
39 ; SSE41-NEXT: psubq %xmm1, %xmm2
40 ; SSE41-NEXT: movdqa %xmm0, %xmm3
41 ; SSE41-NEXT: psllq %xmm1, %xmm3
42 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
43 ; SSE41-NEXT: movdqa %xmm0, %xmm4
44 ; SSE41-NEXT: psllq %xmm1, %xmm4
45 ; SSE41-NEXT: pblendw {{.*#+}} xmm4 = xmm3[0,1,2,3],xmm4[4,5,6,7]
46 ; SSE41-NEXT: movdqa %xmm0, %xmm1
47 ; SSE41-NEXT: psrlq %xmm2, %xmm1
48 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
49 ; SSE41-NEXT: psrlq %xmm2, %xmm0
50 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5,6,7]
51 ; SSE41-NEXT: por %xmm4, %xmm0
52 ; SSE41-NEXT: retq
148 ; SSE41-LABEL: var_rotate_v4i32:
149 ; SSE41: # BB#0:
150 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [32,32,32,32]
151 ; SSE41-NEXT: psubd %xmm1, %xmm2
152 ; SSE41-NEXT: pslld $23, %xmm1
153 ; SSE41-NEXT: paddd {{.*}}(%rip), %xmm1
154 ; SSE41-NEXT: cvttps2dq %xmm1, %xmm1
155 ; SSE41-NEXT: pmulld %xmm0, %xmm1
156 ; SSE41-NEXT: movdqa %xmm2, %xmm3
157 ; SSE41-NEXT: psrldq {{.*#+}} xmm3 = xmm3[12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,z…
158 ; SSE41-NEXT: movdqa %xmm0, %xmm4
159 ; SSE41-NEXT: psrld %xmm3, %xmm4
160 ; SSE41-NEXT: movdqa %xmm2, %xmm3
161 ; SSE41-NEXT: psrlq $32, %xmm3
162 ; SSE41-NEXT: movdqa %xmm0, %xmm5
163 ; SSE41-NEXT: psrld %xmm3, %xmm5
164 ; SSE41-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm4[4,5,6,7]
165 ; SSE41-NEXT: pxor %xmm3, %xmm3
166 ; SSE41-NEXT: pmovzxdq {{.*#+}} xmm4 = xmm2[0],zero,xmm2[1],zero
167 ; SSE41-NEXT: punpckhdq {{.*#+}} xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]
168 ; SSE41-NEXT: movdqa %xmm0, %xmm3
169 ; SSE41-NEXT: psrld %xmm2, %xmm3
170 ; SSE41-NEXT: psrld %xmm4, %xmm0
171 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4,5,6,7]
172 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm5[2,3],xmm0[4,5],xmm5[6,7]
173 ; SSE41-NEXT: por %xmm1, %xmm0
174 ; SSE41-NEXT: retq
326 ; SSE41-LABEL: var_rotate_v8i16:
327 ; SSE41: # BB#0:
328 ; SSE41-NEXT: movdqa %xmm0, %xmm3
329 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [16,16,16,16,16,16,16,16]
330 ; SSE41-NEXT: psubw %xmm1, %xmm2
331 ; SSE41-NEXT: movdqa %xmm1, %xmm0
332 ; SSE41-NEXT: psllw $12, %xmm0
333 ; SSE41-NEXT: psllw $4, %xmm1
334 ; SSE41-NEXT: por %xmm0, %xmm1
335 ; SSE41-NEXT: movdqa %xmm1, %xmm4
336 ; SSE41-NEXT: paddw %xmm4, %xmm4
337 ; SSE41-NEXT: movdqa %xmm3, %xmm6
338 ; SSE41-NEXT: psllw $8, %xmm6
339 ; SSE41-NEXT: movdqa %xmm3, %xmm5
340 ; SSE41-NEXT: movdqa %xmm1, %xmm0
341 ; SSE41-NEXT: pblendvb %xmm6, %xmm5
342 ; SSE41-NEXT: movdqa %xmm5, %xmm1
343 ; SSE41-NEXT: psllw $4, %xmm1
344 ; SSE41-NEXT: movdqa %xmm4, %xmm0
345 ; SSE41-NEXT: pblendvb %xmm1, %xmm5
346 ; SSE41-NEXT: movdqa %xmm5, %xmm1
347 ; SSE41-NEXT: psllw $2, %xmm1
348 ; SSE41-NEXT: paddw %xmm4, %xmm4
349 ; SSE41-NEXT: movdqa %xmm4, %xmm0
350 ; SSE41-NEXT: pblendvb %xmm1, %xmm5
351 ; SSE41-NEXT: movdqa %xmm5, %xmm1
352 ; SSE41-NEXT: psllw $1, %xmm1
353 ; SSE41-NEXT: paddw %xmm4, %xmm4
354 ; SSE41-NEXT: movdqa %xmm4, %xmm0
355 ; SSE41-NEXT: pblendvb %xmm1, %xmm5
356 ; SSE41-NEXT: movdqa %xmm2, %xmm0
357 ; SSE41-NEXT: psllw $12, %xmm0
358 ; SSE41-NEXT: psllw $4, %xmm2
359 ; SSE41-NEXT: por %xmm0, %xmm2
360 ; SSE41-NEXT: movdqa %xmm2, %xmm1
361 ; SSE41-NEXT: paddw %xmm1, %xmm1
362 ; SSE41-NEXT: movdqa %xmm3, %xmm4
363 ; SSE41-NEXT: psrlw $8, %xmm4
364 ; SSE41-NEXT: movdqa %xmm2, %xmm0
365 ; SSE41-NEXT: pblendvb %xmm4, %xmm3
366 ; SSE41-NEXT: movdqa %xmm3, %xmm2
367 ; SSE41-NEXT: psrlw $4, %xmm2
368 ; SSE41-NEXT: movdqa %xmm1, %xmm0
369 ; SSE41-NEXT: pblendvb %xmm2, %xmm3
370 ; SSE41-NEXT: movdqa %xmm3, %xmm2
371 ; SSE41-NEXT: psrlw $2, %xmm2
372 ; SSE41-NEXT: paddw %xmm1, %xmm1
373 ; SSE41-NEXT: movdqa %xmm1, %xmm0
374 ; SSE41-NEXT: pblendvb %xmm2, %xmm3
375 ; SSE41-NEXT: movdqa %xmm3, %xmm2
376 ; SSE41-NEXT: psrlw $1, %xmm2
377 ; SSE41-NEXT: paddw %xmm1, %xmm1
378 ; SSE41-NEXT: movdqa %xmm1, %xmm0
379 ; SSE41-NEXT: pblendvb %xmm2, %xmm3
380 ; SSE41-NEXT: por %xmm5, %xmm3
381 ; SSE41-NEXT: movdqa %xmm3, %xmm0
382 ; SSE41-NEXT: retq
578 ; SSE41-LABEL: var_rotate_v16i8:
579 ; SSE41: # BB#0:
580 ; SSE41-NEXT: movdqa %xmm1, %xmm3
581 ; SSE41-NEXT: movdqa %xmm0, %xmm1
582 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]
583 ; SSE41-NEXT: psubb %xmm3, %xmm2
584 ; SSE41-NEXT: psllw $5, %xmm3
585 ; SSE41-NEXT: movdqa %xmm1, %xmm5
586 ; SSE41-NEXT: psllw $4, %xmm5
587 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm5
588 ; SSE41-NEXT: movdqa %xmm1, %xmm4
589 ; SSE41-NEXT: movdqa %xmm3, %xmm0
590 ; SSE41-NEXT: pblendvb %xmm5, %xmm4
591 ; SSE41-NEXT: movdqa %xmm4, %xmm5
592 ; SSE41-NEXT: psllw $2, %xmm5
593 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm5
594 ; SSE41-NEXT: paddb %xmm3, %xmm3
595 ; SSE41-NEXT: movdqa %xmm3, %xmm0
596 ; SSE41-NEXT: pblendvb %xmm5, %xmm4
597 ; SSE41-NEXT: movdqa %xmm4, %xmm5
598 ; SSE41-NEXT: paddb %xmm5, %xmm5
599 ; SSE41-NEXT: paddb %xmm3, %xmm3
600 ; SSE41-NEXT: movdqa %xmm3, %xmm0
601 ; SSE41-NEXT: pblendvb %xmm5, %xmm4
602 ; SSE41-NEXT: psllw $5, %xmm2
603 ; SSE41-NEXT: movdqa %xmm2, %xmm3
604 ; SSE41-NEXT: paddb %xmm3, %xmm3
605 ; SSE41-NEXT: movdqa %xmm1, %xmm5
606 ; SSE41-NEXT: psrlw $4, %xmm5
607 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm5
608 ; SSE41-NEXT: movdqa %xmm2, %xmm0
609 ; SSE41-NEXT: pblendvb %xmm5, %xmm1
610 ; SSE41-NEXT: movdqa %xmm1, %xmm2
611 ; SSE41-NEXT: psrlw $2, %xmm2
612 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
613 ; SSE41-NEXT: movdqa %xmm3, %xmm0
614 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
615 ; SSE41-NEXT: movdqa %xmm1, %xmm2
616 ; SSE41-NEXT: psrlw $1, %xmm2
617 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
618 ; SSE41-NEXT: paddb %xmm3, %xmm3
619 ; SSE41-NEXT: movdqa %xmm3, %xmm0
620 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
621 ; SSE41-NEXT: por %xmm4, %xmm1
622 ; SSE41-NEXT: movdqa %xmm1, %xmm0
623 ; SSE41-NEXT: retq
746 ; SSE41-LABEL: constant_rotate_v2i64:
747 ; SSE41: # BB#0:
748 ; SSE41-NEXT: movdqa %xmm0, %xmm1
749 ; SSE41-NEXT: psllq $14, %xmm1
750 ; SSE41-NEXT: movdqa %xmm0, %xmm2
751 ; SSE41-NEXT: psllq $4, %xmm2
752 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1,2,3],xmm1[4,5,6,7]
753 ; SSE41-NEXT: movdqa %xmm0, %xmm1
754 ; SSE41-NEXT: psrlq $50, %xmm1
755 ; SSE41-NEXT: psrlq $60, %xmm0
756 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
757 ; SSE41-NEXT: por %xmm2, %xmm0
758 ; SSE41-NEXT: retq
841 ; SSE41-LABEL: constant_rotate_v4i32:
842 ; SSE41: # BB#0:
843 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [16,32,64,128]
844 ; SSE41-NEXT: pmulld %xmm0, %xmm1
845 ; SSE41-NEXT: movdqa %xmm0, %xmm2
846 ; SSE41-NEXT: psrld $25, %xmm2
847 ; SSE41-NEXT: movdqa %xmm0, %xmm3
848 ; SSE41-NEXT: psrld $27, %xmm3
849 ; SSE41-NEXT: pblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm2[4,5,6,7]
850 ; SSE41-NEXT: movdqa %xmm0, %xmm2
851 ; SSE41-NEXT: psrld $26, %xmm2
852 ; SSE41-NEXT: psrld $28, %xmm0
853 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm2[4,5,6,7]
854 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm3[2,3],xmm0[4,5],xmm3[6,7]
855 ; SSE41-NEXT: por %xmm1, %xmm0
856 ; SSE41-NEXT: retq
956 ; SSE41-LABEL: constant_rotate_v8i16:
957 ; SSE41: # BB#0:
958 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128]
959 ; SSE41-NEXT: pmullw %xmm0, %xmm1
960 ; SSE41-NEXT: movdqa %xmm0, %xmm2
961 ; SSE41-NEXT: psrlw $8, %xmm2
962 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm0[0],xmm2[1,2,3,4,5,6,7]
963 ; SSE41-NEXT: movdqa %xmm2, %xmm0
964 ; SSE41-NEXT: psrlw $4, %xmm0
965 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3,4],xmm2[5,6,7]
966 ; SSE41-NEXT: movdqa %xmm0, %xmm2
967 ; SSE41-NEXT: psrlw $2, %xmm2
968 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm0[0],xmm2[1,2],xmm0[3,4],xmm2[5,6],xmm0[7]
969 ; SSE41-NEXT: movdqa %xmm2, %xmm0
970 ; SSE41-NEXT: psrlw $1, %xmm0
971 ; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0],xmm0[1],xmm2[2],xmm0[3],xmm2[4],xmm0[5],xmm2[6],xm…
972 ; SSE41-NEXT: por %xmm1, %xmm0
973 ; SSE41-NEXT: retq
1107 ; SSE41-LABEL: constant_rotate_v16i8:
1108 ; SSE41: # BB#0:
1109 ; SSE41-NEXT: movdqa %xmm0, %xmm1
1110 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [0,1,2,3,4,5,6,7,8,7,6,5,4,3,2,1]
1111 ; SSE41-NEXT: psllw $5, %xmm0
1112 ; SSE41-NEXT: movdqa %xmm1, %xmm3
1113 ; SSE41-NEXT: psllw $4, %xmm3
1114 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
1115 ; SSE41-NEXT: movdqa %xmm1, %xmm2
1116 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
1117 ; SSE41-NEXT: movdqa %xmm2, %xmm3
1118 ; SSE41-NEXT: psllw $2, %xmm3
1119 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
1120 ; SSE41-NEXT: paddb %xmm0, %xmm0
1121 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
1122 ; SSE41-NEXT: movdqa %xmm2, %xmm3
1123 ; SSE41-NEXT: paddb %xmm3, %xmm3
1124 ; SSE41-NEXT: paddb %xmm0, %xmm0
1125 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
1126 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [8,7,6,5,4,3,2,1,0,1,2,3,4,5,6,7]
1127 ; SSE41-NEXT: psllw $5, %xmm0
1128 ; SSE41-NEXT: movdqa %xmm1, %xmm3
1129 ; SSE41-NEXT: psrlw $4, %xmm3
1130 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
1131 ; SSE41-NEXT: pblendvb %xmm3, %xmm1
1132 ; SSE41-NEXT: movdqa %xmm1, %xmm3
1133 ; SSE41-NEXT: psrlw $2, %xmm3
1134 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
1135 ; SSE41-NEXT: paddb %xmm0, %xmm0
1136 ; SSE41-NEXT: pblendvb %xmm3, %xmm1
1137 ; SSE41-NEXT: movdqa %xmm1, %xmm3
1138 ; SSE41-NEXT: psrlw $1, %xmm3
1139 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
1140 ; SSE41-NEXT: paddb %xmm0, %xmm0
1141 ; SSE41-NEXT: pblendvb %xmm3, %xmm1
1142 ; SSE41-NEXT: por %xmm2, %xmm1
1143 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1144 ; SSE41-NEXT: retq