• Home
  • Raw
  • Download

Lines Matching refs:SSE42

3 …< %s -mtriple=x86_64-pc-linux -mattr=+sse4.2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE42
18 ; SSE42-LABEL: v3i64:
19 ; SSE42: # %bb.0:
20 ; SSE42-NEXT: pextrq $1, %xmm0, 16(%rdi)
21 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
22 ; SSE42-NEXT: movdqa %xmm0, (%rdi)
23 ; SSE42-NEXT: retq
77 ; SSE42-LABEL: v3i32:
78 ; SSE42: # %bb.0:
79 ; SSE42-NEXT: extractps $1, %xmm0, 8(%rdi)
80 ; SSE42-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
81 ; SSE42-NEXT: movlps %xmm0, (%rdi)
82 ; SSE42-NEXT: retq
112 ; SSE42-LABEL: v5i16:
113 ; SSE42: # %bb.0:
114 ; SSE42-NEXT: psrlq $16, %xmm1
115 ; SSE42-NEXT: pextrw $3, %xmm0, 8(%rdi)
116 ; SSE42-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
117 ; SSE42-NEXT: movq %xmm0, (%rdi)
118 ; SSE42-NEXT: retq
150 ; SSE42-LABEL: v5i32:
151 ; SSE42: # %bb.0:
152 ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,2,2]
153 ; SSE42-NEXT: pmovzxdq {{.*#+}} xmm2 = xmm0[0],zero,xmm0[1],zero
154 ; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1],xmm1[2,3],xmm2[4,5],xmm1[6,7]
155 ; SSE42-NEXT: pextrd $3, %xmm0, 16(%rdi)
156 ; SSE42-NEXT: movdqa %xmm2, (%rdi)
157 ; SSE42-NEXT: retq
199 ; SSE42-LABEL: v5f32:
200 ; SSE42: # %bb.0:
201 ; SSE42-NEXT: extractps $3, %xmm0, 16(%rdi)
202 ; SSE42-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[1,2]
203 ; SSE42-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,2,1,3]
204 ; SSE42-NEXT: movaps %xmm0, (%rdi)
205 ; SSE42-NEXT: retq
246 ; SSE42-LABEL: v7i8:
247 ; SSE42: # %bb.0:
248 ; SSE42-NEXT: pextrb $0, %xmm1, 6(%rdi)
249 ; SSE42-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],…
250 ; SSE42-NEXT: pshufb {{.*#+}} xmm1 = xmm1[1,4,7,4,3,6,0,u,u,u,u,u,u,u,u,u]
251 ; SSE42-NEXT: pextrw $2, %xmm1, 4(%rdi)
252 ; SSE42-NEXT: movd %xmm1, (%rdi)
253 ; SSE42-NEXT: retq
292 ; SSE42-LABEL: v7i16:
293 ; SSE42: # %bb.0:
294 ; SSE42-NEXT: pextrw $0, %xmm1, 12(%rdi)
295 ; SSE42-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],…
296 ; SSE42-NEXT: pshufb {{.*#+}} xmm1 = xmm1[2,3,8,9,14,15,8,9,6,7,12,13,0,1,14,15]
297 ; SSE42-NEXT: pextrd $2, %xmm1, 8(%rdi)
298 ; SSE42-NEXT: movq %xmm1, (%rdi)
299 ; SSE42-NEXT: retq
337 ; SSE42-LABEL: v7i32:
338 ; SSE42: # %bb.0:
339 ; SSE42-NEXT: movdqa %xmm0, %xmm2
340 ; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1,2,3],xmm1[4,5],xmm2[6,7]
341 ; SSE42-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,3,2]
342 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
343 ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,3,2,3]
344 ; SSE42-NEXT: movd %xmm1, 24(%rdi)
345 ; SSE42-NEXT: movq %xmm0, 16(%rdi)
346 ; SSE42-NEXT: movdqa %xmm2, (%rdi)
347 ; SSE42-NEXT: retq
398 ; SSE42-LABEL: v12i8:
399 ; SSE42: # %bb.0:
400 ; SSE42-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
401 ; SSE42-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]
402 ; SSE42-NEXT: pextrd $2, %xmm0, 8(%rdi)
403 ; SSE42-NEXT: movq %xmm0, (%rdi)
404 ; SSE42-NEXT: retq
448 ; SSE42-LABEL: v12i16:
449 ; SSE42: # %bb.0:
450 ; SSE42-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,1,1]
451 ; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm0[3,1,2,3]
452 ; SSE42-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,3,1,3,4,5,6,7]
453 ; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm2[0],xmm3[1,2],xmm2[3],xmm3[4,5,6,7]
454 ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,0,0,0]
455 ; SSE42-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,u,u,2,3,10,11,u,u,4,5,12,13]
456 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4],xmm1[5],xmm0[6,7]
457 ; SSE42-NEXT: movdqa %xmm0, (%rdi)
458 ; SSE42-NEXT: movq %xmm3, 16(%rdi)
459 ; SSE42-NEXT: retq
532 ; SSE42-LABEL: v12i32:
533 ; SSE42: # %bb.0:
534 ; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm1[0,0,1,1]
535 ; SSE42-NEXT: pshufd {{.*#+}} xmm4 = xmm0[0,1,0,1]
536 ; SSE42-NEXT: pblendw {{.*#+}} xmm4 = xmm4[0,1],xmm3[2,3],xmm4[4,5,6,7]
537 ; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,1,0,1]
538 ; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm4[0,1,2,3],xmm3[4,5],xmm4[6,7]
539 ; SSE42-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,2,2]
540 ; SSE42-NEXT: pblendw {{.*#+}} xmm4 = xmm4[0,1],xmm2[2,3],xmm4[4,5,6,7]
541 ; SSE42-NEXT: pblendw {{.*#+}} xmm4 = xmm4[0,1,2,3],xmm0[4,5],xmm4[6,7]
542 ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
543 ; SSE42-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,2,3]
544 ; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1],xmm0[2,3],xmm2[4,5,6,7]
545 ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,2,3,3]
546 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0,1,2,3],xmm0[4,5],xmm2[6,7]
547 ; SSE42-NEXT: movdqa %xmm0, 32(%rdi)
548 ; SSE42-NEXT: movdqa %xmm4, 16(%rdi)
549 ; SSE42-NEXT: movdqa %xmm3, (%rdi)
550 ; SSE42-NEXT: retq
644 ; SSE42-LABEL: pr29025:
645 ; SSE42: # %bb.0:
646 ; SSE42-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
647 ; SSE42-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],…
648 ; SSE42-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,8,1,2,10,3,4,12,5,6,14,7,u,u,u,u]
649 ; SSE42-NEXT: pextrd $2, %xmm0, 8(%rdi)
650 ; SSE42-NEXT: movq %xmm0, (%rdi)
651 ; SSE42-NEXT: retq
736 ; SSE42-LABEL: interleave_24i8_out:
737 ; SSE42: # %bb.0:
738 ; SSE42-NEXT: movdqu (%rdi), %xmm0
739 ; SSE42-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
740 ; SSE42-NEXT: movdqa %xmm1, %xmm2
741 ; SSE42-NEXT: pshufb {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,xmm2[2,5,u,u,u,u,u,u,u,u]
742 ; SSE42-NEXT: movdqa %xmm0, %xmm3
743 ; SSE42-NEXT: pshufb {{.*#+}} xmm3 = xmm3[0,3,6,9,12,15],zero,zero,xmm3[u,u,u,u,u,u,u,u]
744 ; SSE42-NEXT: por %xmm2, %xmm3
745 ; SSE42-NEXT: movdqa %xmm1, %xmm2
746 ; SSE42-NEXT: pshufb {{.*#+}} xmm2 = zero,zero,zero,zero,zero,xmm2[0,3,6,u,u,u,u,u,u,u,u]
747 ; SSE42-NEXT: movdqa %xmm0, %xmm4
748 ; SSE42-NEXT: pshufb {{.*#+}} xmm4 = xmm4[1,4,7,10,13],zero,zero,zero,xmm4[u,u,u,u,u,u,u,u]
749 ; SSE42-NEXT: por %xmm2, %xmm4
750 ; SSE42-NEXT: pshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,xmm1[1,4,7,u,u,u,u,u,u,u,u]
751 ; SSE42-NEXT: pshufb {{.*#+}} xmm0 = xmm0[2,5,8,11,14],zero,zero,zero,xmm0[u,u,u,u,u,u,u,u]
752 ; SSE42-NEXT: por %xmm1, %xmm0
753 ; SSE42-NEXT: movq %xmm3, (%rsi)
754 ; SSE42-NEXT: movq %xmm4, (%rdx)
755 ; SSE42-NEXT: movq %xmm0, (%rcx)
756 ; SSE42-NEXT: retq
840 ; SSE42-LABEL: interleave_24i8_in:
841 ; SSE42: # %bb.0:
842 ; SSE42-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
843 ; SSE42-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
844 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
845 ; SSE42-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
846 ; SSE42-NEXT: movdqa %xmm0, %xmm2
847 ; SSE42-NEXT: pshufb {{.*#+}} xmm2 = xmm2[0,8],zero,xmm2[1,9],zero,xmm2[2,10],zero,xmm2[3,11],ze…
848 ; SSE42-NEXT: movdqa %xmm1, %xmm3
849 ; SSE42-NEXT: pshufb {{.*#+}} xmm3 = zero,zero,xmm3[0],zero,zero,xmm3[1],zero,zero,xmm3[2],zero,…
850 ; SSE42-NEXT: por %xmm2, %xmm3
851 ; SSE42-NEXT: pshufb {{.*#+}} xmm0 = xmm0[13],zero,xmm0[6,14],zero,xmm0[7,15],zero,xmm0[u,u,u,u,…
852 ; SSE42-NEXT: pshufb {{.*#+}} xmm1 = zero,xmm1[5],zero,zero,xmm1[6],zero,zero,xmm1[7,u,u,u,u,u,u…
853 ; SSE42-NEXT: por %xmm0, %xmm1
854 ; SSE42-NEXT: movq %xmm1, 16(%rdi)
855 ; SSE42-NEXT: movdqu %xmm3, (%rdi)
856 ; SSE42-NEXT: retq
953 ; SSE42-LABEL: interleave_24i16_out:
954 ; SSE42: # %bb.0:
955 ; SSE42-NEXT: movdqu (%rdi), %xmm0
956 ; SSE42-NEXT: movdqu 16(%rdi), %xmm1
957 ; SSE42-NEXT: movdqu 32(%rdi), %xmm2
958 ; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,1,2,1]
959 ; SSE42-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6,5]
960 ; SSE42-NEXT: movdqa %xmm0, %xmm4
961 ; SSE42-NEXT: pblendw {{.*#+}} xmm4 = xmm4[0],xmm1[1],xmm4[2,3],xmm1[4],xmm4[5,6],xmm1[7]
962 ; SSE42-NEXT: pshufb {{.*#+}} xmm4 = xmm4[0,1,6,7,12,13,2,3,8,9,14,15,u,u,u,u]
963 ; SSE42-NEXT: pblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5],xmm3[6,7]
964 ; SSE42-NEXT: movdqa %xmm2, %xmm3
965 ; SSE42-NEXT: pshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u,u,u,u,0,1,6,7,12,13]
966 ; SSE42-NEXT: movdqa %xmm0, %xmm5
967 ; SSE42-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0,1],xmm1[2],xmm5[3,4],xmm1[5],xmm5[6,7]
968 ; SSE42-NEXT: pshufb {{.*#+}} xmm5 = xmm5[2,3,8,9,14,15,4,5,10,11,u,u,u,u,u,u]
969 ; SSE42-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4],xmm3[5,6,7]
970 ; SSE42-NEXT: pshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,u,u,u,2,3,8,9,14,15]
971 ; SSE42-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm0[2],xmm1[3,4],xmm0[5],xmm1[6,7]
972 ; SSE42-NEXT: pshufb {{.*#+}} xmm1 = xmm1[4,5,10,11,0,1,6,7,12,13,u,u,u,u,u,u]
973 ; SSE42-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4],xmm2[5,6,7]
974 ; SSE42-NEXT: movdqu %xmm4, (%rsi)
975 ; SSE42-NEXT: movdqu %xmm5, (%rdx)
976 ; SSE42-NEXT: movdqu %xmm1, (%rcx)
977 ; SSE42-NEXT: retq
1087 ; SSE42-LABEL: interleave_24i16_in:
1088 ; SSE42: # %bb.0:
1089 ; SSE42-NEXT: movdqu (%rsi), %xmm0
1090 ; SSE42-NEXT: movdqu (%rdx), %xmm1
1091 ; SSE42-NEXT: movdqu (%rcx), %xmm2
1092 ; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,2,2]
1093 ; SSE42-NEXT: pshufd {{.*#+}} xmm4 = xmm0[3,3,3,3]
1094 ; SSE42-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
1095 ; SSE42-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,u,u,4,5,6,7,u,u,8,9,10,11]
1096 ; SSE42-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,0,0,0]
1097 ; SSE42-NEXT: pblendw {{.*#+}} xmm5 = xmm0[0,1],xmm5[2],xmm0[3,4],xmm5[5],xmm0[6,7]
1098 ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,2,2]
1099 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0],xmm3[1],xmm0[2,3],xmm3[4],xmm0[5,6],xmm3[7]
1100 ; SSE42-NEXT: pshuflw {{.*#+}} xmm3 = xmm1[3,3,3,3,4,5,6,7]
1101 ; SSE42-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]
1102 ; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm0[0,1],xmm3[2],xmm0[3,4],xmm3[5],xmm0[6,7]
1103 ; SSE42-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],…
1104 ; SSE42-NEXT: pshufb {{.*#+}} xmm1 = xmm1[4,5,6,7,u,u,8,9,10,11,u,u,12,13,14,15]
1105 ; SSE42-NEXT: pblendw {{.*#+}} xmm4 = xmm1[0,1],xmm4[2],xmm1[3,4],xmm4[5],xmm1[6,7]
1106 ; SSE42-NEXT: movdqu %xmm4, 32(%rdi)
1107 ; SSE42-NEXT: movdqu %xmm3, 16(%rdi)
1108 ; SSE42-NEXT: movdqu %xmm5, (%rdi)
1109 ; SSE42-NEXT: retq
1246 ; SSE42-LABEL: interleave_24i32_out:
1247 ; SSE42: # %bb.0:
1248 ; SSE42-NEXT: movups 80(%rdi), %xmm8
1249 ; SSE42-NEXT: movdqu 64(%rdi), %xmm9
1250 ; SSE42-NEXT: movdqu (%rdi), %xmm4
1251 ; SSE42-NEXT: movdqu 16(%rdi), %xmm2
1252 ; SSE42-NEXT: movups 32(%rdi), %xmm10
1253 ; SSE42-NEXT: movdqu 48(%rdi), %xmm5
1254 ; SSE42-NEXT: movdqa %xmm2, %xmm6
1255 ; SSE42-NEXT: pblendw {{.*#+}} xmm6 = xmm6[0,1],xmm4[2,3],xmm6[4,5,6,7]
1256 ; SSE42-NEXT: pshufd {{.*#+}} xmm7 = xmm4[2,3,2,3]
1257 ; SSE42-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,3],xmm2[2,3]
1258 ; SSE42-NEXT: insertps {{.*#+}} xmm4 = xmm4[0,1,2],xmm10[1]
1259 ; SSE42-NEXT: movdqa %xmm9, %xmm1
1260 ; SSE42-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm5[2,3],xmm1[4,5,6,7]
1261 ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm5[2,3,2,3]
1262 ; SSE42-NEXT: shufps {{.*#+}} xmm5 = xmm5[0,3],xmm9[2,3]
1263 ; SSE42-NEXT: insertps {{.*#+}} xmm5 = xmm5[0,1,2],xmm8[1]
1264 ; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm10[2,2,2,2]
1265 ; SSE42-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,0,3,3]
1266 ; SSE42-NEXT: pblendw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5],xmm3[6,7]
1267 ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,0,3,3]
1268 ; SSE42-NEXT: pshufd {{.*#+}} xmm3 = xmm8[2,2,2,2]
1269 ; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm1[0,1,2,3,4,5],xmm3[6,7]
1270 ; SSE42-NEXT: pblendw {{.*#+}} xmm7 = xmm7[0,1],xmm2[2,3],xmm7[4,5,6,7]
1271 ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm10[0,1,0,3]
1272 ; SSE42-NEXT: pblendw {{.*#+}} xmm1 = xmm7[0,1,2,3],xmm1[4,5,6,7]
1273 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm9[2,3],xmm0[4,5,6,7]
1274 ; SSE42-NEXT: pshufd {{.*#+}} xmm2 = xmm8[0,1,0,3]
1275 ; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm0[0,1,2,3],xmm2[4,5,6,7]
1276 ; SSE42-NEXT: movups %xmm5, 16(%rsi)
1277 ; SSE42-NEXT: movups %xmm4, (%rsi)
1278 ; SSE42-NEXT: movdqu %xmm3, 16(%rdx)
1279 ; SSE42-NEXT: movdqu %xmm6, (%rdx)
1280 ; SSE42-NEXT: movdqu %xmm2, 16(%rcx)
1281 ; SSE42-NEXT: movdqu %xmm1, (%rcx)
1282 ; SSE42-NEXT: retq
1476 ; SSE42-LABEL: interleave_24i32_in:
1477 ; SSE42: # %bb.0:
1478 ; SSE42-NEXT: movdqu (%rsi), %xmm8
1479 ; SSE42-NEXT: movdqu 16(%rsi), %xmm4
1480 ; SSE42-NEXT: movdqu (%rdx), %xmm2
1481 ; SSE42-NEXT: movdqu 16(%rdx), %xmm5
1482 ; SSE42-NEXT: movdqu (%rcx), %xmm3
1483 ; SSE42-NEXT: movdqu 16(%rcx), %xmm6
1484 ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm2[0,0,1,1]
1485 ; SSE42-NEXT: pshufd {{.*#+}} xmm7 = xmm8[0,1,0,1]
1486 ; SSE42-NEXT: pblendw {{.*#+}} xmm7 = xmm7[0,1],xmm1[2,3],xmm7[4,5,6,7]
1487 ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,1,0,1]
1488 ; SSE42-NEXT: pblendw {{.*#+}} xmm1 = xmm7[0,1,2,3],xmm1[4,5],xmm7[6,7]
1489 ; SSE42-NEXT: pshufd {{.*#+}} xmm7 = xmm4[2,3,2,3]
1490 ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm6[2,3,2,3]
1491 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm7[2,3],xmm0[4,5,6,7]
1492 ; SSE42-NEXT: pshufd {{.*#+}} xmm7 = xmm5[2,2,3,3]
1493 ; SSE42-NEXT: pblendw {{.*#+}} xmm7 = xmm0[0,1,2,3],xmm7[4,5],xmm0[6,7]
1494 ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm5[1,1,2,2]
1495 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm6[2,3],xmm0[4,5,6,7]
1496 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm4[4,5],xmm0[6,7]
1497 ; SSE42-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,0,1,1]
1498 ; SSE42-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,0,1]
1499 ; SSE42-NEXT: pblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2,3],xmm4[4,5,6,7]
1500 ; SSE42-NEXT: pshufd {{.*#+}} xmm5 = xmm6[0,1,0,1]
1501 ; SSE42-NEXT: pblendw {{.*#+}} xmm5 = xmm4[0,1,2,3],xmm5[4,5],xmm4[6,7]
1502 ; SSE42-NEXT: pshufd {{.*#+}} xmm4 = xmm8[2,3,2,3]
1503 ; SSE42-NEXT: pshufd {{.*#+}} xmm6 = xmm3[2,3,2,3]
1504 ; SSE42-NEXT: pblendw {{.*#+}} xmm6 = xmm6[0,1],xmm4[2,3],xmm6[4,5,6,7]
1505 ; SSE42-NEXT: pshufd {{.*#+}} xmm4 = xmm2[2,2,3,3]
1506 ; SSE42-NEXT: pblendw {{.*#+}} xmm4 = xmm6[0,1,2,3],xmm4[4,5],xmm6[6,7]
1507 ; SSE42-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,2,2]
1508 ; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1],xmm3[2,3],xmm2[4,5,6,7]
1509 ; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1,2,3],xmm8[4,5],xmm2[6,7]
1510 ; SSE42-NEXT: movdqu %xmm2, 16(%rdi)
1511 ; SSE42-NEXT: movdqu %xmm4, 32(%rdi)
1512 ; SSE42-NEXT: movdqu %xmm5, 48(%rdi)
1513 ; SSE42-NEXT: movdqu %xmm0, 64(%rdi)
1514 ; SSE42-NEXT: movdqu %xmm7, 80(%rdi)
1515 ; SSE42-NEXT: movdqu %xmm1, (%rdi)
1516 ; SSE42-NEXT: retq
1703 ; SSE42-LABEL: splat3_128:
1704 ; SSE42: # %bb.0:
1705 ; SSE42-NEXT: movdqa {{.*#+}} xmm2 = [0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5]
1706 ; SSE42-NEXT: movdqa %xmm0, %xmm3
1707 ; SSE42-NEXT: pshufb %xmm2, %xmm3
1708 ; SSE42-NEXT: movdqa {{.*#+}} xmm4 = [5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10]
1709 ; SSE42-NEXT: movdqa %xmm0, %xmm5
1710 ; SSE42-NEXT: pshufb %xmm4, %xmm5
1711 ; SSE42-NEXT: movdqa {{.*#+}} xmm6 = [10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15]
1712 ; SSE42-NEXT: pshufb %xmm6, %xmm0
1713 ; SSE42-NEXT: movdqa %xmm1, %xmm7
1714 ; SSE42-NEXT: pshufb %xmm2, %xmm7
1715 ; SSE42-NEXT: movdqa %xmm1, %xmm2
1716 ; SSE42-NEXT: pshufb %xmm4, %xmm2
1717 ; SSE42-NEXT: pshufb %xmm6, %xmm1
1718 ; SSE42-NEXT: movdqa %xmm1, 80(%rdi)
1719 ; SSE42-NEXT: movdqa %xmm2, 64(%rdi)
1720 ; SSE42-NEXT: movdqa %xmm7, 48(%rdi)
1721 ; SSE42-NEXT: movdqa %xmm0, 32(%rdi)
1722 ; SSE42-NEXT: movdqa %xmm5, 16(%rdi)
1723 ; SSE42-NEXT: movdqa %xmm3, (%rdi)
1724 ; SSE42-NEXT: retq
1874 ; SSE42-LABEL: splat3_256:
1875 ; SSE42: # %bb.0:
1876 ; SSE42-NEXT: movdqa {{.*#+}} xmm2 = [0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5]
1877 ; SSE42-NEXT: movdqa %xmm0, %xmm3
1878 ; SSE42-NEXT: pshufb %xmm2, %xmm3
1879 ; SSE42-NEXT: movdqa {{.*#+}} xmm4 = [5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10]
1880 ; SSE42-NEXT: movdqa %xmm0, %xmm5
1881 ; SSE42-NEXT: pshufb %xmm4, %xmm5
1882 ; SSE42-NEXT: movdqa {{.*#+}} xmm6 = [10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15]
1883 ; SSE42-NEXT: pshufb %xmm6, %xmm0
1884 ; SSE42-NEXT: movdqa %xmm1, %xmm7
1885 ; SSE42-NEXT: pshufb %xmm2, %xmm7
1886 ; SSE42-NEXT: movdqa %xmm1, %xmm2
1887 ; SSE42-NEXT: pshufb %xmm4, %xmm2
1888 ; SSE42-NEXT: pshufb %xmm6, %xmm1
1889 ; SSE42-NEXT: movdqa %xmm1, 80(%rdi)
1890 ; SSE42-NEXT: movdqa %xmm2, 64(%rdi)
1891 ; SSE42-NEXT: movdqa %xmm7, 48(%rdi)
1892 ; SSE42-NEXT: movdqa %xmm0, 32(%rdi)
1893 ; SSE42-NEXT: movdqa %xmm5, 16(%rdi)
1894 ; SSE42-NEXT: movdqa %xmm3, (%rdi)
1895 ; SSE42-NEXT: retq
2003 ; SSE42-LABEL: splat_v3i32:
2004 ; SSE42: # %bb.0:
2005 ; SSE42-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
2006 ; SSE42-NEXT: pxor %xmm1, %xmm1
2007 ; SSE42-NEXT: pxor %xmm2, %xmm2
2008 ; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm0[0,1],xmm2[2,3,4,5,6,7]
2009 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3],xmm1[4,5,6,7]
2010 ; SSE42-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,0,1]
2011 ; SSE42-NEXT: pxor %xmm1, %xmm1
2012 ; SSE42-NEXT: xorps %xmm3, %xmm3
2013 ; SSE42-NEXT: retq
2067 ; SSE42-LABEL: wrongorder:
2068 ; SSE42: # %bb.0:
2069 ; SSE42-NEXT: movddup {{.*#+}} xmm0 = xmm0[0,0]
2070 ; SSE42-NEXT: movapd %xmm0, 48(%rdi)
2071 ; SSE42-NEXT: movapd %xmm0, 32(%rdi)
2072 ; SSE42-NEXT: movapd %xmm0, 16(%rdi)
2073 ; SSE42-NEXT: movapd %xmm0, (%rdi)
2074 ; SSE42-NEXT: retq
2125 ; SSE42-LABEL: PR41097:
2126 ; SSE42: # %bb.0:
2127 ; SSE42-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
2128 ; SSE42-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,3,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
2129 ; SSE42-NEXT: pmovsxbd %xmm0, %xmm0
2130 ; SSE42-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero
2131 ; SSE42-NEXT: movdqu %xmm0, (%rax)
2132 ; SSE42-NEXT: retq