[Frontend] Remove unused includes (NFC) (#116927)
[llvm-project.git] / llvm / test / CodeGen / X86 / vector-interleaved-store-i8-stride-5.ll
blobb87abded10819c0dea5ece3c0ee4c1af2cae502b
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
3 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx  | FileCheck %s --check-prefixes=AVX
4 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX2
5 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX2-FP
6 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX2-FCP
7 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX512
8 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512-FCP
9 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq | FileCheck %s --check-prefixes=AVX512DQ
10 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512DQ-FCP
11 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX512BW
12 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512BW-FCP
13 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw | FileCheck %s --check-prefixes=AVX512DQ-BW
14 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX512DQ-BW-FCP
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
58 ; AVX2-LABEL: store_i8_stride5_vf2:
59 ; AVX2:       # %bb.0:
60 ; AVX2-NEXT:    vmovdqa (%rdi), %xmm0
61 ; AVX2-NEXT:    vmovdqa (%rdx), %xmm1
62 ; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
63 ; AVX2-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
64 ; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
65 ; AVX2-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]
66 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
67 ; AVX2-NEXT:    vpextrw $4, %xmm0, 8(%r9)
68 ; AVX2-NEXT:    vmovq %xmm0, (%r9)
69 ; AVX2-NEXT:    retq
71 ; AVX2-FP-LABEL: store_i8_stride5_vf2:
72 ; AVX2-FP:       # %bb.0:
73 ; AVX2-FP-NEXT:    vmovdqa (%rdi), %xmm0
74 ; AVX2-FP-NEXT:    vmovdqa (%rdx), %xmm1
75 ; AVX2-FP-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
76 ; AVX2-FP-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
77 ; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
78 ; AVX2-FP-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]
79 ; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
80 ; AVX2-FP-NEXT:    vpextrw $4, %xmm0, 8(%r9)
81 ; AVX2-FP-NEXT:    vmovq %xmm0, (%r9)
82 ; AVX2-FP-NEXT:    retq
84 ; AVX2-FCP-LABEL: store_i8_stride5_vf2:
85 ; AVX2-FCP:       # %bb.0:
86 ; AVX2-FCP-NEXT:    vmovdqa (%rdi), %xmm0
87 ; AVX2-FCP-NEXT:    vmovdqa (%rdx), %xmm1
88 ; AVX2-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
89 ; AVX2-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
90 ; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
91 ; AVX2-FCP-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]
92 ; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
93 ; AVX2-FCP-NEXT:    vpextrw $4, %xmm0, 8(%r9)
94 ; AVX2-FCP-NEXT:    vmovq %xmm0, (%r9)
95 ; AVX2-FCP-NEXT:    retq
97 ; AVX512-LABEL: store_i8_stride5_vf2:
98 ; AVX512:       # %bb.0:
99 ; AVX512-NEXT:    vmovdqa (%rdi), %xmm0
100 ; AVX512-NEXT:    vmovdqa (%rdx), %xmm1
101 ; AVX512-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
102 ; AVX512-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
103 ; AVX512-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
104 ; AVX512-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]
105 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
106 ; AVX512-NEXT:    vpextrw $4, %xmm0, 8(%r9)
107 ; AVX512-NEXT:    vmovq %xmm0, (%r9)
108 ; AVX512-NEXT:    retq
110 ; AVX512-FCP-LABEL: store_i8_stride5_vf2:
111 ; AVX512-FCP:       # %bb.0:
112 ; AVX512-FCP-NEXT:    vmovdqa (%rdi), %xmm0
113 ; AVX512-FCP-NEXT:    vmovdqa (%rdx), %xmm1
114 ; AVX512-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
115 ; AVX512-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
116 ; AVX512-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
117 ; AVX512-FCP-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]
118 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
119 ; AVX512-FCP-NEXT:    vpextrw $4, %xmm0, 8(%r9)
120 ; AVX512-FCP-NEXT:    vmovq %xmm0, (%r9)
121 ; AVX512-FCP-NEXT:    retq
123 ; AVX512DQ-LABEL: store_i8_stride5_vf2:
124 ; AVX512DQ:       # %bb.0:
125 ; AVX512DQ-NEXT:    vmovdqa (%rdi), %xmm0
126 ; AVX512DQ-NEXT:    vmovdqa (%rdx), %xmm1
127 ; AVX512DQ-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
128 ; AVX512DQ-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
129 ; AVX512DQ-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
130 ; AVX512DQ-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]
131 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
132 ; AVX512DQ-NEXT:    vpextrw $4, %xmm0, 8(%r9)
133 ; AVX512DQ-NEXT:    vmovq %xmm0, (%r9)
134 ; AVX512DQ-NEXT:    retq
136 ; AVX512DQ-FCP-LABEL: store_i8_stride5_vf2:
137 ; AVX512DQ-FCP:       # %bb.0:
138 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %xmm0
139 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdx), %xmm1
140 ; AVX512DQ-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
141 ; AVX512DQ-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
142 ; AVX512DQ-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
143 ; AVX512DQ-FCP-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]
144 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
145 ; AVX512DQ-FCP-NEXT:    vpextrw $4, %xmm0, 8(%r9)
146 ; AVX512DQ-FCP-NEXT:    vmovq %xmm0, (%r9)
147 ; AVX512DQ-FCP-NEXT:    retq
149 ; AVX512BW-LABEL: store_i8_stride5_vf2:
150 ; AVX512BW:       # %bb.0:
151 ; AVX512BW-NEXT:    vmovdqa (%rdi), %xmm0
152 ; AVX512BW-NEXT:    vmovdqa (%rdx), %xmm1
153 ; AVX512BW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
154 ; AVX512BW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
155 ; AVX512BW-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
156 ; AVX512BW-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]
157 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
158 ; AVX512BW-NEXT:    vpextrw $4, %xmm0, 8(%r9)
159 ; AVX512BW-NEXT:    vmovq %xmm0, (%r9)
160 ; AVX512BW-NEXT:    retq
162 ; AVX512BW-FCP-LABEL: store_i8_stride5_vf2:
163 ; AVX512BW-FCP:       # %bb.0:
164 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdi), %xmm0
165 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdx), %xmm1
166 ; AVX512BW-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
167 ; AVX512BW-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
168 ; AVX512BW-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
169 ; AVX512BW-FCP-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]
170 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
171 ; AVX512BW-FCP-NEXT:    vpextrw $4, %xmm0, 8(%r9)
172 ; AVX512BW-FCP-NEXT:    vmovq %xmm0, (%r9)
173 ; AVX512BW-FCP-NEXT:    retq
175 ; AVX512DQ-BW-LABEL: store_i8_stride5_vf2:
176 ; AVX512DQ-BW:       # %bb.0:
177 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdi), %xmm0
178 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdx), %xmm1
179 ; AVX512DQ-BW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
180 ; AVX512DQ-BW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
181 ; AVX512DQ-BW-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
182 ; AVX512DQ-BW-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]
183 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
184 ; AVX512DQ-BW-NEXT:    vpextrw $4, %xmm0, 8(%r9)
185 ; AVX512DQ-BW-NEXT:    vmovq %xmm0, (%r9)
186 ; AVX512DQ-BW-NEXT:    retq
188 ; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf2:
189 ; AVX512DQ-BW-FCP:       # %bb.0:
190 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdi), %xmm0
191 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdx), %xmm1
192 ; AVX512DQ-BW-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
193 ; AVX512DQ-BW-FCP-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
194 ; AVX512DQ-BW-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
195 ; AVX512DQ-BW-FCP-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]
196 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,1,2,6,10,14,3,u,u,u,u,u,u]
197 ; AVX512DQ-BW-FCP-NEXT:    vpextrw $4, %xmm0, 8(%r9)
198 ; AVX512DQ-BW-FCP-NEXT:    vmovq %xmm0, (%r9)
199 ; AVX512DQ-BW-FCP-NEXT:    retq
200   %in.vec0 = load <2 x i8>, ptr %in.vecptr0, align 64
201   %in.vec1 = load <2 x i8>, ptr %in.vecptr1, align 64
202   %in.vec2 = load <2 x i8>, ptr %in.vecptr2, align 64
203   %in.vec3 = load <2 x i8>, ptr %in.vecptr3, align 64
204   %in.vec4 = load <2 x i8>, ptr %in.vecptr4, align 64
205   %1 = shufflevector <2 x i8> %in.vec0, <2 x i8> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
206   %2 = shufflevector <2 x i8> %in.vec2, <2 x i8> %in.vec3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
207   %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>
208   %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>
209   %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>
210   %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>
211   store <10 x i8> %interleaved.vec, ptr %out.vec, align 64
212   ret void
215 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 {
216 ; SSE-LABEL: store_i8_stride5_vf4:
217 ; SSE:       # %bb.0:
218 ; SSE-NEXT:    movdqa (%rdi), %xmm1
219 ; SSE-NEXT:    movdqa (%rdx), %xmm2
220 ; SSE-NEXT:    movdqa (%r8), %xmm0
221 ; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
222 ; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
223 ; SSE-NEXT:    pxor %xmm3, %xmm3
224 ; 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]
225 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm1[3,1,2,1]
226 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,2,0,4,5,6,7]
227 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[1,3,2,3]
228 ; 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]
229 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm2[2,1,1,3]
230 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[1,1,1,1,4,5,6,7]
231 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]
232 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]
233 ; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
234 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm2[0,2,0,0]
235 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,0,2,4,5,6,7]
236 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,65535,0,0,65535,65535,65535,0]
237 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm1[0,2,2,0]
238 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[0,2,2,3,4,5,6,7]
239 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,7,5,7]
240 ; SSE-NEXT:    pand %xmm5, %xmm6
241 ; SSE-NEXT:    pandn %xmm4, %xmm5
242 ; SSE-NEXT:    por %xmm6, %xmm5
243 ; SSE-NEXT:    packuswb %xmm3, %xmm5
244 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
245 ; SSE-NEXT:    pand %xmm3, %xmm5
246 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm0[0,0,0,0]
247 ; SSE-NEXT:    pandn %xmm4, %xmm3
248 ; SSE-NEXT:    por %xmm5, %xmm3
249 ; SSE-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
250 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[3,1,2,3]
251 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,3,1,3,4,5,6,7]
252 ; SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
253 ; SSE-NEXT:    por %xmm1, %xmm2
254 ; SSE-NEXT:    packuswb %xmm2, %xmm2
255 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255]
256 ; SSE-NEXT:    pand %xmm1, %xmm2
257 ; SSE-NEXT:    pandn %xmm0, %xmm1
258 ; SSE-NEXT:    por %xmm2, %xmm1
259 ; SSE-NEXT:    movd %xmm1, 16(%r9)
260 ; SSE-NEXT:    movdqa %xmm3, (%r9)
261 ; SSE-NEXT:    retq
263 ; AVX-LABEL: store_i8_stride5_vf4:
264 ; AVX:       # %bb.0:
265 ; AVX-NEXT:    vmovdqa (%rdi), %xmm0
266 ; AVX-NEXT:    vmovdqa (%rdx), %xmm1
267 ; AVX-NEXT:    vmovdqa (%r8), %xmm2
268 ; AVX-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
269 ; AVX-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
270 ; AVX-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
271 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,4,8,12],zero,xmm0[1,5,9,13],zero,xmm0[2,6,10,14],zero,xmm0[3]
272 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,xmm2[1],zero,zero,zero,zero,xmm2[2],zero
273 ; AVX-NEXT:    vpor %xmm3, %xmm1, %xmm1
274 ; AVX-NEXT:    vpalignr {{.*#+}} xmm0 = xmm0[7,8,9,10,11,12,13,14,15],xmm2[0,1,2,3,4,5,6]
275 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u]
276 ; AVX-NEXT:    vmovd %xmm0, 16(%r9)
277 ; AVX-NEXT:    vmovdqa %xmm1, (%r9)
278 ; AVX-NEXT:    retq
280 ; AVX2-LABEL: store_i8_stride5_vf4:
281 ; AVX2:       # %bb.0:
282 ; AVX2-NEXT:    vmovdqa (%rdi), %xmm0
283 ; AVX2-NEXT:    vmovdqa (%rdx), %xmm1
284 ; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
285 ; AVX2-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
286 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
287 ; AVX2-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
288 ; AVX2-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
289 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
290 ; AVX2-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
291 ; AVX2-NEXT:    vpor %ymm0, %ymm1, %ymm0
292 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
293 ; AVX2-NEXT:    vmovd %xmm1, 16(%r9)
294 ; AVX2-NEXT:    vmovdqa %xmm0, (%r9)
295 ; AVX2-NEXT:    vzeroupper
296 ; AVX2-NEXT:    retq
298 ; AVX2-FP-LABEL: store_i8_stride5_vf4:
299 ; AVX2-FP:       # %bb.0:
300 ; AVX2-FP-NEXT:    vmovdqa (%rdi), %xmm0
301 ; AVX2-FP-NEXT:    vmovdqa (%rdx), %xmm1
302 ; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
303 ; AVX2-FP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
304 ; AVX2-FP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
305 ; AVX2-FP-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
306 ; AVX2-FP-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
307 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
308 ; AVX2-FP-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
309 ; AVX2-FP-NEXT:    vpor %ymm0, %ymm1, %ymm0
310 ; AVX2-FP-NEXT:    vextracti128 $1, %ymm0, %xmm1
311 ; AVX2-FP-NEXT:    vmovd %xmm1, 16(%r9)
312 ; AVX2-FP-NEXT:    vmovdqa %xmm0, (%r9)
313 ; AVX2-FP-NEXT:    vzeroupper
314 ; AVX2-FP-NEXT:    retq
316 ; AVX2-FCP-LABEL: store_i8_stride5_vf4:
317 ; AVX2-FCP:       # %bb.0:
318 ; AVX2-FCP-NEXT:    vmovdqa (%rdi), %xmm0
319 ; AVX2-FCP-NEXT:    vmovdqa (%rdx), %xmm1
320 ; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
321 ; AVX2-FCP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
322 ; AVX2-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
323 ; AVX2-FCP-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
324 ; AVX2-FCP-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
325 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
326 ; AVX2-FCP-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
327 ; AVX2-FCP-NEXT:    vpor %ymm0, %ymm1, %ymm0
328 ; AVX2-FCP-NEXT:    vextracti128 $1, %ymm0, %xmm1
329 ; AVX2-FCP-NEXT:    vmovd %xmm1, 16(%r9)
330 ; AVX2-FCP-NEXT:    vmovdqa %xmm0, (%r9)
331 ; AVX2-FCP-NEXT:    vzeroupper
332 ; AVX2-FCP-NEXT:    retq
334 ; AVX512-LABEL: store_i8_stride5_vf4:
335 ; AVX512:       # %bb.0:
336 ; AVX512-NEXT:    vmovdqa (%rdi), %xmm0
337 ; AVX512-NEXT:    vmovdqa (%rdx), %xmm1
338 ; AVX512-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
339 ; AVX512-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
340 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
341 ; AVX512-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
342 ; AVX512-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]
343 ; AVX512-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
344 ; AVX512-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
345 ; AVX512-NEXT:    vpor %ymm0, %ymm1, %ymm0
346 ; AVX512-NEXT:    vextracti128 $1, %ymm0, %xmm1
347 ; AVX512-NEXT:    vmovd %xmm1, 16(%r9)
348 ; AVX512-NEXT:    vmovdqa %xmm0, (%r9)
349 ; AVX512-NEXT:    vzeroupper
350 ; AVX512-NEXT:    retq
352 ; AVX512-FCP-LABEL: store_i8_stride5_vf4:
353 ; AVX512-FCP:       # %bb.0:
354 ; AVX512-FCP-NEXT:    vmovdqa (%rdi), %xmm0
355 ; AVX512-FCP-NEXT:    vmovdqa (%rdx), %xmm1
356 ; AVX512-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
357 ; AVX512-FCP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
358 ; AVX512-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
359 ; AVX512-FCP-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
360 ; AVX512-FCP-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]
361 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
362 ; AVX512-FCP-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
363 ; AVX512-FCP-NEXT:    vpor %ymm0, %ymm1, %ymm0
364 ; AVX512-FCP-NEXT:    vextracti128 $1, %ymm0, %xmm1
365 ; AVX512-FCP-NEXT:    vmovd %xmm1, 16(%r9)
366 ; AVX512-FCP-NEXT:    vmovdqa %xmm0, (%r9)
367 ; AVX512-FCP-NEXT:    vzeroupper
368 ; AVX512-FCP-NEXT:    retq
370 ; AVX512DQ-LABEL: store_i8_stride5_vf4:
371 ; AVX512DQ:       # %bb.0:
372 ; AVX512DQ-NEXT:    vmovdqa (%rdi), %xmm0
373 ; AVX512DQ-NEXT:    vmovdqa (%rdx), %xmm1
374 ; AVX512DQ-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
375 ; AVX512DQ-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
376 ; AVX512DQ-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
377 ; AVX512DQ-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
378 ; AVX512DQ-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]
379 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
380 ; AVX512DQ-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
381 ; AVX512DQ-NEXT:    vpor %ymm0, %ymm1, %ymm0
382 ; AVX512DQ-NEXT:    vextracti128 $1, %ymm0, %xmm1
383 ; AVX512DQ-NEXT:    vmovd %xmm1, 16(%r9)
384 ; AVX512DQ-NEXT:    vmovdqa %xmm0, (%r9)
385 ; AVX512DQ-NEXT:    vzeroupper
386 ; AVX512DQ-NEXT:    retq
388 ; AVX512DQ-FCP-LABEL: store_i8_stride5_vf4:
389 ; AVX512DQ-FCP:       # %bb.0:
390 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %xmm0
391 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdx), %xmm1
392 ; AVX512DQ-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
393 ; AVX512DQ-FCP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
394 ; AVX512DQ-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
395 ; AVX512DQ-FCP-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
396 ; AVX512DQ-FCP-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]
397 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
398 ; AVX512DQ-FCP-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
399 ; AVX512DQ-FCP-NEXT:    vpor %ymm0, %ymm1, %ymm0
400 ; AVX512DQ-FCP-NEXT:    vextracti128 $1, %ymm0, %xmm1
401 ; AVX512DQ-FCP-NEXT:    vmovd %xmm1, 16(%r9)
402 ; AVX512DQ-FCP-NEXT:    vmovdqa %xmm0, (%r9)
403 ; AVX512DQ-FCP-NEXT:    vzeroupper
404 ; AVX512DQ-FCP-NEXT:    retq
406 ; AVX512BW-LABEL: store_i8_stride5_vf4:
407 ; AVX512BW:       # %bb.0:
408 ; AVX512BW-NEXT:    vmovdqa (%rdi), %xmm0
409 ; AVX512BW-NEXT:    vmovdqa (%rdx), %xmm1
410 ; AVX512BW-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
411 ; AVX512BW-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
412 ; AVX512BW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
413 ; AVX512BW-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
414 ; 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
415 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
416 ; 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
417 ; AVX512BW-NEXT:    vpor %ymm1, %ymm0, %ymm0
418 ; AVX512BW-NEXT:    vextracti128 $1, %ymm0, %xmm1
419 ; AVX512BW-NEXT:    vmovd %xmm1, 16(%r9)
420 ; AVX512BW-NEXT:    vmovdqa %xmm0, (%r9)
421 ; AVX512BW-NEXT:    vzeroupper
422 ; AVX512BW-NEXT:    retq
424 ; AVX512BW-FCP-LABEL: store_i8_stride5_vf4:
425 ; AVX512BW-FCP:       # %bb.0:
426 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdi), %xmm0
427 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdx), %xmm1
428 ; AVX512BW-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
429 ; AVX512BW-FCP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
430 ; AVX512BW-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
431 ; AVX512BW-FCP-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
432 ; AVX512BW-FCP-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
433 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
434 ; AVX512BW-FCP-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
435 ; AVX512BW-FCP-NEXT:    vpor %ymm1, %ymm0, %ymm0
436 ; AVX512BW-FCP-NEXT:    vextracti128 $1, %ymm0, %xmm1
437 ; AVX512BW-FCP-NEXT:    vmovd %xmm1, 16(%r9)
438 ; AVX512BW-FCP-NEXT:    vmovdqa %xmm0, (%r9)
439 ; AVX512BW-FCP-NEXT:    vzeroupper
440 ; AVX512BW-FCP-NEXT:    retq
442 ; AVX512DQ-BW-LABEL: store_i8_stride5_vf4:
443 ; AVX512DQ-BW:       # %bb.0:
444 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdi), %xmm0
445 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdx), %xmm1
446 ; AVX512DQ-BW-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
447 ; AVX512DQ-BW-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
448 ; AVX512DQ-BW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
449 ; AVX512DQ-BW-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
450 ; AVX512DQ-BW-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
451 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
452 ; AVX512DQ-BW-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
453 ; AVX512DQ-BW-NEXT:    vpor %ymm1, %ymm0, %ymm0
454 ; AVX512DQ-BW-NEXT:    vextracti128 $1, %ymm0, %xmm1
455 ; AVX512DQ-BW-NEXT:    vmovd %xmm1, 16(%r9)
456 ; AVX512DQ-BW-NEXT:    vmovdqa %xmm0, (%r9)
457 ; AVX512DQ-BW-NEXT:    vzeroupper
458 ; AVX512DQ-BW-NEXT:    retq
460 ; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf4:
461 ; AVX512DQ-BW-FCP:       # %bb.0:
462 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdi), %xmm0
463 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdx), %xmm1
464 ; AVX512DQ-BW-FCP-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
465 ; AVX512DQ-BW-FCP-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
466 ; AVX512DQ-BW-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
467 ; AVX512DQ-BW-FCP-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
468 ; AVX512DQ-BW-FCP-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
469 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
470 ; AVX512DQ-BW-FCP-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
471 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm1, %ymm0, %ymm0
472 ; AVX512DQ-BW-FCP-NEXT:    vextracti128 $1, %ymm0, %xmm1
473 ; AVX512DQ-BW-FCP-NEXT:    vmovd %xmm1, 16(%r9)
474 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa %xmm0, (%r9)
475 ; AVX512DQ-BW-FCP-NEXT:    vzeroupper
476 ; AVX512DQ-BW-FCP-NEXT:    retq
477   %in.vec0 = load <4 x i8>, ptr %in.vecptr0, align 64
478   %in.vec1 = load <4 x i8>, ptr %in.vecptr1, align 64
479   %in.vec2 = load <4 x i8>, ptr %in.vecptr2, align 64
480   %in.vec3 = load <4 x i8>, ptr %in.vecptr3, align 64
481   %in.vec4 = load <4 x i8>, ptr %in.vecptr4, align 64
482   %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>
483   %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>
484   %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>
485   %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>
486   %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>
487   %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>
488   store <20 x i8> %interleaved.vec, ptr %out.vec, align 64
489   ret void
492 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 {
493 ; SSE-LABEL: store_i8_stride5_vf8:
494 ; SSE:       # %bb.0:
495 ; SSE-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
496 ; SSE-NEXT:    movq {{.*#+}} xmm2 = mem[0],zero
497 ; SSE-NEXT:    movq {{.*#+}} xmm4 = mem[0],zero
498 ; SSE-NEXT:    movq {{.*#+}} xmm3 = mem[0],zero
499 ; SSE-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
500 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[1,1,1,1]
501 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [65535,65535,0,65535,0,65535,65535,0]
502 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
503 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm3[2,1,2,3]
504 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[0,3,2,0,4,5,6,7]
505 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,5,5,5]
506 ; SSE-NEXT:    pand %xmm8, %xmm6
507 ; SSE-NEXT:    pandn %xmm5, %xmm8
508 ; SSE-NEXT:    por %xmm6, %xmm8
509 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [255,255,0,255,0,255,255,0,255,0,255,255,0,255,0,255]
510 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm4[1,2,2,3,4,5,6,7]
511 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
512 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
513 ; SSE-NEXT:    movdqa %xmm6, %xmm10
514 ; SSE-NEXT:    pandn %xmm5, %xmm10
515 ; SSE-NEXT:    movdqa %xmm2, %xmm7
516 ; 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]
517 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm7[2,1,2,3]
518 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[3,1,0,3,4,5,6,7]
519 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,6,6]
520 ; SSE-NEXT:    pand %xmm6, %xmm5
521 ; SSE-NEXT:    por %xmm10, %xmm5
522 ; SSE-NEXT:    pand %xmm9, %xmm5
523 ; SSE-NEXT:    pandn %xmm8, %xmm9
524 ; SSE-NEXT:    por %xmm5, %xmm9
525 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
526 ; SSE-NEXT:    pand %xmm8, %xmm9
527 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm0[0,0,1,1]
528 ; SSE-NEXT:    movdqa %xmm8, %xmm5
529 ; SSE-NEXT:    pandn %xmm10, %xmm5
530 ; SSE-NEXT:    por %xmm9, %xmm5
531 ; SSE-NEXT:    pshuflw {{.*#+}} xmm9 = xmm4[1,0,2,3,4,5,6,7]
532 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[0,0,0,0]
533 ; SSE-NEXT:    pand %xmm8, %xmm9
534 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm3[1,0,2,3,4,5,6,7]
535 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,1,0,1]
536 ; SSE-NEXT:    pandn %xmm10, %xmm8
537 ; SSE-NEXT:    por %xmm9, %xmm8
538 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
539 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm1[0,0,0,0]
540 ; SSE-NEXT:    pand %xmm6, %xmm10
541 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[0,1,2,2,4,5,6,7]
542 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[0,0,1,3]
543 ; SSE-NEXT:    pandn %xmm7, %xmm6
544 ; SSE-NEXT:    por %xmm10, %xmm6
545 ; SSE-NEXT:    pand %xmm9, %xmm6
546 ; SSE-NEXT:    pandn %xmm8, %xmm9
547 ; SSE-NEXT:    por %xmm6, %xmm9
548 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
549 ; SSE-NEXT:    pand %xmm6, %xmm9
550 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[0,0,0,0]
551 ; SSE-NEXT:    pandn %xmm7, %xmm6
552 ; SSE-NEXT:    por %xmm9, %xmm6
553 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[3,3,3,3,4,5,6,7]
554 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,0,255,255,255,255,0,255,255,255,255,255,255,255,255,255]
555 ; SSE-NEXT:    pand %xmm7, %xmm4
556 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[3,3,3,3]
557 ; SSE-NEXT:    pandn %xmm3, %xmm7
558 ; SSE-NEXT:    por %xmm4, %xmm7
559 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,0,0,255,255,255,255,255,255,255,255,255,255,255]
560 ; SSE-NEXT:    pand %xmm3, %xmm7
561 ; 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]
562 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,7,7,7,7]
563 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,2,2,2]
564 ; SSE-NEXT:    pandn %xmm1, %xmm3
565 ; SSE-NEXT:    por %xmm7, %xmm3
566 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,0,255,255,255,255,0,255,255,255,255,255,255,255,255]
567 ; SSE-NEXT:    pand %xmm1, %xmm3
568 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
569 ; SSE-NEXT:    pandn %xmm0, %xmm1
570 ; SSE-NEXT:    por %xmm3, %xmm1
571 ; SSE-NEXT:    movq %xmm1, 32(%r9)
572 ; SSE-NEXT:    movdqa %xmm6, (%r9)
573 ; SSE-NEXT:    movdqa %xmm5, 16(%r9)
574 ; SSE-NEXT:    retq
576 ; AVX-LABEL: store_i8_stride5_vf8:
577 ; AVX:       # %bb.0:
578 ; AVX-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
579 ; AVX-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
580 ; AVX-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
581 ; AVX-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
582 ; AVX-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
583 ; AVX-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
584 ; AVX-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
585 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
586 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
587 ; AVX-NEXT:    vpor %xmm3, %xmm4, %xmm3
588 ; AVX-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]
589 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0,2,13,6,8,10,12,15,u,u,u,u,u,u,u,u]
590 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,xmm1[0,8,u],zero,zero,xmm1[1,9,u],zero,zero,xmm1[2,10,u],zero
591 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[0,8],zero,zero,xmm0[u,1,9],zero,zero,xmm0[u,2,10],zero,zero,xmm0[u,3]
592 ; AVX-NEXT:    vpor %xmm4, %xmm5, %xmm4
593 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,2,3],zero,xmm4[5,6,7,8],zero,xmm4[10,11,12,13],zero,xmm4[15]
594 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,zero,xmm2[0],zero,zero,zero,zero,xmm2[1],zero,zero,zero,zero,xmm2[2],zero
595 ; AVX-NEXT:    vpor %xmm5, %xmm4, %xmm4
596 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = zero,xmm1[3,11,u],zero,zero,xmm1[4,12,u],zero,zero,xmm1[5,13,u],zero,zero
597 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[11],zero,zero,xmm0[u,4,12],zero,zero,xmm0[u,5,13],zero,zero,xmm0[u,6,14]
598 ; AVX-NEXT:    vpor %xmm1, %xmm0, %xmm0
599 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,2],zero,xmm0[4,5,6,7],zero,xmm0[9,10,11,12],zero,xmm0[14,15]
600 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm2[3],zero,zero,zero,zero,xmm2[4],zero,zero,zero,zero,xmm2[5],zero,zero
601 ; AVX-NEXT:    vpor %xmm1, %xmm0, %xmm0
602 ; AVX-NEXT:    vmovdqa %xmm0, 16(%r9)
603 ; AVX-NEXT:    vmovdqa %xmm4, (%r9)
604 ; AVX-NEXT:    vmovq %xmm3, 32(%r9)
605 ; AVX-NEXT:    retq
607 ; AVX2-LABEL: store_i8_stride5_vf8:
608 ; AVX2:       # %bb.0:
609 ; AVX2-NEXT:    movq (%r8), %rax
610 ; AVX2-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
611 ; AVX2-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
612 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
613 ; AVX2-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
614 ; AVX2-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
615 ; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
616 ; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
617 ; AVX2-NEXT:    vmovq %rax, %xmm3
618 ; AVX2-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
619 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
620 ; AVX2-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]
621 ; AVX2-NEXT:    vpor %ymm2, %ymm4, %ymm2
622 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
623 ; AVX2-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
624 ; AVX2-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]
625 ; AVX2-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm2
626 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
627 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
628 ; AVX2-NEXT:    vpor %xmm0, %xmm1, %xmm0
629 ; AVX2-NEXT:    shrq $48, %rax
630 ; AVX2-NEXT:    vmovd %eax, %xmm1
631 ; AVX2-NEXT:    vpbroadcastw %xmm1, %xmm1
632 ; AVX2-NEXT:    vmovq {{.*#+}} xmm3 = [255,255,0,255,255,255,255,0,0,0,0,0,0,0,0,0]
633 ; AVX2-NEXT:    vpblendvb %xmm3, %xmm0, %xmm1, %xmm0
634 ; AVX2-NEXT:    vmovq %xmm0, 32(%r9)
635 ; AVX2-NEXT:    vmovdqa %ymm2, (%r9)
636 ; AVX2-NEXT:    vzeroupper
637 ; AVX2-NEXT:    retq
639 ; AVX2-FP-LABEL: store_i8_stride5_vf8:
640 ; AVX2-FP:       # %bb.0:
641 ; AVX2-FP-NEXT:    movq (%r8), %rax
642 ; AVX2-FP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
643 ; AVX2-FP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
644 ; AVX2-FP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
645 ; AVX2-FP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
646 ; AVX2-FP-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
647 ; AVX2-FP-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
648 ; AVX2-FP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
649 ; AVX2-FP-NEXT:    vmovq %rax, %xmm3
650 ; AVX2-FP-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
651 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
652 ; AVX2-FP-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]
653 ; AVX2-FP-NEXT:    vpor %ymm2, %ymm4, %ymm2
654 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
655 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
656 ; AVX2-FP-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]
657 ; AVX2-FP-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm2
658 ; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
659 ; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
660 ; AVX2-FP-NEXT:    vpor %xmm0, %xmm1, %xmm0
661 ; AVX2-FP-NEXT:    shrq $48, %rax
662 ; AVX2-FP-NEXT:    vmovd %eax, %xmm1
663 ; AVX2-FP-NEXT:    vpbroadcastw %xmm1, %xmm1
664 ; AVX2-FP-NEXT:    vmovq {{.*#+}} xmm3 = [255,255,0,255,255,255,255,0,0,0,0,0,0,0,0,0]
665 ; AVX2-FP-NEXT:    vpblendvb %xmm3, %xmm0, %xmm1, %xmm0
666 ; AVX2-FP-NEXT:    vmovq %xmm0, 32(%r9)
667 ; AVX2-FP-NEXT:    vmovdqa %ymm2, (%r9)
668 ; AVX2-FP-NEXT:    vzeroupper
669 ; AVX2-FP-NEXT:    retq
671 ; AVX2-FCP-LABEL: store_i8_stride5_vf8:
672 ; AVX2-FCP:       # %bb.0:
673 ; AVX2-FCP-NEXT:    movq (%r8), %rax
674 ; AVX2-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
675 ; AVX2-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
676 ; AVX2-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
677 ; AVX2-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
678 ; AVX2-FCP-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
679 ; AVX2-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
680 ; AVX2-FCP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
681 ; AVX2-FCP-NEXT:    vmovq %rax, %xmm3
682 ; AVX2-FCP-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
683 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
684 ; AVX2-FCP-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]
685 ; AVX2-FCP-NEXT:    vpor %ymm2, %ymm4, %ymm2
686 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]
687 ; AVX2-FCP-NEXT:    vpermd %ymm3, %ymm4, %ymm3
688 ; AVX2-FCP-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]
689 ; AVX2-FCP-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm2
690 ; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
691 ; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
692 ; AVX2-FCP-NEXT:    vpor %xmm0, %xmm1, %xmm0
693 ; AVX2-FCP-NEXT:    shrq $48, %rax
694 ; AVX2-FCP-NEXT:    vmovd %eax, %xmm1
695 ; AVX2-FCP-NEXT:    vpbroadcastw %xmm1, %xmm1
696 ; AVX2-FCP-NEXT:    vmovq {{.*#+}} xmm3 = [255,255,0,255,255,255,255,0,0,0,0,0,0,0,0,0]
697 ; AVX2-FCP-NEXT:    vpblendvb %xmm3, %xmm0, %xmm1, %xmm0
698 ; AVX2-FCP-NEXT:    vmovq %xmm0, 32(%r9)
699 ; AVX2-FCP-NEXT:    vmovdqa %ymm2, (%r9)
700 ; AVX2-FCP-NEXT:    vzeroupper
701 ; AVX2-FCP-NEXT:    retq
703 ; AVX512-LABEL: store_i8_stride5_vf8:
704 ; AVX512:       # %bb.0:
705 ; AVX512-NEXT:    movq (%r8), %rax
706 ; AVX512-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
707 ; AVX512-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
708 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
709 ; AVX512-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
710 ; AVX512-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
711 ; AVX512-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
712 ; AVX512-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
713 ; AVX512-NEXT:    vmovq %rax, %xmm3
714 ; AVX512-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
715 ; AVX512-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
716 ; AVX512-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]
717 ; AVX512-NEXT:    vpor %ymm2, %ymm4, %ymm2
718 ; AVX512-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
719 ; AVX512-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
720 ; AVX512-NEXT:    vpternlogq {{.*#+}} ymm3 = ymm3 ^ (mem & (ymm3 ^ ymm2))
721 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
722 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
723 ; AVX512-NEXT:    vpor %xmm0, %xmm1, %xmm0
724 ; AVX512-NEXT:    shrq $48, %rax
725 ; AVX512-NEXT:    vmovd %eax, %xmm1
726 ; AVX512-NEXT:    vpbroadcastw %xmm1, %xmm1
727 ; AVX512-NEXT:    vpternlogq {{.*#+}} xmm1 = xmm1 ^ (mem & (xmm1 ^ xmm0))
728 ; AVX512-NEXT:    vinserti32x4 $2, %xmm1, %zmm3, %zmm0
729 ; AVX512-NEXT:    vmovq %xmm1, 32(%r9)
730 ; AVX512-NEXT:    vmovdqa %ymm0, (%r9)
731 ; AVX512-NEXT:    vzeroupper
732 ; AVX512-NEXT:    retq
734 ; AVX512-FCP-LABEL: store_i8_stride5_vf8:
735 ; AVX512-FCP:       # %bb.0:
736 ; AVX512-FCP-NEXT:    movq (%r8), %rax
737 ; AVX512-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
738 ; AVX512-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
739 ; AVX512-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
740 ; AVX512-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
741 ; AVX512-FCP-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
742 ; AVX512-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
743 ; AVX512-FCP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
744 ; AVX512-FCP-NEXT:    vmovq %rax, %xmm3
745 ; AVX512-FCP-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
746 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
747 ; AVX512-FCP-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]
748 ; AVX512-FCP-NEXT:    vpor %ymm2, %ymm4, %ymm2
749 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]
750 ; AVX512-FCP-NEXT:    vpermd %ymm3, %ymm4, %ymm3
751 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} ymm3 = ymm3 ^ (mem & (ymm3 ^ ymm2))
752 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
753 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
754 ; AVX512-FCP-NEXT:    vpor %xmm0, %xmm1, %xmm0
755 ; AVX512-FCP-NEXT:    shrq $48, %rax
756 ; AVX512-FCP-NEXT:    vmovd %eax, %xmm1
757 ; AVX512-FCP-NEXT:    vpbroadcastw %xmm1, %xmm1
758 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} xmm1 = xmm1 ^ (mem & (xmm1 ^ xmm0))
759 ; AVX512-FCP-NEXT:    vinserti32x4 $2, %xmm1, %zmm3, %zmm0
760 ; AVX512-FCP-NEXT:    vmovq %xmm1, 32(%r9)
761 ; AVX512-FCP-NEXT:    vmovdqa %ymm0, (%r9)
762 ; AVX512-FCP-NEXT:    vzeroupper
763 ; AVX512-FCP-NEXT:    retq
765 ; AVX512DQ-LABEL: store_i8_stride5_vf8:
766 ; AVX512DQ:       # %bb.0:
767 ; AVX512DQ-NEXT:    movq (%r8), %rax
768 ; AVX512DQ-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
769 ; AVX512DQ-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
770 ; AVX512DQ-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
771 ; AVX512DQ-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
772 ; AVX512DQ-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
773 ; AVX512DQ-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
774 ; AVX512DQ-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
775 ; AVX512DQ-NEXT:    vmovq %rax, %xmm3
776 ; AVX512DQ-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
777 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
778 ; AVX512DQ-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]
779 ; AVX512DQ-NEXT:    vpor %ymm2, %ymm4, %ymm2
780 ; AVX512DQ-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
781 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
782 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} ymm3 = ymm3 ^ (mem & (ymm3 ^ ymm2))
783 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
784 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
785 ; AVX512DQ-NEXT:    vpor %xmm0, %xmm1, %xmm0
786 ; AVX512DQ-NEXT:    shrq $48, %rax
787 ; AVX512DQ-NEXT:    vmovd %eax, %xmm1
788 ; AVX512DQ-NEXT:    vpbroadcastw %xmm1, %xmm1
789 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} xmm1 = xmm1 ^ (mem & (xmm1 ^ xmm0))
790 ; AVX512DQ-NEXT:    vinserti32x4 $2, %xmm1, %zmm3, %zmm0
791 ; AVX512DQ-NEXT:    vmovq %xmm1, 32(%r9)
792 ; AVX512DQ-NEXT:    vmovdqa %ymm0, (%r9)
793 ; AVX512DQ-NEXT:    vzeroupper
794 ; AVX512DQ-NEXT:    retq
796 ; AVX512DQ-FCP-LABEL: store_i8_stride5_vf8:
797 ; AVX512DQ-FCP:       # %bb.0:
798 ; AVX512DQ-FCP-NEXT:    movq (%r8), %rax
799 ; AVX512DQ-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
800 ; AVX512DQ-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
801 ; AVX512DQ-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
802 ; AVX512DQ-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
803 ; AVX512DQ-FCP-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
804 ; AVX512DQ-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
805 ; AVX512DQ-FCP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
806 ; AVX512DQ-FCP-NEXT:    vmovq %rax, %xmm3
807 ; AVX512DQ-FCP-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
808 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
809 ; AVX512DQ-FCP-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]
810 ; AVX512DQ-FCP-NEXT:    vpor %ymm2, %ymm4, %ymm2
811 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]
812 ; AVX512DQ-FCP-NEXT:    vpermd %ymm3, %ymm4, %ymm3
813 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} ymm3 = ymm3 ^ (mem & (ymm3 ^ ymm2))
814 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
815 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
816 ; AVX512DQ-FCP-NEXT:    vpor %xmm0, %xmm1, %xmm0
817 ; AVX512DQ-FCP-NEXT:    shrq $48, %rax
818 ; AVX512DQ-FCP-NEXT:    vmovd %eax, %xmm1
819 ; AVX512DQ-FCP-NEXT:    vpbroadcastw %xmm1, %xmm1
820 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} xmm1 = xmm1 ^ (mem & (xmm1 ^ xmm0))
821 ; AVX512DQ-FCP-NEXT:    vinserti32x4 $2, %xmm1, %zmm3, %zmm0
822 ; AVX512DQ-FCP-NEXT:    vmovq %xmm1, 32(%r9)
823 ; AVX512DQ-FCP-NEXT:    vmovdqa %ymm0, (%r9)
824 ; AVX512DQ-FCP-NEXT:    vzeroupper
825 ; AVX512DQ-FCP-NEXT:    retq
827 ; AVX512BW-LABEL: store_i8_stride5_vf8:
828 ; AVX512BW:       # %bb.0:
829 ; AVX512BW-NEXT:    movq (%r8), %rax
830 ; AVX512BW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
831 ; AVX512BW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
832 ; AVX512BW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
833 ; AVX512BW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
834 ; AVX512BW-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
835 ; AVX512BW-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
836 ; AVX512BW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
837 ; AVX512BW-NEXT:    vmovq %rax, %xmm3
838 ; AVX512BW-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
839 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
840 ; AVX512BW-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]
841 ; AVX512BW-NEXT:    vpor %ymm4, %ymm2, %ymm2
842 ; AVX512BW-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
843 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
844 ; AVX512BW-NEXT:    movl $554189328, %ecx # imm = 0x21084210
845 ; AVX512BW-NEXT:    kmovd %ecx, %k1
846 ; AVX512BW-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k1}
847 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
848 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
849 ; AVX512BW-NEXT:    vpor %xmm0, %xmm1, %xmm0
850 ; AVX512BW-NEXT:    shrq $48, %rax
851 ; AVX512BW-NEXT:    vpbroadcastw %eax, %xmm1
852 ; AVX512BW-NEXT:    movw $132, %ax
853 ; AVX512BW-NEXT:    kmovd %eax, %k1
854 ; AVX512BW-NEXT:    vmovdqu8 %xmm1, %xmm0 {%k1}
855 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm0, %zmm2, %zmm1
856 ; AVX512BW-NEXT:    vmovq %xmm0, 32(%r9)
857 ; AVX512BW-NEXT:    vmovdqa %ymm1, (%r9)
858 ; AVX512BW-NEXT:    vzeroupper
859 ; AVX512BW-NEXT:    retq
861 ; AVX512BW-FCP-LABEL: store_i8_stride5_vf8:
862 ; AVX512BW-FCP:       # %bb.0:
863 ; AVX512BW-FCP-NEXT:    movq (%r8), %rax
864 ; AVX512BW-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
865 ; AVX512BW-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
866 ; AVX512BW-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
867 ; AVX512BW-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
868 ; AVX512BW-FCP-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
869 ; AVX512BW-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
870 ; AVX512BW-FCP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
871 ; AVX512BW-FCP-NEXT:    vmovq %rax, %xmm3
872 ; AVX512BW-FCP-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
873 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
874 ; AVX512BW-FCP-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]
875 ; AVX512BW-FCP-NEXT:    vpor %ymm4, %ymm2, %ymm2
876 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]
877 ; AVX512BW-FCP-NEXT:    vpermd %ymm3, %ymm4, %ymm3
878 ; AVX512BW-FCP-NEXT:    movl $554189328, %ecx # imm = 0x21084210
879 ; AVX512BW-FCP-NEXT:    kmovd %ecx, %k1
880 ; AVX512BW-FCP-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k1}
881 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
882 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
883 ; AVX512BW-FCP-NEXT:    vpor %xmm0, %xmm1, %xmm0
884 ; AVX512BW-FCP-NEXT:    shrq $48, %rax
885 ; AVX512BW-FCP-NEXT:    vpbroadcastw %eax, %xmm1
886 ; AVX512BW-FCP-NEXT:    movw $132, %ax
887 ; AVX512BW-FCP-NEXT:    kmovd %eax, %k1
888 ; AVX512BW-FCP-NEXT:    vmovdqu8 %xmm1, %xmm0 {%k1}
889 ; AVX512BW-FCP-NEXT:    vinserti32x4 $2, %xmm0, %zmm2, %zmm1
890 ; AVX512BW-FCP-NEXT:    vmovq %xmm0, 32(%r9)
891 ; AVX512BW-FCP-NEXT:    vmovdqa %ymm1, (%r9)
892 ; AVX512BW-FCP-NEXT:    vzeroupper
893 ; AVX512BW-FCP-NEXT:    retq
895 ; AVX512DQ-BW-LABEL: store_i8_stride5_vf8:
896 ; AVX512DQ-BW:       # %bb.0:
897 ; AVX512DQ-BW-NEXT:    movq (%r8), %rax
898 ; AVX512DQ-BW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
899 ; AVX512DQ-BW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
900 ; AVX512DQ-BW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
901 ; AVX512DQ-BW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
902 ; AVX512DQ-BW-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
903 ; AVX512DQ-BW-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
904 ; AVX512DQ-BW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
905 ; AVX512DQ-BW-NEXT:    vmovq %rax, %xmm3
906 ; AVX512DQ-BW-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
907 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
908 ; AVX512DQ-BW-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]
909 ; AVX512DQ-BW-NEXT:    vpor %ymm4, %ymm2, %ymm2
910 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
911 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,0,1]
912 ; AVX512DQ-BW-NEXT:    movl $554189328, %ecx # imm = 0x21084210
913 ; AVX512DQ-BW-NEXT:    kmovd %ecx, %k1
914 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k1}
915 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
916 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
917 ; AVX512DQ-BW-NEXT:    vpor %xmm0, %xmm1, %xmm0
918 ; AVX512DQ-BW-NEXT:    shrq $48, %rax
919 ; AVX512DQ-BW-NEXT:    vpbroadcastw %eax, %xmm1
920 ; AVX512DQ-BW-NEXT:    movw $132, %ax
921 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k1
922 ; AVX512DQ-BW-NEXT:    vmovdqu8 %xmm1, %xmm0 {%k1}
923 ; AVX512DQ-BW-NEXT:    vinserti32x4 $2, %xmm0, %zmm2, %zmm1
924 ; AVX512DQ-BW-NEXT:    vmovq %xmm0, 32(%r9)
925 ; AVX512DQ-BW-NEXT:    vmovdqa %ymm1, (%r9)
926 ; AVX512DQ-BW-NEXT:    vzeroupper
927 ; AVX512DQ-BW-NEXT:    retq
929 ; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf8:
930 ; AVX512DQ-BW-FCP:       # %bb.0:
931 ; AVX512DQ-BW-FCP-NEXT:    movq (%r8), %rax
932 ; AVX512DQ-BW-FCP-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
933 ; AVX512DQ-BW-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
934 ; AVX512DQ-BW-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
935 ; AVX512DQ-BW-FCP-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
936 ; AVX512DQ-BW-FCP-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
937 ; AVX512DQ-BW-FCP-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
938 ; AVX512DQ-BW-FCP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
939 ; AVX512DQ-BW-FCP-NEXT:    vmovq %rax, %xmm3
940 ; AVX512DQ-BW-FCP-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
941 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
942 ; AVX512DQ-BW-FCP-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]
943 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm4, %ymm2, %ymm2
944 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]
945 ; AVX512DQ-BW-FCP-NEXT:    vpermd %ymm3, %ymm4, %ymm3
946 ; AVX512DQ-BW-FCP-NEXT:    movl $554189328, %ecx # imm = 0x21084210
947 ; AVX512DQ-BW-FCP-NEXT:    kmovd %ecx, %k1
948 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k1}
949 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[u,7,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u]
950 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6,14,u],zero,zero,xmm1[7,15,u,u,u,u,u,u,u,u,u]
951 ; AVX512DQ-BW-FCP-NEXT:    vpor %xmm0, %xmm1, %xmm0
952 ; AVX512DQ-BW-FCP-NEXT:    shrq $48, %rax
953 ; AVX512DQ-BW-FCP-NEXT:    vpbroadcastw %eax, %xmm1
954 ; AVX512DQ-BW-FCP-NEXT:    movw $132, %ax
955 ; AVX512DQ-BW-FCP-NEXT:    kmovd %eax, %k1
956 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %xmm1, %xmm0 {%k1}
957 ; AVX512DQ-BW-FCP-NEXT:    vinserti32x4 $2, %xmm0, %zmm2, %zmm1
958 ; AVX512DQ-BW-FCP-NEXT:    vmovq %xmm0, 32(%r9)
959 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa %ymm1, (%r9)
960 ; AVX512DQ-BW-FCP-NEXT:    vzeroupper
961 ; AVX512DQ-BW-FCP-NEXT:    retq
962   %in.vec0 = load <8 x i8>, ptr %in.vecptr0, align 64
963   %in.vec1 = load <8 x i8>, ptr %in.vecptr1, align 64
964   %in.vec2 = load <8 x i8>, ptr %in.vecptr2, align 64
965   %in.vec3 = load <8 x i8>, ptr %in.vecptr3, align 64
966   %in.vec4 = load <8 x i8>, ptr %in.vecptr4, align 64
967   %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>
968   %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>
969   %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>
970   %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>
971   %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>
972   %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>
973   store <40 x i8> %interleaved.vec, ptr %out.vec, align 64
974   ret void
977 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 {
978 ; SSE-LABEL: store_i8_stride5_vf16:
979 ; SSE:       # %bb.0:
980 ; SSE-NEXT:    movdqa (%rdi), %xmm12
981 ; SSE-NEXT:    movdqa (%rsi), %xmm8
982 ; SSE-NEXT:    movdqa (%rdx), %xmm9
983 ; SSE-NEXT:    movdqa (%rcx), %xmm4
984 ; SSE-NEXT:    movdqa (%r8), %xmm0
985 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm9[3,3,3,3,4,5,6,7]
986 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
987 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
988 ; SSE-NEXT:    pand %xmm6, %xmm1
989 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[2,1,2,3]
990 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
991 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[3,3,0,3]
992 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]
993 ; SSE-NEXT:    movdqa %xmm6, %xmm5
994 ; SSE-NEXT:    pandn %xmm3, %xmm5
995 ; SSE-NEXT:    por %xmm1, %xmm5
996 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
997 ; SSE-NEXT:    pand %xmm2, %xmm5
998 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm12[1,1,2,2]
999 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1000 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
1001 ; SSE-NEXT:    pand %xmm1, %xmm7
1002 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm8[0,1,2,1]
1003 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,7,6,7]
1004 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm10 = xmm10[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1005 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm10[3,1,0,3,4,5,6,7]
1006 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,0,1,0]
1007 ; SSE-NEXT:    movdqa %xmm1, %xmm11
1008 ; SSE-NEXT:    pandn %xmm10, %xmm11
1009 ; SSE-NEXT:    por %xmm7, %xmm11
1010 ; SSE-NEXT:    movdqa %xmm2, %xmm10
1011 ; SSE-NEXT:    pandn %xmm11, %xmm10
1012 ; SSE-NEXT:    por %xmm5, %xmm10
1013 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
1014 ; SSE-NEXT:    pand %xmm7, %xmm10
1015 ; SSE-NEXT:    movdqa %xmm0, %xmm5
1016 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm0[1,1,2,2]
1017 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1018 ; SSE-NEXT:    pandn %xmm11, %xmm0
1019 ; SSE-NEXT:    por %xmm10, %xmm0
1020 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1021 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm12[2,2,3,3]
1022 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
1023 ; SSE-NEXT:    pand %xmm12, %xmm11
1024 ; SSE-NEXT:    movdqa %xmm8, %xmm0
1025 ; 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]
1026 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1027 ; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm0[0,1,2,1]
1028 ; SSE-NEXT:    pshuflw {{.*#+}} xmm13 = xmm13[2,2,2,2,4,5,6,7]
1029 ; SSE-NEXT:    pshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,7,5,4,7]
1030 ; SSE-NEXT:    movdqa %xmm12, %xmm14
1031 ; SSE-NEXT:    pandn %xmm13, %xmm14
1032 ; SSE-NEXT:    por %xmm11, %xmm14
1033 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
1034 ; SSE-NEXT:    movdqa %xmm13, %xmm11
1035 ; SSE-NEXT:    pandn %xmm14, %xmm11
1036 ; SSE-NEXT:    pshufhw {{.*#+}} xmm14 = xmm9[0,1,2,3,5,6,6,7]
1037 ; SSE-NEXT:    movdqa %xmm9, %xmm10
1038 ; SSE-NEXT:    pshufd {{.*#+}} xmm14 = xmm14[2,2,2,2]
1039 ; SSE-NEXT:    movdqa %xmm1, %xmm15
1040 ; SSE-NEXT:    pandn %xmm14, %xmm15
1041 ; SSE-NEXT:    movdqa %xmm4, %xmm14
1042 ; 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]
1043 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm14[0,1,2,1]
1044 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,1,2,3,4,5,6,7]
1045 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,4]
1046 ; SSE-NEXT:    pand %xmm1, %xmm0
1047 ; SSE-NEXT:    por %xmm15, %xmm0
1048 ; SSE-NEXT:    pand %xmm13, %xmm0
1049 ; SSE-NEXT:    por %xmm11, %xmm0
1050 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm5[2,2,2,2]
1051 ; SSE-NEXT:    movdqa %xmm6, %xmm11
1052 ; SSE-NEXT:    pandn %xmm15, %xmm11
1053 ; SSE-NEXT:    pand %xmm6, %xmm0
1054 ; SSE-NEXT:    por %xmm0, %xmm11
1055 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1056 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[2,1,2,3]
1057 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,0,4,5,6,7]
1058 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
1059 ; SSE-NEXT:    movdqa %xmm7, %xmm15
1060 ; SSE-NEXT:    pandn %xmm0, %xmm15
1061 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm9[1,2,2,3,4,5,6,7]
1062 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
1063 ; SSE-NEXT:    pand %xmm7, %xmm0
1064 ; SSE-NEXT:    por %xmm0, %xmm15
1065 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1066 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm9[1,1,1,1]
1067 ; SSE-NEXT:    movdqa %xmm1, %xmm3
1068 ; SSE-NEXT:    pandn %xmm0, %xmm3
1069 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1070 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm8[2,1,2,3]
1071 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
1072 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]
1073 ; SSE-NEXT:    pand %xmm1, %xmm0
1074 ; SSE-NEXT:    por %xmm3, %xmm0
1075 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
1076 ; SSE-NEXT:    pand %xmm3, %xmm0
1077 ; SSE-NEXT:    pandn %xmm15, %xmm3
1078 ; SSE-NEXT:    por %xmm0, %xmm3
1079 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,0,1,1]
1080 ; SSE-NEXT:    movdqa %xmm12, %xmm15
1081 ; SSE-NEXT:    pandn %xmm0, %xmm15
1082 ; SSE-NEXT:    pand %xmm12, %xmm3
1083 ; SSE-NEXT:    por %xmm3, %xmm15
1084 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm10[1,0,2,3,4,5,6,7]
1085 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
1086 ; SSE-NEXT:    pand %xmm12, %xmm0
1087 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm4[1,0,2,3,4,5,6,7]
1088 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]
1089 ; SSE-NEXT:    pandn %xmm3, %xmm12
1090 ; SSE-NEXT:    por %xmm0, %xmm12
1091 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm9[0,0,0,0]
1092 ; SSE-NEXT:    pand %xmm6, %xmm0
1093 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm8[0,1,2,2,4,5,6,7]
1094 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,1,3]
1095 ; SSE-NEXT:    pandn %xmm3, %xmm6
1096 ; SSE-NEXT:    por %xmm0, %xmm6
1097 ; SSE-NEXT:    pand %xmm13, %xmm6
1098 ; SSE-NEXT:    pandn %xmm12, %xmm13
1099 ; SSE-NEXT:    por %xmm6, %xmm13
1100 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,0,0,0]
1101 ; SSE-NEXT:    movdqa %xmm1, %xmm6
1102 ; SSE-NEXT:    pandn %xmm0, %xmm6
1103 ; SSE-NEXT:    pand %xmm1, %xmm13
1104 ; SSE-NEXT:    por %xmm13, %xmm6
1105 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm10[0,1,2,3,7,6,6,7]
1106 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,2,2,2]
1107 ; SSE-NEXT:    pand %xmm1, %xmm0
1108 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm14[0,1,2,3,5,7,6,7]
1109 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]
1110 ; SSE-NEXT:    pandn %xmm3, %xmm1
1111 ; SSE-NEXT:    por %xmm0, %xmm1
1112 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm9[3,3,3,3]
1113 ; SSE-NEXT:    pand %xmm7, %xmm0
1114 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
1115 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,7,5,6,6]
1116 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,3,2,2]
1117 ; SSE-NEXT:    pandn %xmm3, %xmm7
1118 ; SSE-NEXT:    por %xmm0, %xmm7
1119 ; SSE-NEXT:    pand %xmm2, %xmm7
1120 ; SSE-NEXT:    pandn %xmm1, %xmm2
1121 ; SSE-NEXT:    por %xmm7, %xmm2
1122 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
1123 ; SSE-NEXT:    pand %xmm0, %xmm2
1124 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm5[3,3,3,3]
1125 ; SSE-NEXT:    pandn %xmm1, %xmm0
1126 ; SSE-NEXT:    por %xmm2, %xmm0
1127 ; SSE-NEXT:    movdqa %xmm0, 64(%r9)
1128 ; SSE-NEXT:    movdqa %xmm6, (%r9)
1129 ; SSE-NEXT:    movdqa %xmm15, 16(%r9)
1130 ; SSE-NEXT:    movdqa %xmm11, 48(%r9)
1131 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1132 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
1133 ; SSE-NEXT:    retq
1135 ; AVX-LABEL: store_i8_stride5_vf16:
1136 ; AVX:       # %bb.0:
1137 ; AVX-NEXT:    vmovdqa (%rdi), %xmm2
1138 ; AVX-NEXT:    vmovdqa (%rsi), %xmm3
1139 ; AVX-NEXT:    vmovdqa (%rdx), %xmm1
1140 ; AVX-NEXT:    vmovdqa (%rcx), %xmm4
1141 ; AVX-NEXT:    vmovdqa (%r8), %xmm0
1142 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = zero,xmm4[6,u,u,u],zero,xmm4[7,u,u,u],zero,xmm4[8,u,u,u],zero
1143 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[6],zero,xmm1[u,u,u,7],zero,xmm1[u,u,u,8],zero,xmm1[u,u,u,9]
1144 ; AVX-NEXT:    vpor %xmm5, %xmm6, %xmm5
1145 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[u,u,u],zero,xmm3[7,u,u,u],zero,xmm3[8,u,u,u],zero,xmm3[9,u]
1146 ; AVX-NEXT:    vpshufb {{.*#+}} xmm7 = xmm2[u,u,u,7],zero,xmm2[u,u,u,8],zero,xmm2[u,u,u,9],zero,xmm2[u]
1147 ; AVX-NEXT:    vpor %xmm6, %xmm7, %xmm6
1148 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm7 = [255,255,u,0,0,255,255,u,0,0,255,255,u,0,0,255]
1149 ; AVX-NEXT:    vpblendvb %xmm7, %xmm5, %xmm6, %xmm5
1150 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1],zero,xmm5[3,4,5,6],zero,xmm5[8,9,10,11],zero,xmm5[13,14,15]
1151 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm0[6],zero,zero,zero,zero,xmm0[7],zero,zero,zero,zero,xmm0[8],zero,zero,zero
1152 ; AVX-NEXT:    vpor %xmm6, %xmm5, %xmm5
1153 ; AVX-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]
1154 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm6[10,11],zero,zero,zero,xmm6[12,13],zero,zero,zero,xmm6[14,15],zero
1155 ; AVX-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]
1156 ; AVX-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm7[10,11],zero,zero,zero,xmm7[12,13],zero,zero,zero,xmm7[14,15],zero,zero,zero
1157 ; AVX-NEXT:    vpor %xmm6, %xmm8, %xmm6
1158 ; AVX-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]
1159 ; AVX-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,xmm8[0,1],zero,zero,zero,xmm8[2,3],zero,zero,zero,xmm8[4,5],zero,zero
1160 ; AVX-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]
1161 ; AVX-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[0,1],zero,zero,zero,xmm10[2,3],zero,zero,zero,xmm10[4,5],zero,zero,zero,xmm10[6]
1162 ; AVX-NEXT:    vpor %xmm9, %xmm10, %xmm9
1163 ; AVX-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,zero,zero,xmm0[0],zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,xmm0[2],zero
1164 ; AVX-NEXT:    vpor %xmm10, %xmm9, %xmm9
1165 ; AVX-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm8[6,7],zero,zero,zero,xmm8[8,9],zero,zero,zero,xmm8[10,11],zero,zero,zero
1166 ; AVX-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]
1167 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[6],zero,zero,zero,xmm2[9,8],zero,zero,zero,xmm2[11,10],zero,zero,zero,xmm2[13,12]
1168 ; AVX-NEXT:    vpor %xmm2, %xmm8, %xmm2
1169 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm0[3],zero,zero,zero,zero,xmm0[4],zero,zero,zero,zero,xmm0[5],zero,zero
1170 ; AVX-NEXT:    vpor %xmm3, %xmm2, %xmm2
1171 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm7[4,5],zero,zero,zero,xmm7[6,7],zero,zero,zero,xmm7[8,9],zero,zero
1172 ; AVX-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]
1173 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[2],zero,zero,zero,xmm1[5,4],zero,zero,zero,xmm1[7,6],zero,zero,zero,xmm1[9,8]
1174 ; AVX-NEXT:    vpor %xmm3, %xmm1, %xmm1
1175 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = zero,xmm0[9],zero,zero,zero,zero,xmm0[10],zero,zero,zero,zero,xmm0[11],zero,zero,zero,zero
1176 ; AVX-NEXT:    vpor %xmm3, %xmm1, %xmm1
1177 ; AVX-NEXT:    vmovdqa %xmm1, 48(%r9)
1178 ; AVX-NEXT:    vmovdqa %xmm2, 16(%r9)
1179 ; AVX-NEXT:    vmovdqa %xmm9, (%r9)
1180 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]
1181 ; AVX-NEXT:    vpor %xmm0, %xmm6, %xmm0
1182 ; AVX-NEXT:    vmovdqa %xmm0, 64(%r9)
1183 ; AVX-NEXT:    vmovdqa %xmm5, 32(%r9)
1184 ; AVX-NEXT:    retq
1186 ; AVX2-LABEL: store_i8_stride5_vf16:
1187 ; AVX2:       # %bb.0:
1188 ; AVX2-NEXT:    vmovdqa (%rdi), %xmm0
1189 ; AVX2-NEXT:    vmovdqa (%rsi), %xmm1
1190 ; AVX2-NEXT:    vmovdqa (%rdx), %xmm3
1191 ; AVX2-NEXT:    vmovdqa (%rcx), %xmm4
1192 ; AVX2-NEXT:    vmovdqa (%r8), %xmm2
1193 ; AVX2-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
1194 ; AVX2-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm6
1195 ; AVX2-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]
1196 ; AVX2-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
1197 ; AVX2-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
1198 ; AVX2-NEXT:    vpor %ymm7, %ymm8, %ymm7
1199 ; AVX2-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
1200 ; AVX2-NEXT:    vpermq {{.*#+}} ymm9 = ymm5[2,3,0,1]
1201 ; AVX2-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
1202 ; AVX2-NEXT:    vpor %ymm8, %ymm9, %ymm8
1203 ; AVX2-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]
1204 ; AVX2-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1205 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm8 = xmm2[1,1,2,2]
1206 ; AVX2-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,1,1]
1207 ; AVX2-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]
1208 ; AVX2-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1209 ; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,0,2]
1210 ; AVX2-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
1211 ; AVX2-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,2,0]
1212 ; AVX2-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]
1213 ; AVX2-NEXT:    vpor %ymm6, %ymm5, %ymm5
1214 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm6 = xmm2[0,0,1,1]
1215 ; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]
1216 ; AVX2-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]
1217 ; AVX2-NEXT:    vpblendvb %ymm8, %ymm5, %ymm6, %ymm5
1218 ; AVX2-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]
1219 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[10,11],zero,zero,zero,xmm3[12,13],zero,zero,zero,xmm3[14,15],zero
1220 ; AVX2-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]
1221 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
1222 ; AVX2-NEXT:    vpor %xmm3, %xmm0, %xmm0
1223 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = xmm2[12],zero,zero,zero,zero,xmm2[13],zero,zero,zero,zero,xmm2[14],zero,zero,zero,zero,xmm2[15]
1224 ; AVX2-NEXT:    vpor %xmm1, %xmm0, %xmm0
1225 ; AVX2-NEXT:    vmovdqa %xmm0, 64(%r9)
1226 ; AVX2-NEXT:    vmovdqa %ymm5, (%r9)
1227 ; AVX2-NEXT:    vmovdqa %ymm7, 32(%r9)
1228 ; AVX2-NEXT:    vzeroupper
1229 ; AVX2-NEXT:    retq
1231 ; AVX2-FP-LABEL: store_i8_stride5_vf16:
1232 ; AVX2-FP:       # %bb.0:
1233 ; AVX2-FP-NEXT:    vmovdqa (%rdi), %xmm0
1234 ; AVX2-FP-NEXT:    vmovdqa (%rsi), %xmm1
1235 ; AVX2-FP-NEXT:    vmovdqa (%rdx), %xmm3
1236 ; AVX2-FP-NEXT:    vmovdqa (%rcx), %xmm4
1237 ; AVX2-FP-NEXT:    vmovdqa (%r8), %xmm2
1238 ; AVX2-FP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
1239 ; AVX2-FP-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm6
1240 ; AVX2-FP-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]
1241 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
1242 ; AVX2-FP-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
1243 ; AVX2-FP-NEXT:    vpor %ymm7, %ymm8, %ymm7
1244 ; AVX2-FP-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
1245 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm9 = ymm5[2,3,0,1]
1246 ; AVX2-FP-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
1247 ; AVX2-FP-NEXT:    vpor %ymm8, %ymm9, %ymm8
1248 ; AVX2-FP-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]
1249 ; AVX2-FP-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1250 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} xmm8 = xmm2[1,1,2,2]
1251 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,1,1]
1252 ; AVX2-FP-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]
1253 ; AVX2-FP-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1254 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,0,2]
1255 ; AVX2-FP-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
1256 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,2,0]
1257 ; AVX2-FP-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]
1258 ; AVX2-FP-NEXT:    vpor %ymm6, %ymm5, %ymm5
1259 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} xmm6 = xmm2[0,0,1,1]
1260 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,0,1]
1261 ; AVX2-FP-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]
1262 ; AVX2-FP-NEXT:    vpblendvb %ymm8, %ymm5, %ymm6, %ymm5
1263 ; AVX2-FP-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]
1264 ; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[10,11],zero,zero,zero,xmm3[12,13],zero,zero,zero,xmm3[14,15],zero
1265 ; AVX2-FP-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]
1266 ; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
1267 ; AVX2-FP-NEXT:    vpor %xmm3, %xmm0, %xmm0
1268 ; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm2[12],zero,zero,zero,zero,xmm2[13],zero,zero,zero,zero,xmm2[14],zero,zero,zero,zero,xmm2[15]
1269 ; AVX2-FP-NEXT:    vpor %xmm1, %xmm0, %xmm0
1270 ; AVX2-FP-NEXT:    vmovdqa %xmm0, 64(%r9)
1271 ; AVX2-FP-NEXT:    vmovdqa %ymm5, (%r9)
1272 ; AVX2-FP-NEXT:    vmovdqa %ymm7, 32(%r9)
1273 ; AVX2-FP-NEXT:    vzeroupper
1274 ; AVX2-FP-NEXT:    retq
1276 ; AVX2-FCP-LABEL: store_i8_stride5_vf16:
1277 ; AVX2-FCP:       # %bb.0:
1278 ; AVX2-FCP-NEXT:    vmovdqa (%rdi), %xmm0
1279 ; AVX2-FCP-NEXT:    vmovdqa (%rsi), %xmm1
1280 ; AVX2-FCP-NEXT:    vmovdqa (%rdx), %xmm2
1281 ; AVX2-FCP-NEXT:    vmovdqa (%rcx), %xmm3
1282 ; AVX2-FCP-NEXT:    vmovdqa (%r8), %xmm4
1283 ; AVX2-FCP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
1284 ; AVX2-FCP-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm6
1285 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm6[0,2,0,2]
1286 ; AVX2-FCP-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
1287 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm5[0,2,2,0]
1288 ; AVX2-FCP-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]
1289 ; AVX2-FCP-NEXT:    vpor %ymm7, %ymm8, %ymm7
1290 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [0,0,0,0,0,0,1,1]
1291 ; AVX2-FCP-NEXT:    vpermd %ymm4, %ymm8, %ymm8
1292 ; AVX2-FCP-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]
1293 ; AVX2-FCP-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1294 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [1,5,2,6,2,6,3,7]
1295 ; AVX2-FCP-NEXT:    vpermd %ymm5, %ymm8, %ymm5
1296 ; AVX2-FCP-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
1297 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [1,5,2,6,6,2,3,7]
1298 ; AVX2-FCP-NEXT:    vpermd %ymm6, %ymm8, %ymm6
1299 ; AVX2-FCP-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]
1300 ; AVX2-FCP-NEXT:    vpor %ymm5, %ymm6, %ymm5
1301 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm6 = [1,1,2,2,2,2,2,2]
1302 ; AVX2-FCP-NEXT:    vpermd %ymm4, %ymm6, %ymm6
1303 ; AVX2-FCP-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]
1304 ; AVX2-FCP-NEXT:    vpblendvb %ymm8, %ymm5, %ymm6, %ymm5
1305 ; AVX2-FCP-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]
1306 ; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[10,11],zero,zero,zero,xmm2[12,13],zero,zero,zero,xmm2[14,15],zero
1307 ; AVX2-FCP-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]
1308 ; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
1309 ; AVX2-FCP-NEXT:    vpor %xmm2, %xmm0, %xmm0
1310 ; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[12],zero,zero,zero,zero,xmm4[13],zero,zero,zero,zero,xmm4[14],zero,zero,zero,zero,xmm4[15]
1311 ; AVX2-FCP-NEXT:    vpor %xmm1, %xmm0, %xmm0
1312 ; AVX2-FCP-NEXT:    vmovdqa %xmm0, 64(%r9)
1313 ; AVX2-FCP-NEXT:    vmovdqa %ymm5, 32(%r9)
1314 ; AVX2-FCP-NEXT:    vmovdqa %ymm7, (%r9)
1315 ; AVX2-FCP-NEXT:    vzeroupper
1316 ; AVX2-FCP-NEXT:    retq
1318 ; AVX512-LABEL: store_i8_stride5_vf16:
1319 ; AVX512:       # %bb.0:
1320 ; AVX512-NEXT:    vmovdqa (%rdi), %xmm0
1321 ; AVX512-NEXT:    vmovdqa (%rsi), %xmm2
1322 ; AVX512-NEXT:    vmovdqa (%rdx), %xmm3
1323 ; AVX512-NEXT:    vmovdqa (%rcx), %xmm4
1324 ; AVX512-NEXT:    vmovdqa (%r8), %xmm1
1325 ; AVX512-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm5
1326 ; AVX512-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm6
1327 ; AVX512-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]
1328 ; AVX512-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
1329 ; AVX512-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]
1330 ; AVX512-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]
1331 ; AVX512-NEXT:    vpternlogq {{.*#+}} ymm8 = ~ymm9 & (ymm8 | ymm7)
1332 ; AVX512-NEXT:    vpermq {{.*#+}} ymm7 = ymm5[0,2,0,2]
1333 ; AVX512-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
1334 ; AVX512-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
1335 ; AVX512-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]
1336 ; AVX512-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,3,0,1]
1337 ; AVX512-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
1338 ; AVX512-NEXT:    vpternlogq {{.*#+}} ymm5 = ymm9 & (ymm5 | ymm8)
1339 ; AVX512-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
1340 ; AVX512-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]
1341 ; AVX512-NEXT:    vinserti64x4 $1, %ymm5, %zmm6, %zmm5
1342 ; AVX512-NEXT:    vporq %zmm7, %zmm5, %zmm5
1343 ; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]
1344 ; AVX512-NEXT:    vpermd %zmm1, %zmm6, %zmm6
1345 ; AVX512-NEXT:    vpternlogd {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))
1346 ; AVX512-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]
1347 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u],zero,zero,xmm3[10,11,u],zero,zero,xmm3[12,13,u],zero,zero,xmm3[14,15,u]
1348 ; AVX512-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]
1349 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,10,11],zero,zero,xmm0[u,12,13],zero,zero,xmm0[u,14,15],zero,zero,xmm0[u]
1350 ; AVX512-NEXT:    vpor %xmm3, %xmm0, %xmm0
1351 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[1,2,3,4],zero,xmm0[6,7,8,9],zero,xmm0[11,12,13,14],zero
1352 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[12],zero,zero,zero,zero,xmm1[13],zero,zero,zero,zero,xmm1[14],zero,zero,zero,zero,xmm1[15]
1353 ; AVX512-NEXT:    vpor %xmm1, %xmm0, %xmm0
1354 ; AVX512-NEXT:    vmovdqa %xmm0, 64(%r9)
1355 ; AVX512-NEXT:    vmovdqa64 %zmm6, (%r9)
1356 ; AVX512-NEXT:    vzeroupper
1357 ; AVX512-NEXT:    retq
1359 ; AVX512-FCP-LABEL: store_i8_stride5_vf16:
1360 ; AVX512-FCP:       # %bb.0:
1361 ; AVX512-FCP-NEXT:    vmovdqa (%rdi), %xmm1
1362 ; AVX512-FCP-NEXT:    vmovdqa (%rsi), %xmm2
1363 ; AVX512-FCP-NEXT:    vmovdqa (%rdx), %xmm3
1364 ; AVX512-FCP-NEXT:    vmovdqa (%rcx), %xmm4
1365 ; AVX512-FCP-NEXT:    vmovdqa (%r8), %xmm0
1366 ; AVX512-FCP-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm5
1367 ; AVX512-FCP-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm6
1368 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm6[0,2,0,2]
1369 ; AVX512-FCP-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
1370 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [1,5,2,6,2,6,3,7]
1371 ; AVX512-FCP-NEXT:    vpermd %ymm5, %ymm8, %ymm8
1372 ; AVX512-FCP-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
1373 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
1374 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,2,0]
1375 ; AVX512-FCP-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]
1376 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [1,5,2,6,6,2,3,7]
1377 ; AVX512-FCP-NEXT:    vpermd %ymm6, %ymm8, %ymm6
1378 ; AVX512-FCP-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]
1379 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm6, %zmm5, %zmm5
1380 ; AVX512-FCP-NEXT:    vporq %zmm7, %zmm5, %zmm5
1381 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm6
1382 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,0,10,10,10,10,0]
1383 ; AVX512-FCP-NEXT:    vpermd %zmm6, %zmm7, %zmm6
1384 ; AVX512-FCP-NEXT:    vpternlogd {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))
1385 ; AVX512-FCP-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]
1386 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u],zero,zero,xmm3[10,11,u],zero,zero,xmm3[12,13,u],zero,zero,xmm3[14,15,u]
1387 ; AVX512-FCP-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]
1388 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,10,11],zero,zero,xmm1[u,12,13],zero,zero,xmm1[u,14,15],zero,zero,xmm1[u]
1389 ; AVX512-FCP-NEXT:    vpor %xmm3, %xmm1, %xmm1
1390 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero
1391 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]
1392 ; AVX512-FCP-NEXT:    vpor %xmm0, %xmm1, %xmm0
1393 ; AVX512-FCP-NEXT:    vmovdqa %xmm0, 64(%r9)
1394 ; AVX512-FCP-NEXT:    vmovdqa64 %zmm6, (%r9)
1395 ; AVX512-FCP-NEXT:    vzeroupper
1396 ; AVX512-FCP-NEXT:    retq
1398 ; AVX512DQ-LABEL: store_i8_stride5_vf16:
1399 ; AVX512DQ:       # %bb.0:
1400 ; AVX512DQ-NEXT:    vmovdqa (%rdi), %xmm0
1401 ; AVX512DQ-NEXT:    vmovdqa (%rsi), %xmm2
1402 ; AVX512DQ-NEXT:    vmovdqa (%rdx), %xmm3
1403 ; AVX512DQ-NEXT:    vmovdqa (%rcx), %xmm4
1404 ; AVX512DQ-NEXT:    vmovdqa (%r8), %xmm1
1405 ; AVX512DQ-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm5
1406 ; AVX512DQ-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm6
1407 ; AVX512DQ-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]
1408 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
1409 ; AVX512DQ-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]
1410 ; AVX512DQ-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]
1411 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} ymm8 = ~ymm9 & (ymm8 | ymm7)
1412 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm7 = ymm5[0,2,0,2]
1413 ; AVX512DQ-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
1414 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
1415 ; AVX512DQ-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]
1416 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,3,0,1]
1417 ; AVX512DQ-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
1418 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} ymm5 = ymm9 & (ymm5 | ymm8)
1419 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
1420 ; AVX512DQ-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]
1421 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm5, %zmm6, %zmm5
1422 ; AVX512DQ-NEXT:    vporq %zmm7, %zmm5, %zmm5
1423 ; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]
1424 ; AVX512DQ-NEXT:    vpermd %zmm1, %zmm6, %zmm6
1425 ; AVX512DQ-NEXT:    vpternlogd {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))
1426 ; AVX512DQ-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]
1427 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u],zero,zero,xmm3[10,11,u],zero,zero,xmm3[12,13,u],zero,zero,xmm3[14,15,u]
1428 ; AVX512DQ-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]
1429 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,10,11],zero,zero,xmm0[u,12,13],zero,zero,xmm0[u,14,15],zero,zero,xmm0[u]
1430 ; AVX512DQ-NEXT:    vpor %xmm3, %xmm0, %xmm0
1431 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[1,2,3,4],zero,xmm0[6,7,8,9],zero,xmm0[11,12,13,14],zero
1432 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[12],zero,zero,zero,zero,xmm1[13],zero,zero,zero,zero,xmm1[14],zero,zero,zero,zero,xmm1[15]
1433 ; AVX512DQ-NEXT:    vpor %xmm1, %xmm0, %xmm0
1434 ; AVX512DQ-NEXT:    vmovdqa %xmm0, 64(%r9)
1435 ; AVX512DQ-NEXT:    vmovdqa64 %zmm6, (%r9)
1436 ; AVX512DQ-NEXT:    vzeroupper
1437 ; AVX512DQ-NEXT:    retq
1439 ; AVX512DQ-FCP-LABEL: store_i8_stride5_vf16:
1440 ; AVX512DQ-FCP:       # %bb.0:
1441 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %xmm1
1442 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rsi), %xmm2
1443 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdx), %xmm3
1444 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rcx), %xmm4
1445 ; AVX512DQ-FCP-NEXT:    vmovdqa (%r8), %xmm0
1446 ; AVX512DQ-FCP-NEXT:    vinserti128 $1, %xmm2, %ymm1, %ymm5
1447 ; AVX512DQ-FCP-NEXT:    vinserti128 $1, %xmm4, %ymm3, %ymm6
1448 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm6[0,2,0,2]
1449 ; AVX512DQ-FCP-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
1450 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [1,5,2,6,2,6,3,7]
1451 ; AVX512DQ-FCP-NEXT:    vpermd %ymm5, %ymm8, %ymm8
1452 ; AVX512DQ-FCP-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
1453 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
1454 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,2,0]
1455 ; AVX512DQ-FCP-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]
1456 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [1,5,2,6,6,2,3,7]
1457 ; AVX512DQ-FCP-NEXT:    vpermd %ymm6, %ymm8, %ymm6
1458 ; AVX512DQ-FCP-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]
1459 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm6, %zmm5, %zmm5
1460 ; AVX512DQ-FCP-NEXT:    vporq %zmm7, %zmm5, %zmm5
1461 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm6
1462 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,0,10,10,10,10,0]
1463 ; AVX512DQ-FCP-NEXT:    vpermd %zmm6, %zmm7, %zmm6
1464 ; AVX512DQ-FCP-NEXT:    vpternlogd {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))
1465 ; AVX512DQ-FCP-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]
1466 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u],zero,zero,xmm3[10,11,u],zero,zero,xmm3[12,13,u],zero,zero,xmm3[14,15,u]
1467 ; AVX512DQ-FCP-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]
1468 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,10,11],zero,zero,xmm1[u,12,13],zero,zero,xmm1[u,14,15],zero,zero,xmm1[u]
1469 ; AVX512DQ-FCP-NEXT:    vpor %xmm3, %xmm1, %xmm1
1470 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero
1471 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[12],zero,zero,zero,zero,xmm0[13],zero,zero,zero,zero,xmm0[14],zero,zero,zero,zero,xmm0[15]
1472 ; AVX512DQ-FCP-NEXT:    vpor %xmm0, %xmm1, %xmm0
1473 ; AVX512DQ-FCP-NEXT:    vmovdqa %xmm0, 64(%r9)
1474 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm6, (%r9)
1475 ; AVX512DQ-FCP-NEXT:    vzeroupper
1476 ; AVX512DQ-FCP-NEXT:    retq
1478 ; AVX512BW-LABEL: store_i8_stride5_vf16:
1479 ; AVX512BW:       # %bb.0:
1480 ; AVX512BW-NEXT:    vmovdqa (%rdi), %xmm0
1481 ; AVX512BW-NEXT:    vmovdqa (%rsi), %xmm1
1482 ; AVX512BW-NEXT:    vmovdqa (%rdx), %xmm2
1483 ; AVX512BW-NEXT:    vmovdqa (%rcx), %xmm3
1484 ; AVX512BW-NEXT:    vmovdqa (%r8), %xmm4
1485 ; AVX512BW-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm5
1486 ; AVX512BW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm6
1487 ; AVX512BW-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
1488 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
1489 ; AVX512BW-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
1490 ; AVX512BW-NEXT:    vpor %ymm7, %ymm8, %ymm7
1491 ; AVX512BW-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]
1492 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm9 = ymm5[2,3,0,1]
1493 ; AVX512BW-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
1494 ; AVX512BW-NEXT:    vpor %ymm8, %ymm9, %ymm8
1495 ; AVX512BW-NEXT:    movl $831283992, %eax # imm = 0x318C6318
1496 ; AVX512BW-NEXT:    kmovd %eax, %k1
1497 ; AVX512BW-NEXT:    vmovdqu8 %ymm7, %ymm8 {%k1}
1498 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
1499 ; AVX512BW-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]
1500 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]
1501 ; AVX512BW-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
1502 ; AVX512BW-NEXT:    vpor %ymm6, %ymm5, %ymm5
1503 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm8, %zmm5, %zmm5
1504 ; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
1505 ; AVX512BW-NEXT:    vpermd %zmm4, %zmm6, %zmm6
1506 ; AVX512BW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
1507 ; AVX512BW-NEXT:    kmovq %rax, %k1
1508 ; AVX512BW-NEXT:    vmovdqu8 %zmm6, %zmm5 {%k1}
1509 ; AVX512BW-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]
1510 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[10,11],zero,zero,zero,xmm2[12,13],zero,zero,zero,xmm2[14,15],zero
1511 ; AVX512BW-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]
1512 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
1513 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[12],zero,zero,zero,zero,xmm4[13],zero,zero,zero,zero,xmm4[14],zero,zero,zero,zero,xmm4[15]
1514 ; AVX512BW-NEXT:    vpternlogq {{.*#+}} xmm1 = xmm1 | xmm0 | xmm2
1515 ; AVX512BW-NEXT:    vmovdqa %xmm1, 64(%r9)
1516 ; AVX512BW-NEXT:    vmovdqa64 %zmm5, (%r9)
1517 ; AVX512BW-NEXT:    vzeroupper
1518 ; AVX512BW-NEXT:    retq
1520 ; AVX512BW-FCP-LABEL: store_i8_stride5_vf16:
1521 ; AVX512BW-FCP:       # %bb.0:
1522 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdi), %xmm0
1523 ; AVX512BW-FCP-NEXT:    vmovdqa (%rsi), %xmm1
1524 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdx), %xmm2
1525 ; AVX512BW-FCP-NEXT:    vmovdqa (%rcx), %xmm3
1526 ; AVX512BW-FCP-NEXT:    vmovdqa (%r8), %xmm4
1527 ; AVX512BW-FCP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
1528 ; AVX512BW-FCP-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm6
1529 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm7 = [1,5,2,6,6,2,3,7]
1530 ; AVX512BW-FCP-NEXT:    vpermd %ymm6, %ymm7, %ymm7
1531 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm5[0,2,2,0]
1532 ; AVX512BW-FCP-NEXT:    vinserti64x4 $1, %ymm7, %zmm8, %zmm7
1533 ; AVX512BW-FCP-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]
1534 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [1,5,2,6,2,6,3,7]
1535 ; AVX512BW-FCP-NEXT:    vpermd %ymm5, %ymm8, %ymm5
1536 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,0,2]
1537 ; AVX512BW-FCP-NEXT:    vinserti64x4 $1, %ymm5, %zmm6, %zmm5
1538 ; AVX512BW-FCP-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
1539 ; AVX512BW-FCP-NEXT:    vporq %zmm7, %zmm5, %zmm5
1540 ; AVX512BW-FCP-NEXT:    vinserti64x4 $1, %ymm4, %zmm4, %zmm6
1541 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]
1542 ; AVX512BW-FCP-NEXT:    vpermd %zmm6, %zmm7, %zmm6
1543 ; AVX512BW-FCP-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
1544 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k1
1545 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm5 {%k1}
1546 ; AVX512BW-FCP-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]
1547 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[10,11],zero,zero,zero,xmm2[12,13],zero,zero,zero,xmm2[14,15],zero
1548 ; AVX512BW-FCP-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]
1549 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
1550 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[12],zero,zero,zero,zero,xmm4[13],zero,zero,zero,zero,xmm4[14],zero,zero,zero,zero,xmm4[15]
1551 ; AVX512BW-FCP-NEXT:    vpternlogq {{.*#+}} xmm1 = xmm1 | xmm0 | xmm2
1552 ; AVX512BW-FCP-NEXT:    vmovdqa %xmm1, 64(%r9)
1553 ; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm5, (%r9)
1554 ; AVX512BW-FCP-NEXT:    vzeroupper
1555 ; AVX512BW-FCP-NEXT:    retq
1557 ; AVX512DQ-BW-LABEL: store_i8_stride5_vf16:
1558 ; AVX512DQ-BW:       # %bb.0:
1559 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdi), %xmm0
1560 ; AVX512DQ-BW-NEXT:    vmovdqa (%rsi), %xmm1
1561 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdx), %xmm2
1562 ; AVX512DQ-BW-NEXT:    vmovdqa (%rcx), %xmm3
1563 ; AVX512DQ-BW-NEXT:    vmovdqa (%r8), %xmm4
1564 ; AVX512DQ-BW-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm5
1565 ; AVX512DQ-BW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm6
1566 ; AVX512DQ-BW-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
1567 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
1568 ; AVX512DQ-BW-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
1569 ; AVX512DQ-BW-NEXT:    vpor %ymm7, %ymm8, %ymm7
1570 ; AVX512DQ-BW-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]
1571 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm9 = ymm5[2,3,0,1]
1572 ; AVX512DQ-BW-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
1573 ; AVX512DQ-BW-NEXT:    vpor %ymm8, %ymm9, %ymm8
1574 ; AVX512DQ-BW-NEXT:    movl $831283992, %eax # imm = 0x318C6318
1575 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k1
1576 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm7, %ymm8 {%k1}
1577 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
1578 ; AVX512DQ-BW-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]
1579 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]
1580 ; AVX512DQ-BW-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
1581 ; AVX512DQ-BW-NEXT:    vpor %ymm6, %ymm5, %ymm5
1582 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm8, %zmm5, %zmm5
1583 ; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
1584 ; AVX512DQ-BW-NEXT:    vpermd %zmm4, %zmm6, %zmm6
1585 ; AVX512DQ-BW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
1586 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k1
1587 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm6, %zmm5 {%k1}
1588 ; AVX512DQ-BW-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]
1589 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[10,11],zero,zero,zero,xmm2[12,13],zero,zero,zero,xmm2[14,15],zero
1590 ; AVX512DQ-BW-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]
1591 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
1592 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[12],zero,zero,zero,zero,xmm4[13],zero,zero,zero,zero,xmm4[14],zero,zero,zero,zero,xmm4[15]
1593 ; AVX512DQ-BW-NEXT:    vpternlogq {{.*#+}} xmm1 = xmm1 | xmm0 | xmm2
1594 ; AVX512DQ-BW-NEXT:    vmovdqa %xmm1, 64(%r9)
1595 ; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm5, (%r9)
1596 ; AVX512DQ-BW-NEXT:    vzeroupper
1597 ; AVX512DQ-BW-NEXT:    retq
1599 ; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf16:
1600 ; AVX512DQ-BW-FCP:       # %bb.0:
1601 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdi), %xmm0
1602 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rsi), %xmm1
1603 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdx), %xmm2
1604 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rcx), %xmm3
1605 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%r8), %xmm4
1606 ; AVX512DQ-BW-FCP-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
1607 ; AVX512DQ-BW-FCP-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm6
1608 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm7 = [1,5,2,6,6,2,3,7]
1609 ; AVX512DQ-BW-FCP-NEXT:    vpermd %ymm6, %ymm7, %ymm7
1610 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm5[0,2,2,0]
1611 ; AVX512DQ-BW-FCP-NEXT:    vinserti64x4 $1, %ymm7, %zmm8, %zmm7
1612 ; AVX512DQ-BW-FCP-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]
1613 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [1,5,2,6,2,6,3,7]
1614 ; AVX512DQ-BW-FCP-NEXT:    vpermd %ymm5, %ymm8, %ymm5
1615 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,0,2]
1616 ; AVX512DQ-BW-FCP-NEXT:    vinserti64x4 $1, %ymm5, %zmm6, %zmm5
1617 ; AVX512DQ-BW-FCP-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
1618 ; AVX512DQ-BW-FCP-NEXT:    vporq %zmm7, %zmm5, %zmm5
1619 ; AVX512DQ-BW-FCP-NEXT:    vinserti64x4 $1, %ymm4, %zmm4, %zmm6
1620 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]
1621 ; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm6, %zmm7, %zmm6
1622 ; AVX512DQ-BW-FCP-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
1623 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k1
1624 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm5 {%k1}
1625 ; AVX512DQ-BW-FCP-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]
1626 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[10,11],zero,zero,zero,xmm2[12,13],zero,zero,zero,xmm2[14,15],zero
1627 ; AVX512DQ-BW-FCP-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]
1628 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[10,11],zero,zero,zero,xmm0[12,13],zero,zero,zero,xmm0[14,15],zero,zero,zero
1629 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[12],zero,zero,zero,zero,xmm4[13],zero,zero,zero,zero,xmm4[14],zero,zero,zero,zero,xmm4[15]
1630 ; AVX512DQ-BW-FCP-NEXT:    vpternlogq {{.*#+}} xmm1 = xmm1 | xmm0 | xmm2
1631 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa %xmm1, 64(%r9)
1632 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm5, (%r9)
1633 ; AVX512DQ-BW-FCP-NEXT:    vzeroupper
1634 ; AVX512DQ-BW-FCP-NEXT:    retq
1635   %in.vec0 = load <16 x i8>, ptr %in.vecptr0, align 64
1636   %in.vec1 = load <16 x i8>, ptr %in.vecptr1, align 64
1637   %in.vec2 = load <16 x i8>, ptr %in.vecptr2, align 64
1638   %in.vec3 = load <16 x i8>, ptr %in.vecptr3, align 64
1639   %in.vec4 = load <16 x i8>, ptr %in.vecptr4, align 64
1640   %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>
1641   %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>
1642   %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>
1643   %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>
1644   %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>
1645   %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>
1646   store <80 x i8> %interleaved.vec, ptr %out.vec, align 64
1647   ret void
1650 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 {
1651 ; SSE-LABEL: store_i8_stride5_vf32:
1652 ; SSE:       # %bb.0:
1653 ; SSE-NEXT:    subq $152, %rsp
1654 ; SSE-NEXT:    movdqa 16(%rdi), %xmm15
1655 ; SSE-NEXT:    movdqa (%rsi), %xmm9
1656 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1657 ; SSE-NEXT:    movdqa 16(%rsi), %xmm7
1658 ; SSE-NEXT:    movdqa (%rdx), %xmm2
1659 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1660 ; SSE-NEXT:    movdqa 16(%rdx), %xmm0
1661 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1662 ; SSE-NEXT:    movdqa (%rcx), %xmm11
1663 ; SSE-NEXT:    movdqa 16(%rcx), %xmm12
1664 ; SSE-NEXT:    movdqa 16(%r8), %xmm14
1665 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
1666 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1667 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
1668 ; SSE-NEXT:    pand %xmm13, %xmm0
1669 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm12[2,1,2,3]
1670 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1671 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]
1672 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1673 ; SSE-NEXT:    movdqa %xmm13, %xmm4
1674 ; SSE-NEXT:    pandn %xmm1, %xmm4
1675 ; SSE-NEXT:    por %xmm0, %xmm4
1676 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
1677 ; SSE-NEXT:    pand %xmm8, %xmm4
1678 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm15[1,1,2,2]
1679 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
1680 ; SSE-NEXT:    pand %xmm3, %xmm0
1681 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[0,1,2,1]
1682 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
1683 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1684 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,0,3,4,5,6,7]
1685 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,1,0]
1686 ; SSE-NEXT:    movdqa %xmm3, %xmm5
1687 ; SSE-NEXT:    pandn %xmm1, %xmm5
1688 ; SSE-NEXT:    por %xmm0, %xmm5
1689 ; SSE-NEXT:    movdqa %xmm8, %xmm0
1690 ; SSE-NEXT:    pandn %xmm5, %xmm0
1691 ; SSE-NEXT:    por %xmm4, %xmm0
1692 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
1693 ; SSE-NEXT:    pand %xmm10, %xmm0
1694 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm14[1,1,2,2]
1695 ; SSE-NEXT:    movdqa %xmm10, %xmm4
1696 ; SSE-NEXT:    pandn %xmm1, %xmm4
1697 ; SSE-NEXT:    por %xmm0, %xmm4
1698 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1699 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm2[3,3,3,3,4,5,6,7]
1700 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1701 ; SSE-NEXT:    pand %xmm13, %xmm0
1702 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm11[2,1,2,3]
1703 ; SSE-NEXT:    movdqa %xmm11, %xmm2
1704 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1705 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]
1706 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
1707 ; SSE-NEXT:    movdqa %xmm13, %xmm4
1708 ; SSE-NEXT:    pandn %xmm1, %xmm4
1709 ; SSE-NEXT:    por %xmm0, %xmm4
1710 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm9[0,1,2,1]
1711 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
1712 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1713 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
1714 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]
1715 ; SSE-NEXT:    movdqa %xmm3, %xmm1
1716 ; SSE-NEXT:    pandn %xmm0, %xmm1
1717 ; SSE-NEXT:    movdqa (%rdi), %xmm0
1718 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1719 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
1720 ; SSE-NEXT:    pand %xmm3, %xmm0
1721 ; SSE-NEXT:    por %xmm0, %xmm1
1722 ; SSE-NEXT:    movdqa %xmm8, %xmm0
1723 ; SSE-NEXT:    pandn %xmm1, %xmm0
1724 ; SSE-NEXT:    pand %xmm8, %xmm4
1725 ; SSE-NEXT:    por %xmm4, %xmm0
1726 ; SSE-NEXT:    movdqa (%r8), %xmm1
1727 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1728 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
1729 ; SSE-NEXT:    movdqa %xmm10, %xmm4
1730 ; SSE-NEXT:    pandn %xmm1, %xmm4
1731 ; SSE-NEXT:    pand %xmm10, %xmm0
1732 ; SSE-NEXT:    por %xmm0, %xmm4
1733 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1734 ; SSE-NEXT:    movdqa %xmm7, %xmm11
1735 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1736 ; 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]
1737 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1738 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
1739 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]
1740 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,4,7]
1741 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
1742 ; SSE-NEXT:    movdqa %xmm9, %xmm4
1743 ; SSE-NEXT:    pandn %xmm0, %xmm4
1744 ; SSE-NEXT:    movdqa %xmm15, %xmm6
1745 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1746 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm15[2,2,3,3]
1747 ; SSE-NEXT:    pand %xmm9, %xmm0
1748 ; SSE-NEXT:    por %xmm0, %xmm4
1749 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
1750 ; SSE-NEXT:    movdqa %xmm8, %xmm0
1751 ; SSE-NEXT:    pandn %xmm4, %xmm0
1752 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1753 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm7[0,1,2,3,5,6,6,7]
1754 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,2,2,2]
1755 ; SSE-NEXT:    movdqa %xmm3, %xmm5
1756 ; SSE-NEXT:    pandn %xmm4, %xmm5
1757 ; SSE-NEXT:    movdqa %xmm12, %xmm15
1758 ; 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]
1759 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm15[0,1,2,1]
1760 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,1,2,3,4,5,6,7]
1761 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,7,6,4]
1762 ; SSE-NEXT:    pand %xmm3, %xmm4
1763 ; SSE-NEXT:    por %xmm5, %xmm4
1764 ; SSE-NEXT:    pand %xmm8, %xmm4
1765 ; SSE-NEXT:    por %xmm0, %xmm4
1766 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1767 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm14[2,2,2,2]
1768 ; SSE-NEXT:    movdqa %xmm13, %xmm1
1769 ; SSE-NEXT:    pandn %xmm0, %xmm1
1770 ; SSE-NEXT:    pand %xmm13, %xmm4
1771 ; SSE-NEXT:    por %xmm4, %xmm1
1772 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1773 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm12 = xmm12[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1774 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1775 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm12[2,1,2,3]
1776 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,0,4,5,6,7]
1777 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
1778 ; SSE-NEXT:    movdqa %xmm10, %xmm4
1779 ; SSE-NEXT:    pandn %xmm0, %xmm4
1780 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm7[1,2,2,3,4,5,6,7]
1781 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
1782 ; SSE-NEXT:    pand %xmm10, %xmm0
1783 ; SSE-NEXT:    por %xmm0, %xmm4
1784 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
1785 ; SSE-NEXT:    movdqa %xmm1, %xmm5
1786 ; SSE-NEXT:    pandn %xmm4, %xmm5
1787 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[1,1,1,1]
1788 ; SSE-NEXT:    movdqa %xmm3, %xmm7
1789 ; SSE-NEXT:    pandn %xmm4, %xmm7
1790 ; SSE-NEXT:    movdqa %xmm11, %xmm0
1791 ; 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]
1792 ; SSE-NEXT:    movdqa %xmm0, (%rsp) # 16-byte Spill
1793 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm0[2,1,2,3]
1794 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[3,1,0,3,4,5,6,7]
1795 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,6]
1796 ; SSE-NEXT:    pand %xmm3, %xmm4
1797 ; SSE-NEXT:    por %xmm7, %xmm4
1798 ; SSE-NEXT:    pand %xmm1, %xmm4
1799 ; SSE-NEXT:    por %xmm5, %xmm4
1800 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm14[0,0,1,1]
1801 ; SSE-NEXT:    movdqa %xmm9, %xmm0
1802 ; SSE-NEXT:    pandn %xmm5, %xmm0
1803 ; SSE-NEXT:    pand %xmm9, %xmm4
1804 ; SSE-NEXT:    por %xmm4, %xmm0
1805 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1806 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
1807 ; SSE-NEXT:    movdqa %xmm11, %xmm0
1808 ; 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]
1809 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1810 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm0[0,1,2,1]
1811 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]
1812 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,7,5,4,7]
1813 ; SSE-NEXT:    movdqa %xmm9, %xmm5
1814 ; SSE-NEXT:    pandn %xmm4, %xmm5
1815 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
1816 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[2,2,3,3]
1817 ; SSE-NEXT:    pand %xmm9, %xmm4
1818 ; SSE-NEXT:    por %xmm4, %xmm5
1819 ; SSE-NEXT:    movdqa %xmm8, %xmm4
1820 ; SSE-NEXT:    pandn %xmm5, %xmm4
1821 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1822 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm0[0,1,2,3,5,6,6,7]
1823 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,2,2,2]
1824 ; SSE-NEXT:    movdqa %xmm3, %xmm7
1825 ; SSE-NEXT:    pandn %xmm5, %xmm7
1826 ; SSE-NEXT:    movdqa %xmm2, %xmm12
1827 ; 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]
1828 ; SSE-NEXT:    pshufd {{.*#+}} xmm14 = xmm12[0,1,2,1]
1829 ; SSE-NEXT:    pshuflw {{.*#+}} xmm14 = xmm14[1,1,2,3,4,5,6,7]
1830 ; SSE-NEXT:    pshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,4,7,6,4]
1831 ; SSE-NEXT:    pand %xmm3, %xmm14
1832 ; SSE-NEXT:    por %xmm7, %xmm14
1833 ; SSE-NEXT:    pand %xmm8, %xmm14
1834 ; SSE-NEXT:    por %xmm4, %xmm14
1835 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1836 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[2,2,2,2]
1837 ; SSE-NEXT:    movdqa %xmm13, %xmm7
1838 ; SSE-NEXT:    pandn %xmm4, %xmm7
1839 ; SSE-NEXT:    pand %xmm13, %xmm14
1840 ; SSE-NEXT:    por %xmm14, %xmm7
1841 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1842 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1843 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1844 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm2[2,1,2,3]
1845 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,0,4,5,6,7]
1846 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,5,5,5]
1847 ; SSE-NEXT:    movdqa %xmm10, %xmm14
1848 ; SSE-NEXT:    pandn %xmm4, %xmm14
1849 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm0[1,2,2,3,4,5,6,7]
1850 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,0,0,0]
1851 ; SSE-NEXT:    pand %xmm10, %xmm4
1852 ; SSE-NEXT:    por %xmm4, %xmm14
1853 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm6[1,1,1,1]
1854 ; SSE-NEXT:    movdqa %xmm3, %xmm2
1855 ; SSE-NEXT:    pandn %xmm4, %xmm2
1856 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm11 = xmm11[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1857 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1858 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm11[2,1,2,3]
1859 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[3,1,0,3,4,5,6,7]
1860 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,6]
1861 ; SSE-NEXT:    pand %xmm3, %xmm4
1862 ; SSE-NEXT:    por %xmm2, %xmm4
1863 ; SSE-NEXT:    pand %xmm1, %xmm4
1864 ; SSE-NEXT:    pandn %xmm14, %xmm1
1865 ; SSE-NEXT:    por %xmm4, %xmm1
1866 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm5[0,0,1,1]
1867 ; SSE-NEXT:    movdqa %xmm9, %xmm7
1868 ; SSE-NEXT:    pandn %xmm2, %xmm7
1869 ; SSE-NEXT:    pand %xmm9, %xmm1
1870 ; SSE-NEXT:    por %xmm1, %xmm7
1871 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm15[0,1,2,3,5,7,6,7]
1872 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,3,2]
1873 ; SSE-NEXT:    movdqa %xmm3, %xmm2
1874 ; SSE-NEXT:    pandn %xmm0, %xmm2
1875 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1876 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm5[0,1,2,3,7,6,6,7]
1877 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,2,2,2]
1878 ; SSE-NEXT:    pand %xmm3, %xmm0
1879 ; SSE-NEXT:    por %xmm0, %xmm2
1880 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
1881 ; SSE-NEXT:    movdqa %xmm6, %xmm0
1882 ; SSE-NEXT:    pandn %xmm2, %xmm0
1883 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
1884 ; SSE-NEXT:    # xmm2 = mem[0,1,2,3,7,5,6,6]
1885 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,3,2,2]
1886 ; SSE-NEXT:    movdqa %xmm10, %xmm14
1887 ; SSE-NEXT:    pandn %xmm2, %xmm14
1888 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1889 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[3,3,3,3]
1890 ; SSE-NEXT:    pand %xmm10, %xmm2
1891 ; SSE-NEXT:    por %xmm2, %xmm14
1892 ; SSE-NEXT:    pand %xmm6, %xmm14
1893 ; SSE-NEXT:    por %xmm0, %xmm14
1894 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
1895 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1896 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[3,3,3,3]
1897 ; SSE-NEXT:    movdqa %xmm11, %xmm15
1898 ; SSE-NEXT:    pandn %xmm0, %xmm15
1899 ; SSE-NEXT:    pand %xmm11, %xmm14
1900 ; SSE-NEXT:    por %xmm14, %xmm15
1901 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
1902 ; SSE-NEXT:    # xmm0 = mem[1,0,2,3,4,5,6,7]
1903 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
1904 ; SSE-NEXT:    movdqa %xmm9, %xmm2
1905 ; SSE-NEXT:    pandn %xmm0, %xmm2
1906 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm5[1,0,2,3,4,5,6,7]
1907 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
1908 ; SSE-NEXT:    pand %xmm9, %xmm0
1909 ; SSE-NEXT:    por %xmm0, %xmm2
1910 ; SSE-NEXT:    movdqa %xmm8, %xmm0
1911 ; SSE-NEXT:    pandn %xmm2, %xmm0
1912 ; SSE-NEXT:    pshuflw $164, (%rsp), %xmm2 # 16-byte Folded Reload
1913 ; SSE-NEXT:    # xmm2 = mem[0,1,2,2,4,5,6,7]
1914 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,1,3]
1915 ; SSE-NEXT:    movdqa %xmm13, %xmm14
1916 ; SSE-NEXT:    pandn %xmm2, %xmm14
1917 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[0,0,0,0]
1918 ; SSE-NEXT:    pand %xmm13, %xmm2
1919 ; SSE-NEXT:    por %xmm2, %xmm14
1920 ; SSE-NEXT:    pand %xmm8, %xmm14
1921 ; SSE-NEXT:    por %xmm0, %xmm14
1922 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[0,0,0,0]
1923 ; SSE-NEXT:    movdqa %xmm3, %xmm0
1924 ; SSE-NEXT:    pandn %xmm2, %xmm0
1925 ; SSE-NEXT:    pand %xmm3, %xmm14
1926 ; SSE-NEXT:    por %xmm14, %xmm0
1927 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm12[0,1,2,3,5,7,6,7]
1928 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,3,2]
1929 ; SSE-NEXT:    movdqa %xmm3, %xmm5
1930 ; SSE-NEXT:    pandn %xmm2, %xmm5
1931 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1932 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm4[0,1,2,3,7,6,6,7]
1933 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,2,2,2]
1934 ; SSE-NEXT:    pand %xmm3, %xmm2
1935 ; SSE-NEXT:    por %xmm2, %xmm5
1936 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
1937 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm14[3,3,3,3]
1938 ; SSE-NEXT:    pand %xmm10, %xmm2
1939 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
1940 ; SSE-NEXT:    # xmm12 = mem[0,1,2,3,7,5,6,6]
1941 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm12[2,3,2,2]
1942 ; SSE-NEXT:    pandn %xmm12, %xmm10
1943 ; SSE-NEXT:    por %xmm2, %xmm10
1944 ; SSE-NEXT:    movdqa %xmm6, %xmm1
1945 ; SSE-NEXT:    pand %xmm6, %xmm10
1946 ; SSE-NEXT:    pandn %xmm5, %xmm1
1947 ; SSE-NEXT:    por %xmm10, %xmm1
1948 ; SSE-NEXT:    pand %xmm11, %xmm1
1949 ; SSE-NEXT:    movdqa %xmm1, %xmm5
1950 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1951 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[3,3,3,3]
1952 ; SSE-NEXT:    pandn %xmm2, %xmm11
1953 ; SSE-NEXT:    por %xmm5, %xmm11
1954 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm4[1,0,2,3,4,5,6,7]
1955 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]
1956 ; SSE-NEXT:    pand %xmm9, %xmm2
1957 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
1958 ; SSE-NEXT:    # xmm5 = mem[1,0,2,3,4,5,6,7]
1959 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]
1960 ; SSE-NEXT:    pandn %xmm5, %xmm9
1961 ; SSE-NEXT:    por %xmm2, %xmm9
1962 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm14[0,0,0,0]
1963 ; SSE-NEXT:    pand %xmm13, %xmm2
1964 ; SSE-NEXT:    pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
1965 ; SSE-NEXT:    # xmm5 = mem[0,1,2,2,4,5,6,7]
1966 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,1,3]
1967 ; SSE-NEXT:    pandn %xmm5, %xmm13
1968 ; SSE-NEXT:    por %xmm2, %xmm13
1969 ; SSE-NEXT:    pand %xmm8, %xmm13
1970 ; SSE-NEXT:    pandn %xmm9, %xmm8
1971 ; SSE-NEXT:    por %xmm13, %xmm8
1972 ; SSE-NEXT:    pand %xmm3, %xmm8
1973 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[0,0,0,0]
1974 ; SSE-NEXT:    pandn %xmm2, %xmm3
1975 ; SSE-NEXT:    por %xmm8, %xmm3
1976 ; SSE-NEXT:    movdqa %xmm3, (%r9)
1977 ; SSE-NEXT:    movdqa %xmm11, 64(%r9)
1978 ; SSE-NEXT:    movdqa %xmm0, 80(%r9)
1979 ; SSE-NEXT:    movdqa %xmm15, 144(%r9)
1980 ; SSE-NEXT:    movdqa %xmm7, 16(%r9)
1981 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1982 ; SSE-NEXT:    movaps %xmm0, 48(%r9)
1983 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1984 ; SSE-NEXT:    movaps %xmm0, 96(%r9)
1985 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1986 ; SSE-NEXT:    movaps %xmm0, 128(%r9)
1987 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1988 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
1989 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1990 ; SSE-NEXT:    movaps %xmm0, 112(%r9)
1991 ; SSE-NEXT:    addq $152, %rsp
1992 ; SSE-NEXT:    retq
1994 ; AVX-LABEL: store_i8_stride5_vf32:
1995 ; AVX:       # %bb.0:
1996 ; AVX-NEXT:    vmovdqa 16(%rsi), %xmm10
1997 ; AVX-NEXT:    vmovdqa 16(%rdi), %xmm11
1998 ; AVX-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]
1999 ; AVX-NEXT:    vmovddup {{.*#+}} xmm5 = [0,10,11,14,15,0,12,13,0,10,11,14,15,0,12,13]
2000 ; AVX-NEXT:    # xmm5 = mem[0,0]
2001 ; AVX-NEXT:    vpshufb %xmm5, %xmm0, %xmm1
2002 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]
2003 ; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
2004 ; AVX-NEXT:    vmovaps {{.*#+}} 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]
2005 ; AVX-NEXT:    vandnps %ymm0, %ymm7, %ymm2
2006 ; AVX-NEXT:    vmovdqa 16(%rcx), %xmm0
2007 ; AVX-NEXT:    vmovdqa 16(%rdx), %xmm1
2008 ; AVX-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]
2009 ; AVX-NEXT:    vmovddup {{.*#+}} xmm4 = [12,13,0,10,11,14,15,0,12,13,0,10,11,14,15,0]
2010 ; AVX-NEXT:    # xmm4 = mem[0,0]
2011 ; AVX-NEXT:    vpshufb %xmm4, %xmm3, %xmm3
2012 ; AVX-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]
2013 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]
2014 ; AVX-NEXT:    vinsertf128 $1, %xmm3, %ymm6, %ymm3
2015 ; AVX-NEXT:    vandps %ymm7, %ymm3, %ymm3
2016 ; AVX-NEXT:    vorps %ymm2, %ymm3, %ymm2
2017 ; AVX-NEXT:    vextractf128 $1, %ymm2, %xmm3
2018 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = zero,xmm3[1,2,3,4],zero,xmm3[6,7,8,9],zero,xmm3[11,12,13,14],zero
2019 ; AVX-NEXT:    vmovdqa 16(%r8), %xmm15
2020 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm12 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15]
2021 ; AVX-NEXT:    vpshufb %xmm12, %xmm15, %xmm6
2022 ; AVX-NEXT:    vpor %xmm6, %xmm3, %xmm3
2023 ; AVX-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2024 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0],zero,xmm2[2,3,4,5],zero,xmm2[7,8,9,10],zero,xmm2[12,13,14,15]
2025 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = zero,xmm15[9],zero,zero,zero,zero,xmm15[10],zero,zero,zero,zero,xmm15[11],zero,zero,zero,zero
2026 ; AVX-NEXT:    vpor %xmm3, %xmm2, %xmm2
2027 ; AVX-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2028 ; AVX-NEXT:    vmovdqa (%rcx), %xmm7
2029 ; AVX-NEXT:    vmovdqa (%rdx), %xmm8
2030 ; AVX-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]
2031 ; AVX-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
2032 ; AVX-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]
2033 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm6[u,u,0,1,u,u,u,2,3,u,u,u,4,5,u,u]
2034 ; AVX-NEXT:    vinsertf128 $1, %xmm3, %ymm2, %ymm14
2035 ; AVX-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]
2036 ; AVX-NEXT:    vpshufb {{.*#+}} xmm13 = xmm2[0,1,u,u,u,2,3,u,u,u,4,5,u,u,u,6]
2037 ; AVX-NEXT:    vmovdqa (%rsi), %xmm2
2038 ; AVX-NEXT:    vmovdqa (%rdi), %xmm3
2039 ; AVX-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]
2040 ; AVX-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2041 ; AVX-NEXT:    vpshufb %xmm5, %xmm4, %xmm5
2042 ; AVX-NEXT:    vinsertf128 $1, %xmm13, %ymm5, %ymm5
2043 ; AVX-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]
2044 ; AVX-NEXT:    vandnps %ymm14, %ymm13, %ymm14
2045 ; AVX-NEXT:    vandps %ymm5, %ymm13, %ymm5
2046 ; AVX-NEXT:    vorps %ymm5, %ymm14, %ymm5
2047 ; AVX-NEXT:    vextractf128 $1, %ymm5, %xmm14
2048 ; AVX-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[0,1,2,3],zero,xmm14[5,6,7,8],zero,xmm14[10,11,12,13],zero,xmm14[15]
2049 ; AVX-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,zero,zero,xmm15[0],zero,zero,zero,zero,xmm15[1],zero,zero,zero,zero,xmm15[2],zero
2050 ; AVX-NEXT:    vpor %xmm9, %xmm14, %xmm4
2051 ; AVX-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2052 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = zero,xmm5[1,2,3,4],zero,xmm5[6,7,8,9],zero,xmm5[11,12,13,14],zero
2053 ; AVX-NEXT:    vmovdqa (%r8), %xmm14
2054 ; AVX-NEXT:    vpshufb %xmm12, %xmm14, %xmm9
2055 ; AVX-NEXT:    vpor %xmm5, %xmm9, %xmm4
2056 ; AVX-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2057 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm0[6,u,u,u],zero,xmm0[7,u,u,u],zero,xmm0[8,u,u,u],zero
2058 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[6],zero,xmm1[u,u,u,7],zero,xmm1[u,u,u,8],zero,xmm1[u,u,u,9]
2059 ; AVX-NEXT:    vpor %xmm0, %xmm1, %xmm1
2060 ; AVX-NEXT:    vmovddup {{.*#+}} xmm9 = [0,6,7,10,11,0,8,9,0,6,7,10,11,0,8,9]
2061 ; AVX-NEXT:    # xmm9 = mem[0,0]
2062 ; AVX-NEXT:    vpshufb %xmm9, %xmm6, %xmm5
2063 ; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm5, %ymm1
2064 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = xmm10[u,u,u],zero,xmm10[7,u,u,u],zero,xmm10[8,u,u,u],zero,xmm10[9,u]
2065 ; AVX-NEXT:    vmovddup {{.*#+}} xmm6 = [8,128,0,7,128,9,128,0,8,128,0,7,128,9,128,0]
2066 ; AVX-NEXT:    # xmm6 = mem[0,0]
2067 ; AVX-NEXT:    vpshufb %xmm6, %xmm11, %xmm12
2068 ; AVX-NEXT:    vpor %xmm5, %xmm12, %xmm5
2069 ; AVX-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]
2070 ; AVX-NEXT:    vmovddup {{.*#+}} xmm12 = [6,11,10,0,9,8,13,12,6,11,10,0,9,8,13,12]
2071 ; AVX-NEXT:    # xmm12 = mem[0,0]
2072 ; AVX-NEXT:    vpshufb %xmm12, %xmm10, %xmm10
2073 ; AVX-NEXT:    vinsertf128 $1, %xmm5, %ymm10, %ymm5
2074 ; AVX-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]
2075 ; AVX-NEXT:    vandnps %ymm1, %ymm10, %ymm1
2076 ; AVX-NEXT:    vandps %ymm5, %ymm10, %ymm5
2077 ; AVX-NEXT:    vorps %ymm1, %ymm5, %ymm5
2078 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm10 = [0,1,2,128,4,5,6,7,128,9,10,11,12,128,14,15]
2079 ; AVX-NEXT:    vpshufb %xmm10, %xmm5, %xmm1
2080 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm4 = [128,128,128,3,128,128,128,128,4,128,128,128,128,5,128,128]
2081 ; AVX-NEXT:    vpshufb %xmm4, %xmm15, %xmm11
2082 ; AVX-NEXT:    vpor %xmm1, %xmm11, %xmm1
2083 ; AVX-NEXT:    vextractf128 $1, %ymm5, %xmm5
2084 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm11 = [0,1,128,3,4,5,6,128,8,9,10,11,128,13,14,15]
2085 ; AVX-NEXT:    vpshufb %xmm11, %xmm5, %xmm0
2086 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm5 = [128,128,6,128,128,128,128,7,128,128,128,128,8,128,128,128]
2087 ; AVX-NEXT:    vpshufb %xmm5, %xmm15, %xmm15
2088 ; AVX-NEXT:    vpor %xmm0, %xmm15, %xmm15
2089 ; AVX-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]
2090 ; AVX-NEXT:    vpshufb %xmm9, %xmm0, %xmm9
2091 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,0,1,u,u,u,2,3,u,u,u,4,5,u,u]
2092 ; AVX-NEXT:    vinsertf128 $1, %xmm9, %ymm0, %ymm0
2093 ; AVX-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]
2094 ; AVX-NEXT:    vpshufb %xmm12, %xmm9, %xmm9
2095 ; AVX-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]
2096 ; AVX-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[0,1,u,u,u,2,3,u,u,u,4,5,u,u,u,6]
2097 ; AVX-NEXT:    vinsertf128 $1, %xmm9, %ymm12, %ymm9
2098 ; AVX-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]
2099 ; AVX-NEXT:    vandnps %ymm0, %ymm12, %ymm0
2100 ; AVX-NEXT:    vandps %ymm12, %ymm9, %ymm9
2101 ; AVX-NEXT:    vorps %ymm0, %ymm9, %ymm9
2102 ; AVX-NEXT:    vextractf128 $1, %ymm9, %xmm0
2103 ; AVX-NEXT:    vpshufb %xmm10, %xmm0, %xmm0
2104 ; AVX-NEXT:    vpshufb %xmm4, %xmm14, %xmm4
2105 ; AVX-NEXT:    vpor %xmm4, %xmm0, %xmm0
2106 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm9[0,1,2,3],zero,xmm9[5,6,7,8],zero,xmm9[10,11,12,13],zero,xmm9[15]
2107 ; AVX-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,zero,zero,xmm14[0],zero,zero,zero,zero,xmm14[1],zero,zero,zero,zero,xmm14[2],zero
2108 ; AVX-NEXT:    vpor %xmm4, %xmm9, %xmm4
2109 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u],zero,xmm2[7,u,u,u],zero,xmm2[8,u,u,u],zero,xmm2[9,u]
2110 ; AVX-NEXT:    vpshufb %xmm6, %xmm3, %xmm3
2111 ; AVX-NEXT:    vpor %xmm2, %xmm3, %xmm2
2112 ; AVX-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2113 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]
2114 ; AVX-NEXT:    vinsertf128 $1, %xmm3, %ymm2, %ymm2
2115 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = zero,xmm7[6,u,u,u],zero,xmm7[7,u,u,u],zero,xmm7[8,u,u,u],zero
2116 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm8[6],zero,xmm8[u,u,u,7],zero,xmm8[u,u,u,8],zero,xmm8[u,u,u,9]
2117 ; AVX-NEXT:    vpor %xmm3, %xmm6, %xmm3
2118 ; AVX-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]
2119 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]
2120 ; AVX-NEXT:    vinsertf128 $1, %xmm6, %ymm3, %ymm3
2121 ; AVX-NEXT:    vandnps %ymm2, %ymm13, %ymm2
2122 ; AVX-NEXT:    vandps %ymm3, %ymm13, %ymm3
2123 ; AVX-NEXT:    vorps %ymm2, %ymm3, %ymm2
2124 ; AVX-NEXT:    vpshufb %xmm11, %xmm2, %xmm3
2125 ; AVX-NEXT:    vpshufb %xmm5, %xmm14, %xmm5
2126 ; AVX-NEXT:    vpor %xmm5, %xmm3, %xmm3
2127 ; AVX-NEXT:    vextractf128 $1, %ymm2, %xmm2
2128 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0],zero,xmm2[2,3,4,5],zero,xmm2[7,8,9,10],zero,xmm2[12,13,14,15]
2129 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = zero,xmm14[9],zero,zero,zero,zero,xmm14[10],zero,zero,zero,zero,xmm14[11],zero,zero,zero,zero
2130 ; AVX-NEXT:    vpor %xmm5, %xmm2, %xmm2
2131 ; AVX-NEXT:    vmovdqa %xmm2, 48(%r9)
2132 ; AVX-NEXT:    vmovdqa %xmm3, 32(%r9)
2133 ; AVX-NEXT:    vmovdqa %xmm4, (%r9)
2134 ; AVX-NEXT:    vmovdqa %xmm0, 16(%r9)
2135 ; AVX-NEXT:    vmovdqa %xmm15, 112(%r9)
2136 ; AVX-NEXT:    vmovdqa %xmm1, 96(%r9)
2137 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2138 ; AVX-NEXT:    vmovaps %xmm0, 64(%r9)
2139 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2140 ; AVX-NEXT:    vmovaps %xmm0, 80(%r9)
2141 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2142 ; AVX-NEXT:    vmovaps %xmm0, 128(%r9)
2143 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2144 ; AVX-NEXT:    vmovaps %xmm0, 144(%r9)
2145 ; AVX-NEXT:    vzeroupper
2146 ; AVX-NEXT:    retq
2148 ; AVX2-LABEL: store_i8_stride5_vf32:
2149 ; AVX2:       # %bb.0:
2150 ; AVX2-NEXT:    vmovdqa (%rdi), %ymm3
2151 ; AVX2-NEXT:    vmovdqa (%rsi), %ymm4
2152 ; AVX2-NEXT:    vmovdqa (%rdx), %ymm1
2153 ; AVX2-NEXT:    vmovdqa (%rcx), %ymm2
2154 ; AVX2-NEXT:    vmovdqa (%r8), %ymm0
2155 ; AVX2-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]
2156 ; AVX2-NEXT:    vpshufhw {{.*#+}} ymm6 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
2157 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm6 = ymm6[2,2,3,3,6,6,7,7]
2158 ; AVX2-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]
2159 ; AVX2-NEXT:    # ymm7 = mem[0,1,0,1]
2160 ; AVX2-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
2161 ; AVX2-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
2162 ; AVX2-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]
2163 ; AVX2-NEXT:    vpshufhw {{.*#+}} ymm7 = ymm3[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
2164 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm7 = ymm7[2,2,3,3,6,6,7,7]
2165 ; AVX2-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]
2166 ; AVX2-NEXT:    # ymm8 = mem[0,1,0,1]
2167 ; AVX2-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
2168 ; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
2169 ; AVX2-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]
2170 ; AVX2-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
2171 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm6 = ymm0[2,2,3,3,6,6,7,7]
2172 ; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
2173 ; AVX2-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]
2174 ; AVX2-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
2175 ; AVX2-NEXT:    vmovdqa (%rsi), %xmm7
2176 ; AVX2-NEXT:    vmovdqa (%rdi), %xmm8
2177 ; AVX2-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]
2178 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2179 ; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
2180 ; AVX2-NEXT:    vmovdqa (%rdx), %xmm9
2181 ; AVX2-NEXT:    vmovdqa (%rcx), %xmm10
2182 ; AVX2-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]
2183 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2184 ; AVX2-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[0,0,1,1]
2185 ; AVX2-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]
2186 ; AVX2-NEXT:    vpblendvb %ymm12, %ymm6, %ymm11, %ymm6
2187 ; AVX2-NEXT:    vmovdqa (%r8), %xmm11
2188 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm12 = xmm11[0,0,1,1]
2189 ; AVX2-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[0,0,0,1]
2190 ; AVX2-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]
2191 ; AVX2-NEXT:    vpblendvb %ymm13, %ymm6, %ymm12, %ymm6
2192 ; AVX2-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]
2193 ; AVX2-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
2194 ; AVX2-NEXT:    vpor %xmm10, %xmm9, %xmm9
2195 ; AVX2-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]
2196 ; AVX2-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]
2197 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm7 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero
2198 ; AVX2-NEXT:    vpor %xmm7, %xmm8, %xmm7
2199 ; AVX2-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,0,1,1]
2200 ; AVX2-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]
2201 ; AVX2-NEXT:    vpblendvb %ymm8, %ymm9, %ymm7, %ymm7
2202 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm8 = xmm11[1,1,2,2]
2203 ; AVX2-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,1,1]
2204 ; AVX2-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]
2205 ; AVX2-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
2206 ; AVX2-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]
2207 ; AVX2-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
2208 ; AVX2-NEXT:    vpor %ymm8, %ymm9, %ymm8
2209 ; AVX2-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2210 ; AVX2-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
2211 ; AVX2-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]
2212 ; AVX2-NEXT:    vpor %ymm9, %ymm10, %ymm9
2213 ; AVX2-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
2214 ; AVX2-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]
2215 ; AVX2-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
2216 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm9 = ymm0[0,2,1,1,4,6,5,5]
2217 ; AVX2-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,3,3,2]
2218 ; AVX2-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]
2219 ; AVX2-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
2220 ; AVX2-NEXT:    vpmovsxbd {{.*#+}} ymm9 = [3,3,3,0,4,4,4,4]
2221 ; AVX2-NEXT:    vpermd %ymm3, %ymm9, %ymm3
2222 ; AVX2-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]
2223 ; AVX2-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]
2224 ; AVX2-NEXT:    vpblendvb %ymm9, %ymm3, %ymm4, %ymm3
2225 ; AVX2-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
2226 ; AVX2-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
2227 ; AVX2-NEXT:    vpor %ymm2, %ymm1, %ymm1
2228 ; AVX2-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]
2229 ; AVX2-NEXT:    vpblendvb %ymm2, %ymm3, %ymm1, %ymm1
2230 ; AVX2-NEXT:    vpmovsxbd {{.*#+}} ymm2 = [3,3,3,3,0,4,4,4]
2231 ; AVX2-NEXT:    vpermd %ymm0, %ymm2, %ymm0
2232 ; AVX2-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]
2233 ; AVX2-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
2234 ; AVX2-NEXT:    vmovdqa %ymm0, 64(%r9)
2235 ; AVX2-NEXT:    vmovdqa %ymm8, 96(%r9)
2236 ; AVX2-NEXT:    vmovdqa %ymm5, 128(%r9)
2237 ; AVX2-NEXT:    vmovdqa %ymm7, 32(%r9)
2238 ; AVX2-NEXT:    vmovdqa %ymm6, (%r9)
2239 ; AVX2-NEXT:    vzeroupper
2240 ; AVX2-NEXT:    retq
2242 ; AVX2-FP-LABEL: store_i8_stride5_vf32:
2243 ; AVX2-FP:       # %bb.0:
2244 ; AVX2-FP-NEXT:    vmovdqa (%rdi), %ymm3
2245 ; AVX2-FP-NEXT:    vmovdqa (%rsi), %ymm4
2246 ; AVX2-FP-NEXT:    vmovdqa (%rdx), %ymm1
2247 ; AVX2-FP-NEXT:    vmovdqa (%rcx), %ymm2
2248 ; AVX2-FP-NEXT:    vmovdqa (%r8), %ymm0
2249 ; AVX2-FP-NEXT:    vmovdqa (%rsi), %xmm6
2250 ; AVX2-FP-NEXT:    vmovdqa (%rdi), %xmm7
2251 ; AVX2-FP-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]
2252 ; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2253 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
2254 ; AVX2-FP-NEXT:    vmovdqa (%rdx), %xmm8
2255 ; AVX2-FP-NEXT:    vmovdqa (%rcx), %xmm9
2256 ; AVX2-FP-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]
2257 ; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2258 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]
2259 ; AVX2-FP-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]
2260 ; AVX2-FP-NEXT:    vpblendvb %ymm11, %ymm5, %ymm10, %ymm5
2261 ; AVX2-FP-NEXT:    vmovdqa (%r8), %xmm10
2262 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} xmm11 = xmm10[0,0,1,1]
2263 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[0,0,0,1]
2264 ; AVX2-FP-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]
2265 ; AVX2-FP-NEXT:    vpblendvb %ymm12, %ymm5, %ymm11, %ymm5
2266 ; AVX2-FP-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]
2267 ; AVX2-FP-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
2268 ; AVX2-FP-NEXT:    vpor %xmm9, %xmm8, %xmm8
2269 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
2270 ; AVX2-FP-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]
2271 ; AVX2-FP-NEXT:    vpshufb {{.*#+}} xmm6 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
2272 ; AVX2-FP-NEXT:    vpor %xmm7, %xmm6, %xmm6
2273 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
2274 ; AVX2-FP-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]
2275 ; AVX2-FP-NEXT:    vpblendvb %ymm7, %ymm8, %ymm6, %ymm6
2276 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} xmm7 = xmm10[1,1,2,2]
2277 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,1,1]
2278 ; AVX2-FP-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]
2279 ; AVX2-FP-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
2280 ; AVX2-FP-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]
2281 ; AVX2-FP-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
2282 ; AVX2-FP-NEXT:    vpor %ymm7, %ymm8, %ymm7
2283 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
2284 ; AVX2-FP-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
2285 ; AVX2-FP-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]
2286 ; AVX2-FP-NEXT:    vpor %ymm8, %ymm9, %ymm8
2287 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2288 ; AVX2-FP-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]
2289 ; AVX2-FP-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
2290 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[0,2,1,1,4,6,5,5]
2291 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]
2292 ; AVX2-FP-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]
2293 ; AVX2-FP-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
2294 ; AVX2-FP-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]
2295 ; AVX2-FP-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
2296 ; AVX2-FP-NEXT:    vpor %ymm8, %ymm9, %ymm8
2297 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2298 ; AVX2-FP-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
2299 ; AVX2-FP-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]
2300 ; AVX2-FP-NEXT:    vpor %ymm9, %ymm10, %ymm9
2301 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
2302 ; AVX2-FP-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]
2303 ; AVX2-FP-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
2304 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} ymm9 = ymm0[2,2,3,3,6,6,7,7]
2305 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
2306 ; AVX2-FP-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]
2307 ; AVX2-FP-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
2308 ; AVX2-FP-NEXT:    vpmovsxbd {{.*#+}} ymm9 = [3,3,3,0,4,4,4,4]
2309 ; AVX2-FP-NEXT:    vpermd %ymm3, %ymm9, %ymm3
2310 ; AVX2-FP-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]
2311 ; AVX2-FP-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]
2312 ; AVX2-FP-NEXT:    vpblendvb %ymm9, %ymm3, %ymm4, %ymm3
2313 ; AVX2-FP-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
2314 ; AVX2-FP-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
2315 ; AVX2-FP-NEXT:    vpor %ymm2, %ymm1, %ymm1
2316 ; AVX2-FP-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]
2317 ; AVX2-FP-NEXT:    vpblendvb %ymm2, %ymm3, %ymm1, %ymm1
2318 ; AVX2-FP-NEXT:    vpmovsxbd {{.*#+}} ymm2 = [3,3,3,3,0,4,4,4]
2319 ; AVX2-FP-NEXT:    vpermd %ymm0, %ymm2, %ymm0
2320 ; AVX2-FP-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]
2321 ; AVX2-FP-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
2322 ; AVX2-FP-NEXT:    vmovdqa %ymm0, 64(%r9)
2323 ; AVX2-FP-NEXT:    vmovdqa %ymm8, 128(%r9)
2324 ; AVX2-FP-NEXT:    vmovdqa %ymm7, 96(%r9)
2325 ; AVX2-FP-NEXT:    vmovdqa %ymm6, 32(%r9)
2326 ; AVX2-FP-NEXT:    vmovdqa %ymm5, (%r9)
2327 ; AVX2-FP-NEXT:    vzeroupper
2328 ; AVX2-FP-NEXT:    retq
2330 ; AVX2-FCP-LABEL: store_i8_stride5_vf32:
2331 ; AVX2-FCP:       # %bb.0:
2332 ; AVX2-FCP-NEXT:    vmovdqa (%rdi), %ymm3
2333 ; AVX2-FCP-NEXT:    vmovdqa (%rsi), %ymm4
2334 ; AVX2-FCP-NEXT:    vmovdqa (%rdx), %ymm1
2335 ; AVX2-FCP-NEXT:    vmovdqa (%rcx), %ymm2
2336 ; AVX2-FCP-NEXT:    vmovdqa (%r8), %ymm0
2337 ; AVX2-FCP-NEXT:    vmovdqa (%rsi), %xmm6
2338 ; AVX2-FCP-NEXT:    vmovdqa (%rdi), %xmm7
2339 ; AVX2-FCP-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]
2340 ; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2341 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
2342 ; AVX2-FCP-NEXT:    vmovdqa (%rdx), %xmm8
2343 ; AVX2-FCP-NEXT:    vmovdqa (%rcx), %xmm9
2344 ; AVX2-FCP-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]
2345 ; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2346 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]
2347 ; AVX2-FCP-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]
2348 ; AVX2-FCP-NEXT:    vpblendvb %ymm11, %ymm5, %ymm10, %ymm5
2349 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm10 = [0,0,0,0,0,0,1,1]
2350 ; AVX2-FCP-NEXT:    vpermd %ymm0, %ymm10, %ymm10
2351 ; AVX2-FCP-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]
2352 ; AVX2-FCP-NEXT:    vpblendvb %ymm11, %ymm5, %ymm10, %ymm5
2353 ; AVX2-FCP-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]
2354 ; AVX2-FCP-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
2355 ; AVX2-FCP-NEXT:    vpor %xmm9, %xmm8, %xmm8
2356 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
2357 ; AVX2-FCP-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]
2358 ; AVX2-FCP-NEXT:    vpshufb {{.*#+}} xmm6 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
2359 ; AVX2-FCP-NEXT:    vpor %xmm7, %xmm6, %xmm6
2360 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
2361 ; AVX2-FCP-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]
2362 ; AVX2-FCP-NEXT:    vpblendvb %ymm7, %ymm8, %ymm6, %ymm6
2363 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm7 = [1,1,2,2,2,2,2,2]
2364 ; AVX2-FCP-NEXT:    vpermd %ymm0, %ymm7, %ymm7
2365 ; AVX2-FCP-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]
2366 ; AVX2-FCP-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
2367 ; AVX2-FCP-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]
2368 ; AVX2-FCP-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
2369 ; AVX2-FCP-NEXT:    vpor %ymm7, %ymm8, %ymm7
2370 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
2371 ; AVX2-FCP-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
2372 ; AVX2-FCP-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]
2373 ; AVX2-FCP-NEXT:    vpor %ymm8, %ymm9, %ymm8
2374 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2375 ; AVX2-FCP-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]
2376 ; AVX2-FCP-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
2377 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [4,6,5,5,5,5,4,6]
2378 ; AVX2-FCP-NEXT:    vpermd %ymm0, %ymm8, %ymm8
2379 ; AVX2-FCP-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]
2380 ; AVX2-FCP-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
2381 ; AVX2-FCP-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]
2382 ; AVX2-FCP-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
2383 ; AVX2-FCP-NEXT:    vpor %ymm8, %ymm9, %ymm8
2384 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2385 ; AVX2-FCP-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
2386 ; AVX2-FCP-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]
2387 ; AVX2-FCP-NEXT:    vpor %ymm9, %ymm10, %ymm9
2388 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
2389 ; AVX2-FCP-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]
2390 ; AVX2-FCP-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
2391 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm9 = [6,6,6,6,7,7,7,7]
2392 ; AVX2-FCP-NEXT:    vpermd %ymm0, %ymm9, %ymm9
2393 ; AVX2-FCP-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]
2394 ; AVX2-FCP-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
2395 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm9 = [3,3,3,0,4,4,4,4]
2396 ; AVX2-FCP-NEXT:    vpermd %ymm3, %ymm9, %ymm3
2397 ; AVX2-FCP-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]
2398 ; AVX2-FCP-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]
2399 ; AVX2-FCP-NEXT:    vpblendvb %ymm9, %ymm3, %ymm4, %ymm3
2400 ; AVX2-FCP-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
2401 ; AVX2-FCP-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
2402 ; AVX2-FCP-NEXT:    vpor %ymm2, %ymm1, %ymm1
2403 ; AVX2-FCP-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]
2404 ; AVX2-FCP-NEXT:    vpblendvb %ymm2, %ymm3, %ymm1, %ymm1
2405 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm2 = [3,3,3,3,0,4,4,4]
2406 ; AVX2-FCP-NEXT:    vpermd %ymm0, %ymm2, %ymm0
2407 ; AVX2-FCP-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]
2408 ; AVX2-FCP-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
2409 ; AVX2-FCP-NEXT:    vmovdqa %ymm0, 64(%r9)
2410 ; AVX2-FCP-NEXT:    vmovdqa %ymm8, 128(%r9)
2411 ; AVX2-FCP-NEXT:    vmovdqa %ymm7, 96(%r9)
2412 ; AVX2-FCP-NEXT:    vmovdqa %ymm6, 32(%r9)
2413 ; AVX2-FCP-NEXT:    vmovdqa %ymm5, (%r9)
2414 ; AVX2-FCP-NEXT:    vzeroupper
2415 ; AVX2-FCP-NEXT:    retq
2417 ; AVX512-LABEL: store_i8_stride5_vf32:
2418 ; AVX512:       # %bb.0:
2419 ; AVX512-NEXT:    vmovdqa (%rdi), %ymm3
2420 ; AVX512-NEXT:    vmovdqa (%rsi), %ymm4
2421 ; AVX512-NEXT:    vmovdqa (%rdx), %ymm1
2422 ; AVX512-NEXT:    vmovdqa (%rcx), %ymm2
2423 ; AVX512-NEXT:    vmovdqa (%r8), %ymm0
2424 ; AVX512-NEXT:    vmovdqa (%rdi), %xmm5
2425 ; AVX512-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]
2426 ; AVX512-NEXT:    vmovdqa (%rsi), %xmm7
2427 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero
2428 ; AVX512-NEXT:    vpor %xmm6, %xmm8, %xmm6
2429 ; AVX512-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
2430 ; AVX512-NEXT:    vmovdqa (%rcx), %xmm8
2431 ; AVX512-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]
2432 ; AVX512-NEXT:    vmovdqa (%rdx), %xmm10
2433 ; AVX512-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
2434 ; AVX512-NEXT:    vpor %xmm9, %xmm11, %xmm9
2435 ; AVX512-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]
2436 ; AVX512-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]
2437 ; AVX512-NEXT:    vpternlogq {{.*#+}} ymm9 = ymm6 ^ (ymm11 & (ymm9 ^ ymm6))
2438 ; AVX512-NEXT:    vinserti64x4 $1, %ymm9, %zmm0, %zmm6
2439 ; AVX512-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]
2440 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2441 ; AVX512-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
2442 ; AVX512-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]
2443 ; AVX512-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2444 ; AVX512-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
2445 ; AVX512-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]
2446 ; AVX512-NEXT:    vpternlogq {{.*#+}} ymm5 = ymm8 ^ (ymm7 & (ymm5 ^ ymm8))
2447 ; AVX512-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm5[0,1,2,3],zmm6[4,5,6,7]
2448 ; AVX512-NEXT:    vmovdqa (%r8), %xmm6
2449 ; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]
2450 ; AVX512-NEXT:    vpermd %zmm6, %zmm8, %zmm6
2451 ; AVX512-NEXT:    vpternlogd {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))
2452 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm5 = ymm2[u,u,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]
2453 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm8 = ymm1[u,u,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]
2454 ; AVX512-NEXT:    vpor %ymm5, %ymm8, %ymm5
2455 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm8 = ymm4[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,u],zero
2456 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm9 = ymm3[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,u,19]
2457 ; AVX512-NEXT:    vpor %ymm8, %ymm9, %ymm8
2458 ; AVX512-NEXT:    vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm11 & (ymm8 ^ ymm5))
2459 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm5 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,zero,ymm3[20],zero,ymm3[22],zero,ymm3[24],zero,zero,ymm3[23],zero,ymm3[25],zero,zero
2460 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm9 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21,u],zero,ymm4[20],zero,ymm4[22],zero,ymm4[24,u],zero,ymm4[23],zero,ymm4[25,u]
2461 ; AVX512-NEXT:    vpor %ymm5, %ymm9, %ymm5
2462 ; AVX512-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
2463 ; AVX512-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
2464 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm10 = 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]
2465 ; AVX512-NEXT:    vpor %ymm9, %ymm10, %ymm9
2466 ; AVX512-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
2467 ; AVX512-NEXT:    vpternlogq {{.*#+}} ymm9 = ymm9 ^ (mem & (ymm9 ^ ymm5))
2468 ; AVX512-NEXT:    vinserti64x4 $1, %ymm9, %zmm0, %zmm5
2469 ; AVX512-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm5[4,5,6,7]
2470 ; AVX512-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
2471 ; AVX512-NEXT:    vpshufd {{.*#+}} ymm9 = ymm0[0,2,1,1,4,6,5,5]
2472 ; AVX512-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,3,3,2]
2473 ; AVX512-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]
2474 ; AVX512-NEXT:    vpandn %ymm9, %ymm10, %ymm9
2475 ; AVX512-NEXT:    vinserti64x4 $1, %ymm9, %zmm8, %zmm8
2476 ; AVX512-NEXT:    vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm5 & mem)
2477 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm3[26],zero,ymm3[28],zero,zero,ymm3[27],zero,ymm3[29],zero,ymm3[31],zero,zero,ymm3[30],zero
2478 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u],zero,ymm4[26],zero,ymm4[28,u],zero,ymm4[u],zero,ymm4[29],zero,ymm4[31,u],zero,ymm4[30]
2479 ; AVX512-NEXT:    vpor %ymm3, %ymm4, %ymm3
2480 ; AVX512-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
2481 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[27],zero,zero,ymm1[26],zero,ymm1[28],zero,ymm1[30],zero,zero,ymm1[29],zero,ymm1[31],zero,zero
2482 ; AVX512-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27,u],zero,ymm2[26],zero,ymm2[28],zero,ymm2[30,u],zero,ymm2[29],zero,ymm2[31,u]
2483 ; AVX512-NEXT:    vpor %ymm1, %ymm2, %ymm1
2484 ; AVX512-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
2485 ; AVX512-NEXT:    vpternlogq {{.*#+}} ymm1 = ymm3 ^ (ymm7 & (ymm1 ^ ymm3))
2486 ; AVX512-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]
2487 ; AVX512-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2488 ; AVX512-NEXT:    vpternlogq {{.*#+}} ymm0 = ymm0 ^ (mem & (ymm0 ^ ymm1))
2489 ; AVX512-NEXT:    vmovdqa %ymm0, 128(%r9)
2490 ; AVX512-NEXT:    vmovdqa64 %zmm8, 64(%r9)
2491 ; AVX512-NEXT:    vmovdqa64 %zmm6, (%r9)
2492 ; AVX512-NEXT:    vzeroupper
2493 ; AVX512-NEXT:    retq
2495 ; AVX512-FCP-LABEL: store_i8_stride5_vf32:
2496 ; AVX512-FCP:       # %bb.0:
2497 ; AVX512-FCP-NEXT:    vmovdqa (%rdi), %ymm2
2498 ; AVX512-FCP-NEXT:    vmovdqa (%rsi), %ymm3
2499 ; AVX512-FCP-NEXT:    vmovdqa (%rdx), %ymm0
2500 ; AVX512-FCP-NEXT:    vmovdqa (%rcx), %ymm1
2501 ; AVX512-FCP-NEXT:    vmovdqa (%rdi), %xmm4
2502 ; AVX512-FCP-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]
2503 ; AVX512-FCP-NEXT:    vmovdqa (%rsi), %xmm6
2504 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
2505 ; AVX512-FCP-NEXT:    vpor %xmm5, %xmm7, %xmm5
2506 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
2507 ; AVX512-FCP-NEXT:    vmovdqa (%rcx), %xmm7
2508 ; AVX512-FCP-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]
2509 ; AVX512-FCP-NEXT:    vmovdqa (%rdx), %xmm9
2510 ; AVX512-FCP-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
2511 ; AVX512-FCP-NEXT:    vpor %xmm8, %xmm10, %xmm8
2512 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
2513 ; AVX512-FCP-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]
2514 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm10 & (ymm8 ^ ymm5))
2515 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm0, %zmm5
2516 ; AVX512-FCP-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]
2517 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2518 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,0,1,1]
2519 ; AVX512-FCP-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]
2520 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2521 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
2522 ; AVX512-FCP-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]
2523 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} ymm4 = ymm7 ^ (ymm6 & (ymm4 ^ ymm7))
2524 ; AVX512-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm4[0,1,2,3],zmm5[4,5,6,7]
2525 ; AVX512-FCP-NEXT:    vbroadcasti64x4 {{.*#+}} zmm4 = mem[0,1,2,3,0,1,2,3]
2526 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,0,10,10,10,10,0]
2527 ; AVX512-FCP-NEXT:    vpermd %zmm4, %zmm7, %zmm7
2528 ; AVX512-FCP-NEXT:    vpternlogd {{.*#+}} zmm7 = zmm7 ^ (mem & (zmm7 ^ zmm5))
2529 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm5 = ymm1[u,u,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]
2530 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm8 = ymm0[u,u,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]
2531 ; AVX512-FCP-NEXT:    vpor %ymm5, %ymm8, %ymm5
2532 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm8 = ymm3[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,u],zero
2533 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm9 = ymm2[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,u,19]
2534 ; AVX512-FCP-NEXT:    vpor %ymm8, %ymm9, %ymm8
2535 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm10 & (ymm8 ^ ymm5))
2536 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm5 = 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
2537 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm9 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm3[21,u],zero,ymm3[20],zero,ymm3[22],zero,ymm3[24,u],zero,ymm3[23],zero,ymm3[25,u]
2538 ; AVX512-FCP-NEXT:    vpor %ymm5, %ymm9, %ymm5
2539 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
2540 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero
2541 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm10 = 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]
2542 ; AVX512-FCP-NEXT:    vpor %ymm9, %ymm10, %ymm9
2543 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
2544 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} ymm9 = ymm9 ^ (mem & (ymm9 ^ ymm5))
2545 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm9, %zmm0, %zmm5
2546 ; AVX512-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm5[4,5,6,7]
2547 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [4,0,5,5,5,5,0,6]
2548 ; AVX512-FCP-NEXT:    vpermd %ymm4, %ymm8, %ymm8
2549 ; AVX512-FCP-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]
2550 ; AVX512-FCP-NEXT:    vpandn %ymm8, %ymm9, %ymm8
2551 ; AVX512-FCP-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
2552 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm9, %zmm8
2553 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm5 & mem)
2554 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm2 = 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
2555 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u],zero,ymm3[26],zero,ymm3[28,u],zero,ymm3[u],zero,ymm3[29],zero,ymm3[31,u],zero,ymm3[30]
2556 ; AVX512-FCP-NEXT:    vpor %ymm2, %ymm3, %ymm2
2557 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
2558 ; AVX512-FCP-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
2559 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm1[27,u],zero,ymm1[26],zero,ymm1[28],zero,ymm1[30,u],zero,ymm1[29],zero,ymm1[31,u]
2560 ; AVX512-FCP-NEXT:    vpor %ymm0, %ymm1, %ymm0
2561 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2562 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm6 & (ymm0 ^ ymm2))
2563 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [6,6,6,0,7,7,7,7]
2564 ; AVX512-FCP-NEXT:    vpermd %ymm4, %ymm1, %ymm1
2565 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} ymm1 = ymm1 ^ (mem & (ymm1 ^ ymm0))
2566 ; AVX512-FCP-NEXT:    vmovdqa %ymm1, 128(%r9)
2567 ; AVX512-FCP-NEXT:    vmovdqa64 %zmm8, 64(%r9)
2568 ; AVX512-FCP-NEXT:    vmovdqa64 %zmm7, (%r9)
2569 ; AVX512-FCP-NEXT:    vzeroupper
2570 ; AVX512-FCP-NEXT:    retq
2572 ; AVX512DQ-LABEL: store_i8_stride5_vf32:
2573 ; AVX512DQ:       # %bb.0:
2574 ; AVX512DQ-NEXT:    vmovdqa (%rdi), %ymm3
2575 ; AVX512DQ-NEXT:    vmovdqa (%rsi), %ymm4
2576 ; AVX512DQ-NEXT:    vmovdqa (%rdx), %ymm1
2577 ; AVX512DQ-NEXT:    vmovdqa (%rcx), %ymm2
2578 ; AVX512DQ-NEXT:    vmovdqa (%r8), %ymm0
2579 ; AVX512DQ-NEXT:    vmovdqa (%rdi), %xmm5
2580 ; AVX512DQ-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]
2581 ; AVX512DQ-NEXT:    vmovdqa (%rsi), %xmm7
2582 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero
2583 ; AVX512DQ-NEXT:    vpor %xmm6, %xmm8, %xmm6
2584 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
2585 ; AVX512DQ-NEXT:    vmovdqa (%rcx), %xmm8
2586 ; AVX512DQ-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]
2587 ; AVX512DQ-NEXT:    vmovdqa (%rdx), %xmm10
2588 ; AVX512DQ-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
2589 ; AVX512DQ-NEXT:    vpor %xmm9, %xmm11, %xmm9
2590 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,0,1,1]
2591 ; AVX512DQ-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]
2592 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} ymm9 = ymm6 ^ (ymm11 & (ymm9 ^ ymm6))
2593 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm9, %zmm0, %zmm6
2594 ; AVX512DQ-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]
2595 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2596 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
2597 ; AVX512DQ-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]
2598 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2599 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
2600 ; AVX512DQ-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]
2601 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} ymm5 = ymm8 ^ (ymm7 & (ymm5 ^ ymm8))
2602 ; AVX512DQ-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm5[0,1,2,3],zmm6[4,5,6,7]
2603 ; AVX512DQ-NEXT:    vmovdqa (%r8), %xmm6
2604 ; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm8 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]
2605 ; AVX512DQ-NEXT:    vpermd %zmm6, %zmm8, %zmm6
2606 ; AVX512DQ-NEXT:    vpternlogd {{.*#+}} zmm6 = zmm6 ^ (mem & (zmm6 ^ zmm5))
2607 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm5 = ymm2[u,u,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]
2608 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm8 = ymm1[u,u,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]
2609 ; AVX512DQ-NEXT:    vpor %ymm5, %ymm8, %ymm5
2610 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm8 = ymm4[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,u],zero
2611 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm9 = ymm3[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,u,19]
2612 ; AVX512DQ-NEXT:    vpor %ymm8, %ymm9, %ymm8
2613 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm11 & (ymm8 ^ ymm5))
2614 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm5 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm3[21],zero,zero,ymm3[20],zero,ymm3[22],zero,ymm3[24],zero,zero,ymm3[23],zero,ymm3[25],zero,zero
2615 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm9 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm4[21,u],zero,ymm4[20],zero,ymm4[22],zero,ymm4[24,u],zero,ymm4[23],zero,ymm4[25,u]
2616 ; AVX512DQ-NEXT:    vpor %ymm5, %ymm9, %ymm5
2617 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
2618 ; AVX512DQ-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
2619 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm10 = 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]
2620 ; AVX512DQ-NEXT:    vpor %ymm9, %ymm10, %ymm9
2621 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
2622 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} ymm9 = ymm9 ^ (mem & (ymm9 ^ ymm5))
2623 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm9, %zmm0, %zmm5
2624 ; AVX512DQ-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm5[4,5,6,7]
2625 ; AVX512DQ-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
2626 ; AVX512DQ-NEXT:    vpshufd {{.*#+}} ymm9 = ymm0[0,2,1,1,4,6,5,5]
2627 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,3,3,2]
2628 ; AVX512DQ-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]
2629 ; AVX512DQ-NEXT:    vpandn %ymm9, %ymm10, %ymm9
2630 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm9, %zmm8, %zmm8
2631 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm5 & mem)
2632 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm3[26],zero,ymm3[28],zero,zero,ymm3[27],zero,ymm3[29],zero,ymm3[31],zero,zero,ymm3[30],zero
2633 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u],zero,ymm4[26],zero,ymm4[28,u],zero,ymm4[u],zero,ymm4[29],zero,ymm4[31,u],zero,ymm4[30]
2634 ; AVX512DQ-NEXT:    vpor %ymm3, %ymm4, %ymm3
2635 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
2636 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm1[27],zero,zero,ymm1[26],zero,ymm1[28],zero,ymm1[30],zero,zero,ymm1[29],zero,ymm1[31],zero,zero
2637 ; AVX512DQ-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm2[27,u],zero,ymm2[26],zero,ymm2[28],zero,ymm2[30,u],zero,ymm2[29],zero,ymm2[31,u]
2638 ; AVX512DQ-NEXT:    vpor %ymm1, %ymm2, %ymm1
2639 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
2640 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} ymm1 = ymm3 ^ (ymm7 & (ymm1 ^ ymm3))
2641 ; AVX512DQ-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]
2642 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2643 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} ymm0 = ymm0 ^ (mem & (ymm0 ^ ymm1))
2644 ; AVX512DQ-NEXT:    vmovdqa %ymm0, 128(%r9)
2645 ; AVX512DQ-NEXT:    vmovdqa64 %zmm8, 64(%r9)
2646 ; AVX512DQ-NEXT:    vmovdqa64 %zmm6, (%r9)
2647 ; AVX512DQ-NEXT:    vzeroupper
2648 ; AVX512DQ-NEXT:    retq
2650 ; AVX512DQ-FCP-LABEL: store_i8_stride5_vf32:
2651 ; AVX512DQ-FCP:       # %bb.0:
2652 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %ymm2
2653 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rsi), %ymm3
2654 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdx), %ymm0
2655 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rcx), %ymm1
2656 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %xmm4
2657 ; AVX512DQ-FCP-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]
2658 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rsi), %xmm6
2659 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
2660 ; AVX512DQ-FCP-NEXT:    vpor %xmm5, %xmm7, %xmm5
2661 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
2662 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rcx), %xmm7
2663 ; AVX512DQ-FCP-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]
2664 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdx), %xmm9
2665 ; AVX512DQ-FCP-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
2666 ; AVX512DQ-FCP-NEXT:    vpor %xmm8, %xmm10, %xmm8
2667 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,0,1,1]
2668 ; AVX512DQ-FCP-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]
2669 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm10 & (ymm8 ^ ymm5))
2670 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm0, %zmm5
2671 ; AVX512DQ-FCP-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]
2672 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2673 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,0,1,1]
2674 ; AVX512DQ-FCP-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]
2675 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2676 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
2677 ; AVX512DQ-FCP-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]
2678 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} ymm4 = ymm7 ^ (ymm6 & (ymm4 ^ ymm7))
2679 ; AVX512DQ-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm4[0,1,2,3],zmm5[4,5,6,7]
2680 ; AVX512DQ-FCP-NEXT:    vbroadcasti64x4 {{.*#+}} zmm4 = mem[0,1,2,3,0,1,2,3]
2681 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,9,9,0,10,10,10,10,0]
2682 ; AVX512DQ-FCP-NEXT:    vpermd %zmm4, %zmm7, %zmm7
2683 ; AVX512DQ-FCP-NEXT:    vpternlogd {{.*#+}} zmm7 = zmm7 ^ (mem & (zmm7 ^ zmm5))
2684 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm5 = ymm1[u,u,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]
2685 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm8 = ymm0[u,u,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]
2686 ; AVX512DQ-FCP-NEXT:    vpor %ymm5, %ymm8, %ymm5
2687 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm8 = ymm3[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,u],zero
2688 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm9 = ymm2[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,u,19]
2689 ; AVX512DQ-FCP-NEXT:    vpor %ymm8, %ymm9, %ymm8
2690 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} ymm8 = ymm5 ^ (ymm10 & (ymm8 ^ ymm5))
2691 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm5 = 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
2692 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm9 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm3[21,u],zero,ymm3[20],zero,ymm3[22],zero,ymm3[24,u],zero,ymm3[23],zero,ymm3[25,u]
2693 ; AVX512DQ-FCP-NEXT:    vpor %ymm5, %ymm9, %ymm5
2694 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
2695 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm1[19],zero,ymm1[21],zero,zero,ymm1[20],zero,ymm1[22],zero,ymm1[24],zero,zero,ymm1[23],zero
2696 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm10 = 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]
2697 ; AVX512DQ-FCP-NEXT:    vpor %ymm9, %ymm10, %ymm9
2698 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
2699 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} ymm9 = ymm9 ^ (mem & (ymm9 ^ ymm5))
2700 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm9, %zmm0, %zmm5
2701 ; AVX512DQ-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm8[0,1,2,3],zmm5[4,5,6,7]
2702 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [4,0,5,5,5,5,0,6]
2703 ; AVX512DQ-FCP-NEXT:    vpermd %ymm4, %ymm8, %ymm8
2704 ; AVX512DQ-FCP-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]
2705 ; AVX512DQ-FCP-NEXT:    vpandn %ymm8, %ymm9, %ymm8
2706 ; AVX512DQ-FCP-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
2707 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm9, %zmm8
2708 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm5 & mem)
2709 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm2 = 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
2710 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,u],zero,ymm3[26],zero,ymm3[28,u],zero,ymm3[u],zero,ymm3[29],zero,ymm3[31,u],zero,ymm3[30]
2711 ; AVX512DQ-FCP-NEXT:    vpor %ymm2, %ymm3, %ymm2
2712 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
2713 ; AVX512DQ-FCP-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
2714 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm1[27,u],zero,ymm1[26],zero,ymm1[28],zero,ymm1[30,u],zero,ymm1[29],zero,ymm1[31,u]
2715 ; AVX512DQ-FCP-NEXT:    vpor %ymm0, %ymm1, %ymm0
2716 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2717 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm6 & (ymm0 ^ ymm2))
2718 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [6,6,6,0,7,7,7,7]
2719 ; AVX512DQ-FCP-NEXT:    vpermd %ymm4, %ymm1, %ymm1
2720 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} ymm1 = ymm1 ^ (mem & (ymm1 ^ ymm0))
2721 ; AVX512DQ-FCP-NEXT:    vmovdqa %ymm1, 128(%r9)
2722 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm8, 64(%r9)
2723 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm7, (%r9)
2724 ; AVX512DQ-FCP-NEXT:    vzeroupper
2725 ; AVX512DQ-FCP-NEXT:    retq
2727 ; AVX512BW-LABEL: store_i8_stride5_vf32:
2728 ; AVX512BW:       # %bb.0:
2729 ; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm4
2730 ; AVX512BW-NEXT:    vmovdqa (%rsi), %ymm5
2731 ; AVX512BW-NEXT:    vmovdqa (%rdx), %ymm1
2732 ; AVX512BW-NEXT:    vmovdqa (%rcx), %ymm2
2733 ; AVX512BW-NEXT:    vmovdqa (%r8), %ymm0
2734 ; AVX512BW-NEXT:    vmovdqa (%rdi), %xmm3
2735 ; AVX512BW-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]
2736 ; AVX512BW-NEXT:    vmovdqa (%rsi), %xmm7
2737 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero
2738 ; AVX512BW-NEXT:    vpor %xmm6, %xmm8, %xmm6
2739 ; AVX512BW-NEXT:    vmovdqa (%rdx), %xmm8
2740 ; AVX512BW-NEXT:    vmovdqa (%rcx), %xmm9
2741 ; AVX512BW-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]
2742 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2743 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm6, %zmm10, %zmm6
2744 ; AVX512BW-NEXT:    vpermq {{.*#+}} zmm6 = zmm6[0,0,1,1,4,4,5,5]
2745 ; AVX512BW-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]
2746 ; AVX512BW-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
2747 ; AVX512BW-NEXT:    vpor %xmm9, %xmm8, %xmm8
2748 ; AVX512BW-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]
2749 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2750 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm8, %zmm3, %zmm3
2751 ; AVX512BW-NEXT:    vpermq {{.*#+}} zmm3 = zmm3[0,0,1,1,4,4,5,5]
2752 ; AVX512BW-NEXT:    movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C
2753 ; AVX512BW-NEXT:    kmovq %rax, %k1
2754 ; AVX512BW-NEXT:    vmovdqu8 %zmm6, %zmm3 {%k1}
2755 ; AVX512BW-NEXT:    vmovdqa (%r8), %xmm6
2756 ; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
2757 ; AVX512BW-NEXT:    vpermd %zmm6, %zmm7, %zmm6
2758 ; AVX512BW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
2759 ; AVX512BW-NEXT:    kmovq %rax, %k1
2760 ; AVX512BW-NEXT:    vmovdqu8 %zmm6, %zmm3 {%k1}
2761 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm6 = 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
2762 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm7 = 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
2763 ; AVX512BW-NEXT:    vpor %ymm6, %ymm7, %ymm6
2764 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm7 = 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]
2765 ; AVX512BW-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
2766 ; AVX512BW-NEXT:    vpor %ymm7, %ymm8, %ymm7
2767 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
2768 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm7, %zmm6, %zmm6
2769 ; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} ymm7 = [3,3,3,0,4,4,4,4]
2770 ; AVX512BW-NEXT:    vpermd %ymm4, %ymm7, %ymm7
2771 ; AVX512BW-NEXT:    movl $138547332, %eax # imm = 0x8421084
2772 ; AVX512BW-NEXT:    kmovd %eax, %k1
2773 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm7 {%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]
2774 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm8 = 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
2775 ; AVX512BW-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
2776 ; AVX512BW-NEXT:    vpor %ymm8, %ymm9, %ymm8
2777 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2778 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
2779 ; AVX512BW-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
2780 ; AVX512BW-NEXT:    kmovq %rax, %k1
2781 ; AVX512BW-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2782 ; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} ymm6 = [3,3,3,3,0,4,4,4]
2783 ; AVX512BW-NEXT:    vpermd %ymm0, %ymm6, %ymm6
2784 ; AVX512BW-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[0,2,1,1,4,6,5,5]
2785 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]
2786 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm8, %zmm6, %zmm6
2787 ; AVX512BW-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
2788 ; AVX512BW-NEXT:    kmovq %rax, %k1
2789 ; AVX512BW-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2790 ; AVX512BW-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]
2791 ; AVX512BW-NEXT:    vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
2792 ; AVX512BW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]
2793 ; AVX512BW-NEXT:    movl $1251232404, %eax # imm = 0x4A944A94
2794 ; AVX512BW-NEXT:    kmovd %eax, %k1
2795 ; AVX512BW-NEXT:    vmovdqu8 %ymm4, %ymm5 {%k1}
2796 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm4 = ymm5[2,2,3,3]
2797 ; AVX512BW-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]
2798 ; AVX512BW-NEXT:    vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
2799 ; AVX512BW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[2,2,3,3,6,6,7,7]
2800 ; AVX512BW-NEXT:    movl $693250386, %eax # imm = 0x29522952
2801 ; AVX512BW-NEXT:    kmovd %eax, %k1
2802 ; AVX512BW-NEXT:    vmovdqu8 %ymm1, %ymm2 {%k1}
2803 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm1 = ymm2[2,2,3,3]
2804 ; AVX512BW-NEXT:    movl $415641996, %eax # imm = 0x18C6318C
2805 ; AVX512BW-NEXT:    kmovd %eax, %k1
2806 ; AVX512BW-NEXT:    vmovdqu8 %ymm4, %ymm1 {%k1}
2807 ; AVX512BW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]
2808 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2809 ; AVX512BW-NEXT:    movl $-2078209982, %eax # imm = 0x84210842
2810 ; AVX512BW-NEXT:    kmovd %eax, %k1
2811 ; AVX512BW-NEXT:    vmovdqu8 %ymm0, %ymm1 {%k1}
2812 ; AVX512BW-NEXT:    vmovdqa %ymm1, 128(%r9)
2813 ; AVX512BW-NEXT:    vmovdqa64 %zmm7, 64(%r9)
2814 ; AVX512BW-NEXT:    vmovdqa64 %zmm3, (%r9)
2815 ; AVX512BW-NEXT:    vzeroupper
2816 ; AVX512BW-NEXT:    retq
2818 ; AVX512BW-FCP-LABEL: store_i8_stride5_vf32:
2819 ; AVX512BW-FCP:       # %bb.0:
2820 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdi), %ymm1
2821 ; AVX512BW-FCP-NEXT:    vmovdqa (%rsi), %ymm3
2822 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdx), %ymm0
2823 ; AVX512BW-FCP-NEXT:    vmovdqa (%rcx), %ymm2
2824 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdi), %xmm4
2825 ; AVX512BW-FCP-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]
2826 ; AVX512BW-FCP-NEXT:    vmovdqa (%rsi), %xmm6
2827 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
2828 ; AVX512BW-FCP-NEXT:    vpor %xmm5, %xmm7, %xmm5
2829 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdx), %xmm7
2830 ; AVX512BW-FCP-NEXT:    vmovdqa (%rcx), %xmm8
2831 ; AVX512BW-FCP-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]
2832 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2833 ; AVX512BW-FCP-NEXT:    vinserti32x4 $2, %xmm5, %zmm9, %zmm5
2834 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} zmm5 = zmm5[0,0,1,1,4,4,5,5]
2835 ; AVX512BW-FCP-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]
2836 ; AVX512BW-FCP-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
2837 ; AVX512BW-FCP-NEXT:    vpor %xmm7, %xmm8, %xmm7
2838 ; AVX512BW-FCP-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]
2839 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2840 ; AVX512BW-FCP-NEXT:    vinserti32x4 $2, %xmm7, %zmm4, %zmm4
2841 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} zmm4 = zmm4[0,0,1,1,4,4,5,5]
2842 ; AVX512BW-FCP-NEXT:    movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C
2843 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k1
2844 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm5, %zmm4 {%k1}
2845 ; AVX512BW-FCP-NEXT:    vbroadcasti64x4 {{.*#+}} zmm5 = mem[0,1,2,3,0,1,2,3]
2846 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]
2847 ; AVX512BW-FCP-NEXT:    vpermd %zmm5, %zmm6, %zmm6
2848 ; AVX512BW-FCP-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
2849 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k1
2850 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm4 {%k1}
2851 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm6 = 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
2852 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm7 = 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
2853 ; AVX512BW-FCP-NEXT:    vpor %ymm6, %ymm7, %ymm6
2854 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm7 = 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]
2855 ; AVX512BW-FCP-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
2856 ; AVX512BW-FCP-NEXT:    vpor %ymm7, %ymm8, %ymm7
2857 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
2858 ; AVX512BW-FCP-NEXT:    vinserti64x4 $1, %ymm7, %zmm6, %zmm6
2859 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm7 = [3,3,3,0,4,4,4,4]
2860 ; AVX512BW-FCP-NEXT:    vpermd %ymm1, %ymm7, %ymm7
2861 ; AVX512BW-FCP-NEXT:    movl $138547332, %eax # imm = 0x8421084
2862 ; AVX512BW-FCP-NEXT:    kmovd %eax, %k1
2863 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm7 {%k1} = ymm3[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]
2864 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm8 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm3[21],zero,zero,ymm3[20],zero,ymm3[22],zero,ymm3[24],zero,zero,ymm3[23],zero,ymm3[25],zero
2865 ; AVX512BW-FCP-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
2866 ; AVX512BW-FCP-NEXT:    vpor %ymm8, %ymm9, %ymm8
2867 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2868 ; AVX512BW-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
2869 ; AVX512BW-FCP-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
2870 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k1
2871 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2872 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [3,3,3,3,0,4,4,4,12,14,13,13,13,13,12,14]
2873 ; AVX512BW-FCP-NEXT:    vpermd %zmm5, %zmm6, %zmm6
2874 ; AVX512BW-FCP-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
2875 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k1
2876 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2877 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm3[26],zero,ymm3[28],zero,zero,zero,zero,ymm3[29],zero,ymm3[31],zero,zero,ymm3[30]
2878 ; AVX512BW-FCP-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
2879 ; AVX512BW-FCP-NEXT:    vpor %ymm3, %ymm1, %ymm1
2880 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
2881 ; AVX512BW-FCP-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
2882 ; AVX512BW-FCP-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
2883 ; AVX512BW-FCP-NEXT:    vpor %ymm2, %ymm0, %ymm0
2884 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2885 ; AVX512BW-FCP-NEXT:    movl $415641996, %eax # imm = 0x18C6318C
2886 ; AVX512BW-FCP-NEXT:    kmovd %eax, %k1
2887 ; AVX512BW-FCP-NEXT:    vmovdqu8 %ymm1, %ymm0 {%k1}
2888 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [6,6,6,6,7,7,7,7]
2889 ; AVX512BW-FCP-NEXT:    vpermd %ymm5, %ymm1, %ymm1
2890 ; AVX512BW-FCP-NEXT:    movl $-2078209982, %eax # imm = 0x84210842
2891 ; AVX512BW-FCP-NEXT:    kmovd %eax, %k1
2892 ; AVX512BW-FCP-NEXT:    vmovdqu8 %ymm1, %ymm0 {%k1}
2893 ; AVX512BW-FCP-NEXT:    vmovdqa %ymm0, 128(%r9)
2894 ; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm7, 64(%r9)
2895 ; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm4, (%r9)
2896 ; AVX512BW-FCP-NEXT:    vzeroupper
2897 ; AVX512BW-FCP-NEXT:    retq
2899 ; AVX512DQ-BW-LABEL: store_i8_stride5_vf32:
2900 ; AVX512DQ-BW:       # %bb.0:
2901 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdi), %ymm4
2902 ; AVX512DQ-BW-NEXT:    vmovdqa (%rsi), %ymm5
2903 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdx), %ymm1
2904 ; AVX512DQ-BW-NEXT:    vmovdqa (%rcx), %ymm2
2905 ; AVX512DQ-BW-NEXT:    vmovdqa (%r8), %ymm0
2906 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdi), %xmm3
2907 ; AVX512DQ-BW-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]
2908 ; AVX512DQ-BW-NEXT:    vmovdqa (%rsi), %xmm7
2909 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,xmm7[8,u],zero,xmm7[7],zero,xmm7[9,u,11,u],zero,xmm7[10],zero,xmm7[12,u],zero
2910 ; AVX512DQ-BW-NEXT:    vpor %xmm6, %xmm8, %xmm6
2911 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdx), %xmm8
2912 ; AVX512DQ-BW-NEXT:    vmovdqa (%rcx), %xmm9
2913 ; AVX512DQ-BW-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]
2914 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
2915 ; AVX512DQ-BW-NEXT:    vinserti32x4 $2, %xmm6, %zmm10, %zmm6
2916 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} zmm6 = zmm6[0,0,1,1,4,4,5,5]
2917 ; AVX512DQ-BW-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]
2918 ; AVX512DQ-BW-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
2919 ; AVX512DQ-BW-NEXT:    vpor %xmm9, %xmm8, %xmm8
2920 ; AVX512DQ-BW-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]
2921 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
2922 ; AVX512DQ-BW-NEXT:    vinserti32x4 $2, %xmm8, %zmm3, %zmm3
2923 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} zmm3 = zmm3[0,0,1,1,4,4,5,5]
2924 ; AVX512DQ-BW-NEXT:    movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C
2925 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k1
2926 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm6, %zmm3 {%k1}
2927 ; AVX512DQ-BW-NEXT:    vmovdqa (%r8), %xmm6
2928 ; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
2929 ; AVX512DQ-BW-NEXT:    vpermd %zmm6, %zmm7, %zmm6
2930 ; AVX512DQ-BW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
2931 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k1
2932 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm6, %zmm3 {%k1}
2933 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} ymm6 = 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
2934 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} ymm7 = 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
2935 ; AVX512DQ-BW-NEXT:    vpor %ymm6, %ymm7, %ymm6
2936 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} ymm7 = 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]
2937 ; AVX512DQ-BW-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
2938 ; AVX512DQ-BW-NEXT:    vpor %ymm7, %ymm8, %ymm7
2939 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
2940 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm7, %zmm6, %zmm6
2941 ; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} ymm7 = [3,3,3,0,4,4,4,4]
2942 ; AVX512DQ-BW-NEXT:    vpermd %ymm4, %ymm7, %ymm7
2943 ; AVX512DQ-BW-NEXT:    movl $138547332, %eax # imm = 0x8421084
2944 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k1
2945 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} ymm7 {%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]
2946 ; AVX512DQ-BW-NEXT:    vpshufb {{.*#+}} ymm8 = 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
2947 ; AVX512DQ-BW-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
2948 ; AVX512DQ-BW-NEXT:    vpor %ymm8, %ymm9, %ymm8
2949 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
2950 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
2951 ; AVX512DQ-BW-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
2952 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k1
2953 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2954 ; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} ymm6 = [3,3,3,3,0,4,4,4]
2955 ; AVX512DQ-BW-NEXT:    vpermd %ymm0, %ymm6, %ymm6
2956 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[0,2,1,1,4,6,5,5]
2957 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]
2958 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm8, %zmm6, %zmm6
2959 ; AVX512DQ-BW-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
2960 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k1
2961 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
2962 ; AVX512DQ-BW-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]
2963 ; AVX512DQ-BW-NEXT:    vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
2964 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]
2965 ; AVX512DQ-BW-NEXT:    movl $1251232404, %eax # imm = 0x4A944A94
2966 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k1
2967 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm4, %ymm5 {%k1}
2968 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm4 = ymm5[2,2,3,3]
2969 ; AVX512DQ-BW-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]
2970 ; AVX512DQ-BW-NEXT:    vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
2971 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[2,2,3,3,6,6,7,7]
2972 ; AVX512DQ-BW-NEXT:    movl $693250386, %eax # imm = 0x29522952
2973 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k1
2974 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm1, %ymm2 {%k1}
2975 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm1 = ymm2[2,2,3,3]
2976 ; AVX512DQ-BW-NEXT:    movl $415641996, %eax # imm = 0x18C6318C
2977 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k1
2978 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm4, %ymm1 {%k1}
2979 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,2,3,3,6,6,7,7]
2980 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
2981 ; AVX512DQ-BW-NEXT:    movl $-2078209982, %eax # imm = 0x84210842
2982 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k1
2983 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm0, %ymm1 {%k1}
2984 ; AVX512DQ-BW-NEXT:    vmovdqa %ymm1, 128(%r9)
2985 ; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm7, 64(%r9)
2986 ; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm3, (%r9)
2987 ; AVX512DQ-BW-NEXT:    vzeroupper
2988 ; AVX512DQ-BW-NEXT:    retq
2990 ; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf32:
2991 ; AVX512DQ-BW-FCP:       # %bb.0:
2992 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdi), %ymm1
2993 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rsi), %ymm3
2994 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdx), %ymm0
2995 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rcx), %ymm2
2996 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdi), %xmm4
2997 ; AVX512DQ-BW-FCP-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]
2998 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rsi), %xmm6
2999 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm7 = zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9,u,11,u],zero,xmm6[10],zero,xmm6[12,u],zero
3000 ; AVX512DQ-BW-FCP-NEXT:    vpor %xmm5, %xmm7, %xmm5
3001 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdx), %xmm7
3002 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rcx), %xmm8
3003 ; AVX512DQ-BW-FCP-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]
3004 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
3005 ; AVX512DQ-BW-FCP-NEXT:    vinserti32x4 $2, %xmm5, %zmm9, %zmm5
3006 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} zmm5 = zmm5[0,0,1,1,4,4,5,5]
3007 ; AVX512DQ-BW-FCP-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]
3008 ; AVX512DQ-BW-FCP-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
3009 ; AVX512DQ-BW-FCP-NEXT:    vpor %xmm7, %xmm8, %xmm7
3010 ; AVX512DQ-BW-FCP-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]
3011 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
3012 ; AVX512DQ-BW-FCP-NEXT:    vinserti32x4 $2, %xmm7, %zmm4, %zmm4
3013 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} zmm4 = zmm4[0,0,1,1,4,4,5,5]
3014 ; AVX512DQ-BW-FCP-NEXT:    movabsq $3570337559743967628, %rax # imm = 0x318C631818C6318C
3015 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k1
3016 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm5, %zmm4 {%k1}
3017 ; AVX512DQ-BW-FCP-NEXT:    vbroadcasti64x4 {{.*#+}} zmm5 = mem[0,1,2,3,0,1,2,3]
3018 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]
3019 ; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm5, %zmm6, %zmm6
3020 ; AVX512DQ-BW-FCP-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
3021 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k1
3022 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm4 {%k1}
3023 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm6 = 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
3024 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm7 = 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
3025 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm6, %ymm7, %ymm6
3026 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm7 = 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]
3027 ; AVX512DQ-BW-FCP-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
3028 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm7, %ymm8, %ymm7
3029 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
3030 ; AVX512DQ-BW-FCP-NEXT:    vinserti64x4 $1, %ymm7, %zmm6, %zmm6
3031 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm7 = [3,3,3,0,4,4,4,4]
3032 ; AVX512DQ-BW-FCP-NEXT:    vpermd %ymm1, %ymm7, %ymm7
3033 ; AVX512DQ-BW-FCP-NEXT:    movl $138547332, %eax # imm = 0x8421084
3034 ; AVX512DQ-BW-FCP-NEXT:    kmovd %eax, %k1
3035 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm7 {%k1} = ymm3[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]
3036 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm8 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19],zero,ymm3[21],zero,zero,ymm3[20],zero,ymm3[22],zero,ymm3[24],zero,zero,ymm3[23],zero,ymm3[25],zero
3037 ; AVX512DQ-BW-FCP-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
3038 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm8, %ymm9, %ymm8
3039 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
3040 ; AVX512DQ-BW-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm7, %zmm7
3041 ; AVX512DQ-BW-FCP-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
3042 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k1
3043 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
3044 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [3,3,3,3,0,4,4,4,12,14,13,13,13,13,12,14]
3045 ; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm5, %zmm6, %zmm6
3046 ; AVX512DQ-BW-FCP-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
3047 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k1
3048 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm7 {%k1}
3049 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm3[26],zero,ymm3[28],zero,zero,zero,zero,ymm3[29],zero,ymm3[31],zero,zero,ymm3[30]
3050 ; AVX512DQ-BW-FCP-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
3051 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm3, %ymm1, %ymm1
3052 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
3053 ; AVX512DQ-BW-FCP-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
3054 ; AVX512DQ-BW-FCP-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
3055 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm2, %ymm0, %ymm0
3056 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
3057 ; AVX512DQ-BW-FCP-NEXT:    movl $415641996, %eax # imm = 0x18C6318C
3058 ; AVX512DQ-BW-FCP-NEXT:    kmovd %eax, %k1
3059 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %ymm1, %ymm0 {%k1}
3060 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm1 = [6,6,6,6,7,7,7,7]
3061 ; AVX512DQ-BW-FCP-NEXT:    vpermd %ymm5, %ymm1, %ymm1
3062 ; AVX512DQ-BW-FCP-NEXT:    movl $-2078209982, %eax # imm = 0x84210842
3063 ; AVX512DQ-BW-FCP-NEXT:    kmovd %eax, %k1
3064 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %ymm1, %ymm0 {%k1}
3065 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa %ymm0, 128(%r9)
3066 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm7, 64(%r9)
3067 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm4, (%r9)
3068 ; AVX512DQ-BW-FCP-NEXT:    vzeroupper
3069 ; AVX512DQ-BW-FCP-NEXT:    retq
3070   %in.vec0 = load <32 x i8>, ptr %in.vecptr0, align 64
3071   %in.vec1 = load <32 x i8>, ptr %in.vecptr1, align 64
3072   %in.vec2 = load <32 x i8>, ptr %in.vecptr2, align 64
3073   %in.vec3 = load <32 x i8>, ptr %in.vecptr3, align 64
3074   %in.vec4 = load <32 x i8>, ptr %in.vecptr4, align 64
3075   %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>
3076   %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>
3077   %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>
3078   %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>
3079   %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>
3080   %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>
3081   store <160 x i8> %interleaved.vec, ptr %out.vec, align 64
3082   ret void
3085 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 {
3086 ; SSE-LABEL: store_i8_stride5_vf64:
3087 ; SSE:       # %bb.0:
3088 ; SSE-NEXT:    subq $504, %rsp # imm = 0x1F8
3089 ; SSE-NEXT:    movdqa (%rdi), %xmm7
3090 ; SSE-NEXT:    movdqa (%rsi), %xmm9
3091 ; SSE-NEXT:    movdqa 16(%rsi), %xmm14
3092 ; SSE-NEXT:    movdqa (%rdx), %xmm0
3093 ; SSE-NEXT:    movdqa %xmm0, (%rsp) # 16-byte Spill
3094 ; SSE-NEXT:    movdqa 16(%rdx), %xmm11
3095 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3096 ; SSE-NEXT:    movdqa (%rcx), %xmm10
3097 ; SSE-NEXT:    movdqa 16(%rcx), %xmm6
3098 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3099 ; SSE-NEXT:    movdqa (%r8), %xmm13
3100 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
3101 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
3102 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [255,0,255,255,255,255,0,255,255,255,255,0,255,255,255,255]
3103 ; SSE-NEXT:    pand %xmm12, %xmm0
3104 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm10[2,1,2,3]
3105 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3106 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]
3107 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
3108 ; SSE-NEXT:    movdqa %xmm12, %xmm4
3109 ; SSE-NEXT:    pandn %xmm1, %xmm4
3110 ; SSE-NEXT:    por %xmm0, %xmm4
3111 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
3112 ; SSE-NEXT:    pand %xmm8, %xmm4
3113 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm7[1,1,2,2]
3114 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [255,255,255,255,0,255,255,255,255,0,255,255,255,255,0,255]
3115 ; SSE-NEXT:    pand %xmm2, %xmm0
3116 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm9[0,1,2,1]
3117 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
3118 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
3119 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,0,3,4,5,6,7]
3120 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,1,0]
3121 ; SSE-NEXT:    movdqa %xmm2, %xmm5
3122 ; SSE-NEXT:    pandn %xmm1, %xmm5
3123 ; SSE-NEXT:    por %xmm0, %xmm5
3124 ; SSE-NEXT:    movdqa %xmm8, %xmm0
3125 ; SSE-NEXT:    pandn %xmm5, %xmm0
3126 ; SSE-NEXT:    por %xmm4, %xmm0
3127 ; SSE-NEXT:    movdqa {{.*#+}} xmm15 = [255,255,0,255,255,255,255,0,255,255,255,255,0,255,255,255]
3128 ; SSE-NEXT:    pand %xmm15, %xmm0
3129 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm13[1,1,2,2]
3130 ; SSE-NEXT:    movdqa %xmm15, %xmm3
3131 ; SSE-NEXT:    pandn %xmm1, %xmm3
3132 ; SSE-NEXT:    por %xmm0, %xmm3
3133 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3134 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm11[3,3,3,3,4,5,6,7]
3135 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
3136 ; SSE-NEXT:    pand %xmm12, %xmm0
3137 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm6[2,1,2,3]
3138 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3139 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,3,0,3]
3140 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
3141 ; SSE-NEXT:    movdqa %xmm12, %xmm5
3142 ; SSE-NEXT:    pandn %xmm1, %xmm5
3143 ; SSE-NEXT:    por %xmm0, %xmm5
3144 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm14[0,1,2,1]
3145 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
3146 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
3147 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
3148 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]
3149 ; SSE-NEXT:    movdqa %xmm2, %xmm1
3150 ; SSE-NEXT:    pandn %xmm0, %xmm1
3151 ; SSE-NEXT:    movdqa 16(%rdi), %xmm0
3152 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3153 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
3154 ; SSE-NEXT:    pand %xmm2, %xmm0
3155 ; SSE-NEXT:    por %xmm0, %xmm1
3156 ; SSE-NEXT:    movdqa %xmm8, %xmm0
3157 ; SSE-NEXT:    pandn %xmm1, %xmm0
3158 ; SSE-NEXT:    pand %xmm8, %xmm5
3159 ; SSE-NEXT:    por %xmm5, %xmm0
3160 ; SSE-NEXT:    movdqa 16(%r8), %xmm1
3161 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3162 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
3163 ; SSE-NEXT:    movdqa %xmm15, %xmm3
3164 ; SSE-NEXT:    pandn %xmm1, %xmm3
3165 ; SSE-NEXT:    pand %xmm15, %xmm0
3166 ; SSE-NEXT:    por %xmm0, %xmm3
3167 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3168 ; SSE-NEXT:    movdqa 32(%rcx), %xmm0
3169 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3170 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
3171 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3172 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,3,0,3]
3173 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
3174 ; SSE-NEXT:    movdqa %xmm12, %xmm1
3175 ; SSE-NEXT:    pandn %xmm0, %xmm1
3176 ; SSE-NEXT:    movdqa 32(%rdx), %xmm0
3177 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3178 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
3179 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
3180 ; SSE-NEXT:    pand %xmm12, %xmm0
3181 ; SSE-NEXT:    por %xmm0, %xmm1
3182 ; SSE-NEXT:    movdqa 32(%rsi), %xmm11
3183 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm11[0,1,2,1]
3184 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
3185 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
3186 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
3187 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]
3188 ; SSE-NEXT:    movdqa %xmm2, %xmm5
3189 ; SSE-NEXT:    pandn %xmm0, %xmm5
3190 ; SSE-NEXT:    movdqa 32(%rdi), %xmm0
3191 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3192 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
3193 ; SSE-NEXT:    pand %xmm2, %xmm0
3194 ; SSE-NEXT:    por %xmm0, %xmm5
3195 ; SSE-NEXT:    movdqa %xmm8, %xmm0
3196 ; SSE-NEXT:    pandn %xmm5, %xmm0
3197 ; SSE-NEXT:    pand %xmm8, %xmm1
3198 ; SSE-NEXT:    por %xmm1, %xmm0
3199 ; SSE-NEXT:    movdqa 32(%r8), %xmm1
3200 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3201 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
3202 ; SSE-NEXT:    movdqa %xmm15, %xmm3
3203 ; SSE-NEXT:    pandn %xmm1, %xmm3
3204 ; SSE-NEXT:    pand %xmm15, %xmm0
3205 ; SSE-NEXT:    por %xmm0, %xmm3
3206 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3207 ; SSE-NEXT:    movdqa 48(%rcx), %xmm0
3208 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3209 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
3210 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
3211 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,3,0,3]
3212 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
3213 ; SSE-NEXT:    movdqa %xmm12, %xmm1
3214 ; SSE-NEXT:    pandn %xmm0, %xmm1
3215 ; SSE-NEXT:    movdqa 48(%rdx), %xmm0
3216 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3217 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
3218 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
3219 ; SSE-NEXT:    pand %xmm12, %xmm0
3220 ; SSE-NEXT:    por %xmm0, %xmm1
3221 ; SSE-NEXT:    movdqa 48(%rsi), %xmm0
3222 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3223 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
3224 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
3225 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
3226 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,0,3,4,5,6,7]
3227 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,1,0]
3228 ; SSE-NEXT:    movdqa %xmm2, %xmm5
3229 ; SSE-NEXT:    pandn %xmm0, %xmm5
3230 ; SSE-NEXT:    movdqa 48(%rdi), %xmm0
3231 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3232 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
3233 ; SSE-NEXT:    pand %xmm2, %xmm0
3234 ; SSE-NEXT:    por %xmm0, %xmm5
3235 ; SSE-NEXT:    movdqa %xmm8, %xmm0
3236 ; SSE-NEXT:    pandn %xmm5, %xmm0
3237 ; SSE-NEXT:    pand %xmm8, %xmm1
3238 ; SSE-NEXT:    por %xmm1, %xmm0
3239 ; SSE-NEXT:    movdqa 48(%r8), %xmm1
3240 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3241 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
3242 ; SSE-NEXT:    movdqa %xmm15, %xmm5
3243 ; SSE-NEXT:    pandn %xmm1, %xmm5
3244 ; SSE-NEXT:    pand %xmm15, %xmm0
3245 ; SSE-NEXT:    por %xmm0, %xmm5
3246 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3247 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3248 ; 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]
3249 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3250 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
3251 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,0,4,5,6,7]
3252 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
3253 ; SSE-NEXT:    movdqa %xmm15, %xmm1
3254 ; SSE-NEXT:    pandn %xmm0, %xmm1
3255 ; SSE-NEXT:    movdqa (%rsp), %xmm3 # 16-byte Reload
3256 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm3[1,2,2,3,4,5,6,7]
3257 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
3258 ; SSE-NEXT:    pand %xmm15, %xmm0
3259 ; SSE-NEXT:    por %xmm0, %xmm1
3260 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,0,0,255,255,255,0,0,255,255,255,0,0,255,255,255]
3261 ; SSE-NEXT:    movdqa %xmm6, %xmm0
3262 ; SSE-NEXT:    pandn %xmm1, %xmm0
3263 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3264 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[1,1,1,1]
3265 ; SSE-NEXT:    movdqa %xmm2, %xmm5
3266 ; SSE-NEXT:    pandn %xmm1, %xmm5
3267 ; SSE-NEXT:    movdqa %xmm9, %xmm1
3268 ; 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]
3269 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3270 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]
3271 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,0,3,4,5,6,7]
3272 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,6]
3273 ; SSE-NEXT:    pand %xmm2, %xmm1
3274 ; SSE-NEXT:    por %xmm5, %xmm1
3275 ; SSE-NEXT:    pand %xmm6, %xmm1
3276 ; SSE-NEXT:    por %xmm0, %xmm1
3277 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,0,255,255,255,255,0,255,255,255,255,0,255,255]
3278 ; SSE-NEXT:    movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3279 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm13[0,0,1,1]
3280 ; SSE-NEXT:    movdqa %xmm4, %xmm0
3281 ; SSE-NEXT:    pandn %xmm5, %xmm0
3282 ; SSE-NEXT:    pand %xmm4, %xmm1
3283 ; SSE-NEXT:    por %xmm1, %xmm0
3284 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3285 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm9 = xmm9[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
3286 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3287 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm9[0,1,2,1]
3288 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]
3289 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,4,7]
3290 ; SSE-NEXT:    movdqa %xmm4, %xmm5
3291 ; SSE-NEXT:    pandn %xmm1, %xmm5
3292 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[2,2,3,3]
3293 ; SSE-NEXT:    pand %xmm4, %xmm1
3294 ; SSE-NEXT:    por %xmm1, %xmm5
3295 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,0,0,255,255,255,0,0,255,255,255,0,0,255,255]
3296 ; SSE-NEXT:    movdqa %xmm8, %xmm7
3297 ; SSE-NEXT:    pandn %xmm5, %xmm7
3298 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm3[0,1,2,3,5,6,6,7]
3299 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,2,2,2]
3300 ; SSE-NEXT:    movdqa %xmm2, %xmm9
3301 ; SSE-NEXT:    pandn %xmm5, %xmm9
3302 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm10 = xmm10[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
3303 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3304 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm10[0,1,2,1]
3305 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,1,2,3,4,5,6,7]
3306 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,7,6,4]
3307 ; SSE-NEXT:    pand %xmm2, %xmm5
3308 ; SSE-NEXT:    por %xmm9, %xmm5
3309 ; SSE-NEXT:    pand %xmm8, %xmm5
3310 ; SSE-NEXT:    por %xmm7, %xmm5
3311 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm13[2,2,2,2]
3312 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3313 ; SSE-NEXT:    pandn %xmm7, %xmm0
3314 ; SSE-NEXT:    pand %xmm12, %xmm5
3315 ; SSE-NEXT:    por %xmm5, %xmm0
3316 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3317 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
3318 ; SSE-NEXT:    movdqa %xmm13, %xmm0
3319 ; 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]
3320 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3321 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[2,1,2,3]
3322 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,0,4,5,6,7]
3323 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]
3324 ; SSE-NEXT:    movdqa %xmm15, %xmm7
3325 ; SSE-NEXT:    pandn %xmm5, %xmm7
3326 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
3327 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm10[1,2,2,3,4,5,6,7]
3328 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
3329 ; SSE-NEXT:    pand %xmm15, %xmm5
3330 ; SSE-NEXT:    por %xmm5, %xmm7
3331 ; SSE-NEXT:    movdqa %xmm6, %xmm5
3332 ; SSE-NEXT:    pandn %xmm7, %xmm5
3333 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3334 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[1,1,1,1]
3335 ; SSE-NEXT:    movdqa %xmm2, %xmm9
3336 ; SSE-NEXT:    pandn %xmm7, %xmm9
3337 ; SSE-NEXT:    movdqa %xmm14, %xmm1
3338 ; 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]
3339 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3340 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm1[2,1,2,3]
3341 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[3,1,0,3,4,5,6,7]
3342 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,6,6]
3343 ; SSE-NEXT:    pand %xmm2, %xmm7
3344 ; SSE-NEXT:    por %xmm9, %xmm7
3345 ; SSE-NEXT:    pand %xmm6, %xmm7
3346 ; SSE-NEXT:    por %xmm5, %xmm7
3347 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3348 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,0,1,1]
3349 ; SSE-NEXT:    movdqa %xmm4, %xmm3
3350 ; SSE-NEXT:    pandn %xmm5, %xmm3
3351 ; SSE-NEXT:    pand %xmm4, %xmm7
3352 ; SSE-NEXT:    por %xmm7, %xmm3
3353 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3354 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm14 = xmm14[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
3355 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3356 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm14[0,1,2,1]
3357 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
3358 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,5,4,7]
3359 ; SSE-NEXT:    movdqa %xmm4, %xmm7
3360 ; SSE-NEXT:    pandn %xmm5, %xmm7
3361 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[2,2,3,3]
3362 ; SSE-NEXT:    pand %xmm4, %xmm5
3363 ; SSE-NEXT:    por %xmm5, %xmm7
3364 ; SSE-NEXT:    movdqa %xmm8, %xmm5
3365 ; SSE-NEXT:    pandn %xmm7, %xmm5
3366 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm10[0,1,2,3,5,6,6,7]
3367 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[2,2,2,2]
3368 ; SSE-NEXT:    movdqa %xmm2, %xmm9
3369 ; SSE-NEXT:    pandn %xmm7, %xmm9
3370 ; SSE-NEXT:    movdqa %xmm13, %xmm0
3371 ; 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]
3372 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3373 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[0,1,2,1]
3374 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[1,1,2,3,4,5,6,7]
3375 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,4]
3376 ; SSE-NEXT:    pand %xmm2, %xmm7
3377 ; SSE-NEXT:    por %xmm9, %xmm7
3378 ; SSE-NEXT:    pand %xmm8, %xmm7
3379 ; SSE-NEXT:    por %xmm5, %xmm7
3380 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[2,2,2,2]
3381 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3382 ; SSE-NEXT:    pandn %xmm5, %xmm0
3383 ; SSE-NEXT:    pand %xmm12, %xmm7
3384 ; SSE-NEXT:    por %xmm7, %xmm0
3385 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3386 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3387 ; SSE-NEXT:    movdqa %xmm3, %xmm0
3388 ; 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]
3389 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3390 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[2,1,2,3]
3391 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,0,4,5,6,7]
3392 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]
3393 ; SSE-NEXT:    movdqa %xmm15, %xmm7
3394 ; SSE-NEXT:    pandn %xmm5, %xmm7
3395 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
3396 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm10[1,2,2,3,4,5,6,7]
3397 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
3398 ; SSE-NEXT:    pand %xmm15, %xmm5
3399 ; SSE-NEXT:    por %xmm5, %xmm7
3400 ; SSE-NEXT:    movdqa %xmm6, %xmm5
3401 ; SSE-NEXT:    pandn %xmm7, %xmm5
3402 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
3403 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm13[1,1,1,1]
3404 ; SSE-NEXT:    movdqa %xmm2, %xmm9
3405 ; SSE-NEXT:    pandn %xmm7, %xmm9
3406 ; SSE-NEXT:    movdqa %xmm11, %xmm14
3407 ; 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]
3408 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm14[2,1,2,3]
3409 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[3,1,0,3,4,5,6,7]
3410 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,6,6]
3411 ; SSE-NEXT:    pand %xmm2, %xmm7
3412 ; SSE-NEXT:    por %xmm9, %xmm7
3413 ; SSE-NEXT:    pand %xmm6, %xmm7
3414 ; SSE-NEXT:    por %xmm5, %xmm7
3415 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3416 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[0,0,1,1]
3417 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3418 ; SSE-NEXT:    pandn %xmm5, %xmm1
3419 ; SSE-NEXT:    pand %xmm4, %xmm7
3420 ; SSE-NEXT:    por %xmm7, %xmm1
3421 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3422 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
3423 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3424 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm11[0,1,2,1]
3425 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
3426 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,5,4,7]
3427 ; SSE-NEXT:    movdqa %xmm4, %xmm7
3428 ; SSE-NEXT:    pandn %xmm5, %xmm7
3429 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm13[2,2,3,3]
3430 ; SSE-NEXT:    pand %xmm4, %xmm5
3431 ; SSE-NEXT:    por %xmm5, %xmm7
3432 ; SSE-NEXT:    movdqa %xmm8, %xmm5
3433 ; SSE-NEXT:    pandn %xmm7, %xmm5
3434 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm10[0,1,2,3,5,6,6,7]
3435 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[2,2,2,2]
3436 ; SSE-NEXT:    movdqa %xmm2, %xmm9
3437 ; SSE-NEXT:    pandn %xmm7, %xmm9
3438 ; SSE-NEXT:    movdqa %xmm3, %xmm1
3439 ; 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]
3440 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3441 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm1[0,1,2,1]
3442 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[1,1,2,3,4,5,6,7]
3443 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,4]
3444 ; SSE-NEXT:    pand %xmm2, %xmm7
3445 ; SSE-NEXT:    por %xmm9, %xmm7
3446 ; SSE-NEXT:    pand %xmm8, %xmm7
3447 ; SSE-NEXT:    por %xmm5, %xmm7
3448 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[2,2,2,2]
3449 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3450 ; SSE-NEXT:    pandn %xmm5, %xmm0
3451 ; SSE-NEXT:    pand %xmm12, %xmm7
3452 ; SSE-NEXT:    por %xmm7, %xmm0
3453 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3454 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3455 ; SSE-NEXT:    movdqa %xmm0, %xmm1
3456 ; 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]
3457 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3458 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[2,1,2,3]
3459 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,0,4,5,6,7]
3460 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,5,5]
3461 ; SSE-NEXT:    movdqa %xmm15, %xmm7
3462 ; SSE-NEXT:    pandn %xmm5, %xmm7
3463 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
3464 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm10[1,2,2,3,4,5,6,7]
3465 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
3466 ; SSE-NEXT:    pand %xmm15, %xmm5
3467 ; SSE-NEXT:    por %xmm5, %xmm7
3468 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3469 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm11[1,1,1,1]
3470 ; SSE-NEXT:    movdqa %xmm2, %xmm9
3471 ; SSE-NEXT:    pandn %xmm5, %xmm9
3472 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3473 ; SSE-NEXT:    movdqa %xmm3, %xmm1
3474 ; 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]
3475 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3476 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[2,1,2,3]
3477 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[3,1,0,3,4,5,6,7]
3478 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,6,6]
3479 ; SSE-NEXT:    pand %xmm2, %xmm5
3480 ; SSE-NEXT:    por %xmm9, %xmm5
3481 ; SSE-NEXT:    pand %xmm6, %xmm5
3482 ; SSE-NEXT:    pandn %xmm7, %xmm6
3483 ; SSE-NEXT:    por %xmm5, %xmm6
3484 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
3485 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[0,0,1,1]
3486 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3487 ; SSE-NEXT:    pandn %xmm5, %xmm1
3488 ; SSE-NEXT:    pand %xmm4, %xmm6
3489 ; SSE-NEXT:    por %xmm6, %xmm1
3490 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3491 ; SSE-NEXT:    movdqa %xmm3, %xmm1
3492 ; 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]
3493 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3494 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[0,1,2,1]
3495 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
3496 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,5,4,7]
3497 ; SSE-NEXT:    movdqa %xmm4, %xmm6
3498 ; SSE-NEXT:    pandn %xmm5, %xmm6
3499 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm11[2,2,3,3]
3500 ; SSE-NEXT:    pand %xmm4, %xmm5
3501 ; SSE-NEXT:    por %xmm5, %xmm6
3502 ; SSE-NEXT:    movdqa %xmm8, %xmm5
3503 ; SSE-NEXT:    pandn %xmm6, %xmm5
3504 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm10[0,1,2,3,5,6,6,7]
3505 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,2,2,2]
3506 ; SSE-NEXT:    movdqa %xmm2, %xmm7
3507 ; SSE-NEXT:    pandn %xmm6, %xmm7
3508 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
3509 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3510 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[0,1,2,1]
3511 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[1,1,2,3,4,5,6,7]
3512 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,7,6,4]
3513 ; SSE-NEXT:    pand %xmm2, %xmm6
3514 ; SSE-NEXT:    por %xmm7, %xmm6
3515 ; SSE-NEXT:    pand %xmm8, %xmm6
3516 ; SSE-NEXT:    por %xmm5, %xmm6
3517 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[2,2,2,2]
3518 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3519 ; SSE-NEXT:    pandn %xmm5, %xmm0
3520 ; SSE-NEXT:    pand %xmm12, %xmm6
3521 ; SSE-NEXT:    por %xmm6, %xmm0
3522 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3523 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
3524 ; SSE-NEXT:    # xmm5 = mem[1,0,2,3,4,5,6,7]
3525 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]
3526 ; SSE-NEXT:    movdqa %xmm4, %xmm6
3527 ; SSE-NEXT:    pandn %xmm5, %xmm6
3528 ; SSE-NEXT:    movdqa (%rsp), %xmm3 # 16-byte Reload
3529 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm3[1,0,2,3,4,5,6,7]
3530 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
3531 ; SSE-NEXT:    pand %xmm4, %xmm5
3532 ; SSE-NEXT:    por %xmm5, %xmm6
3533 ; SSE-NEXT:    movdqa %xmm8, %xmm5
3534 ; SSE-NEXT:    pandn %xmm6, %xmm5
3535 ; SSE-NEXT:    pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
3536 ; SSE-NEXT:    # xmm6 = mem[0,1,2,2,4,5,6,7]
3537 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,0,1,3]
3538 ; SSE-NEXT:    movdqa %xmm12, %xmm7
3539 ; SSE-NEXT:    pandn %xmm6, %xmm7
3540 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
3541 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm9[0,0,0,0]
3542 ; SSE-NEXT:    pand %xmm12, %xmm6
3543 ; SSE-NEXT:    por %xmm6, %xmm7
3544 ; SSE-NEXT:    pand %xmm8, %xmm7
3545 ; SSE-NEXT:    por %xmm5, %xmm7
3546 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3547 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[0,0,0,0]
3548 ; SSE-NEXT:    movdqa %xmm2, %xmm1
3549 ; SSE-NEXT:    pandn %xmm5, %xmm1
3550 ; SSE-NEXT:    pand %xmm2, %xmm7
3551 ; SSE-NEXT:    por %xmm7, %xmm1
3552 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3553 ; SSE-NEXT:    pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
3554 ; SSE-NEXT:    # xmm5 = mem[0,1,2,3,5,7,6,7]
3555 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,2,3,2]
3556 ; SSE-NEXT:    movdqa %xmm2, %xmm6
3557 ; SSE-NEXT:    pandn %xmm5, %xmm6
3558 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm3[0,1,2,3,7,6,6,7]
3559 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,2,2,2]
3560 ; SSE-NEXT:    pand %xmm2, %xmm5
3561 ; SSE-NEXT:    por %xmm5, %xmm6
3562 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
3563 ; SSE-NEXT:    movdqa %xmm1, %xmm5
3564 ; SSE-NEXT:    pandn %xmm6, %xmm5
3565 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
3566 ; SSE-NEXT:    # xmm6 = mem[0,1,2,3,7,5,6,6]
3567 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,3,2,2]
3568 ; SSE-NEXT:    movdqa %xmm15, %xmm7
3569 ; SSE-NEXT:    pandn %xmm6, %xmm7
3570 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm9[3,3,3,3]
3571 ; SSE-NEXT:    pand %xmm15, %xmm6
3572 ; SSE-NEXT:    por %xmm6, %xmm7
3573 ; SSE-NEXT:    pand %xmm1, %xmm7
3574 ; SSE-NEXT:    por %xmm5, %xmm7
3575 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[3,3,3,3]
3576 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [0,255,255,255,255,0,255,255,255,255,0,255,255,255,255,0]
3577 ; SSE-NEXT:    movdqa %xmm9, %xmm13
3578 ; SSE-NEXT:    pandn %xmm5, %xmm13
3579 ; SSE-NEXT:    pand %xmm9, %xmm7
3580 ; SSE-NEXT:    por %xmm7, %xmm13
3581 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
3582 ; SSE-NEXT:    # xmm5 = mem[1,0,2,3,4,5,6,7]
3583 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,0,1]
3584 ; SSE-NEXT:    movdqa %xmm4, %xmm6
3585 ; SSE-NEXT:    pandn %xmm5, %xmm6
3586 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3587 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm11[1,0,2,3,4,5,6,7]
3588 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,0,0,0]
3589 ; SSE-NEXT:    pand %xmm4, %xmm5
3590 ; SSE-NEXT:    por %xmm5, %xmm6
3591 ; SSE-NEXT:    movdqa %xmm8, %xmm5
3592 ; SSE-NEXT:    pandn %xmm6, %xmm5
3593 ; SSE-NEXT:    pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
3594 ; SSE-NEXT:    # xmm6 = mem[0,1,2,2,4,5,6,7]
3595 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,0,1,3]
3596 ; SSE-NEXT:    movdqa %xmm12, %xmm3
3597 ; SSE-NEXT:    pandn %xmm6, %xmm3
3598 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3599 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm1[0,0,0,0]
3600 ; SSE-NEXT:    pand %xmm12, %xmm6
3601 ; SSE-NEXT:    por %xmm6, %xmm3
3602 ; SSE-NEXT:    pand %xmm8, %xmm3
3603 ; SSE-NEXT:    por %xmm5, %xmm3
3604 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3605 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[0,0,0,0]
3606 ; SSE-NEXT:    movdqa %xmm2, %xmm10
3607 ; SSE-NEXT:    pandn %xmm5, %xmm10
3608 ; SSE-NEXT:    pand %xmm2, %xmm3
3609 ; SSE-NEXT:    por %xmm3, %xmm10
3610 ; SSE-NEXT:    pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
3611 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,5,7,6,7]
3612 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]
3613 ; SSE-NEXT:    movdqa %xmm2, %xmm5
3614 ; SSE-NEXT:    pandn %xmm3, %xmm5
3615 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm11[0,1,2,3,7,6,6,7]
3616 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,2,2,2]
3617 ; SSE-NEXT:    pand %xmm2, %xmm3
3618 ; SSE-NEXT:    por %xmm3, %xmm5
3619 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
3620 ; SSE-NEXT:    movdqa %xmm7, %xmm3
3621 ; SSE-NEXT:    pandn %xmm5, %xmm3
3622 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
3623 ; SSE-NEXT:    # xmm5 = mem[0,1,2,3,7,5,6,6]
3624 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,3,2,2]
3625 ; SSE-NEXT:    movdqa %xmm15, %xmm6
3626 ; SSE-NEXT:    pandn %xmm5, %xmm6
3627 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm1[3,3,3,3]
3628 ; SSE-NEXT:    pand %xmm15, %xmm5
3629 ; SSE-NEXT:    por %xmm5, %xmm6
3630 ; SSE-NEXT:    pand %xmm7, %xmm6
3631 ; SSE-NEXT:    por %xmm3, %xmm6
3632 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[3,3,3,3]
3633 ; SSE-NEXT:    movdqa %xmm9, %xmm7
3634 ; SSE-NEXT:    pandn %xmm3, %xmm7
3635 ; SSE-NEXT:    pand %xmm9, %xmm6
3636 ; SSE-NEXT:    por %xmm6, %xmm7
3637 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
3638 ; SSE-NEXT:    # xmm3 = mem[1,0,2,3,4,5,6,7]
3639 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,0,1]
3640 ; SSE-NEXT:    movdqa %xmm4, %xmm6
3641 ; SSE-NEXT:    pandn %xmm3, %xmm6
3642 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3643 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm5[1,0,2,3,4,5,6,7]
3644 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]
3645 ; SSE-NEXT:    pand %xmm4, %xmm3
3646 ; SSE-NEXT:    por %xmm3, %xmm6
3647 ; SSE-NEXT:    movdqa %xmm8, %xmm3
3648 ; SSE-NEXT:    pandn %xmm6, %xmm3
3649 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm14[0,1,2,2,4,5,6,7]
3650 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,0,1,3]
3651 ; SSE-NEXT:    movdqa %xmm12, %xmm11
3652 ; SSE-NEXT:    pandn %xmm6, %xmm11
3653 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3654 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[0,0,0,0]
3655 ; SSE-NEXT:    pand %xmm12, %xmm6
3656 ; SSE-NEXT:    por %xmm6, %xmm11
3657 ; SSE-NEXT:    pand %xmm8, %xmm11
3658 ; SSE-NEXT:    por %xmm3, %xmm11
3659 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3660 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[0,0,0,0]
3661 ; SSE-NEXT:    movdqa %xmm2, %xmm14
3662 ; SSE-NEXT:    pandn %xmm3, %xmm14
3663 ; SSE-NEXT:    pand %xmm2, %xmm11
3664 ; SSE-NEXT:    por %xmm11, %xmm14
3665 ; SSE-NEXT:    pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
3666 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,5,7,6,7]
3667 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]
3668 ; SSE-NEXT:    movdqa %xmm2, %xmm6
3669 ; SSE-NEXT:    pandn %xmm3, %xmm6
3670 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm5[0,1,2,3,7,6,6,7]
3671 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,2,2,2]
3672 ; SSE-NEXT:    pand %xmm2, %xmm3
3673 ; SSE-NEXT:    por %xmm3, %xmm6
3674 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
3675 ; SSE-NEXT:    movdqa %xmm5, %xmm3
3676 ; SSE-NEXT:    pandn %xmm6, %xmm3
3677 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
3678 ; SSE-NEXT:    # xmm6 = mem[0,1,2,3,7,5,6,6]
3679 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,3,2,2]
3680 ; SSE-NEXT:    movdqa %xmm15, %xmm11
3681 ; SSE-NEXT:    pandn %xmm6, %xmm11
3682 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[3,3,3,3]
3683 ; SSE-NEXT:    pand %xmm15, %xmm6
3684 ; SSE-NEXT:    por %xmm6, %xmm11
3685 ; SSE-NEXT:    pand %xmm5, %xmm11
3686 ; SSE-NEXT:    por %xmm3, %xmm11
3687 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[3,3,3,3]
3688 ; SSE-NEXT:    movdqa %xmm9, %xmm6
3689 ; SSE-NEXT:    pandn %xmm3, %xmm6
3690 ; SSE-NEXT:    pand %xmm9, %xmm11
3691 ; SSE-NEXT:    por %xmm11, %xmm6
3692 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3693 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm1[1,0,2,3,4,5,6,7]
3694 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,0,0]
3695 ; SSE-NEXT:    pand %xmm4, %xmm3
3696 ; SSE-NEXT:    pshuflw $225, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
3697 ; SSE-NEXT:    # xmm11 = mem[1,0,2,3,4,5,6,7]
3698 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[0,1,0,1]
3699 ; SSE-NEXT:    pandn %xmm11, %xmm4
3700 ; SSE-NEXT:    por %xmm3, %xmm4
3701 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3702 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[0,0,0,0]
3703 ; SSE-NEXT:    pand %xmm12, %xmm3
3704 ; SSE-NEXT:    pshuflw $164, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
3705 ; SSE-NEXT:    # xmm11 = mem[0,1,2,2,4,5,6,7]
3706 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[0,0,1,3]
3707 ; SSE-NEXT:    pandn %xmm11, %xmm12
3708 ; SSE-NEXT:    por %xmm3, %xmm12
3709 ; SSE-NEXT:    pand %xmm8, %xmm12
3710 ; SSE-NEXT:    pandn %xmm4, %xmm8
3711 ; SSE-NEXT:    por %xmm12, %xmm8
3712 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3713 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[0,0,0,0]
3714 ; SSE-NEXT:    movdqa %xmm2, %xmm0
3715 ; SSE-NEXT:    pandn %xmm3, %xmm0
3716 ; SSE-NEXT:    pand %xmm2, %xmm8
3717 ; SSE-NEXT:    por %xmm8, %xmm0
3718 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,6,6,7]
3719 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,2,2,2]
3720 ; SSE-NEXT:    pand %xmm2, %xmm1
3721 ; SSE-NEXT:    pshufhw $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
3722 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,5,7,6,7]
3723 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,3,2]
3724 ; SSE-NEXT:    pandn %xmm3, %xmm2
3725 ; SSE-NEXT:    por %xmm1, %xmm2
3726 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm5[3,3,3,3]
3727 ; SSE-NEXT:    pand %xmm15, %xmm1
3728 ; SSE-NEXT:    pshufhw $167, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
3729 ; SSE-NEXT:    # xmm3 = mem[0,1,2,3,7,5,6,6]
3730 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,3,2,2]
3731 ; SSE-NEXT:    pandn %xmm3, %xmm15
3732 ; SSE-NEXT:    por %xmm1, %xmm15
3733 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,0,0,255,255,255,0,0,255,255,255,0,0,255]
3734 ; SSE-NEXT:    pand %xmm1, %xmm15
3735 ; SSE-NEXT:    pandn %xmm2, %xmm1
3736 ; SSE-NEXT:    por %xmm15, %xmm1
3737 ; SSE-NEXT:    pand %xmm9, %xmm1
3738 ; SSE-NEXT:    movdqa %xmm1, %xmm2
3739 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[3,3,3,3]
3740 ; SSE-NEXT:    pandn %xmm1, %xmm9
3741 ; SSE-NEXT:    por %xmm2, %xmm9
3742 ; SSE-NEXT:    movdqa %xmm9, 304(%r9)
3743 ; SSE-NEXT:    movdqa %xmm0, 240(%r9)
3744 ; SSE-NEXT:    movdqa %xmm6, 224(%r9)
3745 ; SSE-NEXT:    movdqa %xmm14, 160(%r9)
3746 ; SSE-NEXT:    movdqa %xmm7, 144(%r9)
3747 ; SSE-NEXT:    movdqa %xmm10, 80(%r9)
3748 ; SSE-NEXT:    movdqa %xmm13, 64(%r9)
3749 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3750 ; SSE-NEXT:    movaps %xmm0, (%r9)
3751 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3752 ; SSE-NEXT:    movaps %xmm0, 288(%r9)
3753 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3754 ; SSE-NEXT:    movaps %xmm0, 256(%r9)
3755 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3756 ; SSE-NEXT:    movaps %xmm0, 208(%r9)
3757 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3758 ; SSE-NEXT:    movaps %xmm0, 176(%r9)
3759 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3760 ; SSE-NEXT:    movaps %xmm0, 128(%r9)
3761 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3762 ; SSE-NEXT:    movaps %xmm0, 96(%r9)
3763 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3764 ; SSE-NEXT:    movaps %xmm0, 48(%r9)
3765 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3766 ; SSE-NEXT:    movaps %xmm0, 16(%r9)
3767 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3768 ; SSE-NEXT:    movaps %xmm0, 272(%r9)
3769 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3770 ; SSE-NEXT:    movaps %xmm0, 192(%r9)
3771 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3772 ; SSE-NEXT:    movaps %xmm0, 112(%r9)
3773 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3774 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
3775 ; SSE-NEXT:    addq $504, %rsp # imm = 0x1F8
3776 ; SSE-NEXT:    retq
3778 ; AVX-LABEL: store_i8_stride5_vf64:
3779 ; AVX:       # %bb.0:
3780 ; AVX-NEXT:    subq $104, %rsp
3781 ; AVX-NEXT:    vmovdqa 48(%rcx), %xmm0
3782 ; AVX-NEXT:    vmovddup {{.*#+}} xmm14 = [128,6,128,8,0,128,7,128,128,6,128,8,0,128,7,128]
3783 ; AVX-NEXT:    # xmm14 = mem[0,0]
3784 ; AVX-NEXT:    vpshufb %xmm14, %xmm0, %xmm2
3785 ; AVX-NEXT:    vmovdqa 48(%rdx), %xmm1
3786 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm1[6],zero,xmm1[u,u,u,7],zero,xmm1[u,u,u,8],zero,xmm1[u,u,u,9]
3787 ; AVX-NEXT:    vpor %xmm2, %xmm3, %xmm3
3788 ; AVX-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]
3789 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm9[u,6,7,u,u,u,8,9,u,u,u,10,11,u,u,u]
3790 ; AVX-NEXT:    vinsertf128 $1, %xmm3, %ymm4, %ymm3
3791 ; AVX-NEXT:    vmovaps {{.*#+}} ymm2 = [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]
3792 ; AVX-NEXT:    vandnps %ymm3, %ymm2, %ymm4
3793 ; AVX-NEXT:    vmovdqa 48(%rsi), %xmm3
3794 ; AVX-NEXT:    vmovddup {{.*#+}} xmm10 = [128,8,0,128,7,128,9,0,128,8,0,128,7,128,9,0]
3795 ; AVX-NEXT:    # xmm10 = mem[0,0]
3796 ; AVX-NEXT:    vpshufb %xmm10, %xmm3, %xmm6
3797 ; AVX-NEXT:    vmovdqa 48(%rdi), %xmm5
3798 ; AVX-NEXT:    vmovddup {{.*#+}} xmm12 = [8,128,0,7,128,9,128,0,8,128,0,7,128,9,128,0]
3799 ; AVX-NEXT:    # xmm12 = mem[0,0]
3800 ; AVX-NEXT:    vpshufb %xmm12, %xmm5, %xmm7
3801 ; AVX-NEXT:    vpor %xmm6, %xmm7, %xmm6
3802 ; AVX-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]
3803 ; AVX-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[6,u,u,u,9,8,u,u,u,11,10,u,u,u,13,12]
3804 ; AVX-NEXT:    vinsertf128 $1, %xmm6, %ymm7, %ymm6
3805 ; AVX-NEXT:    vandps %ymm2, %ymm6, %ymm6
3806 ; AVX-NEXT:    vorps %ymm4, %ymm6, %ymm4
3807 ; AVX-NEXT:    vextractf128 $1, %ymm4, %xmm6
3808 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[0,1],zero,xmm6[3,4,5,6],zero,xmm6[8,9,10,11],zero,xmm6[13,14,15]
3809 ; AVX-NEXT:    vmovdqa 48(%r8), %xmm7
3810 ; AVX-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm7[6],zero,zero,zero,zero,xmm7[7],zero,zero,zero,zero,xmm7[8],zero,zero,zero
3811 ; AVX-NEXT:    vpor %xmm6, %xmm8, %xmm6
3812 ; AVX-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3813 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,2],zero,xmm4[4,5,6,7],zero,xmm4[9,10,11,12],zero,xmm4[14,15]
3814 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm7[3],zero,zero,zero,zero,xmm7[4],zero,zero,zero,zero,xmm7[5],zero,zero
3815 ; AVX-NEXT:    vpor %xmm6, %xmm4, %xmm4
3816 ; AVX-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3817 ; AVX-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]
3818 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm4[u,10,11,u,u,u,12,13,u,u,u,14,15,u,u,u]
3819 ; AVX-NEXT:    vmovddup {{.*#+}} xmm8 = [7,0,4,5,8,9,0,6,7,0,4,5,8,9,0,6]
3820 ; AVX-NEXT:    # xmm8 = mem[0,0]
3821 ; AVX-NEXT:    vpshufb %xmm8, %xmm4, %xmm4
3822 ; AVX-NEXT:    vinsertf128 $1, %xmm6, %ymm4, %ymm4
3823 ; AVX-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]
3824 ; AVX-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]
3825 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm6[u,u,u,10,11,u,u,u,12,13,u,u,u,14,15,u]
3826 ; AVX-NEXT:    vmovddup {{.*#+}} xmm15 = [2,7,6,0,5,4,9,8,2,7,6,0,5,4,9,8]
3827 ; AVX-NEXT:    # xmm15 = mem[0,0]
3828 ; AVX-NEXT:    vpshufb %xmm15, %xmm0, %xmm0
3829 ; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
3830 ; AVX-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]
3831 ; AVX-NEXT:    vandnps %ymm4, %ymm11, %ymm1
3832 ; AVX-NEXT:    vandps %ymm0, %ymm11, %ymm0
3833 ; AVX-NEXT:    vorps %ymm1, %ymm0, %ymm0
3834 ; AVX-NEXT:    vextractf128 $1, %ymm0, %xmm1
3835 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = zero,xmm1[1,2,3,4],zero,xmm1[6,7,8,9],zero,xmm1[11,12,13,14],zero
3836 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm7[12],zero,zero,zero,zero,xmm7[13],zero,zero,zero,zero,xmm7[14],zero,zero,zero,zero,xmm7[15]
3837 ; AVX-NEXT:    vpor %xmm4, %xmm1, %xmm1
3838 ; AVX-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3839 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm13 = [0,128,2,3,4,5,128,7,8,9,10,128,12,13,14,15]
3840 ; AVX-NEXT:    vpshufb %xmm13, %xmm0, %xmm0
3841 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm2 = [128,9,128,128,128,128,10,128,128,128,128,11,128,128,128,128]
3842 ; AVX-NEXT:    vpshufb %xmm2, %xmm7, %xmm1
3843 ; AVX-NEXT:    vpor %xmm1, %xmm0, %xmm0
3844 ; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3845 ; AVX-NEXT:    vmovdqa 32(%rsi), %xmm0
3846 ; AVX-NEXT:    vmovdqa 32(%rdi), %xmm4
3847 ; AVX-NEXT:    vpshufb %xmm10, %xmm0, %xmm1
3848 ; AVX-NEXT:    vpshufb %xmm12, %xmm4, %xmm6
3849 ; AVX-NEXT:    vpor %xmm1, %xmm6, %xmm1
3850 ; AVX-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]
3851 ; AVX-NEXT:    vpshufb %xmm8, %xmm12, %xmm6
3852 ; AVX-NEXT:    vinsertf128 $1, %xmm6, %ymm1, %ymm6
3853 ; AVX-NEXT:    vmovdqa 32(%rcx), %xmm1
3854 ; AVX-NEXT:    vmovdqa 32(%rdx), %xmm8
3855 ; AVX-NEXT:    vpshufb %xmm14, %xmm1, %xmm10
3856 ; AVX-NEXT:    vpshufb {{.*#+}} xmm14 = xmm8[6],zero,xmm8[u,u,u,7],zero,xmm8[u,u,u,8],zero,xmm8[u,u,u,9]
3857 ; AVX-NEXT:    vpor %xmm10, %xmm14, %xmm10
3858 ; AVX-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]
3859 ; AVX-NEXT:    vpshufb %xmm15, %xmm14, %xmm14
3860 ; AVX-NEXT:    vinsertf128 $1, %xmm14, %ymm10, %ymm14
3861 ; AVX-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]
3862 ; AVX-NEXT:    vandnps %ymm6, %ymm10, %ymm6
3863 ; AVX-NEXT:    vandps %ymm10, %ymm14, %ymm14
3864 ; AVX-NEXT:    vorps %ymm6, %ymm14, %ymm14
3865 ; AVX-NEXT:    vextractf128 $1, %ymm14, %xmm6
3866 ; AVX-NEXT:    vpshufb %xmm13, %xmm6, %xmm15
3867 ; AVX-NEXT:    vmovdqa 32(%r8), %xmm6
3868 ; AVX-NEXT:    vpshufb %xmm2, %xmm6, %xmm13
3869 ; AVX-NEXT:    vpor %xmm13, %xmm15, %xmm2
3870 ; AVX-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3871 ; AVX-NEXT:    vpshufb {{.*#+}} xmm13 = xmm14[0,1],zero,xmm14[3,4,5,6],zero,xmm14[8,9,10,11],zero,xmm14[13,14,15]
3872 ; AVX-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,xmm6[6],zero,zero,zero,zero,xmm6[7],zero,zero,zero,zero,xmm6[8],zero,zero,zero
3873 ; AVX-NEXT:    vpor %xmm14, %xmm13, %xmm2
3874 ; AVX-NEXT:    vmovdqa %xmm2, (%rsp) # 16-byte Spill
3875 ; AVX-NEXT:    vmovddup {{.*#+}} xmm14 = [3,0,0,1,4,5,0,2,3,0,0,1,4,5,0,2]
3876 ; AVX-NEXT:    # xmm14 = mem[0,0]
3877 ; AVX-NEXT:    vpshufb %xmm14, %xmm9, %xmm2
3878 ; AVX-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]
3879 ; AVX-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,10,11,u,u,u,12,13,u,u,u,14,15,u]
3880 ; AVX-NEXT:    vinsertf128 $1, %xmm2, %ymm13, %ymm2
3881 ; AVX-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]
3882 ; AVX-NEXT:    vmovddup {{.*#+}} xmm13 = [0,1,4,5,0,2,3,6,0,1,4,5,0,2,3,6]
3883 ; AVX-NEXT:    # xmm13 = mem[0,0]
3884 ; AVX-NEXT:    vpshufb %xmm13, %xmm3, %xmm3
3885 ; AVX-NEXT:    vmovddup {{.*#+}} xmm15 = [0,10,11,14,15,0,12,13,0,10,11,14,15,0,12,13]
3886 ; AVX-NEXT:    # xmm15 = mem[0,0]
3887 ; AVX-NEXT:    vpshufb %xmm15, %xmm12, %xmm5
3888 ; AVX-NEXT:    vinsertf128 $1, %xmm3, %ymm5, %ymm3
3889 ; AVX-NEXT:    vandnps %ymm2, %ymm10, %ymm2
3890 ; AVX-NEXT:    vandps %ymm3, %ymm10, %ymm3
3891 ; AVX-NEXT:    vorps %ymm2, %ymm3, %ymm2
3892 ; AVX-NEXT:    vextractf128 $1, %ymm2, %xmm3
3893 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm12 = [0,1,2,3,128,5,6,7,8,128,10,11,12,13,128,15]
3894 ; AVX-NEXT:    vpshufb %xmm12, %xmm3, %xmm3
3895 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm10 = [128,128,128,128,0,128,128,128,128,1,128,128,128,128,2,128]
3896 ; AVX-NEXT:    vpshufb %xmm10, %xmm7, %xmm5
3897 ; AVX-NEXT:    vmovdqa %xmm10, %xmm7
3898 ; AVX-NEXT:    vpor %xmm5, %xmm3, %xmm3
3899 ; AVX-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3900 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm5 = [128,1,2,3,4,128,6,7,8,9,128,11,12,13,14,128]
3901 ; AVX-NEXT:    vpshufb %xmm5, %xmm2, %xmm2
3902 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm10 = [12,128,128,128,128,13,128,128,128,128,14,128,128,128,128,15]
3903 ; AVX-NEXT:    vpshufb %xmm10, %xmm6, %xmm3
3904 ; AVX-NEXT:    vpor %xmm3, %xmm2, %xmm2
3905 ; AVX-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3906 ; AVX-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]
3907 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm1[u,6,7,u,u,u,8,9,u,u,u,10,11,u,u,u]
3908 ; AVX-NEXT:    vpshufb %xmm14, %xmm1, %xmm1
3909 ; AVX-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
3910 ; AVX-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]
3911 ; AVX-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]
3912 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[6,u,u,u,9,8,u,u,u,11,10,u,u,u,13,12]
3913 ; AVX-NEXT:    vpshufb %xmm13, %xmm0, %xmm0
3914 ; AVX-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0
3915 ; AVX-NEXT:    vandnps %ymm1, %ymm11, %ymm1
3916 ; AVX-NEXT:    vandps %ymm0, %ymm11, %ymm0
3917 ; AVX-NEXT:    vorps %ymm1, %ymm0, %ymm0
3918 ; AVX-NEXT:    vextractf128 $1, %ymm0, %xmm1
3919 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,1,2],zero,xmm1[4,5,6,7],zero,xmm1[9,10,11,12],zero,xmm1[14,15]
3920 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm6[3],zero,zero,zero,zero,xmm6[4],zero,zero,zero,zero,xmm6[5],zero,zero
3921 ; AVX-NEXT:    vpor %xmm2, %xmm1, %xmm1
3922 ; AVX-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3923 ; AVX-NEXT:    vpshufb %xmm12, %xmm0, %xmm0
3924 ; AVX-NEXT:    vpshufb %xmm7, %xmm6, %xmm1
3925 ; AVX-NEXT:    vpor %xmm1, %xmm0, %xmm0
3926 ; AVX-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3927 ; AVX-NEXT:    vmovdqa 16(%rsi), %xmm8
3928 ; AVX-NEXT:    vmovdqa 16(%rdi), %xmm6
3929 ; AVX-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]
3930 ; AVX-NEXT:    vpshufb %xmm15, %xmm0, %xmm1
3931 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]
3932 ; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
3933 ; AVX-NEXT:    vmovdqa 16(%rcx), %xmm1
3934 ; AVX-NEXT:    vmovdqa 16(%rdx), %xmm2
3935 ; AVX-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]
3936 ; AVX-NEXT:    vmovddup {{.*#+}} xmm12 = [12,13,0,10,11,14,15,0,12,13,0,10,11,14,15,0]
3937 ; AVX-NEXT:    # xmm12 = mem[0,0]
3938 ; AVX-NEXT:    vpshufb %xmm12, %xmm3, %xmm3
3939 ; AVX-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]
3940 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]
3941 ; AVX-NEXT:    vinsertf128 $1, %xmm3, %ymm4, %ymm3
3942 ; AVX-NEXT:    vandnps %ymm0, %ymm11, %ymm0
3943 ; AVX-NEXT:    vandps %ymm3, %ymm11, %ymm3
3944 ; AVX-NEXT:    vorps %ymm0, %ymm3, %ymm3
3945 ; AVX-NEXT:    vextractf128 $1, %ymm3, %xmm0
3946 ; AVX-NEXT:    vpshufb %xmm5, %xmm0, %xmm4
3947 ; AVX-NEXT:    vmovdqa %xmm5, %xmm11
3948 ; AVX-NEXT:    vmovdqa 16(%r8), %xmm0
3949 ; AVX-NEXT:    vpshufb %xmm10, %xmm0, %xmm7
3950 ; AVX-NEXT:    vpor %xmm7, %xmm4, %xmm4
3951 ; AVX-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3952 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0],zero,xmm3[2,3,4,5],zero,xmm3[7,8,9,10],zero,xmm3[12,13,14,15]
3953 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = zero,xmm0[9],zero,zero,zero,zero,xmm0[10],zero,zero,zero,zero,xmm0[11],zero,zero,zero,zero
3954 ; AVX-NEXT:    vpor %xmm4, %xmm3, %xmm3
3955 ; AVX-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3956 ; AVX-NEXT:    vmovdqa (%rcx), %xmm9
3957 ; AVX-NEXT:    vmovdqa (%rdx), %xmm7
3958 ; AVX-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]
3959 ; AVX-NEXT:    vpshufb %xmm12, %xmm3, %xmm3
3960 ; AVX-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]
3961 ; AVX-NEXT:    vpshufb %xmm14, %xmm4, %xmm5
3962 ; AVX-NEXT:    vinsertf128 $1, %xmm5, %ymm3, %ymm12
3963 ; AVX-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]
3964 ; AVX-NEXT:    vpshufb %xmm13, %xmm3, %xmm13
3965 ; AVX-NEXT:    vmovdqa (%rsi), %xmm5
3966 ; AVX-NEXT:    vmovdqa (%rdi), %xmm3
3967 ; AVX-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]
3968 ; AVX-NEXT:    vpshufb %xmm15, %xmm10, %xmm14
3969 ; AVX-NEXT:    vinsertf128 $1, %xmm13, %ymm14, %ymm13
3970 ; AVX-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]
3971 ; AVX-NEXT:    vandnps %ymm12, %ymm14, %ymm12
3972 ; AVX-NEXT:    vandps %ymm14, %ymm13, %ymm13
3973 ; AVX-NEXT:    vorps %ymm12, %ymm13, %ymm12
3974 ; AVX-NEXT:    vextractf128 $1, %ymm12, %xmm13
3975 ; AVX-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[0,1,2,3],zero,xmm13[5,6,7,8],zero,xmm13[10,11,12,13],zero,xmm13[15]
3976 ; AVX-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,zero,zero,xmm0[0],zero,zero,zero,zero,xmm0[1],zero,zero,zero,zero,xmm0[2],zero
3977 ; AVX-NEXT:    vpor %xmm14, %xmm13, %xmm13
3978 ; AVX-NEXT:    vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3979 ; AVX-NEXT:    vpshufb %xmm11, %xmm12, %xmm12
3980 ; AVX-NEXT:    vmovdqa (%r8), %xmm13
3981 ; AVX-NEXT:    vpshufb {{.*#+}} xmm15 = xmm13[12],zero,zero,zero,zero,xmm13[13],zero,zero,zero,zero,xmm13[14],zero,zero,zero,zero,xmm13[15]
3982 ; AVX-NEXT:    vpor %xmm15, %xmm12, %xmm11
3983 ; AVX-NEXT:    vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3984 ; AVX-NEXT:    vmovddup {{.*#+}} xmm11 = [128,6,128,8,0,128,7,128,128,6,128,8,0,128,7,128]
3985 ; AVX-NEXT:    # xmm11 = mem[0,0]
3986 ; AVX-NEXT:    vpshufb %xmm11, %xmm1, %xmm1
3987 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[6],zero,xmm2[u,u,u,7],zero,xmm2[u,u,u,8],zero,xmm2[u,u,u,9]
3988 ; AVX-NEXT:    vpor %xmm1, %xmm2, %xmm1
3989 ; AVX-NEXT:    vmovddup {{.*#+}} xmm11 = [0,6,7,10,11,0,8,9,0,6,7,10,11,0,8,9]
3990 ; AVX-NEXT:    # xmm11 = mem[0,0]
3991 ; AVX-NEXT:    vpshufb %xmm11, %xmm4, %xmm2
3992 ; AVX-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
3993 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm8[u,u,u],zero,xmm8[7,u,u,u],zero,xmm8[8,u,u,u],zero,xmm8[9,u]
3994 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,7],zero,xmm6[u,u,u,8],zero,xmm6[u,u,u,9],zero,xmm6[u]
3995 ; AVX-NEXT:    vpor %xmm2, %xmm4, %xmm2
3996 ; AVX-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]
3997 ; AVX-NEXT:    vmovddup {{.*#+}} xmm6 = [6,11,10,0,9,8,13,12,6,11,10,0,9,8,13,12]
3998 ; AVX-NEXT:    # xmm6 = mem[0,0]
3999 ; AVX-NEXT:    vpshufb %xmm6, %xmm4, %xmm4
4000 ; AVX-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm2
4001 ; AVX-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]
4002 ; AVX-NEXT:    vandnps %ymm1, %ymm4, %ymm1
4003 ; AVX-NEXT:    vandps %ymm4, %ymm2, %ymm2
4004 ; AVX-NEXT:    vorps %ymm1, %ymm2, %ymm2
4005 ; AVX-NEXT:    vextractf128 $1, %ymm2, %xmm1
4006 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm14 = [0,1,128,3,4,5,6,128,8,9,10,11,128,13,14,15]
4007 ; AVX-NEXT:    vpshufb %xmm14, %xmm1, %xmm1
4008 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm15 = [128,128,6,128,128,128,128,7,128,128,128,128,8,128,128,128]
4009 ; AVX-NEXT:    vpshufb %xmm15, %xmm0, %xmm4
4010 ; AVX-NEXT:    vpor %xmm4, %xmm1, %xmm12
4011 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm1 = [0,1,2,128,4,5,6,7,128,9,10,11,12,128,14,15]
4012 ; AVX-NEXT:    vpshufb %xmm1, %xmm2, %xmm2
4013 ; AVX-NEXT:    vmovdqa {{.*#+}} xmm8 = [128,128,128,3,128,128,128,128,4,128,128,128,128,5,128,128]
4014 ; AVX-NEXT:    vpshufb %xmm8, %xmm0, %xmm0
4015 ; AVX-NEXT:    vpor %xmm0, %xmm2, %xmm0
4016 ; AVX-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]
4017 ; AVX-NEXT:    vpshufb %xmm11, %xmm2, %xmm4
4018 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,0,1,u,u,u,2,3,u,u,u,4,5,u,u]
4019 ; AVX-NEXT:    vinsertf128 $1, %xmm4, %ymm2, %ymm2
4020 ; AVX-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]
4021 ; AVX-NEXT:    vpshufb %xmm6, %xmm4, %xmm4
4022 ; AVX-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]
4023 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[0,1,u,u,u,2,3,u,u,u,4,5,u,u,u,6]
4024 ; AVX-NEXT:    vinsertf128 $1, %xmm4, %ymm6, %ymm4
4025 ; AVX-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]
4026 ; AVX-NEXT:    vandnps %ymm2, %ymm6, %ymm2
4027 ; AVX-NEXT:    vandps %ymm6, %ymm4, %ymm4
4028 ; AVX-NEXT:    vorps %ymm2, %ymm4, %ymm4
4029 ; AVX-NEXT:    vextractf128 $1, %ymm4, %xmm2
4030 ; AVX-NEXT:    vpshufb %xmm1, %xmm2, %xmm2
4031 ; AVX-NEXT:    vpshufb %xmm8, %xmm13, %xmm6
4032 ; AVX-NEXT:    vpor %xmm6, %xmm2, %xmm2
4033 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[0,1,2,3],zero,xmm4[5,6,7,8],zero,xmm4[10,11,12,13],zero,xmm4[15]
4034 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,zero,xmm13[0],zero,zero,zero,zero,xmm13[1],zero,zero,zero,zero,xmm13[2],zero
4035 ; AVX-NEXT:    vpor %xmm6, %xmm4, %xmm4
4036 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u],zero,xmm5[7,u,u,u],zero,xmm5[8,u,u,u],zero,xmm5[9,u]
4037 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,7],zero,xmm3[u,u,u,8],zero,xmm3[u,u,u,9],zero,xmm3[u]
4038 ; AVX-NEXT:    vpor %xmm5, %xmm3, %xmm3
4039 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = xmm10[u,u,4,5,u,u,u,6,7,u,u,u,8,9,u,u]
4040 ; AVX-NEXT:    vinsertf128 $1, %xmm5, %ymm3, %ymm3
4041 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = zero,xmm9[6,u,u,u],zero,xmm9[7,u,u,u],zero,xmm9[8,u,u,u],zero
4042 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm7[6],zero,xmm7[u,u,u,7],zero,xmm7[u,u,u,8],zero,xmm7[u,u,u,9]
4043 ; AVX-NEXT:    vpor %xmm5, %xmm6, %xmm5
4044 ; AVX-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]
4045 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[2,u,u,u,5,4,u,u,u,7,6,u,u,u,9,8]
4046 ; AVX-NEXT:    vinsertf128 $1, %xmm6, %ymm5, %ymm5
4047 ; AVX-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]
4048 ; AVX-NEXT:    vandnps %ymm3, %ymm1, %ymm3
4049 ; AVX-NEXT:    vandps %ymm1, %ymm5, %ymm5
4050 ; AVX-NEXT:    vorps %ymm3, %ymm5, %ymm3
4051 ; AVX-NEXT:    vextractf128 $1, %ymm3, %xmm5
4052 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0],zero,xmm5[2,3,4,5],zero,xmm5[7,8,9,10],zero,xmm5[12,13,14,15]
4053 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = zero,xmm13[9],zero,zero,zero,zero,xmm13[10],zero,zero,zero,zero,xmm13[11],zero,zero,zero,zero
4054 ; AVX-NEXT:    vpor %xmm6, %xmm5, %xmm5
4055 ; AVX-NEXT:    vpshufb %xmm14, %xmm3, %xmm3
4056 ; AVX-NEXT:    vpshufb %xmm15, %xmm13, %xmm6
4057 ; AVX-NEXT:    vpor %xmm6, %xmm3, %xmm3
4058 ; AVX-NEXT:    vmovdqa %xmm3, 32(%r9)
4059 ; AVX-NEXT:    vmovdqa %xmm5, 48(%r9)
4060 ; AVX-NEXT:    vmovdqa %xmm4, (%r9)
4061 ; AVX-NEXT:    vmovdqa %xmm2, 16(%r9)
4062 ; AVX-NEXT:    vmovdqa %xmm0, 96(%r9)
4063 ; AVX-NEXT:    vmovdqa %xmm12, 112(%r9)
4064 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4065 ; AVX-NEXT:    vmovaps %xmm0, 64(%r9)
4066 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4067 ; AVX-NEXT:    vmovaps %xmm0, 80(%r9)
4068 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4069 ; AVX-NEXT:    vmovaps %xmm0, 128(%r9)
4070 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4071 ; AVX-NEXT:    vmovaps %xmm0, 144(%r9)
4072 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4073 ; AVX-NEXT:    vmovaps %xmm0, 160(%r9)
4074 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4075 ; AVX-NEXT:    vmovaps %xmm0, 176(%r9)
4076 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4077 ; AVX-NEXT:    vmovaps %xmm0, 224(%r9)
4078 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4079 ; AVX-NEXT:    vmovaps %xmm0, 240(%r9)
4080 ; AVX-NEXT:    vmovaps (%rsp), %xmm0 # 16-byte Reload
4081 ; AVX-NEXT:    vmovaps %xmm0, 192(%r9)
4082 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4083 ; AVX-NEXT:    vmovaps %xmm0, 208(%r9)
4084 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4085 ; AVX-NEXT:    vmovaps %xmm0, 288(%r9)
4086 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4087 ; AVX-NEXT:    vmovaps %xmm0, 304(%r9)
4088 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4089 ; AVX-NEXT:    vmovaps %xmm0, 256(%r9)
4090 ; AVX-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4091 ; AVX-NEXT:    vmovaps %xmm0, 272(%r9)
4092 ; AVX-NEXT:    addq $104, %rsp
4093 ; AVX-NEXT:    vzeroupper
4094 ; AVX-NEXT:    retq
4096 ; AVX2-LABEL: store_i8_stride5_vf64:
4097 ; AVX2:       # %bb.0:
4098 ; AVX2-NEXT:    subq $248, %rsp
4099 ; AVX2-NEXT:    vmovdqa 32(%rdi), %ymm13
4100 ; AVX2-NEXT:    vmovdqa (%rcx), %xmm1
4101 ; AVX2-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4102 ; AVX2-NEXT:    vmovdqa 32(%rcx), %xmm7
4103 ; AVX2-NEXT:    vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4104 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm0 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]
4105 ; AVX2-NEXT:    vpshufb %xmm0, %xmm1, %xmm1
4106 ; AVX2-NEXT:    vmovdqa (%rdx), %xmm3
4107 ; AVX2-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4108 ; AVX2-NEXT:    vmovdqa 32(%rdx), %xmm10
4109 ; AVX2-NEXT:    vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4110 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
4111 ; AVX2-NEXT:    vpshufb %xmm2, %xmm3, %xmm3
4112 ; AVX2-NEXT:    vpor %xmm1, %xmm3, %xmm1
4113 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
4114 ; AVX2-NEXT:    vmovdqa (%rdi), %xmm5
4115 ; AVX2-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4116 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm3 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]
4117 ; AVX2-NEXT:    vpshufb %xmm3, %xmm5, %xmm5
4118 ; AVX2-NEXT:    vmovdqa (%rsi), %xmm6
4119 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm8 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
4120 ; AVX2-NEXT:    vpshufb %xmm8, %xmm6, %xmm9
4121 ; AVX2-NEXT:    vpor %xmm5, %xmm9, %xmm5
4122 ; AVX2-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,0,1,1]
4123 ; AVX2-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]
4124 ; AVX2-NEXT:    vpblendvb %ymm9, %ymm1, %ymm5, %ymm1
4125 ; AVX2-NEXT:    vmovdqa (%r8), %xmm5
4126 ; AVX2-NEXT:    vmovdqa %xmm5, (%rsp) # 16-byte Spill
4127 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[1,1,2,2]
4128 ; AVX2-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,1,1]
4129 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm12 = [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]
4130 ; AVX2-NEXT:    vpblendvb %ymm12, %ymm1, %ymm5, %ymm1
4131 ; AVX2-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4132 ; AVX2-NEXT:    vmovdqa 32(%rdi), %xmm5
4133 ; AVX2-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4134 ; AVX2-NEXT:    vpshufb %xmm0, %xmm7, %xmm0
4135 ; AVX2-NEXT:    vpshufb %xmm2, %xmm10, %xmm1
4136 ; AVX2-NEXT:    vpor %xmm0, %xmm1, %xmm0
4137 ; AVX2-NEXT:    vmovdqa 32(%rsi), %xmm2
4138 ; AVX2-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4139 ; AVX2-NEXT:    vpshufb %xmm3, %xmm5, %xmm1
4140 ; AVX2-NEXT:    vpshufb %xmm8, %xmm2, %xmm2
4141 ; AVX2-NEXT:    vpor %xmm1, %xmm2, %xmm1
4142 ; AVX2-NEXT:    vmovdqa 32(%rsi), %ymm11
4143 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]
4144 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
4145 ; AVX2-NEXT:    vpblendvb %ymm9, %ymm0, %ymm1, %ymm0
4146 ; AVX2-NEXT:    vmovdqa 32(%r8), %xmm1
4147 ; AVX2-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4148 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
4149 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,1,1]
4150 ; AVX2-NEXT:    vpblendvb %ymm12, %ymm0, %ymm1, %ymm0
4151 ; AVX2-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4152 ; AVX2-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]
4153 ; AVX2-NEXT:    vpshufb %ymm15, %ymm13, %ymm1
4154 ; AVX2-NEXT:    vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4155 ; AVX2-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [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]
4156 ; AVX2-NEXT:    # ymm4 = mem[0,1,0,1]
4157 ; AVX2-NEXT:    vpshufb %ymm4, %ymm11, %ymm3
4158 ; AVX2-NEXT:    vpor %ymm1, %ymm3, %ymm1
4159 ; AVX2-NEXT:    vmovdqa 32(%rdx), %ymm12
4160 ; AVX2-NEXT:    vmovdqa 32(%rcx), %ymm14
4161 ; AVX2-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]
4162 ; AVX2-NEXT:    # ymm3 = mem[0,1,0,1]
4163 ; AVX2-NEXT:    vpshufb %ymm3, %ymm14, %ymm8
4164 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm5 = [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]
4165 ; AVX2-NEXT:    vpshufb %ymm5, %ymm12, %ymm10
4166 ; AVX2-NEXT:    vpor %ymm8, %ymm10, %ymm8
4167 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
4168 ; AVX2-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
4169 ; AVX2-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]
4170 ; AVX2-NEXT:    vpblendvb %ymm10, %ymm1, %ymm8, %ymm2
4171 ; AVX2-NEXT:    vmovdqa (%rdi), %ymm9
4172 ; AVX2-NEXT:    vpshufb %ymm15, %ymm9, %ymm1
4173 ; AVX2-NEXT:    vmovdqa (%rsi), %ymm15
4174 ; AVX2-NEXT:    vpshufb %ymm4, %ymm15, %ymm4
4175 ; AVX2-NEXT:    vpor %ymm1, %ymm4, %ymm4
4176 ; AVX2-NEXT:    vmovdqa (%rcx), %ymm7
4177 ; AVX2-NEXT:    vpshufb %ymm3, %ymm7, %ymm0
4178 ; AVX2-NEXT:    vmovdqa (%rdx), %ymm3
4179 ; AVX2-NEXT:    vpshufb %ymm5, %ymm3, %ymm5
4180 ; AVX2-NEXT:    vpor %ymm0, %ymm5, %ymm0
4181 ; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
4182 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
4183 ; AVX2-NEXT:    vpblendvb %ymm10, %ymm4, %ymm0, %ymm0
4184 ; AVX2-NEXT:    vmovdqa 32(%r8), %ymm10
4185 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm4 = ymm10[0,2,1,1,4,6,5,5]
4186 ; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,3,3,2]
4187 ; AVX2-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]
4188 ; AVX2-NEXT:    vpblendvb %ymm5, %ymm2, %ymm4, %ymm1
4189 ; AVX2-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4190 ; AVX2-NEXT:    vmovdqa (%r8), %ymm8
4191 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm4 = ymm8[0,2,1,1,4,6,5,5]
4192 ; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,3,3,2]
4193 ; AVX2-NEXT:    vpblendvb %ymm5, %ymm0, %ymm4, %ymm0
4194 ; AVX2-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4195 ; AVX2-NEXT:    vpmovsxbd {{.*#+}} ymm2 = [3,3,3,0,4,4,4,4]
4196 ; AVX2-NEXT:    vpermd %ymm13, %ymm2, %ymm4
4197 ; AVX2-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]
4198 ; AVX2-NEXT:    vpshufb %ymm5, %ymm11, %ymm0
4199 ; AVX2-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]
4200 ; AVX2-NEXT:    vpblendvb %ymm1, %ymm4, %ymm0, %ymm0
4201 ; AVX2-NEXT:    vpermd %ymm9, %ymm2, %ymm2
4202 ; AVX2-NEXT:    vpshufb %ymm5, %ymm15, %ymm4
4203 ; AVX2-NEXT:    vpblendvb %ymm1, %ymm2, %ymm4, %ymm1
4204 ; AVX2-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]
4205 ; AVX2-NEXT:    vpshufb %ymm2, %ymm14, %ymm4
4206 ; AVX2-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]
4207 ; AVX2-NEXT:    vpshufb %ymm5, %ymm12, %ymm13
4208 ; AVX2-NEXT:    vpor %ymm4, %ymm13, %ymm4
4209 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm13 = [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]
4210 ; AVX2-NEXT:    vpblendvb %ymm13, %ymm0, %ymm4, %ymm0
4211 ; AVX2-NEXT:    vpshufb %ymm2, %ymm7, %ymm2
4212 ; AVX2-NEXT:    vpshufb %ymm5, %ymm3, %ymm4
4213 ; AVX2-NEXT:    vpor %ymm2, %ymm4, %ymm2
4214 ; AVX2-NEXT:    vpblendvb %ymm13, %ymm1, %ymm2, %ymm1
4215 ; AVX2-NEXT:    vpmovsxbd {{.*#+}} ymm2 = [3,3,3,3,0,4,4,4]
4216 ; AVX2-NEXT:    vpermd %ymm10, %ymm2, %ymm4
4217 ; AVX2-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]
4218 ; AVX2-NEXT:    vpblendvb %ymm5, %ymm0, %ymm4, %ymm0
4219 ; AVX2-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4220 ; AVX2-NEXT:    vpermd %ymm8, %ymm2, %ymm0
4221 ; AVX2-NEXT:    vpblendvb %ymm5, %ymm1, %ymm0, %ymm0
4222 ; AVX2-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4223 ; AVX2-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4224 ; AVX2-NEXT:    vpunpcklbw {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3],xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]
4225 ; AVX2-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
4226 ; AVX2-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
4227 ; AVX2-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]
4228 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm13 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
4229 ; AVX2-NEXT:    vpshufb %xmm13, %xmm0, %xmm0
4230 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm0[0,0,1,1]
4231 ; AVX2-NEXT:    vmovdqa {{.*#+}} xmm6 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
4232 ; AVX2-NEXT:    vpshufb %xmm6, %xmm1, %xmm0
4233 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm0[0,0,1,1]
4234 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm0 = [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]
4235 ; AVX2-NEXT:    vpblendvb %ymm0, %ymm2, %ymm1, %ymm4
4236 ; AVX2-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
4237 ; AVX2-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
4238 ; AVX2-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]
4239 ; AVX2-NEXT:    vpshufb %xmm13, %xmm1, %xmm1
4240 ; AVX2-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
4241 ; AVX2-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload
4242 ; AVX2-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]
4243 ; AVX2-NEXT:    vpshufb %xmm6, %xmm2, %xmm2
4244 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
4245 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]
4246 ; AVX2-NEXT:    vpblendvb %ymm0, %ymm1, %ymm2, %ymm0
4247 ; AVX2-NEXT:    vpshufd $80, (%rsp), %xmm1 # 16-byte Folded Reload
4248 ; AVX2-NEXT:    # xmm1 = mem[0,0,1,1]
4249 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]
4250 ; AVX2-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]
4251 ; AVX2-NEXT:    vpblendvb %ymm2, %ymm4, %ymm1, %ymm4
4252 ; AVX2-NEXT:    vpshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
4253 ; AVX2-NEXT:    # xmm1 = mem[0,0,1,1]
4254 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,0,1]
4255 ; AVX2-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm6
4256 ; AVX2-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]
4257 ; AVX2-NEXT:    vpshufb %ymm0, %ymm14, %ymm1
4258 ; AVX2-NEXT:    vpshufhw {{.*#+}} ymm2 = ymm12[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
4259 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm2 = ymm2[2,2,3,3,6,6,7,7]
4260 ; AVX2-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [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]
4261 ; AVX2-NEXT:    # ymm5 = mem[0,1,0,1]
4262 ; AVX2-NEXT:    vpblendvb %ymm5, %ymm1, %ymm2, %ymm1
4263 ; AVX2-NEXT:    vpshufb %ymm0, %ymm7, %ymm0
4264 ; AVX2-NEXT:    vpshufhw {{.*#+}} ymm2 = ymm3[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
4265 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm2 = ymm2[2,2,3,3,6,6,7,7]
4266 ; AVX2-NEXT:    vpblendvb %ymm5, %ymm0, %ymm2, %ymm0
4267 ; AVX2-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]
4268 ; AVX2-NEXT:    vpshufb %ymm2, %ymm11, %ymm3
4269 ; AVX2-NEXT:    vpshufhw $230, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Folded Reload
4270 ; AVX2-NEXT:    # ymm5 = mem[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
4271 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm5 = ymm5[2,2,3,3,6,6,7,7]
4272 ; AVX2-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [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]
4273 ; AVX2-NEXT:    # ymm7 = mem[0,1,0,1]
4274 ; AVX2-NEXT:    vpblendvb %ymm7, %ymm3, %ymm5, %ymm3
4275 ; AVX2-NEXT:    vpshufb %ymm2, %ymm15, %ymm2
4276 ; AVX2-NEXT:    vpshufhw {{.*#+}} ymm5 = ymm9[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
4277 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm5 = ymm5[2,2,3,3,6,6,7,7]
4278 ; AVX2-NEXT:    vpblendvb %ymm7, %ymm2, %ymm5, %ymm2
4279 ; AVX2-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
4280 ; AVX2-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
4281 ; AVX2-NEXT:    vmovdqa {{.*#+}} ymm5 = [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]
4282 ; AVX2-NEXT:    vpblendvb %ymm5, %ymm1, %ymm3, %ymm1
4283 ; AVX2-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
4284 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
4285 ; AVX2-NEXT:    vpblendvb %ymm5, %ymm0, %ymm2, %ymm0
4286 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm2 = ymm10[2,2,3,3,6,6,7,7]
4287 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
4288 ; AVX2-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]
4289 ; AVX2-NEXT:    vpblendvb %ymm3, %ymm1, %ymm2, %ymm1
4290 ; AVX2-NEXT:    vpshufd {{.*#+}} ymm2 = ymm8[2,2,3,3,6,6,7,7]
4291 ; AVX2-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
4292 ; AVX2-NEXT:    vpblendvb %ymm3, %ymm0, %ymm2, %ymm0
4293 ; AVX2-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
4294 ; AVX2-NEXT:    vmovaps %ymm2, 64(%r9)
4295 ; AVX2-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
4296 ; AVX2-NEXT:    vmovaps %ymm2, 224(%r9)
4297 ; AVX2-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
4298 ; AVX2-NEXT:    vmovaps %ymm2, 96(%r9)
4299 ; AVX2-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
4300 ; AVX2-NEXT:    vmovaps %ymm2, 256(%r9)
4301 ; AVX2-NEXT:    vmovdqa %ymm0, 128(%r9)
4302 ; AVX2-NEXT:    vmovdqa %ymm6, 160(%r9)
4303 ; AVX2-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4304 ; AVX2-NEXT:    vmovaps %ymm0, 192(%r9)
4305 ; AVX2-NEXT:    vmovdqa %ymm1, 288(%r9)
4306 ; AVX2-NEXT:    vmovdqa %ymm4, (%r9)
4307 ; AVX2-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4308 ; AVX2-NEXT:    vmovaps %ymm0, 32(%r9)
4309 ; AVX2-NEXT:    addq $248, %rsp
4310 ; AVX2-NEXT:    vzeroupper
4311 ; AVX2-NEXT:    retq
4313 ; AVX2-FP-LABEL: store_i8_stride5_vf64:
4314 ; AVX2-FP:       # %bb.0:
4315 ; AVX2-FP-NEXT:    subq $200, %rsp
4316 ; AVX2-FP-NEXT:    vmovdqa 32(%rdx), %ymm12
4317 ; AVX2-FP-NEXT:    vmovdqa (%rcx), %xmm1
4318 ; AVX2-FP-NEXT:    vmovdqa %xmm1, (%rsp) # 16-byte Spill
4319 ; AVX2-FP-NEXT:    vmovdqa 32(%rcx), %xmm8
4320 ; AVX2-FP-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4321 ; AVX2-FP-NEXT:    vmovdqa {{.*#+}} xmm0 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]
4322 ; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm1, %xmm1
4323 ; AVX2-FP-NEXT:    vmovdqa (%rdx), %xmm3
4324 ; AVX2-FP-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4325 ; AVX2-FP-NEXT:    vmovdqa 32(%rdx), %xmm9
4326 ; AVX2-FP-NEXT:    vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4327 ; AVX2-FP-NEXT:    vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
4328 ; AVX2-FP-NEXT:    vpshufb %xmm2, %xmm3, %xmm3
4329 ; AVX2-FP-NEXT:    vpor %xmm1, %xmm3, %xmm1
4330 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
4331 ; AVX2-FP-NEXT:    vmovdqa (%rdi), %xmm4
4332 ; AVX2-FP-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4333 ; AVX2-FP-NEXT:    vmovdqa {{.*#+}} xmm3 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]
4334 ; AVX2-FP-NEXT:    vpshufb %xmm3, %xmm4, %xmm4
4335 ; AVX2-FP-NEXT:    vmovdqa (%rsi), %xmm6
4336 ; AVX2-FP-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4337 ; AVX2-FP-NEXT:    vmovdqa {{.*#+}} xmm5 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
4338 ; AVX2-FP-NEXT:    vpshufb %xmm5, %xmm6, %xmm6
4339 ; AVX2-FP-NEXT:    vpor %xmm4, %xmm6, %xmm4
4340 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
4341 ; AVX2-FP-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]
4342 ; AVX2-FP-NEXT:    vpblendvb %ymm6, %ymm1, %ymm4, %ymm1
4343 ; AVX2-FP-NEXT:    vmovdqa (%r8), %xmm4
4344 ; AVX2-FP-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4345 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,2]
4346 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]
4347 ; AVX2-FP-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]
4348 ; AVX2-FP-NEXT:    vpblendvb %ymm7, %ymm1, %ymm4, %ymm1
4349 ; AVX2-FP-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4350 ; AVX2-FP-NEXT:    vmovdqa 32(%rdi), %xmm4
4351 ; AVX2-FP-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4352 ; AVX2-FP-NEXT:    vpshufb %xmm0, %xmm8, %xmm0
4353 ; AVX2-FP-NEXT:    vpshufb %xmm2, %xmm9, %xmm1
4354 ; AVX2-FP-NEXT:    vpor %xmm0, %xmm1, %xmm0
4355 ; AVX2-FP-NEXT:    vmovdqa 32(%rsi), %xmm2
4356 ; AVX2-FP-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4357 ; AVX2-FP-NEXT:    vpshufb %xmm3, %xmm4, %xmm1
4358 ; AVX2-FP-NEXT:    vpshufb %xmm5, %xmm2, %xmm2
4359 ; AVX2-FP-NEXT:    vpor %xmm1, %xmm2, %xmm1
4360 ; AVX2-FP-NEXT:    vmovdqa 32(%rcx), %ymm14
4361 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]
4362 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
4363 ; AVX2-FP-NEXT:    vpblendvb %ymm6, %ymm0, %ymm1, %ymm0
4364 ; AVX2-FP-NEXT:    vmovdqa 32(%r8), %xmm1
4365 ; AVX2-FP-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4366 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,2]
4367 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,1,1]
4368 ; AVX2-FP-NEXT:    vpblendvb %ymm7, %ymm0, %ymm1, %ymm0
4369 ; AVX2-FP-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4370 ; AVX2-FP-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]
4371 ; AVX2-FP-NEXT:    vpshufb %ymm0, %ymm12, %ymm1
4372 ; AVX2-FP-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]
4373 ; AVX2-FP-NEXT:    # ymm8 = mem[0,1,0,1]
4374 ; AVX2-FP-NEXT:    vpshufb %ymm8, %ymm14, %ymm3
4375 ; AVX2-FP-NEXT:    vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4376 ; AVX2-FP-NEXT:    vpor %ymm1, %ymm3, %ymm1
4377 ; AVX2-FP-NEXT:    vmovdqa 32(%rdi), %ymm4
4378 ; AVX2-FP-NEXT:    vmovdqa 32(%rsi), %ymm11
4379 ; AVX2-FP-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]
4380 ; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm4, %ymm6
4381 ; AVX2-FP-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]
4382 ; AVX2-FP-NEXT:    # ymm9 = mem[0,1,0,1]
4383 ; AVX2-FP-NEXT:    vpshufb %ymm9, %ymm11, %ymm7
4384 ; AVX2-FP-NEXT:    vpor %ymm6, %ymm7, %ymm6
4385 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
4386 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
4387 ; AVX2-FP-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]
4388 ; AVX2-FP-NEXT:    vpblendvb %ymm10, %ymm1, %ymm6, %ymm3
4389 ; AVX2-FP-NEXT:    vmovdqa (%rdx), %ymm13
4390 ; AVX2-FP-NEXT:    vpshufb %ymm0, %ymm13, %ymm0
4391 ; AVX2-FP-NEXT:    vmovdqa (%rcx), %ymm7
4392 ; AVX2-FP-NEXT:    vpshufb %ymm8, %ymm7, %ymm1
4393 ; AVX2-FP-NEXT:    vpor %ymm0, %ymm1, %ymm8
4394 ; AVX2-FP-NEXT:    vmovdqa (%rdi), %ymm2
4395 ; AVX2-FP-NEXT:    vpshufb %ymm5, %ymm2, %ymm5
4396 ; AVX2-FP-NEXT:    vmovdqa (%rsi), %ymm1
4397 ; AVX2-FP-NEXT:    vpshufb %ymm9, %ymm1, %ymm9
4398 ; AVX2-FP-NEXT:    vpor %ymm5, %ymm9, %ymm5
4399 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
4400 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,3]
4401 ; AVX2-FP-NEXT:    vpblendvb %ymm10, %ymm8, %ymm5, %ymm8
4402 ; AVX2-FP-NEXT:    vmovdqa 32(%r8), %ymm5
4403 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} ymm9 = ymm5[2,2,3,3,6,6,7,7]
4404 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
4405 ; AVX2-FP-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]
4406 ; AVX2-FP-NEXT:    vpblendvb %ymm10, %ymm3, %ymm9, %ymm0
4407 ; AVX2-FP-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4408 ; AVX2-FP-NEXT:    vmovdqa (%r8), %ymm3
4409 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} ymm9 = ymm3[2,2,3,3,6,6,7,7]
4410 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
4411 ; AVX2-FP-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm0
4412 ; AVX2-FP-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4413 ; AVX2-FP-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]
4414 ; AVX2-FP-NEXT:    vpshufb %ymm8, %ymm4, %ymm9
4415 ; AVX2-FP-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]
4416 ; AVX2-FP-NEXT:    # ymm10 = mem[0,1,0,1]
4417 ; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm11, %ymm15
4418 ; AVX2-FP-NEXT:    vpor %ymm9, %ymm15, %ymm9
4419 ; AVX2-FP-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]
4420 ; AVX2-FP-NEXT:    # ymm15 = mem[0,1,0,1]
4421 ; AVX2-FP-NEXT:    vpshufb %ymm15, %ymm14, %ymm0
4422 ; AVX2-FP-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]
4423 ; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm12, %ymm14
4424 ; AVX2-FP-NEXT:    vpor %ymm0, %ymm14, %ymm0
4425 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,3]
4426 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
4427 ; AVX2-FP-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]
4428 ; AVX2-FP-NEXT:    vpblendvb %ymm14, %ymm9, %ymm0, %ymm0
4429 ; AVX2-FP-NEXT:    vpshufb %ymm8, %ymm2, %ymm8
4430 ; AVX2-FP-NEXT:    vpshufb %ymm10, %ymm1, %ymm9
4431 ; AVX2-FP-NEXT:    vpor %ymm8, %ymm9, %ymm8
4432 ; AVX2-FP-NEXT:    vpshufb %ymm15, %ymm7, %ymm9
4433 ; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm13, %ymm6
4434 ; AVX2-FP-NEXT:    vpor %ymm6, %ymm9, %ymm6
4435 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
4436 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
4437 ; AVX2-FP-NEXT:    vpblendvb %ymm14, %ymm8, %ymm6, %ymm6
4438 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} ymm8 = ymm5[0,2,1,1,4,6,5,5]
4439 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,3,2]
4440 ; AVX2-FP-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]
4441 ; AVX2-FP-NEXT:    vpblendvb %ymm9, %ymm0, %ymm8, %ymm10
4442 ; AVX2-FP-NEXT:    vpshufd {{.*#+}} ymm0 = ymm3[0,2,1,1,4,6,5,5]
4443 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,3,2]
4444 ; AVX2-FP-NEXT:    vpblendvb %ymm9, %ymm6, %ymm0, %ymm9
4445 ; AVX2-FP-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [3,3,3,0,4,4,4,4]
4446 ; AVX2-FP-NEXT:    vpermd %ymm4, %ymm0, %ymm4
4447 ; AVX2-FP-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]
4448 ; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm11, %ymm8
4449 ; AVX2-FP-NEXT:    vmovdqa {{.*#+}} ymm11 = [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]
4450 ; AVX2-FP-NEXT:    vpblendvb %ymm11, %ymm4, %ymm8, %ymm4
4451 ; AVX2-FP-NEXT:    vpermd %ymm2, %ymm0, %ymm0
4452 ; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm1, %ymm1
4453 ; AVX2-FP-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm0
4454 ; AVX2-FP-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]
4455 ; AVX2-FP-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
4456 ; AVX2-FP-NEXT:    vpshufb %ymm1, %ymm2, %ymm2
4457 ; AVX2-FP-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]
4458 ; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm12, %ymm8
4459 ; AVX2-FP-NEXT:    vpor %ymm2, %ymm8, %ymm2
4460 ; AVX2-FP-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]
4461 ; AVX2-FP-NEXT:    vpblendvb %ymm8, %ymm4, %ymm2, %ymm2
4462 ; AVX2-FP-NEXT:    vpshufb %ymm1, %ymm7, %ymm1
4463 ; AVX2-FP-NEXT:    vpshufb %ymm6, %ymm13, %ymm4
4464 ; AVX2-FP-NEXT:    vpor %ymm1, %ymm4, %ymm1
4465 ; AVX2-FP-NEXT:    vpblendvb %ymm8, %ymm0, %ymm1, %ymm1
4466 ; AVX2-FP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [3,3,3,3,0,4,4,4]
4467 ; AVX2-FP-NEXT:    vpermd %ymm5, %ymm4, %ymm0
4468 ; AVX2-FP-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]
4469 ; AVX2-FP-NEXT:    vpblendvb %ymm5, %ymm2, %ymm0, %ymm0
4470 ; AVX2-FP-NEXT:    vpermd %ymm3, %ymm4, %ymm2
4471 ; AVX2-FP-NEXT:    vpblendvb %ymm5, %ymm1, %ymm2, %ymm1
4472 ; AVX2-FP-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
4473 ; AVX2-FP-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload
4474 ; AVX2-FP-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]
4475 ; AVX2-FP-NEXT:    vmovdqa (%rsp), %xmm3 # 16-byte Reload
4476 ; AVX2-FP-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
4477 ; AVX2-FP-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]
4478 ; AVX2-FP-NEXT:    vmovdqa {{.*#+}} xmm4 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
4479 ; AVX2-FP-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
4480 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]
4481 ; AVX2-FP-NEXT:    vmovdqa {{.*#+}} xmm5 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
4482 ; AVX2-FP-NEXT:    vpshufb %xmm5, %xmm3, %xmm3
4483 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
4484 ; AVX2-FP-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]
4485 ; AVX2-FP-NEXT:    vpblendvb %ymm6, %ymm2, %ymm3, %ymm2
4486 ; AVX2-FP-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
4487 ; AVX2-FP-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
4488 ; AVX2-FP-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]
4489 ; AVX2-FP-NEXT:    vpshufb %xmm4, %xmm3, %xmm3
4490 ; AVX2-FP-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
4491 ; AVX2-FP-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
4492 ; AVX2-FP-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]
4493 ; AVX2-FP-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
4494 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
4495 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
4496 ; AVX2-FP-NEXT:    vpblendvb %ymm6, %ymm3, %ymm4, %ymm3
4497 ; AVX2-FP-NEXT:    vpshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
4498 ; AVX2-FP-NEXT:    # xmm4 = mem[0,0,1,1]
4499 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]
4500 ; AVX2-FP-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]
4501 ; AVX2-FP-NEXT:    vpblendvb %ymm5, %ymm2, %ymm4, %ymm2
4502 ; AVX2-FP-NEXT:    vpshufd $80, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
4503 ; AVX2-FP-NEXT:    # xmm4 = mem[0,0,1,1]
4504 ; AVX2-FP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,0,1]
4505 ; AVX2-FP-NEXT:    vpblendvb %ymm5, %ymm3, %ymm4, %ymm3
4506 ; AVX2-FP-NEXT:    vmovdqa %ymm1, 64(%r9)
4507 ; AVX2-FP-NEXT:    vmovdqa %ymm0, 224(%r9)
4508 ; AVX2-FP-NEXT:    vmovdqa %ymm9, 96(%r9)
4509 ; AVX2-FP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4510 ; AVX2-FP-NEXT:    vmovaps %ymm0, 128(%r9)
4511 ; AVX2-FP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4512 ; AVX2-FP-NEXT:    vmovaps %ymm0, 288(%r9)
4513 ; AVX2-FP-NEXT:    vmovdqa %ymm10, 256(%r9)
4514 ; AVX2-FP-NEXT:    vmovdqa %ymm3, 160(%r9)
4515 ; AVX2-FP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4516 ; AVX2-FP-NEXT:    vmovaps %ymm0, 192(%r9)
4517 ; AVX2-FP-NEXT:    vmovdqa %ymm2, (%r9)
4518 ; AVX2-FP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4519 ; AVX2-FP-NEXT:    vmovaps %ymm0, 32(%r9)
4520 ; AVX2-FP-NEXT:    addq $200, %rsp
4521 ; AVX2-FP-NEXT:    vzeroupper
4522 ; AVX2-FP-NEXT:    retq
4524 ; AVX2-FCP-LABEL: store_i8_stride5_vf64:
4525 ; AVX2-FCP:       # %bb.0:
4526 ; AVX2-FCP-NEXT:    subq $168, %rsp
4527 ; AVX2-FCP-NEXT:    vmovdqa 32(%rdx), %ymm14
4528 ; AVX2-FCP-NEXT:    vmovdqa 32(%rcx), %ymm15
4529 ; AVX2-FCP-NEXT:    vmovdqa (%r8), %ymm11
4530 ; AVX2-FCP-NEXT:    vmovdqa (%rcx), %xmm1
4531 ; AVX2-FCP-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4532 ; AVX2-FCP-NEXT:    vmovdqa 32(%rcx), %xmm6
4533 ; AVX2-FCP-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4534 ; AVX2-FCP-NEXT:    vmovdqa {{.*#+}} xmm0 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]
4535 ; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm1, %xmm1
4536 ; AVX2-FCP-NEXT:    vmovdqa (%rdx), %xmm3
4537 ; AVX2-FCP-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4538 ; AVX2-FCP-NEXT:    vmovdqa 32(%rdx), %xmm8
4539 ; AVX2-FCP-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4540 ; AVX2-FCP-NEXT:    vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
4541 ; AVX2-FCP-NEXT:    vpshufb %xmm2, %xmm3, %xmm3
4542 ; AVX2-FCP-NEXT:    vpor %xmm1, %xmm3, %xmm1
4543 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,0,1,1]
4544 ; AVX2-FCP-NEXT:    vmovdqa (%rdi), %xmm4
4545 ; AVX2-FCP-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4546 ; AVX2-FCP-NEXT:    vmovdqa {{.*#+}} xmm3 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]
4547 ; AVX2-FCP-NEXT:    vpshufb %xmm3, %xmm4, %xmm4
4548 ; AVX2-FCP-NEXT:    vmovdqa (%rsi), %xmm7
4549 ; AVX2-FCP-NEXT:    vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4550 ; AVX2-FCP-NEXT:    vmovdqa {{.*#+}} xmm5 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
4551 ; AVX2-FCP-NEXT:    vpshufb %xmm5, %xmm7, %xmm7
4552 ; AVX2-FCP-NEXT:    vpor %xmm4, %xmm7, %xmm4
4553 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
4554 ; AVX2-FCP-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]
4555 ; AVX2-FCP-NEXT:    vpblendvb %ymm7, %ymm1, %ymm4, %ymm1
4556 ; AVX2-FCP-NEXT:    vmovdqa 32(%rdi), %xmm4
4557 ; AVX2-FCP-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4558 ; AVX2-FCP-NEXT:    vpshufb %xmm0, %xmm6, %xmm0
4559 ; AVX2-FCP-NEXT:    vpshufb %xmm2, %xmm8, %xmm2
4560 ; AVX2-FCP-NEXT:    vpor %xmm0, %xmm2, %xmm0
4561 ; AVX2-FCP-NEXT:    vmovdqa 32(%rsi), %xmm6
4562 ; AVX2-FCP-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4563 ; AVX2-FCP-NEXT:    vpshufb %xmm3, %xmm4, %xmm2
4564 ; AVX2-FCP-NEXT:    vpshufb %xmm5, %xmm6, %xmm3
4565 ; AVX2-FCP-NEXT:    vpor %xmm2, %xmm3, %xmm2
4566 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm3 = [1,1,2,2,2,2,2,2]
4567 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,0,1,1]
4568 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]
4569 ; AVX2-FCP-NEXT:    vpblendvb %ymm7, %ymm0, %ymm2, %ymm0
4570 ; AVX2-FCP-NEXT:    vpermd %ymm11, %ymm3, %ymm2
4571 ; AVX2-FCP-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]
4572 ; AVX2-FCP-NEXT:    vpblendvb %ymm4, %ymm1, %ymm2, %ymm1
4573 ; AVX2-FCP-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4574 ; AVX2-FCP-NEXT:    vmovdqa 32(%r8), %ymm13
4575 ; AVX2-FCP-NEXT:    vpermd %ymm13, %ymm3, %ymm1
4576 ; AVX2-FCP-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm0
4577 ; AVX2-FCP-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4578 ; AVX2-FCP-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]
4579 ; AVX2-FCP-NEXT:    vpshufb %ymm0, %ymm14, %ymm1
4580 ; AVX2-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm10 = [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]
4581 ; AVX2-FCP-NEXT:    # ymm10 = mem[0,1,0,1]
4582 ; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm15, %ymm2
4583 ; AVX2-FCP-NEXT:    vmovdqu %ymm15, (%rsp) # 32-byte Spill
4584 ; AVX2-FCP-NEXT:    vpor %ymm1, %ymm2, %ymm1
4585 ; AVX2-FCP-NEXT:    vmovdqa 32(%rdi), %ymm2
4586 ; AVX2-FCP-NEXT:    vmovdqa 32(%rsi), %ymm3
4587 ; AVX2-FCP-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]
4588 ; AVX2-FCP-NEXT:    vpshufb %ymm9, %ymm2, %ymm4
4589 ; AVX2-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [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]
4590 ; AVX2-FCP-NEXT:    # ymm8 = mem[0,1,0,1]
4591 ; AVX2-FCP-NEXT:    vpshufb %ymm8, %ymm3, %ymm5
4592 ; AVX2-FCP-NEXT:    vpor %ymm4, %ymm5, %ymm4
4593 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
4594 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
4595 ; AVX2-FCP-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]
4596 ; AVX2-FCP-NEXT:    vpblendvb %ymm7, %ymm1, %ymm4, %ymm4
4597 ; AVX2-FCP-NEXT:    vmovdqa (%rdx), %ymm12
4598 ; AVX2-FCP-NEXT:    vpshufb %ymm0, %ymm12, %ymm0
4599 ; AVX2-FCP-NEXT:    vmovdqa (%rcx), %ymm5
4600 ; AVX2-FCP-NEXT:    vpshufb %ymm10, %ymm5, %ymm1
4601 ; AVX2-FCP-NEXT:    vpor %ymm0, %ymm1, %ymm10
4602 ; AVX2-FCP-NEXT:    vmovdqa (%rdi), %ymm1
4603 ; AVX2-FCP-NEXT:    vpshufb %ymm9, %ymm1, %ymm9
4604 ; AVX2-FCP-NEXT:    vmovdqa (%rsi), %ymm0
4605 ; AVX2-FCP-NEXT:    vpshufb %ymm8, %ymm0, %ymm8
4606 ; AVX2-FCP-NEXT:    vpor %ymm9, %ymm8, %ymm8
4607 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm9 = ymm10[2,2,3,3]
4608 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,2,3,3]
4609 ; AVX2-FCP-NEXT:    vpblendvb %ymm7, %ymm9, %ymm8, %ymm7
4610 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm8 = [6,6,6,6,7,7,7,7]
4611 ; AVX2-FCP-NEXT:    vpermd %ymm13, %ymm8, %ymm9
4612 ; AVX2-FCP-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]
4613 ; AVX2-FCP-NEXT:    vpblendvb %ymm10, %ymm4, %ymm9, %ymm4
4614 ; AVX2-FCP-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4615 ; AVX2-FCP-NEXT:    vpermd %ymm11, %ymm8, %ymm4
4616 ; AVX2-FCP-NEXT:    vpblendvb %ymm10, %ymm7, %ymm4, %ymm4
4617 ; AVX2-FCP-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4618 ; AVX2-FCP-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]
4619 ; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm2, %ymm7
4620 ; AVX2-FCP-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]
4621 ; AVX2-FCP-NEXT:    # ymm8 = mem[0,1,0,1]
4622 ; AVX2-FCP-NEXT:    vpshufb %ymm8, %ymm3, %ymm9
4623 ; AVX2-FCP-NEXT:    vpor %ymm7, %ymm9, %ymm7
4624 ; AVX2-FCP-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]
4625 ; AVX2-FCP-NEXT:    # ymm9 = mem[0,1,0,1]
4626 ; AVX2-FCP-NEXT:    vpshufb %ymm9, %ymm15, %ymm10
4627 ; AVX2-FCP-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]
4628 ; AVX2-FCP-NEXT:    vpshufb %ymm4, %ymm14, %ymm15
4629 ; AVX2-FCP-NEXT:    vpor %ymm10, %ymm15, %ymm10
4630 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
4631 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,2,3,3]
4632 ; AVX2-FCP-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]
4633 ; AVX2-FCP-NEXT:    vpblendvb %ymm15, %ymm7, %ymm10, %ymm7
4634 ; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm1, %ymm6
4635 ; AVX2-FCP-NEXT:    vpshufb %ymm8, %ymm0, %ymm8
4636 ; AVX2-FCP-NEXT:    vpor %ymm6, %ymm8, %ymm6
4637 ; AVX2-FCP-NEXT:    vpshufb %ymm9, %ymm5, %ymm8
4638 ; AVX2-FCP-NEXT:    vpshufb %ymm4, %ymm12, %ymm4
4639 ; AVX2-FCP-NEXT:    vpor %ymm4, %ymm8, %ymm4
4640 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,3]
4641 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,2,3,3]
4642 ; AVX2-FCP-NEXT:    vpblendvb %ymm15, %ymm6, %ymm4, %ymm4
4643 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm6 = [4,6,5,5,5,5,4,6]
4644 ; AVX2-FCP-NEXT:    vpermd %ymm13, %ymm6, %ymm8
4645 ; AVX2-FCP-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]
4646 ; AVX2-FCP-NEXT:    vpblendvb %ymm10, %ymm7, %ymm8, %ymm9
4647 ; AVX2-FCP-NEXT:    vpermd %ymm11, %ymm6, %ymm6
4648 ; AVX2-FCP-NEXT:    vpblendvb %ymm10, %ymm4, %ymm6, %ymm7
4649 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [3,3,3,0,4,4,4,4]
4650 ; AVX2-FCP-NEXT:    vpermd %ymm2, %ymm4, %ymm2
4651 ; AVX2-FCP-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]
4652 ; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm3, %ymm3
4653 ; AVX2-FCP-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]
4654 ; AVX2-FCP-NEXT:    vpblendvb %ymm8, %ymm2, %ymm3, %ymm2
4655 ; AVX2-FCP-NEXT:    vpermd %ymm1, %ymm4, %ymm1
4656 ; AVX2-FCP-NEXT:    vpshufb %ymm6, %ymm0, %ymm0
4657 ; AVX2-FCP-NEXT:    vpblendvb %ymm8, %ymm1, %ymm0, %ymm0
4658 ; AVX2-FCP-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]
4659 ; AVX2-FCP-NEXT:    vmovdqu (%rsp), %ymm3 # 32-byte Reload
4660 ; AVX2-FCP-NEXT:    vpshufb %ymm1, %ymm3, %ymm3
4661 ; AVX2-FCP-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]
4662 ; AVX2-FCP-NEXT:    vpshufb %ymm4, %ymm14, %ymm6
4663 ; AVX2-FCP-NEXT:    vpor %ymm3, %ymm6, %ymm3
4664 ; AVX2-FCP-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]
4665 ; AVX2-FCP-NEXT:    vpblendvb %ymm6, %ymm2, %ymm3, %ymm2
4666 ; AVX2-FCP-NEXT:    vpshufb %ymm1, %ymm5, %ymm1
4667 ; AVX2-FCP-NEXT:    vpshufb %ymm4, %ymm12, %ymm3
4668 ; AVX2-FCP-NEXT:    vpor %ymm1, %ymm3, %ymm1
4669 ; AVX2-FCP-NEXT:    vpblendvb %ymm6, %ymm0, %ymm1, %ymm1
4670 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm3 = [3,3,3,3,0,4,4,4]
4671 ; AVX2-FCP-NEXT:    vpermd %ymm13, %ymm3, %ymm0
4672 ; AVX2-FCP-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]
4673 ; AVX2-FCP-NEXT:    vpblendvb %ymm4, %ymm2, %ymm0, %ymm0
4674 ; AVX2-FCP-NEXT:    vpermd %ymm11, %ymm3, %ymm2
4675 ; AVX2-FCP-NEXT:    vpblendvb %ymm4, %ymm1, %ymm2, %ymm1
4676 ; AVX2-FCP-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
4677 ; AVX2-FCP-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm2 # 16-byte Folded Reload
4678 ; AVX2-FCP-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]
4679 ; AVX2-FCP-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
4680 ; AVX2-FCP-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
4681 ; AVX2-FCP-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]
4682 ; AVX2-FCP-NEXT:    vmovdqa {{.*#+}} xmm4 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
4683 ; AVX2-FCP-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
4684 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,0,1,1]
4685 ; AVX2-FCP-NEXT:    vmovdqa {{.*#+}} xmm5 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
4686 ; AVX2-FCP-NEXT:    vpshufb %xmm5, %xmm3, %xmm3
4687 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
4688 ; AVX2-FCP-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]
4689 ; AVX2-FCP-NEXT:    vpblendvb %ymm6, %ymm2, %ymm3, %ymm2
4690 ; AVX2-FCP-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
4691 ; AVX2-FCP-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
4692 ; AVX2-FCP-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]
4693 ; AVX2-FCP-NEXT:    vpshufb %xmm4, %xmm3, %xmm3
4694 ; AVX2-FCP-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
4695 ; AVX2-FCP-NEXT:    vpunpcklbw {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm4 # 16-byte Folded Reload
4696 ; AVX2-FCP-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]
4697 ; AVX2-FCP-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
4698 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
4699 ; AVX2-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
4700 ; AVX2-FCP-NEXT:    vpblendvb %ymm6, %ymm3, %ymm4, %ymm3
4701 ; AVX2-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm4 = [0,0,0,0,0,0,1,1]
4702 ; AVX2-FCP-NEXT:    vpermd %ymm11, %ymm4, %ymm5
4703 ; AVX2-FCP-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]
4704 ; AVX2-FCP-NEXT:    vpblendvb %ymm6, %ymm2, %ymm5, %ymm2
4705 ; AVX2-FCP-NEXT:    vpermd %ymm13, %ymm4, %ymm4
4706 ; AVX2-FCP-NEXT:    vpblendvb %ymm6, %ymm3, %ymm4, %ymm3
4707 ; AVX2-FCP-NEXT:    vmovdqa %ymm1, 64(%r9)
4708 ; AVX2-FCP-NEXT:    vmovdqa %ymm0, 224(%r9)
4709 ; AVX2-FCP-NEXT:    vmovdqa %ymm7, 96(%r9)
4710 ; AVX2-FCP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4711 ; AVX2-FCP-NEXT:    vmovaps %ymm0, 128(%r9)
4712 ; AVX2-FCP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4713 ; AVX2-FCP-NEXT:    vmovaps %ymm0, 288(%r9)
4714 ; AVX2-FCP-NEXT:    vmovdqa %ymm9, 256(%r9)
4715 ; AVX2-FCP-NEXT:    vmovdqa %ymm3, 160(%r9)
4716 ; AVX2-FCP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4717 ; AVX2-FCP-NEXT:    vmovaps %ymm0, 192(%r9)
4718 ; AVX2-FCP-NEXT:    vmovdqa %ymm2, (%r9)
4719 ; AVX2-FCP-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4720 ; AVX2-FCP-NEXT:    vmovaps %ymm0, 32(%r9)
4721 ; AVX2-FCP-NEXT:    addq $168, %rsp
4722 ; AVX2-FCP-NEXT:    vzeroupper
4723 ; AVX2-FCP-NEXT:    retq
4725 ; AVX512-LABEL: store_i8_stride5_vf64:
4726 ; AVX512:       # %bb.0:
4727 ; AVX512-NEXT:    vmovdqa 32(%rsi), %ymm11
4728 ; AVX512-NEXT:    vmovdqa {{.*#+}} ymm1 = [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]
4729 ; AVX512-NEXT:    vpshufb %ymm1, %ymm11, %ymm0
4730 ; AVX512-NEXT:    vmovdqa64 %ymm1, %ymm18
4731 ; AVX512-NEXT:    vmovdqa 32(%rdi), %ymm5
4732 ; AVX512-NEXT:    vmovdqa {{.*#+}} ymm2 = [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]
4733 ; AVX512-NEXT:    vpshufb %ymm2, %ymm5, %ymm1
4734 ; AVX512-NEXT:    vmovdqa64 %ymm2, %ymm19
4735 ; AVX512-NEXT:    vporq %ymm0, %ymm1, %ymm20
4736 ; AVX512-NEXT:    vmovdqa 32(%rdi), %xmm12
4737 ; AVX512-NEXT:    vmovdqa {{.*#+}} xmm1 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]
4738 ; AVX512-NEXT:    vpshufb %xmm1, %xmm12, %xmm0
4739 ; AVX512-NEXT:    vmovdqa64 %xmm1, %xmm28
4740 ; AVX512-NEXT:    vmovdqa 32(%rsi), %xmm10
4741 ; AVX512-NEXT:    vmovdqa {{.*#+}} xmm2 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
4742 ; AVX512-NEXT:    vpshufb %xmm2, %xmm10, %xmm1
4743 ; AVX512-NEXT:    vmovdqa64 %xmm2, %xmm29
4744 ; AVX512-NEXT:    vporq %xmm0, %xmm1, %xmm21
4745 ; AVX512-NEXT:    vmovdqa 32(%rcx), %ymm15
4746 ; AVX512-NEXT:    vmovdqa {{.*#+}} ymm8 = [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]
4747 ; AVX512-NEXT:    vpshufb %ymm8, %ymm15, %ymm0
4748 ; AVX512-NEXT:    vmovdqa 32(%rdx), %ymm13
4749 ; AVX512-NEXT:    vmovdqa {{.*#+}} ymm3 = [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]
4750 ; AVX512-NEXT:    vpshufb %ymm3, %ymm13, %ymm1
4751 ; AVX512-NEXT:    vporq %ymm0, %ymm1, %ymm22
4752 ; AVX512-NEXT:    vmovdqa 32(%rcx), %xmm6
4753 ; AVX512-NEXT:    vmovdqa {{.*#+}} xmm1 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]
4754 ; AVX512-NEXT:    vpshufb %xmm1, %xmm6, %xmm0
4755 ; AVX512-NEXT:    vmovdqa64 %xmm1, %xmm30
4756 ; AVX512-NEXT:    vmovdqa 32(%rdx), %xmm7
4757 ; AVX512-NEXT:    vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
4758 ; AVX512-NEXT:    vpshufb %xmm2, %xmm7, %xmm1
4759 ; AVX512-NEXT:    vmovdqa64 %xmm2, %xmm31
4760 ; AVX512-NEXT:    vporq %xmm0, %xmm1, %xmm23
4761 ; AVX512-NEXT:    vbroadcasti128 {{.*#+}} ymm9 = [128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]
4762 ; AVX512-NEXT:    # ymm9 = mem[0,1,0,1]
4763 ; AVX512-NEXT:    vpshufb %ymm9, %ymm5, %ymm0
4764 ; AVX512-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]
4765 ; AVX512-NEXT:    # ymm4 = mem[0,1,0,1]
4766 ; AVX512-NEXT:    vpshufb %ymm4, %ymm5, %ymm1
4767 ; AVX512-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm24
4768 ; AVX512-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30,27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30]
4769 ; AVX512-NEXT:    # ymm5 = mem[0,1,0,1]
4770 ; AVX512-NEXT:    vpshufb %ymm5, %ymm11, %ymm1
4771 ; AVX512-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0,19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0]
4772 ; AVX512-NEXT:    # ymm2 = mem[0,1,0,1]
4773 ; AVX512-NEXT:    vpshufb %ymm2, %ymm11, %ymm11
4774 ; AVX512-NEXT:    vinserti64x4 $1, %ymm1, %zmm11, %zmm26
4775 ; AVX512-NEXT:    vbroadcasti128 {{.*#+}} ymm11 = [128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]
4776 ; AVX512-NEXT:    # ymm11 = mem[0,1,0,1]
4777 ; AVX512-NEXT:    vpshufb %ymm11, %ymm13, %ymm1
4778 ; AVX512-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [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]
4779 ; AVX512-NEXT:    # ymm0 = mem[0,1,0,1]
4780 ; AVX512-NEXT:    vpshufb %ymm0, %ymm15, %ymm14
4781 ; AVX512-NEXT:    vinserti64x4 $1, %ymm1, %zmm14, %zmm25
4782 ; AVX512-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0,25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0]
4783 ; AVX512-NEXT:    # ymm1 = mem[0,1,0,1]
4784 ; AVX512-NEXT:    vpshufb %ymm1, %ymm15, %ymm14
4785 ; AVX512-NEXT:    vbroadcasti128 {{.*#+}} ymm15 = [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]
4786 ; AVX512-NEXT:    # ymm15 = mem[0,1,0,1]
4787 ; AVX512-NEXT:    vpshufb %ymm15, %ymm13, %ymm13
4788 ; AVX512-NEXT:    vinserti64x4 $1, %ymm14, %zmm13, %zmm27
4789 ; AVX512-NEXT:    vmovdqa (%rcx), %ymm13
4790 ; AVX512-NEXT:    vpshufb %ymm8, %ymm13, %ymm8
4791 ; AVX512-NEXT:    vmovdqa (%rdx), %ymm14
4792 ; AVX512-NEXT:    vpshufb %ymm3, %ymm14, %ymm3
4793 ; AVX512-NEXT:    vporq %ymm8, %ymm3, %ymm16
4794 ; AVX512-NEXT:    vpshufb %ymm0, %ymm13, %ymm0
4795 ; AVX512-NEXT:    vpshufb %ymm15, %ymm14, %ymm3
4796 ; AVX512-NEXT:    vporq %ymm0, %ymm3, %ymm17
4797 ; AVX512-NEXT:    vmovdqa (%rsi), %ymm3
4798 ; AVX512-NEXT:    vmovdqa64 %ymm18, %ymm0
4799 ; AVX512-NEXT:    vpshufb %ymm0, %ymm3, %ymm0
4800 ; AVX512-NEXT:    vmovdqa (%rdi), %ymm8
4801 ; AVX512-NEXT:    vmovdqa64 %ymm19, %ymm15
4802 ; AVX512-NEXT:    vpshufb %ymm15, %ymm8, %ymm15
4803 ; AVX512-NEXT:    vporq %ymm0, %ymm15, %ymm18
4804 ; AVX512-NEXT:    vpshufb %ymm4, %ymm8, %ymm0
4805 ; AVX512-NEXT:    vpshufb %ymm2, %ymm3, %ymm2
4806 ; AVX512-NEXT:    vporq %ymm0, %ymm2, %ymm19
4807 ; AVX512-NEXT:    vpshufb %ymm11, %ymm14, %ymm0
4808 ; AVX512-NEXT:    vpshufb %ymm1, %ymm13, %ymm1
4809 ; AVX512-NEXT:    vpor %ymm0, %ymm1, %ymm0
4810 ; AVX512-NEXT:    vpshufb %ymm9, %ymm8, %ymm1
4811 ; AVX512-NEXT:    vpshufb %ymm5, %ymm3, %ymm2
4812 ; AVX512-NEXT:    vmovdqa (%rdi), %xmm5
4813 ; AVX512-NEXT:    vpor %ymm1, %ymm2, %ymm1
4814 ; AVX512-NEXT:    vmovdqa (%rsi), %xmm9
4815 ; AVX512-NEXT:    vmovdqa (%rcx), %xmm8
4816 ; AVX512-NEXT:    vmovdqa64 %xmm28, %xmm2
4817 ; AVX512-NEXT:    vpshufb %xmm2, %xmm5, %xmm2
4818 ; AVX512-NEXT:    vmovdqa64 %xmm29, %xmm3
4819 ; AVX512-NEXT:    vpshufb %xmm3, %xmm9, %xmm3
4820 ; AVX512-NEXT:    vpor %xmm2, %xmm3, %xmm4
4821 ; AVX512-NEXT:    vmovdqa (%rdx), %xmm3
4822 ; AVX512-NEXT:    vmovdqa 32(%r8), %ymm11
4823 ; AVX512-NEXT:    vmovdqa64 %xmm30, %xmm2
4824 ; AVX512-NEXT:    vpshufb %xmm2, %xmm8, %xmm2
4825 ; AVX512-NEXT:    vmovdqa64 %xmm31, %xmm13
4826 ; AVX512-NEXT:    vpshufb %xmm13, %xmm3, %xmm13
4827 ; AVX512-NEXT:    vpor %xmm2, %xmm13, %xmm13
4828 ; AVX512-NEXT:    vmovdqa {{.*#+}} ymm14 = [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]
4829 ; AVX512-NEXT:    vpshufb %ymm14, %ymm11, %ymm2
4830 ; AVX512-NEXT:    vpshufd {{.*#+}} xmm15 = mem[1,1,2,2]
4831 ; AVX512-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[0,1,1,1]
4832 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm28 = [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,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]
4833 ; AVX512-NEXT:    vpandnq %ymm15, %ymm28, %ymm15
4834 ; AVX512-NEXT:    vinserti64x4 $1, %ymm2, %zmm15, %zmm2
4835 ; AVX512-NEXT:    vmovdqa (%r8), %ymm15
4836 ; AVX512-NEXT:    vpshufb %ymm14, %ymm15, %ymm14
4837 ; AVX512-NEXT:    vpshufd {{.*#+}} ymm15 = ymm15[0,2,1,1,4,6,5,5]
4838 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm29 = [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,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]
4839 ; AVX512-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[2,3,3,2]
4840 ; AVX512-NEXT:    vpandnq %ymm15, %ymm29, %ymm15
4841 ; AVX512-NEXT:    vinserti64x4 $1, %ymm15, %zmm14, %zmm14
4842 ; AVX512-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]
4843 ; AVX512-NEXT:    vmovdqa {{.*#+}} xmm7 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
4844 ; AVX512-NEXT:    vpshufb %xmm7, %xmm6, %xmm6
4845 ; AVX512-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
4846 ; AVX512-NEXT:    vpunpcklbw {{.*#+}} xmm10 = xmm12[0],xmm10[0],xmm12[1],xmm10[1],xmm12[2],xmm10[2],xmm12[3],xmm10[3],xmm12[4],xmm10[4],xmm12[5],xmm10[5],xmm12[6],xmm10[6],xmm12[7],xmm10[7]
4847 ; AVX512-NEXT:    vmovdqa {{.*#+}} xmm12 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
4848 ; AVX512-NEXT:    vpshufb %xmm12, %xmm10, %xmm10
4849 ; AVX512-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]
4850 ; AVX512-NEXT:    vmovdqa64 (%r8), %zmm15
4851 ; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm30 = [4,0,5,5,5,5,0,6,6,6,6,0,7,7,7,7]
4852 ; AVX512-NEXT:    vpermd %zmm11, %zmm30, %zmm30
4853 ; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm31 = [6,6,6,0,7,7,7,7,0,16,16,16,16,0,17,17]
4854 ; AVX512-NEXT:    vpermi2d %zmm11, %zmm15, %zmm31
4855 ; AVX512-NEXT:    vpunpcklbw {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1],xmm5[2],xmm9[2],xmm5[3],xmm9[3],xmm5[4],xmm9[4],xmm5[5],xmm9[5],xmm5[6],xmm9[6],xmm5[7],xmm9[7]
4856 ; AVX512-NEXT:    vpshufb %xmm12, %xmm5, %xmm5
4857 ; AVX512-NEXT:    vinserti32x4 $2, %xmm4, %zmm5, %zmm4
4858 ; AVX512-NEXT:    vpunpcklbw {{.*#+}} xmm3 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3],xmm8[4],xmm3[4],xmm8[5],xmm3[5],xmm8[6],xmm3[6],xmm8[7],xmm3[7]
4859 ; AVX512-NEXT:    vpshufb %xmm7, %xmm3, %xmm3
4860 ; AVX512-NEXT:    vinserti32x4 $2, %xmm13, %zmm3, %zmm3
4861 ; AVX512-NEXT:    vpermq {{.*#+}} ymm5 = ymm21[0,0,1,1]
4862 ; AVX512-NEXT:    vinserti64x4 $1, %ymm20, %zmm5, %zmm5
4863 ; AVX512-NEXT:    vpermq {{.*#+}} ymm7 = ymm23[0,0,1,1]
4864 ; AVX512-NEXT:    vinserti64x4 $1, %ymm22, %zmm7, %zmm7
4865 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [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]
4866 ; AVX512-NEXT:    vpternlogq {{.*#+}} zmm7 = zmm5 ^ (zmm8 & (zmm7 ^ zmm5))
4867 ; AVX512-NEXT:    vpternlogq {{.*#+}} zmm2 = zmm2 | (zmm7 & zmm28)
4868 ; AVX512-NEXT:    vporq %zmm24, %zmm26, %zmm5
4869 ; AVX512-NEXT:    vpermq {{.*#+}} zmm5 = zmm5[2,2,3,3,6,6,7,7]
4870 ; AVX512-NEXT:    vporq %zmm25, %zmm27, %zmm7
4871 ; AVX512-NEXT:    vpermq {{.*#+}} zmm7 = zmm7[2,2,3,3,6,6,7,7]
4872 ; AVX512-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [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]
4873 ; AVX512-NEXT:    vpternlogq {{.*#+}} zmm7 = zmm5 ^ (zmm9 & (zmm7 ^ zmm5))
4874 ; AVX512-NEXT:    vpternlogd {{.*#+}} zmm30 = zmm30 ^ (zmm29 & (zmm30 ^ zmm7))
4875 ; AVX512-NEXT:    vpermq {{.*#+}} ymm5 = ymm17[2,2,3,3]
4876 ; AVX512-NEXT:    vinserti64x4 $1, %ymm5, %zmm16, %zmm5
4877 ; AVX512-NEXT:    vpermq {{.*#+}} ymm7 = ymm19[2,2,3,3]
4878 ; AVX512-NEXT:    vinserti64x4 $1, %ymm7, %zmm18, %zmm7
4879 ; AVX512-NEXT:    vpternlogq {{.*#+}} zmm7 = zmm5 ^ (zmm8 & (zmm7 ^ zmm5))
4880 ; AVX512-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
4881 ; AVX512-NEXT:    vinserti64x4 $1, %ymm6, %zmm0, %zmm0
4882 ; AVX512-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
4883 ; AVX512-NEXT:    vinserti64x4 $1, %ymm10, %zmm1, %zmm1
4884 ; AVX512-NEXT:    vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm9 & (zmm1 ^ zmm0))
4885 ; AVX512-NEXT:    vpternlogq {{.*#+}} zmm14 = zmm14 | (zmm7 & mem)
4886 ; AVX512-NEXT:    vpternlogd {{.*#+}} zmm31 = zmm31 ^ (mem & (zmm31 ^ zmm1))
4887 ; AVX512-NEXT:    vpermq {{.*#+}} zmm0 = zmm4[0,0,1,1,4,4,5,5]
4888 ; AVX512-NEXT:    vpermq {{.*#+}} zmm1 = zmm3[0,0,1,1,4,4,5,5]
4889 ; AVX512-NEXT:    vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm0))
4890 ; AVX512-NEXT:    vpmovsxbd {{.*#+}} zmm0 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]
4891 ; AVX512-NEXT:    vpermd %zmm15, %zmm0, %zmm0
4892 ; AVX512-NEXT:    vpternlogd {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm1))
4893 ; AVX512-NEXT:    vmovdqa64 %zmm14, 64(%r9)
4894 ; AVX512-NEXT:    vmovdqa64 %zmm0, (%r9)
4895 ; AVX512-NEXT:    vmovdqa64 %zmm31, 128(%r9)
4896 ; AVX512-NEXT:    vmovdqa64 %zmm30, 256(%r9)
4897 ; AVX512-NEXT:    vmovdqa64 %zmm2, 192(%r9)
4898 ; AVX512-NEXT:    vzeroupper
4899 ; AVX512-NEXT:    retq
4901 ; AVX512-FCP-LABEL: store_i8_stride5_vf64:
4902 ; AVX512-FCP:       # %bb.0:
4903 ; AVX512-FCP-NEXT:    vmovdqa 32(%rsi), %ymm0
4904 ; AVX512-FCP-NEXT:    vmovdqa {{.*#+}} ymm14 = [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]
4905 ; AVX512-FCP-NEXT:    vpshufb %ymm14, %ymm0, %ymm1
4906 ; AVX512-FCP-NEXT:    vmovdqa 32(%rdi), %ymm2
4907 ; AVX512-FCP-NEXT:    vmovdqa {{.*#+}} ymm9 = [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]
4908 ; AVX512-FCP-NEXT:    vpshufb %ymm9, %ymm2, %ymm3
4909 ; AVX512-FCP-NEXT:    vporq %ymm1, %ymm3, %ymm17
4910 ; AVX512-FCP-NEXT:    vmovdqa 32(%rdi), %xmm3
4911 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm3[8],zero,xmm3[u,7],zero,xmm3[9],zero,xmm3[u],zero,xmm3[u,10],zero,xmm3[12],zero,xmm3[u,11]
4912 ; AVX512-FCP-NEXT:    vmovdqa 32(%rsi), %xmm5
4913 ; AVX512-FCP-NEXT:    vmovdqa {{.*#+}} xmm6 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
4914 ; AVX512-FCP-NEXT:    vpshufb %xmm6, %xmm5, %xmm4
4915 ; AVX512-FCP-NEXT:    vmovdqa64 %xmm6, %xmm28
4916 ; AVX512-FCP-NEXT:    vporq %xmm1, %xmm4, %xmm18
4917 ; AVX512-FCP-NEXT:    vmovdqa 32(%rcx), %ymm1
4918 ; AVX512-FCP-NEXT:    vmovdqa {{.*#+}} ymm10 = [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]
4919 ; AVX512-FCP-NEXT:    vpshufb %ymm10, %ymm1, %ymm4
4920 ; AVX512-FCP-NEXT:    vmovdqa 32(%rdx), %ymm11
4921 ; AVX512-FCP-NEXT:    vmovdqa {{.*#+}} ymm12 = [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]
4922 ; AVX512-FCP-NEXT:    vpshufb %ymm12, %ymm11, %ymm6
4923 ; AVX512-FCP-NEXT:    vporq %ymm4, %ymm6, %ymm19
4924 ; AVX512-FCP-NEXT:    vmovdqa 32(%rcx), %xmm6
4925 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm4 = zero,xmm6[6],zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9],zero,xmm6[11,u],zero,xmm6[10],zero,xmm6[12]
4926 ; AVX512-FCP-NEXT:    vmovdqa 32(%rdx), %xmm7
4927 ; AVX512-FCP-NEXT:    vmovdqa {{.*#+}} xmm13 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
4928 ; AVX512-FCP-NEXT:    vpshufb %xmm13, %xmm7, %xmm8
4929 ; AVX512-FCP-NEXT:    vmovdqa64 %xmm13, %xmm29
4930 ; AVX512-FCP-NEXT:    vporq %xmm4, %xmm8, %xmm20
4931 ; AVX512-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]
4932 ; AVX512-FCP-NEXT:    # ymm8 = mem[0,1,0,1]
4933 ; AVX512-FCP-NEXT:    vpshufb %ymm8, %ymm2, %ymm4
4934 ; AVX512-FCP-NEXT:    vmovdqa64 %ymm8, %ymm31
4935 ; AVX512-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm13 = [128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]
4936 ; AVX512-FCP-NEXT:    # ymm13 = mem[0,1,0,1]
4937 ; AVX512-FCP-NEXT:    vpshufb %ymm13, %ymm2, %ymm2
4938 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm4, %zmm2, %zmm21
4939 ; AVX512-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30,27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30]
4940 ; AVX512-FCP-NEXT:    # ymm2 = mem[0,1,0,1]
4941 ; AVX512-FCP-NEXT:    vpshufb %ymm2, %ymm0, %ymm8
4942 ; AVX512-FCP-NEXT:    vmovdqa64 %ymm2, %ymm30
4943 ; AVX512-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0,19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0]
4944 ; AVX512-FCP-NEXT:    # ymm2 = mem[0,1,0,1]
4945 ; AVX512-FCP-NEXT:    vpshufb %ymm2, %ymm0, %ymm0
4946 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm0, %zmm22
4947 ; AVX512-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]
4948 ; AVX512-FCP-NEXT:    # ymm4 = mem[0,1,0,1]
4949 ; AVX512-FCP-NEXT:    vpshufb %ymm4, %ymm11, %ymm8
4950 ; AVX512-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [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]
4951 ; AVX512-FCP-NEXT:    # ymm0 = mem[0,1,0,1]
4952 ; AVX512-FCP-NEXT:    vpshufb %ymm0, %ymm1, %ymm15
4953 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm15, %zmm24
4954 ; AVX512-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0,25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0]
4955 ; AVX512-FCP-NEXT:    # ymm8 = mem[0,1,0,1]
4956 ; AVX512-FCP-NEXT:    vpshufb %ymm8, %ymm1, %ymm1
4957 ; AVX512-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm15 = [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]
4958 ; AVX512-FCP-NEXT:    # ymm15 = mem[0,1,0,1]
4959 ; AVX512-FCP-NEXT:    vpshufb %ymm15, %ymm11, %ymm11
4960 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm1, %zmm11, %zmm26
4961 ; AVX512-FCP-NEXT:    vmovdqa (%rcx), %ymm1
4962 ; AVX512-FCP-NEXT:    vpshufb %ymm10, %ymm1, %ymm10
4963 ; AVX512-FCP-NEXT:    vmovdqa (%rdx), %ymm11
4964 ; AVX512-FCP-NEXT:    vpshufb %ymm12, %ymm11, %ymm12
4965 ; AVX512-FCP-NEXT:    vporq %ymm10, %ymm12, %ymm23
4966 ; AVX512-FCP-NEXT:    vpshufb %ymm0, %ymm1, %ymm0
4967 ; AVX512-FCP-NEXT:    vpshufb %ymm15, %ymm11, %ymm10
4968 ; AVX512-FCP-NEXT:    vporq %ymm0, %ymm10, %ymm25
4969 ; AVX512-FCP-NEXT:    vmovdqa (%rsi), %ymm10
4970 ; AVX512-FCP-NEXT:    vpshufb %ymm14, %ymm10, %ymm0
4971 ; AVX512-FCP-NEXT:    vmovdqa (%rdi), %ymm12
4972 ; AVX512-FCP-NEXT:    vpshufb %ymm9, %ymm12, %ymm9
4973 ; AVX512-FCP-NEXT:    vporq %ymm0, %ymm9, %ymm27
4974 ; AVX512-FCP-NEXT:    vpshufb %ymm13, %ymm12, %ymm0
4975 ; AVX512-FCP-NEXT:    vpshufb %ymm2, %ymm10, %ymm2
4976 ; AVX512-FCP-NEXT:    vporq %ymm0, %ymm2, %ymm16
4977 ; AVX512-FCP-NEXT:    vmovdqa (%rdi), %xmm9
4978 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm9[8],zero,xmm9[u,7],zero,xmm9[9],zero,xmm9[u],zero,xmm9[u,10],zero,xmm9[12],zero,xmm9[u,11]
4979 ; AVX512-FCP-NEXT:    vmovdqa (%rsi), %xmm14
4980 ; AVX512-FCP-NEXT:    vmovdqa64 %xmm28, %xmm2
4981 ; AVX512-FCP-NEXT:    vpshufb %xmm2, %xmm14, %xmm2
4982 ; AVX512-FCP-NEXT:    vporq %xmm0, %xmm2, %xmm28
4983 ; AVX512-FCP-NEXT:    vmovdqa (%rcx), %xmm13
4984 ; AVX512-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm13[6],zero,xmm13[8,u],zero,xmm13[7],zero,xmm13[9],zero,xmm13[11,u],zero,xmm13[10],zero,xmm13[12]
4985 ; AVX512-FCP-NEXT:    vmovdqa (%rdx), %xmm15
4986 ; AVX512-FCP-NEXT:    vmovdqa64 %xmm29, %xmm2
4987 ; AVX512-FCP-NEXT:    vpshufb %xmm2, %xmm15, %xmm2
4988 ; AVX512-FCP-NEXT:    vporq %xmm0, %xmm2, %xmm29
4989 ; AVX512-FCP-NEXT:    vpshufb %ymm4, %ymm11, %ymm0
4990 ; AVX512-FCP-NEXT:    vpshufb %ymm8, %ymm1, %ymm1
4991 ; AVX512-FCP-NEXT:    vpor %ymm0, %ymm1, %ymm0
4992 ; AVX512-FCP-NEXT:    vmovdqa64 %ymm31, %ymm1
4993 ; AVX512-FCP-NEXT:    vpshufb %ymm1, %ymm12, %ymm1
4994 ; AVX512-FCP-NEXT:    vmovdqa64 %ymm30, %ymm2
4995 ; AVX512-FCP-NEXT:    vpshufb %ymm2, %ymm10, %ymm2
4996 ; AVX512-FCP-NEXT:    vmovdqa 32(%r8), %ymm4
4997 ; AVX512-FCP-NEXT:    vpor %ymm1, %ymm2, %ymm1
4998 ; AVX512-FCP-NEXT:    vmovdqa {{.*#+}} ymm8 = [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]
4999 ; AVX512-FCP-NEXT:    vpshufb %ymm8, %ymm4, %ymm2
5000 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm10 = [1,1,2,2,2,2,2,2]
5001 ; AVX512-FCP-NEXT:    vpermd %ymm4, %ymm10, %ymm10
5002 ; AVX512-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm11 = [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,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]
5003 ; AVX512-FCP-NEXT:    vpandn %ymm10, %ymm11, %ymm10
5004 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm2, %zmm10, %zmm2
5005 ; AVX512-FCP-NEXT:    vmovdqa (%r8), %ymm10
5006 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [4,6,5,5,5,5,4,6,30,30,30,30,31,31,31,31]
5007 ; AVX512-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm30 = [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,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]
5008 ; AVX512-FCP-NEXT:    vpermd %ymm10, %ymm12, %ymm31
5009 ; AVX512-FCP-NEXT:    vpandnq %ymm31, %ymm30, %ymm31
5010 ; AVX512-FCP-NEXT:    vpshufb %ymm8, %ymm10, %ymm8
5011 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm31, %zmm8, %zmm8
5012 ; AVX512-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm9 = xmm9[0],xmm14[0],xmm9[1],xmm14[1],xmm9[2],xmm14[2],xmm9[3],xmm14[3],xmm9[4],xmm14[4],xmm9[5],xmm14[5],xmm9[6],xmm14[6],xmm9[7],xmm14[7]
5013 ; AVX512-FCP-NEXT:    vmovdqa {{.*#+}} xmm14 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
5014 ; AVX512-FCP-NEXT:    vpshufb %xmm14, %xmm9, %xmm9
5015 ; AVX512-FCP-NEXT:    vinserti32x4 $2, %xmm28, %zmm9, %zmm9
5016 ; AVX512-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm13 = xmm13[0],xmm15[0],xmm13[1],xmm15[1],xmm13[2],xmm15[2],xmm13[3],xmm15[3],xmm13[4],xmm15[4],xmm13[5],xmm15[5],xmm13[6],xmm15[6],xmm13[7],xmm15[7]
5017 ; AVX512-FCP-NEXT:    vmovdqa {{.*#+}} xmm15 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
5018 ; AVX512-FCP-NEXT:    vpshufb %xmm15, %xmm13, %xmm13
5019 ; AVX512-FCP-NEXT:    vinserti32x4 $2, %xmm29, %zmm13, %zmm13
5020 ; AVX512-FCP-NEXT:    vmovdqa64 (%r8), %zmm28
5021 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm10, %zmm28, %zmm10
5022 ; AVX512-FCP-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]
5023 ; AVX512-FCP-NEXT:    vpshufb %xmm15, %xmm6, %xmm6
5024 ; AVX512-FCP-NEXT:    vpmovsxbq {{.*#+}} zmm7 = [2,2,3,3,8,8,9,9]
5025 ; AVX512-FCP-NEXT:    vpermt2q %zmm6, %zmm7, %zmm0
5026 ; AVX512-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm3 = 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]
5027 ; AVX512-FCP-NEXT:    vpshufb %xmm14, %xmm3, %xmm3
5028 ; AVX512-FCP-NEXT:    vpermt2q %zmm3, %zmm7, %zmm1
5029 ; AVX512-FCP-NEXT:    vporq %zmm21, %zmm22, %zmm3
5030 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} zmm3 = zmm3[2,2,3,3,6,6,7,7]
5031 ; AVX512-FCP-NEXT:    vporq %zmm24, %zmm26, %zmm5
5032 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} zmm5 = zmm5[2,2,3,3,6,6,7,7]
5033 ; AVX512-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm6 = [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]
5034 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} zmm5 = zmm3 ^ (zmm6 & (zmm5 ^ zmm3))
5035 ; AVX512-FCP-NEXT:    vpermt2d %zmm28, %zmm12, %zmm4
5036 ; AVX512-FCP-NEXT:    vpternlogd {{.*#+}} zmm4 = zmm4 ^ (zmm30 & (zmm4 ^ zmm5))
5037 ; AVX512-FCP-NEXT:    vmovdqa64 %zmm4, 256(%r9)
5038 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm3 = ymm18[0,0,1,1]
5039 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm17, %zmm3, %zmm3
5040 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm20[0,0,1,1]
5041 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm19, %zmm4, %zmm4
5042 ; AVX512-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [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]
5043 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} zmm4 = zmm3 ^ (zmm5 & (zmm4 ^ zmm3))
5044 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} zmm2 = zmm2 | (zmm4 & zmm11)
5045 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm3 = ymm25[2,2,3,3]
5046 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm3, %zmm23, %zmm3
5047 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm16[2,2,3,3]
5048 ; AVX512-FCP-NEXT:    vinserti64x4 $1, %ymm4, %zmm27, %zmm4
5049 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} zmm4 = zmm3 ^ (zmm5 & (zmm4 ^ zmm3))
5050 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm6 & (zmm1 ^ zmm0))
5051 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm4 & mem)
5052 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} zmm0 = zmm9[0,0,1,1,4,4,5,5]
5053 ; AVX512-FCP-NEXT:    vpermq {{.*#+}} zmm3 = zmm13[0,0,1,1,4,4,5,5]
5054 ; AVX512-FCP-NEXT:    vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm0))
5055 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm0 = [0,0,0,0,0,0,1,1,9,9,0,10,10,10,10,0]
5056 ; AVX512-FCP-NEXT:    vpermd %zmm10, %zmm0, %zmm0
5057 ; AVX512-FCP-NEXT:    vpternlogd {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm3))
5058 ; AVX512-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [6,6,6,0,7,7,7,7,0,8,8,8,8,0,9,9]
5059 ; AVX512-FCP-NEXT:    vpermd %zmm28, %zmm3, %zmm3
5060 ; AVX512-FCP-NEXT:    vpternlogd {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm1))
5061 ; AVX512-FCP-NEXT:    vmovdqa64 %zmm3, 128(%r9)
5062 ; AVX512-FCP-NEXT:    vmovdqa64 %zmm8, 64(%r9)
5063 ; AVX512-FCP-NEXT:    vmovdqa64 %zmm0, (%r9)
5064 ; AVX512-FCP-NEXT:    vmovdqa64 %zmm2, 192(%r9)
5065 ; AVX512-FCP-NEXT:    vzeroupper
5066 ; AVX512-FCP-NEXT:    retq
5068 ; AVX512DQ-LABEL: store_i8_stride5_vf64:
5069 ; AVX512DQ:       # %bb.0:
5070 ; AVX512DQ-NEXT:    vmovdqa 32(%rsi), %ymm11
5071 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} ymm1 = [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]
5072 ; AVX512DQ-NEXT:    vpshufb %ymm1, %ymm11, %ymm0
5073 ; AVX512DQ-NEXT:    vmovdqa64 %ymm1, %ymm18
5074 ; AVX512DQ-NEXT:    vmovdqa 32(%rdi), %ymm5
5075 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} ymm2 = [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]
5076 ; AVX512DQ-NEXT:    vpshufb %ymm2, %ymm5, %ymm1
5077 ; AVX512DQ-NEXT:    vmovdqa64 %ymm2, %ymm19
5078 ; AVX512DQ-NEXT:    vporq %ymm0, %ymm1, %ymm20
5079 ; AVX512DQ-NEXT:    vmovdqa 32(%rdi), %xmm12
5080 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} xmm1 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]
5081 ; AVX512DQ-NEXT:    vpshufb %xmm1, %xmm12, %xmm0
5082 ; AVX512DQ-NEXT:    vmovdqa64 %xmm1, %xmm28
5083 ; AVX512DQ-NEXT:    vmovdqa 32(%rsi), %xmm10
5084 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} xmm2 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
5085 ; AVX512DQ-NEXT:    vpshufb %xmm2, %xmm10, %xmm1
5086 ; AVX512DQ-NEXT:    vmovdqa64 %xmm2, %xmm29
5087 ; AVX512DQ-NEXT:    vporq %xmm0, %xmm1, %xmm21
5088 ; AVX512DQ-NEXT:    vmovdqa 32(%rcx), %ymm15
5089 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} ymm8 = [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]
5090 ; AVX512DQ-NEXT:    vpshufb %ymm8, %ymm15, %ymm0
5091 ; AVX512DQ-NEXT:    vmovdqa 32(%rdx), %ymm13
5092 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} ymm3 = [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]
5093 ; AVX512DQ-NEXT:    vpshufb %ymm3, %ymm13, %ymm1
5094 ; AVX512DQ-NEXT:    vporq %ymm0, %ymm1, %ymm22
5095 ; AVX512DQ-NEXT:    vmovdqa 32(%rcx), %xmm6
5096 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} xmm1 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]
5097 ; AVX512DQ-NEXT:    vpshufb %xmm1, %xmm6, %xmm0
5098 ; AVX512DQ-NEXT:    vmovdqa64 %xmm1, %xmm30
5099 ; AVX512DQ-NEXT:    vmovdqa 32(%rdx), %xmm7
5100 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} xmm2 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
5101 ; AVX512DQ-NEXT:    vpshufb %xmm2, %xmm7, %xmm1
5102 ; AVX512DQ-NEXT:    vmovdqa64 %xmm2, %xmm31
5103 ; AVX512DQ-NEXT:    vporq %xmm0, %xmm1, %xmm23
5104 ; AVX512DQ-NEXT:    vbroadcasti128 {{.*#+}} ymm9 = [128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]
5105 ; AVX512DQ-NEXT:    # ymm9 = mem[0,1,0,1]
5106 ; AVX512DQ-NEXT:    vpshufb %ymm9, %ymm5, %ymm0
5107 ; AVX512DQ-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]
5108 ; AVX512DQ-NEXT:    # ymm4 = mem[0,1,0,1]
5109 ; AVX512DQ-NEXT:    vpshufb %ymm4, %ymm5, %ymm1
5110 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm24
5111 ; AVX512DQ-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30,27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30]
5112 ; AVX512DQ-NEXT:    # ymm5 = mem[0,1,0,1]
5113 ; AVX512DQ-NEXT:    vpshufb %ymm5, %ymm11, %ymm1
5114 ; AVX512DQ-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0,19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0]
5115 ; AVX512DQ-NEXT:    # ymm2 = mem[0,1,0,1]
5116 ; AVX512DQ-NEXT:    vpshufb %ymm2, %ymm11, %ymm11
5117 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm1, %zmm11, %zmm26
5118 ; AVX512DQ-NEXT:    vbroadcasti128 {{.*#+}} ymm11 = [128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]
5119 ; AVX512DQ-NEXT:    # ymm11 = mem[0,1,0,1]
5120 ; AVX512DQ-NEXT:    vpshufb %ymm11, %ymm13, %ymm1
5121 ; AVX512DQ-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [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]
5122 ; AVX512DQ-NEXT:    # ymm0 = mem[0,1,0,1]
5123 ; AVX512DQ-NEXT:    vpshufb %ymm0, %ymm15, %ymm14
5124 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm1, %zmm14, %zmm25
5125 ; AVX512DQ-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0,25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0]
5126 ; AVX512DQ-NEXT:    # ymm1 = mem[0,1,0,1]
5127 ; AVX512DQ-NEXT:    vpshufb %ymm1, %ymm15, %ymm14
5128 ; AVX512DQ-NEXT:    vbroadcasti128 {{.*#+}} ymm15 = [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]
5129 ; AVX512DQ-NEXT:    # ymm15 = mem[0,1,0,1]
5130 ; AVX512DQ-NEXT:    vpshufb %ymm15, %ymm13, %ymm13
5131 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm14, %zmm13, %zmm27
5132 ; AVX512DQ-NEXT:    vmovdqa (%rcx), %ymm13
5133 ; AVX512DQ-NEXT:    vpshufb %ymm8, %ymm13, %ymm8
5134 ; AVX512DQ-NEXT:    vmovdqa (%rdx), %ymm14
5135 ; AVX512DQ-NEXT:    vpshufb %ymm3, %ymm14, %ymm3
5136 ; AVX512DQ-NEXT:    vporq %ymm8, %ymm3, %ymm16
5137 ; AVX512DQ-NEXT:    vpshufb %ymm0, %ymm13, %ymm0
5138 ; AVX512DQ-NEXT:    vpshufb %ymm15, %ymm14, %ymm3
5139 ; AVX512DQ-NEXT:    vporq %ymm0, %ymm3, %ymm17
5140 ; AVX512DQ-NEXT:    vmovdqa (%rsi), %ymm3
5141 ; AVX512DQ-NEXT:    vmovdqa64 %ymm18, %ymm0
5142 ; AVX512DQ-NEXT:    vpshufb %ymm0, %ymm3, %ymm0
5143 ; AVX512DQ-NEXT:    vmovdqa (%rdi), %ymm8
5144 ; AVX512DQ-NEXT:    vmovdqa64 %ymm19, %ymm15
5145 ; AVX512DQ-NEXT:    vpshufb %ymm15, %ymm8, %ymm15
5146 ; AVX512DQ-NEXT:    vporq %ymm0, %ymm15, %ymm18
5147 ; AVX512DQ-NEXT:    vpshufb %ymm4, %ymm8, %ymm0
5148 ; AVX512DQ-NEXT:    vpshufb %ymm2, %ymm3, %ymm2
5149 ; AVX512DQ-NEXT:    vporq %ymm0, %ymm2, %ymm19
5150 ; AVX512DQ-NEXT:    vpshufb %ymm11, %ymm14, %ymm0
5151 ; AVX512DQ-NEXT:    vpshufb %ymm1, %ymm13, %ymm1
5152 ; AVX512DQ-NEXT:    vpor %ymm0, %ymm1, %ymm0
5153 ; AVX512DQ-NEXT:    vpshufb %ymm9, %ymm8, %ymm1
5154 ; AVX512DQ-NEXT:    vpshufb %ymm5, %ymm3, %ymm2
5155 ; AVX512DQ-NEXT:    vmovdqa (%rdi), %xmm5
5156 ; AVX512DQ-NEXT:    vpor %ymm1, %ymm2, %ymm1
5157 ; AVX512DQ-NEXT:    vmovdqa (%rsi), %xmm9
5158 ; AVX512DQ-NEXT:    vmovdqa (%rcx), %xmm8
5159 ; AVX512DQ-NEXT:    vmovdqa64 %xmm28, %xmm2
5160 ; AVX512DQ-NEXT:    vpshufb %xmm2, %xmm5, %xmm2
5161 ; AVX512DQ-NEXT:    vmovdqa64 %xmm29, %xmm3
5162 ; AVX512DQ-NEXT:    vpshufb %xmm3, %xmm9, %xmm3
5163 ; AVX512DQ-NEXT:    vpor %xmm2, %xmm3, %xmm4
5164 ; AVX512DQ-NEXT:    vmovdqa (%rdx), %xmm3
5165 ; AVX512DQ-NEXT:    vmovdqa 32(%r8), %ymm11
5166 ; AVX512DQ-NEXT:    vmovdqa64 %xmm30, %xmm2
5167 ; AVX512DQ-NEXT:    vpshufb %xmm2, %xmm8, %xmm2
5168 ; AVX512DQ-NEXT:    vmovdqa64 %xmm31, %xmm13
5169 ; AVX512DQ-NEXT:    vpshufb %xmm13, %xmm3, %xmm13
5170 ; AVX512DQ-NEXT:    vpor %xmm2, %xmm13, %xmm13
5171 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} ymm14 = [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]
5172 ; AVX512DQ-NEXT:    vpshufb %ymm14, %ymm11, %ymm2
5173 ; AVX512DQ-NEXT:    vpshufd {{.*#+}} xmm15 = mem[1,1,2,2]
5174 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[0,1,1,1]
5175 ; AVX512DQ-NEXT:    vmovdqa64 {{.*#+}} zmm28 = [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,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]
5176 ; AVX512DQ-NEXT:    vpandnq %ymm15, %ymm28, %ymm15
5177 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm2, %zmm15, %zmm2
5178 ; AVX512DQ-NEXT:    vmovdqa (%r8), %ymm15
5179 ; AVX512DQ-NEXT:    vpshufb %ymm14, %ymm15, %ymm14
5180 ; AVX512DQ-NEXT:    vpshufd {{.*#+}} ymm15 = ymm15[0,2,1,1,4,6,5,5]
5181 ; AVX512DQ-NEXT:    vmovdqa64 {{.*#+}} zmm29 = [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,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]
5182 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[2,3,3,2]
5183 ; AVX512DQ-NEXT:    vpandnq %ymm15, %ymm29, %ymm15
5184 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm15, %zmm14, %zmm14
5185 ; AVX512DQ-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]
5186 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} xmm7 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
5187 ; AVX512DQ-NEXT:    vpshufb %xmm7, %xmm6, %xmm6
5188 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
5189 ; AVX512DQ-NEXT:    vpunpcklbw {{.*#+}} xmm10 = xmm12[0],xmm10[0],xmm12[1],xmm10[1],xmm12[2],xmm10[2],xmm12[3],xmm10[3],xmm12[4],xmm10[4],xmm12[5],xmm10[5],xmm12[6],xmm10[6],xmm12[7],xmm10[7]
5190 ; AVX512DQ-NEXT:    vmovdqa {{.*#+}} xmm12 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
5191 ; AVX512DQ-NEXT:    vpshufb %xmm12, %xmm10, %xmm10
5192 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,0,1,1]
5193 ; AVX512DQ-NEXT:    vmovdqa64 (%r8), %zmm15
5194 ; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm30 = [4,0,5,5,5,5,0,6,6,6,6,0,7,7,7,7]
5195 ; AVX512DQ-NEXT:    vpermd %zmm11, %zmm30, %zmm30
5196 ; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm31 = [6,6,6,0,7,7,7,7,0,16,16,16,16,0,17,17]
5197 ; AVX512DQ-NEXT:    vpermi2d %zmm11, %zmm15, %zmm31
5198 ; AVX512DQ-NEXT:    vpunpcklbw {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1],xmm5[2],xmm9[2],xmm5[3],xmm9[3],xmm5[4],xmm9[4],xmm5[5],xmm9[5],xmm5[6],xmm9[6],xmm5[7],xmm9[7]
5199 ; AVX512DQ-NEXT:    vpshufb %xmm12, %xmm5, %xmm5
5200 ; AVX512DQ-NEXT:    vinserti32x4 $2, %xmm4, %zmm5, %zmm4
5201 ; AVX512DQ-NEXT:    vpunpcklbw {{.*#+}} xmm3 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3],xmm8[4],xmm3[4],xmm8[5],xmm3[5],xmm8[6],xmm3[6],xmm8[7],xmm3[7]
5202 ; AVX512DQ-NEXT:    vpshufb %xmm7, %xmm3, %xmm3
5203 ; AVX512DQ-NEXT:    vinserti32x4 $2, %xmm13, %zmm3, %zmm3
5204 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm5 = ymm21[0,0,1,1]
5205 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm20, %zmm5, %zmm5
5206 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm7 = ymm23[0,0,1,1]
5207 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm22, %zmm7, %zmm7
5208 ; AVX512DQ-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [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]
5209 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} zmm7 = zmm5 ^ (zmm8 & (zmm7 ^ zmm5))
5210 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} zmm2 = zmm2 | (zmm7 & zmm28)
5211 ; AVX512DQ-NEXT:    vporq %zmm24, %zmm26, %zmm5
5212 ; AVX512DQ-NEXT:    vpermq {{.*#+}} zmm5 = zmm5[2,2,3,3,6,6,7,7]
5213 ; AVX512DQ-NEXT:    vporq %zmm25, %zmm27, %zmm7
5214 ; AVX512DQ-NEXT:    vpermq {{.*#+}} zmm7 = zmm7[2,2,3,3,6,6,7,7]
5215 ; AVX512DQ-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [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]
5216 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} zmm7 = zmm5 ^ (zmm9 & (zmm7 ^ zmm5))
5217 ; AVX512DQ-NEXT:    vpternlogd {{.*#+}} zmm30 = zmm30 ^ (zmm29 & (zmm30 ^ zmm7))
5218 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm5 = ymm17[2,2,3,3]
5219 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm5, %zmm16, %zmm5
5220 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm7 = ymm19[2,2,3,3]
5221 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm7, %zmm18, %zmm7
5222 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} zmm7 = zmm5 ^ (zmm8 & (zmm7 ^ zmm5))
5223 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
5224 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm6, %zmm0, %zmm0
5225 ; AVX512DQ-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,3]
5226 ; AVX512DQ-NEXT:    vinserti64x4 $1, %ymm10, %zmm1, %zmm1
5227 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm9 & (zmm1 ^ zmm0))
5228 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} zmm14 = zmm14 | (zmm7 & mem)
5229 ; AVX512DQ-NEXT:    vpternlogd {{.*#+}} zmm31 = zmm31 ^ (mem & (zmm31 ^ zmm1))
5230 ; AVX512DQ-NEXT:    vpermq {{.*#+}} zmm0 = zmm4[0,0,1,1,4,4,5,5]
5231 ; AVX512DQ-NEXT:    vpermq {{.*#+}} zmm1 = zmm3[0,0,1,1,4,4,5,5]
5232 ; AVX512DQ-NEXT:    vpternlogq {{.*#+}} zmm1 = zmm1 ^ (mem & (zmm1 ^ zmm0))
5233 ; AVX512DQ-NEXT:    vpmovsxbd {{.*#+}} zmm0 = [0,0,0,0,0,0,1,1,1,1,0,2,2,2,2,0]
5234 ; AVX512DQ-NEXT:    vpermd %zmm15, %zmm0, %zmm0
5235 ; AVX512DQ-NEXT:    vpternlogd {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm1))
5236 ; AVX512DQ-NEXT:    vmovdqa64 %zmm14, 64(%r9)
5237 ; AVX512DQ-NEXT:    vmovdqa64 %zmm0, (%r9)
5238 ; AVX512DQ-NEXT:    vmovdqa64 %zmm31, 128(%r9)
5239 ; AVX512DQ-NEXT:    vmovdqa64 %zmm30, 256(%r9)
5240 ; AVX512DQ-NEXT:    vmovdqa64 %zmm2, 192(%r9)
5241 ; AVX512DQ-NEXT:    vzeroupper
5242 ; AVX512DQ-NEXT:    retq
5244 ; AVX512DQ-FCP-LABEL: store_i8_stride5_vf64:
5245 ; AVX512DQ-FCP:       # %bb.0:
5246 ; AVX512DQ-FCP-NEXT:    vmovdqa 32(%rsi), %ymm0
5247 ; AVX512DQ-FCP-NEXT:    vmovdqa {{.*#+}} ymm14 = [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]
5248 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm14, %ymm0, %ymm1
5249 ; AVX512DQ-FCP-NEXT:    vmovdqa 32(%rdi), %ymm2
5250 ; AVX512DQ-FCP-NEXT:    vmovdqa {{.*#+}} ymm9 = [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]
5251 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm9, %ymm2, %ymm3
5252 ; AVX512DQ-FCP-NEXT:    vporq %ymm1, %ymm3, %ymm17
5253 ; AVX512DQ-FCP-NEXT:    vmovdqa 32(%rdi), %xmm3
5254 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm1 = xmm3[8],zero,xmm3[u,7],zero,xmm3[9],zero,xmm3[u],zero,xmm3[u,10],zero,xmm3[12],zero,xmm3[u,11]
5255 ; AVX512DQ-FCP-NEXT:    vmovdqa 32(%rsi), %xmm5
5256 ; AVX512DQ-FCP-NEXT:    vmovdqa {{.*#+}} xmm6 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
5257 ; AVX512DQ-FCP-NEXT:    vpshufb %xmm6, %xmm5, %xmm4
5258 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %xmm6, %xmm28
5259 ; AVX512DQ-FCP-NEXT:    vporq %xmm1, %xmm4, %xmm18
5260 ; AVX512DQ-FCP-NEXT:    vmovdqa 32(%rcx), %ymm1
5261 ; AVX512DQ-FCP-NEXT:    vmovdqa {{.*#+}} ymm10 = [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]
5262 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm10, %ymm1, %ymm4
5263 ; AVX512DQ-FCP-NEXT:    vmovdqa 32(%rdx), %ymm11
5264 ; AVX512DQ-FCP-NEXT:    vmovdqa {{.*#+}} ymm12 = [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]
5265 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm12, %ymm11, %ymm6
5266 ; AVX512DQ-FCP-NEXT:    vporq %ymm4, %ymm6, %ymm19
5267 ; AVX512DQ-FCP-NEXT:    vmovdqa 32(%rcx), %xmm6
5268 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm4 = zero,xmm6[6],zero,xmm6[8,u],zero,xmm6[7],zero,xmm6[9],zero,xmm6[11,u],zero,xmm6[10],zero,xmm6[12]
5269 ; AVX512DQ-FCP-NEXT:    vmovdqa 32(%rdx), %xmm7
5270 ; AVX512DQ-FCP-NEXT:    vmovdqa {{.*#+}} xmm13 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
5271 ; AVX512DQ-FCP-NEXT:    vpshufb %xmm13, %xmm7, %xmm8
5272 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %xmm13, %xmm29
5273 ; AVX512DQ-FCP-NEXT:    vporq %xmm4, %xmm8, %xmm20
5274 ; AVX512DQ-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]
5275 ; AVX512DQ-FCP-NEXT:    # ymm8 = mem[0,1,0,1]
5276 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm8, %ymm2, %ymm4
5277 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %ymm8, %ymm31
5278 ; AVX512DQ-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm13 = [128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,128]
5279 ; AVX512DQ-FCP-NEXT:    # ymm13 = mem[0,1,0,1]
5280 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm13, %ymm2, %ymm2
5281 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm4, %zmm2, %zmm21
5282 ; AVX512DQ-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30,27,0,128,26,128,28,0,128,0,128,29,128,31,0,128,30]
5283 ; AVX512DQ-FCP-NEXT:    # ymm2 = mem[0,1,0,1]
5284 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm2, %ymm0, %ymm8
5285 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %ymm2, %ymm30
5286 ; AVX512DQ-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0,19,128,21,0,128,20,128,22,128,24,0,128,23,128,25,0]
5287 ; AVX512DQ-FCP-NEXT:    # ymm2 = mem[0,1,0,1]
5288 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm2, %ymm0, %ymm0
5289 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm0, %zmm22
5290 ; AVX512DQ-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]
5291 ; AVX512DQ-FCP-NEXT:    # ymm4 = mem[0,1,0,1]
5292 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm4, %ymm11, %ymm8
5293 ; AVX512DQ-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [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]
5294 ; AVX512DQ-FCP-NEXT:    # ymm0 = mem[0,1,0,1]
5295 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm0, %ymm1, %ymm15
5296 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm8, %zmm15, %zmm24
5297 ; AVX512DQ-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0,25,128,27,0,128,26,128,28,128,30,0,128,29,128,31,0]
5298 ; AVX512DQ-FCP-NEXT:    # ymm8 = mem[0,1,0,1]
5299 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm8, %ymm1, %ymm1
5300 ; AVX512DQ-FCP-NEXT:    vbroadcasti128 {{.*#+}} ymm15 = [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]
5301 ; AVX512DQ-FCP-NEXT:    # ymm15 = mem[0,1,0,1]
5302 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm15, %ymm11, %ymm11
5303 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm1, %zmm11, %zmm26
5304 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rcx), %ymm1
5305 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm10, %ymm1, %ymm10
5306 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdx), %ymm11
5307 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm12, %ymm11, %ymm12
5308 ; AVX512DQ-FCP-NEXT:    vporq %ymm10, %ymm12, %ymm23
5309 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm0, %ymm1, %ymm0
5310 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm15, %ymm11, %ymm10
5311 ; AVX512DQ-FCP-NEXT:    vporq %ymm0, %ymm10, %ymm25
5312 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rsi), %ymm10
5313 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm14, %ymm10, %ymm0
5314 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %ymm12
5315 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm9, %ymm12, %ymm9
5316 ; AVX512DQ-FCP-NEXT:    vporq %ymm0, %ymm9, %ymm27
5317 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm13, %ymm12, %ymm0
5318 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm2, %ymm10, %ymm2
5319 ; AVX512DQ-FCP-NEXT:    vporq %ymm0, %ymm2, %ymm16
5320 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdi), %xmm9
5321 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = xmm9[8],zero,xmm9[u,7],zero,xmm9[9],zero,xmm9[u],zero,xmm9[u,10],zero,xmm9[12],zero,xmm9[u,11]
5322 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rsi), %xmm14
5323 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %xmm28, %xmm2
5324 ; AVX512DQ-FCP-NEXT:    vpshufb %xmm2, %xmm14, %xmm2
5325 ; AVX512DQ-FCP-NEXT:    vporq %xmm0, %xmm2, %xmm28
5326 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rcx), %xmm13
5327 ; AVX512DQ-FCP-NEXT:    vpshufb {{.*#+}} xmm0 = zero,xmm13[6],zero,xmm13[8,u],zero,xmm13[7],zero,xmm13[9],zero,xmm13[11,u],zero,xmm13[10],zero,xmm13[12]
5328 ; AVX512DQ-FCP-NEXT:    vmovdqa (%rdx), %xmm15
5329 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %xmm29, %xmm2
5330 ; AVX512DQ-FCP-NEXT:    vpshufb %xmm2, %xmm15, %xmm2
5331 ; AVX512DQ-FCP-NEXT:    vporq %xmm0, %xmm2, %xmm29
5332 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm4, %ymm11, %ymm0
5333 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm8, %ymm1, %ymm1
5334 ; AVX512DQ-FCP-NEXT:    vpor %ymm0, %ymm1, %ymm0
5335 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %ymm31, %ymm1
5336 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm1, %ymm12, %ymm1
5337 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %ymm30, %ymm2
5338 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm2, %ymm10, %ymm2
5339 ; AVX512DQ-FCP-NEXT:    vmovdqa 32(%r8), %ymm4
5340 ; AVX512DQ-FCP-NEXT:    vpor %ymm1, %ymm2, %ymm1
5341 ; AVX512DQ-FCP-NEXT:    vmovdqa {{.*#+}} ymm8 = [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]
5342 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm8, %ymm4, %ymm2
5343 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm10 = [1,1,2,2,2,2,2,2]
5344 ; AVX512DQ-FCP-NEXT:    vpermd %ymm4, %ymm10, %ymm10
5345 ; AVX512DQ-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm11 = [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,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]
5346 ; AVX512DQ-FCP-NEXT:    vpandn %ymm10, %ymm11, %ymm10
5347 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm2, %zmm10, %zmm2
5348 ; AVX512DQ-FCP-NEXT:    vmovdqa (%r8), %ymm10
5349 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm12 = [4,6,5,5,5,5,4,6,30,30,30,30,31,31,31,31]
5350 ; AVX512DQ-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm30 = [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,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]
5351 ; AVX512DQ-FCP-NEXT:    vpermd %ymm10, %ymm12, %ymm31
5352 ; AVX512DQ-FCP-NEXT:    vpandnq %ymm31, %ymm30, %ymm31
5353 ; AVX512DQ-FCP-NEXT:    vpshufb %ymm8, %ymm10, %ymm8
5354 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm31, %zmm8, %zmm8
5355 ; AVX512DQ-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm9 = xmm9[0],xmm14[0],xmm9[1],xmm14[1],xmm9[2],xmm14[2],xmm9[3],xmm14[3],xmm9[4],xmm14[4],xmm9[5],xmm14[5],xmm9[6],xmm14[6],xmm9[7],xmm14[7]
5356 ; AVX512DQ-FCP-NEXT:    vmovdqa {{.*#+}} xmm14 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
5357 ; AVX512DQ-FCP-NEXT:    vpshufb %xmm14, %xmm9, %xmm9
5358 ; AVX512DQ-FCP-NEXT:    vinserti32x4 $2, %xmm28, %zmm9, %zmm9
5359 ; AVX512DQ-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm13 = xmm13[0],xmm15[0],xmm13[1],xmm15[1],xmm13[2],xmm15[2],xmm13[3],xmm15[3],xmm13[4],xmm15[4],xmm13[5],xmm15[5],xmm13[6],xmm15[6],xmm13[7],xmm15[7]
5360 ; AVX512DQ-FCP-NEXT:    vmovdqa {{.*#+}} xmm15 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
5361 ; AVX512DQ-FCP-NEXT:    vpshufb %xmm15, %xmm13, %xmm13
5362 ; AVX512DQ-FCP-NEXT:    vinserti32x4 $2, %xmm29, %zmm13, %zmm13
5363 ; AVX512DQ-FCP-NEXT:    vmovdqa64 (%r8), %zmm28
5364 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm10, %zmm28, %zmm10
5365 ; AVX512DQ-FCP-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]
5366 ; AVX512DQ-FCP-NEXT:    vpshufb %xmm15, %xmm6, %xmm6
5367 ; AVX512DQ-FCP-NEXT:    vpmovsxbq {{.*#+}} zmm7 = [2,2,3,3,8,8,9,9]
5368 ; AVX512DQ-FCP-NEXT:    vpermt2q %zmm6, %zmm7, %zmm0
5369 ; AVX512DQ-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm3 = 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]
5370 ; AVX512DQ-FCP-NEXT:    vpshufb %xmm14, %xmm3, %xmm3
5371 ; AVX512DQ-FCP-NEXT:    vpermt2q %zmm3, %zmm7, %zmm1
5372 ; AVX512DQ-FCP-NEXT:    vporq %zmm21, %zmm22, %zmm3
5373 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} zmm3 = zmm3[2,2,3,3,6,6,7,7]
5374 ; AVX512DQ-FCP-NEXT:    vporq %zmm24, %zmm26, %zmm5
5375 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} zmm5 = zmm5[2,2,3,3,6,6,7,7]
5376 ; AVX512DQ-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm6 = [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]
5377 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} zmm5 = zmm3 ^ (zmm6 & (zmm5 ^ zmm3))
5378 ; AVX512DQ-FCP-NEXT:    vpermt2d %zmm28, %zmm12, %zmm4
5379 ; AVX512DQ-FCP-NEXT:    vpternlogd {{.*#+}} zmm4 = zmm4 ^ (zmm30 & (zmm4 ^ zmm5))
5380 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm4, 256(%r9)
5381 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm3 = ymm18[0,0,1,1]
5382 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm17, %zmm3, %zmm3
5383 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm20[0,0,1,1]
5384 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm19, %zmm4, %zmm4
5385 ; AVX512DQ-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [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]
5386 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} zmm4 = zmm3 ^ (zmm5 & (zmm4 ^ zmm3))
5387 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} zmm2 = zmm2 | (zmm4 & zmm11)
5388 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm3 = ymm25[2,2,3,3]
5389 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm3, %zmm23, %zmm3
5390 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} ymm4 = ymm16[2,2,3,3]
5391 ; AVX512DQ-FCP-NEXT:    vinserti64x4 $1, %ymm4, %zmm27, %zmm4
5392 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} zmm4 = zmm3 ^ (zmm5 & (zmm4 ^ zmm3))
5393 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} zmm1 = zmm0 ^ (zmm6 & (zmm1 ^ zmm0))
5394 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} zmm8 = zmm8 | (zmm4 & mem)
5395 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} zmm0 = zmm9[0,0,1,1,4,4,5,5]
5396 ; AVX512DQ-FCP-NEXT:    vpermq {{.*#+}} zmm3 = zmm13[0,0,1,1,4,4,5,5]
5397 ; AVX512DQ-FCP-NEXT:    vpternlogq {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm0))
5398 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm0 = [0,0,0,0,0,0,1,1,9,9,0,10,10,10,10,0]
5399 ; AVX512DQ-FCP-NEXT:    vpermd %zmm10, %zmm0, %zmm0
5400 ; AVX512DQ-FCP-NEXT:    vpternlogd {{.*#+}} zmm0 = zmm0 ^ (mem & (zmm0 ^ zmm3))
5401 ; AVX512DQ-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm3 = [6,6,6,0,7,7,7,7,0,8,8,8,8,0,9,9]
5402 ; AVX512DQ-FCP-NEXT:    vpermd %zmm28, %zmm3, %zmm3
5403 ; AVX512DQ-FCP-NEXT:    vpternlogd {{.*#+}} zmm3 = zmm3 ^ (mem & (zmm3 ^ zmm1))
5404 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm3, 128(%r9)
5405 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm8, 64(%r9)
5406 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm0, (%r9)
5407 ; AVX512DQ-FCP-NEXT:    vmovdqa64 %zmm2, 192(%r9)
5408 ; AVX512DQ-FCP-NEXT:    vzeroupper
5409 ; AVX512DQ-FCP-NEXT:    retq
5411 ; AVX512BW-LABEL: store_i8_stride5_vf64:
5412 ; AVX512BW:       # %bb.0:
5413 ; AVX512BW-NEXT:    vmovdqa64 (%r8), %zmm2
5414 ; AVX512BW-NEXT:    vmovdqa (%rcx), %ymm0
5415 ; AVX512BW-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]
5416 ; AVX512BW-NEXT:    vpshufb %ymm8, %ymm0, %ymm3
5417 ; AVX512BW-NEXT:    vmovdqa (%rdx), %ymm1
5418 ; AVX512BW-NEXT:    vpshufhw {{.*#+}} ymm4 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
5419 ; AVX512BW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]
5420 ; AVX512BW-NEXT:    movl $693250386, %eax # imm = 0x29522952
5421 ; AVX512BW-NEXT:    kmovd %eax, %k1
5422 ; AVX512BW-NEXT:    vmovdqu8 %ymm4, %ymm3 {%k1}
5423 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
5424 ; AVX512BW-NEXT:    vmovdqa 32(%rdx), %xmm6
5425 ; AVX512BW-NEXT:    vmovdqa 32(%rcx), %xmm12
5426 ; AVX512BW-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]
5427 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm7 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
5428 ; AVX512BW-NEXT:    vpshufb %xmm7, %xmm4, %xmm4
5429 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
5430 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm4, %zmm3, %zmm10
5431 ; AVX512BW-NEXT:    vmovdqa (%rsi), %ymm4
5432 ; AVX512BW-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]
5433 ; AVX512BW-NEXT:    vpshufb %ymm15, %ymm4, %ymm3
5434 ; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm5
5435 ; AVX512BW-NEXT:    vpshufhw {{.*#+}} ymm9 = ymm5[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
5436 ; AVX512BW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm9[2,2,3,3,6,6,7,7]
5437 ; AVX512BW-NEXT:    movl $1251232404, %eax # imm = 0x4A944A94
5438 ; AVX512BW-NEXT:    kmovd %eax, %k5
5439 ; AVX512BW-NEXT:    vmovdqu8 %ymm9, %ymm3 {%k5}
5440 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
5441 ; AVX512BW-NEXT:    vmovdqa 32(%rsi), %xmm13
5442 ; AVX512BW-NEXT:    vmovdqa 32(%rdi), %xmm14
5443 ; AVX512BW-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]
5444 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm9 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
5445 ; AVX512BW-NEXT:    vpshufb %xmm9, %xmm11, %xmm11
5446 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[0,0,1,1]
5447 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm11, %zmm3, %zmm3
5448 ; AVX512BW-NEXT:    movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C631
5449 ; AVX512BW-NEXT:    kmovq %rax, %k4
5450 ; AVX512BW-NEXT:    vmovdqu8 %zmm10, %zmm3 {%k4}
5451 ; AVX512BW-NEXT:    vmovdqa64 32(%r8), %ymm16
5452 ; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm10 = [6,6,6,6,7,7,7,7,16,16,16,16,16,16,17,17]
5453 ; AVX512BW-NEXT:    vpermi2d %zmm16, %zmm2, %zmm10
5454 ; AVX512BW-NEXT:    movabsq $2380225041768974402, %rax # imm = 0x2108421084210842
5455 ; AVX512BW-NEXT:    kmovq %rax, %k2
5456 ; AVX512BW-NEXT:    vmovdqu8 %zmm10, %zmm3 {%k2}
5457 ; AVX512BW-NEXT:    vmovdqa64 32(%rdx), %ymm23
5458 ; AVX512BW-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]
5459 ; AVX512BW-NEXT:    vpshufb %ymm10, %ymm23, %ymm17
5460 ; AVX512BW-NEXT:    vmovdqa64 32(%rcx), %ymm24
5461 ; AVX512BW-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]
5462 ; AVX512BW-NEXT:    vpshufb %ymm11, %ymm24, %ymm18
5463 ; AVX512BW-NEXT:    vporq %ymm17, %ymm18, %ymm17
5464 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm20 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]
5465 ; AVX512BW-NEXT:    vpshufb %xmm20, %xmm12, %xmm12
5466 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm22 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
5467 ; AVX512BW-NEXT:    vpshufb %xmm22, %xmm6, %xmm6
5468 ; AVX512BW-NEXT:    vpor %xmm6, %xmm12, %xmm6
5469 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
5470 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm17, %zmm6, %zmm6
5471 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm19 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]
5472 ; AVX512BW-NEXT:    vpshufb %xmm19, %xmm14, %xmm12
5473 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm21 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
5474 ; AVX512BW-NEXT:    vpshufb %xmm21, %xmm13, %xmm13
5475 ; AVX512BW-NEXT:    vpor %xmm12, %xmm13, %xmm12
5476 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm14 = ymm12[0,0,1,1]
5477 ; AVX512BW-NEXT:    vmovdqa64 32(%rdi), %ymm25
5478 ; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} ymm12 = [3,3,3,0,4,4,4,4]
5479 ; AVX512BW-NEXT:    vpermd %ymm25, %ymm12, %ymm17
5480 ; AVX512BW-NEXT:    vmovdqa64 32(%rsi), %ymm26
5481 ; AVX512BW-NEXT:    vpbroadcastq {{.*#+}} ymm13 = [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]
5482 ; AVX512BW-NEXT:    movl $138547332, %eax # imm = 0x8421084
5483 ; AVX512BW-NEXT:    kmovd %eax, %k3
5484 ; AVX512BW-NEXT:    vpshufb %ymm13, %ymm26, %ymm17 {%k3}
5485 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm17, %zmm14, %zmm14
5486 ; AVX512BW-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
5487 ; AVX512BW-NEXT:    kmovq %rax, %k2
5488 ; AVX512BW-NEXT:    vmovdqu8 %zmm14, %zmm6 {%k2}
5489 ; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} ymm14 = [3,3,3,3,0,4,4,4]
5490 ; AVX512BW-NEXT:    vpermd %ymm16, %ymm14, %ymm17
5491 ; AVX512BW-NEXT:    vpshufd {{.*#+}} xmm18 = mem[1,1,2,2]
5492 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm18 = ymm18[0,1,1,1]
5493 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm17, %zmm18, %zmm17
5494 ; AVX512BW-NEXT:    movabsq $4760450083537948804, %rax # imm = 0x4210842108421084
5495 ; AVX512BW-NEXT:    kmovq %rax, %k6
5496 ; AVX512BW-NEXT:    vmovdqu8 %zmm17, %zmm6 {%k6}
5497 ; AVX512BW-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]
5498 ; AVX512BW-NEXT:    # ymm17 = mem[0,1,2,3,0,1,2,3]
5499 ; AVX512BW-NEXT:    vpshufb %ymm17, %ymm26, %ymm27
5500 ; AVX512BW-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]
5501 ; AVX512BW-NEXT:    vpshufb %ymm18, %ymm25, %ymm28
5502 ; AVX512BW-NEXT:    vporq %ymm27, %ymm28, %ymm27
5503 ; AVX512BW-NEXT:    vpshufb %ymm15, %ymm26, %ymm15
5504 ; AVX512BW-NEXT:    vpshufhw {{.*#+}} ymm25 = ymm25[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
5505 ; AVX512BW-NEXT:    vpshufd {{.*#+}} ymm25 = ymm25[2,2,3,3,6,6,7,7]
5506 ; AVX512BW-NEXT:    vmovdqu8 %ymm25, %ymm15 {%k5}
5507 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm15, %zmm27, %zmm15
5508 ; AVX512BW-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]
5509 ; AVX512BW-NEXT:    vpshufb %ymm25, %ymm23, %ymm26
5510 ; AVX512BW-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]
5511 ; AVX512BW-NEXT:    # ymm27 = mem[0,1,2,3,0,1,2,3]
5512 ; AVX512BW-NEXT:    vpshufb %ymm27, %ymm24, %ymm28
5513 ; AVX512BW-NEXT:    vporq %ymm26, %ymm28, %ymm26
5514 ; AVX512BW-NEXT:    vpshufb %ymm8, %ymm24, %ymm8
5515 ; AVX512BW-NEXT:    vpshufhw {{.*#+}} ymm23 = ymm23[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
5516 ; AVX512BW-NEXT:    vpshufd {{.*#+}} ymm23 = ymm23[2,2,3,3,6,6,7,7]
5517 ; AVX512BW-NEXT:    vmovdqu8 %ymm23, %ymm8 {%k1}
5518 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm8, %zmm26, %zmm8
5519 ; AVX512BW-NEXT:    vpermq {{.*#+}} zmm15 = zmm15[2,2,3,3,6,6,7,7]
5520 ; AVX512BW-NEXT:    vpermq {{.*#+}} zmm8 = zmm8[2,2,3,3,6,6,7,7]
5521 ; AVX512BW-NEXT:    vmovdqu8 %zmm15, %zmm8 {%k4}
5522 ; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm15 = [4,6,5,5,5,5,4,6,6,6,6,6,7,7,7,7]
5523 ; AVX512BW-NEXT:    vpermd %zmm16, %zmm15, %zmm15
5524 ; AVX512BW-NEXT:    vmovdqa64 (%rdx), %xmm16
5525 ; AVX512BW-NEXT:    movabsq $-8925843906633654008, %rax # imm = 0x8421084210842108
5526 ; AVX512BW-NEXT:    kmovq %rax, %k1
5527 ; AVX512BW-NEXT:    vmovdqu8 %zmm15, %zmm8 {%k1}
5528 ; AVX512BW-NEXT:    vmovdqa (%rcx), %xmm15
5529 ; AVX512BW-NEXT:    vpshufb %xmm20, %xmm15, %xmm20
5530 ; AVX512BW-NEXT:    vpshufb %xmm22, %xmm16, %xmm22
5531 ; AVX512BW-NEXT:    vporq %xmm20, %xmm22, %xmm20
5532 ; AVX512BW-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]
5533 ; AVX512BW-NEXT:    vpshufb %xmm7, %xmm15, %xmm7
5534 ; AVX512BW-NEXT:    vmovdqa (%rsi), %xmm15
5535 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm20, %zmm7, %zmm7
5536 ; AVX512BW-NEXT:    vmovdqa64 (%rdi), %xmm16
5537 ; AVX512BW-NEXT:    vpshufb %xmm19, %xmm16, %xmm19
5538 ; AVX512BW-NEXT:    vpshufb %xmm21, %xmm15, %xmm20
5539 ; AVX512BW-NEXT:    vporq %xmm19, %xmm20, %xmm19
5540 ; AVX512BW-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]
5541 ; AVX512BW-NEXT:    vpshufb %xmm9, %xmm15, %xmm9
5542 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm19, %zmm9, %zmm9
5543 ; AVX512BW-NEXT:    vpermq {{.*#+}} zmm7 = zmm7[0,0,1,1,4,4,5,5]
5544 ; AVX512BW-NEXT:    vpermq {{.*#+}} zmm9 = zmm9[0,0,1,1,4,4,5,5]
5545 ; AVX512BW-NEXT:    movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C
5546 ; AVX512BW-NEXT:    kmovq %rax, %k1
5547 ; AVX512BW-NEXT:    vmovdqu8 %zmm7, %zmm9 {%k1}
5548 ; AVX512BW-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
5549 ; AVX512BW-NEXT:    vpermd %zmm2, %zmm7, %zmm2
5550 ; AVX512BW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
5551 ; AVX512BW-NEXT:    kmovq %rax, %k1
5552 ; AVX512BW-NEXT:    vmovdqu8 %zmm2, %zmm9 {%k1}
5553 ; AVX512BW-NEXT:    vpshufb %ymm10, %ymm1, %ymm2
5554 ; AVX512BW-NEXT:    vpshufb %ymm11, %ymm0, %ymm7
5555 ; AVX512BW-NEXT:    vpor %ymm2, %ymm7, %ymm2
5556 ; AVX512BW-NEXT:    vpshufb %ymm25, %ymm1, %ymm1
5557 ; AVX512BW-NEXT:    vpshufb %ymm27, %ymm0, %ymm0
5558 ; AVX512BW-NEXT:    vpor %ymm1, %ymm0, %ymm0
5559 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
5560 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm0, %zmm2, %zmm0
5561 ; AVX512BW-NEXT:    vpermd %ymm5, %ymm12, %ymm1
5562 ; AVX512BW-NEXT:    vpshufb %ymm13, %ymm4, %ymm1 {%k3}
5563 ; AVX512BW-NEXT:    vpshufb %ymm17, %ymm4, %ymm2
5564 ; AVX512BW-NEXT:    vpshufb %ymm18, %ymm5, %ymm4
5565 ; AVX512BW-NEXT:    vpor %ymm2, %ymm4, %ymm2
5566 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
5567 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm2, %zmm1, %zmm1
5568 ; AVX512BW-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k2}
5569 ; AVX512BW-NEXT:    vmovdqa (%r8), %ymm0
5570 ; AVX512BW-NEXT:    vpermd %ymm0, %ymm14, %ymm2
5571 ; AVX512BW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,2,1,1,4,6,5,5]
5572 ; AVX512BW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,3,2]
5573 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm0, %zmm2, %zmm0
5574 ; AVX512BW-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
5575 ; AVX512BW-NEXT:    kmovq %rax, %k1
5576 ; AVX512BW-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k1}
5577 ; AVX512BW-NEXT:    vmovdqa64 %zmm1, 64(%r9)
5578 ; AVX512BW-NEXT:    vmovdqa64 %zmm9, (%r9)
5579 ; AVX512BW-NEXT:    vmovdqa64 %zmm8, 256(%r9)
5580 ; AVX512BW-NEXT:    vmovdqa64 %zmm6, 192(%r9)
5581 ; AVX512BW-NEXT:    vmovdqa64 %zmm3, 128(%r9)
5582 ; AVX512BW-NEXT:    vzeroupper
5583 ; AVX512BW-NEXT:    retq
5585 ; AVX512BW-FCP-LABEL: store_i8_stride5_vf64:
5586 ; AVX512BW-FCP:       # %bb.0:
5587 ; AVX512BW-FCP-NEXT:    vmovdqa64 (%r8), %zmm0
5588 ; AVX512BW-FCP-NEXT:    vmovdqa64 32(%rdx), %ymm21
5589 ; AVX512BW-FCP-NEXT:    vmovdqa {{.*#+}} ymm6 = [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]
5590 ; AVX512BW-FCP-NEXT:    vpshufb %ymm6, %ymm21, %ymm1
5591 ; AVX512BW-FCP-NEXT:    vmovdqa 32(%rcx), %ymm8
5592 ; AVX512BW-FCP-NEXT:    vmovdqa {{.*#+}} ymm7 = [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]
5593 ; AVX512BW-FCP-NEXT:    vpshufb %ymm7, %ymm8, %ymm2
5594 ; AVX512BW-FCP-NEXT:    vpor %ymm1, %ymm2, %ymm1
5595 ; AVX512BW-FCP-NEXT:    vmovdqa (%rcx), %xmm11
5596 ; AVX512BW-FCP-NEXT:    vmovdqa 32(%rcx), %xmm2
5597 ; AVX512BW-FCP-NEXT:    vmovdqa {{.*#+}} xmm14 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]
5598 ; AVX512BW-FCP-NEXT:    vpshufb %xmm14, %xmm2, %xmm3
5599 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdx), %xmm12
5600 ; AVX512BW-FCP-NEXT:    vmovdqa 32(%rdx), %xmm4
5601 ; AVX512BW-FCP-NEXT:    vmovdqa {{.*#+}} xmm15 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
5602 ; AVX512BW-FCP-NEXT:    vpshufb %xmm15, %xmm4, %xmm5
5603 ; AVX512BW-FCP-NEXT:    vpor %xmm3, %xmm5, %xmm3
5604 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
5605 ; AVX512BW-FCP-NEXT:    vinserti64x4 $1, %ymm1, %zmm3, %zmm1
5606 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdi), %xmm13
5607 ; AVX512BW-FCP-NEXT:    vmovdqa 32(%rdi), %xmm3
5608 ; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} xmm17 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]
5609 ; AVX512BW-FCP-NEXT:    vpshufb %xmm17, %xmm3, %xmm9
5610 ; AVX512BW-FCP-NEXT:    vmovdqa64 (%rsi), %xmm16
5611 ; AVX512BW-FCP-NEXT:    vmovdqa 32(%rsi), %xmm5
5612 ; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} xmm20 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
5613 ; AVX512BW-FCP-NEXT:    vpshufb %xmm20, %xmm5, %xmm10
5614 ; AVX512BW-FCP-NEXT:    vpor %xmm9, %xmm10, %xmm9
5615 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm18 = ymm9[0,0,1,1]
5616 ; AVX512BW-FCP-NEXT:    vmovdqa64 32(%rdi), %ymm19
5617 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm9 = [3,3,3,0,4,4,4,4]
5618 ; AVX512BW-FCP-NEXT:    vpermd %ymm19, %ymm9, %ymm22
5619 ; AVX512BW-FCP-NEXT:    vmovdqa64 32(%rsi), %ymm23
5620 ; AVX512BW-FCP-NEXT:    vpbroadcastq {{.*#+}} ymm10 = [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]
5621 ; AVX512BW-FCP-NEXT:    movl $138547332, %eax # imm = 0x8421084
5622 ; AVX512BW-FCP-NEXT:    kmovd %eax, %k1
5623 ; AVX512BW-FCP-NEXT:    vpshufb %ymm10, %ymm23, %ymm22 {%k1}
5624 ; AVX512BW-FCP-NEXT:    vinserti64x4 $1, %ymm22, %zmm18, %zmm18
5625 ; AVX512BW-FCP-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
5626 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k2
5627 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm18, %zmm1 {%k2}
5628 ; AVX512BW-FCP-NEXT:    vmovdqa64 32(%r8), %ymm22
5629 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm18 = [1,1,2,2,2,2,2,2,27,27,27,27,0,28,28,28]
5630 ; AVX512BW-FCP-NEXT:    vpermi2d %zmm0, %zmm22, %zmm18
5631 ; AVX512BW-FCP-NEXT:    movabsq $4760450083537948804, %rax # imm = 0x4210842108421084
5632 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k3
5633 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm18, %zmm1 {%k3}
5634 ; AVX512BW-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm23 = zmm23[0,1,2,3],mem[4,5,6,7]
5635 ; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm18 = [u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30]
5636 ; AVX512BW-FCP-NEXT:    vpshufb %zmm18, %zmm23, %zmm23
5637 ; AVX512BW-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm24 = zmm19[0,1,2,3],mem[4,5,6,7]
5638 ; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm19 = [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,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]
5639 ; AVX512BW-FCP-NEXT:    vpshufb %zmm19, %zmm24, %zmm24
5640 ; AVX512BW-FCP-NEXT:    vporq %zmm23, %zmm24, %zmm23
5641 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} zmm23 = zmm23[2,2,3,3,6,6,7,7]
5642 ; AVX512BW-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm21 = zmm21[0,1,2,3],mem[4,5,6,7]
5643 ; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm24 = [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,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128]
5644 ; AVX512BW-FCP-NEXT:    vpshufb %zmm24, %zmm21, %zmm21
5645 ; AVX512BW-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm8 = zmm8[0,1,2,3],mem[4,5,6,7]
5646 ; AVX512BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm25 = [u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]
5647 ; AVX512BW-FCP-NEXT:    vpshufb %zmm25, %zmm8, %zmm8
5648 ; AVX512BW-FCP-NEXT:    vporq %zmm21, %zmm8, %zmm8
5649 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} zmm8 = zmm8[2,2,3,3,6,6,7,7]
5650 ; AVX512BW-FCP-NEXT:    movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C631
5651 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k3
5652 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm23, %zmm8 {%k3}
5653 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm21 = [4,6,5,5,5,5,4,6,30,30,30,30,31,31,31,31]
5654 ; AVX512BW-FCP-NEXT:    vpermi2d %zmm0, %zmm22, %zmm21
5655 ; AVX512BW-FCP-NEXT:    movabsq $-8925843906633654008, %rax # imm = 0x8421084210842108
5656 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k4
5657 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm21, %zmm8 {%k4}
5658 ; AVX512BW-FCP-NEXT:    vpshufb %xmm14, %xmm11, %xmm14
5659 ; AVX512BW-FCP-NEXT:    vpshufb %xmm15, %xmm12, %xmm15
5660 ; AVX512BW-FCP-NEXT:    vpor %xmm14, %xmm15, %xmm14
5661 ; AVX512BW-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3],xmm11[4],xmm12[4],xmm11[5],xmm12[5],xmm11[6],xmm12[6],xmm11[7],xmm12[7]
5662 ; AVX512BW-FCP-NEXT:    vmovdqa {{.*#+}} xmm12 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
5663 ; AVX512BW-FCP-NEXT:    vpshufb %xmm12, %xmm11, %xmm11
5664 ; AVX512BW-FCP-NEXT:    vinserti32x4 $2, %xmm14, %zmm11, %zmm11
5665 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} zmm14 = zmm11[0,0,1,1,4,4,5,5]
5666 ; AVX512BW-FCP-NEXT:    vpshufb %xmm17, %xmm13, %xmm11
5667 ; AVX512BW-FCP-NEXT:    vpshufb %xmm20, %xmm16, %xmm15
5668 ; AVX512BW-FCP-NEXT:    vpor %xmm11, %xmm15, %xmm11
5669 ; AVX512BW-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm13 = xmm13[0],xmm16[0],xmm13[1],xmm16[1],xmm13[2],xmm16[2],xmm13[3],xmm16[3],xmm13[4],xmm16[4],xmm13[5],xmm16[5],xmm13[6],xmm16[6],xmm13[7],xmm16[7]
5670 ; AVX512BW-FCP-NEXT:    vmovdqa {{.*#+}} xmm15 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
5671 ; AVX512BW-FCP-NEXT:    vpshufb %xmm15, %xmm13, %xmm13
5672 ; AVX512BW-FCP-NEXT:    vinserti32x4 $2, %xmm11, %zmm13, %zmm11
5673 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} zmm11 = zmm11[0,0,1,1,4,4,5,5]
5674 ; AVX512BW-FCP-NEXT:    movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C
5675 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k4
5676 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm14, %zmm11 {%k4}
5677 ; AVX512BW-FCP-NEXT:    vbroadcasti64x4 {{.*#+}} zmm13 = mem[0,1,2,3,0,1,2,3]
5678 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm14 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]
5679 ; AVX512BW-FCP-NEXT:    vpermd %zmm13, %zmm14, %zmm14
5680 ; AVX512BW-FCP-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
5681 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k4
5682 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm14, %zmm11 {%k4}
5683 ; AVX512BW-FCP-NEXT:    vmovdqa (%rdx), %ymm14
5684 ; AVX512BW-FCP-NEXT:    vpshufb %ymm6, %ymm14, %ymm6
5685 ; AVX512BW-FCP-NEXT:    vmovdqa64 (%rcx), %ymm16
5686 ; AVX512BW-FCP-NEXT:    vpshufb %ymm7, %ymm16, %ymm7
5687 ; AVX512BW-FCP-NEXT:    vpor %ymm6, %ymm7, %ymm6
5688 ; AVX512BW-FCP-NEXT:    vpshufb %ymm24, %ymm14, %ymm7
5689 ; AVX512BW-FCP-NEXT:    vpshufb %ymm25, %ymm16, %ymm17
5690 ; AVX512BW-FCP-NEXT:    vporq %ymm7, %ymm17, %ymm7
5691 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
5692 ; AVX512BW-FCP-NEXT:    vinserti64x4 $1, %ymm7, %zmm6, %zmm6
5693 ; AVX512BW-FCP-NEXT:    vmovdqa (%rsi), %ymm7
5694 ; AVX512BW-FCP-NEXT:    vpshufb %ymm18, %ymm7, %ymm17
5695 ; AVX512BW-FCP-NEXT:    vmovdqa64 (%rdi), %ymm18
5696 ; AVX512BW-FCP-NEXT:    vpshufb %ymm19, %ymm18, %ymm19
5697 ; AVX512BW-FCP-NEXT:    vporq %ymm17, %ymm19, %ymm17
5698 ; AVX512BW-FCP-NEXT:    vpermq {{.*#+}} ymm17 = ymm17[2,2,3,3]
5699 ; AVX512BW-FCP-NEXT:    vpermd %ymm18, %ymm9, %ymm9
5700 ; AVX512BW-FCP-NEXT:    vpshufb %ymm10, %ymm7, %ymm9 {%k1}
5701 ; AVX512BW-FCP-NEXT:    vinserti64x4 $1, %ymm17, %zmm9, %zmm9
5702 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm9 {%k2}
5703 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [3,3,3,3,0,4,4,4,12,14,13,13,13,13,12,14]
5704 ; AVX512BW-FCP-NEXT:    vpermd %zmm13, %zmm6, %zmm6
5705 ; AVX512BW-FCP-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
5706 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k1
5707 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm9 {%k1}
5708 ; AVX512BW-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]
5709 ; AVX512BW-FCP-NEXT:    vpshufb %xmm12, %xmm2, %xmm2
5710 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm4 = ymm16[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm16[27],zero,zero,ymm16[26],zero,ymm16[28],zero,ymm16[30],zero,zero,ymm16[29],zero,ymm16[31],zero
5711 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm6 = ymm14[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm14[27],zero,zero,ymm14[26],zero,ymm14[28],zero,ymm14[30],zero,zero,ymm14[29],zero,ymm14[31],zero,zero
5712 ; AVX512BW-FCP-NEXT:    vpor %ymm4, %ymm6, %ymm4
5713 ; AVX512BW-FCP-NEXT:    vpmovsxbq {{.*#+}} zmm6 = [2,2,3,3,8,8,9,9]
5714 ; AVX512BW-FCP-NEXT:    vpermt2q %zmm2, %zmm6, %zmm4
5715 ; AVX512BW-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm2 = 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]
5716 ; AVX512BW-FCP-NEXT:    vpshufb %xmm15, %xmm2, %xmm2
5717 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm3 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm7[26],zero,ymm7[28],zero,zero,zero,zero,ymm7[29],zero,ymm7[31],zero,zero,ymm7[30]
5718 ; AVX512BW-FCP-NEXT:    vpshufb {{.*#+}} ymm5 = ymm18[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm18[26],zero,ymm18[28],zero,zero,ymm18[27],zero,ymm18[29],zero,ymm18[31],zero,zero,ymm18[30],zero
5719 ; AVX512BW-FCP-NEXT:    vpor %ymm3, %ymm5, %ymm3
5720 ; AVX512BW-FCP-NEXT:    vpermt2q %zmm2, %zmm6, %zmm3
5721 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm4, %zmm3 {%k3}
5722 ; AVX512BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [6,6,6,6,7,7,7,7,8,8,8,8,8,8,9,9]
5723 ; AVX512BW-FCP-NEXT:    vpermd %zmm0, %zmm2, %zmm0
5724 ; AVX512BW-FCP-NEXT:    movabsq $2380225041768974402, %rax # imm = 0x2108421084210842
5725 ; AVX512BW-FCP-NEXT:    kmovq %rax, %k1
5726 ; AVX512BW-FCP-NEXT:    vmovdqu8 %zmm0, %zmm3 {%k1}
5727 ; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm3, 128(%r9)
5728 ; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm9, 64(%r9)
5729 ; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm11, (%r9)
5730 ; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm8, 256(%r9)
5731 ; AVX512BW-FCP-NEXT:    vmovdqa64 %zmm1, 192(%r9)
5732 ; AVX512BW-FCP-NEXT:    vzeroupper
5733 ; AVX512BW-FCP-NEXT:    retq
5735 ; AVX512DQ-BW-LABEL: store_i8_stride5_vf64:
5736 ; AVX512DQ-BW:       # %bb.0:
5737 ; AVX512DQ-BW-NEXT:    vmovdqa64 (%r8), %zmm2
5738 ; AVX512DQ-BW-NEXT:    vmovdqa (%rcx), %ymm0
5739 ; AVX512DQ-BW-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]
5740 ; AVX512DQ-BW-NEXT:    vpshufb %ymm8, %ymm0, %ymm3
5741 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdx), %ymm1
5742 ; AVX512DQ-BW-NEXT:    vpshufhw {{.*#+}} ymm4 = ymm1[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
5743 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,2,3,3,6,6,7,7]
5744 ; AVX512DQ-BW-NEXT:    movl $693250386, %eax # imm = 0x29522952
5745 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k1
5746 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm4, %ymm3 {%k1}
5747 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
5748 ; AVX512DQ-BW-NEXT:    vmovdqa 32(%rdx), %xmm6
5749 ; AVX512DQ-BW-NEXT:    vmovdqa 32(%rcx), %xmm12
5750 ; AVX512DQ-BW-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]
5751 ; AVX512DQ-BW-NEXT:    vmovdqa {{.*#+}} xmm7 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
5752 ; AVX512DQ-BW-NEXT:    vpshufb %xmm7, %xmm4, %xmm4
5753 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,0,1,1]
5754 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm4, %zmm3, %zmm10
5755 ; AVX512DQ-BW-NEXT:    vmovdqa (%rsi), %ymm4
5756 ; AVX512DQ-BW-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]
5757 ; AVX512DQ-BW-NEXT:    vpshufb %ymm15, %ymm4, %ymm3
5758 ; AVX512DQ-BW-NEXT:    vmovdqa (%rdi), %ymm5
5759 ; AVX512DQ-BW-NEXT:    vpshufhw {{.*#+}} ymm9 = ymm5[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
5760 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm9[2,2,3,3,6,6,7,7]
5761 ; AVX512DQ-BW-NEXT:    movl $1251232404, %eax # imm = 0x4A944A94
5762 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k5
5763 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm9, %ymm3 {%k5}
5764 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,3]
5765 ; AVX512DQ-BW-NEXT:    vmovdqa 32(%rsi), %xmm13
5766 ; AVX512DQ-BW-NEXT:    vmovdqa 32(%rdi), %xmm14
5767 ; AVX512DQ-BW-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]
5768 ; AVX512DQ-BW-NEXT:    vmovdqa {{.*#+}} xmm9 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
5769 ; AVX512DQ-BW-NEXT:    vpshufb %xmm9, %xmm11, %xmm11
5770 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[0,0,1,1]
5771 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm11, %zmm3, %zmm3
5772 ; AVX512DQ-BW-NEXT:    movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C631
5773 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k4
5774 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm10, %zmm3 {%k4}
5775 ; AVX512DQ-BW-NEXT:    vmovdqa64 32(%r8), %ymm16
5776 ; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm10 = [6,6,6,6,7,7,7,7,16,16,16,16,16,16,17,17]
5777 ; AVX512DQ-BW-NEXT:    vpermi2d %zmm16, %zmm2, %zmm10
5778 ; AVX512DQ-BW-NEXT:    movabsq $2380225041768974402, %rax # imm = 0x2108421084210842
5779 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k2
5780 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm10, %zmm3 {%k2}
5781 ; AVX512DQ-BW-NEXT:    vmovdqa64 32(%rdx), %ymm23
5782 ; AVX512DQ-BW-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]
5783 ; AVX512DQ-BW-NEXT:    vpshufb %ymm10, %ymm23, %ymm17
5784 ; AVX512DQ-BW-NEXT:    vmovdqa64 32(%rcx), %ymm24
5785 ; AVX512DQ-BW-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]
5786 ; AVX512DQ-BW-NEXT:    vpshufb %ymm11, %ymm24, %ymm18
5787 ; AVX512DQ-BW-NEXT:    vporq %ymm17, %ymm18, %ymm17
5788 ; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} xmm20 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]
5789 ; AVX512DQ-BW-NEXT:    vpshufb %xmm20, %xmm12, %xmm12
5790 ; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} xmm22 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
5791 ; AVX512DQ-BW-NEXT:    vpshufb %xmm22, %xmm6, %xmm6
5792 ; AVX512DQ-BW-NEXT:    vpor %xmm6, %xmm12, %xmm6
5793 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,0,1,1]
5794 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm17, %zmm6, %zmm6
5795 ; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} xmm19 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]
5796 ; AVX512DQ-BW-NEXT:    vpshufb %xmm19, %xmm14, %xmm12
5797 ; AVX512DQ-BW-NEXT:    vmovdqa64 {{.*#+}} xmm21 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
5798 ; AVX512DQ-BW-NEXT:    vpshufb %xmm21, %xmm13, %xmm13
5799 ; AVX512DQ-BW-NEXT:    vpor %xmm12, %xmm13, %xmm12
5800 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm14 = ymm12[0,0,1,1]
5801 ; AVX512DQ-BW-NEXT:    vmovdqa64 32(%rdi), %ymm25
5802 ; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} ymm12 = [3,3,3,0,4,4,4,4]
5803 ; AVX512DQ-BW-NEXT:    vpermd %ymm25, %ymm12, %ymm17
5804 ; AVX512DQ-BW-NEXT:    vmovdqa64 32(%rsi), %ymm26
5805 ; AVX512DQ-BW-NEXT:    vpbroadcastq {{.*#+}} ymm13 = [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]
5806 ; AVX512DQ-BW-NEXT:    movl $138547332, %eax # imm = 0x8421084
5807 ; AVX512DQ-BW-NEXT:    kmovd %eax, %k3
5808 ; AVX512DQ-BW-NEXT:    vpshufb %ymm13, %ymm26, %ymm17 {%k3}
5809 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm17, %zmm14, %zmm14
5810 ; AVX512DQ-BW-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
5811 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k2
5812 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm14, %zmm6 {%k2}
5813 ; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} ymm14 = [3,3,3,3,0,4,4,4]
5814 ; AVX512DQ-BW-NEXT:    vpermd %ymm16, %ymm14, %ymm17
5815 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} xmm18 = mem[1,1,2,2]
5816 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm18 = ymm18[0,1,1,1]
5817 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm17, %zmm18, %zmm17
5818 ; AVX512DQ-BW-NEXT:    movabsq $4760450083537948804, %rax # imm = 0x4210842108421084
5819 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k6
5820 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm17, %zmm6 {%k6}
5821 ; AVX512DQ-BW-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]
5822 ; AVX512DQ-BW-NEXT:    # ymm17 = mem[0,1,2,3,0,1,2,3]
5823 ; AVX512DQ-BW-NEXT:    vpshufb %ymm17, %ymm26, %ymm27
5824 ; AVX512DQ-BW-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]
5825 ; AVX512DQ-BW-NEXT:    vpshufb %ymm18, %ymm25, %ymm28
5826 ; AVX512DQ-BW-NEXT:    vporq %ymm27, %ymm28, %ymm27
5827 ; AVX512DQ-BW-NEXT:    vpshufb %ymm15, %ymm26, %ymm15
5828 ; AVX512DQ-BW-NEXT:    vpshufhw {{.*#+}} ymm25 = ymm25[0,1,2,3,6,5,6,7,8,9,10,11,14,13,14,15]
5829 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} ymm25 = ymm25[2,2,3,3,6,6,7,7]
5830 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm25, %ymm15 {%k5}
5831 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm15, %zmm27, %zmm15
5832 ; AVX512DQ-BW-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]
5833 ; AVX512DQ-BW-NEXT:    vpshufb %ymm25, %ymm23, %ymm26
5834 ; AVX512DQ-BW-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]
5835 ; AVX512DQ-BW-NEXT:    # ymm27 = mem[0,1,2,3,0,1,2,3]
5836 ; AVX512DQ-BW-NEXT:    vpshufb %ymm27, %ymm24, %ymm28
5837 ; AVX512DQ-BW-NEXT:    vporq %ymm26, %ymm28, %ymm26
5838 ; AVX512DQ-BW-NEXT:    vpshufb %ymm8, %ymm24, %ymm8
5839 ; AVX512DQ-BW-NEXT:    vpshufhw {{.*#+}} ymm23 = ymm23[0,1,2,3,5,6,7,6,8,9,10,11,13,14,15,14]
5840 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} ymm23 = ymm23[2,2,3,3,6,6,7,7]
5841 ; AVX512DQ-BW-NEXT:    vmovdqu8 %ymm23, %ymm8 {%k1}
5842 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm8, %zmm26, %zmm8
5843 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} zmm15 = zmm15[2,2,3,3,6,6,7,7]
5844 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} zmm8 = zmm8[2,2,3,3,6,6,7,7]
5845 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm15, %zmm8 {%k4}
5846 ; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm15 = [4,6,5,5,5,5,4,6,6,6,6,6,7,7,7,7]
5847 ; AVX512DQ-BW-NEXT:    vpermd %zmm16, %zmm15, %zmm15
5848 ; AVX512DQ-BW-NEXT:    vmovdqa64 (%rdx), %xmm16
5849 ; AVX512DQ-BW-NEXT:    movabsq $-8925843906633654008, %rax # imm = 0x8421084210842108
5850 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k1
5851 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm15, %zmm8 {%k1}
5852 ; AVX512DQ-BW-NEXT:    vmovdqa (%rcx), %xmm15
5853 ; AVX512DQ-BW-NEXT:    vpshufb %xmm20, %xmm15, %xmm20
5854 ; AVX512DQ-BW-NEXT:    vpshufb %xmm22, %xmm16, %xmm22
5855 ; AVX512DQ-BW-NEXT:    vporq %xmm20, %xmm22, %xmm20
5856 ; AVX512DQ-BW-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]
5857 ; AVX512DQ-BW-NEXT:    vpshufb %xmm7, %xmm15, %xmm7
5858 ; AVX512DQ-BW-NEXT:    vmovdqa (%rsi), %xmm15
5859 ; AVX512DQ-BW-NEXT:    vinserti32x4 $2, %xmm20, %zmm7, %zmm7
5860 ; AVX512DQ-BW-NEXT:    vmovdqa64 (%rdi), %xmm16
5861 ; AVX512DQ-BW-NEXT:    vpshufb %xmm19, %xmm16, %xmm19
5862 ; AVX512DQ-BW-NEXT:    vpshufb %xmm21, %xmm15, %xmm20
5863 ; AVX512DQ-BW-NEXT:    vporq %xmm19, %xmm20, %xmm19
5864 ; AVX512DQ-BW-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]
5865 ; AVX512DQ-BW-NEXT:    vpshufb %xmm9, %xmm15, %xmm9
5866 ; AVX512DQ-BW-NEXT:    vinserti32x4 $2, %xmm19, %zmm9, %zmm9
5867 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} zmm7 = zmm7[0,0,1,1,4,4,5,5]
5868 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} zmm9 = zmm9[0,0,1,1,4,4,5,5]
5869 ; AVX512DQ-BW-NEXT:    movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C
5870 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k1
5871 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm7, %zmm9 {%k1}
5872 ; AVX512DQ-BW-NEXT:    vpmovsxbd {{.*#+}} zmm7 = [0,0,0,0,0,0,1,1,1,1,2,2,2,2,2,2]
5873 ; AVX512DQ-BW-NEXT:    vpermd %zmm2, %zmm7, %zmm2
5874 ; AVX512DQ-BW-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
5875 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k1
5876 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm2, %zmm9 {%k1}
5877 ; AVX512DQ-BW-NEXT:    vpshufb %ymm10, %ymm1, %ymm2
5878 ; AVX512DQ-BW-NEXT:    vpshufb %ymm11, %ymm0, %ymm7
5879 ; AVX512DQ-BW-NEXT:    vpor %ymm2, %ymm7, %ymm2
5880 ; AVX512DQ-BW-NEXT:    vpshufb %ymm25, %ymm1, %ymm1
5881 ; AVX512DQ-BW-NEXT:    vpshufb %ymm27, %ymm0, %ymm0
5882 ; AVX512DQ-BW-NEXT:    vpor %ymm1, %ymm0, %ymm0
5883 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,3]
5884 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm0, %zmm2, %zmm0
5885 ; AVX512DQ-BW-NEXT:    vpermd %ymm5, %ymm12, %ymm1
5886 ; AVX512DQ-BW-NEXT:    vpshufb %ymm13, %ymm4, %ymm1 {%k3}
5887 ; AVX512DQ-BW-NEXT:    vpshufb %ymm17, %ymm4, %ymm2
5888 ; AVX512DQ-BW-NEXT:    vpshufb %ymm18, %ymm5, %ymm4
5889 ; AVX512DQ-BW-NEXT:    vpor %ymm2, %ymm4, %ymm2
5890 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,3]
5891 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm2, %zmm1, %zmm1
5892 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k2}
5893 ; AVX512DQ-BW-NEXT:    vmovdqa (%r8), %ymm0
5894 ; AVX512DQ-BW-NEXT:    vpermd %ymm0, %ymm14, %ymm2
5895 ; AVX512DQ-BW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,2,1,1,4,6,5,5]
5896 ; AVX512DQ-BW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,3,2]
5897 ; AVX512DQ-BW-NEXT:    vinserti64x4 $1, %ymm0, %zmm2, %zmm0
5898 ; AVX512DQ-BW-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
5899 ; AVX512DQ-BW-NEXT:    kmovq %rax, %k1
5900 ; AVX512DQ-BW-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k1}
5901 ; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm1, 64(%r9)
5902 ; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm9, (%r9)
5903 ; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm8, 256(%r9)
5904 ; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm6, 192(%r9)
5905 ; AVX512DQ-BW-NEXT:    vmovdqa64 %zmm3, 128(%r9)
5906 ; AVX512DQ-BW-NEXT:    vzeroupper
5907 ; AVX512DQ-BW-NEXT:    retq
5909 ; AVX512DQ-BW-FCP-LABEL: store_i8_stride5_vf64:
5910 ; AVX512DQ-BW-FCP:       # %bb.0:
5911 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%r8), %zmm0
5912 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 32(%rdx), %ymm21
5913 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa {{.*#+}} ymm6 = [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]
5914 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm6, %ymm21, %ymm1
5915 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa 32(%rcx), %ymm8
5916 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa {{.*#+}} ymm7 = [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]
5917 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm7, %ymm8, %ymm2
5918 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm1, %ymm2, %ymm1
5919 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rcx), %xmm11
5920 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa 32(%rcx), %xmm2
5921 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa {{.*#+}} xmm14 = [128,6,128,8,u,128,7,128,9,128,11,u,128,10,128,12]
5922 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm14, %xmm2, %xmm3
5923 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdx), %xmm12
5924 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa 32(%rdx), %xmm4
5925 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa {{.*#+}} xmm15 = [6,128,8,128,u,7,128,9,128,11,128,u,10,128,12,128]
5926 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm15, %xmm4, %xmm5
5927 ; AVX512DQ-BW-FCP-NEXT:    vpor %xmm3, %xmm5, %xmm3
5928 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,0,1,1]
5929 ; AVX512DQ-BW-FCP-NEXT:    vinserti64x4 $1, %ymm1, %zmm3, %zmm1
5930 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdi), %xmm13
5931 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa 32(%rdi), %xmm3
5932 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} xmm17 = [8,128,u,7,128,9,128,u,128,u,10,128,12,128,u,11]
5933 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm17, %xmm3, %xmm9
5934 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rsi), %xmm16
5935 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa 32(%rsi), %xmm5
5936 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} xmm20 = [128,8,u,128,7,128,9,u,11,u,128,10,128,12,u,128]
5937 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm20, %xmm5, %xmm10
5938 ; AVX512DQ-BW-FCP-NEXT:    vpor %xmm9, %xmm10, %xmm9
5939 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm18 = ymm9[0,0,1,1]
5940 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 32(%rdi), %ymm19
5941 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} ymm9 = [3,3,3,0,4,4,4,4]
5942 ; AVX512DQ-BW-FCP-NEXT:    vpermd %ymm19, %ymm9, %ymm22
5943 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 32(%rsi), %ymm23
5944 ; AVX512DQ-BW-FCP-NEXT:    vpbroadcastq {{.*#+}} ymm10 = [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]
5945 ; AVX512DQ-BW-FCP-NEXT:    movl $138547332, %eax # imm = 0x8421084
5946 ; AVX512DQ-BW-FCP-NEXT:    kmovd %eax, %k1
5947 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm10, %ymm23, %ymm22 {%k1}
5948 ; AVX512DQ-BW-FCP-NEXT:    vinserti64x4 $1, %ymm22, %zmm18, %zmm18
5949 ; AVX512DQ-BW-FCP-NEXT:    movabsq $-8330787646191410408, %rax # imm = 0x8C6318C6318C6318
5950 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k2
5951 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm18, %zmm1 {%k2}
5952 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 32(%r8), %ymm22
5953 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm18 = [1,1,2,2,2,2,2,2,27,27,27,27,0,28,28,28]
5954 ; AVX512DQ-BW-FCP-NEXT:    vpermi2d %zmm0, %zmm22, %zmm18
5955 ; AVX512DQ-BW-FCP-NEXT:    movabsq $4760450083537948804, %rax # imm = 0x4210842108421084
5956 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k3
5957 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm18, %zmm1 {%k3}
5958 ; AVX512DQ-BW-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm23 = zmm23[0,1,2,3],mem[4,5,6,7]
5959 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm18 = [u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,19,128,21,128,128,20,128,22,128,24,128,128,23,128,25,128,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27,128,128,26,128,28,128,128,128,128,29,128,31,128,128,30]
5960 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm18, %zmm23, %zmm23
5961 ; AVX512DQ-BW-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm24 = zmm19[0,1,2,3],mem[4,5,6,7]
5962 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm19 = [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,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,26,128,28,128,128,27,128,29,128,31,128,128,30,128]
5963 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm19, %zmm24, %zmm24
5964 ; AVX512DQ-BW-FCP-NEXT:    vporq %zmm23, %zmm24, %zmm23
5965 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} zmm23 = zmm23[2,2,3,3,6,6,7,7]
5966 ; AVX512DQ-BW-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm21 = zmm21[0,1,2,3],mem[4,5,6,7]
5967 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm24 = [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,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128]
5968 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm24, %zmm21, %zmm21
5969 ; AVX512DQ-BW-FCP-NEXT:    vshufi64x2 {{.*#+}} zmm8 = zmm8[0,1,2,3],mem[4,5,6,7]
5970 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 {{.*#+}} zmm25 = [u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,128,128,19,128,21,128,128,20,128,22,128,24,128,128,23,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,27,128,128,26,128,28,128,30,128,128,29,128,31,128,128]
5971 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %zmm25, %zmm8, %zmm8
5972 ; AVX512DQ-BW-FCP-NEXT:    vporq %zmm21, %zmm8, %zmm8
5973 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} zmm8 = zmm8[2,2,3,3,6,6,7,7]
5974 ; AVX512DQ-BW-FCP-NEXT:    movabsq $1785168781326730801, %rax # imm = 0x18C6318C6318C631
5975 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k3
5976 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm23, %zmm8 {%k3}
5977 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm21 = [4,6,5,5,5,5,4,6,30,30,30,30,31,31,31,31]
5978 ; AVX512DQ-BW-FCP-NEXT:    vpermi2d %zmm0, %zmm22, %zmm21
5979 ; AVX512DQ-BW-FCP-NEXT:    movabsq $-8925843906633654008, %rax # imm = 0x8421084210842108
5980 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k4
5981 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm21, %zmm8 {%k4}
5982 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm14, %xmm11, %xmm14
5983 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm15, %xmm12, %xmm15
5984 ; AVX512DQ-BW-FCP-NEXT:    vpor %xmm14, %xmm15, %xmm14
5985 ; AVX512DQ-BW-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3],xmm11[4],xmm12[4],xmm11[5],xmm12[5],xmm11[6],xmm12[6],xmm11[7],xmm12[7]
5986 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa {{.*#+}} xmm12 = [2,u,1,0,5,4,u,3,u,7,6,11,10,u,9,8]
5987 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm12, %xmm11, %xmm11
5988 ; AVX512DQ-BW-FCP-NEXT:    vinserti32x4 $2, %xmm14, %zmm11, %zmm11
5989 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} zmm14 = zmm11[0,0,1,1,4,4,5,5]
5990 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm17, %xmm13, %xmm11
5991 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm20, %xmm16, %xmm15
5992 ; AVX512DQ-BW-FCP-NEXT:    vpor %xmm11, %xmm15, %xmm11
5993 ; AVX512DQ-BW-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm13 = xmm13[0],xmm16[0],xmm13[1],xmm16[1],xmm13[2],xmm16[2],xmm13[3],xmm16[3],xmm13[4],xmm16[4],xmm13[5],xmm16[5],xmm13[6],xmm16[6],xmm13[7],xmm16[7]
5994 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa {{.*#+}} xmm15 = [0,1,4,5,u,2,3,6,7,10,11,u,8,9,12,13]
5995 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm15, %xmm13, %xmm13
5996 ; AVX512DQ-BW-FCP-NEXT:    vinserti32x4 $2, %xmm11, %zmm13, %zmm11
5997 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} zmm11 = zmm11[0,0,1,1,4,4,5,5]
5998 ; AVX512DQ-BW-FCP-NEXT:    movabsq $-4165393823095705204, %rax # imm = 0xC6318C6318C6318C
5999 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k4
6000 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm14, %zmm11 {%k4}
6001 ; AVX512DQ-BW-FCP-NEXT:    vbroadcasti64x4 {{.*#+}} zmm13 = mem[0,1,2,3,0,1,2,3]
6002 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm14 = [0,0,0,0,0,0,1,1,9,9,10,10,10,10,10,10]
6003 ; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm13, %zmm14, %zmm14
6004 ; AVX512DQ-BW-FCP-NEXT:    movabsq $595056260442243600, %rax # imm = 0x842108421084210
6005 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k4
6006 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm14, %zmm11 {%k4}
6007 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rdx), %ymm14
6008 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm6, %ymm14, %ymm6
6009 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rcx), %ymm16
6010 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm7, %ymm16, %ymm7
6011 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm6, %ymm7, %ymm6
6012 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm24, %ymm14, %ymm7
6013 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm25, %ymm16, %ymm17
6014 ; AVX512DQ-BW-FCP-NEXT:    vporq %ymm7, %ymm17, %ymm7
6015 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,2,3,3]
6016 ; AVX512DQ-BW-FCP-NEXT:    vinserti64x4 $1, %ymm7, %zmm6, %zmm6
6017 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa (%rsi), %ymm7
6018 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm18, %ymm7, %ymm17
6019 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 (%rdi), %ymm18
6020 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm19, %ymm18, %ymm19
6021 ; AVX512DQ-BW-FCP-NEXT:    vporq %ymm17, %ymm19, %ymm17
6022 ; AVX512DQ-BW-FCP-NEXT:    vpermq {{.*#+}} ymm17 = ymm17[2,2,3,3]
6023 ; AVX512DQ-BW-FCP-NEXT:    vpermd %ymm18, %ymm9, %ymm9
6024 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %ymm10, %ymm7, %ymm9 {%k1}
6025 ; AVX512DQ-BW-FCP-NEXT:    vinserti64x4 $1, %ymm17, %zmm9, %zmm9
6026 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm9 {%k2}
6027 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm6 = [3,3,3,3,0,4,4,4,12,14,13,13,13,13,12,14]
6028 ; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm13, %zmm6, %zmm6
6029 ; AVX512DQ-BW-FCP-NEXT:    movabsq $1190112520884487201, %rax # imm = 0x1084210842108421
6030 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k1
6031 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm6, %zmm9 {%k1}
6032 ; AVX512DQ-BW-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]
6033 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm12, %xmm2, %xmm2
6034 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm4 = ymm16[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,25],zero,ymm16[27],zero,zero,ymm16[26],zero,ymm16[28],zero,ymm16[30],zero,zero,ymm16[29],zero,ymm16[31],zero
6035 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm6 = ymm14[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,ymm14[27],zero,zero,ymm14[26],zero,ymm14[28],zero,ymm14[30],zero,zero,ymm14[29],zero,ymm14[31],zero,zero
6036 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm4, %ymm6, %ymm4
6037 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbq {{.*#+}} zmm6 = [2,2,3,3,8,8,9,9]
6038 ; AVX512DQ-BW-FCP-NEXT:    vpermt2q %zmm2, %zmm6, %zmm4
6039 ; AVX512DQ-BW-FCP-NEXT:    vpunpcklbw {{.*#+}} xmm2 = 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]
6040 ; AVX512DQ-BW-FCP-NEXT:    vpshufb %xmm15, %xmm2, %xmm2
6041 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm3 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,27],zero,zero,ymm7[26],zero,ymm7[28],zero,zero,zero,zero,ymm7[29],zero,ymm7[31],zero,zero,ymm7[30]
6042 ; AVX512DQ-BW-FCP-NEXT:    vpshufb {{.*#+}} ymm5 = ymm18[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u],zero,zero,ymm18[26],zero,ymm18[28],zero,zero,ymm18[27],zero,ymm18[29],zero,ymm18[31],zero,zero,ymm18[30],zero
6043 ; AVX512DQ-BW-FCP-NEXT:    vpor %ymm3, %ymm5, %ymm3
6044 ; AVX512DQ-BW-FCP-NEXT:    vpermt2q %zmm2, %zmm6, %zmm3
6045 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm4, %zmm3 {%k3}
6046 ; AVX512DQ-BW-FCP-NEXT:    vpmovsxbd {{.*#+}} zmm2 = [6,6,6,6,7,7,7,7,8,8,8,8,8,8,9,9]
6047 ; AVX512DQ-BW-FCP-NEXT:    vpermd %zmm0, %zmm2, %zmm0
6048 ; AVX512DQ-BW-FCP-NEXT:    movabsq $2380225041768974402, %rax # imm = 0x2108421084210842
6049 ; AVX512DQ-BW-FCP-NEXT:    kmovq %rax, %k1
6050 ; AVX512DQ-BW-FCP-NEXT:    vmovdqu8 %zmm0, %zmm3 {%k1}
6051 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm3, 128(%r9)
6052 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm9, 64(%r9)
6053 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm11, (%r9)
6054 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm8, 256(%r9)
6055 ; AVX512DQ-BW-FCP-NEXT:    vmovdqa64 %zmm1, 192(%r9)
6056 ; AVX512DQ-BW-FCP-NEXT:    vzeroupper
6057 ; AVX512DQ-BW-FCP-NEXT:    retq
6058   %in.vec0 = load <64 x i8>, ptr %in.vecptr0, align 64
6059   %in.vec1 = load <64 x i8>, ptr %in.vecptr1, align 64
6060   %in.vec2 = load <64 x i8>, ptr %in.vecptr2, align 64
6061   %in.vec3 = load <64 x i8>, ptr %in.vecptr3, align 64
6062   %in.vec4 = load <64 x i8>, ptr %in.vecptr4, align 64
6063   %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>
6064   %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>
6065   %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>
6066   %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>
6067   %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>
6068   %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>
6069   store <320 x i8> %interleaved.vec, ptr %out.vec, align 64
6070   ret void