Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / vector-interleaved-store-i8-stride-5.ll
blob1f21eee473194bde01382511e31e4d492071e2f3
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,FALLBACK0
3 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx  | FileCheck %s --check-prefixes=AVX,AVX1,AVX1-ONLY,FALLBACK1
4 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-SLOW,FALLBACK2
5 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST,FALLBACK3
6 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST-PERLANE,FALLBACK4
7 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512F-ONLY-SLOW,FALLBACK5
8 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512F-ONLY-FAST,FALLBACK6
9 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512DQ-SLOW,FALLBACK7
10 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512DQ-FAST,FALLBACK8
11 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512BW-ONLY-SLOW,FALLBACK9
12 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512BW-ONLY-FAST,FALLBACK10
13 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512DQBW-SLOW,FALLBACK11
14 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512DQBW-FAST,FALLBACK12
16 ; These patterns are produced by LoopVectorizer for interleaved stores.
18 define void @store_i8_stride5_vf2(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
19 ; SSE-LABEL: store_i8_stride5_vf2:
20 ; SSE:       # %bb.0:
21 ; SSE-NEXT:    movdqa (%rdi), %xmm0
22 ; SSE-NEXT:    movdqa (%rdx), %xmm1
23 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
24 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
25 ; SSE-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
26 ; SSE-NEXT:    pxor %xmm1, %xmm1
27 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
28 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm0[0,2,1,3,4,5,6,7]
29 ; SSE-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
30 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,4]
31 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,1]
32 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]
33 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,7,5]
34 ; SSE-NEXT:    packuswb %xmm0, %xmm1
35 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,255,255]
36 ; SSE-NEXT:    pand %xmm0, %xmm1
37 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = mem[0,0,0,0]
38 ; SSE-NEXT:    pandn %xmm2, %xmm0
39 ; SSE-NEXT:    por %xmm1, %xmm0
40 ; SSE-NEXT:    movq %xmm0, (%r9)
41 ; SSE-NEXT:    pextrw $4, %xmm0, %eax
42 ; SSE-NEXT:    movw %ax, 8(%r9)
43 ; SSE-NEXT:    retq
45 ; AVX-LABEL: store_i8_stride5_vf2:
46 ; AVX:       # %bb.0:
47 ; AVX-NEXT:    vmovdqa (%rdi), %xmm0
48 ; AVX-NEXT:    vmovdqa (%rdx), %xmm1
49 ; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
50 ; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
51 ; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
52 ; AVX-NEXT:    vpunpcklbw {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]
53 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
54 ; AVX-NEXT:    vpextrw $4, %xmm0, 8(%r9)
55 ; AVX-NEXT:    vmovq %xmm0, (%r9)
56 ; AVX-NEXT:    retq
57   %in.vec0 = load <2 x i8>, ptr %in.vecptr0, align 64
58   %in.vec1 = load <2 x i8>, ptr %in.vecptr1, align 64
59   %in.vec2 = load <2 x i8>, ptr %in.vecptr2, align 64
60   %in.vec3 = load <2 x i8>, ptr %in.vecptr3, align 64
61   %in.vec4 = load <2 x i8>, ptr %in.vecptr4, align 64
62   %1 = shufflevector <2 x i8> %in.vec0, <2 x i8> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
63   %2 = shufflevector <2 x i8> %in.vec2, <2 x i8> %in.vec3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
64   %3 = shufflevector <4 x i8> %1, <4 x i8> %2, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
65   %4 = shufflevector <2 x i8> %in.vec4, <2 x i8> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
66   %5 = shufflevector <8 x i8> %3, <8 x i8> %4, <10 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
67   %interleaved.vec = shufflevector <10 x i8> %5, <10 x i8> poison, <10 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 1, i32 3, i32 5, i32 7, i32 9>
68   store <10 x i8> %interleaved.vec, ptr %out.vec, align 64
69   ret void
72 define void @store_i8_stride5_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
73 ; SSE-LABEL: store_i8_stride5_vf4:
74 ; SSE:       # %bb.0:
75 ; SSE-NEXT:    movdqa (%rdi), %xmm1
76 ; SSE-NEXT:    movdqa (%rdx), %xmm2
77 ; SSE-NEXT:    movdqa (%r8), %xmm0
78 ; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
79 ; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
80 ; SSE-NEXT:    pxor %xmm3, %xmm3
81 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
82 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm1[3,1,2,1]
83 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,2,0,4,5,6,7]
84 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[1,3,2,3]
85 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
86 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm2[2,1,1,3]
87 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[1,1,1,1,4,5,6,7]
88 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]
89 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]
90 ; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
91 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm2[0,2,0,0]
92 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,0,2,4,5,6,7]
93 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,65535,0,0,65535,65535,65535,0]
94 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm1[0,2,2,0]
95 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[0,2,2,3,4,5,6,7]
96 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,7,5,7]
97 ; SSE-NEXT:    pand %xmm5, %xmm6
98 ; SSE-NEXT:    pandn %xmm4, %xmm5
99 ; SSE-NEXT:    por %xmm6, %xmm5
100 ; SSE-NEXT:    packuswb %xmm3, %xmm5
101 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
102 ; SSE-NEXT:    pand %xmm3, %xmm5
103 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm0[0,0,0,0]
104 ; SSE-NEXT:    pandn %xmm4, %xmm3
105 ; SSE-NEXT:    por %xmm5, %xmm3
106 ; SSE-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
107 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[3,1,2,3]
108 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,3,1,3,4,5,6,7]
109 ; SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
110 ; SSE-NEXT:    por %xmm1, %xmm2
111 ; SSE-NEXT:    packuswb %xmm2, %xmm2
112 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255]
113 ; SSE-NEXT:    pand %xmm1, %xmm2
114 ; SSE-NEXT:    pandn %xmm0, %xmm1
115 ; SSE-NEXT:    por %xmm2, %xmm1
116 ; SSE-NEXT:    movd %xmm1, 16(%r9)
117 ; SSE-NEXT:    movdqa %xmm3, (%r9)
118 ; SSE-NEXT:    retq
120 ; AVX1-ONLY-LABEL: store_i8_stride5_vf4:
121 ; AVX1-ONLY:       # %bb.0:
122 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm0
123 ; AVX1-ONLY-NEXT:    vmovdqa (%rdx), %xmm1
124 ; AVX1-ONLY-NEXT:    vmovdqa (%r8), %xmm2
125 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
126 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
127 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
128 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,8,12],zero,xmm0[1,5,9,13],zero,xmm0[2,6,10,14],zero,xmm0[3]
129 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,xmm2[1],zero,zero,zero,zero,xmm2[2],zero
130 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm1, %xmm1
131 ; AVX1-ONLY-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4,5,6]
132 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
133 ; AVX1-ONLY-NEXT:    vmovd %xmm0, 16(%r9)
134 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, (%r9)
135 ; AVX1-ONLY-NEXT:    retq
137 ; AVX2-ONLY-LABEL: store_i8_stride5_vf4:
138 ; AVX2-ONLY:       # %bb.0:
139 ; AVX2-ONLY-NEXT:    vmovdqa (%rdi), %xmm0
140 ; AVX2-ONLY-NEXT:    vmovdqa (%rdx), %xmm1
141 ; AVX2-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
142 ; AVX2-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
143 ; AVX2-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
144 ; AVX2-ONLY-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
145 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
146 ; AVX2-ONLY-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
147 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
148 ; AVX2-ONLY-NEXT:    vpor %ymm0, %ymm1, %ymm0
149 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm0, %xmm1
150 ; AVX2-ONLY-NEXT:    vmovd %xmm1, 16(%r9)
151 ; AVX2-ONLY-NEXT:    vmovdqa %xmm0, (%r9)
152 ; AVX2-ONLY-NEXT:    vzeroupper
153 ; AVX2-ONLY-NEXT:    retq
155 ; AVX512F-LABEL: store_i8_stride5_vf4:
156 ; AVX512F:       # %bb.0:
157 ; AVX512F-NEXT:    vmovdqa (%rdi), %xmm0
158 ; AVX512F-NEXT:    vmovdqa (%rdx), %xmm1
159 ; AVX512F-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
160 ; AVX512F-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
161 ; AVX512F-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
162 ; AVX512F-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
163 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19,u,u,u,u,u,u,u,u,u,u,u,u]
164 ; AVX512F-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
165 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
166 ; AVX512F-NEXT:    vpor %ymm0, %ymm1, %ymm0
167 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
168 ; AVX512F-NEXT:    vmovd %xmm1, 16(%r9)
169 ; AVX512F-NEXT:    vmovdqa %xmm0, (%r9)
170 ; AVX512F-NEXT:    vzeroupper
171 ; AVX512F-NEXT:    retq
173 ; AVX512BW-LABEL: store_i8_stride5_vf4:
174 ; AVX512BW:       # %bb.0:
175 ; AVX512BW-NEXT:    vmovdqa (%rdi), %xmm0
176 ; AVX512BW-NEXT:    vmovdqa (%rdx), %xmm1
177 ; AVX512BW-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
178 ; AVX512BW-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
179 ; AVX512BW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
180 ; AVX512BW-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
181 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[0,4,8,12],zero,ymm0[1,5,9,13],zero,ymm0[2,6,10,14],zero,ymm0[3],zero,zero,zero,ymm0[19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
182 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
183 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,ymm0[0],zero,zero,zero,zero,ymm0[1],zero,zero,zero,zero,ymm0[2],zero,ymm0[23,27,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
184 ; AVX512BW-NEXT:    vpor %ymm1, %ymm0, %ymm0
185 ; AVX512BW-NEXT:    vextracti128 $1, %ymm0, %xmm1
186 ; AVX512BW-NEXT:    vmovd %xmm1, 16(%r9)
187 ; AVX512BW-NEXT:    vmovdqa %xmm0, (%r9)
188 ; AVX512BW-NEXT:    vzeroupper
189 ; AVX512BW-NEXT:    retq
190   %in.vec0 = load <4 x i8>, ptr %in.vecptr0, align 64
191   %in.vec1 = load <4 x i8>, ptr %in.vecptr1, align 64
192   %in.vec2 = load <4 x i8>, ptr %in.vecptr2, align 64
193   %in.vec3 = load <4 x i8>, ptr %in.vecptr3, align 64
194   %in.vec4 = load <4 x i8>, ptr %in.vecptr4, align 64
195   %1 = shufflevector <4 x i8> %in.vec0, <4 x i8> %in.vec1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
196   %2 = shufflevector <4 x i8> %in.vec2, <4 x i8> %in.vec3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
197   %3 = shufflevector <8 x i8> %1, <8 x i8> %2, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
198   %4 = shufflevector <4 x i8> %in.vec4, <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
199   %5 = shufflevector <16 x i8> %3, <16 x i8> %4, <20 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19>
200   %interleaved.vec = shufflevector <20 x i8> %5, <20 x i8> poison, <20 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 1, i32 5, i32 9, i32 13, i32 17, i32 2, i32 6, i32 10, i32 14, i32 18, i32 3, i32 7, i32 11, i32 15, i32 19>
201   store <20 x i8> %interleaved.vec, ptr %out.vec, align 64
202   ret void
205 define void @store_i8_stride5_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
206 ; SSE-LABEL: store_i8_stride5_vf8:
207 ; SSE:       # %bb.0:
208 ; SSE-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
209 ; SSE-NEXT:    movq {{.*#+}} xmm2 = mem[0],zero
210 ; SSE-NEXT:    movq {{.*#+}} xmm4 = mem[0],zero
211 ; SSE-NEXT:    movq {{.*#+}} xmm3 = mem[0],zero
212 ; SSE-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
213 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[1,1,1,1]
214 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [65535,65535,0,65535,0,65535,65535,0]
215 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
216 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm3[2,1,2,3]
217 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[0,3,2,0,4,5,6,7]
218 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,5,5,5]
219 ; SSE-NEXT:    pand %xmm8, %xmm6
220 ; SSE-NEXT:    pandn %xmm5, %xmm8
221 ; SSE-NEXT:    por %xmm6, %xmm8
222 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [255,255,0,255,0,255,255,0,255,0,255,255,0,255,0,255]
223 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm4[1,2,2,3,4,5,6,7]
224 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
225 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
226 ; SSE-NEXT:    movdqa %xmm6, %xmm10
227 ; SSE-NEXT:    pandn %xmm5, %xmm10
228 ; SSE-NEXT:    movdqa %xmm2, %xmm7
229 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm2[0],xmm7[1],xmm2[1],xmm7[2],xmm2[2],xmm7[3],xmm2[3],xmm7[4],xmm2[4],xmm7[5],xmm2[5],xmm7[6],xmm2[6],xmm7[7],xmm2[7]
230 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm7[2,1,2,3]
231 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[3,1,0,3,4,5,6,7]
232 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,6,6]
233 ; SSE-NEXT:    pand %xmm6, %xmm5
234 ; SSE-NEXT:    por %xmm10, %xmm5
235 ; SSE-NEXT:    pand %xmm9, %xmm5
236 ; SSE-NEXT:    pandn %xmm8, %xmm9
237 ; SSE-NEXT:    por %xmm5, %xmm9
238 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
239 ; SSE-NEXT:    pand %xmm8, %xmm9
240 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm0[0,0,1,1]
241 ; SSE-NEXT:    movdqa %xmm8, %xmm5
242 ; SSE-NEXT:    pandn %xmm10, %xmm5
243 ; SSE-NEXT:    por %xmm9, %xmm5
244 ; SSE-NEXT:    pshuflw {{.*#+}} xmm9 = xmm4[1,0,2,3,4,5,6,7]
245 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[0,0,0,0]
246 ; SSE-NEXT:    pand %xmm8, %xmm9
247 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm3[1,0,2,3,4,5,6,7]
248 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,1,0,1]
249 ; SSE-NEXT:    pandn %xmm10, %xmm8
250 ; SSE-NEXT:    por %xmm9, %xmm8
251 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
252 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm1[0,0,0,0]
253 ; SSE-NEXT:    pand %xmm6, %xmm10
254 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[0,1,2,2,4,5,6,7]
255 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[0,0,1,3]
256 ; SSE-NEXT:    pandn %xmm7, %xmm6
257 ; SSE-NEXT:    por %xmm10, %xmm6
258 ; SSE-NEXT:    pand %xmm9, %xmm6
259 ; SSE-NEXT:    pandn %xmm8, %xmm9
260 ; SSE-NEXT:    por %xmm6, %xmm9
261 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
262 ; SSE-NEXT:    pand %xmm6, %xmm9
263 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[0,0,0,0]
264 ; SSE-NEXT:    pandn %xmm7, %xmm6
265 ; SSE-NEXT:    por %xmm9, %xmm6
266 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[3,3,3,3,4,5,6,7]
267 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,0,255,255,255,255,0,255,255,255,255,255,255,255,255,255]
268 ; SSE-NEXT:    pand %xmm7, %xmm4
269 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[3,3,3,3]
270 ; SSE-NEXT:    pandn %xmm3, %xmm7
271 ; SSE-NEXT:    por %xmm4, %xmm7
272 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,0,0,255,255,255,255,255,255,255,255,255,255,255]
273 ; SSE-NEXT:    pand %xmm3, %xmm7
274 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
275 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,7,7,7,7]
276 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,2,2,2]
277 ; SSE-NEXT:    pandn %xmm1, %xmm3
278 ; SSE-NEXT:    por %xmm7, %xmm3
279 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,0,255,255,255,255,0,255,255,255,255,255,255,255,255]
280 ; SSE-NEXT:    pand %xmm1, %xmm3
281 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
282 ; SSE-NEXT:    pandn %xmm0, %xmm1
283 ; SSE-NEXT:    por %xmm3, %xmm1
284 ; SSE-NEXT:    movq %xmm1, 32(%r9)
285 ; SSE-NEXT:    movdqa %xmm6, (%r9)
286 ; SSE-NEXT:    movdqa %xmm5, 16(%r9)
287 ; SSE-NEXT:    retq
289 ; AVX1-ONLY-LABEL: store_i8_stride5_vf8:
290 ; AVX1-ONLY:       # %bb.0:
291 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
292 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
293 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
294 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
295 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
296 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
297 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
298 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
299 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
300 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
301 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
302 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0,2,13,6,8,10,12,15,u,u,u,u,u,u,u,u]
303 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,xmm1[0,8,u],zero,zero,xmm1[1,9,u],zero,zero,xmm1[2,10,u],zero
304 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[0,8],zero,zero,xmm0[u,1,9],zero,zero,xmm0[u,2,10],zero,zero,xmm0[u,3]
305 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm5, %xmm4
306 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,2,3],zero,xmm4[5,6,7,8],zero,xmm4[10,11,12,13],zero,xmm4[15]
307 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,xmm2[1],zero,zero,zero,zero,xmm2[2],zero
308 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm4, %xmm4
309 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = zero,xmm1[3,11,u],zero,zero,xmm1[4,12,u],zero,zero,xmm1[5,13,u],zero,zero
310 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[11],zero,zero,xmm0[u,4,12],zero,zero,xmm0[u,5,13],zero,zero,xmm0[u,6,14]
311 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm0, %xmm0
312 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2],zero,xmm0[4,5,6,7],zero,xmm0[9,10,11,12],zero,xmm0[14,15]
313 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm2[3],zero,zero,zero,zero,xmm2[4],zero,zero,zero,zero,xmm2[5],zero,zero
314 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm0, %xmm0
315 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, 16(%r9)
316 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, (%r9)
317 ; AVX1-ONLY-NEXT:    vmovq %xmm3, 32(%r9)
318 ; AVX1-ONLY-NEXT:    retq
320 ; AVX2-SLOW-LABEL: store_i8_stride5_vf8:
321 ; AVX2-SLOW:       # %bb.0:
322 ; AVX2-SLOW-NEXT:    movq (%r8), %rax
323 ; AVX2-SLOW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
324 ; AVX2-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
325 ; AVX2-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
326 ; AVX2-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
327 ; AVX2-SLOW-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
328 ; AVX2-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
329 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
330 ; AVX2-SLOW-NEXT:    vmovq %rax, %xmm3
331 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero
332 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
333 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]
334 ; AVX2-SLOW-NEXT:    vpor %ymm2, %ymm4, %ymm2
335 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
336 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
337 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
338 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm2
339 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
340 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
341 ; AVX2-SLOW-NEXT:    vpor %xmm0, %xmm1, %xmm0
342 ; AVX2-SLOW-NEXT:    shrq $48, %rax
343 ; AVX2-SLOW-NEXT:    vmovd %eax, %xmm1
344 ; AVX2-SLOW-NEXT:    vpbroadcastw %xmm1, %xmm1
345 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} xmm3 = [255,255,0,255,255,255,255,0,255,255,0,255,255,255,255,0]
346 ; AVX2-SLOW-NEXT:    vpblendvb %xmm3, %xmm0, %xmm1, %xmm0
347 ; AVX2-SLOW-NEXT:    vmovq %xmm0, 32(%r9)
348 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, (%r9)
349 ; AVX2-SLOW-NEXT:    vzeroupper
350 ; AVX2-SLOW-NEXT:    retq
352 ; AVX2-FAST-LABEL: store_i8_stride5_vf8:
353 ; AVX2-FAST:       # %bb.0:
354 ; AVX2-FAST-NEXT:    movq (%r8), %rax
355 ; AVX2-FAST-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
356 ; AVX2-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
357 ; AVX2-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
358 ; AVX2-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
359 ; AVX2-FAST-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
360 ; AVX2-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
361 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
362 ; AVX2-FAST-NEXT:    vmovq %rax, %xmm3
363 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero
364 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
365 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]
366 ; AVX2-FAST-NEXT:    vpor %ymm2, %ymm4, %ymm2
367 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]
368 ; AVX2-FAST-NEXT:    vpermd %ymm3, %ymm4, %ymm3
369 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
370 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm2
371 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
372 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
373 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm1, %xmm0
374 ; AVX2-FAST-NEXT:    shrq $48, %rax
375 ; AVX2-FAST-NEXT:    vmovd %eax, %xmm1
376 ; AVX2-FAST-NEXT:    vpbroadcastw %xmm1, %xmm1
377 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} xmm3 = [255,255,0,255,255,255,255,0,255,255,0,255,255,255,255,0]
378 ; AVX2-FAST-NEXT:    vpblendvb %xmm3, %xmm0, %xmm1, %xmm0
379 ; AVX2-FAST-NEXT:    vmovq %xmm0, 32(%r9)
380 ; AVX2-FAST-NEXT:    vmovdqa %ymm2, (%r9)
381 ; AVX2-FAST-NEXT:    vzeroupper
382 ; AVX2-FAST-NEXT:    retq
384 ; AVX2-FAST-PERLANE-LABEL: store_i8_stride5_vf8:
385 ; AVX2-FAST-PERLANE:       # %bb.0:
386 ; AVX2-FAST-PERLANE-NEXT:    movq (%r8), %rax
387 ; AVX2-FAST-PERLANE-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
388 ; AVX2-FAST-PERLANE-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
389 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
390 ; AVX2-FAST-PERLANE-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
391 ; AVX2-FAST-PERLANE-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
392 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
393 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
394 ; AVX2-FAST-PERLANE-NEXT:    vmovq %rax, %xmm3
395 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero
396 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
397 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]
398 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm2, %ymm4, %ymm2
399 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
400 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
401 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
402 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm2
403 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
404 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
405 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm0, %xmm1, %xmm0
406 ; AVX2-FAST-PERLANE-NEXT:    shrq $48, %rax
407 ; AVX2-FAST-PERLANE-NEXT:    vmovd %eax, %xmm1
408 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastw %xmm1, %xmm1
409 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} xmm3 = [255,255,0,255,255,255,255,0,255,255,0,255,255,255,255,0]
410 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %xmm3, %xmm0, %xmm1, %xmm0
411 ; AVX2-FAST-PERLANE-NEXT:    vmovq %xmm0, 32(%r9)
412 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, (%r9)
413 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
414 ; AVX2-FAST-PERLANE-NEXT:    retq
416 ; AVX512F-SLOW-LABEL: store_i8_stride5_vf8:
417 ; AVX512F-SLOW:       # %bb.0:
418 ; AVX512F-SLOW-NEXT:    movq (%r8), %rax
419 ; AVX512F-SLOW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
420 ; AVX512F-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
421 ; AVX512F-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
422 ; AVX512F-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
423 ; AVX512F-SLOW-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
424 ; AVX512F-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
425 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
426 ; AVX512F-SLOW-NEXT:    vmovq %rax, %xmm3
427 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,ymm2[u,1,9],zero,zero,ymm2[u,2,10],zero,zero,ymm2[u,3],zero,ymm2[19,27,u],zero,zero,ymm2[20,28,u],zero,zero,ymm2[21,29,u],zero,zero
428 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
429 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8,u],zero,zero,ymm2[1,9,u],zero,zero,ymm2[2,10,u],zero,ymm2[27],zero,zero,ymm2[u,20,28],zero,zero,ymm2[u,21,29],zero,zero,ymm2[u,22,30]
430 ; AVX512F-SLOW-NEXT:    vpor %ymm2, %ymm4, %ymm2
431 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
432 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
433 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm2, %ymm3
434 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
435 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
436 ; AVX512F-SLOW-NEXT:    vpor %xmm0, %xmm1, %xmm0
437 ; AVX512F-SLOW-NEXT:    shrq $48, %rax
438 ; AVX512F-SLOW-NEXT:    vmovd %eax, %xmm1
439 ; AVX512F-SLOW-NEXT:    vpbroadcastw %xmm1, %xmm1
440 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
441 ; AVX512F-SLOW-NEXT:    vinserti32x4 $2, %xmm1, %zmm3, %zmm0
442 ; AVX512F-SLOW-NEXT:    vmovq %xmm1, 32(%r9)
443 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm0, (%r9)
444 ; AVX512F-SLOW-NEXT:    vzeroupper
445 ; AVX512F-SLOW-NEXT:    retq
447 ; AVX512F-FAST-LABEL: store_i8_stride5_vf8:
448 ; AVX512F-FAST:       # %bb.0:
449 ; AVX512F-FAST-NEXT:    movq (%r8), %rax
450 ; AVX512F-FAST-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
451 ; AVX512F-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
452 ; AVX512F-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
453 ; AVX512F-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
454 ; AVX512F-FAST-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
455 ; AVX512F-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
456 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
457 ; AVX512F-FAST-NEXT:    vmovq %rax, %xmm3
458 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,ymm2[u,1,9],zero,zero,ymm2[u,2,10],zero,zero,ymm2[u,3],zero,ymm2[19,27,u],zero,zero,ymm2[20,28,u],zero,zero,ymm2[21,29,u],zero,zero
459 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
460 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8,u],zero,zero,ymm2[1,9,u],zero,zero,ymm2[2,10,u],zero,ymm2[27],zero,zero,ymm2[u,20,28],zero,zero,ymm2[u,21,29],zero,zero,ymm2[u,22,30]
461 ; AVX512F-FAST-NEXT:    vpor %ymm2, %ymm4, %ymm2
462 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = <u,0,0,0,0,u,1,1>
463 ; AVX512F-FAST-NEXT:    vpermd %ymm3, %ymm4, %ymm3
464 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm2, %ymm3
465 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
466 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
467 ; AVX512F-FAST-NEXT:    vpor %xmm0, %xmm1, %xmm0
468 ; AVX512F-FAST-NEXT:    shrq $48, %rax
469 ; AVX512F-FAST-NEXT:    vmovd %eax, %xmm1
470 ; AVX512F-FAST-NEXT:    vpbroadcastw %xmm1, %xmm1
471 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
472 ; AVX512F-FAST-NEXT:    vinserti32x4 $2, %xmm1, %zmm3, %zmm0
473 ; AVX512F-FAST-NEXT:    vmovq %xmm1, 32(%r9)
474 ; AVX512F-FAST-NEXT:    vmovdqa %ymm0, (%r9)
475 ; AVX512F-FAST-NEXT:    vzeroupper
476 ; AVX512F-FAST-NEXT:    retq
478 ; AVX512BW-SLOW-LABEL: store_i8_stride5_vf8:
479 ; AVX512BW-SLOW:       # %bb.0:
480 ; AVX512BW-SLOW-NEXT:    movq (%r8), %rax
481 ; AVX512BW-SLOW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
482 ; AVX512BW-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
483 ; AVX512BW-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
484 ; AVX512BW-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
485 ; AVX512BW-SLOW-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
486 ; AVX512BW-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
487 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
488 ; AVX512BW-SLOW-NEXT:    vmovq %rax, %xmm3
489 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero
490 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
491 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]
492 ; AVX512BW-SLOW-NEXT:    vpor %ymm4, %ymm2, %ymm2
493 ; AVX512BW-SLOW-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
494 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
495 ; AVX512BW-SLOW-NEXT:    movl $554189328, %ecx # imm = 0x21084210
496 ; AVX512BW-SLOW-NEXT:    kmovd %ecx, %k1
497 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k1}
498 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
499 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
500 ; AVX512BW-SLOW-NEXT:    vpor %xmm0, %xmm1, %xmm0
501 ; AVX512BW-SLOW-NEXT:    shrq $48, %rax
502 ; AVX512BW-SLOW-NEXT:    vpbroadcastw %eax, %xmm1
503 ; AVX512BW-SLOW-NEXT:    movw $132, %ax
504 ; AVX512BW-SLOW-NEXT:    kmovd %eax, %k1
505 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %xmm1, %xmm0 {%k1}
506 ; AVX512BW-SLOW-NEXT:    vinserti32x4 $2, %xmm0, %zmm2, %zmm1
507 ; AVX512BW-SLOW-NEXT:    vmovq %xmm0, 32(%r9)
508 ; AVX512BW-SLOW-NEXT:    vmovdqa %ymm1, (%r9)
509 ; AVX512BW-SLOW-NEXT:    vzeroupper
510 ; AVX512BW-SLOW-NEXT:    retq
512 ; AVX512BW-FAST-LABEL: store_i8_stride5_vf8:
513 ; AVX512BW-FAST:       # %bb.0:
514 ; AVX512BW-FAST-NEXT:    movq (%r8), %rax
515 ; AVX512BW-FAST-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
516 ; AVX512BW-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
517 ; AVX512BW-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
518 ; AVX512BW-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
519 ; AVX512BW-FAST-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
520 ; AVX512BW-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
521 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
522 ; AVX512BW-FAST-NEXT:    vmovq %rax, %xmm3
523 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,zero,ymm2[3],zero,ymm2[19,27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero
524 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
525 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,ymm2[0,8],zero,zero,zero,ymm2[1,9],zero,zero,zero,ymm2[2,10],zero,zero,ymm2[27],zero,zero,zero,ymm2[20,28],zero,zero,zero,ymm2[21,29],zero,zero,zero,ymm2[22,30]
526 ; AVX512BW-FAST-NEXT:    vpor %ymm4, %ymm2, %ymm2
527 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]
528 ; AVX512BW-FAST-NEXT:    vpermd %ymm3, %ymm4, %ymm3
529 ; AVX512BW-FAST-NEXT:    movl $554189328, %ecx # imm = 0x21084210
530 ; AVX512BW-FAST-NEXT:    kmovd %ecx, %k1
531 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k1}
532 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
533 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
534 ; AVX512BW-FAST-NEXT:    vpor %xmm0, %xmm1, %xmm0
535 ; AVX512BW-FAST-NEXT:    shrq $48, %rax
536 ; AVX512BW-FAST-NEXT:    vpbroadcastw %eax, %xmm1
537 ; AVX512BW-FAST-NEXT:    movw $132, %ax
538 ; AVX512BW-FAST-NEXT:    kmovd %eax, %k1
539 ; AVX512BW-FAST-NEXT:    vmovdqu8 %xmm1, %xmm0 {%k1}
540 ; AVX512BW-FAST-NEXT:    vinserti32x4 $2, %xmm0, %zmm2, %zmm1
541 ; AVX512BW-FAST-NEXT:    vmovq %xmm0, 32(%r9)
542 ; AVX512BW-FAST-NEXT:    vmovdqa %ymm1, (%r9)
543 ; AVX512BW-FAST-NEXT:    vzeroupper
544 ; AVX512BW-FAST-NEXT:    retq
545   %in.vec0 = load <8 x i8>, ptr %in.vecptr0, align 64
546   %in.vec1 = load <8 x i8>, ptr %in.vecptr1, align 64
547   %in.vec2 = load <8 x i8>, ptr %in.vecptr2, align 64
548   %in.vec3 = load <8 x i8>, ptr %in.vecptr3, align 64
549   %in.vec4 = load <8 x i8>, ptr %in.vecptr4, align 64
550   %1 = shufflevector <8 x i8> %in.vec0, <8 x i8> %in.vec1, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
551   %2 = shufflevector <8 x i8> %in.vec2, <8 x i8> %in.vec3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
552   %3 = shufflevector <16 x i8> %1, <16 x i8> %2, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
553   %4 = shufflevector <8 x i8> %in.vec4, <8 x i8> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
554   %5 = shufflevector <32 x i8> %3, <32 x i8> %4, <40 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39>
555   %interleaved.vec = shufflevector <40 x i8> %5, <40 x i8> poison, <40 x i32> <i32 0, i32 8, i32 16, i32 24, i32 32, i32 1, i32 9, i32 17, i32 25, i32 33, i32 2, i32 10, i32 18, i32 26, i32 34, i32 3, i32 11, i32 19, i32 27, i32 35, i32 4, i32 12, i32 20, i32 28, i32 36, i32 5, i32 13, i32 21, i32 29, i32 37, i32 6, i32 14, i32 22, i32 30, i32 38, i32 7, i32 15, i32 23, i32 31, i32 39>
556   store <40 x i8> %interleaved.vec, ptr %out.vec, align 64
557   ret void
560 define void @store_i8_stride5_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
561 ; SSE-LABEL: store_i8_stride5_vf16:
562 ; SSE:       # %bb.0:
563 ; SSE-NEXT:    movdqa (%rdi), %xmm10
564 ; SSE-NEXT:    movdqa (%rsi), %xmm8
565 ; SSE-NEXT:    movdqa (%rdx), %xmm2
566 ; SSE-NEXT:    movdqa (%rcx), %xmm4
567 ; SSE-NEXT:    movdqa (%r8), %xmm0
568 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm2[3,3,3,3,4,5,6,7]
569 ; SSE-NEXT:    movdqa %xmm2, %xmm9
570 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
571 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
572 ; SSE-NEXT:    pand %xmm6, %xmm1
573 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[2,1,2,3]
574 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
575 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[3,3,0,3]
576 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]
577 ; SSE-NEXT:    movdqa %xmm6, %xmm5
578 ; SSE-NEXT:    pandn %xmm3, %xmm5
579 ; SSE-NEXT:    por %xmm1, %xmm5
580 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
581 ; SSE-NEXT:    pand %xmm2, %xmm5
582 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm10[1,1,2,2]
583 ; SSE-NEXT:    movdqa %xmm10, %xmm12
584 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
585 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
586 ; SSE-NEXT:    pand %xmm1, %xmm7
587 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm8[0,1,2,1]
588 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,7,6,7]
589 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm10 = xmm10[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
590 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm10[3,1,0,3,4,5,6,7]
591 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,0,1,0]
592 ; SSE-NEXT:    movdqa %xmm1, %xmm11
593 ; SSE-NEXT:    pandn %xmm10, %xmm11
594 ; SSE-NEXT:    por %xmm7, %xmm11
595 ; SSE-NEXT:    movdqa %xmm2, %xmm10
596 ; SSE-NEXT:    pandn %xmm11, %xmm10
597 ; SSE-NEXT:    por %xmm5, %xmm10
598 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
599 ; SSE-NEXT:    pand %xmm7, %xmm10
600 ; SSE-NEXT:    movdqa %xmm0, %xmm5
601 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm0[1,1,2,2]
602 ; SSE-NEXT:    movdqa %xmm7, %xmm0
603 ; SSE-NEXT:    pandn %xmm11, %xmm0
604 ; SSE-NEXT:    por %xmm10, %xmm0
605 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
606 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm12[2,2,3,3]
607 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
608 ; SSE-NEXT:    pand %xmm12, %xmm11
609 ; SSE-NEXT:    movdqa %xmm8, %xmm0
610 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]
611 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
612 ; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm0[0,1,2,1]
613 ; SSE-NEXT:    pshuflw {{.*#+}} xmm13 = xmm13[2,2,2,2,4,5,6,7]
614 ; SSE-NEXT:    pshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,7,5,4,7]
615 ; SSE-NEXT:    movdqa %xmm12, %xmm14
616 ; SSE-NEXT:    pandn %xmm13, %xmm14
617 ; SSE-NEXT:    por %xmm11, %xmm14
618 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
619 ; SSE-NEXT:    movdqa %xmm13, %xmm11
620 ; SSE-NEXT:    pandn %xmm14, %xmm11
621 ; SSE-NEXT:    pshufhw {{.*#+}} xmm14 = xmm9[0,1,2,3,5,6,6,7]
622 ; SSE-NEXT:    movdqa %xmm9, %xmm10
623 ; SSE-NEXT:    pshufd {{.*#+}} xmm14 = xmm14[2,2,2,2]
624 ; SSE-NEXT:    movdqa %xmm1, %xmm15
625 ; SSE-NEXT:    pandn %xmm14, %xmm15
626 ; SSE-NEXT:    movdqa %xmm4, %xmm14
627 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm14 = xmm14[8],xmm4[8],xmm14[9],xmm4[9],xmm14[10],xmm4[10],xmm14[11],xmm4[11],xmm14[12],xmm4[12],xmm14[13],xmm4[13],xmm14[14],xmm4[14],xmm14[15],xmm4[15]
628 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm14[0,1,2,1]
629 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,1,2,3,4,5,6,7]
630 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,4]
631 ; SSE-NEXT:    pand %xmm1, %xmm0
632 ; SSE-NEXT:    por %xmm15, %xmm0
633 ; SSE-NEXT:    pand %xmm13, %xmm0
634 ; SSE-NEXT:    por %xmm11, %xmm0
635 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm5[2,2,2,2]
636 ; SSE-NEXT:    movdqa %xmm6, %xmm11
637 ; SSE-NEXT:    pandn %xmm15, %xmm11
638 ; SSE-NEXT:    pand %xmm6, %xmm0
639 ; SSE-NEXT:    por %xmm0, %xmm11
640 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
641 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[2,1,2,3]
642 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,0,4,5,6,7]
643 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
644 ; SSE-NEXT:    movdqa %xmm7, %xmm15
645 ; SSE-NEXT:    pandn %xmm0, %xmm15
646 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm9[1,2,2,3,4,5,6,7]
647 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
648 ; SSE-NEXT:    pand %xmm7, %xmm0
649 ; SSE-NEXT:    por %xmm0, %xmm15
650 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
651 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm9[1,1,1,1]
652 ; SSE-NEXT:    movdqa %xmm1, %xmm3
653 ; SSE-NEXT:    pandn %xmm0, %xmm3
654 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
655 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm8[2,1,2,3]
656 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
657 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]
658 ; SSE-NEXT:    pand %xmm1, %xmm0
659 ; SSE-NEXT:    por %xmm3, %xmm0
660 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
661 ; SSE-NEXT:    pand %xmm3, %xmm0
662 ; SSE-NEXT:    pandn %xmm15, %xmm3
663 ; SSE-NEXT:    por %xmm0, %xmm3
664 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,0,1,1]
665 ; SSE-NEXT:    movdqa %xmm12, %xmm15
666 ; SSE-NEXT:    pandn %xmm0, %xmm15
667 ; SSE-NEXT:    pand %xmm12, %xmm3
668 ; SSE-NEXT:    por %xmm3, %xmm15
669 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm10[1,0,2,3,4,5,6,7]
670 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
671 ; SSE-NEXT:    pand %xmm12, %xmm0
672 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm4[1,0,2,3,4,5,6,7]
673 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]
674 ; SSE-NEXT:    pandn %xmm3, %xmm12
675 ; SSE-NEXT:    por %xmm0, %xmm12
676 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm9[0,0,0,0]
677 ; SSE-NEXT:    pand %xmm6, %xmm0
678 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm8[0,1,2,2,4,5,6,7]
679 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,1,3]
680 ; SSE-NEXT:    pandn %xmm3, %xmm6
681 ; SSE-NEXT:    por %xmm0, %xmm6
682 ; SSE-NEXT:    pand %xmm13, %xmm6
683 ; SSE-NEXT:    pandn %xmm12, %xmm13
684 ; SSE-NEXT:    por %xmm6, %xmm13
685 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,0,0,0]
686 ; SSE-NEXT:    movdqa %xmm1, %xmm6
687 ; SSE-NEXT:    pandn %xmm0, %xmm6
688 ; SSE-NEXT:    pand %xmm1, %xmm13
689 ; SSE-NEXT:    por %xmm13, %xmm6
690 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm10[0,1,2,3,7,6,6,7]
691 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,2,2,2]
692 ; SSE-NEXT:    pand %xmm1, %xmm0
693 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm14[0,1,2,3,5,7,6,7]
694 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]
695 ; SSE-NEXT:    pandn %xmm3, %xmm1
696 ; SSE-NEXT:    por %xmm0, %xmm1
697 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm9[3,3,3,3]
698 ; SSE-NEXT:    pand %xmm7, %xmm0
699 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
700 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,7,5,6,6]
701 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,3,2,2]
702 ; SSE-NEXT:    pandn %xmm3, %xmm7
703 ; SSE-NEXT:    por %xmm0, %xmm7
704 ; SSE-NEXT:    pand %xmm2, %xmm7
705 ; SSE-NEXT:    pandn %xmm1, %xmm2
706 ; SSE-NEXT:    por %xmm7, %xmm2
707 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
708 ; SSE-NEXT:    pand %xmm0, %xmm2
709 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm5[3,3,3,3]
710 ; SSE-NEXT:    pandn %xmm1, %xmm0
711 ; SSE-NEXT:    por %xmm2, %xmm0
712 ; SSE-NEXT:    movdqa %xmm0, 64(%r9)
713 ; SSE-NEXT:    movdqa %xmm6, (%r9)
714 ; SSE-NEXT:    movdqa %xmm15, 16(%r9)
715 ; SSE-NEXT:    movdqa %xmm11, 48(%r9)
716 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
717 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
718 ; SSE-NEXT:    retq
720 ; AVX1-ONLY-LABEL: store_i8_stride5_vf16:
721 ; AVX1-ONLY:       # %bb.0:
722 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm2
723 ; AVX1-ONLY-NEXT:    vmovdqa (%rsi), %xmm3
724 ; AVX1-ONLY-NEXT:    vmovdqa (%rdx), %xmm1
725 ; AVX1-ONLY-NEXT:    vmovdqa (%rcx), %xmm4
726 ; AVX1-ONLY-NEXT:    vmovdqa (%r8), %xmm0
727 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,xmm4[6,u,u,u],zero,xmm4[7,u,u,u],zero,xmm4[8,u,u,u],zero
728 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[6],zero,xmm1[u,u,u,7],zero,xmm1[u,u,u,8],zero,xmm1[u,u,u,9]
729 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm6, %xmm5
730 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[u,u,u],zero,xmm3[7,u,u,u],zero,xmm3[8,u,u,u],zero,xmm3[9,u]
731 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm2[u,u,u,7],zero,xmm2[u,u,u,8],zero,xmm2[u,u,u,9],zero,xmm2[u]
732 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm7, %xmm6
733 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm7 = <255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255>
734 ; AVX1-ONLY-NEXT:    vpblendvb %xmm7, %xmm5, %xmm6, %xmm5
735 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1],zero,xmm5[3,4,5,6],zero,xmm5[8,9,10,11],zero,xmm5[13,14,15]
736 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm0[6],zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,xmm0[8],zero,zero,zero
737 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm5, %xmm5
738 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm6 = xmm1[8],xmm4[8],xmm1[9],xmm4[9],xmm1[10],xmm4[10],xmm1[11],xmm4[11],xmm1[12],xmm4[12],xmm1[13],xmm4[13],xmm1[14],xmm4[14],xmm1[15],xmm4[15]
739 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm6[10,11],zero,zero,zero,xmm6[12,13],zero,zero,zero,xmm6[14,15],zero
740 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm7 = xmm2[8],xmm3[8],xmm2[9],xmm3[9],xmm2[10],xmm3[10],xmm2[11],xmm3[11],xmm2[12],xmm3[12],xmm2[13],xmm3[13],xmm2[14],xmm3[14],xmm2[15],xmm3[15]
741 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm7[10,11],zero,zero,zero,xmm7[12,13],zero,zero,zero,xmm7[14,15],zero,zero,zero
742 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm8, %xmm6
743 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm8 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3],xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7]
744 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,xmm8[0,1],zero,zero,zero,xmm8[2,3],zero,zero,zero,xmm8[4,5],zero,zero
745 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm10 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
746 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[0,1],zero,zero,zero,xmm10[2,3],zero,zero,zero,xmm10[4,5],zero,zero,zero,xmm10[6]
747 ; AVX1-ONLY-NEXT:    vpor %xmm9, %xmm10, %xmm9
748 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,zero,zero,xmm0[0],zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,xmm0[2],zero
749 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm9, %xmm9
750 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm8[6,7],zero,zero,zero,xmm8[8,9],zero,zero,zero,xmm8[10,11],zero,zero,zero
751 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
752 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[6],zero,zero,zero,xmm2[9,8],zero,zero,zero,xmm2[11,10],zero,zero,zero,xmm2[13,12]
753 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm8, %xmm2
754 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm0[3],zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,xmm0[5],zero,zero
755 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm2, %xmm2
756 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm7[4,5],zero,zero,zero,xmm7[6,7],zero,zero,zero,xmm7[8,9],zero,zero
757 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm1 = xmm4[8],xmm1[8],xmm4[9],xmm1[9],xmm4[10],xmm1[10],xmm4[11],xmm1[11],xmm4[12],xmm1[12],xmm4[13],xmm1[13],xmm4[14],xmm1[14],xmm4[15],xmm1[15]
758 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[2],zero,zero,zero,xmm1[5,4],zero,zero,zero,xmm1[7,6],zero,zero,zero,xmm1[9,8]
759 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm1, %xmm1
760 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,xmm0[9],zero,zero,zero,zero,xmm0[10],zero,zero,zero,zero,xmm0[11],zero,zero,zero,zero
761 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm1, %xmm1
762 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, 48(%r9)
763 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, 16(%r9)
764 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, (%r9)
765 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]
766 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm6, %xmm0
767 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, 64(%r9)
768 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, 32(%r9)
769 ; AVX1-ONLY-NEXT:    retq
771 ; AVX2-SLOW-LABEL: store_i8_stride5_vf16:
772 ; AVX2-SLOW:       # %bb.0:
773 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %xmm0
774 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %xmm1
775 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %xmm3
776 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %xmm4
777 ; AVX2-SLOW-NEXT:    vmovdqa (%r8), %xmm2
778 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
779 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm6
780 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = ymm6[6],zero,zero,zero,zero,ymm6[7],zero,zero,zero,zero,ymm6[8],zero,zero,zero,zero,ymm6[9,25],zero,zero,zero,zero,ymm6[26],zero,zero,zero,zero,ymm6[27],zero,zero,zero,zero,ymm6[28]
781 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
782 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = zero,ymm8[6],zero,zero,zero,zero,ymm8[7],zero,zero,zero,zero,ymm8[8],zero,zero,zero,zero,zero,zero,zero,zero,ymm8[26],zero,zero,zero,zero,ymm8[27],zero,zero,zero,zero,ymm8[28],zero
783 ; AVX2-SLOW-NEXT:    vpor %ymm7, %ymm8, %ymm7
784 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,ymm5[7],zero,zero,zero,zero,ymm5[8],zero,zero,zero,zero,ymm5[9],zero,zero,zero,zero,zero,ymm5[26],zero,zero,zero,zero,ymm5[27],zero,zero,zero,zero,ymm5[28],zero,zero
785 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm5[2,3,0,1]
786 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 = zero,zero,zero,zero,ymm9[7],zero,zero,zero,zero,ymm9[8],zero,zero,zero,zero,ymm9[9],zero,zero,zero,ymm9[26],zero,zero,zero,zero,ymm9[27],zero,zero,zero,zero,ymm9[28],zero,zero,zero
787 ; AVX2-SLOW-NEXT:    vpor %ymm8, %ymm9, %ymm8
788 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255>
789 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
790 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm8 = xmm2[1,1,2,2]
791 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,1,1]
792 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
793 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
794 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,0,2]
795 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,ymm6[0,8],zero,zero,zero,ymm6[1,9],zero,zero,zero,ymm6[2,10],zero,zero,zero,ymm6[19,27],zero,zero,zero,ymm6[20,28],zero,zero,zero,ymm6[21,29],zero,zero,zero
796 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,2,0]
797 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[0,8],zero,zero,zero,ymm5[1,9],zero,zero,zero,ymm5[2,10],zero,zero,zero,ymm5[3,19],zero,zero,zero,ymm5[28,20],zero,zero,zero,ymm5[29,21],zero,zero,zero,ymm5[30,22]
798 ; AVX2-SLOW-NEXT:    vpor %ymm6, %ymm5, %ymm5
799 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm6 = xmm2[0,0,1,1]
800 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]
801 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
802 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm5, %ymm6, %ymm5
803 ; AVX2-SLOW-NEXT:    vpunpckhbw {{.*#+}} xmm3 = xmm3[8],xmm4[8],xmm3[9],xmm4[9],xmm3[10],xmm4[10],xmm3[11],xmm4[11],xmm3[12],xmm4[12],xmm3[13],xmm4[13],xmm3[14],xmm4[14],xmm3[15],xmm4[15]
804 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[10,11],zero,zero,zero,xmm3[12,13],zero,zero,zero,xmm3[14,15],zero
805 ; AVX2-SLOW-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
806 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
807 ; AVX2-SLOW-NEXT:    vpor %xmm3, %xmm0, %xmm0
808 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm2[12],zero,zero,zero,zero,xmm2[13],zero,zero,zero,zero,xmm2[14],zero,zero,zero,zero,xmm2[15]
809 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm0, %xmm0
810 ; AVX2-SLOW-NEXT:    vmovdqa %xmm0, 64(%r9)
811 ; AVX2-SLOW-NEXT:    vmovdqa %ymm5, (%r9)
812 ; AVX2-SLOW-NEXT:    vmovdqa %ymm7, 32(%r9)
813 ; AVX2-SLOW-NEXT:    vzeroupper
814 ; AVX2-SLOW-NEXT:    retq
816 ; AVX2-FAST-LABEL: store_i8_stride5_vf16:
817 ; AVX2-FAST:       # %bb.0:
818 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %xmm0
819 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %xmm1
820 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %xmm2
821 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %xmm3
822 ; AVX2-FAST-NEXT:    vmovdqa (%r8), %xmm4
823 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
824 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm6
825 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm6[0,2,0,2]
826 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,ymm7[0,8],zero,zero,zero,ymm7[1,9],zero,zero,zero,ymm7[2,10],zero,zero,zero,ymm7[19,27],zero,zero,zero,ymm7[20,28],zero,zero,zero,ymm7[21,29],zero,zero,zero
827 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm5[0,2,2,0]
828 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[0,8],zero,zero,zero,ymm8[1,9],zero,zero,zero,ymm8[2,10],zero,zero,zero,ymm8[3,19],zero,zero,zero,ymm8[28,20],zero,zero,zero,ymm8[29,21],zero,zero,zero,ymm8[30,22]
829 ; AVX2-FAST-NEXT:    vpor %ymm7, %ymm8, %ymm7
830 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [0,0,0,0,0,0,1,1]
831 ; AVX2-FAST-NEXT:    vpermd %ymm4, %ymm8, %ymm8
832 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
833 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
834 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [1,5,2,6,2,6,3,7]
835 ; AVX2-FAST-NEXT:    vpermd %ymm5, %ymm8, %ymm5
836 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = zero,zero,zero,ymm5[3,7],zero,zero,zero,ymm5[8,12],zero,zero,zero,ymm5[9,13],zero,zero,zero,ymm5[18,22],zero,zero,zero,ymm5[19,23],zero,zero,zero,ymm5[24,28],zero,zero
837 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [1,5,2,6,6,2,3,7]
838 ; AVX2-FAST-NEXT:    vpermd %ymm6, %ymm8, %ymm6
839 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[2,6],zero,zero,zero,ymm6[3,7],zero,zero,zero,ymm6[8,12],zero,zero,zero,ymm6[9,17],zero,zero,zero,ymm6[22,18],zero,zero,zero,ymm6[23,19],zero,zero,zero,ymm6[24,28]
840 ; AVX2-FAST-NEXT:    vpor %ymm5, %ymm6, %ymm5
841 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = [1,1,2,2,2,2,2,2]
842 ; AVX2-FAST-NEXT:    vpermd %ymm4, %ymm6, %ymm6
843 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
844 ; AVX2-FAST-NEXT:    vpblendvb %ymm8, %ymm5, %ymm6, %ymm5
845 ; AVX2-FAST-NEXT:    vpunpckhbw {{.*#+}} xmm2 = xmm2[8],xmm3[8],xmm2[9],xmm3[9],xmm2[10],xmm3[10],xmm2[11],xmm3[11],xmm2[12],xmm3[12],xmm2[13],xmm3[13],xmm2[14],xmm3[14],xmm2[15],xmm3[15]
846 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[10,11],zero,zero,zero,xmm2[12,13],zero,zero,zero,xmm2[14,15],zero
847 ; AVX2-FAST-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
848 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
849 ; AVX2-FAST-NEXT:    vpor %xmm2, %xmm0, %xmm0
850 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[12],zero,zero,zero,zero,xmm4[13],zero,zero,zero,zero,xmm4[14],zero,zero,zero,zero,xmm4[15]
851 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm0, %xmm0
852 ; AVX2-FAST-NEXT:    vmovdqa %xmm0, 64(%r9)
853 ; AVX2-FAST-NEXT:    vmovdqa %ymm5, 32(%r9)
854 ; AVX2-FAST-NEXT:    vmovdqa %ymm7, (%r9)
855 ; AVX2-FAST-NEXT:    vzeroupper
856 ; AVX2-FAST-NEXT:    retq
858 ; AVX2-FAST-PERLANE-LABEL: store_i8_stride5_vf16:
859 ; AVX2-FAST-PERLANE:       # %bb.0:
860 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %xmm0
861 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %xmm1
862 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %xmm3
863 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %xmm4
864 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%r8), %xmm2
865 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
866 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm6
867 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm7 = ymm6[6],zero,zero,zero,zero,ymm6[7],zero,zero,zero,zero,ymm6[8],zero,zero,zero,zero,ymm6[9,25],zero,zero,zero,zero,ymm6[26],zero,zero,zero,zero,ymm6[27],zero,zero,zero,zero,ymm6[28]
868 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
869 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm8 = zero,ymm8[6],zero,zero,zero,zero,ymm8[7],zero,zero,zero,zero,ymm8[8],zero,zero,zero,zero,zero,zero,zero,zero,ymm8[26],zero,zero,zero,zero,ymm8[27],zero,zero,zero,zero,ymm8[28],zero
870 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm7, %ymm8, %ymm7
871 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,ymm5[7],zero,zero,zero,zero,ymm5[8],zero,zero,zero,zero,ymm5[9],zero,zero,zero,zero,zero,ymm5[26],zero,zero,zero,zero,ymm5[27],zero,zero,zero,zero,ymm5[28],zero,zero
872 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm5[2,3,0,1]
873 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm9 = zero,zero,zero,zero,ymm9[7],zero,zero,zero,zero,ymm9[8],zero,zero,zero,zero,ymm9[9],zero,zero,zero,ymm9[26],zero,zero,zero,zero,ymm9[27],zero,zero,zero,zero,ymm9[28],zero,zero,zero
874 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm8, %ymm9, %ymm8
875 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255>
876 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
877 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm8 = xmm2[1,1,2,2]
878 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,1,1]
879 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
880 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
881 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,0,2]
882 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,ymm6[0,8],zero,zero,zero,ymm6[1,9],zero,zero,zero,ymm6[2,10],zero,zero,zero,ymm6[19,27],zero,zero,zero,ymm6[20,28],zero,zero,zero,ymm6[21,29],zero,zero,zero
883 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,2,0]
884 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[0,8],zero,zero,zero,ymm5[1,9],zero,zero,zero,ymm5[2,10],zero,zero,zero,ymm5[3,19],zero,zero,zero,ymm5[28,20],zero,zero,zero,ymm5[29,21],zero,zero,zero,ymm5[30,22]
885 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm6, %ymm5, %ymm5
886 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm6 = xmm2[0,0,1,1]
887 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]
888 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
889 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm5, %ymm6, %ymm5
890 ; AVX2-FAST-PERLANE-NEXT:    vpunpckhbw {{.*#+}} xmm3 = xmm3[8],xmm4[8],xmm3[9],xmm4[9],xmm3[10],xmm4[10],xmm3[11],xmm4[11],xmm3[12],xmm4[12],xmm3[13],xmm4[13],xmm3[14],xmm4[14],xmm3[15],xmm4[15]
891 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[10,11],zero,zero,zero,xmm3[12,13],zero,zero,zero,xmm3[14,15],zero
892 ; AVX2-FAST-PERLANE-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
893 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
894 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm3, %xmm0, %xmm0
895 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm2[12],zero,zero,zero,zero,xmm2[13],zero,zero,zero,zero,xmm2[14],zero,zero,zero,zero,xmm2[15]
896 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm0, %xmm0
897 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm0, 64(%r9)
898 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm5, (%r9)
899 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm7, 32(%r9)
900 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
901 ; AVX2-FAST-PERLANE-NEXT:    retq
903 ; AVX512F-SLOW-LABEL: store_i8_stride5_vf16:
904 ; AVX512F-SLOW:       # %bb.0:
905 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %xmm0
906 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %xmm2
907 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %xmm3
908 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %xmm4
909 ; AVX512F-SLOW-NEXT:    vmovdqa (%r8), %xmm1
910 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm5
911 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm6
912 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = ymm6[u,u,u,7],zero,ymm6[u,u,u,8],zero,ymm6[u,u,u,9],zero,ymm6[u,u,u],zero,ymm6[26,u,u,u],zero,ymm6[27,u,u,u],zero,ymm6[28,u,u]
913 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
914 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[u,u,u],zero,ymm8[7,u,u,u],zero,ymm8[8,u,u,u],zero,ymm8[9,u,u,u,26],zero,ymm8[u,u,u,27],zero,ymm8[u,u,u,28],zero,ymm8[u,u]
915 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
916 ; AVX512F-SLOW-NEXT:    vpternlogq $50, %ymm7, %ymm9, %ymm8
917 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm5[0,2,0,2]
918 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,ymm7[0,8,u],zero,zero,ymm7[1,9,u],zero,zero,ymm7[2,10,u],zero,zero,ymm7[19,27,u],zero,zero,ymm7[20,28,u],zero,zero,ymm7[21,29,u],zero,zero
919 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
920 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm5[6],zero,ymm5[u,u,u,7],zero,ymm5[u,u,u,8],zero,ymm5[u,u,u,9,25,u,u,u],zero,ymm5[26,u,u,u],zero,ymm5[27,u,u,u],zero,ymm5[28]
921 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,3,0,1]
922 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = zero,ymm5[6,u,u,u],zero,ymm5[7,u,u,u],zero,ymm5[8,u,u,u],zero,zero,ymm5[u,u,u,26],zero,ymm5[u,u,u,27],zero,ymm5[u,u,u,28],zero
923 ; AVX512F-SLOW-NEXT:    vpternlogq $200, %ymm8, %ymm9, %ymm5
924 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
925 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[0,8],zero,zero,ymm6[u,1,9],zero,zero,ymm6[u,2,10],zero,zero,ymm6[u,3,19],zero,zero,ymm6[u,28,20],zero,zero,ymm6[u,29,21],zero,zero,ymm6[u,30,22]
926 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm5, %zmm6, %zmm5
927 ; AVX512F-SLOW-NEXT:    vporq %zmm7, %zmm5, %zmm5
928 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm6 = <u,0,0,0,0,u,1,1,1,1,u,2,2,2,2,u>
929 ; AVX512F-SLOW-NEXT:    vpermd %zmm1, %zmm6, %zmm6
930 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm6
931 ; AVX512F-SLOW-NEXT:    vpunpckhbw {{.*#+}} xmm3 = xmm3[8],xmm4[8],xmm3[9],xmm4[9],xmm3[10],xmm4[10],xmm3[11],xmm4[11],xmm3[12],xmm4[12],xmm3[13],xmm4[13],xmm3[14],xmm4[14],xmm3[15],xmm4[15]
932 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u],zero,zero,xmm3[10,11,u],zero,zero,xmm3[12,13,u],zero,zero,xmm3[14,15,u]
933 ; AVX512F-SLOW-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]
934 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,10,11],zero,zero,xmm0[u,12,13],zero,zero,xmm0[u,14,15],zero,zero,xmm0[u]
935 ; AVX512F-SLOW-NEXT:    vpor %xmm3, %xmm0, %xmm0
936 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[1,2,3,4],zero,xmm0[6,7,8,9],zero,xmm0[11,12,13,14],zero
937 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[12],zero,zero,zero,zero,xmm1[13],zero,zero,zero,zero,xmm1[14],zero,zero,zero,zero,xmm1[15]
938 ; AVX512F-SLOW-NEXT:    vpor %xmm1, %xmm0, %xmm0
939 ; AVX512F-SLOW-NEXT:    vmovdqa %xmm0, 64(%r9)
940 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm6, (%r9)
941 ; AVX512F-SLOW-NEXT:    vzeroupper
942 ; AVX512F-SLOW-NEXT:    retq
944 ; AVX512F-FAST-LABEL: store_i8_stride5_vf16:
945 ; AVX512F-FAST:       # %bb.0:
946 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %xmm1
947 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %xmm2
948 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %xmm3
949 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %xmm4
950 ; AVX512F-FAST-NEXT:    vmovdqa (%r8), %xmm0
951 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm5
952 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm6
953 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm6[0,2,0,2]
954 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,ymm7[0,8,u],zero,zero,ymm7[1,9,u],zero,zero,ymm7[2,10,u],zero,zero,ymm7[19,27,u],zero,zero,ymm7[20,28,u],zero,zero,ymm7[21,29,u],zero,zero
955 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [1,5,2,6,2,6,3,7]
956 ; AVX512F-FAST-NEXT:    vpermd %ymm5, %ymm8, %ymm8
957 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,ymm8[u,3,7],zero,zero,ymm8[u,8,12],zero,zero,ymm8[u,9,13],zero,zero,ymm8[u,18,22],zero,zero,ymm8[u,19,23],zero,zero,ymm8[u,24,28],zero,zero
958 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
959 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,2,0]
960 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[0,8],zero,zero,ymm5[u,1,9],zero,zero,ymm5[u,2,10],zero,zero,ymm5[u,3,19],zero,zero,ymm5[u,28,20],zero,zero,ymm5[u,29,21],zero,zero,ymm5[u,30,22]
961 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [1,5,2,6,6,2,3,7]
962 ; AVX512F-FAST-NEXT:    vpermd %ymm6, %ymm8, %ymm6
963 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[2,6,u],zero,zero,ymm6[3,7,u],zero,zero,ymm6[8,12,u],zero,zero,ymm6[9,17,u],zero,zero,ymm6[22,18,u],zero,zero,ymm6[23,19,u],zero,zero,ymm6[24,28]
964 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm6, %zmm5, %zmm5
965 ; AVX512F-FAST-NEXT:    vporq %zmm7, %zmm5, %zmm5
966 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm6
967 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm7 = <u,0,0,0,0,u,1,1,9,9,u,10,10,10,10,u>
968 ; AVX512F-FAST-NEXT:    vpermd %zmm6, %zmm7, %zmm6
969 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm6
970 ; AVX512F-FAST-NEXT:    vpunpckhbw {{.*#+}} xmm3 = xmm3[8],xmm4[8],xmm3[9],xmm4[9],xmm3[10],xmm4[10],xmm3[11],xmm4[11],xmm3[12],xmm4[12],xmm3[13],xmm4[13],xmm3[14],xmm4[14],xmm3[15],xmm4[15]
971 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u],zero,zero,xmm3[10,11,u],zero,zero,xmm3[12,13,u],zero,zero,xmm3[14,15,u]
972 ; AVX512F-FAST-NEXT:    vpunpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
973 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,10,11],zero,zero,xmm1[u,12,13],zero,zero,xmm1[u,14,15],zero,zero,xmm1[u]
974 ; AVX512F-FAST-NEXT:    vpor %xmm3, %xmm1, %xmm1
975 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero
976 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]
977 ; AVX512F-FAST-NEXT:    vpor %xmm0, %xmm1, %xmm0
978 ; AVX512F-FAST-NEXT:    vmovdqa %xmm0, 64(%r9)
979 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm6, (%r9)
980 ; AVX512F-FAST-NEXT:    vzeroupper
981 ; AVX512F-FAST-NEXT:    retq
983 ; AVX512BW-SLOW-LABEL: store_i8_stride5_vf16:
984 ; AVX512BW-SLOW:       # %bb.0:
985 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rdi), %xmm0
986 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rsi), %xmm1
987 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rdx), %xmm2
988 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rcx), %xmm3
989 ; AVX512BW-SLOW-NEXT:    vmovdqa (%r8), %xmm4
990 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm5
991 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm6
992 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,ymm6[7],zero,zero,zero,zero,ymm6[8],zero,zero,zero,zero,ymm6[9],zero,zero,zero,zero,zero,ymm6[26],zero,zero,zero,zero,ymm6[27],zero,zero,zero,zero,ymm6[28],zero,zero
993 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
994 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,ymm8[7],zero,zero,zero,zero,ymm8[8],zero,zero,zero,zero,ymm8[9],zero,zero,zero,ymm8[26],zero,zero,zero,zero,ymm8[27],zero,zero,zero,zero,ymm8[28],zero,zero,zero
995 ; AVX512BW-SLOW-NEXT:    vpor %ymm7, %ymm8, %ymm7
996 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm5[6],zero,zero,zero,zero,ymm5[7],zero,zero,zero,zero,ymm5[8],zero,zero,zero,zero,ymm5[9,25],zero,zero,zero,zero,ymm5[26],zero,zero,zero,zero,ymm5[27],zero,zero,zero,zero,ymm5[28]
997 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm5[2,3,0,1]
998 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 = zero,ymm9[6],zero,zero,zero,zero,ymm9[7],zero,zero,zero,zero,ymm9[8],zero,zero,zero,zero,zero,zero,zero,zero,ymm9[26],zero,zero,zero,zero,ymm9[27],zero,zero,zero,zero,ymm9[28],zero
999 ; AVX512BW-SLOW-NEXT:    vpor %ymm8, %ymm9, %ymm8
1000 ; AVX512BW-SLOW-NEXT:    movl $831283992, %eax # imm = 0x318C6318
1001 ; AVX512BW-SLOW-NEXT:    kmovd %eax, %k1
1002 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm7, %ymm8 {%k1}
1003 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
1004 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[0,8],zero,zero,zero,ymm6[1,9],zero,zero,zero,ymm6[2,10],zero,zero,zero,ymm6[3,19],zero,zero,zero,ymm6[28,20],zero,zero,zero,ymm6[29,21],zero,zero,zero,ymm6[30,22]
1005 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]
1006 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = zero,zero,ymm5[0,8],zero,zero,zero,ymm5[1,9],zero,zero,zero,ymm5[2,10],zero,zero,zero,ymm5[19,27],zero,zero,zero,ymm5[20,28],zero,zero,zero,ymm5[21,29],zero,zero,zero
1007 ; AVX512BW-SLOW-NEXT:    vpor %ymm6, %ymm5, %ymm5
1008 ; AVX512BW-SLOW-NEXT:    vinserti64x4 $1, %ymm8, %zmm5, %zmm5
1009 ; AVX512BW-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
1010 ; AVX512BW-SLOW-NEXT:    vpermd %zmm4, %zmm6, %zmm6
1011 ; AVX512BW-SLOW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
1012 ; AVX512BW-SLOW-NEXT:    kmovq %rax, %k1
1013 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %zmm6, %zmm5 {%k1}
1014 ; AVX512BW-SLOW-NEXT:    vpunpckhbw {{.*#+}} xmm2 = xmm2[8],xmm3[8],xmm2[9],xmm3[9],xmm2[10],xmm3[10],xmm2[11],xmm3[11],xmm2[12],xmm3[12],xmm2[13],xmm3[13],xmm2[14],xmm3[14],xmm2[15],xmm3[15]
1015 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[10,11],zero,zero,zero,xmm2[12,13],zero,zero,zero,xmm2[14,15],zero
1016 ; AVX512BW-SLOW-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
1017 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
1018 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[12],zero,zero,zero,zero,xmm4[13],zero,zero,zero,zero,xmm4[14],zero,zero,zero,zero,xmm4[15]
1019 ; AVX512BW-SLOW-NEXT:    vpternlogq $254, %xmm2, %xmm0, %xmm1
1020 ; AVX512BW-SLOW-NEXT:    vmovdqa %xmm1, 64(%r9)
1021 ; AVX512BW-SLOW-NEXT:    vmovdqa64 %zmm5, (%r9)
1022 ; AVX512BW-SLOW-NEXT:    vzeroupper
1023 ; AVX512BW-SLOW-NEXT:    retq
1025 ; AVX512BW-FAST-LABEL: store_i8_stride5_vf16:
1026 ; AVX512BW-FAST:       # %bb.0:
1027 ; AVX512BW-FAST-NEXT:    vmovdqa (%rdi), %xmm0
1028 ; AVX512BW-FAST-NEXT:    vmovdqa (%rsi), %xmm1
1029 ; AVX512BW-FAST-NEXT:    vmovdqa (%rdx), %xmm2
1030 ; AVX512BW-FAST-NEXT:    vmovdqa (%rcx), %xmm3
1031 ; AVX512BW-FAST-NEXT:    vmovdqa (%r8), %xmm4
1032 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
1033 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm6
1034 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = [1,5,2,6,6,2,3,7]
1035 ; AVX512BW-FAST-NEXT:    vpermd %ymm6, %ymm7, %ymm7
1036 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm5[0,2,2,0]
1037 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm8, %zmm7
1038 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} zmm7 = zmm7[0,8],zero,zero,zero,zmm7[1,9],zero,zero,zero,zmm7[2,10],zero,zero,zero,zmm7[3,19],zero,zero,zero,zmm7[28,20],zero,zero,zero,zmm7[29,21],zero,zero,zero,zmm7[30,22,34,38],zero,zero,zero,zmm7[35,39],zero,zero,zero,zmm7[40,44],zero,zero,zero,zmm7[41,49],zero,zero,zero,zmm7[54,50],zero,zero,zero,zmm7[55,51],zero,zero,zero,zmm7[56,60]
1039 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [1,5,2,6,2,6,3,7]
1040 ; AVX512BW-FAST-NEXT:    vpermd %ymm5, %ymm8, %ymm5
1041 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,0,2]
1042 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm5, %zmm6, %zmm5
1043 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} zmm5 = zero,zero,zmm5[0,8],zero,zero,zero,zmm5[1,9],zero,zero,zero,zmm5[2,10],zero,zero,zero,zmm5[19,27],zero,zero,zero,zmm5[20,28],zero,zero,zero,zmm5[21,29],zero,zero,zero,zero,zero,zero,zmm5[35,39],zero,zero,zero,zmm5[40,44],zero,zero,zero,zmm5[41,45],zero,zero,zero,zmm5[50,54],zero,zero,zero,zmm5[51,55],zero,zero,zero,zmm5[56,60],zero,zero
1044 ; AVX512BW-FAST-NEXT:    vporq %zmm7, %zmm5, %zmm5
1045 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm4, %zmm4, %zmm6
1046 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]
1047 ; AVX512BW-FAST-NEXT:    vpermd %zmm6, %zmm7, %zmm6
1048 ; AVX512BW-FAST-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
1049 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k1
1050 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm6, %zmm5 {%k1}
1051 ; AVX512BW-FAST-NEXT:    vpunpckhbw {{.*#+}} xmm2 = xmm2[8],xmm3[8],xmm2[9],xmm3[9],xmm2[10],xmm3[10],xmm2[11],xmm3[11],xmm2[12],xmm3[12],xmm2[13],xmm3[13],xmm2[14],xmm3[14],xmm2[15],xmm3[15]
1052 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[10,11],zero,zero,zero,xmm2[12,13],zero,zero,zero,xmm2[14,15],zero
1053 ; AVX512BW-FAST-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
1054 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
1055 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[12],zero,zero,zero,zero,xmm4[13],zero,zero,zero,zero,xmm4[14],zero,zero,zero,zero,xmm4[15]
1056 ; AVX512BW-FAST-NEXT:    vpternlogq $254, %xmm2, %xmm0, %xmm1
1057 ; AVX512BW-FAST-NEXT:    vmovdqa %xmm1, 64(%r9)
1058 ; AVX512BW-FAST-NEXT:    vmovdqa64 %zmm5, (%r9)
1059 ; AVX512BW-FAST-NEXT:    vzeroupper
1060 ; AVX512BW-FAST-NEXT:    retq
1061   %in.vec0 = load <16 x i8>, ptr %in.vecptr0, align 64
1062   %in.vec1 = load <16 x i8>, ptr %in.vecptr1, align 64
1063   %in.vec2 = load <16 x i8>, ptr %in.vecptr2, align 64
1064   %in.vec3 = load <16 x i8>, ptr %in.vecptr3, align 64
1065   %in.vec4 = load <16 x i8>, ptr %in.vecptr4, align 64
1066   %1 = shufflevector <16 x i8> %in.vec0, <16 x i8> %in.vec1, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
1067   %2 = shufflevector <16 x i8> %in.vec2, <16 x i8> %in.vec3, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
1068   %3 = shufflevector <32 x i8> %1, <32 x i8> %2, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>
1069   %4 = shufflevector <16 x i8> %in.vec4, <16 x i8> poison, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
1070   %5 = shufflevector <64 x i8> %3, <64 x i8> %4, <80 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79>
1071   %interleaved.vec = shufflevector <80 x i8> %5, <80 x i8> poison, <80 x i32> <i32 0, i32 16, i32 32, i32 48, i32 64, i32 1, i32 17, i32 33, i32 49, i32 65, i32 2, i32 18, i32 34, i32 50, i32 66, i32 3, i32 19, i32 35, i32 51, i32 67, i32 4, i32 20, i32 36, i32 52, i32 68, i32 5, i32 21, i32 37, i32 53, i32 69, i32 6, i32 22, i32 38, i32 54, i32 70, i32 7, i32 23, i32 39, i32 55, i32 71, i32 8, i32 24, i32 40, i32 56, i32 72, i32 9, i32 25, i32 41, i32 57, i32 73, i32 10, i32 26, i32 42, i32 58, i32 74, i32 11, i32 27, i32 43, i32 59, i32 75, i32 12, i32 28, i32 44, i32 60, i32 76, i32 13, i32 29, i32 45, i32 61, i32 77, i32 14, i32 30, i32 46, i32 62, i32 78, i32 15, i32 31, i32 47, i32 63, i32 79>
1072   store <80 x i8> %interleaved.vec, ptr %out.vec, align 64
1073   ret void
1076 define void @store_i8_stride5_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
1077 ; SSE-LABEL: store_i8_stride5_vf32:
1078 ; SSE:       # %bb.0:
1079 ; SSE-NEXT:    subq $152, %rsp
1080 ; SSE-NEXT:    movdqa 16(%rdi), %xmm3
1081 ; SSE-NEXT:    movdqa (%rsi), %xmm9
1082 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1083 ; SSE-NEXT:    movdqa 16(%rsi), %xmm7
1084 ; SSE-NEXT:    movdqa (%rdx), %xmm2
1085 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1086 ; SSE-NEXT:    movdqa 16(%rdx), %xmm0
1087 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1088 ; SSE-NEXT:    movdqa (%rcx), %xmm11
1089 ; SSE-NEXT:    movdqa 16(%rcx), %xmm12
1090 ; SSE-NEXT:    movdqa 16(%r8), %xmm14
1091 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
1092 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1093 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
1094 ; SSE-NEXT:    pand %xmm13, %xmm0
1095 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm12[2,1,2,3]
1096 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1097 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]
1098 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1099 ; SSE-NEXT:    movdqa %xmm13, %xmm4
1100 ; SSE-NEXT:    pandn %xmm1, %xmm4
1101 ; SSE-NEXT:    por %xmm0, %xmm4
1102 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
1103 ; SSE-NEXT:    pand %xmm8, %xmm4
1104 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[1,1,2,2]
1105 ; SSE-NEXT:    movdqa %xmm3, %xmm15
1106 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
1107 ; SSE-NEXT:    pand %xmm3, %xmm0
1108 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[0,1,2,1]
1109 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
1110 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1111 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,0,3,4,5,6,7]
1112 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,1,0]
1113 ; SSE-NEXT:    movdqa %xmm3, %xmm5
1114 ; SSE-NEXT:    pandn %xmm1, %xmm5
1115 ; SSE-NEXT:    por %xmm0, %xmm5
1116 ; SSE-NEXT:    movdqa %xmm8, %xmm0
1117 ; SSE-NEXT:    pandn %xmm5, %xmm0
1118 ; SSE-NEXT:    por %xmm4, %xmm0
1119 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
1120 ; SSE-NEXT:    pand %xmm10, %xmm0
1121 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm14[1,1,2,2]
1122 ; SSE-NEXT:    movdqa %xmm10, %xmm4
1123 ; SSE-NEXT:    pandn %xmm1, %xmm4
1124 ; SSE-NEXT:    por %xmm0, %xmm4
1125 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1126 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm2[3,3,3,3,4,5,6,7]
1127 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1128 ; SSE-NEXT:    pand %xmm13, %xmm0
1129 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm11[2,1,2,3]
1130 ; SSE-NEXT:    movdqa %xmm11, %xmm2
1131 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1132 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]
1133 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1134 ; SSE-NEXT:    movdqa %xmm13, %xmm4
1135 ; SSE-NEXT:    pandn %xmm1, %xmm4
1136 ; SSE-NEXT:    por %xmm0, %xmm4
1137 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm9[0,1,2,1]
1138 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
1139 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1140 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
1141 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]
1142 ; SSE-NEXT:    movdqa %xmm3, %xmm1
1143 ; SSE-NEXT:    pandn %xmm0, %xmm1
1144 ; SSE-NEXT:    movdqa (%rdi), %xmm0
1145 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1146 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
1147 ; SSE-NEXT:    pand %xmm3, %xmm0
1148 ; SSE-NEXT:    por %xmm0, %xmm1
1149 ; SSE-NEXT:    movdqa %xmm8, %xmm0
1150 ; SSE-NEXT:    pandn %xmm1, %xmm0
1151 ; SSE-NEXT:    pand %xmm8, %xmm4
1152 ; SSE-NEXT:    por %xmm4, %xmm0
1153 ; SSE-NEXT:    movdqa (%r8), %xmm1
1154 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1155 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
1156 ; SSE-NEXT:    movdqa %xmm10, %xmm4
1157 ; SSE-NEXT:    pandn %xmm1, %xmm4
1158 ; SSE-NEXT:    pand %xmm10, %xmm0
1159 ; SSE-NEXT:    por %xmm0, %xmm4
1160 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1161 ; SSE-NEXT:    movdqa %xmm7, %xmm11
1162 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1163 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm7[8],xmm0[9],xmm7[9],xmm0[10],xmm7[10],xmm0[11],xmm7[11],xmm0[12],xmm7[12],xmm0[13],xmm7[13],xmm0[14],xmm7[14],xmm0[15],xmm7[15]
1164 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1165 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
1166 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]
1167 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,4,7]
1168 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
1169 ; SSE-NEXT:    movdqa %xmm9, %xmm4
1170 ; SSE-NEXT:    pandn %xmm0, %xmm4
1171 ; SSE-NEXT:    movdqa %xmm15, %xmm6
1172 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1173 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm15[2,2,3,3]
1174 ; SSE-NEXT:    pand %xmm9, %xmm0
1175 ; SSE-NEXT:    por %xmm0, %xmm4
1176 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
1177 ; SSE-NEXT:    movdqa %xmm8, %xmm0
1178 ; SSE-NEXT:    pandn %xmm4, %xmm0
1179 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1180 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm7[0,1,2,3,5,6,6,7]
1181 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,2,2,2]
1182 ; SSE-NEXT:    movdqa %xmm3, %xmm5
1183 ; SSE-NEXT:    pandn %xmm4, %xmm5
1184 ; SSE-NEXT:    movdqa %xmm12, %xmm15
1185 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm15 = xmm15[8],xmm12[8],xmm15[9],xmm12[9],xmm15[10],xmm12[10],xmm15[11],xmm12[11],xmm15[12],xmm12[12],xmm15[13],xmm12[13],xmm15[14],xmm12[14],xmm15[15],xmm12[15]
1186 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm15[0,1,2,1]
1187 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,1,2,3,4,5,6,7]
1188 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,7,6,4]
1189 ; SSE-NEXT:    pand %xmm3, %xmm4
1190 ; SSE-NEXT:    por %xmm5, %xmm4
1191 ; SSE-NEXT:    pand %xmm8, %xmm4
1192 ; SSE-NEXT:    por %xmm0, %xmm4
1193 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1194 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm14[2,2,2,2]
1195 ; SSE-NEXT:    movdqa %xmm13, %xmm1
1196 ; SSE-NEXT:    pandn %xmm0, %xmm1
1197 ; SSE-NEXT:    pand %xmm13, %xmm4
1198 ; SSE-NEXT:    por %xmm4, %xmm1
1199 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1200 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm12 = xmm12[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1201 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1202 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm12[2,1,2,3]
1203 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,0,4,5,6,7]
1204 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
1205 ; SSE-NEXT:    movdqa %xmm10, %xmm4
1206 ; SSE-NEXT:    pandn %xmm0, %xmm4
1207 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm7[1,2,2,3,4,5,6,7]
1208 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
1209 ; SSE-NEXT:    pand %xmm10, %xmm0
1210 ; SSE-NEXT:    por %xmm0, %xmm4
1211 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
1212 ; SSE-NEXT:    movdqa %xmm1, %xmm5
1213 ; SSE-NEXT:    pandn %xmm4, %xmm5
1214 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[1,1,1,1]
1215 ; SSE-NEXT:    movdqa %xmm3, %xmm7
1216 ; SSE-NEXT:    pandn %xmm4, %xmm7
1217 ; SSE-NEXT:    movdqa %xmm11, %xmm0
1218 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm11[0],xmm0[1],xmm11[1],xmm0[2],xmm11[2],xmm0[3],xmm11[3],xmm0[4],xmm11[4],xmm0[5],xmm11[5],xmm0[6],xmm11[6],xmm0[7],xmm11[7]
1219 ; SSE-NEXT:    movdqa %xmm0, (%rsp) # 16-byte Spill
1220 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm0[2,1,2,3]
1221 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[3,1,0,3,4,5,6,7]
1222 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,6]
1223 ; SSE-NEXT:    pand %xmm3, %xmm4
1224 ; SSE-NEXT:    por %xmm7, %xmm4
1225 ; SSE-NEXT:    pand %xmm1, %xmm4
1226 ; SSE-NEXT:    por %xmm5, %xmm4
1227 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm14[0,0,1,1]
1228 ; SSE-NEXT:    movdqa %xmm9, %xmm0
1229 ; SSE-NEXT:    pandn %xmm5, %xmm0
1230 ; SSE-NEXT:    pand %xmm9, %xmm4
1231 ; SSE-NEXT:    por %xmm4, %xmm0
1232 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1233 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
1234 ; SSE-NEXT:    movdqa %xmm11, %xmm0
1235 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm11[8],xmm0[9],xmm11[9],xmm0[10],xmm11[10],xmm0[11],xmm11[11],xmm0[12],xmm11[12],xmm0[13],xmm11[13],xmm0[14],xmm11[14],xmm0[15],xmm11[15]
1236 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1237 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm0[0,1,2,1]
1238 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]
1239 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,7,5,4,7]
1240 ; SSE-NEXT:    movdqa %xmm9, %xmm5
1241 ; SSE-NEXT:    pandn %xmm4, %xmm5
1242 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
1243 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[2,2,3,3]
1244 ; SSE-NEXT:    pand %xmm9, %xmm4
1245 ; SSE-NEXT:    por %xmm4, %xmm5
1246 ; SSE-NEXT:    movdqa %xmm8, %xmm4
1247 ; SSE-NEXT:    pandn %xmm5, %xmm4
1248 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1249 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm0[0,1,2,3,5,6,6,7]
1250 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,2,2,2]
1251 ; SSE-NEXT:    movdqa %xmm3, %xmm7
1252 ; SSE-NEXT:    pandn %xmm5, %xmm7
1253 ; SSE-NEXT:    movdqa %xmm2, %xmm12
1254 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm12 = xmm12[8],xmm2[8],xmm12[9],xmm2[9],xmm12[10],xmm2[10],xmm12[11],xmm2[11],xmm12[12],xmm2[12],xmm12[13],xmm2[13],xmm12[14],xmm2[14],xmm12[15],xmm2[15]
1255 ; SSE-NEXT:    pshufd {{.*#+}} xmm14 = xmm12[0,1,2,1]
1256 ; SSE-NEXT:    pshuflw {{.*#+}} xmm14 = xmm14[1,1,2,3,4,5,6,7]
1257 ; SSE-NEXT:    pshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,7,6,4]
1258 ; SSE-NEXT:    pand %xmm3, %xmm14
1259 ; SSE-NEXT:    por %xmm7, %xmm14
1260 ; SSE-NEXT:    pand %xmm8, %xmm14
1261 ; SSE-NEXT:    por %xmm4, %xmm14
1262 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1263 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[2,2,2,2]
1264 ; SSE-NEXT:    movdqa %xmm13, %xmm7
1265 ; SSE-NEXT:    pandn %xmm4, %xmm7
1266 ; SSE-NEXT:    pand %xmm13, %xmm14
1267 ; SSE-NEXT:    por %xmm14, %xmm7
1268 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1269 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1270 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1271 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm2[2,1,2,3]
1272 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,0,4,5,6,7]
1273 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,5,5,5]
1274 ; SSE-NEXT:    movdqa %xmm10, %xmm14
1275 ; SSE-NEXT:    pandn %xmm4, %xmm14
1276 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm0[1,2,2,3,4,5,6,7]
1277 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,0,0,0]
1278 ; SSE-NEXT:    pand %xmm10, %xmm4
1279 ; SSE-NEXT:    por %xmm4, %xmm14
1280 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[1,1,1,1]
1281 ; SSE-NEXT:    movdqa %xmm3, %xmm2
1282 ; SSE-NEXT:    pandn %xmm4, %xmm2
1283 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm11 = xmm11[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1284 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1285 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm11[2,1,2,3]
1286 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[3,1,0,3,4,5,6,7]
1287 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,6]
1288 ; SSE-NEXT:    pand %xmm3, %xmm4
1289 ; SSE-NEXT:    por %xmm2, %xmm4
1290 ; SSE-NEXT:    pand %xmm1, %xmm4
1291 ; SSE-NEXT:    pandn %xmm14, %xmm1
1292 ; SSE-NEXT:    por %xmm4, %xmm1
1293 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm5[0,0,1,1]
1294 ; SSE-NEXT:    movdqa %xmm9, %xmm7
1295 ; SSE-NEXT:    pandn %xmm2, %xmm7
1296 ; SSE-NEXT:    pand %xmm9, %xmm1
1297 ; SSE-NEXT:    por %xmm1, %xmm7
1298 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm15[0,1,2,3,5,7,6,7]
1299 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,3,2]
1300 ; SSE-NEXT:    movdqa %xmm3, %xmm2
1301 ; SSE-NEXT:    pandn %xmm0, %xmm2
1302 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1303 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm5[0,1,2,3,7,6,6,7]
1304 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,2,2,2]
1305 ; SSE-NEXT:    pand %xmm3, %xmm0
1306 ; SSE-NEXT:    por %xmm0, %xmm2
1307 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
1308 ; SSE-NEXT:    movdqa %xmm6, %xmm0
1309 ; SSE-NEXT:    pandn %xmm2, %xmm0
1310 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
1311 ; SSE-NEXT:    # xmm2 = mem[0,1,2,3,7,5,6,6]
1312 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,3,2,2]
1313 ; SSE-NEXT:    movdqa %xmm10, %xmm14
1314 ; SSE-NEXT:    pandn %xmm2, %xmm14
1315 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1316 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[3,3,3,3]
1317 ; SSE-NEXT:    pand %xmm10, %xmm2
1318 ; SSE-NEXT:    por %xmm2, %xmm14
1319 ; SSE-NEXT:    pand %xmm6, %xmm14
1320 ; SSE-NEXT:    por %xmm0, %xmm14
1321 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
1322 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1323 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
1324 ; SSE-NEXT:    movdqa %xmm11, %xmm15
1325 ; SSE-NEXT:    pandn %xmm0, %xmm15
1326 ; SSE-NEXT:    pand %xmm11, %xmm14
1327 ; SSE-NEXT:    por %xmm14, %xmm15
1328 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
1329 ; SSE-NEXT:    # xmm0 = mem[1,0,2,3,4,5,6,7]
1330 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
1331 ; SSE-NEXT:    movdqa %xmm9, %xmm2
1332 ; SSE-NEXT:    pandn %xmm0, %xmm2
1333 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm5[1,0,2,3,4,5,6,7]
1334 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
1335 ; SSE-NEXT:    pand %xmm9, %xmm0
1336 ; SSE-NEXT:    por %xmm0, %xmm2
1337 ; SSE-NEXT:    movdqa %xmm8, %xmm0
1338 ; SSE-NEXT:    pandn %xmm2, %xmm0
1339 ; SSE-NEXT:    pshuflw $164, (%rsp), %xmm2 # 16-byte Folded Reload
1340 ; SSE-NEXT:    # xmm2 = mem[0,1,2,2,4,5,6,7]
1341 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,1,3]
1342 ; SSE-NEXT:    movdqa %xmm13, %xmm14
1343 ; SSE-NEXT:    pandn %xmm2, %xmm14
1344 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[0,0,0,0]
1345 ; SSE-NEXT:    pand %xmm13, %xmm2
1346 ; SSE-NEXT:    por %xmm2, %xmm14
1347 ; SSE-NEXT:    pand %xmm8, %xmm14
1348 ; SSE-NEXT:    por %xmm0, %xmm14
1349 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[0,0,0,0]
1350 ; SSE-NEXT:    movdqa %xmm3, %xmm0
1351 ; SSE-NEXT:    pandn %xmm2, %xmm0
1352 ; SSE-NEXT:    pand %xmm3, %xmm14
1353 ; SSE-NEXT:    por %xmm14, %xmm0
1354 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm12[0,1,2,3,5,7,6,7]
1355 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,3,2]
1356 ; SSE-NEXT:    movdqa %xmm3, %xmm5
1357 ; SSE-NEXT:    pandn %xmm2, %xmm5
1358 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1359 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm4[0,1,2,3,7,6,6,7]
1360 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,2,2,2]
1361 ; SSE-NEXT:    pand %xmm3, %xmm2
1362 ; SSE-NEXT:    por %xmm2, %xmm5
1363 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
1364 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm14[3,3,3,3]
1365 ; SSE-NEXT:    pand %xmm10, %xmm2
1366 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
1367 ; SSE-NEXT:    # xmm12 = mem[0,1,2,3,7,5,6,6]
1368 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm12[2,3,2,2]
1369 ; SSE-NEXT:    pandn %xmm12, %xmm10
1370 ; SSE-NEXT:    por %xmm2, %xmm10
1371 ; SSE-NEXT:    movdqa %xmm6, %xmm1
1372 ; SSE-NEXT:    pand %xmm6, %xmm10
1373 ; SSE-NEXT:    pandn %xmm5, %xmm1
1374 ; SSE-NEXT:    por %xmm10, %xmm1
1375 ; SSE-NEXT:    pand %xmm11, %xmm1
1376 ; SSE-NEXT:    movdqa %xmm1, %xmm5
1377 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1378 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[3,3,3,3]
1379 ; SSE-NEXT:    pandn %xmm2, %xmm11
1380 ; SSE-NEXT:    por %xmm5, %xmm11
1381 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm4[1,0,2,3,4,5,6,7]
1382 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]
1383 ; SSE-NEXT:    pand %xmm9, %xmm2
1384 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
1385 ; SSE-NEXT:    # xmm5 = mem[1,0,2,3,4,5,6,7]
1386 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]
1387 ; SSE-NEXT:    pandn %xmm5, %xmm9
1388 ; SSE-NEXT:    por %xmm2, %xmm9
1389 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm14[0,0,0,0]
1390 ; SSE-NEXT:    pand %xmm13, %xmm2
1391 ; SSE-NEXT:    pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
1392 ; SSE-NEXT:    # xmm5 = mem[0,1,2,2,4,5,6,7]
1393 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,1,3]
1394 ; SSE-NEXT:    pandn %xmm5, %xmm13
1395 ; SSE-NEXT:    por %xmm2, %xmm13
1396 ; SSE-NEXT:    pand %xmm8, %xmm13
1397 ; SSE-NEXT:    pandn %xmm9, %xmm8
1398 ; SSE-NEXT:    por %xmm13, %xmm8
1399 ; SSE-NEXT:    pand %xmm3, %xmm8
1400 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[0,0,0,0]
1401 ; SSE-NEXT:    pandn %xmm2, %xmm3
1402 ; SSE-NEXT:    por %xmm8, %xmm3
1403 ; SSE-NEXT:    movdqa %xmm3, (%r9)
1404 ; SSE-NEXT:    movdqa %xmm11, 64(%r9)
1405 ; SSE-NEXT:    movdqa %xmm0, 80(%r9)
1406 ; SSE-NEXT:    movdqa %xmm15, 144(%r9)
1407 ; SSE-NEXT:    movdqa %xmm7, 16(%r9)
1408 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1409 ; SSE-NEXT:    movaps %xmm0, 48(%r9)
1410 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1411 ; SSE-NEXT:    movaps %xmm0, 96(%r9)
1412 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1413 ; SSE-NEXT:    movaps %xmm0, 128(%r9)
1414 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1415 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
1416 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1417 ; SSE-NEXT:    movaps %xmm0, 112(%r9)
1418 ; SSE-NEXT:    addq $152, %rsp
1419 ; SSE-NEXT:    retq
1421 ; AVX1-ONLY-LABEL: store_i8_stride5_vf32:
1422 ; AVX1-ONLY:       # %bb.0:
1423 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rsi), %xmm10
1424 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm11
1425 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm11[8],xmm10[8],xmm11[9],xmm10[9],xmm11[10],xmm10[10],xmm11[11],xmm10[11],xmm11[12],xmm10[12],xmm11[13],xmm10[13],xmm11[14],xmm10[14],xmm11[15],xmm10[15]
1426 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = [0,10,11,14,15,0,12,13,0,10,11,14,15,0,12,13]
1427 ; AVX1-ONLY-NEXT:    # xmm5 = mem[0,0]
1428 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm0, %xmm1
1429 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]
1430 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1431 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm1 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
1432 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm1, %ymm2
1433 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, %ymm7
1434 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rcx), %xmm0
1435 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdx), %xmm1
1436 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm3 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]
1437 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [12,13,0,10,11,14,15,0,12,13,0,10,11,14,15,0]
1438 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
1439 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm3, %xmm3
1440 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm6 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
1441 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]
1442 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm6, %ymm3
1443 ; AVX1-ONLY-NEXT:    vandps %ymm7, %ymm3, %ymm3
1444 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm3, %ymm2
1445 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm3
1446 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,xmm3[1,2,3,4],zero,xmm3[6,7,8,9],zero,xmm3[11,12,13,14],zero
1447 ; AVX1-ONLY-NEXT:    vmovdqa 16(%r8), %xmm15
1448 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm12 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15]
1449 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm15, %xmm6
1450 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm3, %xmm3
1451 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1452 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0],zero,xmm2[2,3,4,5],zero,xmm2[7,8,9,10],zero,xmm2[12,13,14,15]
1453 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,xmm15[9],zero,zero,zero,zero,xmm15[10],zero,zero,zero,zero,xmm15[11],zero,zero,zero,zero
1454 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm2, %xmm2
1455 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1456 ; AVX1-ONLY-NEXT:    vmovdqa (%rcx), %xmm7
1457 ; AVX1-ONLY-NEXT:    vmovdqa (%rdx), %xmm8
1458 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm2 = xmm8[8],xmm7[8],xmm8[9],xmm7[9],xmm8[10],xmm7[10],xmm8[11],xmm7[11],xmm8[12],xmm7[12],xmm8[13],xmm7[13],xmm8[14],xmm7[14],xmm8[15],xmm7[15]
1459 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
1460 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm6 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1461 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm6[u,u,0,1,u,u,u,2,3,u,u,u,4,5,u,u]
1462 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm2, %ymm14
1463 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm11[0],xmm10[0],xmm11[1],xmm10[1],xmm11[2],xmm10[2],xmm11[3],xmm10[3],xmm11[4],xmm10[4],xmm11[5],xmm10[5],xmm11[6],xmm10[6],xmm11[7],xmm10[7]
1464 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm2[0,1,u,u,u,2,3,u,u,u,4,5,u,u,u,6]
1465 ; AVX1-ONLY-NEXT:    vmovdqa (%rsi), %xmm2
1466 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm3
1467 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm4 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15]
1468 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1469 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm4, %xmm5
1470 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm13, %ymm5, %ymm5
1471 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm13 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
1472 ; AVX1-ONLY-NEXT:    vandnps %ymm14, %ymm13, %ymm14
1473 ; AVX1-ONLY-NEXT:    vandps %ymm5, %ymm13, %ymm5
1474 ; AVX1-ONLY-NEXT:    vorps %ymm5, %ymm14, %ymm5
1475 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm5, %xmm14
1476 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[0,1,2,3],zero,xmm14[5,6,7,8],zero,xmm14[10,11,12,13],zero,xmm14[15]
1477 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,zero,zero,xmm15[0],zero,zero,zero,zero,xmm15[1],zero,zero,zero,zero,xmm15[2],zero
1478 ; AVX1-ONLY-NEXT:    vpor %xmm9, %xmm14, %xmm4
1479 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1480 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,xmm5[1,2,3,4],zero,xmm5[6,7,8,9],zero,xmm5[11,12,13,14],zero
1481 ; AVX1-ONLY-NEXT:    vmovdqa (%r8), %xmm14
1482 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm14, %xmm9
1483 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm9, %xmm4
1484 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1485 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[6,u,u,u],zero,xmm0[7,u,u,u],zero,xmm0[8,u,u,u],zero
1486 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6],zero,xmm1[u,u,u,7],zero,xmm1[u,u,u,8],zero,xmm1[u,u,u,9]
1487 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm1
1488 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm9 = [0,6,7,10,11,0,8,9,0,6,7,10,11,0,8,9]
1489 ; AVX1-ONLY-NEXT:    # xmm9 = mem[0,0]
1490 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm6, %xmm5
1491 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm5, %ymm1
1492 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm10[u,u,u],zero,xmm10[7,u,u,u],zero,xmm10[8,u,u,u],zero,xmm10[9,u]
1493 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [8,128,0,7,128,9,128,0,8,128,0,7,128,9,128,0]
1494 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
1495 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm11, %xmm12
1496 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm12, %xmm5
1497 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3],xmm10[4],xmm11[4],xmm10[5],xmm11[5],xmm10[6],xmm11[6],xmm10[7],xmm11[7]
1498 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm12 = [6,11,10,0,9,8,13,12,6,11,10,0,9,8,13,12]
1499 ; AVX1-ONLY-NEXT:    # xmm12 = mem[0,0]
1500 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm10, %xmm10
1501 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm10, %ymm5
1502 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm10 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]
1503 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm10, %ymm1
1504 ; AVX1-ONLY-NEXT:    vandps %ymm5, %ymm10, %ymm5
1505 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm5, %ymm5
1506 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm10 = [0,1,2,128,4,5,6,7,128,9,10,11,12,128,14,15]
1507 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm5, %xmm1
1508 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm4 = [128,128,128,3,128,128,128,128,4,128,128,128,128,5,128,128]
1509 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm15, %xmm11
1510 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm11, %xmm1
1511 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm5, %xmm5
1512 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm11 = [0,1,128,3,4,5,6,128,8,9,10,11,128,13,14,15]
1513 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm5, %xmm0
1514 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm5 = [128,128,6,128,128,128,128,7,128,128,128,128,8,128,128,128]
1515 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm15, %xmm15
1516 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm15, %xmm15
1517 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm0 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]
1518 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm0, %xmm9
1519 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,0,1,u,u,u,2,3,u,u,u,4,5,u,u]
1520 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm9, %ymm0, %ymm0
1521 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm9 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
1522 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm9, %xmm9
1523 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm12 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
1524 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[0,1,u,u,u,2,3,u,u,u,4,5,u,u,u,6]
1525 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm9, %ymm12, %ymm9
1526 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm12 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
1527 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm12, %ymm0
1528 ; AVX1-ONLY-NEXT:    vandps %ymm12, %ymm9, %ymm9
1529 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm9, %ymm9
1530 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm9, %xmm0
1531 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm0, %xmm0
1532 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm14, %xmm4
1533 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm0, %xmm0
1534 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm9[0,1,2,3],zero,xmm9[5,6,7,8],zero,xmm9[10,11,12,13],zero,xmm9[15]
1535 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,zero,zero,xmm14[0],zero,zero,zero,zero,xmm14[1],zero,zero,zero,zero,xmm14[2],zero
1536 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm9, %xmm4
1537 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u],zero,xmm2[7,u,u,u],zero,xmm2[8,u,u,u],zero,xmm2[9,u]
1538 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm3, %xmm3
1539 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
1540 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
1541 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]
1542 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm2, %ymm2
1543 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,xmm7[6,u,u,u],zero,xmm7[7,u,u,u],zero,xmm7[8,u,u,u],zero
1544 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm8[6],zero,xmm8[u,u,u,7],zero,xmm8[u,u,u,8],zero,xmm8[u,u,u,9]
1545 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm6, %xmm3
1546 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm6 = xmm7[8],xmm8[8],xmm7[9],xmm8[9],xmm7[10],xmm8[10],xmm7[11],xmm8[11],xmm7[12],xmm8[12],xmm7[13],xmm8[13],xmm7[14],xmm8[14],xmm7[15],xmm8[15]
1547 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]
1548 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm3, %ymm3
1549 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm13, %ymm2
1550 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm13, %ymm3
1551 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm3, %ymm2
1552 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm2, %xmm3
1553 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm14, %xmm5
1554 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm3, %xmm3
1555 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm2
1556 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0],zero,xmm2[2,3,4,5],zero,xmm2[7,8,9,10],zero,xmm2[12,13,14,15]
1557 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,xmm14[9],zero,zero,zero,zero,xmm14[10],zero,zero,zero,zero,xmm14[11],zero,zero,zero,zero
1558 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm2, %xmm2
1559 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, 48(%r9)
1560 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, 32(%r9)
1561 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, (%r9)
1562 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, 16(%r9)
1563 ; AVX1-ONLY-NEXT:    vmovdqa %xmm15, 112(%r9)
1564 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, 96(%r9)
1565 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1566 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 64(%r9)
1567 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1568 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 80(%r9)
1569 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1570 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 128(%r9)
1571 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1572 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 144(%r9)
1573 ; AVX1-ONLY-NEXT:    vzeroupper
1574 ; AVX1-ONLY-NEXT:    retq
1576 ; AVX2-SLOW-LABEL: store_i8_stride5_vf32:
1577 ; AVX2-SLOW:       # %bb.0:
1578 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %ymm3
1579 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %ymm4
1580 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %ymm1
1581 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %ymm2
1582 ; AVX2-SLOW-NEXT:    vmovdqa (%r8), %ymm0
1583 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,u,27,u,u,26,u,28,u,30,u,u,29,u,31,u]
1584 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm6 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
1585 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm6 = ymm6[2,2,3,3,6,6,7,7]
1586 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [255,0,255,0,0,255,0,255,0,255,0,0,255,0,255,0,255,0,255,0,0,255,0,255,0,255,0,0,255,0,255,0]
1587 ; AVX2-SLOW-NEXT:    # ymm7 = mem[0,1,0,1]
1588 ; AVX2-SLOW-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
1589 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
1590 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]
1591 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm7 = ymm3[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
1592 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm7 = ymm7[2,2,3,3,6,6,7,7]
1593 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [255,0,0,255,0,255,0,0,0,0,255,0,255,0,0,255,255,0,0,255,0,255,0,0,0,0,255,0,255,0,0,255]
1594 ; AVX2-SLOW-NEXT:    # ymm8 = mem[0,1,0,1]
1595 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
1596 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
1597 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u>
1598 ; AVX2-SLOW-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
1599 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm6 = ymm0[2,2,3,3,6,6,7,7]
1600 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
1601 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
1602 ; AVX2-SLOW-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
1603 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %xmm7
1604 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %xmm8
1605 ; AVX2-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm6 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]
1606 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
1607 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
1608 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %xmm9
1609 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %xmm10
1610 ; AVX2-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm11 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3],xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]
1611 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
1612 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[0,0,1,1]
1613 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm12 = <255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255>
1614 ; AVX2-SLOW-NEXT:    vpblendvb %ymm12, %ymm6, %ymm11, %ymm6
1615 ; AVX2-SLOW-NEXT:    vmovdqa (%r8), %xmm11
1616 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm12 = xmm11[0,0,1,1]
1617 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[0,0,0,1]
1618 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm13 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
1619 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm6, %ymm12, %ymm6
1620 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = zero,xmm10[6],zero,xmm10[8,u],zero,xmm10[7],zero,xmm10[9],zero,xmm10[11,u],zero,xmm10[10],zero,xmm10[12]
1621 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[6],zero,xmm9[8],zero,xmm9[u,7],zero,xmm9[9],zero,xmm9[11],zero,xmm9[u,10],zero,xmm9[12],zero
1622 ; AVX2-SLOW-NEXT:    vpor %xmm10, %xmm9, %xmm9
1623 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]
1624 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[8],zero,xmm8[u,7],zero,xmm8[9],zero,xmm8[u],zero,xmm8[u,10],zero,xmm8[12],zero,xmm8[u,11]
1625 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero
1626 ; AVX2-SLOW-NEXT:    vpor %xmm7, %xmm8, %xmm7
1627 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,0,1,1]
1628 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = <255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255>
1629 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm9, %ymm7, %ymm7
1630 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm8 = xmm11[1,1,2,2]
1631 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,1,1]
1632 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
1633 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1634 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,ymm3[19,20],zero,ymm3[22],zero,ymm3[24],zero,ymm3[22,23],zero,ymm3[25],zero,ymm3[23]
1635 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
1636 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero
1637 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1638 ; AVX2-SLOW-NEXT:    vpor %ymm8, %ymm9, %ymm8
1639 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero
1640 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1641 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25]
1642 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,2,3,3]
1643 ; AVX2-SLOW-NEXT:    vpor %ymm9, %ymm10, %ymm9
1644 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0>
1645 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1646 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm0[0,2,1,1,4,6,5,5]
1647 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,3,3,2]
1648 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
1649 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1650 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = <3,3,3,u,4,4,4,4>
1651 ; AVX2-SLOW-NEXT:    vpermd %ymm3, %ymm9, %ymm3
1652 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]
1653 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = <u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255>
1654 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm3, %ymm4, %ymm3
1655 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero
1656 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm1 = zero,zero,zero,ymm1[13],zero,zero,zero,zero,ymm1[14],zero,zero,zero,zero,ymm1[15],zero,zero,zero,zero,ymm1[16],zero,zero,zero,zero,ymm1[17],zero,zero,zero,zero,ymm1[18],zero,zero,zero
1657 ; AVX2-SLOW-NEXT:    vpor %ymm2, %ymm1, %ymm1
1658 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255>
1659 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm3, %ymm1, %ymm1
1660 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <3,3,3,3,u,4,4,4>
1661 ; AVX2-SLOW-NEXT:    vpermd %ymm0, %ymm2, %ymm0
1662 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
1663 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
1664 ; AVX2-SLOW-NEXT:    vmovdqa %ymm0, 64(%r9)
1665 ; AVX2-SLOW-NEXT:    vmovdqa %ymm8, 96(%r9)
1666 ; AVX2-SLOW-NEXT:    vmovdqa %ymm5, 128(%r9)
1667 ; AVX2-SLOW-NEXT:    vmovdqa %ymm7, 32(%r9)
1668 ; AVX2-SLOW-NEXT:    vmovdqa %ymm6, (%r9)
1669 ; AVX2-SLOW-NEXT:    vzeroupper
1670 ; AVX2-SLOW-NEXT:    retq
1672 ; AVX2-FAST-LABEL: store_i8_stride5_vf32:
1673 ; AVX2-FAST:       # %bb.0:
1674 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %ymm3
1675 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %ymm4
1676 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %ymm1
1677 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %ymm2
1678 ; AVX2-FAST-NEXT:    vmovdqa (%r8), %ymm0
1679 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %xmm6
1680 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %xmm7
1681 ; AVX2-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm5 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3],xmm7[4],xmm6[4],xmm7[5],xmm6[5],xmm7[6],xmm6[6],xmm7[7],xmm6[7]
1682 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
1683 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
1684 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %xmm8
1685 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %xmm9
1686 ; AVX2-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm10 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3],xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]
1687 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
1688 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]
1689 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = <255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255>
1690 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm5, %ymm10, %ymm5
1691 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = [0,0,0,0,0,0,1,1]
1692 ; AVX2-FAST-NEXT:    vpermd %ymm0, %ymm10, %ymm10
1693 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
1694 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm5, %ymm10, %ymm5
1695 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = zero,xmm9[6],zero,xmm9[8,u],zero,xmm9[7],zero,xmm9[9],zero,xmm9[11,u],zero,xmm9[10],zero,xmm9[12]
1696 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[6],zero,xmm8[8],zero,xmm8[u,7],zero,xmm8[9],zero,xmm8[11],zero,xmm8[u,10],zero,xmm8[12],zero
1697 ; AVX2-FAST-NEXT:    vpor %xmm9, %xmm8, %xmm8
1698 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
1699 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[8],zero,xmm7[u,7],zero,xmm7[9],zero,xmm7[u],zero,xmm7[u,10],zero,xmm7[12],zero,xmm7[u,11]
1700 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
1701 ; AVX2-FAST-NEXT:    vpor %xmm7, %xmm6, %xmm6
1702 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
1703 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255>
1704 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm8, %ymm6, %ymm6
1705 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = [1,1,2,2,2,2,2,2]
1706 ; AVX2-FAST-NEXT:    vpermd %ymm0, %ymm7, %ymm7
1707 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
1708 ; AVX2-FAST-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
1709 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,ymm3[19,20],zero,ymm3[22],zero,ymm3[24],zero,ymm3[22,23],zero,ymm3[25],zero,ymm3[23]
1710 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
1711 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero
1712 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
1713 ; AVX2-FAST-NEXT:    vpor %ymm7, %ymm8, %ymm7
1714 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero
1715 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
1716 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25]
1717 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1718 ; AVX2-FAST-NEXT:    vpor %ymm8, %ymm9, %ymm8
1719 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0>
1720 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1721 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [4,6,5,5,5,5,4,6]
1722 ; AVX2-FAST-NEXT:    vpermd %ymm0, %ymm8, %ymm8
1723 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
1724 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1725 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[27],zero,ymm1[29,26],zero,ymm1[28],zero,ymm1[30],zero,ymm1[28,29],zero,ymm1[31],zero,ymm1[29]
1726 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
1727 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27],zero,zero,ymm2[26],zero,ymm2[28],zero,ymm2[30],zero,zero,ymm2[29],zero,ymm2[31],zero
1728 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1729 ; AVX2-FAST-NEXT:    vpor %ymm8, %ymm9, %ymm8
1730 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[29,26],zero,ymm3[28],zero,ymm3[26,27,28,29],zero,ymm3[31],zero,ymm3[29,30],zero
1731 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1732 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm4[26],zero,ymm4[28],zero,zero,zero,zero,ymm4[29],zero,ymm4[31],zero,zero,ymm4[30]
1733 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,2,3,3]
1734 ; AVX2-FAST-NEXT:    vpor %ymm9, %ymm10, %ymm9
1735 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u>
1736 ; AVX2-FAST-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1737 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = [6,6,6,6,7,7,7,7]
1738 ; AVX2-FAST-NEXT:    vpermd %ymm0, %ymm9, %ymm9
1739 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
1740 ; AVX2-FAST-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1741 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = <3,3,3,u,4,4,4,4>
1742 ; AVX2-FAST-NEXT:    vpermd %ymm3, %ymm9, %ymm3
1743 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]
1744 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = <u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255>
1745 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm3, %ymm4, %ymm3
1746 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero
1747 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm1 = zero,zero,zero,ymm1[13],zero,zero,zero,zero,ymm1[14],zero,zero,zero,zero,ymm1[15],zero,zero,zero,zero,ymm1[16],zero,zero,zero,zero,ymm1[17],zero,zero,zero,zero,ymm1[18],zero,zero,zero
1748 ; AVX2-FAST-NEXT:    vpor %ymm2, %ymm1, %ymm1
1749 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255>
1750 ; AVX2-FAST-NEXT:    vpblendvb %ymm2, %ymm3, %ymm1, %ymm1
1751 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = <3,3,3,3,u,4,4,4>
1752 ; AVX2-FAST-NEXT:    vpermd %ymm0, %ymm2, %ymm0
1753 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
1754 ; AVX2-FAST-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
1755 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, 64(%r9)
1756 ; AVX2-FAST-NEXT:    vmovdqa %ymm8, 128(%r9)
1757 ; AVX2-FAST-NEXT:    vmovdqa %ymm7, 96(%r9)
1758 ; AVX2-FAST-NEXT:    vmovdqa %ymm6, 32(%r9)
1759 ; AVX2-FAST-NEXT:    vmovdqa %ymm5, (%r9)
1760 ; AVX2-FAST-NEXT:    vzeroupper
1761 ; AVX2-FAST-NEXT:    retq
1763 ; AVX2-FAST-PERLANE-LABEL: store_i8_stride5_vf32:
1764 ; AVX2-FAST-PERLANE:       # %bb.0:
1765 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %ymm3
1766 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %ymm4
1767 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %ymm1
1768 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %ymm2
1769 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%r8), %ymm0
1770 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %xmm6
1771 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %xmm7
1772 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklbw {{.*#+}} xmm5 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3],xmm7[4],xmm6[4],xmm7[5],xmm6[5],xmm7[6],xmm6[6],xmm7[7],xmm6[7]
1773 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
1774 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
1775 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %xmm8
1776 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %xmm9
1777 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklbw {{.*#+}} xmm10 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3],xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]
1778 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
1779 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]
1780 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm11 = <255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255>
1781 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm5, %ymm10, %ymm5
1782 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%r8), %xmm10
1783 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm11 = xmm10[0,0,1,1]
1784 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]
1785 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm12 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
1786 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm5, %ymm11, %ymm5
1787 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm9 = zero,xmm9[6],zero,xmm9[8,u],zero,xmm9[7],zero,xmm9[9],zero,xmm9[11,u],zero,xmm9[10],zero,xmm9[12]
1788 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[6],zero,xmm8[8],zero,xmm8[u,7],zero,xmm8[9],zero,xmm8[11],zero,xmm8[u,10],zero,xmm8[12],zero
1789 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm9, %xmm8, %xmm8
1790 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
1791 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[8],zero,xmm7[u,7],zero,xmm7[9],zero,xmm7[u],zero,xmm7[u,10],zero,xmm7[12],zero,xmm7[u,11]
1792 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm6 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
1793 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm7, %xmm6, %xmm6
1794 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
1795 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255>
1796 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm8, %ymm6, %ymm6
1797 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm7 = xmm10[1,1,2,2]
1798 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,1,1]
1799 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
1800 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
1801 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm7 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,ymm3[19,20],zero,ymm3[22],zero,ymm3[24],zero,ymm3[22,23],zero,ymm3[25],zero,ymm3[23]
1802 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
1803 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm8 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero
1804 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
1805 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm7, %ymm8, %ymm7
1806 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm8 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero
1807 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
1808 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25]
1809 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1810 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm8, %ymm9, %ymm8
1811 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0>
1812 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1813 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[0,2,1,1,4,6,5,5]
1814 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]
1815 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
1816 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1817 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm8 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[27],zero,ymm1[29,26],zero,ymm1[28],zero,ymm1[30],zero,ymm1[28,29],zero,ymm1[31],zero,ymm1[29]
1818 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
1819 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27],zero,zero,ymm2[26],zero,ymm2[28],zero,ymm2[30],zero,zero,ymm2[29],zero,ymm2[31],zero
1820 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1821 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm8, %ymm9, %ymm8
1822 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm9 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[29,26],zero,ymm3[28],zero,ymm3[26,27,28,29],zero,ymm3[31],zero,ymm3[29,30],zero
1823 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1824 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm4[26],zero,ymm4[28],zero,zero,zero,zero,ymm4[29],zero,ymm4[31],zero,zero,ymm4[30]
1825 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,2,3,3]
1826 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm9, %ymm10, %ymm9
1827 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u>
1828 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1829 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm9 = ymm0[2,2,3,3,6,6,7,7]
1830 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1831 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
1832 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1833 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <3,3,3,u,4,4,4,4>
1834 ; AVX2-FAST-PERLANE-NEXT:    vpermd %ymm3, %ymm9, %ymm3
1835 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]
1836 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255>
1837 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm3, %ymm4, %ymm3
1838 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero
1839 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm1 = zero,zero,zero,ymm1[13],zero,zero,zero,zero,ymm1[14],zero,zero,zero,zero,ymm1[15],zero,zero,zero,zero,ymm1[16],zero,zero,zero,zero,ymm1[17],zero,zero,zero,zero,ymm1[18],zero,zero,zero
1840 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm2, %ymm1, %ymm1
1841 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255>
1842 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm3, %ymm1, %ymm1
1843 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <3,3,3,3,u,4,4,4>
1844 ; AVX2-FAST-PERLANE-NEXT:    vpermd %ymm0, %ymm2, %ymm0
1845 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
1846 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
1847 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm0, 64(%r9)
1848 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm8, 128(%r9)
1849 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm7, 96(%r9)
1850 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm6, 32(%r9)
1851 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm5, (%r9)
1852 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
1853 ; AVX2-FAST-PERLANE-NEXT:    retq
1855 ; AVX512F-SLOW-LABEL: store_i8_stride5_vf32:
1856 ; AVX512F-SLOW:       # %bb.0:
1857 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %ymm1
1858 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %ymm2
1859 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %ymm3
1860 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %ymm4
1861 ; AVX512F-SLOW-NEXT:    vmovdqa (%r8), %ymm0
1862 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %xmm5
1863 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm5[8],zero,xmm5[u,7],zero,xmm5[9],zero,xmm5[u],zero,xmm5[u,10],zero,xmm5[12],zero,xmm5[u,11]
1864 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %xmm7
1865 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero
1866 ; AVX512F-SLOW-NEXT:    vpor %xmm6, %xmm8, %xmm6
1867 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
1868 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %xmm8
1869 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = zero,xmm8[6],zero,xmm8[8,u],zero,xmm8[7],zero,xmm8[9],zero,xmm8[11,u],zero,xmm8[10],zero,xmm8[12]
1870 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %xmm10
1871 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm10[6],zero,xmm10[8],zero,xmm10[u,7],zero,xmm10[9],zero,xmm10[11],zero,xmm10[u,10],zero,xmm10[12],zero
1872 ; AVX512F-SLOW-NEXT:    vpor %xmm9, %xmm11, %xmm9
1873 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]
1874 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
1875 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %ymm6, %ymm11, %ymm9
1876 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm9, %zmm0, %zmm6
1877 ; AVX512F-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm8 = xmm8[0],xmm10[0],xmm8[1],xmm10[1],xmm8[2],xmm10[2],xmm8[3],xmm10[3],xmm8[4],xmm10[4],xmm8[5],xmm10[5],xmm8[6],xmm10[6],xmm8[7],xmm10[7]
1878 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
1879 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
1880 ; AVX512F-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm5 = xmm5[0],xmm7[0],xmm5[1],xmm7[1],xmm5[2],xmm7[2],xmm5[3],xmm7[3],xmm5[4],xmm7[4],xmm5[5],xmm7[5],xmm5[6],xmm7[6],xmm5[7],xmm7[7]
1881 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
1882 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
1883 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
1884 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %ymm8, %ymm7, %ymm5
1885 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm5[0,1,2,3],zmm6[4,5,6,7]
1886 ; AVX512F-SLOW-NEXT:    vmovdqa (%r8), %xmm6
1887 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm8 = <u,0,0,0,0,u,1,1,1,1,u,2,2,2,2,u>
1888 ; AVX512F-SLOW-NEXT:    vpermd %zmm6, %zmm8, %zmm6
1889 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm6
1890 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm4[u,u,u],zero,ymm4[13,u,u,u],zero,ymm4[14,u,u,u],zero,ymm4[15,u,u,u],zero,ymm4[16,u,u,u],zero,ymm4[17,u,u,u],zero,ymm4[18,u,u]
1891 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm3[u,u,u,13],zero,ymm3[u,u,u,14],zero,ymm3[u,u,u,15],zero,ymm3[u,u,u,16],zero,ymm3[u,u,u,17],zero,ymm3[u,u,u,18],zero,ymm3[u,u]
1892 ; AVX512F-SLOW-NEXT:    vpor %ymm5, %ymm8, %ymm5
1893 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm2[u],zero,ymm2[13,u,u,u],zero,ymm2[14,u,u,u],zero,ymm2[15,u,u,u],zero,ymm2[16,u,u,u],zero,ymm2[17,u,u,u],zero,ymm2[18,u,u,u],zero
1894 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 = ymm1[u,13],zero,ymm1[u,u,u,14],zero,ymm1[u,u,u,15],zero,ymm1[u,u,u,16],zero,ymm1[u,u,u,17],zero,ymm1[u,u,u,18],zero,ymm1[u,u,u,19]
1895 ; AVX512F-SLOW-NEXT:    vpor %ymm8, %ymm9, %ymm8
1896 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %ymm5, %ymm11, %ymm8
1897 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19,u,21,u,u,20,u,22,u,24,u,u,23,u,25,u]
1898 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
1899 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25],zero,zero
1900 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1901 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = [18374966859431608575,18374966859431608575,18446463693966278400,18446463693966278400]
1902 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %ymm10, %ymm5, %ymm9
1903 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm4[19],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero
1904 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
1905 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm11 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm3[21],zero,ymm3[21,20],zero,ymm3[22],zero,ymm3[24],zero,ymm3[22,23],zero,ymm3[25]
1906 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[2,2,3,3]
1907 ; AVX512F-SLOW-NEXT:    vpor %ymm5, %ymm11, %ymm5
1908 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm9, %ymm5
1909 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm5, %zmm0, %zmm5
1910 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm5[4,5,6,7]
1911 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm0[12],zero,zero,zero,zero,ymm0[13],zero,zero,zero,zero,ymm0[14],zero,zero,zero,zero,ymm0[15],zero,zero,zero,zero,ymm0[16],zero,zero,zero,zero,ymm0[17],zero,zero,zero,zero,ymm0[18],zero
1912 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm0[0,2,1,1,4,6,5,5]
1913 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,3,3,2]
1914 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
1915 ; AVX512F-SLOW-NEXT:    vpandn %ymm9, %ymm11, %ymm9
1916 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm9, %zmm8, %zmm8
1917 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm8
1918 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,u,27,u,u,26,u,28,u,30,u,u,29,u,31,u]
1919 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
1920 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[27],zero,zero,ymm3[26],zero,ymm3[28],zero,ymm3[30],zero,zero,ymm3[29],zero,ymm3[31],zero,zero
1921 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
1922 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %ymm10, %ymm4, %ymm3
1923 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]
1924 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
1925 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm1[26],zero,ymm1[28],zero,zero,ymm1[27],zero,ymm1[29],zero,ymm1[31],zero,zero,ymm1[30],zero
1926 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
1927 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm2, %ymm1
1928 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %ymm3, %ymm7, %ymm1
1929 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]
1930 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
1931 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0
1932 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm0, 128(%r9)
1933 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm8, 64(%r9)
1934 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm6, (%r9)
1935 ; AVX512F-SLOW-NEXT:    vzeroupper
1936 ; AVX512F-SLOW-NEXT:    retq
1938 ; AVX512F-FAST-LABEL: store_i8_stride5_vf32:
1939 ; AVX512F-FAST:       # %bb.0:
1940 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %ymm0
1941 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %ymm1
1942 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %ymm2
1943 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %ymm3
1944 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %xmm4
1945 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm4[8],zero,xmm4[u,7],zero,xmm4[9],zero,xmm4[u],zero,xmm4[u,10],zero,xmm4[12],zero,xmm4[u,11]
1946 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %xmm6
1947 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
1948 ; AVX512F-FAST-NEXT:    vpor %xmm5, %xmm7, %xmm5
1949 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
1950 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %xmm7
1951 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm7[6],zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9],zero,xmm7[11,u],zero,xmm7[10],zero,xmm7[12]
1952 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %xmm9
1953 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm9[6],zero,xmm9[8],zero,xmm9[u,7],zero,xmm9[9],zero,xmm9[11],zero,xmm9[u,10],zero,xmm9[12],zero
1954 ; AVX512F-FAST-NEXT:    vpor %xmm8, %xmm10, %xmm8
1955 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
1956 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
1957 ; AVX512F-FAST-NEXT:    vpternlogq $226, %ymm5, %ymm10, %ymm8
1958 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm8, %zmm0, %zmm5
1959 ; AVX512F-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm7 = xmm7[0],xmm9[0],xmm7[1],xmm9[1],xmm7[2],xmm9[2],xmm7[3],xmm9[3],xmm7[4],xmm9[4],xmm7[5],xmm9[5],xmm7[6],xmm9[6],xmm7[7],xmm9[7]
1960 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
1961 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,0,1,1]
1962 ; AVX512F-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3],xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]
1963 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
1964 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
1965 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
1966 ; AVX512F-FAST-NEXT:    vpternlogq $226, %ymm7, %ymm6, %ymm4
1967 ; AVX512F-FAST-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm4[0,1,2,3],zmm5[4,5,6,7]
1968 ; AVX512F-FAST-NEXT:    vbroadcasti64x4 {{.*#+}} zmm4 = mem[0,1,2,3,0,1,2,3]
1969 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm7 = <u,0,0,0,0,u,1,1,9,9,u,10,10,10,10,u>
1970 ; AVX512F-FAST-NEXT:    vpermd %zmm4, %zmm7, %zmm7
1971 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm7
1972 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm3[u,u,u],zero,ymm3[13,u,u,u],zero,ymm3[14,u,u,u],zero,ymm3[15,u,u,u],zero,ymm3[16,u,u,u],zero,ymm3[17,u,u,u],zero,ymm3[18,u,u]
1973 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm2[u,u,u,13],zero,ymm2[u,u,u,14],zero,ymm2[u,u,u,15],zero,ymm2[u,u,u,16],zero,ymm2[u,u,u,17],zero,ymm2[u,u,u,18],zero,ymm2[u,u]
1974 ; AVX512F-FAST-NEXT:    vpor %ymm5, %ymm8, %ymm5
1975 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm1[u],zero,ymm1[13,u,u,u],zero,ymm1[14,u,u,u],zero,ymm1[15,u,u,u],zero,ymm1[16,u,u,u],zero,ymm1[17,u,u,u],zero,ymm1[18,u,u,u],zero
1976 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm0[u,13],zero,ymm0[u,u,u,14],zero,ymm0[u,u,u,15],zero,ymm0[u,u,u,16],zero,ymm0[u,u,u,17],zero,ymm0[u,u,u,18],zero,ymm0[u,u,u,19]
1977 ; AVX512F-FAST-NEXT:    vpor %ymm8, %ymm9, %ymm8
1978 ; AVX512F-FAST-NEXT:    vpternlogq $226, %ymm5, %ymm10, %ymm8
1979 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19,u,21,u,u,20,u,22,u,24,u,u,23,u,25,u]
1980 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
1981 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm0[21],zero,zero,ymm0[20],zero,ymm0[22],zero,ymm0[24],zero,zero,ymm0[23],zero,ymm0[25],zero,zero
1982 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
1983 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = [18374966859431608575,18374966859431608575,18446463693966278400,18446463693966278400]
1984 ; AVX512F-FAST-NEXT:    vpternlogq $248, %ymm10, %ymm5, %ymm9
1985 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm3[19],zero,ymm3[21],zero,zero,ymm3[20],zero,ymm3[22],zero,ymm3[24],zero,zero,ymm3[23],zero
1986 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
1987 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm11 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm2[21],zero,ymm2[21,20],zero,ymm2[22],zero,ymm2[24],zero,ymm2[22,23],zero,ymm2[25]
1988 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[2,2,3,3]
1989 ; AVX512F-FAST-NEXT:    vpor %ymm5, %ymm11, %ymm5
1990 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm9, %ymm5
1991 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm5, %zmm0, %zmm5
1992 ; AVX512F-FAST-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm5[4,5,6,7]
1993 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = <4,u,5,5,5,5,u,6>
1994 ; AVX512F-FAST-NEXT:    vpermd %ymm4, %ymm8, %ymm8
1995 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
1996 ; AVX512F-FAST-NEXT:    vpandn %ymm8, %ymm9, %ymm8
1997 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm4[12],zero,zero,zero,zero,ymm4[13],zero,zero,zero,zero,ymm4[14],zero,zero,zero,zero,ymm4[15],zero,zero,zero,zero,ymm4[16],zero,zero,zero,zero,ymm4[17],zero,zero,zero,zero,ymm4[18],zero
1998 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm8, %zmm9, %zmm8
1999 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm8
2000 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,u,27,u,u,26,u,28,u,30,u,u,29,u,31,u]
2001 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
2002 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm2[27],zero,zero,ymm2[26],zero,ymm2[28],zero,ymm2[30],zero,zero,ymm2[29],zero,ymm2[31],zero,zero
2003 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
2004 ; AVX512F-FAST-NEXT:    vpternlogq $248, %ymm10, %ymm3, %ymm2
2005 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]
2006 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
2007 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm0[26],zero,ymm0[28],zero,zero,ymm0[27],zero,ymm0[29],zero,ymm0[31],zero,zero,ymm0[30],zero
2008 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2009 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0
2010 ; AVX512F-FAST-NEXT:    vpternlogq $184, %ymm2, %ymm6, %ymm0
2011 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = <6,6,6,u,7,7,7,7>
2012 ; AVX512F-FAST-NEXT:    vpermd %ymm4, %ymm1, %ymm1
2013 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm1
2014 ; AVX512F-FAST-NEXT:    vmovdqa %ymm1, 128(%r9)
2015 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm8, 64(%r9)
2016 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm7, (%r9)
2017 ; AVX512F-FAST-NEXT:    vzeroupper
2018 ; AVX512F-FAST-NEXT:    retq
2020 ; AVX512BW-SLOW-LABEL: store_i8_stride5_vf32:
2021 ; AVX512BW-SLOW:       # %bb.0:
2022 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rdi), %ymm4
2023 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rsi), %ymm5
2024 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rdx), %ymm1
2025 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rcx), %ymm2
2026 ; AVX512BW-SLOW-NEXT:    vmovdqa (%r8), %ymm0
2027 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rdi), %xmm3
2028 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[8],zero,xmm3[u,7],zero,xmm3[9],zero,xmm3[u],zero,xmm3[u,10],zero,xmm3[12],zero,xmm3[u,11]
2029 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rsi), %xmm7
2030 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero
2031 ; AVX512BW-SLOW-NEXT:    vpor %xmm6, %xmm8, %xmm6
2032 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rdx), %xmm8
2033 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rcx), %xmm9
2034 ; AVX512BW-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm10 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3],xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]
2035 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2036 ; AVX512BW-SLOW-NEXT:    vinserti32x4 $2, %xmm6, %zmm10, %zmm6
2037 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} zmm6 = zmm6[0,0,1,1,4,4,5,5]
2038 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = zero,xmm9[6],zero,xmm9[8,u],zero,xmm9[7],zero,xmm9[9],zero,xmm9[11,u],zero,xmm9[10],zero,xmm9[12]
2039 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[6],zero,xmm8[8],zero,xmm8[u,7],zero,xmm8[9],zero,xmm8[11],zero,xmm8[u,10],zero,xmm8[12],zero
2040 ; AVX512BW-SLOW-NEXT:    vpor %xmm9, %xmm8, %xmm8
2041 ; AVX512BW-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm3 = xmm3[0],xmm7[0],xmm3[1],xmm7[1],xmm3[2],xmm7[2],xmm3[3],xmm7[3],xmm3[4],xmm7[4],xmm3[5],xmm7[5],xmm3[6],xmm7[6],xmm3[7],xmm7[7]
2042 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2043 ; AVX512BW-SLOW-NEXT:    vinserti32x4 $2, %xmm8, %zmm3, %zmm3
2044 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} zmm3 = zmm3[0,0,1,1,4,4,5,5]
2045 ; AVX512BW-SLOW-NEXT:    movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C
2046 ; AVX512BW-SLOW-NEXT:    kmovq %rax, %k1
2047 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %zmm6, %zmm3 {%k1}
2048 ; AVX512BW-SLOW-NEXT:    vmovdqa (%r8), %xmm6
2049 ; AVX512BW-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
2050 ; AVX512BW-SLOW-NEXT:    vpermd %zmm6, %zmm7, %zmm6
2051 ; AVX512BW-SLOW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
2052 ; AVX512BW-SLOW-NEXT:    kmovq %rax, %k1
2053 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %zmm6, %zmm3 {%k1}
2054 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm1[21],zero,ymm1[21,20],zero,ymm1[22],zero,ymm1[24],zero,ymm1[22,23],zero,ymm1[25]
2055 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
2056 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero
2057 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
2058 ; AVX512BW-SLOW-NEXT:    vpor %ymm6, %ymm7, %ymm6
2059 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,ymm1[12,13],zero,zero,zero,zero,ymm1[14],zero,zero,zero,ymm1[14,15],zero,zero,zero,zero,ymm1[16],zero,zero,zero,ymm1[16,17],zero,zero,zero,zero,ymm1[18],zero,zero,zero
2060 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero
2061 ; AVX512BW-SLOW-NEXT:    vpor %ymm7, %ymm8, %ymm7
2062 ; AVX512BW-SLOW-NEXT:    vinserti64x4 $1, %ymm6, %zmm7, %zmm6
2063 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm5[21],zero,zero,ymm5[20],zero,ymm5[22],zero,ymm5[24],zero,zero,ymm5[23],zero,ymm5[25],zero
2064 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
2065 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero,zero
2066 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2067 ; AVX512BW-SLOW-NEXT:    vpor %ymm7, %ymm8, %ymm7
2068 ; AVX512BW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = <3,3,3,u,4,4,4,4>
2069 ; AVX512BW-SLOW-NEXT:    vpermd %ymm4, %ymm8, %ymm8
2070 ; AVX512BW-SLOW-NEXT:    movl $138547332, %eax # imm = 0x8421084
2071 ; AVX512BW-SLOW-NEXT:    kmovd %eax, %k1
2072 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 {%k1} = ymm5[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]
2073 ; AVX512BW-SLOW-NEXT:    vinserti64x4 $1, %ymm7, %zmm8, %zmm7
2074 ; AVX512BW-SLOW-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
2075 ; AVX512BW-SLOW-NEXT:    kmovq %rax, %k1
2076 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2077 ; AVX512BW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm6 = <3,3,3,3,u,4,4,4>
2078 ; AVX512BW-SLOW-NEXT:    vpermd %ymm0, %ymm6, %ymm6
2079 ; AVX512BW-SLOW-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[0,2,1,1,4,6,5,5]
2080 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]
2081 ; AVX512BW-SLOW-NEXT:    vinserti64x4 $1, %ymm8, %zmm6, %zmm6
2082 ; AVX512BW-SLOW-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
2083 ; AVX512BW-SLOW-NEXT:    kmovq %rax, %k1
2084 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2085 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]
2086 ; AVX512BW-SLOW-NEXT:    vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
2087 ; AVX512BW-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]
2088 ; AVX512BW-SLOW-NEXT:    movl $1251232404, %eax # imm = 0x4A944A94
2089 ; AVX512BW-SLOW-NEXT:    kmovd %eax, %k1
2090 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm4, %ymm5 {%k1}
2091 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm5[2,2,3,3]
2092 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,u,27,u,u,26,u,28,u,30,u,u,29,u,31,u]
2093 ; AVX512BW-SLOW-NEXT:    vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
2094 ; AVX512BW-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[2,2,3,3,6,6,7,7]
2095 ; AVX512BW-SLOW-NEXT:    movl $693250386, %eax # imm = 0x29522952
2096 ; AVX512BW-SLOW-NEXT:    kmovd %eax, %k1
2097 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm1, %ymm2 {%k1}
2098 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm2[2,2,3,3]
2099 ; AVX512BW-SLOW-NEXT:    movl $415641996, %eax # imm = 0x18C6318C
2100 ; AVX512BW-SLOW-NEXT:    kmovd %eax, %k1
2101 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm4, %ymm1 {%k1}
2102 ; AVX512BW-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]
2103 ; AVX512BW-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2104 ; AVX512BW-SLOW-NEXT:    movl $-2078209982, %eax # imm = 0x84210842
2105 ; AVX512BW-SLOW-NEXT:    kmovd %eax, %k1
2106 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm0, %ymm1 {%k1}
2107 ; AVX512BW-SLOW-NEXT:    vmovdqa %ymm1, 128(%r9)
2108 ; AVX512BW-SLOW-NEXT:    vmovdqa64 %zmm7, 64(%r9)
2109 ; AVX512BW-SLOW-NEXT:    vmovdqa64 %zmm3, (%r9)
2110 ; AVX512BW-SLOW-NEXT:    vzeroupper
2111 ; AVX512BW-SLOW-NEXT:    retq
2113 ; AVX512BW-FAST-LABEL: store_i8_stride5_vf32:
2114 ; AVX512BW-FAST:       # %bb.0:
2115 ; AVX512BW-FAST-NEXT:    vmovdqa (%rdi), %ymm1
2116 ; AVX512BW-FAST-NEXT:    vmovdqa (%rsi), %ymm4
2117 ; AVX512BW-FAST-NEXT:    vmovdqa (%rdx), %ymm0
2118 ; AVX512BW-FAST-NEXT:    vmovdqa (%rcx), %ymm2
2119 ; AVX512BW-FAST-NEXT:    vmovdqa (%rdi), %xmm3
2120 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm3[8],zero,xmm3[u,7],zero,xmm3[9],zero,xmm3[u],zero,xmm3[u,10],zero,xmm3[12],zero,xmm3[u,11]
2121 ; AVX512BW-FAST-NEXT:    vmovdqa (%rsi), %xmm6
2122 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
2123 ; AVX512BW-FAST-NEXT:    vpor %xmm5, %xmm7, %xmm5
2124 ; AVX512BW-FAST-NEXT:    vmovdqa (%rdx), %xmm7
2125 ; AVX512BW-FAST-NEXT:    vmovdqa (%rcx), %xmm8
2126 ; AVX512BW-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm9 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]
2127 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2128 ; AVX512BW-FAST-NEXT:    vinserti32x4 $2, %xmm5, %zmm9, %zmm5
2129 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} zmm5 = zmm5[0,0,1,1,4,4,5,5]
2130 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm8[6],zero,xmm8[8,u],zero,xmm8[7],zero,xmm8[9],zero,xmm8[11,u],zero,xmm8[10],zero,xmm8[12]
2131 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[6],zero,xmm7[8],zero,xmm7[u,7],zero,xmm7[9],zero,xmm7[11],zero,xmm7[u,10],zero,xmm7[12],zero
2132 ; AVX512BW-FAST-NEXT:    vpor %xmm7, %xmm8, %xmm7
2133 ; AVX512BW-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3],xmm3[4],xmm6[4],xmm3[5],xmm6[5],xmm3[6],xmm6[6],xmm3[7],xmm6[7]
2134 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2135 ; AVX512BW-FAST-NEXT:    vinserti32x4 $2, %xmm7, %zmm3, %zmm3
2136 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} zmm3 = zmm3[0,0,1,1,4,4,5,5]
2137 ; AVX512BW-FAST-NEXT:    movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C
2138 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k1
2139 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm5, %zmm3 {%k1}
2140 ; AVX512BW-FAST-NEXT:    vbroadcasti64x4 {{.*#+}} zmm5 = mem[0,1,2,3,0,1,2,3]
2141 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]
2142 ; AVX512BW-FAST-NEXT:    vpermd %zmm5, %zmm6, %zmm6
2143 ; AVX512BW-FAST-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
2144 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k1
2145 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm6, %zmm3 {%k1}
2146 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm0[21],zero,ymm0[21,20],zero,ymm0[22],zero,ymm0[24],zero,ymm0[22,23],zero,ymm0[25]
2147 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
2148 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[19],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero
2149 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
2150 ; AVX512BW-FAST-NEXT:    vpor %ymm6, %ymm7, %ymm6
2151 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,ymm0[12,13],zero,zero,zero,zero,ymm0[14],zero,zero,zero,ymm0[14,15],zero,zero,zero,zero,ymm0[16],zero,zero,zero,ymm0[16,17],zero,zero,zero,zero,ymm0[18],zero,zero,zero
2152 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,ymm2[13],zero,zero,zero,zero,ymm2[14],zero,zero,zero,zero,ymm2[15],zero,zero,zero,zero,ymm2[16],zero,zero,zero,zero,ymm2[17],zero,zero,zero,zero,ymm2[18],zero,zero
2153 ; AVX512BW-FAST-NEXT:    vpor %ymm7, %ymm8, %ymm7
2154 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm6, %zmm7, %zmm6
2155 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero
2156 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
2157 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero,ymm1[25],zero,zero
2158 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2159 ; AVX512BW-FAST-NEXT:    vpor %ymm7, %ymm8, %ymm7
2160 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = <3,3,3,u,4,4,4,4>
2161 ; AVX512BW-FAST-NEXT:    vpermd %ymm1, %ymm8, %ymm8
2162 ; AVX512BW-FAST-NEXT:    movl $138547332, %eax # imm = 0x8421084
2163 ; AVX512BW-FAST-NEXT:    kmovd %eax, %k1
2164 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm8 {%k1} = ymm4[u,u,13,u,u,u,u,14,u,u,u,u,15,u,u,u,u,16,u,u,u,u,17,u,u,u,u,18,u,u,u,u]
2165 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm8, %zmm7
2166 ; AVX512BW-FAST-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
2167 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k1
2168 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2169 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm6 = <3,3,3,3,u,4,4,4,12,14,13,13,13,13,12,14>
2170 ; AVX512BW-FAST-NEXT:    vpermd %zmm5, %zmm6, %zmm6
2171 ; AVX512BW-FAST-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
2172 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k1
2173 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2174 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm4[26],zero,ymm4[28],zero,zero,zero,zero,ymm4[29],zero,ymm4[31],zero,zero,ymm4[30]
2175 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
2176 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm1[26],zero,ymm1[28],zero,zero,ymm1[27],zero,ymm1[29],zero,ymm1[31],zero,zero,ymm1[30],zero
2177 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
2178 ; AVX512BW-FAST-NEXT:    vpor %ymm4, %ymm1, %ymm1
2179 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27],zero,zero,ymm2[26],zero,ymm2[28],zero,ymm2[30],zero,zero,ymm2[29],zero,ymm2[31],zero
2180 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
2181 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm0[27],zero,zero,ymm0[26],zero,ymm0[28],zero,ymm0[30],zero,zero,ymm0[29],zero,ymm0[31],zero,zero
2182 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2183 ; AVX512BW-FAST-NEXT:    vpor %ymm2, %ymm0, %ymm0
2184 ; AVX512BW-FAST-NEXT:    movl $415641996, %eax # imm = 0x18C6318C
2185 ; AVX512BW-FAST-NEXT:    kmovd %eax, %k1
2186 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm1, %ymm0 {%k1}
2187 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [6,6,6,6,7,7,7,7]
2188 ; AVX512BW-FAST-NEXT:    vpermd %ymm5, %ymm1, %ymm1
2189 ; AVX512BW-FAST-NEXT:    movl $-2078209982, %eax # imm = 0x84210842
2190 ; AVX512BW-FAST-NEXT:    kmovd %eax, %k1
2191 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm1, %ymm0 {%k1}
2192 ; AVX512BW-FAST-NEXT:    vmovdqa %ymm0, 128(%r9)
2193 ; AVX512BW-FAST-NEXT:    vmovdqa64 %zmm7, 64(%r9)
2194 ; AVX512BW-FAST-NEXT:    vmovdqa64 %zmm3, (%r9)
2195 ; AVX512BW-FAST-NEXT:    vzeroupper
2196 ; AVX512BW-FAST-NEXT:    retq
2197   %in.vec0 = load <32 x i8>, ptr %in.vecptr0, align 64
2198   %in.vec1 = load <32 x i8>, ptr %in.vecptr1, align 64
2199   %in.vec2 = load <32 x i8>, ptr %in.vecptr2, align 64
2200   %in.vec3 = load <32 x i8>, ptr %in.vecptr3, align 64
2201   %in.vec4 = load <32 x i8>, ptr %in.vecptr4, align 64
2202   %1 = shufflevector <32 x i8> %in.vec0, <32 x i8> %in.vec1, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>
2203   %2 = shufflevector <32 x i8> %in.vec2, <32 x i8> %in.vec3, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>
2204   %3 = shufflevector <64 x i8> %1, <64 x i8> %2, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>
2205   %4 = shufflevector <32 x i8> %in.vec4, <32 x i8> poison, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
2206   %5 = shufflevector <128 x i8> %3, <128 x i8> %4, <160 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159>
2207   %interleaved.vec = shufflevector <160 x i8> %5, <160 x i8> poison, <160 x i32> <i32 0, i32 32, i32 64, i32 96, i32 128, i32 1, i32 33, i32 65, i32 97, i32 129, i32 2, i32 34, i32 66, i32 98, i32 130, i32 3, i32 35, i32 67, i32 99, i32 131, i32 4, i32 36, i32 68, i32 100, i32 132, i32 5, i32 37, i32 69, i32 101, i32 133, i32 6, i32 38, i32 70, i32 102, i32 134, i32 7, i32 39, i32 71, i32 103, i32 135, i32 8, i32 40, i32 72, i32 104, i32 136, i32 9, i32 41, i32 73, i32 105, i32 137, i32 10, i32 42, i32 74, i32 106, i32 138, i32 11, i32 43, i32 75, i32 107, i32 139, i32 12, i32 44, i32 76, i32 108, i32 140, i32 13, i32 45, i32 77, i32 109, i32 141, i32 14, i32 46, i32 78, i32 110, i32 142, i32 15, i32 47, i32 79, i32 111, i32 143, i32 16, i32 48, i32 80, i32 112, i32 144, i32 17, i32 49, i32 81, i32 113, i32 145, i32 18, i32 50, i32 82, i32 114, i32 146, i32 19, i32 51, i32 83, i32 115, i32 147, i32 20, i32 52, i32 84, i32 116, i32 148, i32 21, i32 53, i32 85, i32 117, i32 149, i32 22, i32 54, i32 86, i32 118, i32 150, i32 23, i32 55, i32 87, i32 119, i32 151, i32 24, i32 56, i32 88, i32 120, i32 152, i32 25, i32 57, i32 89, i32 121, i32 153, i32 26, i32 58, i32 90, i32 122, i32 154, i32 27, i32 59, i32 91, i32 123, i32 155, i32 28, i32 60, i32 92, i32 124, i32 156, i32 29, i32 61, i32 93, i32 125, i32 157, i32 30, i32 62, i32 94, i32 126, i32 158, i32 31, i32 63, i32 95, i32 127, i32 159>
2208   store <160 x i8> %interleaved.vec, ptr %out.vec, align 64
2209   ret void
2212 define void @store_i8_stride5_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
2213 ; SSE-LABEL: store_i8_stride5_vf64:
2214 ; SSE:       # %bb.0:
2215 ; SSE-NEXT:    subq $504, %rsp # imm = 0x1F8
2216 ; SSE-NEXT:    movdqa (%rdi), %xmm7
2217 ; SSE-NEXT:    movdqa (%rsi), %xmm9
2218 ; SSE-NEXT:    movdqa 16(%rsi), %xmm14
2219 ; SSE-NEXT:    movdqa (%rdx), %xmm0
2220 ; SSE-NEXT:    movdqa %xmm0, (%rsp) # 16-byte Spill
2221 ; SSE-NEXT:    movdqa 16(%rdx), %xmm11
2222 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2223 ; SSE-NEXT:    movdqa (%rcx), %xmm10
2224 ; SSE-NEXT:    movdqa 16(%rcx), %xmm6
2225 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2226 ; SSE-NEXT:    movdqa (%r8), %xmm13
2227 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
2228 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
2229 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
2230 ; SSE-NEXT:    pand %xmm12, %xmm0
2231 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm10[2,1,2,3]
2232 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2233 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]
2234 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
2235 ; SSE-NEXT:    movdqa %xmm12, %xmm4
2236 ; SSE-NEXT:    pandn %xmm1, %xmm4
2237 ; SSE-NEXT:    por %xmm0, %xmm4
2238 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
2239 ; SSE-NEXT:    pand %xmm8, %xmm4
2240 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm7[1,1,2,2]
2241 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
2242 ; SSE-NEXT:    pand %xmm2, %xmm0
2243 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm9[0,1,2,1]
2244 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
2245 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2246 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,0,3,4,5,6,7]
2247 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,1,0]
2248 ; SSE-NEXT:    movdqa %xmm2, %xmm5
2249 ; SSE-NEXT:    pandn %xmm1, %xmm5
2250 ; SSE-NEXT:    por %xmm0, %xmm5
2251 ; SSE-NEXT:    movdqa %xmm8, %xmm0
2252 ; SSE-NEXT:    pandn %xmm5, %xmm0
2253 ; SSE-NEXT:    por %xmm4, %xmm0
2254 ; SSE-NEXT:    movdqa {{.*#+}} xmm15 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
2255 ; SSE-NEXT:    pand %xmm15, %xmm0
2256 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm13[1,1,2,2]
2257 ; SSE-NEXT:    movdqa %xmm15, %xmm3
2258 ; SSE-NEXT:    pandn %xmm1, %xmm3
2259 ; SSE-NEXT:    por %xmm0, %xmm3
2260 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2261 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm11[3,3,3,3,4,5,6,7]
2262 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
2263 ; SSE-NEXT:    pand %xmm12, %xmm0
2264 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm6[2,1,2,3]
2265 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2266 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]
2267 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
2268 ; SSE-NEXT:    movdqa %xmm12, %xmm5
2269 ; SSE-NEXT:    pandn %xmm1, %xmm5
2270 ; SSE-NEXT:    por %xmm0, %xmm5
2271 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm14[0,1,2,1]
2272 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
2273 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2274 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
2275 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]
2276 ; SSE-NEXT:    movdqa %xmm2, %xmm1
2277 ; SSE-NEXT:    pandn %xmm0, %xmm1
2278 ; SSE-NEXT:    movdqa 16(%rdi), %xmm0
2279 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2280 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
2281 ; SSE-NEXT:    pand %xmm2, %xmm0
2282 ; SSE-NEXT:    por %xmm0, %xmm1
2283 ; SSE-NEXT:    movdqa %xmm8, %xmm0
2284 ; SSE-NEXT:    pandn %xmm1, %xmm0
2285 ; SSE-NEXT:    pand %xmm8, %xmm5
2286 ; SSE-NEXT:    por %xmm5, %xmm0
2287 ; SSE-NEXT:    movdqa 16(%r8), %xmm1
2288 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2289 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
2290 ; SSE-NEXT:    movdqa %xmm15, %xmm3
2291 ; SSE-NEXT:    pandn %xmm1, %xmm3
2292 ; SSE-NEXT:    pand %xmm15, %xmm0
2293 ; SSE-NEXT:    por %xmm0, %xmm3
2294 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2295 ; SSE-NEXT:    movdqa 32(%rcx), %xmm0
2296 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2297 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
2298 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2299 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,3,0,3]
2300 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
2301 ; SSE-NEXT:    movdqa %xmm12, %xmm1
2302 ; SSE-NEXT:    pandn %xmm0, %xmm1
2303 ; SSE-NEXT:    movdqa 32(%rdx), %xmm0
2304 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2305 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
2306 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
2307 ; SSE-NEXT:    pand %xmm12, %xmm0
2308 ; SSE-NEXT:    por %xmm0, %xmm1
2309 ; SSE-NEXT:    movdqa 32(%rsi), %xmm11
2310 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm11[0,1,2,1]
2311 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
2312 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2313 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
2314 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]
2315 ; SSE-NEXT:    movdqa %xmm2, %xmm5
2316 ; SSE-NEXT:    pandn %xmm0, %xmm5
2317 ; SSE-NEXT:    movdqa 32(%rdi), %xmm0
2318 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2319 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
2320 ; SSE-NEXT:    pand %xmm2, %xmm0
2321 ; SSE-NEXT:    por %xmm0, %xmm5
2322 ; SSE-NEXT:    movdqa %xmm8, %xmm0
2323 ; SSE-NEXT:    pandn %xmm5, %xmm0
2324 ; SSE-NEXT:    pand %xmm8, %xmm1
2325 ; SSE-NEXT:    por %xmm1, %xmm0
2326 ; SSE-NEXT:    movdqa 32(%r8), %xmm1
2327 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2328 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
2329 ; SSE-NEXT:    movdqa %xmm15, %xmm3
2330 ; SSE-NEXT:    pandn %xmm1, %xmm3
2331 ; SSE-NEXT:    pand %xmm15, %xmm0
2332 ; SSE-NEXT:    por %xmm0, %xmm3
2333 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2334 ; SSE-NEXT:    movdqa 48(%rcx), %xmm0
2335 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2336 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
2337 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
2338 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,3,0,3]
2339 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
2340 ; SSE-NEXT:    movdqa %xmm12, %xmm1
2341 ; SSE-NEXT:    pandn %xmm0, %xmm1
2342 ; SSE-NEXT:    movdqa 48(%rdx), %xmm0
2343 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2344 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
2345 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
2346 ; SSE-NEXT:    pand %xmm12, %xmm0
2347 ; SSE-NEXT:    por %xmm0, %xmm1
2348 ; SSE-NEXT:    movdqa 48(%rsi), %xmm0
2349 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2350 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
2351 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
2352 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2353 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
2354 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]
2355 ; SSE-NEXT:    movdqa %xmm2, %xmm5
2356 ; SSE-NEXT:    pandn %xmm0, %xmm5
2357 ; SSE-NEXT:    movdqa 48(%rdi), %xmm0
2358 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2359 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
2360 ; SSE-NEXT:    pand %xmm2, %xmm0
2361 ; SSE-NEXT:    por %xmm0, %xmm5
2362 ; SSE-NEXT:    movdqa %xmm8, %xmm0
2363 ; SSE-NEXT:    pandn %xmm5, %xmm0
2364 ; SSE-NEXT:    pand %xmm8, %xmm1
2365 ; SSE-NEXT:    por %xmm1, %xmm0
2366 ; SSE-NEXT:    movdqa 48(%r8), %xmm1
2367 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2368 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
2369 ; SSE-NEXT:    movdqa %xmm15, %xmm5
2370 ; SSE-NEXT:    pandn %xmm1, %xmm5
2371 ; SSE-NEXT:    pand %xmm15, %xmm0
2372 ; SSE-NEXT:    por %xmm0, %xmm5
2373 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2374 ; SSE-NEXT:    movdqa %xmm10, %xmm0
2375 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3],xmm0[4],xmm10[4],xmm0[5],xmm10[5],xmm0[6],xmm10[6],xmm0[7],xmm10[7]
2376 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2377 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
2378 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,0,4,5,6,7]
2379 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
2380 ; SSE-NEXT:    movdqa %xmm15, %xmm1
2381 ; SSE-NEXT:    pandn %xmm0, %xmm1
2382 ; SSE-NEXT:    movdqa (%rsp), %xmm3 # 16-byte Reload
2383 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm3[1,2,2,3,4,5,6,7]
2384 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
2385 ; SSE-NEXT:    pand %xmm15, %xmm0
2386 ; SSE-NEXT:    por %xmm0, %xmm1
2387 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
2388 ; SSE-NEXT:    movdqa %xmm6, %xmm0
2389 ; SSE-NEXT:    pandn %xmm1, %xmm0
2390 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2391 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[1,1,1,1]
2392 ; SSE-NEXT:    movdqa %xmm2, %xmm5
2393 ; SSE-NEXT:    pandn %xmm1, %xmm5
2394 ; SSE-NEXT:    movdqa %xmm9, %xmm1
2395 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm9[0],xmm1[1],xmm9[1],xmm1[2],xmm9[2],xmm1[3],xmm9[3],xmm1[4],xmm9[4],xmm1[5],xmm9[5],xmm1[6],xmm9[6],xmm1[7],xmm9[7]
2396 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2397 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]
2398 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,0,3,4,5,6,7]
2399 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,6]
2400 ; SSE-NEXT:    pand %xmm2, %xmm1
2401 ; SSE-NEXT:    por %xmm5, %xmm1
2402 ; SSE-NEXT:    pand %xmm6, %xmm1
2403 ; SSE-NEXT:    por %xmm0, %xmm1
2404 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
2405 ; SSE-NEXT:    movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2406 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm13[0,0,1,1]
2407 ; SSE-NEXT:    movdqa %xmm4, %xmm0
2408 ; SSE-NEXT:    pandn %xmm5, %xmm0
2409 ; SSE-NEXT:    pand %xmm4, %xmm1
2410 ; SSE-NEXT:    por %xmm1, %xmm0
2411 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2412 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm9 = xmm9[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2413 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2414 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm9[0,1,2,1]
2415 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]
2416 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,4,7]
2417 ; SSE-NEXT:    movdqa %xmm4, %xmm5
2418 ; SSE-NEXT:    pandn %xmm1, %xmm5
2419 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[2,2,3,3]
2420 ; SSE-NEXT:    pand %xmm4, %xmm1
2421 ; SSE-NEXT:    por %xmm1, %xmm5
2422 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
2423 ; SSE-NEXT:    movdqa %xmm8, %xmm7
2424 ; SSE-NEXT:    pandn %xmm5, %xmm7
2425 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm3[0,1,2,3,5,6,6,7]
2426 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,2,2,2]
2427 ; SSE-NEXT:    movdqa %xmm2, %xmm9
2428 ; SSE-NEXT:    pandn %xmm5, %xmm9
2429 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm10 = xmm10[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2430 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2431 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm10[0,1,2,1]
2432 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,1,2,3,4,5,6,7]
2433 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,7,6,4]
2434 ; SSE-NEXT:    pand %xmm2, %xmm5
2435 ; SSE-NEXT:    por %xmm9, %xmm5
2436 ; SSE-NEXT:    pand %xmm8, %xmm5
2437 ; SSE-NEXT:    por %xmm7, %xmm5
2438 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm13[2,2,2,2]
2439 ; SSE-NEXT:    movdqa %xmm12, %xmm0
2440 ; SSE-NEXT:    pandn %xmm7, %xmm0
2441 ; SSE-NEXT:    pand %xmm12, %xmm5
2442 ; SSE-NEXT:    por %xmm5, %xmm0
2443 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2444 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2445 ; SSE-NEXT:    movdqa %xmm13, %xmm0
2446 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm13[0],xmm0[1],xmm13[1],xmm0[2],xmm13[2],xmm0[3],xmm13[3],xmm0[4],xmm13[4],xmm0[5],xmm13[5],xmm0[6],xmm13[6],xmm0[7],xmm13[7]
2447 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2448 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[2,1,2,3]
2449 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,0,4,5,6,7]
2450 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]
2451 ; SSE-NEXT:    movdqa %xmm15, %xmm7
2452 ; SSE-NEXT:    pandn %xmm5, %xmm7
2453 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
2454 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm10[1,2,2,3,4,5,6,7]
2455 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
2456 ; SSE-NEXT:    pand %xmm15, %xmm5
2457 ; SSE-NEXT:    por %xmm5, %xmm7
2458 ; SSE-NEXT:    movdqa %xmm6, %xmm5
2459 ; SSE-NEXT:    pandn %xmm7, %xmm5
2460 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2461 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[1,1,1,1]
2462 ; SSE-NEXT:    movdqa %xmm2, %xmm9
2463 ; SSE-NEXT:    pandn %xmm7, %xmm9
2464 ; SSE-NEXT:    movdqa %xmm14, %xmm1
2465 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm14[0],xmm1[1],xmm14[1],xmm1[2],xmm14[2],xmm1[3],xmm14[3],xmm1[4],xmm14[4],xmm1[5],xmm14[5],xmm1[6],xmm14[6],xmm1[7],xmm14[7]
2466 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2467 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm1[2,1,2,3]
2468 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[3,1,0,3,4,5,6,7]
2469 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,6,6]
2470 ; SSE-NEXT:    pand %xmm2, %xmm7
2471 ; SSE-NEXT:    por %xmm9, %xmm7
2472 ; SSE-NEXT:    pand %xmm6, %xmm7
2473 ; SSE-NEXT:    por %xmm5, %xmm7
2474 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2475 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,0,1,1]
2476 ; SSE-NEXT:    movdqa %xmm4, %xmm3
2477 ; SSE-NEXT:    pandn %xmm5, %xmm3
2478 ; SSE-NEXT:    pand %xmm4, %xmm7
2479 ; SSE-NEXT:    por %xmm7, %xmm3
2480 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2481 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm14 = xmm14[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2482 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2483 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm14[0,1,2,1]
2484 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
2485 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,5,4,7]
2486 ; SSE-NEXT:    movdqa %xmm4, %xmm7
2487 ; SSE-NEXT:    pandn %xmm5, %xmm7
2488 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[2,2,3,3]
2489 ; SSE-NEXT:    pand %xmm4, %xmm5
2490 ; SSE-NEXT:    por %xmm5, %xmm7
2491 ; SSE-NEXT:    movdqa %xmm8, %xmm5
2492 ; SSE-NEXT:    pandn %xmm7, %xmm5
2493 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm10[0,1,2,3,5,6,6,7]
2494 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[2,2,2,2]
2495 ; SSE-NEXT:    movdqa %xmm2, %xmm9
2496 ; SSE-NEXT:    pandn %xmm7, %xmm9
2497 ; SSE-NEXT:    movdqa %xmm13, %xmm0
2498 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm13[8],xmm0[9],xmm13[9],xmm0[10],xmm13[10],xmm0[11],xmm13[11],xmm0[12],xmm13[12],xmm0[13],xmm13[13],xmm0[14],xmm13[14],xmm0[15],xmm13[15]
2499 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2500 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[0,1,2,1]
2501 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[1,1,2,3,4,5,6,7]
2502 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,4]
2503 ; SSE-NEXT:    pand %xmm2, %xmm7
2504 ; SSE-NEXT:    por %xmm9, %xmm7
2505 ; SSE-NEXT:    pand %xmm8, %xmm7
2506 ; SSE-NEXT:    por %xmm5, %xmm7
2507 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[2,2,2,2]
2508 ; SSE-NEXT:    movdqa %xmm12, %xmm0
2509 ; SSE-NEXT:    pandn %xmm5, %xmm0
2510 ; SSE-NEXT:    pand %xmm12, %xmm7
2511 ; SSE-NEXT:    por %xmm7, %xmm0
2512 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2513 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2514 ; SSE-NEXT:    movdqa %xmm3, %xmm0
2515 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
2516 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2517 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[2,1,2,3]
2518 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,0,4,5,6,7]
2519 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]
2520 ; SSE-NEXT:    movdqa %xmm15, %xmm7
2521 ; SSE-NEXT:    pandn %xmm5, %xmm7
2522 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
2523 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm10[1,2,2,3,4,5,6,7]
2524 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
2525 ; SSE-NEXT:    pand %xmm15, %xmm5
2526 ; SSE-NEXT:    por %xmm5, %xmm7
2527 ; SSE-NEXT:    movdqa %xmm6, %xmm5
2528 ; SSE-NEXT:    pandn %xmm7, %xmm5
2529 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2530 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm13[1,1,1,1]
2531 ; SSE-NEXT:    movdqa %xmm2, %xmm9
2532 ; SSE-NEXT:    pandn %xmm7, %xmm9
2533 ; SSE-NEXT:    movdqa %xmm11, %xmm14
2534 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm11[0],xmm14[1],xmm11[1],xmm14[2],xmm11[2],xmm14[3],xmm11[3],xmm14[4],xmm11[4],xmm14[5],xmm11[5],xmm14[6],xmm11[6],xmm14[7],xmm11[7]
2535 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm14[2,1,2,3]
2536 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[3,1,0,3,4,5,6,7]
2537 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,6,6]
2538 ; SSE-NEXT:    pand %xmm2, %xmm7
2539 ; SSE-NEXT:    por %xmm9, %xmm7
2540 ; SSE-NEXT:    pand %xmm6, %xmm7
2541 ; SSE-NEXT:    por %xmm5, %xmm7
2542 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2543 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[0,0,1,1]
2544 ; SSE-NEXT:    movdqa %xmm4, %xmm1
2545 ; SSE-NEXT:    pandn %xmm5, %xmm1
2546 ; SSE-NEXT:    pand %xmm4, %xmm7
2547 ; SSE-NEXT:    por %xmm7, %xmm1
2548 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2549 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2550 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2551 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm11[0,1,2,1]
2552 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
2553 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,5,4,7]
2554 ; SSE-NEXT:    movdqa %xmm4, %xmm7
2555 ; SSE-NEXT:    pandn %xmm5, %xmm7
2556 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm13[2,2,3,3]
2557 ; SSE-NEXT:    pand %xmm4, %xmm5
2558 ; SSE-NEXT:    por %xmm5, %xmm7
2559 ; SSE-NEXT:    movdqa %xmm8, %xmm5
2560 ; SSE-NEXT:    pandn %xmm7, %xmm5
2561 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm10[0,1,2,3,5,6,6,7]
2562 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[2,2,2,2]
2563 ; SSE-NEXT:    movdqa %xmm2, %xmm9
2564 ; SSE-NEXT:    pandn %xmm7, %xmm9
2565 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2566 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm3[8],xmm1[9],xmm3[9],xmm1[10],xmm3[10],xmm1[11],xmm3[11],xmm1[12],xmm3[12],xmm1[13],xmm3[13],xmm1[14],xmm3[14],xmm1[15],xmm3[15]
2567 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2568 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm1[0,1,2,1]
2569 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[1,1,2,3,4,5,6,7]
2570 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,4]
2571 ; SSE-NEXT:    pand %xmm2, %xmm7
2572 ; SSE-NEXT:    por %xmm9, %xmm7
2573 ; SSE-NEXT:    pand %xmm8, %xmm7
2574 ; SSE-NEXT:    por %xmm5, %xmm7
2575 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[2,2,2,2]
2576 ; SSE-NEXT:    movdqa %xmm12, %xmm0
2577 ; SSE-NEXT:    pandn %xmm5, %xmm0
2578 ; SSE-NEXT:    pand %xmm12, %xmm7
2579 ; SSE-NEXT:    por %xmm7, %xmm0
2580 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2581 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2582 ; SSE-NEXT:    movdqa %xmm0, %xmm1
2583 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2584 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2585 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[2,1,2,3]
2586 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,0,4,5,6,7]
2587 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]
2588 ; SSE-NEXT:    movdqa %xmm15, %xmm7
2589 ; SSE-NEXT:    pandn %xmm5, %xmm7
2590 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
2591 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm10[1,2,2,3,4,5,6,7]
2592 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
2593 ; SSE-NEXT:    pand %xmm15, %xmm5
2594 ; SSE-NEXT:    por %xmm5, %xmm7
2595 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
2596 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm11[1,1,1,1]
2597 ; SSE-NEXT:    movdqa %xmm2, %xmm9
2598 ; SSE-NEXT:    pandn %xmm5, %xmm9
2599 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2600 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2601 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2602 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2603 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[2,1,2,3]
2604 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[3,1,0,3,4,5,6,7]
2605 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,6,6]
2606 ; SSE-NEXT:    pand %xmm2, %xmm5
2607 ; SSE-NEXT:    por %xmm9, %xmm5
2608 ; SSE-NEXT:    pand %xmm6, %xmm5
2609 ; SSE-NEXT:    pandn %xmm7, %xmm6
2610 ; SSE-NEXT:    por %xmm5, %xmm6
2611 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
2612 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[0,0,1,1]
2613 ; SSE-NEXT:    movdqa %xmm4, %xmm1
2614 ; SSE-NEXT:    pandn %xmm5, %xmm1
2615 ; SSE-NEXT:    pand %xmm4, %xmm6
2616 ; SSE-NEXT:    por %xmm6, %xmm1
2617 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2618 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2619 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm3[8],xmm1[9],xmm3[9],xmm1[10],xmm3[10],xmm1[11],xmm3[11],xmm1[12],xmm3[12],xmm1[13],xmm3[13],xmm1[14],xmm3[14],xmm1[15],xmm3[15]
2620 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2621 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,1,2,1]
2622 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
2623 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,5,4,7]
2624 ; SSE-NEXT:    movdqa %xmm4, %xmm6
2625 ; SSE-NEXT:    pandn %xmm5, %xmm6
2626 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm11[2,2,3,3]
2627 ; SSE-NEXT:    pand %xmm4, %xmm5
2628 ; SSE-NEXT:    por %xmm5, %xmm6
2629 ; SSE-NEXT:    movdqa %xmm8, %xmm5
2630 ; SSE-NEXT:    pandn %xmm6, %xmm5
2631 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm10[0,1,2,3,5,6,6,7]
2632 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,2,2,2]
2633 ; SSE-NEXT:    movdqa %xmm2, %xmm7
2634 ; SSE-NEXT:    pandn %xmm6, %xmm7
2635 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
2636 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2637 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[0,1,2,1]
2638 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[1,1,2,3,4,5,6,7]
2639 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,7,6,4]
2640 ; SSE-NEXT:    pand %xmm2, %xmm6
2641 ; SSE-NEXT:    por %xmm7, %xmm6
2642 ; SSE-NEXT:    pand %xmm8, %xmm6
2643 ; SSE-NEXT:    por %xmm5, %xmm6
2644 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[2,2,2,2]
2645 ; SSE-NEXT:    movdqa %xmm12, %xmm0
2646 ; SSE-NEXT:    pandn %xmm5, %xmm0
2647 ; SSE-NEXT:    pand %xmm12, %xmm6
2648 ; SSE-NEXT:    por %xmm6, %xmm0
2649 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2650 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
2651 ; SSE-NEXT:    # xmm5 = mem[1,0,2,3,4,5,6,7]
2652 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]
2653 ; SSE-NEXT:    movdqa %xmm4, %xmm6
2654 ; SSE-NEXT:    pandn %xmm5, %xmm6
2655 ; SSE-NEXT:    movdqa (%rsp), %xmm3 # 16-byte Reload
2656 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm3[1,0,2,3,4,5,6,7]
2657 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
2658 ; SSE-NEXT:    pand %xmm4, %xmm5
2659 ; SSE-NEXT:    por %xmm5, %xmm6
2660 ; SSE-NEXT:    movdqa %xmm8, %xmm5
2661 ; SSE-NEXT:    pandn %xmm6, %xmm5
2662 ; SSE-NEXT:    pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
2663 ; SSE-NEXT:    # xmm6 = mem[0,1,2,2,4,5,6,7]
2664 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,0,1,3]
2665 ; SSE-NEXT:    movdqa %xmm12, %xmm7
2666 ; SSE-NEXT:    pandn %xmm6, %xmm7
2667 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
2668 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm9[0,0,0,0]
2669 ; SSE-NEXT:    pand %xmm12, %xmm6
2670 ; SSE-NEXT:    por %xmm6, %xmm7
2671 ; SSE-NEXT:    pand %xmm8, %xmm7
2672 ; SSE-NEXT:    por %xmm5, %xmm7
2673 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2674 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[0,0,0,0]
2675 ; SSE-NEXT:    movdqa %xmm2, %xmm1
2676 ; SSE-NEXT:    pandn %xmm5, %xmm1
2677 ; SSE-NEXT:    pand %xmm2, %xmm7
2678 ; SSE-NEXT:    por %xmm7, %xmm1
2679 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2680 ; SSE-NEXT:    pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
2681 ; SSE-NEXT:    # xmm5 = mem[0,1,2,3,5,7,6,7]
2682 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,2,3,2]
2683 ; SSE-NEXT:    movdqa %xmm2, %xmm6
2684 ; SSE-NEXT:    pandn %xmm5, %xmm6
2685 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm3[0,1,2,3,7,6,6,7]
2686 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,2,2,2]
2687 ; SSE-NEXT:    pand %xmm2, %xmm5
2688 ; SSE-NEXT:    por %xmm5, %xmm6
2689 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
2690 ; SSE-NEXT:    movdqa %xmm1, %xmm5
2691 ; SSE-NEXT:    pandn %xmm6, %xmm5
2692 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
2693 ; SSE-NEXT:    # xmm6 = mem[0,1,2,3,7,5,6,6]
2694 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,3,2,2]
2695 ; SSE-NEXT:    movdqa %xmm15, %xmm7
2696 ; SSE-NEXT:    pandn %xmm6, %xmm7
2697 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm9[3,3,3,3]
2698 ; SSE-NEXT:    pand %xmm15, %xmm6
2699 ; SSE-NEXT:    por %xmm6, %xmm7
2700 ; SSE-NEXT:    pand %xmm1, %xmm7
2701 ; SSE-NEXT:    por %xmm5, %xmm7
2702 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[3,3,3,3]
2703 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
2704 ; SSE-NEXT:    movdqa %xmm9, %xmm13
2705 ; SSE-NEXT:    pandn %xmm5, %xmm13
2706 ; SSE-NEXT:    pand %xmm9, %xmm7
2707 ; SSE-NEXT:    por %xmm7, %xmm13
2708 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
2709 ; SSE-NEXT:    # xmm5 = mem[1,0,2,3,4,5,6,7]
2710 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]
2711 ; SSE-NEXT:    movdqa %xmm4, %xmm6
2712 ; SSE-NEXT:    pandn %xmm5, %xmm6
2713 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
2714 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm11[1,0,2,3,4,5,6,7]
2715 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
2716 ; SSE-NEXT:    pand %xmm4, %xmm5
2717 ; SSE-NEXT:    por %xmm5, %xmm6
2718 ; SSE-NEXT:    movdqa %xmm8, %xmm5
2719 ; SSE-NEXT:    pandn %xmm6, %xmm5
2720 ; SSE-NEXT:    pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
2721 ; SSE-NEXT:    # xmm6 = mem[0,1,2,2,4,5,6,7]
2722 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,0,1,3]
2723 ; SSE-NEXT:    movdqa %xmm12, %xmm3
2724 ; SSE-NEXT:    pandn %xmm6, %xmm3
2725 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2726 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm1[0,0,0,0]
2727 ; SSE-NEXT:    pand %xmm12, %xmm6
2728 ; SSE-NEXT:    por %xmm6, %xmm3
2729 ; SSE-NEXT:    pand %xmm8, %xmm3
2730 ; SSE-NEXT:    por %xmm5, %xmm3
2731 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2732 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[0,0,0,0]
2733 ; SSE-NEXT:    movdqa %xmm2, %xmm10
2734 ; SSE-NEXT:    pandn %xmm5, %xmm10
2735 ; SSE-NEXT:    pand %xmm2, %xmm3
2736 ; SSE-NEXT:    por %xmm3, %xmm10
2737 ; SSE-NEXT:    pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
2738 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,5,7,6,7]
2739 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]
2740 ; SSE-NEXT:    movdqa %xmm2, %xmm5
2741 ; SSE-NEXT:    pandn %xmm3, %xmm5
2742 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm11[0,1,2,3,7,6,6,7]
2743 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,2,2,2]
2744 ; SSE-NEXT:    pand %xmm2, %xmm3
2745 ; SSE-NEXT:    por %xmm3, %xmm5
2746 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
2747 ; SSE-NEXT:    movdqa %xmm7, %xmm3
2748 ; SSE-NEXT:    pandn %xmm5, %xmm3
2749 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
2750 ; SSE-NEXT:    # xmm5 = mem[0,1,2,3,7,5,6,6]
2751 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,3,2,2]
2752 ; SSE-NEXT:    movdqa %xmm15, %xmm6
2753 ; SSE-NEXT:    pandn %xmm5, %xmm6
2754 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[3,3,3,3]
2755 ; SSE-NEXT:    pand %xmm15, %xmm5
2756 ; SSE-NEXT:    por %xmm5, %xmm6
2757 ; SSE-NEXT:    pand %xmm7, %xmm6
2758 ; SSE-NEXT:    por %xmm3, %xmm6
2759 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[3,3,3,3]
2760 ; SSE-NEXT:    movdqa %xmm9, %xmm7
2761 ; SSE-NEXT:    pandn %xmm3, %xmm7
2762 ; SSE-NEXT:    pand %xmm9, %xmm6
2763 ; SSE-NEXT:    por %xmm6, %xmm7
2764 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
2765 ; SSE-NEXT:    # xmm3 = mem[1,0,2,3,4,5,6,7]
2766 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]
2767 ; SSE-NEXT:    movdqa %xmm4, %xmm6
2768 ; SSE-NEXT:    pandn %xmm3, %xmm6
2769 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
2770 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm5[1,0,2,3,4,5,6,7]
2771 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]
2772 ; SSE-NEXT:    pand %xmm4, %xmm3
2773 ; SSE-NEXT:    por %xmm3, %xmm6
2774 ; SSE-NEXT:    movdqa %xmm8, %xmm3
2775 ; SSE-NEXT:    pandn %xmm6, %xmm3
2776 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm14[0,1,2,2,4,5,6,7]
2777 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,0,1,3]
2778 ; SSE-NEXT:    movdqa %xmm12, %xmm11
2779 ; SSE-NEXT:    pandn %xmm6, %xmm11
2780 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2781 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[0,0,0,0]
2782 ; SSE-NEXT:    pand %xmm12, %xmm6
2783 ; SSE-NEXT:    por %xmm6, %xmm11
2784 ; SSE-NEXT:    pand %xmm8, %xmm11
2785 ; SSE-NEXT:    por %xmm3, %xmm11
2786 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2787 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[0,0,0,0]
2788 ; SSE-NEXT:    movdqa %xmm2, %xmm14
2789 ; SSE-NEXT:    pandn %xmm3, %xmm14
2790 ; SSE-NEXT:    pand %xmm2, %xmm11
2791 ; SSE-NEXT:    por %xmm11, %xmm14
2792 ; SSE-NEXT:    pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
2793 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,5,7,6,7]
2794 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]
2795 ; SSE-NEXT:    movdqa %xmm2, %xmm6
2796 ; SSE-NEXT:    pandn %xmm3, %xmm6
2797 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm5[0,1,2,3,7,6,6,7]
2798 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,2,2,2]
2799 ; SSE-NEXT:    pand %xmm2, %xmm3
2800 ; SSE-NEXT:    por %xmm3, %xmm6
2801 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
2802 ; SSE-NEXT:    movdqa %xmm5, %xmm3
2803 ; SSE-NEXT:    pandn %xmm6, %xmm3
2804 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
2805 ; SSE-NEXT:    # xmm6 = mem[0,1,2,3,7,5,6,6]
2806 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,3,2,2]
2807 ; SSE-NEXT:    movdqa %xmm15, %xmm11
2808 ; SSE-NEXT:    pandn %xmm6, %xmm11
2809 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[3,3,3,3]
2810 ; SSE-NEXT:    pand %xmm15, %xmm6
2811 ; SSE-NEXT:    por %xmm6, %xmm11
2812 ; SSE-NEXT:    pand %xmm5, %xmm11
2813 ; SSE-NEXT:    por %xmm3, %xmm11
2814 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[3,3,3,3]
2815 ; SSE-NEXT:    movdqa %xmm9, %xmm6
2816 ; SSE-NEXT:    pandn %xmm3, %xmm6
2817 ; SSE-NEXT:    pand %xmm9, %xmm11
2818 ; SSE-NEXT:    por %xmm11, %xmm6
2819 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2820 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm1[1,0,2,3,4,5,6,7]
2821 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]
2822 ; SSE-NEXT:    pand %xmm4, %xmm3
2823 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
2824 ; SSE-NEXT:    # xmm11 = mem[1,0,2,3,4,5,6,7]
2825 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[0,1,0,1]
2826 ; SSE-NEXT:    pandn %xmm11, %xmm4
2827 ; SSE-NEXT:    por %xmm3, %xmm4
2828 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
2829 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[0,0,0,0]
2830 ; SSE-NEXT:    pand %xmm12, %xmm3
2831 ; SSE-NEXT:    pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
2832 ; SSE-NEXT:    # xmm11 = mem[0,1,2,2,4,5,6,7]
2833 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[0,0,1,3]
2834 ; SSE-NEXT:    pandn %xmm11, %xmm12
2835 ; SSE-NEXT:    por %xmm3, %xmm12
2836 ; SSE-NEXT:    pand %xmm8, %xmm12
2837 ; SSE-NEXT:    pandn %xmm4, %xmm8
2838 ; SSE-NEXT:    por %xmm12, %xmm8
2839 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
2840 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[0,0,0,0]
2841 ; SSE-NEXT:    movdqa %xmm2, %xmm0
2842 ; SSE-NEXT:    pandn %xmm3, %xmm0
2843 ; SSE-NEXT:    pand %xmm2, %xmm8
2844 ; SSE-NEXT:    por %xmm8, %xmm0
2845 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,6,6,7]
2846 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,2,2,2]
2847 ; SSE-NEXT:    pand %xmm2, %xmm1
2848 ; SSE-NEXT:    pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
2849 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,5,7,6,7]
2850 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]
2851 ; SSE-NEXT:    pandn %xmm3, %xmm2
2852 ; SSE-NEXT:    por %xmm1, %xmm2
2853 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm5[3,3,3,3]
2854 ; SSE-NEXT:    pand %xmm15, %xmm1
2855 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
2856 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,7,5,6,6]
2857 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,3,2,2]
2858 ; SSE-NEXT:    pandn %xmm3, %xmm15
2859 ; SSE-NEXT:    por %xmm1, %xmm15
2860 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
2861 ; SSE-NEXT:    pand %xmm1, %xmm15
2862 ; SSE-NEXT:    pandn %xmm2, %xmm1
2863 ; SSE-NEXT:    por %xmm15, %xmm1
2864 ; SSE-NEXT:    pand %xmm9, %xmm1
2865 ; SSE-NEXT:    movdqa %xmm1, %xmm2
2866 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[3,3,3,3]
2867 ; SSE-NEXT:    pandn %xmm1, %xmm9
2868 ; SSE-NEXT:    por %xmm2, %xmm9
2869 ; SSE-NEXT:    movdqa %xmm9, 304(%r9)
2870 ; SSE-NEXT:    movdqa %xmm0, 240(%r9)
2871 ; SSE-NEXT:    movdqa %xmm6, 224(%r9)
2872 ; SSE-NEXT:    movdqa %xmm14, 160(%r9)
2873 ; SSE-NEXT:    movdqa %xmm7, 144(%r9)
2874 ; SSE-NEXT:    movdqa %xmm10, 80(%r9)
2875 ; SSE-NEXT:    movdqa %xmm13, 64(%r9)
2876 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2877 ; SSE-NEXT:    movaps %xmm0, (%r9)
2878 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2879 ; SSE-NEXT:    movaps %xmm0, 288(%r9)
2880 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2881 ; SSE-NEXT:    movaps %xmm0, 256(%r9)
2882 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2883 ; SSE-NEXT:    movaps %xmm0, 208(%r9)
2884 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2885 ; SSE-NEXT:    movaps %xmm0, 176(%r9)
2886 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2887 ; SSE-NEXT:    movaps %xmm0, 128(%r9)
2888 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2889 ; SSE-NEXT:    movaps %xmm0, 96(%r9)
2890 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2891 ; SSE-NEXT:    movaps %xmm0, 48(%r9)
2892 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2893 ; SSE-NEXT:    movaps %xmm0, 16(%r9)
2894 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2895 ; SSE-NEXT:    movaps %xmm0, 272(%r9)
2896 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2897 ; SSE-NEXT:    movaps %xmm0, 192(%r9)
2898 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2899 ; SSE-NEXT:    movaps %xmm0, 112(%r9)
2900 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2901 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
2902 ; SSE-NEXT:    addq $504, %rsp # imm = 0x1F8
2903 ; SSE-NEXT:    retq
2905 ; AVX1-ONLY-LABEL: store_i8_stride5_vf64:
2906 ; AVX1-ONLY:       # %bb.0:
2907 ; AVX1-ONLY-NEXT:    subq $104, %rsp
2908 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rcx), %xmm0
2909 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [128,6,128,8,0,128,7,128,128,6,128,8,0,128,7,128]
2910 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
2911 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm0, %xmm2
2912 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, %xmm14
2913 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdx), %xmm1
2914 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm1[6],zero,xmm1[u,u,u,7],zero,xmm1[u,u,u,8],zero,xmm1[u,u,u,9]
2915 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm3
2916 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm9 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2917 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm9[u,6,7,u,u,u,8,9,u,u,u,10,11,u,u,u]
2918 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm4, %ymm3
2919 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm5 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]
2920 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm5, %ymm4
2921 ; AVX1-ONLY-NEXT:    vmovaps %ymm5, %ymm2
2922 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rsi), %xmm3
2923 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = [128,8,0,128,7,128,9,0,128,8,0,128,7,128,9,0]
2924 ; AVX1-ONLY-NEXT:    # xmm5 = mem[0,0]
2925 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm3, %xmm6
2926 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm10
2927 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm5
2928 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm8 = [8,128,0,7,128,9,128,0,8,128,0,7,128,9,128,0]
2929 ; AVX1-ONLY-NEXT:    # xmm8 = mem[0,0]
2930 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm5, %xmm7
2931 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, %xmm12
2932 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm7, %xmm6
2933 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm7 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7]
2934 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[6,u,u,u,9,8,u,u,u,11,10,u,u,u,13,12]
2935 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm7, %ymm6
2936 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm6, %ymm6
2937 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm6, %ymm4
2938 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm4, %xmm6
2939 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[0,1],zero,xmm6[3,4,5,6],zero,xmm6[8,9,10,11],zero,xmm6[13,14,15]
2940 ; AVX1-ONLY-NEXT:    vmovdqa 48(%r8), %xmm7
2941 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm7[6],zero,zero,zero,zero,xmm7[7],zero,zero,zero,zero,xmm7[8],zero,zero,zero
2942 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm8, %xmm6
2943 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2944 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,2],zero,xmm4[4,5,6,7],zero,xmm4[9,10,11,12],zero,xmm4[14,15]
2945 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm7[3],zero,zero,zero,zero,xmm7[4],zero,zero,zero,zero,xmm7[5],zero,zero
2946 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm4, %xmm4
2947 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2948 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm4 = xmm5[8],xmm3[8],xmm5[9],xmm3[9],xmm5[10],xmm3[10],xmm5[11],xmm3[11],xmm5[12],xmm3[12],xmm5[13],xmm3[13],xmm5[14],xmm3[14],xmm5[15],xmm3[15]
2949 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm4[u,10,11,u,u,u,12,13,u,u,u,14,15,u,u,u]
2950 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm8 = [7,0,4,5,8,9,0,6,7,0,4,5,8,9,0,6]
2951 ; AVX1-ONLY-NEXT:    # xmm8 = mem[0,0]
2952 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm4, %xmm4
2953 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm4, %ymm4
2954 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm6 = xmm1[8],xmm0[8],xmm1[9],xmm0[9],xmm1[10],xmm0[10],xmm1[11],xmm0[11],xmm1[12],xmm0[12],xmm1[13],xmm0[13],xmm1[14],xmm0[14],xmm1[15],xmm0[15]
2955 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
2956 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm6[u,u,u,10,11,u,u,u,12,13,u,u,u,14,15,u]
2957 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [2,7,6,0,5,4,9,8,2,7,6,0,5,4,9,8]
2958 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
2959 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm0, %xmm0
2960 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, %xmm15
2961 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2962 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm11 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
2963 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm11, %ymm1
2964 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm11, %ymm0
2965 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
2966 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm1
2967 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero
2968 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm7[12],zero,zero,zero,zero,xmm7[13],zero,zero,zero,zero,xmm7[14],zero,zero,zero,zero,xmm7[15]
2969 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm1, %xmm1
2970 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2971 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm13 = [0,128,2,3,4,5,128,7,8,9,10,128,12,13,14,15]
2972 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm0, %xmm0
2973 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm2 = [128,9,128,128,128,128,10,128,128,128,128,11,128,128,128,128]
2974 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm7, %xmm1
2975 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm0, %xmm0
2976 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2977 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rsi), %xmm0
2978 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm4
2979 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm0, %xmm1
2980 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm4, %xmm6
2981 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm6, %xmm1
2982 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm12 = xmm4[8],xmm0[8],xmm4[9],xmm0[9],xmm4[10],xmm0[10],xmm4[11],xmm0[11],xmm4[12],xmm0[12],xmm4[13],xmm0[13],xmm4[14],xmm0[14],xmm4[15],xmm0[15]
2983 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm12, %xmm6
2984 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm1, %ymm6
2985 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rcx), %xmm1
2986 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdx), %xmm8
2987 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm1, %xmm10
2988 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm8[6],zero,xmm8[u,u,u,7],zero,xmm8[u,u,u,8],zero,xmm8[u,u,u,9]
2989 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm14, %xmm10
2990 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm14 = xmm1[8],xmm8[8],xmm1[9],xmm8[9],xmm1[10],xmm8[10],xmm1[11],xmm8[11],xmm1[12],xmm8[12],xmm1[13],xmm8[13],xmm1[14],xmm8[14],xmm1[15],xmm8[15]
2991 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm14, %xmm14
2992 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm14, %ymm10, %ymm14
2993 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm10 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
2994 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm10, %ymm6
2995 ; AVX1-ONLY-NEXT:    vandps %ymm10, %ymm14, %ymm14
2996 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm14, %ymm14
2997 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm14, %xmm6
2998 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm6, %xmm15
2999 ; AVX1-ONLY-NEXT:    vmovdqa 32(%r8), %xmm6
3000 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm6, %xmm13
3001 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm15, %xmm2
3002 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3003 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm14[0,1],zero,xmm14[3,4,5,6],zero,xmm14[8,9,10,11],zero,xmm14[13,14,15]
3004 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,xmm6[6],zero,zero,zero,zero,xmm6[7],zero,zero,zero,zero,xmm6[8],zero,zero,zero
3005 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm13, %xmm2
3006 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, (%rsp) # 16-byte Spill
3007 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm14 = [3,0,0,1,4,5,0,2,3,0,0,1,4,5,0,2]
3008 ; AVX1-ONLY-NEXT:    # xmm14 = mem[0,0]
3009 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm9, %xmm2
3010 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm13 = xmm8[8],xmm1[8],xmm8[9],xmm1[9],xmm8[10],xmm1[10],xmm8[11],xmm1[11],xmm8[12],xmm1[12],xmm8[13],xmm1[13],xmm8[14],xmm1[14],xmm8[15],xmm1[15]
3011 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,10,11,u,u,u,12,13,u,u,u,14,15,u]
3012 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm13, %ymm2
3013 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm3 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3],xmm5[4],xmm3[4],xmm5[5],xmm3[5],xmm5[6],xmm3[6],xmm5[7],xmm3[7]
3014 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm13 = [0,1,4,5,0,2,3,6,0,1,4,5,0,2,3,6]
3015 ; AVX1-ONLY-NEXT:    # xmm13 = mem[0,0]
3016 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm3, %xmm3
3017 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm9 = [0,10,11,14,15,0,12,13,0,10,11,14,15,0,12,13]
3018 ; AVX1-ONLY-NEXT:    # xmm9 = mem[0,0]
3019 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm12, %xmm5
3020 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm5, %ymm3
3021 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm10, %ymm2
3022 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm10, %ymm3
3023 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm3, %ymm2
3024 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm3
3025 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm5 = [0,1,2,3,128,5,6,7,8,128,10,11,12,13,128,15]
3026 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm3, %xmm3
3027 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm12
3028 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm10 = [128,128,128,128,0,128,128,128,128,1,128,128,128,128,2,128]
3029 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm7, %xmm5
3030 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, %xmm7
3031 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm3, %xmm3
3032 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3033 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm5 = [128,1,2,3,4,128,6,7,8,9,128,11,12,13,14,128]
3034 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm2, %xmm2
3035 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm10 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15]
3036 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm6, %xmm3
3037 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm2, %xmm2
3038 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3039 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm1 = xmm8[0],xmm1[0],xmm8[1],xmm1[1],xmm8[2],xmm1[2],xmm8[3],xmm1[3],xmm8[4],xmm1[4],xmm8[5],xmm1[5],xmm8[6],xmm1[6],xmm8[7],xmm1[7]
3040 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm1[u,6,7,u,u,u,8,9,u,u,u,10,11,u,u,u]
3041 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm1, %xmm1
3042 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
3043 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
3044 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm0 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3],xmm4[4],xmm0[4],xmm4[5],xmm0[5],xmm4[6],xmm0[6],xmm4[7],xmm0[7]
3045 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[6,u,u,u,9,8,u,u,u,11,10,u,u,u,13,12]
3046 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm0, %xmm0
3047 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3048 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm11, %ymm1
3049 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm11, %ymm0
3050 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
3051 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm1
3052 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,2],zero,xmm1[4,5,6,7],zero,xmm1[9,10,11,12],zero,xmm1[14,15]
3053 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm6[3],zero,zero,zero,zero,xmm6[4],zero,zero,zero,zero,xmm6[5],zero,zero
3054 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm1, %xmm1
3055 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3056 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm0, %xmm0
3057 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm6, %xmm1
3058 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm0, %xmm0
3059 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3060 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rsi), %xmm8
3061 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm6
3062 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm0 = xmm6[8],xmm8[8],xmm6[9],xmm8[9],xmm6[10],xmm8[10],xmm6[11],xmm8[11],xmm6[12],xmm8[12],xmm6[13],xmm8[13],xmm6[14],xmm8[14],xmm6[15],xmm8[15]
3063 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm0, %xmm1
3064 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, %xmm15
3065 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]
3066 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
3067 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rcx), %xmm1
3068 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdx), %xmm2
3069 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm3 = xmm2[8],xmm1[8],xmm2[9],xmm1[9],xmm2[10],xmm1[10],xmm2[11],xmm1[11],xmm2[12],xmm1[12],xmm2[13],xmm1[13],xmm2[14],xmm1[14],xmm2[15],xmm1[15]
3070 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm12 = [12,13,0,10,11,14,15,0,12,13,0,10,11,14,15,0]
3071 ; AVX1-ONLY-NEXT:    # xmm12 = mem[0,0]
3072 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm3, %xmm3
3073 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm4 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
3074 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]
3075 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm4, %ymm3
3076 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm11, %ymm0
3077 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm11, %ymm3
3078 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm3, %ymm3
3079 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm3, %xmm0
3080 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm0, %xmm4
3081 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm11
3082 ; AVX1-ONLY-NEXT:    vmovdqa 16(%r8), %xmm0
3083 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm0, %xmm7
3084 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm4, %xmm4
3085 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3086 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0],zero,xmm3[2,3,4,5],zero,xmm3[7,8,9,10],zero,xmm3[12,13,14,15]
3087 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = zero,xmm0[9],zero,zero,zero,zero,xmm0[10],zero,zero,zero,zero,xmm0[11],zero,zero,zero,zero
3088 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm3, %xmm3
3089 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3090 ; AVX1-ONLY-NEXT:    vmovdqa (%rcx), %xmm9
3091 ; AVX1-ONLY-NEXT:    vmovdqa (%rdx), %xmm7
3092 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm3 = xmm7[8],xmm9[8],xmm7[9],xmm9[9],xmm7[10],xmm9[10],xmm7[11],xmm9[11],xmm7[12],xmm9[12],xmm7[13],xmm9[13],xmm7[14],xmm9[14],xmm7[15],xmm9[15]
3093 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm3, %xmm3
3094 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm4 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
3095 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm4, %xmm5
3096 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm3, %ymm12
3097 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm3 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3],xmm6[4],xmm8[4],xmm6[5],xmm8[5],xmm6[6],xmm8[6],xmm6[7],xmm8[7]
3098 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm3, %xmm13
3099 ; AVX1-ONLY-NEXT:    vmovdqa (%rsi), %xmm5
3100 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm3
3101 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm10 = xmm3[8],xmm5[8],xmm3[9],xmm5[9],xmm3[10],xmm5[10],xmm3[11],xmm5[11],xmm3[12],xmm5[12],xmm3[13],xmm5[13],xmm3[14],xmm5[14],xmm3[15],xmm5[15]
3102 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm10, %xmm14
3103 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm13, %ymm14, %ymm13
3104 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm14 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
3105 ; AVX1-ONLY-NEXT:    vandnps %ymm12, %ymm14, %ymm12
3106 ; AVX1-ONLY-NEXT:    vandps %ymm14, %ymm13, %ymm13
3107 ; AVX1-ONLY-NEXT:    vorps %ymm12, %ymm13, %ymm12
3108 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm12, %xmm13
3109 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[0,1,2,3],zero,xmm13[5,6,7,8],zero,xmm13[10,11,12,13],zero,xmm13[15]
3110 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,zero,zero,xmm0[0],zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,xmm0[2],zero
3111 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm13, %xmm13
3112 ; AVX1-ONLY-NEXT:    vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3113 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm12, %xmm12
3114 ; AVX1-ONLY-NEXT:    vmovdqa (%r8), %xmm13
3115 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm15 = xmm13[12],zero,zero,zero,zero,xmm13[13],zero,zero,zero,zero,xmm13[14],zero,zero,zero,zero,xmm13[15]
3116 ; AVX1-ONLY-NEXT:    vpor %xmm15, %xmm12, %xmm11
3117 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3118 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm11 = [128,6,128,8,0,128,7,128,128,6,128,8,0,128,7,128]
3119 ; AVX1-ONLY-NEXT:    # xmm11 = mem[0,0]
3120 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm1, %xmm1
3121 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[6],zero,xmm2[u,u,u,7],zero,xmm2[u,u,u,8],zero,xmm2[u,u,u,9]
3122 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
3123 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm11 = [0,6,7,10,11,0,8,9,0,6,7,10,11,0,8,9]
3124 ; AVX1-ONLY-NEXT:    # xmm11 = mem[0,0]
3125 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm4, %xmm2
3126 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
3127 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm8[u,u,u],zero,xmm8[7,u,u,u],zero,xmm8[8,u,u,u],zero,xmm8[9,u]
3128 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,7],zero,xmm6[u,u,u,8],zero,xmm6[u,u,u,9],zero,xmm6[u]
3129 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm4, %xmm2
3130 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm4 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3],xmm8[4],xmm6[4],xmm8[5],xmm6[5],xmm8[6],xmm6[6],xmm8[7],xmm6[7]
3131 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [6,11,10,0,9,8,13,12,6,11,10,0,9,8,13,12]
3132 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
3133 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm4, %xmm4
3134 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm2
3135 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm4 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]
3136 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm4, %ymm1
3137 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm2, %ymm2
3138 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm2, %ymm2
3139 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm1
3140 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm14 = [0,1,128,3,4,5,6,128,8,9,10,11,128,13,14,15]
3141 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm1, %xmm1
3142 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm15 = [128,128,6,128,128,128,128,7,128,128,128,128,8,128,128,128]
3143 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm0, %xmm4
3144 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm1, %xmm12
3145 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm1 = [0,1,2,128,4,5,6,7,128,9,10,11,12,128,14,15]
3146 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm2, %xmm2
3147 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm8 = [128,128,128,3,128,128,128,128,4,128,128,128,128,5,128,128]
3148 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm0, %xmm0
3149 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm0
3150 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm7[0],xmm9[0],xmm7[1],xmm9[1],xmm7[2],xmm9[2],xmm7[3],xmm9[3],xmm7[4],xmm9[4],xmm7[5],xmm9[5],xmm7[6],xmm9[6],xmm7[7],xmm9[7]
3151 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm2, %xmm4
3152 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,0,1,u,u,u,2,3,u,u,u,4,5,u,u]
3153 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm4, %ymm2, %ymm2
3154 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm4 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3],xmm5[4],xmm3[4],xmm5[5],xmm3[5],xmm5[6],xmm3[6],xmm5[7],xmm3[7]
3155 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm4, %xmm4
3156 ; AVX1-ONLY-NEXT:    vpunpcklbw {{.*#+}} xmm6 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7]
3157 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[0,1,u,u,u,2,3,u,u,u,4,5,u,u,u,6]
3158 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm4, %ymm6, %ymm4
3159 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm6 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
3160 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm6, %ymm2
3161 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm4, %ymm4
3162 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm4, %ymm4
3163 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm4, %xmm2
3164 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm2, %xmm2
3165 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm13, %xmm6
3166 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm2, %xmm2
3167 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,2,3],zero,xmm4[5,6,7,8],zero,xmm4[10,11,12,13],zero,xmm4[15]
3168 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,zero,xmm13[0],zero,zero,zero,zero,xmm13[1],zero,zero,zero,zero,xmm13[2],zero
3169 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm4, %xmm4
3170 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u],zero,xmm5[7,u,u,u],zero,xmm5[8,u,u,u],zero,xmm5[9,u]
3171 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,7],zero,xmm3[u,u,u,8],zero,xmm3[u,u,u,9],zero,xmm3[u]
3172 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm3, %xmm3
3173 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm10[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]
3174 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm3, %ymm3
3175 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,xmm9[6,u,u,u],zero,xmm9[7,u,u,u],zero,xmm9[8,u,u,u],zero
3176 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm7[6],zero,xmm7[u,u,u,7],zero,xmm7[u,u,u,8],zero,xmm7[u,u,u,9]
3177 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm6, %xmm5
3178 ; AVX1-ONLY-NEXT:    vpunpckhbw {{.*#+}} xmm6 = xmm9[8],xmm7[8],xmm9[9],xmm7[9],xmm9[10],xmm7[10],xmm9[11],xmm7[11],xmm9[12],xmm7[12],xmm9[13],xmm7[13],xmm9[14],xmm7[14],xmm9[15],xmm7[15]
3179 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]
3180 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
3181 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm1 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
3182 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm1, %ymm3
3183 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm5, %ymm5
3184 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm5, %ymm3
3185 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm3, %xmm5
3186 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0],zero,xmm5[2,3,4,5],zero,xmm5[7,8,9,10],zero,xmm5[12,13,14,15]
3187 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,xmm13[9],zero,zero,zero,zero,xmm13[10],zero,zero,zero,zero,xmm13[11],zero,zero,zero,zero
3188 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm5, %xmm5
3189 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm3, %xmm3
3190 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm13, %xmm6
3191 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm3, %xmm3
3192 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, 32(%r9)
3193 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, 48(%r9)
3194 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, (%r9)
3195 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, 16(%r9)
3196 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, 96(%r9)
3197 ; AVX1-ONLY-NEXT:    vmovdqa %xmm12, 112(%r9)
3198 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3199 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 64(%r9)
3200 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3201 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 80(%r9)
3202 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3203 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 128(%r9)
3204 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3205 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 144(%r9)
3206 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3207 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 160(%r9)
3208 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3209 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 176(%r9)
3210 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3211 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 224(%r9)
3212 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3213 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 240(%r9)
3214 ; AVX1-ONLY-NEXT:    vmovaps (%rsp), %xmm0 # 16-byte Reload
3215 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 192(%r9)
3216 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3217 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 208(%r9)
3218 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3219 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 288(%r9)
3220 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3221 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 304(%r9)
3222 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3223 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 256(%r9)
3224 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3225 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 272(%r9)
3226 ; AVX1-ONLY-NEXT:    addq $104, %rsp
3227 ; AVX1-ONLY-NEXT:    vzeroupper
3228 ; AVX1-ONLY-NEXT:    retq
3230 ; AVX2-SLOW-LABEL: store_i8_stride5_vf64:
3231 ; AVX2-SLOW:       # %bb.0:
3232 ; AVX2-SLOW-NEXT:    subq $312, %rsp # imm = 0x138
3233 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm10
3234 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %xmm1
3235 ; AVX2-SLOW-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3236 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rcx), %xmm11
3237 ; AVX2-SLOW-NEXT:    vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3238 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm0 = <128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12>
3239 ; AVX2-SLOW-NEXT:    vpshufb %xmm0, %xmm1, %xmm1
3240 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %xmm3
3241 ; AVX2-SLOW-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3242 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdx), %xmm12
3243 ; AVX2-SLOW-NEXT:    vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3244 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm2 = <6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128>
3245 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm3, %xmm3
3246 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm3, %xmm1
3247 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
3248 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %xmm4
3249 ; AVX2-SLOW-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3250 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm3 = <8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11>
3251 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm4, %xmm4
3252 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %xmm14
3253 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm5 = <128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128>
3254 ; AVX2-SLOW-NEXT:    vpshufb %xmm5, %xmm14, %xmm8
3255 ; AVX2-SLOW-NEXT:    vpor %xmm4, %xmm8, %xmm4
3256 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
3257 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = <255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255>
3258 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm1, %ymm4, %ymm1
3259 ; AVX2-SLOW-NEXT:    vmovdqa (%r8), %xmm4
3260 ; AVX2-SLOW-NEXT:    vmovdqa %xmm4, (%rsp) # 16-byte Spill
3261 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,2]
3262 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]
3263 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
3264 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm1, %ymm4, %ymm1
3265 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3266 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdi), %xmm4
3267 ; AVX2-SLOW-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3268 ; AVX2-SLOW-NEXT:    vpshufb %xmm0, %xmm11, %xmm0
3269 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm12, %xmm1
3270 ; AVX2-SLOW-NEXT:    vpor %xmm0, %xmm1, %xmm0
3271 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rsi), %xmm2
3272 ; AVX2-SLOW-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3273 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm4, %xmm1
3274 ; AVX2-SLOW-NEXT:    vpshufb %xmm5, %xmm2, %xmm2
3275 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm2, %xmm1
3276 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rsi), %ymm2
3277 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]
3278 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
3279 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm0, %ymm1, %ymm0
3280 ; AVX2-SLOW-NEXT:    vmovdqa 32(%r8), %xmm1
3281 ; AVX2-SLOW-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3282 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
3283 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,1,1]
3284 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm0, %ymm1, %ymm0
3285 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3286 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm15 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,19,20,128,22,128,24,128,22,23,128,25,128,23]
3287 ; AVX2-SLOW-NEXT:    vpshufb %ymm15, %ymm10, %ymm1
3288 ; AVX2-SLOW-NEXT:    vmovdqa %ymm10, %ymm11
3289 ; AVX2-SLOW-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3290 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
3291 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]
3292 ; AVX2-SLOW-NEXT:    # ymm5 = mem[0,1,0,1]
3293 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm2, %ymm3
3294 ; AVX2-SLOW-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3295 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
3296 ; AVX2-SLOW-NEXT:    vpor %ymm1, %ymm3, %ymm1
3297 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rcx), %ymm7
3298 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]
3299 ; AVX2-SLOW-NEXT:    # ymm3 = mem[0,1,0,1]
3300 ; AVX2-SLOW-NEXT:    vpshufb %ymm3, %ymm7, %ymm4
3301 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm4[2,2,3,3]
3302 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdx), %ymm13
3303 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm4 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25]
3304 ; AVX2-SLOW-NEXT:    vpshufb %ymm4, %ymm13, %ymm12
3305 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[2,2,3,3]
3306 ; AVX2-SLOW-NEXT:    vpor %ymm9, %ymm12, %ymm9
3307 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm12 = <255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0>
3308 ; AVX2-SLOW-NEXT:    vpblendvb %ymm12, %ymm1, %ymm9, %ymm9
3309 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %ymm6
3310 ; AVX2-SLOW-NEXT:    vpshufb %ymm15, %ymm6, %ymm1
3311 ; AVX2-SLOW-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3312 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
3313 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %ymm15
3314 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm15, %ymm5
3315 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
3316 ; AVX2-SLOW-NEXT:    vpor %ymm1, %ymm5, %ymm5
3317 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %ymm10
3318 ; AVX2-SLOW-NEXT:    vpshufb %ymm3, %ymm10, %ymm3
3319 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm3[2,2,3,3]
3320 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %ymm8
3321 ; AVX2-SLOW-NEXT:    vpshufb %ymm4, %ymm8, %ymm4
3322 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
3323 ; AVX2-SLOW-NEXT:    vpor %ymm0, %ymm4, %ymm0
3324 ; AVX2-SLOW-NEXT:    vpblendvb %ymm12, %ymm5, %ymm0, %ymm0
3325 ; AVX2-SLOW-NEXT:    vmovdqa 32(%r8), %ymm12
3326 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm12[0,2,1,1,4,6,5,5]
3327 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,3,3,2]
3328 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
3329 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm9, %ymm4, %ymm1
3330 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3331 ; AVX2-SLOW-NEXT:    vmovdqa (%r8), %ymm9
3332 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm9[0,2,1,1,4,6,5,5]
3333 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,3,3,2]
3334 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm0, %ymm4, %ymm0
3335 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3336 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm3 = <3,3,3,u,4,4,4,4>
3337 ; AVX2-SLOW-NEXT:    vpermd %ymm11, %ymm3, %ymm4
3338 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm5 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]
3339 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm2, %ymm0
3340 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = <u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255>
3341 ; AVX2-SLOW-NEXT:    vpblendvb %ymm1, %ymm4, %ymm0, %ymm0
3342 ; AVX2-SLOW-NEXT:    vpermd %ymm6, %ymm3, %ymm2
3343 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm15, %ymm4
3344 ; AVX2-SLOW-NEXT:    vpblendvb %ymm1, %ymm2, %ymm4, %ymm1
3345 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]
3346 ; AVX2-SLOW-NEXT:    vmovdqa %ymm7, %ymm3
3347 ; AVX2-SLOW-NEXT:    vpshufb %ymm2, %ymm7, %ymm4
3348 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = [128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128]
3349 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm13, %ymm11
3350 ; AVX2-SLOW-NEXT:    vpor %ymm4, %ymm11, %ymm4
3351 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = <u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255>
3352 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm0, %ymm4, %ymm0
3353 ; AVX2-SLOW-NEXT:    vpshufb %ymm2, %ymm10, %ymm2
3354 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm8, %ymm4
3355 ; AVX2-SLOW-NEXT:    vpor %ymm2, %ymm4, %ymm2
3356 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm1, %ymm2, %ymm1
3357 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <3,3,3,3,u,4,4,4>
3358 ; AVX2-SLOW-NEXT:    vpermd %ymm12, %ymm2, %ymm4
3359 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
3360 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm0, %ymm4, %ymm0
3361 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3362 ; AVX2-SLOW-NEXT:    vpermd %ymm9, %ymm2, %ymm0
3363 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm1, %ymm0, %ymm0
3364 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3365 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3366 ; AVX2-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm0 = xmm0[0],xmm14[0],xmm0[1],xmm14[1],xmm0[2],xmm14[2],xmm0[3],xmm14[3],xmm0[4],xmm14[4],xmm0[5],xmm14[5],xmm0[6],xmm14[6],xmm0[7],xmm14[7]
3367 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3368 ; AVX2-SLOW-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
3369 ; AVX2-SLOW-NEXT:    # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3],xmm1[4],mem[4],xmm1[5],mem[5],xmm1[6],mem[6],xmm1[7],mem[7]
3370 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm14 = <0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13>
3371 ; AVX2-SLOW-NEXT:    vpshufb %xmm14, %xmm0, %xmm0
3372 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]
3373 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm7 = <2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8>
3374 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
3375 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
3376 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = <255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255>
3377 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm6
3378 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3379 ; AVX2-SLOW-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload
3380 ; AVX2-SLOW-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],xmm0[5],mem[5],xmm0[6],mem[6],xmm0[7],mem[7]
3381 ; AVX2-SLOW-NEXT:    vpshufb %xmm14, %xmm0, %xmm0
3382 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3383 ; AVX2-SLOW-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
3384 ; AVX2-SLOW-NEXT:    # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3],xmm1[4],mem[4],xmm1[5],mem[5],xmm1[6],mem[6],xmm1[7],mem[7]
3385 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
3386 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]
3387 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
3388 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm0
3389 ; AVX2-SLOW-NEXT:    vpshufd $80, (%rsp), %xmm1 # 16-byte Folded Reload
3390 ; AVX2-SLOW-NEXT:    # xmm1 = mem[0,0,1,1]
3391 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]
3392 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
3393 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm6, %ymm1, %ymm6
3394 ; AVX2-SLOW-NEXT:    vpshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
3395 ; AVX2-SLOW-NEXT:    # xmm1 = mem[0,0,1,1]
3396 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]
3397 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm7
3398 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm0 = [9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12]
3399 ; AVX2-SLOW-NEXT:    vpshufb %ymm0, %ymm3, %ymm1
3400 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm2 = ymm13[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
3401 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm2[2,2,3,3,6,6,7,7]
3402 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [255,0,255,0,0,255,0,255,0,255,0,0,255,0,255,0,255,0,255,0,0,255,0,255,0,255,0,0,255,0,255,0]
3403 ; AVX2-SLOW-NEXT:    # ymm4 = mem[0,1,0,1]
3404 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm1, %ymm2, %ymm1
3405 ; AVX2-SLOW-NEXT:    vpshufb %ymm0, %ymm10, %ymm0
3406 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm2 = ymm8[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
3407 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm2[2,2,3,3,6,6,7,7]
3408 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm0, %ymm2, %ymm0
3409 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14]
3410 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
3411 ; AVX2-SLOW-NEXT:    vpshufb %ymm2, %ymm3, %ymm3
3412 ; AVX2-SLOW-NEXT:    vpshufhw $230, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
3413 ; AVX2-SLOW-NEXT:    # ymm4 = mem[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
3414 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]
3415 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [255,0,0,255,0,255,0,0,0,0,255,0,255,0,0,255,255,0,0,255,0,255,0,0,0,0,255,0,255,0,0,255]
3416 ; AVX2-SLOW-NEXT:    # ymm5 = mem[0,1,0,1]
3417 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm3, %ymm4, %ymm3
3418 ; AVX2-SLOW-NEXT:    vpshufb %ymm2, %ymm15, %ymm2
3419 ; AVX2-SLOW-NEXT:    vpshufhw $230, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
3420 ; AVX2-SLOW-NEXT:    # ymm4 = mem[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
3421 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]
3422 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm2, %ymm4, %ymm2
3423 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
3424 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
3425 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm4 = <255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u>
3426 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm1, %ymm3, %ymm1
3427 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
3428 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
3429 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm0, %ymm2, %ymm0
3430 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm12[2,2,3,3,6,6,7,7]
3431 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
3432 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm3 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
3433 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm1, %ymm2, %ymm1
3434 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm9[2,2,3,3,6,6,7,7]
3435 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
3436 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm0, %ymm2, %ymm0
3437 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
3438 ; AVX2-SLOW-NEXT:    vmovaps %ymm2, 64(%r9)
3439 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
3440 ; AVX2-SLOW-NEXT:    vmovaps %ymm2, 224(%r9)
3441 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
3442 ; AVX2-SLOW-NEXT:    vmovaps %ymm2, 96(%r9)
3443 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
3444 ; AVX2-SLOW-NEXT:    vmovaps %ymm2, 256(%r9)
3445 ; AVX2-SLOW-NEXT:    vmovdqa %ymm0, 128(%r9)
3446 ; AVX2-SLOW-NEXT:    vmovdqa %ymm7, 160(%r9)
3447 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3448 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 192(%r9)
3449 ; AVX2-SLOW-NEXT:    vmovdqa %ymm1, 288(%r9)
3450 ; AVX2-SLOW-NEXT:    vmovdqa %ymm6, (%r9)
3451 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3452 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 32(%r9)
3453 ; AVX2-SLOW-NEXT:    addq $312, %rsp # imm = 0x138
3454 ; AVX2-SLOW-NEXT:    vzeroupper
3455 ; AVX2-SLOW-NEXT:    retq
3457 ; AVX2-FAST-LABEL: store_i8_stride5_vf64:
3458 ; AVX2-FAST:       # %bb.0:
3459 ; AVX2-FAST-NEXT:    subq $168, %rsp
3460 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdx), %ymm13
3461 ; AVX2-FAST-NEXT:    vmovdqa 32(%rcx), %ymm10
3462 ; AVX2-FAST-NEXT:    vmovdqa (%r8), %ymm11
3463 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %xmm1
3464 ; AVX2-FAST-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3465 ; AVX2-FAST-NEXT:    vmovdqa 32(%rcx), %xmm6
3466 ; AVX2-FAST-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3467 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm0 = <128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12>
3468 ; AVX2-FAST-NEXT:    vpshufb %xmm0, %xmm1, %xmm1
3469 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %xmm3
3470 ; AVX2-FAST-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3471 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdx), %xmm8
3472 ; AVX2-FAST-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3473 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm2 = <6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128>
3474 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm3, %xmm3
3475 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm3, %xmm1
3476 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
3477 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %xmm4
3478 ; AVX2-FAST-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3479 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm3 = <8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11>
3480 ; AVX2-FAST-NEXT:    vpshufb %xmm3, %xmm4, %xmm4
3481 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %xmm7
3482 ; AVX2-FAST-NEXT:    vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3483 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm5 = <128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128>
3484 ; AVX2-FAST-NEXT:    vpshufb %xmm5, %xmm7, %xmm7
3485 ; AVX2-FAST-NEXT:    vpor %xmm4, %xmm7, %xmm4
3486 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
3487 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255>
3488 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm1, %ymm4, %ymm1
3489 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdi), %xmm4
3490 ; AVX2-FAST-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3491 ; AVX2-FAST-NEXT:    vpshufb %xmm0, %xmm6, %xmm0
3492 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm8, %xmm2
3493 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm2, %xmm0
3494 ; AVX2-FAST-NEXT:    vmovdqa 32(%rsi), %xmm6
3495 ; AVX2-FAST-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3496 ; AVX2-FAST-NEXT:    vpshufb %xmm3, %xmm4, %xmm2
3497 ; AVX2-FAST-NEXT:    vpshufb %xmm5, %xmm6, %xmm3
3498 ; AVX2-FAST-NEXT:    vpor %xmm2, %xmm3, %xmm2
3499 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm3 = [1,1,2,2,2,2,2,2]
3500 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]
3501 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]
3502 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm0, %ymm2, %ymm0
3503 ; AVX2-FAST-NEXT:    vpermd %ymm11, %ymm3, %ymm2
3504 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
3505 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm1, %ymm2, %ymm1
3506 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3507 ; AVX2-FAST-NEXT:    vmovdqa 32(%r8), %ymm12
3508 ; AVX2-FAST-NEXT:    vpermd %ymm12, %ymm3, %ymm1
3509 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm0
3510 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3511 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,29,26,128,28,128,30,128,28,29,128,31,128,29]
3512 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm13, %ymm1
3513 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
3514 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128]
3515 ; AVX2-FAST-NEXT:    # ymm8 = mem[0,1,0,1]
3516 ; AVX2-FAST-NEXT:    vpshufb %ymm8, %ymm10, %ymm2
3517 ; AVX2-FAST-NEXT:    vmovdqa %ymm10, %ymm14
3518 ; AVX2-FAST-NEXT:    vmovdqu %ymm10, (%rsp) # 32-byte Spill
3519 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
3520 ; AVX2-FAST-NEXT:    vpor %ymm1, %ymm2, %ymm1
3521 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdi), %ymm3
3522 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,29,26,128,28,128,26,27,28,29,128,31,128,29,30,128]
3523 ; AVX2-FAST-NEXT:    vpshufb %ymm9, %ymm3, %ymm2
3524 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm2[2,2,3,3]
3525 ; AVX2-FAST-NEXT:    vmovdqa 32(%rsi), %ymm2
3526 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm15 = [27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30,27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30]
3527 ; AVX2-FAST-NEXT:    # ymm15 = mem[0,1,0,1]
3528 ; AVX2-FAST-NEXT:    vpshufb %ymm15, %ymm2, %ymm5
3529 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
3530 ; AVX2-FAST-NEXT:    vpor %ymm4, %ymm5, %ymm4
3531 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u>
3532 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm1, %ymm4, %ymm4
3533 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %ymm10
3534 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm10, %ymm0
3535 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
3536 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %ymm5
3537 ; AVX2-FAST-NEXT:    vpshufb %ymm8, %ymm5, %ymm1
3538 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
3539 ; AVX2-FAST-NEXT:    vpor %ymm0, %ymm1, %ymm8
3540 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %ymm1
3541 ; AVX2-FAST-NEXT:    vpshufb %ymm9, %ymm1, %ymm0
3542 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm0[2,2,3,3]
3543 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %ymm0
3544 ; AVX2-FAST-NEXT:    vpshufb %ymm15, %ymm0, %ymm15
3545 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[2,2,3,3]
3546 ; AVX2-FAST-NEXT:    vpor %ymm9, %ymm15, %ymm9
3547 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm8, %ymm9, %ymm7
3548 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [6,6,6,6,7,7,7,7]
3549 ; AVX2-FAST-NEXT:    vpermd %ymm12, %ymm8, %ymm9
3550 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm15 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
3551 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm4, %ymm9, %ymm4
3552 ; AVX2-FAST-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3553 ; AVX2-FAST-NEXT:    vpermd %ymm11, %ymm8, %ymm4
3554 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm7, %ymm4, %ymm4
3555 ; AVX2-FAST-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3556 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,19,20,128,22,128,24,128,22,23,128,25,128,23]
3557 ; AVX2-FAST-NEXT:    vpshufb %ymm6, %ymm3, %ymm7
3558 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
3559 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]
3560 ; AVX2-FAST-NEXT:    # ymm8 = mem[0,1,0,1]
3561 ; AVX2-FAST-NEXT:    vpshufb %ymm8, %ymm2, %ymm9
3562 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
3563 ; AVX2-FAST-NEXT:    vpor %ymm7, %ymm9, %ymm7
3564 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm9 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]
3565 ; AVX2-FAST-NEXT:    # ymm9 = mem[0,1,0,1]
3566 ; AVX2-FAST-NEXT:    vpshufb %ymm9, %ymm14, %ymm15
3567 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[2,2,3,3]
3568 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25]
3569 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm13, %ymm14
3570 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm14 = ymm14[2,2,3,3]
3571 ; AVX2-FAST-NEXT:    vpor %ymm15, %ymm14, %ymm14
3572 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm15 = <255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0>
3573 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm7, %ymm14, %ymm7
3574 ; AVX2-FAST-NEXT:    vpshufb %ymm6, %ymm1, %ymm6
3575 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
3576 ; AVX2-FAST-NEXT:    vpshufb %ymm8, %ymm0, %ymm8
3577 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
3578 ; AVX2-FAST-NEXT:    vpor %ymm6, %ymm8, %ymm6
3579 ; AVX2-FAST-NEXT:    vpshufb %ymm9, %ymm5, %ymm8
3580 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
3581 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm10, %ymm4
3582 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
3583 ; AVX2-FAST-NEXT:    vpor %ymm4, %ymm8, %ymm4
3584 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm6, %ymm4, %ymm4
3585 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = [4,6,5,5,5,5,4,6]
3586 ; AVX2-FAST-NEXT:    vpermd %ymm12, %ymm6, %ymm8
3587 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm14 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
3588 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm7, %ymm8, %ymm9
3589 ; AVX2-FAST-NEXT:    vpermd %ymm11, %ymm6, %ymm6
3590 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm4, %ymm6, %ymm7
3591 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = <3,3,3,u,4,4,4,4>
3592 ; AVX2-FAST-NEXT:    vpermd %ymm3, %ymm4, %ymm3
3593 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} ymm6 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]
3594 ; AVX2-FAST-NEXT:    vpshufb %ymm6, %ymm2, %ymm2
3595 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = <u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255>
3596 ; AVX2-FAST-NEXT:    vpblendvb %ymm8, %ymm3, %ymm2, %ymm2
3597 ; AVX2-FAST-NEXT:    vpermd %ymm1, %ymm4, %ymm1
3598 ; AVX2-FAST-NEXT:    vpshufb %ymm6, %ymm0, %ymm0
3599 ; AVX2-FAST-NEXT:    vpblendvb %ymm8, %ymm1, %ymm0, %ymm0
3600 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]
3601 ; AVX2-FAST-NEXT:    vmovdqu (%rsp), %ymm3 # 32-byte Reload
3602 ; AVX2-FAST-NEXT:    vpshufb %ymm1, %ymm3, %ymm3
3603 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128]
3604 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm13, %ymm6
3605 ; AVX2-FAST-NEXT:    vpor %ymm3, %ymm6, %ymm3
3606 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = <u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255>
3607 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm2, %ymm3, %ymm2
3608 ; AVX2-FAST-NEXT:    vpshufb %ymm1, %ymm5, %ymm1
3609 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm10, %ymm3
3610 ; AVX2-FAST-NEXT:    vpor %ymm1, %ymm3, %ymm1
3611 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm0, %ymm1, %ymm1
3612 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm3 = <3,3,3,3,u,4,4,4>
3613 ; AVX2-FAST-NEXT:    vpermd %ymm12, %ymm3, %ymm0
3614 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
3615 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm2, %ymm0, %ymm0
3616 ; AVX2-FAST-NEXT:    vpermd %ymm11, %ymm3, %ymm2
3617 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm1, %ymm2, %ymm1
3618 ; AVX2-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
3619 ; AVX2-FAST-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload
3620 ; AVX2-FAST-NEXT:    # xmm2 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3],xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]
3621 ; AVX2-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3622 ; AVX2-FAST-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3623 ; AVX2-FAST-NEXT:    # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3],xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]
3624 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm4 = <0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13>
3625 ; AVX2-FAST-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
3626 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]
3627 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm5 = <2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8>
3628 ; AVX2-FAST-NEXT:    vpshufb %xmm5, %xmm3, %xmm3
3629 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
3630 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = <255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255>
3631 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm2, %ymm3, %ymm2
3632 ; AVX2-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3633 ; AVX2-FAST-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3634 ; AVX2-FAST-NEXT:    # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3],xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]
3635 ; AVX2-FAST-NEXT:    vpshufb %xmm4, %xmm3, %xmm3
3636 ; AVX2-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3637 ; AVX2-FAST-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3638 ; AVX2-FAST-NEXT:    # xmm4 = xmm4[0],mem[0],xmm4[1],mem[1],xmm4[2],mem[2],xmm4[3],mem[3],xmm4[4],mem[4],xmm4[5],mem[5],xmm4[6],mem[6],xmm4[7],mem[7]
3639 ; AVX2-FAST-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
3640 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
3641 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
3642 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm3, %ymm4, %ymm3
3643 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]
3644 ; AVX2-FAST-NEXT:    vpermd %ymm11, %ymm4, %ymm5
3645 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
3646 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm2, %ymm5, %ymm2
3647 ; AVX2-FAST-NEXT:    vpermd %ymm12, %ymm4, %ymm4
3648 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm3, %ymm4, %ymm3
3649 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, 64(%r9)
3650 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, 224(%r9)
3651 ; AVX2-FAST-NEXT:    vmovdqa %ymm7, 96(%r9)
3652 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3653 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 128(%r9)
3654 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3655 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 288(%r9)
3656 ; AVX2-FAST-NEXT:    vmovdqa %ymm9, 256(%r9)
3657 ; AVX2-FAST-NEXT:    vmovdqa %ymm3, 160(%r9)
3658 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3659 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 192(%r9)
3660 ; AVX2-FAST-NEXT:    vmovdqa %ymm2, (%r9)
3661 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3662 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 32(%r9)
3663 ; AVX2-FAST-NEXT:    addq $168, %rsp
3664 ; AVX2-FAST-NEXT:    vzeroupper
3665 ; AVX2-FAST-NEXT:    retq
3667 ; AVX2-FAST-PERLANE-LABEL: store_i8_stride5_vf64:
3668 ; AVX2-FAST-PERLANE:       # %bb.0:
3669 ; AVX2-FAST-PERLANE-NEXT:    subq $200, %rsp
3670 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdx), %ymm11
3671 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %xmm1
3672 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm1, (%rsp) # 16-byte Spill
3673 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rcx), %xmm8
3674 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3675 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm0 = <128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12>
3676 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm0, %xmm1, %xmm1
3677 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %xmm3
3678 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3679 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdx), %xmm9
3680 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3681 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm2 = <6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128>
3682 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm3, %xmm3
3683 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm3, %xmm1
3684 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
3685 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %xmm4
3686 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3687 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm3 = <8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11>
3688 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm4, %xmm4
3689 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %xmm6
3690 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3691 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm5 = <128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128>
3692 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm5, %xmm6, %xmm6
3693 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm4, %xmm6, %xmm4
3694 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
3695 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm6 = <255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255>
3696 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm1, %ymm4, %ymm1
3697 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%r8), %xmm4
3698 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3699 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,2]
3700 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]
3701 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm7 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
3702 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm1, %ymm4, %ymm1
3703 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3704 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdi), %xmm4
3705 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3706 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm0, %xmm8, %xmm0
3707 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm9, %xmm1
3708 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm0, %xmm1, %xmm0
3709 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rsi), %xmm2
3710 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3711 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm4, %xmm1
3712 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm5, %xmm2, %xmm2
3713 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm2, %xmm1
3714 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rcx), %ymm3
3715 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]
3716 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
3717 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm0, %ymm1, %ymm0
3718 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%r8), %xmm1
3719 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3720 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
3721 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,1,1]
3722 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm0, %ymm1, %ymm0
3723 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3724 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm0 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,29,26,128,28,128,30,128,28,29,128,31,128,29]
3725 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm11, %ymm1
3726 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
3727 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128]
3728 ; AVX2-FAST-PERLANE-NEXT:    # ymm8 = mem[0,1,0,1]
3729 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm8, %ymm3, %ymm2
3730 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm3, %ymm12
3731 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3732 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
3733 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm1, %ymm2, %ymm1
3734 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdi), %ymm4
3735 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm5 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,29,26,128,28,128,26,27,28,29,128,31,128,29,30,128]
3736 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm5, %ymm4, %ymm2
3737 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm6 = ymm2[2,2,3,3]
3738 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rsi), %ymm2
3739 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm9 = [27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30,27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30]
3740 ; AVX2-FAST-PERLANE-NEXT:    # ymm9 = mem[0,1,0,1]
3741 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm9, %ymm2, %ymm7
3742 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
3743 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm6, %ymm7, %ymm6
3744 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255,255,u>
3745 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm1, %ymm6, %ymm3
3746 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %ymm13
3747 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm13, %ymm0
3748 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
3749 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %ymm7
3750 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm8, %ymm7, %ymm1
3751 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
3752 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm0, %ymm1, %ymm8
3753 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %ymm1
3754 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm5, %ymm1, %ymm0
3755 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm5 = ymm0[2,2,3,3]
3756 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %ymm0
3757 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm9, %ymm0, %ymm9
3758 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
3759 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm5, %ymm9, %ymm5
3760 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm8, %ymm5, %ymm8
3761 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%r8), %ymm5
3762 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm9 = ymm5[2,2,3,3,6,6,7,7]
3763 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
3764 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
3765 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm3, %ymm9, %ymm3
3766 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3767 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%r8), %ymm3
3768 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm9 = ymm3[2,2,3,3,6,6,7,7]
3769 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
3770 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm6
3771 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3772 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm8 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,19,20,128,22,128,24,128,22,23,128,25,128,23]
3773 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm8, %ymm4, %ymm9
3774 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
3775 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm10 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]
3776 ; AVX2-FAST-PERLANE-NEXT:    # ymm10 = mem[0,1,0,1]
3777 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm10, %ymm2, %ymm15
3778 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[2,2,3,3]
3779 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm9, %ymm15, %ymm9
3780 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm15 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]
3781 ; AVX2-FAST-PERLANE-NEXT:    # ymm15 = mem[0,1,0,1]
3782 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm15, %ymm12, %ymm14
3783 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm14 = ymm14[2,2,3,3]
3784 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm6 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25]
3785 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm6, %ymm11, %ymm12
3786 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[2,2,3,3]
3787 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm14, %ymm12, %ymm12
3788 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm14 = <255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0>
3789 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm9, %ymm12, %ymm9
3790 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm8, %ymm1, %ymm8
3791 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
3792 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm10, %ymm0, %ymm10
3793 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,2,3,3]
3794 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm8, %ymm10, %ymm8
3795 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm15, %ymm7, %ymm10
3796 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,2,3,3]
3797 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm6, %ymm13, %ymm6
3798 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
3799 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm6, %ymm10, %ymm6
3800 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm8, %ymm6, %ymm6
3801 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm8 = ymm5[0,2,1,1,4,6,5,5]
3802 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]
3803 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm12 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
3804 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm9, %ymm8, %ymm10
3805 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm8 = ymm3[0,2,1,1,4,6,5,5]
3806 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]
3807 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm6, %ymm8, %ymm9
3808 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm6 = <3,3,3,u,4,4,4,4>
3809 ; AVX2-FAST-PERLANE-NEXT:    vpermd %ymm4, %ymm6, %ymm4
3810 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} ymm8 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]
3811 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm8, %ymm2, %ymm2
3812 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm12 = <u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255,0,u,u,u,255>
3813 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm4, %ymm2, %ymm2
3814 ; AVX2-FAST-PERLANE-NEXT:    vpermd %ymm1, %ymm6, %ymm1
3815 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm8, %ymm0, %ymm0
3816 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm1, %ymm0, %ymm0
3817 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm1 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]
3818 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
3819 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm1, %ymm4, %ymm4
3820 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm6 = [128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128]
3821 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm6, %ymm11, %ymm8
3822 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm4, %ymm8, %ymm4
3823 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm8 = <u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255>
3824 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm2, %ymm4, %ymm2
3825 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm1, %ymm7, %ymm1
3826 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm6, %ymm13, %ymm4
3827 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm1, %ymm4, %ymm1
3828 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm0, %ymm1, %ymm1
3829 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm4 = <3,3,3,3,u,4,4,4>
3830 ; AVX2-FAST-PERLANE-NEXT:    vpermd %ymm5, %ymm4, %ymm0
3831 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm5 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
3832 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm2, %ymm0, %ymm0
3833 ; AVX2-FAST-PERLANE-NEXT:    vpermd %ymm3, %ymm4, %ymm2
3834 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm1, %ymm2, %ymm1
3835 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
3836 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload
3837 ; AVX2-FAST-PERLANE-NEXT:    # xmm2 = xmm2[0],mem[0],xmm2[1],mem[1],xmm2[2],mem[2],xmm2[3],mem[3],xmm2[4],mem[4],xmm2[5],mem[5],xmm2[6],mem[6],xmm2[7],mem[7]
3838 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsp), %xmm3 # 16-byte Reload
3839 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3840 ; AVX2-FAST-PERLANE-NEXT:    # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3],xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]
3841 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm4 = <0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13>
3842 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
3843 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]
3844 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm5 = <2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8>
3845 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm5, %xmm3, %xmm3
3846 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
3847 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm6 = <255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255,0,0,u,255,255>
3848 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm2, %ymm3, %ymm2
3849 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3850 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
3851 ; AVX2-FAST-PERLANE-NEXT:    # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1],xmm3[2],mem[2],xmm3[3],mem[3],xmm3[4],mem[4],xmm3[5],mem[5],xmm3[6],mem[6],xmm3[7],mem[7]
3852 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm4, %xmm3, %xmm3
3853 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3854 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
3855 ; AVX2-FAST-PERLANE-NEXT:    # xmm4 = xmm4[0],mem[0],xmm4[1],mem[1],xmm4[2],mem[2],xmm4[3],mem[3],xmm4[4],mem[4],xmm4[5],mem[5],xmm4[6],mem[6],xmm4[7],mem[7]
3856 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
3857 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
3858 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
3859 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm3, %ymm4, %ymm3
3860 ; AVX2-FAST-PERLANE-NEXT:    vpshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
3861 ; AVX2-FAST-PERLANE-NEXT:    # xmm4 = mem[0,0,1,1]
3862 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]
3863 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm5 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
3864 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm2, %ymm4, %ymm2
3865 ; AVX2-FAST-PERLANE-NEXT:    vpshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
3866 ; AVX2-FAST-PERLANE-NEXT:    # xmm4 = mem[0,0,1,1]
3867 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]
3868 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm3, %ymm4, %ymm3
3869 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm1, 64(%r9)
3870 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm0, 224(%r9)
3871 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm9, 96(%r9)
3872 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3873 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 128(%r9)
3874 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3875 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 288(%r9)
3876 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm10, 256(%r9)
3877 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm3, 160(%r9)
3878 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3879 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 192(%r9)
3880 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, (%r9)
3881 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
3882 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 32(%r9)
3883 ; AVX2-FAST-PERLANE-NEXT:    addq $200, %rsp
3884 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
3885 ; AVX2-FAST-PERLANE-NEXT:    retq
3887 ; AVX512F-SLOW-LABEL: store_i8_stride5_vf64:
3888 ; AVX512F-SLOW:       # %bb.0:
3889 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rsi), %ymm3
3890 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm15 = [128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128,128]
3891 ; AVX512F-SLOW-NEXT:    vpshufb %ymm15, %ymm3, %ymm0
3892 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm2
3893 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = <12,13,128,15,12,13,14,128,12,13,14,15,128,u,u,u,16,128,18,19,16,17,128,19,16,17,18,128,16,17,18,19>
3894 ; AVX512F-SLOW-NEXT:    vpshufb %ymm7, %ymm2, %ymm1
3895 ; AVX512F-SLOW-NEXT:    vpor %ymm0, %ymm1, %ymm0
3896 ; AVX512F-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3897 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdi), %xmm1
3898 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm8 = <8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11>
3899 ; AVX512F-SLOW-NEXT:    vpshufb %xmm8, %xmm1, %xmm0
3900 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm1, %xmm29
3901 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rsi), %xmm4
3902 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm14 = <128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128>
3903 ; AVX512F-SLOW-NEXT:    vpshufb %xmm14, %xmm4, %xmm1
3904 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm4, %xmm30
3905 ; AVX512F-SLOW-NEXT:    vpor %xmm0, %xmm1, %xmm0
3906 ; AVX512F-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3907 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rcx), %ymm9
3908 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]
3909 ; AVX512F-SLOW-NEXT:    vpshufb %ymm0, %ymm9, %ymm4
3910 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdx), %ymm11
3911 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = <u,u,12,13,128,u,u,u,14,128,u,u,14,15,128,u,u,u,16,128,u,u,16,17,128,u,u,u,18,128,u,u>
3912 ; AVX512F-SLOW-NEXT:    vpshufb %ymm1, %ymm11, %ymm10
3913 ; AVX512F-SLOW-NEXT:    vpor %ymm4, %ymm10, %ymm4
3914 ; AVX512F-SLOW-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3915 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rcx), %xmm13
3916 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm5 = <128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12>
3917 ; AVX512F-SLOW-NEXT:    vpshufb %xmm5, %xmm13, %xmm4
3918 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm5, %xmm25
3919 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdx), %xmm10
3920 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm5 = <6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128>
3921 ; AVX512F-SLOW-NEXT:    vpshufb %xmm5, %xmm10, %xmm12
3922 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm5, %xmm26
3923 ; AVX512F-SLOW-NEXT:    vporq %xmm4, %xmm12, %xmm31
3924 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm3[11,u,u,10,u,12,u,u,u,u,13,u,15,u,u,14,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]
3925 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[3,u,5,u,u,4,u,6,u,8,u,u,7,u,9,u,19,u,21,u,u,20,u,22,u,24,u,u,23,u,25,u]
3926 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm3, %zmm22
3927 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[26],zero,ymm2[28],zero,zero,ymm2[27],zero,ymm2[29],zero,ymm2[31],zero,zero,ymm2[30],zero
3928 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero,ymm2[25],zero,zero
3929 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm2, %zmm23
3930 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm11[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm11[27],zero,zero,ymm11[26],zero,ymm11[28],zero,ymm11[30],zero,zero,ymm11[29],zero,ymm11[31],zero,zero
3931 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm9[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm9[19],zero,ymm9[21],zero,zero,ymm9[20],zero,ymm9[22],zero,ymm9[24],zero,zero,ymm9[23],zero
3932 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm3, %zmm24
3933 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %ymm12
3934 ; AVX512F-SLOW-NEXT:    vpshufb %ymm0, %ymm12, %ymm0
3935 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %ymm6
3936 ; AVX512F-SLOW-NEXT:    vpshufb %ymm1, %ymm6, %ymm1
3937 ; AVX512F-SLOW-NEXT:    vporq %ymm0, %ymm1, %ymm20
3938 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %ymm5
3939 ; AVX512F-SLOW-NEXT:    vpshufb %ymm15, %ymm5, %ymm2
3940 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %ymm4
3941 ; AVX512F-SLOW-NEXT:    vpshufb %ymm7, %ymm4, %ymm3
3942 ; AVX512F-SLOW-NEXT:    vporq %ymm2, %ymm3, %ymm21
3943 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %xmm0
3944 ; AVX512F-SLOW-NEXT:    vpshufb %xmm8, %xmm0, %xmm2
3945 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm0, %xmm17
3946 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %xmm8
3947 ; AVX512F-SLOW-NEXT:    vpshufb %xmm14, %xmm8, %xmm3
3948 ; AVX512F-SLOW-NEXT:    vporq %xmm2, %xmm3, %xmm27
3949 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %xmm1
3950 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm25, %xmm0
3951 ; AVX512F-SLOW-NEXT:    vpshufb %xmm0, %xmm1, %xmm0
3952 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm1, %xmm19
3953 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %xmm2
3954 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm26, %xmm1
3955 ; AVX512F-SLOW-NEXT:    vpshufb %xmm1, %xmm2, %xmm15
3956 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm2, %xmm16
3957 ; AVX512F-SLOW-NEXT:    vporq %xmm0, %xmm15, %xmm28
3958 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm0 = mem[1,1,2,2]
3959 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,1,1]
3960 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm25 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
3961 ; AVX512F-SLOW-NEXT:    vpandnq %ymm0, %ymm25, %ymm0
3962 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%r8), %ymm15
3963 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128]
3964 ; AVX512F-SLOW-NEXT:    vpshufb %ymm1, %ymm15, %ymm14
3965 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm14, %zmm0, %zmm26
3966 ; AVX512F-SLOW-NEXT:    vmovdqa (%r8), %ymm0
3967 ; AVX512F-SLOW-NEXT:    vpshufb %ymm1, %ymm0, %ymm1
3968 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,2,1,1,4,6,5,5]
3969 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,3,2]
3970 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
3971 ; AVX512F-SLOW-NEXT:    vpandn %ymm0, %ymm14, %ymm0
3972 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm25
3973 ; AVX512F-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm0 = [9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12]
3974 ; AVX512F-SLOW-NEXT:    vpshufb %ymm0, %ymm9, %ymm9
3975 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm14 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm12[19],zero,ymm12[21],zero,zero,ymm12[20],zero,ymm12[22],zero,ymm12[24],zero,zero,ymm12[23],zero
3976 ; AVX512F-SLOW-NEXT:    vpshufb %ymm0, %ymm12, %ymm12
3977 ; AVX512F-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]
3978 ; AVX512F-SLOW-NEXT:    # ymm0 = mem[0,1,0,1]
3979 ; AVX512F-SLOW-NEXT:    vpshufb %ymm0, %ymm11, %ymm11
3980 ; AVX512F-SLOW-NEXT:    vpshufb %ymm0, %ymm6, %ymm2
3981 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm6[27],zero,zero,ymm6[26],zero,ymm6[28],zero,ymm6[30],zero,zero,ymm6[29],zero,ymm6[31],zero,zero
3982 ; AVX512F-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm10 = xmm13[0],xmm10[0],xmm13[1],xmm10[1],xmm13[2],xmm10[2],xmm13[3],xmm10[3],xmm13[4],xmm10[4],xmm13[5],xmm10[5],xmm13[6],xmm10[6],xmm13[7],xmm10[7]
3983 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm13 = ymm5[3,u,5,u,u,4,u,6,u,8,u,u,7,u,9,u,19,u,21,u,u,20,u,22,u,24,u,u,23,u,25,u]
3984 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = ymm5[11,u,u,10,u,12,u,u,u,u,13,u,15,u,u,14,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]
3985 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero,zero
3986 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm4[26],zero,ymm4[28],zero,zero,ymm4[27],zero,ymm4[29],zero,ymm4[31],zero,zero,ymm4[30],zero
3987 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm29, %xmm1
3988 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm30, %xmm3
3989 ; AVX512F-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm3 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
3990 ; AVX512F-SLOW-NEXT:    vmovdqa64 (%r8), %zmm29
3991 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm1 = <4,u,5,5,5,5,u,6,6,6,6,u,7,7,7,7>
3992 ; AVX512F-SLOW-NEXT:    vpermd %zmm15, %zmm1, %zmm4
3993 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm1 = <6,6,6,u,7,7,7,7,u,16,16,16,16,u,17,17>
3994 ; AVX512F-SLOW-NEXT:    vpermi2d %zmm15, %zmm29, %zmm1
3995 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm30 = ymm9[2,2,3,3]
3996 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm18 = ymm11[2,2,3,3]
3997 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm14[2,2,3,3]
3998 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
3999 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,2,3,3]
4000 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
4001 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[2,2,3,3]
4002 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
4003 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm17, %xmm9
4004 ; AVX512F-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm8 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3],xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]
4005 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm15 = <0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13>
4006 ; AVX512F-SLOW-NEXT:    vpshufb %xmm15, %xmm3, %xmm3
4007 ; AVX512F-SLOW-NEXT:    vpshufb %xmm15, %xmm8, %xmm8
4008 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm15 = <2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8>
4009 ; AVX512F-SLOW-NEXT:    vpshufb %xmm15, %xmm10, %xmm10
4010 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]
4011 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
4012 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
4013 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
4014 ; AVX512F-SLOW-NEXT:    vinserti32x4 $2, %xmm27, %zmm8, %zmm8
4015 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm19, %xmm9
4016 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm16, %xmm11
4017 ; AVX512F-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm9 = xmm9[0],xmm11[0],xmm9[1],xmm11[1],xmm9[2],xmm11[2],xmm9[3],xmm11[3],xmm9[4],xmm11[4],xmm9[5],xmm11[5],xmm9[6],xmm11[6],xmm9[7],xmm11[7]
4018 ; AVX512F-SLOW-NEXT:    vpshufb %xmm15, %xmm9, %xmm9
4019 ; AVX512F-SLOW-NEXT:    vinserti32x4 $2, %xmm28, %zmm9, %zmm9
4020 ; AVX512F-SLOW-NEXT:    vpermq $80, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15 # 32-byte Folded Reload
4021 ; AVX512F-SLOW-NEXT:    # ymm15 = mem[0,0,1,1]
4022 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm15, %zmm15 # 32-byte Folded Reload
4023 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm16 = ymm31[0,0,1,1]
4024 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm16, %zmm16 # 32-byte Folded Reload
4025 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm17 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]
4026 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm15, %zmm17, %zmm16
4027 ; AVX512F-SLOW-NEXT:    vpor %ymm2, %ymm14, %ymm2
4028 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm20, %zmm2
4029 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = [18374966859431608575,18374966859431608575,18446463693966278400,18446463693966278400]
4030 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %ymm14, %ymm13, %ymm0
4031 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm21, %zmm0
4032 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm2, %zmm17, %zmm0
4033 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} zmm2 = zmm22[2,2,3,3,6,6,7,7]
4034 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} zmm13 = zmm23[2,2,3,3,6,6,7,7]
4035 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm2, %zmm13
4036 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %ymm14, %ymm12, %ymm6
4037 ; AVX512F-SLOW-NEXT:    vpandq %ymm14, %ymm30, %ymm2
4038 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm18, %zmm2
4039 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} zmm11 = zmm24[2,2,3,3,6,6,7,7]
4040 ; AVX512F-SLOW-NEXT:    vporq %zmm11, %zmm2, %zmm2
4041 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm11 = [0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
4042 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm13, %zmm11, %zmm2
4043 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm10, %zmm6, %zmm6
4044 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm7, %ymm5
4045 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm5, %zmm3
4046 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm6, %zmm11, %zmm3
4047 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm16, %zmm26
4048 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm2, %zmm4
4049 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm25
4050 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm3, %zmm1
4051 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} zmm0 = zmm8[0,0,1,1,4,4,5,5]
4052 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} zmm2 = zmm9[0,0,1,1,4,4,5,5]
4053 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm2
4054 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm0 = <u,0,0,0,0,u,1,1,1,1,u,2,2,2,2,u>
4055 ; AVX512F-SLOW-NEXT:    vpermd %zmm29, %zmm0, %zmm0
4056 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm2, %zmm0
4057 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm25, 64(%r9)
4058 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm0, (%r9)
4059 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm1, 128(%r9)
4060 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm4, 256(%r9)
4061 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm26, 192(%r9)
4062 ; AVX512F-SLOW-NEXT:    vzeroupper
4063 ; AVX512F-SLOW-NEXT:    retq
4065 ; AVX512F-FAST-LABEL: store_i8_stride5_vf64:
4066 ; AVX512F-FAST:       # %bb.0:
4067 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rsi), %ymm6
4068 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm13 = [128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128,128,128]
4069 ; AVX512F-FAST-NEXT:    vpshufb %ymm13, %ymm6, %ymm0
4070 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdi), %ymm2
4071 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <12,13,128,15,12,13,14,128,12,13,14,15,128,u,u,u,16,128,18,19,16,17,128,19,16,17,18,128,16,17,18,19>
4072 ; AVX512F-FAST-NEXT:    vpshufb %ymm7, %ymm2, %ymm1
4073 ; AVX512F-FAST-NEXT:    vpor %ymm0, %ymm1, %ymm0
4074 ; AVX512F-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4075 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdi), %xmm1
4076 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm15 = <8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11>
4077 ; AVX512F-FAST-NEXT:    vpshufb %xmm15, %xmm1, %xmm0
4078 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm1, %xmm18
4079 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rsi), %xmm3
4080 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm4 = <128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128>
4081 ; AVX512F-FAST-NEXT:    vpshufb %xmm4, %xmm3, %xmm1
4082 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm4, %xmm25
4083 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm3, %xmm17
4084 ; AVX512F-FAST-NEXT:    vpor %xmm0, %xmm1, %xmm0
4085 ; AVX512F-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4086 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rcx), %ymm9
4087 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]
4088 ; AVX512F-FAST-NEXT:    vpshufb %ymm0, %ymm9, %ymm3
4089 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdx), %ymm8
4090 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = <u,u,12,13,128,u,u,u,14,128,u,u,14,15,128,u,u,u,16,128,u,u,16,17,128,u,u,u,18,128,u,u>
4091 ; AVX512F-FAST-NEXT:    vpshufb %ymm1, %ymm8, %ymm4
4092 ; AVX512F-FAST-NEXT:    vpor %ymm3, %ymm4, %ymm3
4093 ; AVX512F-FAST-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4094 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rcx), %xmm10
4095 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm4 = <128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12>
4096 ; AVX512F-FAST-NEXT:    vpshufb %xmm4, %xmm10, %xmm3
4097 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm4, %xmm26
4098 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdx), %xmm11
4099 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm14 = <6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128>
4100 ; AVX512F-FAST-NEXT:    vpshufb %xmm14, %xmm11, %xmm4
4101 ; AVX512F-FAST-NEXT:    vporq %xmm3, %xmm4, %xmm19
4102 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = ymm6[11,u,u,10,u,12,u,u,u,u,13,u,15,u,u,14,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]
4103 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm6[3,u,5,u,u,4,u,6,u,8,u,u,7,u,9,u,19,u,21,u,u,20,u,22,u,24,u,u,23,u,25,u]
4104 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm4, %zmm22
4105 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm2[26],zero,ymm2[28],zero,zero,ymm2[27],zero,ymm2[29],zero,ymm2[31],zero,zero,ymm2[30],zero
4106 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm2[21],zero,zero,ymm2[20],zero,ymm2[22],zero,ymm2[24],zero,zero,ymm2[23],zero,ymm2[25],zero,zero
4107 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm2, %zmm23
4108 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm8[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm8[27],zero,zero,ymm8[26],zero,ymm8[28],zero,ymm8[30],zero,zero,ymm8[29],zero,ymm8[31],zero,zero
4109 ; AVX512F-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]
4110 ; AVX512F-FAST-NEXT:    # ymm4 = mem[0,1,0,1]
4111 ; AVX512F-FAST-NEXT:    vpshufb %ymm4, %ymm9, %ymm3
4112 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm4, %ymm30
4113 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm2, %zmm3, %zmm24
4114 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %ymm12
4115 ; AVX512F-FAST-NEXT:    vpshufb %ymm0, %ymm12, %ymm0
4116 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %ymm6
4117 ; AVX512F-FAST-NEXT:    vpshufb %ymm1, %ymm6, %ymm1
4118 ; AVX512F-FAST-NEXT:    vporq %ymm0, %ymm1, %ymm20
4119 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %ymm5
4120 ; AVX512F-FAST-NEXT:    vpshufb %ymm13, %ymm5, %ymm0
4121 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %ymm4
4122 ; AVX512F-FAST-NEXT:    vpshufb %ymm7, %ymm4, %ymm1
4123 ; AVX512F-FAST-NEXT:    vporq %ymm0, %ymm1, %ymm21
4124 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %xmm1
4125 ; AVX512F-FAST-NEXT:    vpshufb %xmm15, %xmm1, %xmm0
4126 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm1, %xmm16
4127 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %xmm3
4128 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm25, %xmm1
4129 ; AVX512F-FAST-NEXT:    vpshufb %xmm1, %xmm3, %xmm2
4130 ; AVX512F-FAST-NEXT:    vporq %xmm0, %xmm2, %xmm28
4131 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %xmm7
4132 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm26, %xmm0
4133 ; AVX512F-FAST-NEXT:    vpshufb %xmm0, %xmm7, %xmm0
4134 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %xmm2
4135 ; AVX512F-FAST-NEXT:    vpshufb %xmm14, %xmm2, %xmm14
4136 ; AVX512F-FAST-NEXT:    vporq %xmm0, %xmm14, %xmm29
4137 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm14 = [1,1,2,2,2,2,2,2]
4138 ; AVX512F-FAST-NEXT:    vmovdqa 32(%r8), %ymm0
4139 ; AVX512F-FAST-NEXT:    vpermd %ymm0, %ymm14, %ymm14
4140 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm25 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
4141 ; AVX512F-FAST-NEXT:    vpandnq %ymm14, %ymm25, %ymm14
4142 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128]
4143 ; AVX512F-FAST-NEXT:    vpshufb %ymm1, %ymm0, %ymm15
4144 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm15, %zmm14, %zmm27
4145 ; AVX512F-FAST-NEXT:    vmovdqa64 (%r8), %zmm25
4146 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm31 = <4,u,5,5,5,5,u,6,30,30,30,u,31,31,31,31>
4147 ; AVX512F-FAST-NEXT:    vpermi2d %zmm25, %zmm0, %zmm31
4148 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm15 = <4,u,5,5,5,5,u,6>
4149 ; AVX512F-FAST-NEXT:    vmovdqa (%r8), %ymm0
4150 ; AVX512F-FAST-NEXT:    vpermd %ymm0, %ymm15, %ymm15
4151 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm26 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
4152 ; AVX512F-FAST-NEXT:    vpandnq %ymm15, %ymm26, %ymm15
4153 ; AVX512F-FAST-NEXT:    vpshufb %ymm1, %ymm0, %ymm1
4154 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm15, %zmm1, %zmm26
4155 ; AVX512F-FAST-NEXT:    vpbroadcastq {{.*#+}} ymm1 = [9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12]
4156 ; AVX512F-FAST-NEXT:    vpshufb %ymm1, %ymm9, %ymm9
4157 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm30, %ymm13
4158 ; AVX512F-FAST-NEXT:    vpshufb %ymm13, %ymm12, %ymm15
4159 ; AVX512F-FAST-NEXT:    vpshufb %ymm1, %ymm12, %ymm1
4160 ; AVX512F-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm12 = [18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]
4161 ; AVX512F-FAST-NEXT:    # ymm12 = mem[0,1,0,1]
4162 ; AVX512F-FAST-NEXT:    vpshufb %ymm12, %ymm8, %ymm8
4163 ; AVX512F-FAST-NEXT:    vpshufb %ymm12, %ymm6, %ymm12
4164 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm6[27],zero,zero,ymm6[26],zero,ymm6[28],zero,ymm6[30],zero,zero,ymm6[29],zero,ymm6[31],zero,zero
4165 ; AVX512F-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3],xmm10[4],xmm11[4],xmm10[5],xmm11[5],xmm10[6],xmm11[6],xmm10[7],xmm11[7]
4166 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm30 = ymm9[2,2,3,3]
4167 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm11 = ymm5[3,u,5,u,u,4,u,6,u,8,u,u,7,u,9,u,19,u,21,u,u,20,u,22,u,24,u,u,23,u,25,u]
4168 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[11,u,u,10,u,12,u,u,u,u,13,u,15,u,u,14,27,u,u,26,u,28,u,u,u,u,29,u,31,u,u,30]
4169 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm4[21],zero,zero,ymm4[20],zero,ymm4[22],zero,ymm4[24],zero,zero,ymm4[23],zero,ymm4[25],zero,zero
4170 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm4[26],zero,ymm4[28],zero,zero,ymm4[27],zero,ymm4[29],zero,ymm4[31],zero,zero,ymm4[30],zero
4171 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm18, %xmm14
4172 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm17, %xmm13
4173 ; AVX512F-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm14 = xmm14[0],xmm13[0],xmm14[1],xmm13[1],xmm14[2],xmm13[2],xmm14[3],xmm13[3],xmm14[4],xmm13[4],xmm14[5],xmm13[5],xmm14[6],xmm13[6],xmm14[7],xmm13[7]
4174 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
4175 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[2,2,3,3]
4176 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[2,2,3,3]
4177 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[2,2,3,3]
4178 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
4179 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
4180 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
4181 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm16, %xmm13
4182 ; AVX512F-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm3 = xmm13[0],xmm3[0],xmm13[1],xmm3[1],xmm13[2],xmm3[2],xmm13[3],xmm3[3],xmm13[4],xmm3[4],xmm13[5],xmm3[5],xmm13[6],xmm3[6],xmm13[7],xmm3[7]
4183 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm13 = <0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13>
4184 ; AVX512F-FAST-NEXT:    vpshufb %xmm13, %xmm14, %xmm14
4185 ; AVX512F-FAST-NEXT:    vpshufb %xmm13, %xmm3, %xmm3
4186 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm13 = <2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8>
4187 ; AVX512F-FAST-NEXT:    vpshufb %xmm13, %xmm10, %xmm10
4188 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]
4189 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
4190 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
4191 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm14 = ymm14[0,0,1,1]
4192 ; AVX512F-FAST-NEXT:    vinserti32x4 $2, %xmm28, %zmm3, %zmm3
4193 ; AVX512F-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm7[0],xmm2[0],xmm7[1],xmm2[1],xmm7[2],xmm2[2],xmm7[3],xmm2[3],xmm7[4],xmm2[4],xmm7[5],xmm2[5],xmm7[6],xmm2[6],xmm7[7],xmm2[7]
4194 ; AVX512F-FAST-NEXT:    vpshufb %xmm13, %xmm2, %xmm2
4195 ; AVX512F-FAST-NEXT:    vinserti32x4 $2, %xmm29, %zmm2, %zmm2
4196 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm25, %zmm0
4197 ; AVX512F-FAST-NEXT:    vpermq $80, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload
4198 ; AVX512F-FAST-NEXT:    # ymm7 = mem[0,0,1,1]
4199 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm7, %zmm7 # 32-byte Folded Reload
4200 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm13 = ymm19[0,0,1,1]
4201 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, {{[-0-9]+}}(%r{{[sb]}}p), %zmm13, %zmm13 # 32-byte Folded Reload
4202 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm16 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0]
4203 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm7, %zmm16, %zmm13
4204 ; AVX512F-FAST-NEXT:    vpor %ymm15, %ymm12, %ymm7
4205 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm20, %zmm7
4206 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm12 = [18374966859431608575,18374966859431608575,18446463693966278400,18446463693966278400]
4207 ; AVX512F-FAST-NEXT:    vpternlogq $248, %ymm12, %ymm11, %ymm9
4208 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm9, %zmm21, %zmm9
4209 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm7, %zmm16, %zmm9
4210 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} zmm7 = zmm22[2,2,3,3,6,6,7,7]
4211 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} zmm11 = zmm23[2,2,3,3,6,6,7,7]
4212 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm7, %zmm11
4213 ; AVX512F-FAST-NEXT:    vpternlogq $248, %ymm12, %ymm1, %ymm6
4214 ; AVX512F-FAST-NEXT:    vpandq %ymm12, %ymm30, %ymm1
4215 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm1, %zmm8, %zmm1
4216 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} zmm7 = zmm24[2,2,3,3,6,6,7,7]
4217 ; AVX512F-FAST-NEXT:    vporq %zmm7, %zmm1, %zmm1
4218 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
4219 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm11, %zmm7, %zmm1
4220 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm10, %zmm6, %zmm6
4221 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm5, %ymm4
4222 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm14, %zmm4, %zmm4
4223 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm6, %zmm7, %zmm4
4224 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm13, %zmm27
4225 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm1, %zmm31
4226 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm9, %zmm26
4227 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm1 = <6,6,6,u,7,7,7,7,u,8,8,8,8,u,9,9>
4228 ; AVX512F-FAST-NEXT:    vpermd %zmm25, %zmm1, %zmm1
4229 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm4, %zmm1
4230 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} zmm3 = zmm3[0,0,1,1,4,4,5,5]
4231 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} zmm2 = zmm2[0,0,1,1,4,4,5,5]
4232 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm3, %zmm2
4233 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm3 = <u,0,0,0,0,u,1,1,9,9,u,10,10,10,10,u>
4234 ; AVX512F-FAST-NEXT:    vpermd %zmm0, %zmm3, %zmm0
4235 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm2, %zmm0
4236 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm26, 64(%r9)
4237 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm0, (%r9)
4238 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm1, 128(%r9)
4239 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm31, 256(%r9)
4240 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm27, 192(%r9)
4241 ; AVX512F-FAST-NEXT:    vzeroupper
4242 ; AVX512F-FAST-NEXT:    retq
4244 ; AVX512BW-ONLY-SLOW-LABEL: store_i8_stride5_vf64:
4245 ; AVX512BW-ONLY-SLOW:       # %bb.0:
4246 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 (%r8), %zmm3
4247 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa (%rcx), %ymm0
4248 ; AVX512BW-ONLY-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm8 = [9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12]
4249 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm8, %ymm0, %ymm2
4250 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa (%rdx), %ymm1
4251 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufhw {{.*#+}} ymm4 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
4252 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]
4253 ; AVX512BW-ONLY-SLOW-NEXT:    movl $693250386, %eax # imm = 0x29522952
4254 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k1
4255 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm4, %ymm2 {%k1}
4256 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
4257 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 32(%rdx), %xmm6
4258 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 32(%rcx), %xmm12
4259 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm4 = xmm12[0],xmm6[0],xmm12[1],xmm6[1],xmm12[2],xmm6[2],xmm12[3],xmm6[3],xmm12[4],xmm6[4],xmm12[5],xmm6[5],xmm12[6],xmm6[6],xmm12[7],xmm6[7]
4260 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} xmm7 = <2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8>
4261 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm7, %xmm4, %xmm4
4262 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
4263 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm2, %zmm10
4264 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa (%rsi), %ymm4
4265 ; AVX512BW-ONLY-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm15 = [11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14]
4266 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm15, %ymm4, %ymm2
4267 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa (%rdi), %ymm5
4268 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufhw {{.*#+}} ymm9 = ymm5[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
4269 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm9[2,2,3,3,6,6,7,7]
4270 ; AVX512BW-ONLY-SLOW-NEXT:    movl $1251232404, %eax # imm = 0x4A944A94
4271 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k5
4272 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm9, %ymm2 {%k5}
4273 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
4274 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 32(%rsi), %xmm13
4275 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 32(%rdi), %xmm14
4276 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm11 = xmm14[0],xmm13[0],xmm14[1],xmm13[1],xmm14[2],xmm13[2],xmm14[3],xmm13[3],xmm14[4],xmm13[4],xmm14[5],xmm13[5],xmm14[6],xmm13[6],xmm14[7],xmm13[7]
4277 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} xmm9 = <0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13>
4278 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm9, %xmm11, %xmm11
4279 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[0,0,1,1]
4280 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm11, %zmm2, %zmm2
4281 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C631
4282 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k4
4283 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm10, %zmm2 {%k4}
4284 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 32(%r8), %ymm16
4285 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm10 = [6,6,6,6,7,7,7,7,16,16,16,16,16,16,17,17]
4286 ; AVX512BW-ONLY-SLOW-NEXT:    vpermi2d %zmm16, %zmm3, %zmm10
4287 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $2380225041768974402, %rax # imm = 0x2108421084210842
4288 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k2
4289 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm10, %zmm2 {%k2}
4290 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 32(%rdx), %ymm23
4291 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = [128,128,12,13,128,128,128,128,14,128,128,128,14,15,128,128,128,128,16,128,128,128,16,17,128,128,128,128,18,128,128,128]
4292 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm10, %ymm23, %ymm17
4293 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 32(%rcx), %ymm24
4294 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]
4295 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm11, %ymm24, %ymm18
4296 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %ymm17, %ymm18, %ymm17
4297 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} xmm20 = <128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12>
4298 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm20, %xmm12, %xmm12
4299 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} xmm22 = <6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128>
4300 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm22, %xmm6, %xmm6
4301 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm6, %xmm12, %xmm6
4302 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
4303 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm17, %zmm6, %zmm6
4304 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} xmm19 = <8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11>
4305 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm19, %xmm14, %xmm12
4306 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} xmm21 = <128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128>
4307 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm21, %xmm13, %xmm13
4308 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm12, %xmm13, %xmm12
4309 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm12[0,0,1,1]
4310 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 32(%rdi), %ymm25
4311 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm12 = <3,3,3,u,4,4,4,4>
4312 ; AVX512BW-ONLY-SLOW-NEXT:    vpermd %ymm25, %ymm12, %ymm17
4313 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 32(%rsi), %ymm26
4314 ; AVX512BW-ONLY-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm14 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]
4315 ; AVX512BW-ONLY-SLOW-NEXT:    movl $138547332, %eax # imm = 0x8421084
4316 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k3
4317 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm14, %ymm26, %ymm17 {%k3}
4318 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm17, %zmm13, %zmm13
4319 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
4320 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k2
4321 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm13, %zmm6 {%k2}
4322 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm13 = <3,3,3,3,u,4,4,4>
4323 ; AVX512BW-ONLY-SLOW-NEXT:    vpermd %ymm16, %ymm13, %ymm17
4324 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufd {{.*#+}} xmm18 = mem[1,1,2,2]
4325 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm18 = ymm18[0,1,1,1]
4326 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm17, %zmm18, %zmm17
4327 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $4760450083537948804, %rax # imm = 0x4210842108421084
4328 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k6
4329 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm17, %zmm6 {%k6}
4330 ; AVX512BW-ONLY-SLOW-NEXT:    vbroadcasti32x4 {{.*#+}} ymm17 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]
4331 ; AVX512BW-ONLY-SLOW-NEXT:    # ymm17 = mem[0,1,2,3,0,1,2,3]
4332 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm17, %ymm26, %ymm18
4333 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm27 = ymm18[2,2,3,3]
4334 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm18 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]
4335 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm18, %ymm25, %ymm28
4336 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm28 = ymm28[2,2,3,3]
4337 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %ymm27, %ymm28, %ymm27
4338 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm15, %ymm26, %ymm15
4339 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufhw {{.*#+}} ymm25 = ymm25[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
4340 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufd {{.*#+}} ymm25 = ymm25[2,2,3,3,6,6,7,7]
4341 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm25, %ymm15 {%k5}
4342 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[2,2,3,3]
4343 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm15, %zmm27, %zmm15
4344 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm25 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]
4345 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm25, %ymm23, %ymm26
4346 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm26 = ymm26[2,2,3,3]
4347 ; AVX512BW-ONLY-SLOW-NEXT:    vbroadcasti32x4 {{.*#+}} ymm27 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]
4348 ; AVX512BW-ONLY-SLOW-NEXT:    # ymm27 = mem[0,1,2,3,0,1,2,3]
4349 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm27, %ymm24, %ymm28
4350 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm28 = ymm28[2,2,3,3]
4351 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %ymm26, %ymm28, %ymm26
4352 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm8, %ymm24, %ymm8
4353 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufhw {{.*#+}} ymm23 = ymm23[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
4354 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufd {{.*#+}} ymm23 = ymm23[2,2,3,3,6,6,7,7]
4355 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm23, %ymm8 {%k1}
4356 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
4357 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm8, %zmm26, %zmm8
4358 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm15, %zmm8 {%k4}
4359 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm15 = [4,6,5,5,5,5,4,6,6,6,6,6,7,7,7,7]
4360 ; AVX512BW-ONLY-SLOW-NEXT:    vpermd %zmm16, %zmm15, %zmm15
4361 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 (%rdx), %xmm16
4362 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $-8925843906633654008, %rax # imm = 0x8421084210842108
4363 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k1
4364 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm15, %zmm8 {%k1}
4365 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa (%rcx), %xmm15
4366 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm20, %xmm15, %xmm20
4367 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm22, %xmm16, %xmm22
4368 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm20, %xmm22, %xmm20
4369 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm15 = xmm15[0],xmm16[0],xmm15[1],xmm16[1],xmm15[2],xmm16[2],xmm15[3],xmm16[3],xmm15[4],xmm16[4],xmm15[5],xmm16[5],xmm15[6],xmm16[6],xmm15[7],xmm16[7]
4370 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm7, %xmm15, %xmm7
4371 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa (%rsi), %xmm15
4372 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm20, %zmm7, %zmm7
4373 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 (%rdi), %xmm16
4374 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm19, %xmm16, %xmm19
4375 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm21, %xmm15, %xmm20
4376 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm19, %xmm20, %xmm19
4377 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm15 = xmm16[0],xmm15[0],xmm16[1],xmm15[1],xmm16[2],xmm15[2],xmm16[3],xmm15[3],xmm16[4],xmm15[4],xmm16[5],xmm15[5],xmm16[6],xmm15[6],xmm16[7],xmm15[7]
4378 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm9, %xmm15, %xmm9
4379 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm19, %zmm9, %zmm9
4380 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} zmm7 = zmm7[0,0,1,1,4,4,5,5]
4381 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} zmm9 = zmm9[0,0,1,1,4,4,5,5]
4382 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C
4383 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k1
4384 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm7, %zmm9 {%k1}
4385 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
4386 ; AVX512BW-ONLY-SLOW-NEXT:    vpermd %zmm3, %zmm7, %zmm3
4387 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
4388 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k1
4389 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm3, %zmm9 {%k1}
4390 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm25, %ymm1, %ymm3
4391 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
4392 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm27, %ymm0, %ymm7
4393 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
4394 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %ymm3, %ymm7, %ymm3
4395 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm10, %ymm1, %ymm1
4396 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm11, %ymm0, %ymm0
4397 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %ymm1, %ymm0, %ymm0
4398 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm0
4399 ; AVX512BW-ONLY-SLOW-NEXT:    vpermd %ymm5, %ymm12, %ymm1
4400 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm14, %ymm4, %ymm1 {%k3}
4401 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm17, %ymm4, %ymm3
4402 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %ymm18, %ymm5, %ymm4
4403 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
4404 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
4405 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %ymm3, %ymm4, %ymm3
4406 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm1, %zmm1
4407 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k2}
4408 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa (%r8), %ymm0
4409 ; AVX512BW-ONLY-SLOW-NEXT:    vpermd %ymm0, %ymm13, %ymm3
4410 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,2,1,1,4,6,5,5]
4411 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,3,2]
4412 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm3, %zmm0
4413 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
4414 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k1
4415 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k1}
4416 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm1, 64(%r9)
4417 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm9, (%r9)
4418 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm8, 256(%r9)
4419 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm6, 192(%r9)
4420 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm2, 128(%r9)
4421 ; AVX512BW-ONLY-SLOW-NEXT:    vzeroupper
4422 ; AVX512BW-ONLY-SLOW-NEXT:    retq
4424 ; AVX512BW-FAST-LABEL: store_i8_stride5_vf64:
4425 ; AVX512BW-FAST:       # %bb.0:
4426 ; AVX512BW-FAST-NEXT:    vmovdqa64 (%r8), %zmm5
4427 ; AVX512BW-FAST-NEXT:    vmovdqa64 32(%rdx), %ymm19
4428 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [128,128,12,13,128,128,128,128,14,128,128,128,14,15,128,128,128,128,16,128,128,128,16,17,128,128,128,128,18,128,128,128]
4429 ; AVX512BW-FAST-NEXT:    vpshufb %ymm1, %ymm19, %ymm0
4430 ; AVX512BW-FAST-NEXT:    vmovdqa 32(%rcx), %ymm13
4431 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]
4432 ; AVX512BW-FAST-NEXT:    vpshufb %ymm2, %ymm13, %ymm3
4433 ; AVX512BW-FAST-NEXT:    vpor %ymm0, %ymm3, %ymm0
4434 ; AVX512BW-FAST-NEXT:    vmovdqa (%rcx), %xmm6
4435 ; AVX512BW-FAST-NEXT:    vmovdqa64 32(%rcx), %xmm16
4436 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} xmm8 = <128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12>
4437 ; AVX512BW-FAST-NEXT:    vpshufb %xmm8, %xmm16, %xmm3
4438 ; AVX512BW-FAST-NEXT:    vmovdqa (%rdx), %xmm7
4439 ; AVX512BW-FAST-NEXT:    vmovdqa64 32(%rdx), %xmm18
4440 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} xmm10 = <6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128>
4441 ; AVX512BW-FAST-NEXT:    vpshufb %xmm10, %xmm18, %xmm4
4442 ; AVX512BW-FAST-NEXT:    vpor %xmm3, %xmm4, %xmm3
4443 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
4444 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm3, %zmm0
4445 ; AVX512BW-FAST-NEXT:    vmovdqa (%rdi), %xmm9
4446 ; AVX512BW-FAST-NEXT:    vmovdqa 32(%rdi), %xmm15
4447 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} xmm12 = <8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11>
4448 ; AVX512BW-FAST-NEXT:    vpshufb %xmm12, %xmm15, %xmm3
4449 ; AVX512BW-FAST-NEXT:    vmovdqa (%rsi), %xmm11
4450 ; AVX512BW-FAST-NEXT:    vmovdqa64 32(%rsi), %xmm17
4451 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} xmm14 = <128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128>
4452 ; AVX512BW-FAST-NEXT:    vpshufb %xmm14, %xmm17, %xmm4
4453 ; AVX512BW-FAST-NEXT:    vpor %xmm3, %xmm4, %xmm3
4454 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm20 = ymm3[0,0,1,1]
4455 ; AVX512BW-FAST-NEXT:    vmovdqa64 32(%rdi), %ymm21
4456 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm3 = <3,3,3,u,4,4,4,4>
4457 ; AVX512BW-FAST-NEXT:    vpermd %ymm21, %ymm3, %ymm22
4458 ; AVX512BW-FAST-NEXT:    vmovdqa64 32(%rsi), %ymm23
4459 ; AVX512BW-FAST-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]
4460 ; AVX512BW-FAST-NEXT:    movl $138547332, %eax # imm = 0x8421084
4461 ; AVX512BW-FAST-NEXT:    kmovd %eax, %k1
4462 ; AVX512BW-FAST-NEXT:    vpshufb %ymm4, %ymm23, %ymm22 {%k1}
4463 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm22, %zmm20, %zmm20
4464 ; AVX512BW-FAST-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
4465 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k2
4466 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm20, %zmm0 {%k2}
4467 ; AVX512BW-FAST-NEXT:    vmovdqa64 32(%r8), %ymm20
4468 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm22 = <1,1,2,2,2,2,2,2,27,27,27,27,u,28,28,28>
4469 ; AVX512BW-FAST-NEXT:    vpermi2d %zmm5, %zmm20, %zmm22
4470 ; AVX512BW-FAST-NEXT:    movabsq $4760450083537948804, %rax # imm = 0x4210842108421084
4471 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k3
4472 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm22, %zmm0 {%k3}
4473 ; AVX512BW-FAST-NEXT:    vshufi64x2 {{.*#+}} zmm22 = zmm23[0,1,2,3],mem[4,5,6,7]
4474 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} zmm22 = zmm22[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,zmm22[21],zero,zero,zmm22[20],zero,zmm22[22],zero,zmm22[24],zero,zero,zmm22[23],zero,zmm22[25],zero,zmm22[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,59],zero,zero,zmm22[58],zero,zmm22[60],zero,zero,zero,zero,zmm22[61],zero,zmm22[63],zero,zero,zmm22[62]
4475 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} zmm22 = zmm22[2,2,3,3,6,6,7,7]
4476 ; AVX512BW-FAST-NEXT:    vshufi64x2 {{.*#+}} zmm21 = zmm21[0,1,2,3],mem[4,5,6,7]
4477 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} zmm21 = zmm21[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zmm21[21],zero,zero,zmm21[20],zero,zmm21[22],zero,zmm21[24],zero,zero,zmm21[23],zero,zmm21[25],zero,zero,zmm21[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,zmm21[58],zero,zmm21[60],zero,zero,zmm21[59],zero,zmm21[61],zero,zmm21[63],zero,zero,zmm21[62],zero
4478 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} zmm21 = zmm21[2,2,3,3,6,6,7,7]
4479 ; AVX512BW-FAST-NEXT:    vporq %zmm22, %zmm21, %zmm21
4480 ; AVX512BW-FAST-NEXT:    vshufi64x2 {{.*#+}} zmm19 = zmm19[0,1,2,3],mem[4,5,6,7]
4481 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} zmm19 = zmm19[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,zmm19[21],zero,zmm19[21,20],zero,zmm19[22],zero,zmm19[24],zero,zmm19[22,23],zero,zmm19[25,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,57],zero,zmm19[59],zero,zero,zmm19[58],zero,zmm19[60],zero,zmm19[62],zero,zero,zmm19[61],zero,zmm19[63],zero
4482 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} zmm19 = zmm19[2,2,3,3,6,6,7,7]
4483 ; AVX512BW-FAST-NEXT:    vshufi64x2 {{.*#+}} zmm13 = zmm13[0,1,2,3],mem[4,5,6,7]
4484 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} zmm13 = zmm13[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,zmm13[19],zero,zmm13[21],zero,zero,zmm13[20],zero,zmm13[22],zero,zmm13[24],zero,zero,zmm13[23],zero,zmm13[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zmm13[59],zero,zero,zmm13[58],zero,zmm13[60],zero,zmm13[62],zero,zero,zmm13[61],zero,zmm13[63],zero,zero
4485 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} zmm13 = zmm13[2,2,3,3,6,6,7,7]
4486 ; AVX512BW-FAST-NEXT:    vporq %zmm19, %zmm13, %zmm13
4487 ; AVX512BW-FAST-NEXT:    movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C631
4488 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k3
4489 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm21, %zmm13 {%k3}
4490 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm19 = [4,6,5,5,5,5,4,6,30,30,30,30,31,31,31,31]
4491 ; AVX512BW-FAST-NEXT:    vpermi2d %zmm5, %zmm20, %zmm19
4492 ; AVX512BW-FAST-NEXT:    movabsq $-8925843906633654008, %rax # imm = 0x8421084210842108
4493 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k4
4494 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm19, %zmm13 {%k4}
4495 ; AVX512BW-FAST-NEXT:    vmovdqa64 (%rcx), %ymm19
4496 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm20 = ymm19[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm19[27],zero,zero,ymm19[26],zero,ymm19[28],zero,ymm19[30],zero,zero,ymm19[29],zero,ymm19[31],zero
4497 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm20 = ymm20[2,2,3,3]
4498 ; AVX512BW-FAST-NEXT:    vmovdqa64 (%rdx), %ymm21
4499 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm22 = ymm21[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm21[27],zero,zero,ymm21[26],zero,ymm21[28],zero,ymm21[30],zero,zero,ymm21[29],zero,ymm21[31],zero,zero
4500 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm22 = ymm22[2,2,3,3]
4501 ; AVX512BW-FAST-NEXT:    vporq %ymm20, %ymm22, %ymm20
4502 ; AVX512BW-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm16 = xmm16[0],xmm18[0],xmm16[1],xmm18[1],xmm16[2],xmm18[2],xmm16[3],xmm18[3],xmm16[4],xmm18[4],xmm16[5],xmm18[5],xmm16[6],xmm18[6],xmm16[7],xmm18[7]
4503 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} xmm18 = <2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8>
4504 ; AVX512BW-FAST-NEXT:    vpshufb %xmm18, %xmm16, %xmm16
4505 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm16 = ymm16[0,0,1,1]
4506 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm16, %zmm20, %zmm20
4507 ; AVX512BW-FAST-NEXT:    vmovdqa64 (%rsi), %ymm16
4508 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm22 = ymm16[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm16[26],zero,ymm16[28],zero,zero,zero,zero,ymm16[29],zero,ymm16[31],zero,zero,ymm16[30]
4509 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm22 = ymm22[2,2,3,3]
4510 ; AVX512BW-FAST-NEXT:    vmovdqa64 (%rdi), %ymm23
4511 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm24 = ymm23[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm23[26],zero,ymm23[28],zero,zero,ymm23[27],zero,ymm23[29],zero,ymm23[31],zero,zero,ymm23[30],zero
4512 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm24 = ymm24[2,2,3,3]
4513 ; AVX512BW-FAST-NEXT:    vporq %ymm22, %ymm24, %ymm22
4514 ; AVX512BW-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm15 = xmm15[0],xmm17[0],xmm15[1],xmm17[1],xmm15[2],xmm17[2],xmm15[3],xmm17[3],xmm15[4],xmm17[4],xmm15[5],xmm17[5],xmm15[6],xmm17[6],xmm15[7],xmm17[7]
4515 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} xmm17 = <0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13>
4516 ; AVX512BW-FAST-NEXT:    vpshufb %xmm17, %xmm15, %xmm15
4517 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[0,0,1,1]
4518 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm15, %zmm22, %zmm15
4519 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm20, %zmm15 {%k3}
4520 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm20 = [6,6,6,6,7,7,7,7,8,8,8,8,8,8,9,9]
4521 ; AVX512BW-FAST-NEXT:    vpermd %zmm5, %zmm20, %zmm5
4522 ; AVX512BW-FAST-NEXT:    movabsq $2380225041768974402, %rax # imm = 0x2108421084210842
4523 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k3
4524 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm5, %zmm15 {%k3}
4525 ; AVX512BW-FAST-NEXT:    vpshufb %xmm8, %xmm6, %xmm5
4526 ; AVX512BW-FAST-NEXT:    vpshufb %xmm10, %xmm7, %xmm8
4527 ; AVX512BW-FAST-NEXT:    vpor %xmm5, %xmm8, %xmm5
4528 ; AVX512BW-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1],xmm6[2],xmm7[2],xmm6[3],xmm7[3],xmm6[4],xmm7[4],xmm6[5],xmm7[5],xmm6[6],xmm7[6],xmm6[7],xmm7[7]
4529 ; AVX512BW-FAST-NEXT:    vpshufb %xmm18, %xmm6, %xmm6
4530 ; AVX512BW-FAST-NEXT:    vinserti32x4 $2, %xmm5, %zmm6, %zmm5
4531 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} zmm5 = zmm5[0,0,1,1,4,4,5,5]
4532 ; AVX512BW-FAST-NEXT:    vpshufb %xmm12, %xmm9, %xmm6
4533 ; AVX512BW-FAST-NEXT:    vpshufb %xmm14, %xmm11, %xmm7
4534 ; AVX512BW-FAST-NEXT:    vpor %xmm6, %xmm7, %xmm6
4535 ; AVX512BW-FAST-NEXT:    vpunpcklbw {{.*#+}} xmm7 = xmm9[0],xmm11[0],xmm9[1],xmm11[1],xmm9[2],xmm11[2],xmm9[3],xmm11[3],xmm9[4],xmm11[4],xmm9[5],xmm11[5],xmm9[6],xmm11[6],xmm9[7],xmm11[7]
4536 ; AVX512BW-FAST-NEXT:    vpshufb %xmm17, %xmm7, %xmm7
4537 ; AVX512BW-FAST-NEXT:    vinserti32x4 $2, %xmm6, %zmm7, %zmm6
4538 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} zmm6 = zmm6[0,0,1,1,4,4,5,5]
4539 ; AVX512BW-FAST-NEXT:    movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C
4540 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k3
4541 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm5, %zmm6 {%k3}
4542 ; AVX512BW-FAST-NEXT:    vbroadcasti64x4 {{.*#+}} zmm5 = mem[0,1,2,3,0,1,2,3]
4543 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]
4544 ; AVX512BW-FAST-NEXT:    vpermd %zmm5, %zmm7, %zmm7
4545 ; AVX512BW-FAST-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
4546 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k3
4547 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm7, %zmm6 {%k3}
4548 ; AVX512BW-FAST-NEXT:    vpshufb %ymm1, %ymm21, %ymm1
4549 ; AVX512BW-FAST-NEXT:    vpshufb %ymm2, %ymm19, %ymm2
4550 ; AVX512BW-FAST-NEXT:    vpor %ymm1, %ymm2, %ymm1
4551 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm21[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19],zero,ymm21[21],zero,ymm21[21,20],zero,ymm21[22],zero,ymm21[24],zero,ymm21[22,23],zero,ymm21[25]
4552 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
4553 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm19[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm19[19],zero,ymm19[21],zero,zero,ymm19[20],zero,ymm19[22],zero,ymm19[24],zero,zero,ymm19[23],zero
4554 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
4555 ; AVX512BW-FAST-NEXT:    vpor %ymm2, %ymm7, %ymm2
4556 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm2, %zmm1, %zmm1
4557 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm16[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm16[21],zero,zero,ymm16[20],zero,ymm16[22],zero,ymm16[24],zero,zero,ymm16[23],zero,ymm16[25],zero
4558 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
4559 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm23[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm23[21],zero,zero,ymm23[20],zero,ymm23[22],zero,ymm23[24],zero,zero,ymm23[23],zero,ymm23[25],zero,zero
4560 ; AVX512BW-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
4561 ; AVX512BW-FAST-NEXT:    vpor %ymm2, %ymm7, %ymm2
4562 ; AVX512BW-FAST-NEXT:    vpermd %ymm23, %ymm3, %ymm3
4563 ; AVX512BW-FAST-NEXT:    vpshufb %ymm4, %ymm16, %ymm3 {%k1}
4564 ; AVX512BW-FAST-NEXT:    vinserti64x4 $1, %ymm2, %zmm3, %zmm2
4565 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm1, %zmm2 {%k2}
4566 ; AVX512BW-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm1 = <3,3,3,3,u,4,4,4,12,14,13,13,13,13,12,14>
4567 ; AVX512BW-FAST-NEXT:    vpermd %zmm5, %zmm1, %zmm1
4568 ; AVX512BW-FAST-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
4569 ; AVX512BW-FAST-NEXT:    kmovq %rax, %k1
4570 ; AVX512BW-FAST-NEXT:    vmovdqu8 %zmm1, %zmm2 {%k1}
4571 ; AVX512BW-FAST-NEXT:    vmovdqa64 %zmm2, 64(%r9)
4572 ; AVX512BW-FAST-NEXT:    vmovdqa64 %zmm6, (%r9)
4573 ; AVX512BW-FAST-NEXT:    vmovdqa64 %zmm15, 128(%r9)
4574 ; AVX512BW-FAST-NEXT:    vmovdqa64 %zmm13, 256(%r9)
4575 ; AVX512BW-FAST-NEXT:    vmovdqa64 %zmm0, 192(%r9)
4576 ; AVX512BW-FAST-NEXT:    vzeroupper
4577 ; AVX512BW-FAST-NEXT:    retq
4579 ; AVX512DQBW-SLOW-LABEL: store_i8_stride5_vf64:
4580 ; AVX512DQBW-SLOW:       # %bb.0:
4581 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 (%r8), %zmm3
4582 ; AVX512DQBW-SLOW-NEXT:    vmovdqa (%rcx), %ymm0
4583 ; AVX512DQBW-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm8 = [9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12,9,14,11,0,13,10,15,12]
4584 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm8, %ymm0, %ymm2
4585 ; AVX512DQBW-SLOW-NEXT:    vmovdqa (%rdx), %ymm1
4586 ; AVX512DQBW-SLOW-NEXT:    vpshufhw {{.*#+}} ymm4 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
4587 ; AVX512DQBW-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]
4588 ; AVX512DQBW-SLOW-NEXT:    movl $693250386, %eax # imm = 0x29522952
4589 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k1
4590 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm4, %ymm2 {%k1}
4591 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
4592 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 32(%rdx), %xmm6
4593 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 32(%rcx), %xmm12
4594 ; AVX512DQBW-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm4 = xmm12[0],xmm6[0],xmm12[1],xmm6[1],xmm12[2],xmm6[2],xmm12[3],xmm6[3],xmm12[4],xmm6[4],xmm12[5],xmm6[5],xmm12[6],xmm6[6],xmm12[7],xmm6[7]
4595 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} xmm7 = <2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8>
4596 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm7, %xmm4, %xmm4
4597 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
4598 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm2, %zmm10
4599 ; AVX512DQBW-SLOW-NEXT:    vmovdqa (%rsi), %ymm4
4600 ; AVX512DQBW-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm15 = [11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14,11,0,13,10,15,12,0,14]
4601 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm15, %ymm4, %ymm2
4602 ; AVX512DQBW-SLOW-NEXT:    vmovdqa (%rdi), %ymm5
4603 ; AVX512DQBW-SLOW-NEXT:    vpshufhw {{.*#+}} ymm9 = ymm5[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
4604 ; AVX512DQBW-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm9[2,2,3,3,6,6,7,7]
4605 ; AVX512DQBW-SLOW-NEXT:    movl $1251232404, %eax # imm = 0x4A944A94
4606 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k5
4607 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm9, %ymm2 {%k5}
4608 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
4609 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 32(%rsi), %xmm13
4610 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 32(%rdi), %xmm14
4611 ; AVX512DQBW-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm11 = xmm14[0],xmm13[0],xmm14[1],xmm13[1],xmm14[2],xmm13[2],xmm14[3],xmm13[3],xmm14[4],xmm13[4],xmm14[5],xmm13[5],xmm14[6],xmm13[6],xmm14[7],xmm13[7]
4612 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} xmm9 = <0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13>
4613 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm9, %xmm11, %xmm11
4614 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[0,0,1,1]
4615 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm11, %zmm2, %zmm2
4616 ; AVX512DQBW-SLOW-NEXT:    movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C631
4617 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k4
4618 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm10, %zmm2 {%k4}
4619 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 32(%r8), %ymm16
4620 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm10 = [6,6,6,6,7,7,7,7,16,16,16,16,16,16,17,17]
4621 ; AVX512DQBW-SLOW-NEXT:    vpermi2d %zmm16, %zmm3, %zmm10
4622 ; AVX512DQBW-SLOW-NEXT:    movabsq $2380225041768974402, %rax # imm = 0x2108421084210842
4623 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k2
4624 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm10, %zmm2 {%k2}
4625 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 32(%rdx), %ymm23
4626 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = [128,128,12,13,128,128,128,128,14,128,128,128,14,15,128,128,128,128,16,128,128,128,16,17,128,128,128,128,18,128,128,128]
4627 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm10, %ymm23, %ymm17
4628 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 32(%rcx), %ymm24
4629 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = [128,128,128,128,13,128,128,128,128,14,128,128,128,128,15,128,128,128,128,16,128,128,128,128,17,128,128,128,128,18,128,128]
4630 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm11, %ymm24, %ymm18
4631 ; AVX512DQBW-SLOW-NEXT:    vporq %ymm17, %ymm18, %ymm17
4632 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 {{.*#+}} xmm20 = <128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12>
4633 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm20, %xmm12, %xmm12
4634 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 {{.*#+}} xmm22 = <6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128>
4635 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm22, %xmm6, %xmm6
4636 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm6, %xmm12, %xmm6
4637 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
4638 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm17, %zmm6, %zmm6
4639 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 {{.*#+}} xmm19 = <8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11>
4640 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm19, %xmm14, %xmm12
4641 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 {{.*#+}} xmm21 = <128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128>
4642 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm21, %xmm13, %xmm13
4643 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm12, %xmm13, %xmm12
4644 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm12[0,0,1,1]
4645 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 32(%rdi), %ymm25
4646 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm12 = <3,3,3,u,4,4,4,4>
4647 ; AVX512DQBW-SLOW-NEXT:    vpermd %ymm25, %ymm12, %ymm17
4648 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 32(%rsi), %ymm26
4649 ; AVX512DQBW-SLOW-NEXT:    vpbroadcastq {{.*#+}} ymm14 = [0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14,0,0,13,2,15,0,1,14]
4650 ; AVX512DQBW-SLOW-NEXT:    movl $138547332, %eax # imm = 0x8421084
4651 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k3
4652 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm14, %ymm26, %ymm17 {%k3}
4653 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm17, %zmm13, %zmm13
4654 ; AVX512DQBW-SLOW-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
4655 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k2
4656 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm13, %zmm6 {%k2}
4657 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm13 = <3,3,3,3,u,4,4,4>
4658 ; AVX512DQBW-SLOW-NEXT:    vpermd %ymm16, %ymm13, %ymm17
4659 ; AVX512DQBW-SLOW-NEXT:    vpshufd {{.*#+}} xmm18 = mem[1,1,2,2]
4660 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm18 = ymm18[0,1,1,1]
4661 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm17, %zmm18, %zmm17
4662 ; AVX512DQBW-SLOW-NEXT:    movabsq $4760450083537948804, %rax # imm = 0x4210842108421084
4663 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k6
4664 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm17, %zmm6 {%k6}
4665 ; AVX512DQBW-SLOW-NEXT:    vbroadcasti64x2 {{.*#+}} ymm17 = [19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128]
4666 ; AVX512DQBW-SLOW-NEXT:    # ymm17 = mem[0,1,0,1]
4667 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm17, %ymm26, %ymm18
4668 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm27 = ymm18[2,2,3,3]
4669 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm18 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]
4670 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm18, %ymm25, %ymm28
4671 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm28 = ymm28[2,2,3,3]
4672 ; AVX512DQBW-SLOW-NEXT:    vporq %ymm27, %ymm28, %ymm27
4673 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm15, %ymm26, %ymm15
4674 ; AVX512DQBW-SLOW-NEXT:    vpshufhw {{.*#+}} ymm25 = ymm25[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
4675 ; AVX512DQBW-SLOW-NEXT:    vpshufd {{.*#+}} ymm25 = ymm25[2,2,3,3,6,6,7,7]
4676 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm25, %ymm15 {%k5}
4677 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[2,2,3,3]
4678 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm15, %zmm27, %zmm15
4679 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm25 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,18,19,128,21,128,21,20,128,22,128,24,128,22,23,128,25]
4680 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm25, %ymm23, %ymm26
4681 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm26 = ymm26[2,2,3,3]
4682 ; AVX512DQBW-SLOW-NEXT:    vbroadcasti64x2 {{.*#+}} ymm27 = [128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128]
4683 ; AVX512DQBW-SLOW-NEXT:    # ymm27 = mem[0,1,0,1]
4684 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm27, %ymm24, %ymm28
4685 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm28 = ymm28[2,2,3,3]
4686 ; AVX512DQBW-SLOW-NEXT:    vporq %ymm26, %ymm28, %ymm26
4687 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm8, %ymm24, %ymm8
4688 ; AVX512DQBW-SLOW-NEXT:    vpshufhw {{.*#+}} ymm23 = ymm23[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
4689 ; AVX512DQBW-SLOW-NEXT:    vpshufd {{.*#+}} ymm23 = ymm23[2,2,3,3,6,6,7,7]
4690 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm23, %ymm8 {%k1}
4691 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
4692 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm8, %zmm26, %zmm8
4693 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm15, %zmm8 {%k4}
4694 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm15 = [4,6,5,5,5,5,4,6,6,6,6,6,7,7,7,7]
4695 ; AVX512DQBW-SLOW-NEXT:    vpermd %zmm16, %zmm15, %zmm15
4696 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 (%rdx), %xmm16
4697 ; AVX512DQBW-SLOW-NEXT:    movabsq $-8925843906633654008, %rax # imm = 0x8421084210842108
4698 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k1
4699 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm15, %zmm8 {%k1}
4700 ; AVX512DQBW-SLOW-NEXT:    vmovdqa (%rcx), %xmm15
4701 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm20, %xmm15, %xmm20
4702 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm22, %xmm16, %xmm22
4703 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm20, %xmm22, %xmm20
4704 ; AVX512DQBW-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm15 = xmm15[0],xmm16[0],xmm15[1],xmm16[1],xmm15[2],xmm16[2],xmm15[3],xmm16[3],xmm15[4],xmm16[4],xmm15[5],xmm16[5],xmm15[6],xmm16[6],xmm15[7],xmm16[7]
4705 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm7, %xmm15, %xmm7
4706 ; AVX512DQBW-SLOW-NEXT:    vmovdqa (%rsi), %xmm15
4707 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $2, %xmm20, %zmm7, %zmm7
4708 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 (%rdi), %xmm16
4709 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm19, %xmm16, %xmm19
4710 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm21, %xmm15, %xmm20
4711 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm19, %xmm20, %xmm19
4712 ; AVX512DQBW-SLOW-NEXT:    vpunpcklbw {{.*#+}} xmm15 = xmm16[0],xmm15[0],xmm16[1],xmm15[1],xmm16[2],xmm15[2],xmm16[3],xmm15[3],xmm16[4],xmm15[4],xmm16[5],xmm15[5],xmm16[6],xmm15[6],xmm16[7],xmm15[7]
4713 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm9, %xmm15, %xmm9
4714 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $2, %xmm19, %zmm9, %zmm9
4715 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} zmm7 = zmm7[0,0,1,1,4,4,5,5]
4716 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} zmm9 = zmm9[0,0,1,1,4,4,5,5]
4717 ; AVX512DQBW-SLOW-NEXT:    movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C
4718 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k1
4719 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm7, %zmm9 {%k1}
4720 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
4721 ; AVX512DQBW-SLOW-NEXT:    vpermd %zmm3, %zmm7, %zmm3
4722 ; AVX512DQBW-SLOW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
4723 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k1
4724 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm3, %zmm9 {%k1}
4725 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm25, %ymm1, %ymm3
4726 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
4727 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm27, %ymm0, %ymm7
4728 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
4729 ; AVX512DQBW-SLOW-NEXT:    vpor %ymm3, %ymm7, %ymm3
4730 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm10, %ymm1, %ymm1
4731 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm11, %ymm0, %ymm0
4732 ; AVX512DQBW-SLOW-NEXT:    vpor %ymm1, %ymm0, %ymm0
4733 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm0
4734 ; AVX512DQBW-SLOW-NEXT:    vpermd %ymm5, %ymm12, %ymm1
4735 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm14, %ymm4, %ymm1 {%k3}
4736 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm17, %ymm4, %ymm3
4737 ; AVX512DQBW-SLOW-NEXT:    vpshufb %ymm18, %ymm5, %ymm4
4738 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
4739 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
4740 ; AVX512DQBW-SLOW-NEXT:    vpor %ymm3, %ymm4, %ymm3
4741 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm1, %zmm1
4742 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k2}
4743 ; AVX512DQBW-SLOW-NEXT:    vmovdqa (%r8), %ymm0
4744 ; AVX512DQBW-SLOW-NEXT:    vpermd %ymm0, %ymm13, %ymm3
4745 ; AVX512DQBW-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,2,1,1,4,6,5,5]
4746 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,3,2]
4747 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm3, %zmm0
4748 ; AVX512DQBW-SLOW-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
4749 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k1
4750 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k1}
4751 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm1, 64(%r9)
4752 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm9, (%r9)
4753 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm8, 256(%r9)
4754 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm6, 192(%r9)
4755 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm2, 128(%r9)
4756 ; AVX512DQBW-SLOW-NEXT:    vzeroupper
4757 ; AVX512DQBW-SLOW-NEXT:    retq
4758   %in.vec0 = load <64 x i8>, ptr %in.vecptr0, align 64
4759   %in.vec1 = load <64 x i8>, ptr %in.vecptr1, align 64
4760   %in.vec2 = load <64 x i8>, ptr %in.vecptr2, align 64
4761   %in.vec3 = load <64 x i8>, ptr %in.vecptr3, align 64
4762   %in.vec4 = load <64 x i8>, ptr %in.vecptr4, align 64
4763   %1 = shufflevector <64 x i8> %in.vec0, <64 x i8> %in.vec1, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>
4764   %2 = shufflevector <64 x i8> %in.vec2, <64 x i8> %in.vec3, <128 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127>
4765   %3 = shufflevector <128 x i8> %1, <128 x i8> %2, <256 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191, i32 192, i32 193, i32 194, i32 195, i32 196, i32 197, i32 198, i32 199, i32 200, i32 201, i32 202, i32 203, i32 204, i32 205, i32 206, i32 207, i32 208, i32 209, i32 210, i32 211, i32 212, i32 213, i32 214, i32 215, i32 216, i32 217, i32 218, i32 219, i32 220, i32 221, i32 222, i32 223, i32 224, i32 225, i32 226, i32 227, i32 228, i32 229, i32 230, i32 231, i32 232, i32 233, i32 234, i32 235, i32 236, i32 237, i32 238, i32 239, i32 240, i32 241, i32 242, i32 243, i32 244, i32 245, i32 246, i32 247, i32 248, i32 249, i32 250, i32 251, i32 252, i32 253, i32 254, i32 255>
4766   %4 = shufflevector <64 x i8> %in.vec4, <64 x i8> poison, <256 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
4767   %5 = shufflevector <256 x i8> %3, <256 x i8> %4, <320 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 107, i32 108, i32 109, i32 110, i32 111, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122, i32 123, i32 124, i32 125, i32 126, i32 127, i32 128, i32 129, i32 130, i32 131, i32 132, i32 133, i32 134, i32 135, i32 136, i32 137, i32 138, i32 139, i32 140, i32 141, i32 142, i32 143, i32 144, i32 145, i32 146, i32 147, i32 148, i32 149, i32 150, i32 151, i32 152, i32 153, i32 154, i32 155, i32 156, i32 157, i32 158, i32 159, i32 160, i32 161, i32 162, i32 163, i32 164, i32 165, i32 166, i32 167, i32 168, i32 169, i32 170, i32 171, i32 172, i32 173, i32 174, i32 175, i32 176, i32 177, i32 178, i32 179, i32 180, i32 181, i32 182, i32 183, i32 184, i32 185, i32 186, i32 187, i32 188, i32 189, i32 190, i32 191, i32 192, i32 193, i32 194, i32 195, i32 196, i32 197, i32 198, i32 199, i32 200, i32 201, i32 202, i32 203, i32 204, i32 205, i32 206, i32 207, i32 208, i32 209, i32 210, i32 211, i32 212, i32 213, i32 214, i32 215, i32 216, i32 217, i32 218, i32 219, i32 220, i32 221, i32 222, i32 223, i32 224, i32 225, i32 226, i32 227, i32 228, i32 229, i32 230, i32 231, i32 232, i32 233, i32 234, i32 235, i32 236, i32 237, i32 238, i32 239, i32 240, i32 241, i32 242, i32 243, i32 244, i32 245, i32 246, i32 247, i32 248, i32 249, i32 250, i32 251, i32 252, i32 253, i32 254, i32 255, i32 256, i32 257, i32 258, i32 259, i32 260, i32 261, i32 262, i32 263, i32 264, i32 265, i32 266, i32 267, i32 268, i32 269, i32 270, i32 271, i32 272, i32 273, i32 274, i32 275, i32 276, i32 277, i32 278, i32 279, i32 280, i32 281, i32 282, i32 283, i32 284, i32 285, i32 286, i32 287, i32 288, i32 289, i32 290, i32 291, i32 292, i32 293, i32 294, i32 295, i32 296, i32 297, i32 298, i32 299, i32 300, i32 301, i32 302, i32 303, i32 304, i32 305, i32 306, i32 307, i32 308, i32 309, i32 310, i32 311, i32 312, i32 313, i32 314, i32 315, i32 316, i32 317, i32 318, i32 319>
4768   %interleaved.vec = shufflevector <320 x i8> %5, <320 x i8> poison, <320 x i32> <i32 0, i32 64, i32 128, i32 192, i32 256, i32 1, i32 65, i32 129, i32 193, i32 257, i32 2, i32 66, i32 130, i32 194, i32 258, i32 3, i32 67, i32 131, i32 195, i32 259, i32 4, i32 68, i32 132, i32 196, i32 260, i32 5, i32 69, i32 133, i32 197, i32 261, i32 6, i32 70, i32 134, i32 198, i32 262, i32 7, i32 71, i32 135, i32 199, i32 263, i32 8, i32 72, i32 136, i32 200, i32 264, i32 9, i32 73, i32 137, i32 201, i32 265, i32 10, i32 74, i32 138, i32 202, i32 266, i32 11, i32 75, i32 139, i32 203, i32 267, i32 12, i32 76, i32 140, i32 204, i32 268, i32 13, i32 77, i32 141, i32 205, i32 269, i32 14, i32 78, i32 142, i32 206, i32 270, i32 15, i32 79, i32 143, i32 207, i32 271, i32 16, i32 80, i32 144, i32 208, i32 272, i32 17, i32 81, i32 145, i32 209, i32 273, i32 18, i32 82, i32 146, i32 210, i32 274, i32 19, i32 83, i32 147, i32 211, i32 275, i32 20, i32 84, i32 148, i32 212, i32 276, i32 21, i32 85, i32 149, i32 213, i32 277, i32 22, i32 86, i32 150, i32 214, i32 278, i32 23, i32 87, i32 151, i32 215, i32 279, i32 24, i32 88, i32 152, i32 216, i32 280, i32 25, i32 89, i32 153, i32 217, i32 281, i32 26, i32 90, i32 154, i32 218, i32 282, i32 27, i32 91, i32 155, i32 219, i32 283, i32 28, i32 92, i32 156, i32 220, i32 284, i32 29, i32 93, i32 157, i32 221, i32 285, i32 30, i32 94, i32 158, i32 222, i32 286, i32 31, i32 95, i32 159, i32 223, i32 287, i32 32, i32 96, i32 160, i32 224, i32 288, i32 33, i32 97, i32 161, i32 225, i32 289, i32 34, i32 98, i32 162, i32 226, i32 290, i32 35, i32 99, i32 163, i32 227, i32 291, i32 36, i32 100, i32 164, i32 228, i32 292, i32 37, i32 101, i32 165, i32 229, i32 293, i32 38, i32 102, i32 166, i32 230, i32 294, i32 39, i32 103, i32 167, i32 231, i32 295, i32 40, i32 104, i32 168, i32 232, i32 296, i32 41, i32 105, i32 169, i32 233, i32 297, i32 42, i32 106, i32 170, i32 234, i32 298, i32 43, i32 107, i32 171, i32 235, i32 299, i32 44, i32 108, i32 172, i32 236, i32 300, i32 45, i32 109, i32 173, i32 237, i32 301, i32 46, i32 110, i32 174, i32 238, i32 302, i32 47, i32 111, i32 175, i32 239, i32 303, i32 48, i32 112, i32 176, i32 240, i32 304, i32 49, i32 113, i32 177, i32 241, i32 305, i32 50, i32 114, i32 178, i32 242, i32 306, i32 51, i32 115, i32 179, i32 243, i32 307, i32 52, i32 116, i32 180, i32 244, i32 308, i32 53, i32 117, i32 181, i32 245, i32 309, i32 54, i32 118, i32 182, i32 246, i32 310, i32 55, i32 119, i32 183, i32 247, i32 311, i32 56, i32 120, i32 184, i32 248, i32 312, i32 57, i32 121, i32 185, i32 249, i32 313, i32 58, i32 122, i32 186, i32 250, i32 314, i32 59, i32 123, i32 187, i32 251, i32 315, i32 60, i32 124, i32 188, i32 252, i32 316, i32 61, i32 125, i32 189, i32 253, i32 317, i32 62, i32 126, i32 190, i32 254, i32 318, i32 63, i32 127, i32 191, i32 255, i32 319>
4769   store <320 x i8> %interleaved.vec, ptr %out.vec, align 64
4770   ret void
4772 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
4773 ; AVX1: {{.*}}
4774 ; AVX2: {{.*}}
4775 ; AVX512: {{.*}}
4776 ; AVX512-FAST: {{.*}}
4777 ; AVX512-SLOW: {{.*}}
4778 ; AVX512BW-ONLY-FAST: {{.*}}
4779 ; AVX512DQ-FAST: {{.*}}
4780 ; AVX512DQ-SLOW: {{.*}}
4781 ; AVX512DQBW-FAST: {{.*}}
4782 ; AVX512F-ONLY-FAST: {{.*}}
4783 ; AVX512F-ONLY-SLOW: {{.*}}
4784 ; FALLBACK0: {{.*}}
4785 ; FALLBACK1: {{.*}}
4786 ; FALLBACK10: {{.*}}
4787 ; FALLBACK11: {{.*}}
4788 ; FALLBACK12: {{.*}}
4789 ; FALLBACK2: {{.*}}
4790 ; FALLBACK3: {{.*}}
4791 ; FALLBACK4: {{.*}}
4792 ; FALLBACK5: {{.*}}
4793 ; FALLBACK6: {{.*}}
4794 ; FALLBACK7: {{.*}}
4795 ; FALLBACK8: {{.*}}
4796 ; FALLBACK9: {{.*}}