Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / vector-interleaved-store-i16-stride-5.ll
blobd821b370f78a699c3346ecf68e388af33b209dc8
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,FALLBACK0
3 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx  | FileCheck %s --check-prefixes=AVX,AVX1,AVX1-ONLY,FALLBACK1
4 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-SLOW,FALLBACK2
5 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST,FALLBACK3
6 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX1,AVX2,AVX2-ONLY,AVX2-FAST-PERLANE,FALLBACK4
7 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512F-ONLY-SLOW,FALLBACK5
8 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512F-ONLY-FAST,FALLBACK6
9 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-SLOW,AVX512F-SLOW,AVX512DQ-SLOW,FALLBACK7
10 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512F,AVX512-FAST,AVX512F-FAST,AVX512DQ-FAST,FALLBACK8
11 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512BW-ONLY-SLOW,FALLBACK9
12 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512BW-ONLY-FAST,FALLBACK10
13 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-SLOW,AVX512BW-SLOW,AVX512DQBW-SLOW,FALLBACK11
14 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+avx512dq,+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle | FileCheck %s --check-prefixes=AVX,AVX2,AVX512,AVX512BW,AVX512-FAST,AVX512BW-FAST,AVX512DQBW-FAST,FALLBACK12
16 ; These patterns are produced by LoopVectorizer for interleaved stores.
18 define void @store_i16_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_i16_stride5_vf2:
20 ; SSE:       # %bb.0:
21 ; SSE-NEXT:    movdqa (%rdi), %xmm0
22 ; SSE-NEXT:    movdqa (%rdx), %xmm1
23 ; SSE-NEXT:    movdqa (%r8), %xmm2
24 ; SSE-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
25 ; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
26 ; SSE-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
27 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm0[0,2,1,3,4,5,6,7]
28 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,4]
29 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,1]
30 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,2,4,5,6,7]
31 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,7,5]
32 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,65535,65535,0,65535,65535,65535]
33 ; SSE-NEXT:    pand %xmm3, %xmm1
34 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm2[0,1,0,1]
35 ; SSE-NEXT:    pandn %xmm4, %xmm3
36 ; SSE-NEXT:    por %xmm1, %xmm3
37 ; SSE-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
38 ; SSE-NEXT:    psrld $16, %xmm2
39 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
40 ; SSE-NEXT:    movd %xmm0, 16(%r9)
41 ; SSE-NEXT:    movdqa %xmm3, (%r9)
42 ; SSE-NEXT:    retq
44 ; AVX1-ONLY-LABEL: store_i16_stride5_vf2:
45 ; AVX1-ONLY:       # %bb.0:
46 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm0
47 ; AVX1-ONLY-NEXT:    vmovdqa (%rdx), %xmm1
48 ; AVX1-ONLY-NEXT:    vmovdqa (%r8), %xmm2
49 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
50 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
51 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
52 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,4,5,8,9,12,13,u,u,2,3,6,7,10,11]
53 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm2[0,1,0,1]
54 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm3[4],xmm0[5,6,7]
55 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm1, %xmm1
56 ; AVX1-ONLY-NEXT:    vpsrld $16, %xmm2, %xmm2
57 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
58 ; AVX1-ONLY-NEXT:    vmovd %xmm1, 16(%r9)
59 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, (%r9)
60 ; AVX1-ONLY-NEXT:    retq
62 ; AVX2-SLOW-LABEL: store_i16_stride5_vf2:
63 ; AVX2-SLOW:       # %bb.0:
64 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %xmm0
65 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %xmm1
66 ; AVX2-SLOW-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
67 ; AVX2-SLOW-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
68 ; AVX2-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
69 ; AVX2-SLOW-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
70 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13,u,u,2,3,6,7,10,11,u,u,18,19,u,u,u,u,u,u,u,u,u,u,u,u]
71 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
72 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[0,3,0,3,4,7,4,7]
73 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm0 = ymm0[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]
74 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,0,0,255,255,u,u,u,u,u,u,u,u,u,u,u,u>
75 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
76 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm1
77 ; AVX2-SLOW-NEXT:    vmovd %xmm1, 16(%r9)
78 ; AVX2-SLOW-NEXT:    vmovdqa %xmm0, (%r9)
79 ; AVX2-SLOW-NEXT:    vzeroupper
80 ; AVX2-SLOW-NEXT:    retq
82 ; AVX2-FAST-LABEL: store_i16_stride5_vf2:
83 ; AVX2-FAST:       # %bb.0:
84 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %xmm0
85 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %xmm1
86 ; AVX2-FAST-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
87 ; AVX2-FAST-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
88 ; AVX2-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
89 ; AVX2-FAST-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
90 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,ymm0[2,3,6,7,10,11],zero,zero,ymm0[18,19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
91 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
92 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,ymm0[30,31],zero,zero,ymm0[30,31,30,31,16,17,18,19,28,29,30,31]
93 ; AVX2-FAST-NEXT:    vpor %ymm0, %ymm1, %ymm0
94 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm1
95 ; AVX2-FAST-NEXT:    vmovd %xmm1, 16(%r9)
96 ; AVX2-FAST-NEXT:    vmovdqa %xmm0, (%r9)
97 ; AVX2-FAST-NEXT:    vzeroupper
98 ; AVX2-FAST-NEXT:    retq
100 ; AVX2-FAST-PERLANE-LABEL: store_i16_stride5_vf2:
101 ; AVX2-FAST-PERLANE:       # %bb.0:
102 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %xmm0
103 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %xmm1
104 ; AVX2-FAST-PERLANE-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
105 ; AVX2-FAST-PERLANE-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
106 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
107 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
108 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,ymm0[2,3,6,7,10,11],zero,zero,ymm0[18,19],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
109 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
110 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,ymm0[30,31],zero,zero,ymm0[30,31,30,31,16,17,18,19,28,29,30,31]
111 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm0, %ymm1, %ymm0
112 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm1
113 ; AVX2-FAST-PERLANE-NEXT:    vmovd %xmm1, 16(%r9)
114 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm0, (%r9)
115 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
116 ; AVX2-FAST-PERLANE-NEXT:    retq
118 ; AVX512F-LABEL: store_i16_stride5_vf2:
119 ; AVX512F:       # %bb.0:
120 ; AVX512F-NEXT:    vmovdqa (%rdi), %xmm0
121 ; AVX512F-NEXT:    vmovdqa (%rdx), %xmm1
122 ; AVX512F-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
123 ; AVX512F-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
124 ; AVX512F-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
125 ; AVX512F-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
126 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm1 = ymm0[0,1,4,5,8,9,12,13],zero,zero,ymm0[2,3,6,7,10,11],zero,zero,ymm0[18,19,u,u,u,u,u,u,u,u,u,u,u,u]
127 ; AVX512F-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,0,1]
128 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1],zero,zero,zero,zero,zero,zero,ymm0[30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
129 ; AVX512F-NEXT:    vpor %ymm0, %ymm1, %ymm0
130 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
131 ; AVX512F-NEXT:    vmovd %xmm1, 16(%r9)
132 ; AVX512F-NEXT:    vmovdqa %xmm0, (%r9)
133 ; AVX512F-NEXT:    vzeroupper
134 ; AVX512F-NEXT:    retq
136 ; AVX512BW-LABEL: store_i16_stride5_vf2:
137 ; AVX512BW:       # %bb.0:
138 ; AVX512BW-NEXT:    vmovdqa (%rdi), %xmm0
139 ; AVX512BW-NEXT:    vmovdqa (%rdx), %xmm1
140 ; AVX512BW-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
141 ; AVX512BW-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
142 ; AVX512BW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
143 ; AVX512BW-NEXT:    vinserti128 $1, (%r8), %ymm0, %ymm0
144 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} ymm1 = <0,2,4,6,8,1,3,5,7,9,u,u,u,u,u,u>
145 ; AVX512BW-NEXT:    vpermw %ymm0, %ymm1, %ymm0
146 ; AVX512BW-NEXT:    vextracti128 $1, %ymm0, %xmm1
147 ; AVX512BW-NEXT:    vmovd %xmm1, 16(%r9)
148 ; AVX512BW-NEXT:    vmovdqa %xmm0, (%r9)
149 ; AVX512BW-NEXT:    vzeroupper
150 ; AVX512BW-NEXT:    retq
151   %in.vec0 = load <2 x i16>, ptr %in.vecptr0, align 64
152   %in.vec1 = load <2 x i16>, ptr %in.vecptr1, align 64
153   %in.vec2 = load <2 x i16>, ptr %in.vecptr2, align 64
154   %in.vec3 = load <2 x i16>, ptr %in.vecptr3, align 64
155   %in.vec4 = load <2 x i16>, ptr %in.vecptr4, align 64
156   %1 = shufflevector <2 x i16> %in.vec0, <2 x i16> %in.vec1, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
157   %2 = shufflevector <2 x i16> %in.vec2, <2 x i16> %in.vec3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
158   %3 = shufflevector <4 x i16> %1, <4 x i16> %2, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
159   %4 = shufflevector <2 x i16> %in.vec4, <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
160   %5 = shufflevector <8 x i16> %3, <8 x i16> %4, <10 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
161   %interleaved.vec = shufflevector <10 x i16> %5, <10 x i16> poison, <10 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 1, i32 3, i32 5, i32 7, i32 9>
162   store <10 x i16> %interleaved.vec, ptr %out.vec, align 64
163   ret void
166 define void @store_i16_stride5_vf4(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
167 ; SSE-LABEL: store_i16_stride5_vf4:
168 ; SSE:       # %bb.0:
169 ; SSE-NEXT:    movq {{.*#+}} xmm2 = mem[0],zero
170 ; SSE-NEXT:    movq {{.*#+}} xmm5 = mem[0],zero
171 ; SSE-NEXT:    movq {{.*#+}} xmm3 = mem[0],zero
172 ; SSE-NEXT:    movq {{.*#+}} xmm1 = mem[0],zero
173 ; SSE-NEXT:    movq {{.*#+}} xmm0 = mem[0],zero
174 ; SSE-NEXT:    movdqa %xmm1, %xmm4
175 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]
176 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3]
177 ; SSE-NEXT:    movdqa %xmm5, %xmm6
178 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm3[0],xmm6[1],xmm3[1],xmm6[2],xmm3[2],xmm6[3],xmm3[3]
179 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[3,3,3,3]
180 ; SSE-NEXT:    psrldq {{.*#+}} xmm6 = xmm6[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
181 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,65535,65535,0,0,65535,65535,65535]
182 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,1,2,3]
183 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[2,1,1,3,4,5,6,7]
184 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,6,7]
185 ; SSE-NEXT:    pand %xmm7, %xmm4
186 ; SSE-NEXT:    pandn %xmm6, %xmm7
187 ; SSE-NEXT:    por %xmm4, %xmm7
188 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,0,65535,65535,65535,65535,0,65535]
189 ; SSE-NEXT:    pand %xmm4, %xmm7
190 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm0[0,1,0,1]
191 ; SSE-NEXT:    pandn %xmm6, %xmm4
192 ; SSE-NEXT:    por %xmm7, %xmm4
193 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
194 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,2,2,4,5,6,7]
195 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,0,2,1]
196 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,65535,0,0,65535,65535,65535,0]
197 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,2,4,5,6,7]
198 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,1,1]
199 ; SSE-NEXT:    pand %xmm7, %xmm2
200 ; SSE-NEXT:    pandn %xmm3, %xmm7
201 ; SSE-NEXT:    por %xmm2, %xmm7
202 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,65535,0,65535,65535,65535]
203 ; SSE-NEXT:    pand %xmm2, %xmm7
204 ; SSE-NEXT:    pandn %xmm6, %xmm2
205 ; SSE-NEXT:    por %xmm7, %xmm2
206 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,65535,0,65535,65535,65535,65535]
207 ; SSE-NEXT:    psrlq $48, %xmm1
208 ; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1]
209 ; SSE-NEXT:    pand %xmm3, %xmm5
210 ; SSE-NEXT:    pandn %xmm0, %xmm3
211 ; SSE-NEXT:    por %xmm5, %xmm3
212 ; SSE-NEXT:    movq %xmm3, 32(%r9)
213 ; SSE-NEXT:    movdqa %xmm2, (%r9)
214 ; SSE-NEXT:    movdqa %xmm4, 16(%r9)
215 ; SSE-NEXT:    retq
217 ; AVX1-ONLY-LABEL: store_i16_stride5_vf4:
218 ; AVX1-ONLY:       # %bb.0:
219 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
220 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
221 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
222 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
223 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
224 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
225 ; AVX1-ONLY-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
226 ; AVX1-ONLY-NEXT:    vpsrldq {{.*#+}} xmm3 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
227 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm4 = xmm1[3,1,2,3]
228 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm4[0,3,1,3,4,5,6,7]
229 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1,2,3,4,5,6,7]
230 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm2[3],xmm3[4,5,6,7]
231 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm1[10,11,10,11,u,u,u,u,4,5,12,13,u,u,u,u]
232 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm0[3,1,2,1]
233 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm5[0,1,2,0,4,5,6,7]
234 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2,3],xmm4[4,5],xmm5[6,7]
235 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]
236 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0],xmm2[1],xmm4[2,3,4,5],xmm2[6],xmm4[7]
237 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,0,1,8,9,u,u,u,u,u,u,2,3]
238 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,1,8,9,u,u,u,u,u,u,2,3,10,11,u,u]
239 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6],xmm1[7]
240 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm2[4],xmm0[5,6,7]
241 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, (%r9)
242 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, 16(%r9)
243 ; AVX1-ONLY-NEXT:    vmovq %xmm3, 32(%r9)
244 ; AVX1-ONLY-NEXT:    retq
246 ; AVX2-SLOW-LABEL: store_i16_stride5_vf4:
247 ; AVX2-SLOW:       # %bb.0:
248 ; AVX2-SLOW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
249 ; AVX2-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
250 ; AVX2-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
251 ; AVX2-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
252 ; AVX2-SLOW-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
253 ; AVX2-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
254 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
255 ; AVX2-SLOW-NEXT:    vmovq {{.*#+}} xmm3 = mem[0],zero
256 ; AVX2-SLOW-NEXT:    vpbroadcastq %xmm3, %ymm3
257 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,1,8,9,u,u,u,u,u,u,2,3,10,11,u,u,26,27,u,u,u,u,u,u,20,21,28,29,u,u,u,u]
258 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
259 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,0,1,8,9,u,u,u,u,u,u,2,3,u,u,u,u,20,21,28,29,u,u,u,u,u,u,22,23]
260 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5,6],ymm2[7],ymm4[8,9],ymm2[10,11],ymm4[12,13,14],ymm2[15]
261 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
262 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm2
263 ; AVX2-SLOW-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
264 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]
265 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,3,1,3,4,5,6,7]
266 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
267 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]
268 ; AVX2-SLOW-NEXT:    vmovq %xmm0, 32(%r9)
269 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, (%r9)
270 ; AVX2-SLOW-NEXT:    vzeroupper
271 ; AVX2-SLOW-NEXT:    retq
273 ; AVX2-FAST-LABEL: store_i16_stride5_vf4:
274 ; AVX2-FAST:       # %bb.0:
275 ; AVX2-FAST-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
276 ; AVX2-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
277 ; AVX2-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
278 ; AVX2-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
279 ; AVX2-FAST-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
280 ; AVX2-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
281 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
282 ; AVX2-FAST-NEXT:    vmovq {{.*#+}} xmm3 = mem[0],zero
283 ; AVX2-FAST-NEXT:    vpbroadcastq %xmm3, %ymm3
284 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,1,8,9,u,u,u,u,u,u,2,3,10,11,u,u,26,27,u,u,u,u,u,u,20,21,28,29,u,u,u,u]
285 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
286 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,0,1,8,9,u,u,u,u,u,u,2,3,u,u,u,u,20,21,28,29,u,u,u,u,u,u,22,23]
287 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5,6],ymm2[7],ymm4[8,9],ymm2[10,11],ymm4[12,13,14],ymm2[15]
288 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
289 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm2
290 ; AVX2-FAST-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
291 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,6,7,14,15,u,u,u,u,u,u,u,u,u,u]
292 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
293 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]
294 ; AVX2-FAST-NEXT:    vmovq %xmm0, 32(%r9)
295 ; AVX2-FAST-NEXT:    vmovdqa %ymm2, (%r9)
296 ; AVX2-FAST-NEXT:    vzeroupper
297 ; AVX2-FAST-NEXT:    retq
299 ; AVX2-FAST-PERLANE-LABEL: store_i16_stride5_vf4:
300 ; AVX2-FAST-PERLANE:       # %bb.0:
301 ; AVX2-FAST-PERLANE-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
302 ; AVX2-FAST-PERLANE-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
303 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
304 ; AVX2-FAST-PERLANE-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
305 ; AVX2-FAST-PERLANE-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
306 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
307 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
308 ; AVX2-FAST-PERLANE-NEXT:    vmovq {{.*#+}} xmm3 = mem[0],zero
309 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq %xmm3, %ymm3
310 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,1,8,9,u,u,u,u,u,u,2,3,10,11,u,u,26,27,u,u,u,u,u,u,20,21,28,29,u,u,u,u]
311 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
312 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,0,1,8,9,u,u,u,u,u,u,2,3,u,u,u,u,20,21,28,29,u,u,u,u,u,u,22,23]
313 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5,6],ymm2[7],ymm4[8,9],ymm2[10,11],ymm4[12,13,14],ymm2[15]
314 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
315 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm2
316 ; AVX2-FAST-PERLANE-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
317 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,6,7,14,15,u,u,u,u,u,u,u,u,u,u]
318 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
319 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]
320 ; AVX2-FAST-PERLANE-NEXT:    vmovq %xmm0, 32(%r9)
321 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, (%r9)
322 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
323 ; AVX2-FAST-PERLANE-NEXT:    retq
325 ; AVX512F-SLOW-LABEL: store_i16_stride5_vf4:
326 ; AVX512F-SLOW:       # %bb.0:
327 ; AVX512F-SLOW-NEXT:    movq (%r8), %rax
328 ; AVX512F-SLOW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
329 ; AVX512F-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
330 ; AVX512F-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
331 ; AVX512F-SLOW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
332 ; AVX512F-SLOW-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
333 ; AVX512F-SLOW-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
334 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
335 ; AVX512F-SLOW-NEXT:    vpbroadcastq %rax, %ymm3
336 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,1,8,9,u,u,u,u,u,u,2,3,10,11,u,u,26,27,u,u,u,u,u,u,20,21,28,29,u,u,u,u]
337 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
338 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,0,1,8,9,u,u,u,u,u,u,2,3,u,u,u,u,20,21,28,29,u,u,u,u,u,u,22,23]
339 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5,6],ymm2[7],ymm4[8,9],ymm2[10,11],ymm4[12,13,14],ymm2[15]
340 ; AVX512F-SLOW-NEXT:    vpternlogq $228, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm3, %ymm2
341 ; AVX512F-SLOW-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
342 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[3,1,2,3]
343 ; AVX512F-SLOW-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,3,1,3,4,5,6,7]
344 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
345 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]
346 ; AVX512F-SLOW-NEXT:    vinserti32x4 $2, %xmm0, %zmm2, %zmm1
347 ; AVX512F-SLOW-NEXT:    vmovq %xmm0, 32(%r9)
348 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm1, (%r9)
349 ; AVX512F-SLOW-NEXT:    vzeroupper
350 ; AVX512F-SLOW-NEXT:    retq
352 ; AVX512F-FAST-LABEL: store_i16_stride5_vf4:
353 ; AVX512F-FAST:       # %bb.0:
354 ; AVX512F-FAST-NEXT:    movq (%r8), %rax
355 ; AVX512F-FAST-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
356 ; AVX512F-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
357 ; AVX512F-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
358 ; AVX512F-FAST-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
359 ; AVX512F-FAST-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
360 ; AVX512F-FAST-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
361 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm2
362 ; AVX512F-FAST-NEXT:    vpbroadcastq %rax, %ymm3
363 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm2[0,1,8,9,u,u,u,u,u,u,2,3,10,11,u,u,26,27,u,u,u,u,u,u,20,21,28,29,u,u,u,u]
364 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,0,1]
365 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,0,1,8,9,u,u,u,u,u,u,2,3,u,u,u,u,20,21,28,29,u,u,u,u,u,u,22,23]
366 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3],ymm4[4,5,6],ymm2[7],ymm4[8,9],ymm2[10,11],ymm4[12,13,14],ymm2[15]
367 ; AVX512F-FAST-NEXT:    vpternlogq $228, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm3, %ymm2
368 ; AVX512F-FAST-NEXT:    vpsrldq {{.*#+}} xmm0 = xmm0[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
369 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,6,7,14,15,u,u,8,9,10,11,12,13,14,15]
370 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
371 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[3],xmm0[4,5,6,7]
372 ; AVX512F-FAST-NEXT:    vinserti32x4 $2, %xmm0, %zmm2, %zmm1
373 ; AVX512F-FAST-NEXT:    vmovq %xmm0, 32(%r9)
374 ; AVX512F-FAST-NEXT:    vmovdqa %ymm1, (%r9)
375 ; AVX512F-FAST-NEXT:    vzeroupper
376 ; AVX512F-FAST-NEXT:    retq
378 ; AVX512BW-LABEL: store_i16_stride5_vf4:
379 ; AVX512BW:       # %bb.0:
380 ; AVX512BW-NEXT:    vmovq {{.*#+}} xmm0 = mem[0],zero
381 ; AVX512BW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
382 ; AVX512BW-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
383 ; AVX512BW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
384 ; AVX512BW-NEXT:    vmovq {{.*#+}} xmm2 = mem[0],zero
385 ; AVX512BW-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
386 ; AVX512BW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm0
387 ; AVX512BW-NEXT:    vmovq {{.*#+}} xmm1 = mem[0],zero
388 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm1, %zmm0, %zmm0
389 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm1 = <0,4,8,12,16,1,5,9,13,17,2,6,10,14,18,3,7,11,15,19,u,u,u,u,u,u,u,u,u,u,u,u>
390 ; AVX512BW-NEXT:    vpermw %zmm0, %zmm1, %zmm0
391 ; AVX512BW-NEXT:    vextracti32x4 $2, %zmm0, %xmm1
392 ; AVX512BW-NEXT:    vmovq %xmm1, 32(%r9)
393 ; AVX512BW-NEXT:    vmovdqa %ymm0, (%r9)
394 ; AVX512BW-NEXT:    vzeroupper
395 ; AVX512BW-NEXT:    retq
396   %in.vec0 = load <4 x i16>, ptr %in.vecptr0, align 64
397   %in.vec1 = load <4 x i16>, ptr %in.vecptr1, align 64
398   %in.vec2 = load <4 x i16>, ptr %in.vecptr2, align 64
399   %in.vec3 = load <4 x i16>, ptr %in.vecptr3, align 64
400   %in.vec4 = load <4 x i16>, ptr %in.vecptr4, align 64
401   %1 = shufflevector <4 x i16> %in.vec0, <4 x i16> %in.vec1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
402   %2 = shufflevector <4 x i16> %in.vec2, <4 x i16> %in.vec3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
403   %3 = shufflevector <8 x i16> %1, <8 x i16> %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>
404   %4 = shufflevector <4 x i16> %in.vec4, <4 x i16> 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>
405   %5 = shufflevector <16 x i16> %3, <16 x i16> %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>
406   %interleaved.vec = shufflevector <20 x i16> %5, <20 x i16> 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>
407   store <20 x i16> %interleaved.vec, ptr %out.vec, align 64
408   ret void
411 define void @store_i16_stride5_vf8(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
412 ; SSE-LABEL: store_i16_stride5_vf8:
413 ; SSE:       # %bb.0:
414 ; SSE-NEXT:    movdqa (%rdi), %xmm5
415 ; SSE-NEXT:    movdqa (%rsi), %xmm7
416 ; SSE-NEXT:    movdqa (%rdx), %xmm2
417 ; SSE-NEXT:    movdqa (%rcx), %xmm3
418 ; SSE-NEXT:    movdqa (%r8), %xmm6
419 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,0,65535,65535,65535]
420 ; SSE-NEXT:    movdqa %xmm0, %xmm1
421 ; SSE-NEXT:    pandn %xmm5, %xmm1
422 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm7[3,3,3,3,4,5,6,7]
423 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]
424 ; SSE-NEXT:    pand %xmm0, %xmm4
425 ; SSE-NEXT:    por %xmm1, %xmm4
426 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [0,65535,65535,65535,0,0,65535,65535]
427 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm2[1,1,2,2]
428 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,0,65535,65535,65535,65535,0]
429 ; SSE-NEXT:    pand %xmm1, %xmm9
430 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm3[3,3,3,3,4,5,6,7]
431 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,4,4]
432 ; SSE-NEXT:    movdqa %xmm1, %xmm11
433 ; SSE-NEXT:    pandn %xmm10, %xmm11
434 ; SSE-NEXT:    por %xmm9, %xmm11
435 ; SSE-NEXT:    pand %xmm8, %xmm11
436 ; SSE-NEXT:    pandn %xmm4, %xmm8
437 ; SSE-NEXT:    por %xmm11, %xmm8
438 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,65535,0,65535,65535,65535,65535]
439 ; SSE-NEXT:    pand %xmm4, %xmm8
440 ; SSE-NEXT:    pandn %xmm6, %xmm4
441 ; SSE-NEXT:    por %xmm8, %xmm4
442 ; SSE-NEXT:    movdqa %xmm2, %xmm8
443 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3]
444 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[0,1,2,2,4,5,6,7]
445 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,0,2,1]
446 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,0,0,65535,65535,65535,0]
447 ; SSE-NEXT:    movdqa %xmm5, %xmm9
448 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm9 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]
449 ; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm9[0,1,3,2,4,5,6,7]
450 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[0,1,1,1]
451 ; SSE-NEXT:    pand %xmm10, %xmm11
452 ; SSE-NEXT:    pandn %xmm8, %xmm10
453 ; SSE-NEXT:    por %xmm11, %xmm10
454 ; SSE-NEXT:    pand %xmm0, %xmm10
455 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm6[0,1,0,1]
456 ; SSE-NEXT:    pandn %xmm8, %xmm0
457 ; SSE-NEXT:    por %xmm10, %xmm0
458 ; SSE-NEXT:    movdqa %xmm5, %xmm10
459 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm7[4],xmm5[5],xmm7[5],xmm5[6],xmm7[6],xmm5[7],xmm7[7]
460 ; SSE-NEXT:    psrlq $48, %xmm7
461 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm10 = xmm10[1],xmm7[1]
462 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,65535,65535,0,0,65535,65535,65535]
463 ; SSE-NEXT:    movdqa %xmm7, %xmm11
464 ; SSE-NEXT:    pandn %xmm10, %xmm11
465 ; SSE-NEXT:    movdqa %xmm2, %xmm10
466 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm10 = xmm10[4],xmm3[4],xmm10[5],xmm3[5],xmm10[6],xmm3[6],xmm10[7],xmm3[7]
467 ; SSE-NEXT:    pshufhw {{.*#+}} xmm12 = xmm10[0,1,2,3,4,5,7,6]
468 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm12[2,1,3,3]
469 ; SSE-NEXT:    pand %xmm7, %xmm12
470 ; SSE-NEXT:    por %xmm11, %xmm12
471 ; SSE-NEXT:    pand %xmm1, %xmm12
472 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,3,2,3]
473 ; SSE-NEXT:    pandn %xmm6, %xmm1
474 ; SSE-NEXT:    por %xmm12, %xmm1
475 ; SSE-NEXT:    pslldq {{.*#+}} xmm10 = zero,zero,xmm10[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
476 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,2,3,3,4,5,6,7]
477 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,2,2]
478 ; SSE-NEXT:    pand %xmm7, %xmm5
479 ; SSE-NEXT:    pandn %xmm10, %xmm7
480 ; SSE-NEXT:    por %xmm5, %xmm7
481 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [0,65535,65535,65535,65535,0,65535,65535]
482 ; SSE-NEXT:    pand %xmm5, %xmm7
483 ; SSE-NEXT:    pandn %xmm6, %xmm5
484 ; SSE-NEXT:    por %xmm7, %xmm5
485 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm9[0,1,2,3,4,5,6,6]
486 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,3,2,3]
487 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
488 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm3[2,2,2,2,4,5,6,7]
489 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]
490 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
491 ; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1]
492 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,0,65535,65535,65535,65535,0,65535]
493 ; SSE-NEXT:    pand %xmm3, %xmm2
494 ; SSE-NEXT:    pandn %xmm8, %xmm3
495 ; SSE-NEXT:    por %xmm2, %xmm3
496 ; SSE-NEXT:    movdqa %xmm3, 16(%r9)
497 ; SSE-NEXT:    movdqa %xmm5, 48(%r9)
498 ; SSE-NEXT:    movdqa %xmm1, 64(%r9)
499 ; SSE-NEXT:    movdqa %xmm0, (%r9)
500 ; SSE-NEXT:    movdqa %xmm4, 32(%r9)
501 ; SSE-NEXT:    retq
503 ; AVX1-ONLY-LABEL: store_i16_stride5_vf8:
504 ; AVX1-ONLY:       # %bb.0:
505 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm2
506 ; AVX1-ONLY-NEXT:    vmovdqa (%rsi), %xmm5
507 ; AVX1-ONLY-NEXT:    vmovdqa (%rdx), %xmm3
508 ; AVX1-ONLY-NEXT:    vmovdqa (%rcx), %xmm4
509 ; AVX1-ONLY-NEXT:    vmovdqa (%r8), %xmm0
510 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm5, %xmm1
511 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm1 = xmm2[1],xmm1[1]
512 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm6 = xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
513 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm6[0,1,2,3,4,5,7,6]
514 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[2,1,3,3]
515 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm7[0,1,2],xmm1[3,4],xmm7[5,6,7]
516 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
517 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm7[0,1,2,2,4,5,6,7]
518 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[0,0,2,1]
519 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3]
520 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm9 = xmm8[0,1,3,2,4,5,6,7]
521 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm9 = xmm9[0,1,1,1]
522 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm9[0,1],xmm7[2,3],xmm9[4,5,6],xmm7[7]
523 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm9 = xmm0[0,1,0,1]
524 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3],xmm9[4],xmm7[5,6,7]
525 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,6]
526 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm8 = xmm8[0,2,2,3]
527 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm10 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
528 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm10 = xmm10[2,2,2,2,4,5,6,7]
529 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,5,4,6,7]
530 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm8 = xmm10[0,1],xmm8[2,3],xmm10[4,5],xmm8[6,7]
531 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm8 = xmm8[0],xmm9[1],xmm8[2,3,4,5],xmm9[6],xmm8[7]
532 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm6 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
533 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm9 = xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
534 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm9 = xmm9[0,2,3,3,4,5,6,7]
535 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm9 = xmm9[0,1,2,2]
536 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm9[0,1,2],xmm6[3,4],xmm9[5,6,7]
537 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm9 = xmm0[2,3,2,3]
538 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm9[0],xmm6[1,2,3,4],xmm9[5],xmm6[6,7]
539 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm5[3,3,3,3,4,5,6,7]
540 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]
541 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm5[0,1,2,3],xmm2[4],xmm5[5,6,7]
542 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[1,1,2,2]
543 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm4[3,3,3,3,4,5,6,7]
544 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]
545 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2],xmm3[3,4,5,6],xmm4[7]
546 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1,2,3],xmm2[4,5],xmm3[6,7]
547 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[3],xmm2[4,5,6,7]
548 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, 32(%r9)
549 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, 48(%r9)
550 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, 16(%r9)
551 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, (%r9)
552 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1],xmm9[2],xmm1[3,4,5,6],xmm9[7]
553 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, 64(%r9)
554 ; AVX1-ONLY-NEXT:    retq
556 ; AVX2-SLOW-LABEL: store_i16_stride5_vf8:
557 ; AVX2-SLOW:       # %bb.0:
558 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %xmm0
559 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %xmm2
560 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %xmm1
561 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %xmm3
562 ; AVX2-SLOW-NEXT:    vmovdqa (%r8), %xmm4
563 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm5
564 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm1, %ymm6
565 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm7 = ymm5[0,1,2,3,5,6,4,7,8,9,10,11,13,14,12,15]
566 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm7 = ymm7[0,2,3,2,4,6,7,6]
567 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm5[2,3,0,1]
568 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[6,7,10,11,u,u,6,7,u,u,8,9,12,13,u,u,22,23,26,27,u,u,22,23,u,u,24,25,28,29,u,u]
569 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0,1],ymm7[2],ymm8[3],ymm7[4],ymm8[5,6],ymm7[7],ymm8[8,9],ymm7[10],ymm8[11],ymm7[12],ymm8[13,14],ymm7[15]
570 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
571 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,6,7,10,11,u,u,u,u,u,u,8,9,u,u,u,u,22,23,26,27,u,u,u,u,u,u,24,25]
572 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm9 = ymm6[3,3,3,3,4,5,6,7,11,11,11,11,12,13,14,15]
573 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm9 = ymm9[0,1,2,3,5,5,4,7,8,9,10,11,13,13,12,15]
574 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2,3],ymm9[4,5,6],ymm8[7],ymm9[8,9],ymm8[10,11],ymm9[12,13,14],ymm8[15]
575 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
576 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
577 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]
578 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
579 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm7, %ymm4, %ymm4
580 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
581 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,ymm6[0,1,8,9,12,13],zero,zero,zero,zero,ymm6[2,3,18,19,18,19],zero,zero,zero,zero,ymm6[28,29,20,21,28,29],zero,zero
582 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]
583 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[0,1,8,9],zero,zero,zero,zero,zero,zero,ymm5[2,3,10,11],zero,zero,zero,zero,zero,zero,ymm5[20,21,28,29],zero,zero,zero,zero,zero,zero,ymm5[22,23]
584 ; AVX2-SLOW-NEXT:    vpor %ymm6, %ymm5, %ymm5
585 ; AVX2-SLOW-NEXT:    vpbroadcastq (%r8), %ymm6
586 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
587 ; AVX2-SLOW-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
588 ; AVX2-SLOW-NEXT:    vpsrlq $48, %xmm2, %xmm2
589 ; AVX2-SLOW-NEXT:    vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm2[1]
590 ; AVX2-SLOW-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
591 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,7,6]
592 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]
593 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]
594 ; AVX2-SLOW-NEXT:    vpbroadcastd 12(%r8), %xmm1
595 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]
596 ; AVX2-SLOW-NEXT:    vmovdqa %xmm0, 64(%r9)
597 ; AVX2-SLOW-NEXT:    vmovdqa %ymm5, (%r9)
598 ; AVX2-SLOW-NEXT:    vmovdqa %ymm4, 32(%r9)
599 ; AVX2-SLOW-NEXT:    vzeroupper
600 ; AVX2-SLOW-NEXT:    retq
602 ; AVX2-FAST-LABEL: store_i16_stride5_vf8:
603 ; AVX2-FAST:       # %bb.0:
604 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %xmm0
605 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %xmm1
606 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %xmm2
607 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %xmm3
608 ; AVX2-FAST-NEXT:    vmovdqa (%r8), %xmm4
609 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
610 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm6
611 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <1,5,2,6,2,6,u,u>
612 ; AVX2-FAST-NEXT:    vpermd %ymm6, %ymm7, %ymm7
613 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,ymm7[2,3,6,7,2,3],zero,zero,zero,zero,ymm7[8,9,12,13,16,17],zero,zero,zero,zero,ymm7[18,19,22,23,28,29],zero,zero,zero,zero
614 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = <5,2,6,u,2,6,3,7>
615 ; AVX2-FAST-NEXT:    vpermd %ymm5, %ymm8, %ymm8
616 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[2,3],zero,zero,zero,zero,zero,zero,ymm8[4,5,8,9],zero,zero,zero,zero,zero,zero,ymm8[18,19,22,23],zero,zero,zero,zero,zero,zero,ymm8[24,25,28,29]
617 ; AVX2-FAST-NEXT:    vpor %ymm7, %ymm8, %ymm7
618 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]
619 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
620 ; AVX2-FAST-NEXT:    vpblendvb %ymm8, %ymm7, %ymm4, %ymm4
621 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
622 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,ymm6[0,1,8,9,12,13],zero,zero,zero,zero,ymm6[2,3,18,19,18,19],zero,zero,zero,zero,ymm6[28,29,20,21,28,29],zero,zero
623 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]
624 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[0,1,8,9],zero,zero,zero,zero,zero,zero,ymm5[2,3,10,11],zero,zero,zero,zero,zero,zero,ymm5[20,21,28,29],zero,zero,zero,zero,zero,zero,ymm5[22,23]
625 ; AVX2-FAST-NEXT:    vpor %ymm6, %ymm5, %ymm5
626 ; AVX2-FAST-NEXT:    vpbroadcastq (%r8), %ymm6
627 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
628 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
629 ; AVX2-FAST-NEXT:    vpsrlq $48, %xmm1, %xmm1
630 ; AVX2-FAST-NEXT:    vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]
631 ; AVX2-FAST-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
632 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,u,u,u,u,u,u,12,13,14,15,u,u]
633 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]
634 ; AVX2-FAST-NEXT:    vpbroadcastd 12(%r8), %xmm1
635 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]
636 ; AVX2-FAST-NEXT:    vmovdqa %xmm0, 64(%r9)
637 ; AVX2-FAST-NEXT:    vmovdqa %ymm5, (%r9)
638 ; AVX2-FAST-NEXT:    vmovdqa %ymm4, 32(%r9)
639 ; AVX2-FAST-NEXT:    vzeroupper
640 ; AVX2-FAST-NEXT:    retq
642 ; AVX2-FAST-PERLANE-LABEL: store_i16_stride5_vf8:
643 ; AVX2-FAST-PERLANE:       # %bb.0:
644 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %xmm0
645 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %xmm1
646 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %xmm2
647 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %xmm3
648 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%r8), %xmm4
649 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
650 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm6
651 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm7 = ymm5[u,u,u,u,10,11,u,u,8,9,u,u,u,u,12,13,u,u,u,u,26,27,u,u,24,25,u,u,u,u,28,29]
652 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm5[2,3,0,1]
653 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[6,7,10,11,u,u,6,7,u,u,8,9,12,13,u,u,22,23,26,27,u,u,22,23,u,u,24,25,28,29,u,u]
654 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0,1],ymm7[2],ymm8[3],ymm7[4],ymm8[5,6],ymm7[7],ymm8[8,9],ymm7[10],ymm8[11],ymm7[12],ymm8[13,14],ymm7[15]
655 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm8 = ymm6[6,7,6,7,u,u,u,u,10,11,10,11,8,9,u,u,22,23,22,23,u,u,u,u,26,27,26,27,24,25,u,u]
656 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm6[2,3,0,1]
657 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,6,7,10,11,u,u,u,u,u,u,8,9,u,u,u,u,22,23,26,27,u,u,u,u,u,u,24,25]
658 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm8 = ymm8[0,1],ymm9[2,3],ymm8[4,5,6],ymm9[7],ymm8[8,9],ymm9[10,11],ymm8[12,13,14],ymm9[15]
659 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
660 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
661 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]
662 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
663 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm7, %ymm4, %ymm4
664 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
665 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,ymm6[0,1,8,9,12,13],zero,zero,zero,zero,ymm6[2,3,18,19,18,19],zero,zero,zero,zero,ymm6[28,29,20,21,28,29],zero,zero
666 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]
667 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[0,1,8,9],zero,zero,zero,zero,zero,zero,ymm5[2,3,10,11],zero,zero,zero,zero,zero,zero,ymm5[20,21,28,29],zero,zero,zero,zero,zero,zero,ymm5[22,23]
668 ; AVX2-FAST-PERLANE-NEXT:    vpor %ymm6, %ymm5, %ymm5
669 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq (%r8), %ymm6
670 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm7 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
671 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
672 ; AVX2-FAST-PERLANE-NEXT:    vpsrlq $48, %xmm1, %xmm1
673 ; AVX2-FAST-PERLANE-NEXT:    vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]
674 ; AVX2-FAST-PERLANE-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
675 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,u,u,u,u,u,u,12,13,14,15,u,u]
676 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]
677 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastd 12(%r8), %xmm1
678 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]
679 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm0, 64(%r9)
680 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm5, (%r9)
681 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm4, 32(%r9)
682 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
683 ; AVX2-FAST-PERLANE-NEXT:    retq
685 ; AVX512F-SLOW-LABEL: store_i16_stride5_vf8:
686 ; AVX512F-SLOW:       # %bb.0:
687 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %xmm2
688 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %xmm3
689 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %xmm0
690 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %xmm1
691 ; AVX512F-SLOW-NEXT:    vmovdqa (%r8), %xmm4
692 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm5
693 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm6
694 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm6[2,3,0,1]
695 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,6,7,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,26,27,u,u,u,u,u,u,u,u]
696 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm8 = ymm6[1,1,2,3,5,5,6,7]
697 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm8 = ymm8[0,1,2,3,5,5,4,7,8,9,10,11,13,13,12,15]
698 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0,1],ymm7[2,3],ymm8[4,5,6],ymm7[7],ymm8[8,9],ymm7[10,11],ymm8[12,13,14],ymm7[15]
699 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
700 ; AVX512F-SLOW-NEXT:    vpandn %ymm7, %ymm8, %ymm7
701 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,2,0]
702 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,ymm6[0,1,8,9,u,u],zero,zero,zero,zero,ymm6[2,3,18,19,u,u],zero,zero,zero,zero,ymm6[28,29,20,21,u,u],zero,zero
703 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm7, %zmm6, %zmm6
704 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm7 = ymm5[0,1,2,3,5,6,4,7,8,9,10,11,13,14,12,15]
705 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm7 = ymm7[0,2,3,2,4,6,7,6]
706 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm5[2,3,0,1]
707 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 = ymm9[6,7,u,u,u,u,u,u,u,u,8,9,u,u,u,u,u,u,26,27,u,u,u,u,u,u,u,u,28,29,u,u]
708 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm9[0,1],ymm7[2],ymm9[3],ymm7[4],ymm9[5,6],ymm7[7],ymm9[8,9],ymm7[10],ymm9[11],ymm7[12],ymm9[13,14],ymm7[15]
709 ; AVX512F-SLOW-NEXT:    vpand %ymm7, %ymm8, %ymm7
710 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,2,0,2]
711 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[0,1,8,9],zero,zero,zero,zero,ymm5[u,u,2,3,10,11],zero,zero,zero,zero,ymm5[u,u,20,21,28,29],zero,zero,zero,zero,ymm5[u,u,22,23]
712 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm7, %zmm5, %zmm5
713 ; AVX512F-SLOW-NEXT:    vporq %zmm6, %zmm5, %zmm5
714 ; AVX512F-SLOW-NEXT:    vpbroadcastq (%r8), %ymm6
715 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]
716 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm6, %zmm4
717 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm4
718 ; AVX512F-SLOW-NEXT:    vpsrlq $48, %xmm3, %xmm3
719 ; AVX512F-SLOW-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm3[1]
720 ; AVX512F-SLOW-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
721 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]
722 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]
723 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm2[3,4],xmm0[5,6,7]
724 ; AVX512F-SLOW-NEXT:    vpbroadcastd 12(%r8), %xmm1
725 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]
726 ; AVX512F-SLOW-NEXT:    vmovdqa %xmm0, 64(%r9)
727 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm4, (%r9)
728 ; AVX512F-SLOW-NEXT:    vzeroupper
729 ; AVX512F-SLOW-NEXT:    retq
731 ; AVX512F-FAST-LABEL: store_i16_stride5_vf8:
732 ; AVX512F-FAST:       # %bb.0:
733 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %xmm0
734 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %xmm1
735 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %xmm2
736 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %xmm3
737 ; AVX512F-FAST-NEXT:    vmovdqa (%r8), %xmm4
738 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm5
739 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm2, %ymm6
740 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm6[0,2,2,0]
741 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,ymm7[0,1,8,9,u,u],zero,zero,zero,zero,ymm7[2,3,18,19,u,u],zero,zero,zero,zero,ymm7[28,29,20,21,u,u],zero,zero
742 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = <1,5,2,6,2,6,u,u>
743 ; AVX512F-FAST-NEXT:    vpermd %ymm6, %ymm8, %ymm6
744 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,ymm6[2,3,6,7,u,u],zero,zero,zero,zero,ymm6[8,9,12,13,u,u],zero,zero,zero,zero,ymm6[18,19,22,23,u,u],zero,zero,zero,zero
745 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm6, %zmm7, %zmm6
746 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm5[0,2,0,2]
747 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm7[0,1,8,9],zero,zero,zero,zero,ymm7[u,u,2,3,10,11],zero,zero,zero,zero,ymm7[u,u,20,21,28,29],zero,zero,zero,zero,ymm7[u,u,22,23]
748 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = <5,2,6,u,2,6,3,7>
749 ; AVX512F-FAST-NEXT:    vpermd %ymm5, %ymm8, %ymm5
750 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[2,3],zero,zero,zero,zero,ymm5[u,u,4,5,8,9],zero,zero,zero,zero,ymm5[u,u,18,19,22,23],zero,zero,zero,zero,ymm5[u,u,24,25,28,29]
751 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm5, %zmm7, %zmm5
752 ; AVX512F-FAST-NEXT:    vporq %zmm6, %zmm5, %zmm5
753 ; AVX512F-FAST-NEXT:    vpbroadcastq (%r8), %ymm6
754 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]
755 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm4, %zmm6, %zmm4
756 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm4
757 ; AVX512F-FAST-NEXT:    vpsrlq $48, %xmm1, %xmm1
758 ; AVX512F-FAST-NEXT:    vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]
759 ; AVX512F-FAST-NEXT:    vpunpckhwd {{.*#+}} xmm1 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
760 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[8,9,10,11,u,u,u,u,u,u,12,13,14,15,u,u]
761 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3,4],xmm1[5,6,7]
762 ; AVX512F-FAST-NEXT:    vpbroadcastd 12(%r8), %xmm1
763 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]
764 ; AVX512F-FAST-NEXT:    vmovdqa %xmm0, 64(%r9)
765 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm4, (%r9)
766 ; AVX512F-FAST-NEXT:    vzeroupper
767 ; AVX512F-FAST-NEXT:    retq
769 ; AVX512BW-LABEL: store_i16_stride5_vf8:
770 ; AVX512BW:       # %bb.0:
771 ; AVX512BW-NEXT:    vmovdqa (%rdi), %xmm0
772 ; AVX512BW-NEXT:    vmovdqa (%rdx), %xmm1
773 ; AVX512BW-NEXT:    vmovdqa (%r8), %xmm2
774 ; AVX512BW-NEXT:    vinserti128 $1, (%rcx), %ymm1, %ymm1
775 ; AVX512BW-NEXT:    vinserti128 $1, (%rsi), %ymm0, %ymm0
776 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
777 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm1 = [22,30,38,7,15,23,31,39]
778 ; AVX512BW-NEXT:    vpermi2w %zmm2, %zmm0, %zmm1
779 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm3 = [0,8,16,24,32,1,9,17,25,33,2,10,18,26,34,3,11,19,27,35,4,12,20,28,36,5,13,21,29,37,6,14]
780 ; AVX512BW-NEXT:    vpermi2w %zmm2, %zmm0, %zmm3
781 ; AVX512BW-NEXT:    vmovdqa64 %zmm3, (%r9)
782 ; AVX512BW-NEXT:    vmovdqa %xmm1, 64(%r9)
783 ; AVX512BW-NEXT:    vzeroupper
784 ; AVX512BW-NEXT:    retq
785   %in.vec0 = load <8 x i16>, ptr %in.vecptr0, align 64
786   %in.vec1 = load <8 x i16>, ptr %in.vecptr1, align 64
787   %in.vec2 = load <8 x i16>, ptr %in.vecptr2, align 64
788   %in.vec3 = load <8 x i16>, ptr %in.vecptr3, align 64
789   %in.vec4 = load <8 x i16>, ptr %in.vecptr4, align 64
790   %1 = shufflevector <8 x i16> %in.vec0, <8 x i16> %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>
791   %2 = shufflevector <8 x i16> %in.vec2, <8 x i16> %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>
792   %3 = shufflevector <16 x i16> %1, <16 x i16> %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>
793   %4 = shufflevector <8 x i16> %in.vec4, <8 x i16> 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>
794   %5 = shufflevector <32 x i16> %3, <32 x i16> %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>
795   %interleaved.vec = shufflevector <40 x i16> %5, <40 x i16> 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>
796   store <40 x i16> %interleaved.vec, ptr %out.vec, align 64
797   ret void
800 define void @store_i16_stride5_vf16(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
801 ; SSE-LABEL: store_i16_stride5_vf16:
802 ; SSE:       # %bb.0:
803 ; SSE-NEXT:    movdqa (%rdi), %xmm15
804 ; SSE-NEXT:    movdqa 16(%rdi), %xmm5
805 ; SSE-NEXT:    movdqa (%rsi), %xmm8
806 ; SSE-NEXT:    movdqa 16(%rsi), %xmm0
807 ; SSE-NEXT:    movdqa 16(%rdx), %xmm10
808 ; SSE-NEXT:    movdqa (%rcx), %xmm14
809 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
810 ; SSE-NEXT:    movdqa 16(%rcx), %xmm11
811 ; SSE-NEXT:    movdqa 16(%r8), %xmm3
812 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]
813 ; SSE-NEXT:    movdqa %xmm1, %xmm2
814 ; SSE-NEXT:    pandn %xmm5, %xmm2
815 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm0[3,3,3,3,4,5,6,7]
816 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]
817 ; SSE-NEXT:    pand %xmm1, %xmm4
818 ; SSE-NEXT:    por %xmm2, %xmm4
819 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [0,65535,65535,65535,0,0,65535,65535]
820 ; SSE-NEXT:    movdqa %xmm12, %xmm6
821 ; SSE-NEXT:    pandn %xmm4, %xmm6
822 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm10[1,1,2,2]
823 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,0,65535,65535,65535,65535,0]
824 ; SSE-NEXT:    pand %xmm9, %xmm4
825 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm11[3,3,3,3,4,5,6,7]
826 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]
827 ; SSE-NEXT:    movdqa %xmm9, %xmm13
828 ; SSE-NEXT:    pandn %xmm7, %xmm13
829 ; SSE-NEXT:    por %xmm4, %xmm13
830 ; SSE-NEXT:    pand %xmm12, %xmm13
831 ; SSE-NEXT:    por %xmm6, %xmm13
832 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,65535,65535]
833 ; SSE-NEXT:    pand %xmm2, %xmm13
834 ; SSE-NEXT:    movdqa %xmm2, %xmm1
835 ; SSE-NEXT:    pandn %xmm3, %xmm1
836 ; SSE-NEXT:    por %xmm13, %xmm1
837 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
838 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]
839 ; SSE-NEXT:    movdqa %xmm1, %xmm7
840 ; SSE-NEXT:    pandn %xmm15, %xmm7
841 ; SSE-NEXT:    movdqa %xmm15, %xmm6
842 ; SSE-NEXT:    pshuflw {{.*#+}} xmm13 = xmm8[3,3,3,3,4,5,6,7]
843 ; SSE-NEXT:    pshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,4,4,4]
844 ; SSE-NEXT:    pand %xmm1, %xmm13
845 ; SSE-NEXT:    por %xmm7, %xmm13
846 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm14[3,3,3,3,4,5,6,7]
847 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]
848 ; SSE-NEXT:    movdqa %xmm9, %xmm14
849 ; SSE-NEXT:    pandn %xmm7, %xmm14
850 ; SSE-NEXT:    movdqa (%rdx), %xmm4
851 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm4[1,1,2,2]
852 ; SSE-NEXT:    pand %xmm9, %xmm15
853 ; SSE-NEXT:    por %xmm15, %xmm14
854 ; SSE-NEXT:    pand %xmm12, %xmm14
855 ; SSE-NEXT:    pandn %xmm13, %xmm12
856 ; SSE-NEXT:    movdqa (%r8), %xmm1
857 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
858 ; SSE-NEXT:    por %xmm14, %xmm12
859 ; SSE-NEXT:    pand %xmm2, %xmm12
860 ; SSE-NEXT:    pandn %xmm1, %xmm2
861 ; SSE-NEXT:    por %xmm12, %xmm2
862 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
863 ; SSE-NEXT:    movdqa %xmm5, %xmm12
864 ; SSE-NEXT:    movdqa %xmm5, %xmm13
865 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm13 = xmm13[4],xmm0[4],xmm13[5],xmm0[5],xmm13[6],xmm0[6],xmm13[7],xmm0[7]
866 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3]
867 ; SSE-NEXT:    psrlq $48, %xmm0
868 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm12 = xmm12[1],xmm0[1]
869 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,0,65535,65535,65535]
870 ; SSE-NEXT:    movdqa %xmm1, %xmm14
871 ; SSE-NEXT:    pandn %xmm12, %xmm14
872 ; SSE-NEXT:    movdqa %xmm10, %xmm15
873 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm15 = xmm15[4],xmm11[4],xmm15[5],xmm11[5],xmm15[6],xmm11[6],xmm15[7],xmm11[7]
874 ; SSE-NEXT:    pshufhw {{.*#+}} xmm12 = xmm15[0,1,2,3,4,5,7,6]
875 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm12[2,1,3,3]
876 ; SSE-NEXT:    pand %xmm1, %xmm0
877 ; SSE-NEXT:    por %xmm14, %xmm0
878 ; SSE-NEXT:    pand %xmm9, %xmm0
879 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm3[2,3,2,3]
880 ; SSE-NEXT:    movdqa %xmm9, %xmm7
881 ; SSE-NEXT:    pandn %xmm2, %xmm7
882 ; SSE-NEXT:    por %xmm0, %xmm7
883 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
884 ; SSE-NEXT:    pslldq {{.*#+}} xmm15 = zero,zero,xmm15[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
885 ; SSE-NEXT:    movdqa %xmm1, %xmm0
886 ; SSE-NEXT:    pandn %xmm15, %xmm0
887 ; SSE-NEXT:    pshuflw {{.*#+}} xmm13 = xmm13[0,2,3,3,4,5,6,7]
888 ; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm13[0,1,2,2]
889 ; SSE-NEXT:    pand %xmm1, %xmm13
890 ; SSE-NEXT:    por %xmm0, %xmm13
891 ; SSE-NEXT:    movdqa {{.*#+}} xmm15 = [0,65535,65535,65535,65535,0,65535,65535]
892 ; SSE-NEXT:    movdqa %xmm15, %xmm14
893 ; SSE-NEXT:    pandn %xmm2, %xmm14
894 ; SSE-NEXT:    pand %xmm15, %xmm13
895 ; SSE-NEXT:    por %xmm13, %xmm14
896 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm5[0,1,2,3,4,5,6,6]
897 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
898 ; SSE-NEXT:    movdqa %xmm11, %xmm2
899 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3]
900 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]
901 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]
902 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
903 ; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
904 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [65535,0,65535,65535,65535,65535,0,65535]
905 ; SSE-NEXT:    pand %xmm13, %xmm2
906 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,1,0,1]
907 ; SSE-NEXT:    movdqa %xmm13, %xmm12
908 ; SSE-NEXT:    pandn %xmm0, %xmm12
909 ; SSE-NEXT:    por %xmm2, %xmm12
910 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3]
911 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm10[0,1,2,2,4,5,6,7]
912 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,2,1]
913 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,0,0,65535,65535,65535,0]
914 ; SSE-NEXT:    movdqa %xmm10, %xmm11
915 ; SSE-NEXT:    pandn %xmm2, %xmm11
916 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm5[0,1,3,2,4,5,6,7]
917 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,1,1]
918 ; SSE-NEXT:    pand %xmm10, %xmm2
919 ; SSE-NEXT:    por %xmm11, %xmm2
920 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,65535,65535,0,65535,65535,65535]
921 ; SSE-NEXT:    movdqa %xmm3, %xmm7
922 ; SSE-NEXT:    pandn %xmm0, %xmm7
923 ; SSE-NEXT:    pand %xmm3, %xmm2
924 ; SSE-NEXT:    por %xmm2, %xmm7
925 ; SSE-NEXT:    movdqa %xmm6, %xmm11
926 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm11 = xmm11[4],xmm8[4],xmm11[5],xmm8[5],xmm11[6],xmm8[6],xmm11[7],xmm8[7]
927 ; SSE-NEXT:    movdqa %xmm6, %xmm0
928 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm8[0],xmm6[1],xmm8[1],xmm6[2],xmm8[2],xmm6[3],xmm8[3]
929 ; SSE-NEXT:    psrlq $48, %xmm8
930 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm8[1]
931 ; SSE-NEXT:    movdqa %xmm1, %xmm2
932 ; SSE-NEXT:    pandn %xmm0, %xmm2
933 ; SSE-NEXT:    movdqa %xmm4, %xmm0
934 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
935 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
936 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm0[0,1,2,3,4,5,7,6]
937 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[2,1,3,3]
938 ; SSE-NEXT:    pand %xmm1, %xmm8
939 ; SSE-NEXT:    por %xmm2, %xmm8
940 ; SSE-NEXT:    pand %xmm9, %xmm8
941 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
942 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm5[2,3,2,3]
943 ; SSE-NEXT:    pandn %xmm2, %xmm9
944 ; SSE-NEXT:    por %xmm8, %xmm9
945 ; SSE-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
946 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm11[0,2,3,3,4,5,6,7]
947 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,1,2,2]
948 ; SSE-NEXT:    pand %xmm1, %xmm8
949 ; SSE-NEXT:    pandn %xmm0, %xmm1
950 ; SSE-NEXT:    por %xmm8, %xmm1
951 ; SSE-NEXT:    pand %xmm15, %xmm1
952 ; SSE-NEXT:    pandn %xmm2, %xmm15
953 ; SSE-NEXT:    por %xmm1, %xmm15
954 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm6[0,1,2,3,4,5,6,6]
955 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
956 ; SSE-NEXT:    movdqa %xmm3, %xmm1
957 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3]
958 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]
959 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,4,6,7]
960 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
961 ; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
962 ; SSE-NEXT:    pand %xmm13, %xmm1
963 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,1,0,1]
964 ; SSE-NEXT:    pandn %xmm0, %xmm13
965 ; SSE-NEXT:    por %xmm1, %xmm13
966 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
967 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm4[0,1,2,2,4,5,6,7]
968 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]
969 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm6[0,1,3,2,4,5,6,7]
970 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,1,1]
971 ; SSE-NEXT:    pand %xmm10, %xmm2
972 ; SSE-NEXT:    pandn %xmm1, %xmm10
973 ; SSE-NEXT:    por %xmm2, %xmm10
974 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]
975 ; SSE-NEXT:    pand %xmm1, %xmm10
976 ; SSE-NEXT:    pandn %xmm0, %xmm1
977 ; SSE-NEXT:    por %xmm10, %xmm1
978 ; SSE-NEXT:    movdqa %xmm1, (%r9)
979 ; SSE-NEXT:    movdqa %xmm13, 16(%r9)
980 ; SSE-NEXT:    movdqa %xmm15, 48(%r9)
981 ; SSE-NEXT:    movdqa %xmm9, 64(%r9)
982 ; SSE-NEXT:    movdqa %xmm7, 80(%r9)
983 ; SSE-NEXT:    movdqa %xmm12, 96(%r9)
984 ; SSE-NEXT:    movdqa %xmm14, 128(%r9)
985 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
986 ; SSE-NEXT:    movaps %xmm0, 144(%r9)
987 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
988 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
989 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
990 ; SSE-NEXT:    movaps %xmm0, 112(%r9)
991 ; SSE-NEXT:    retq
993 ; AVX1-ONLY-LABEL: store_i16_stride5_vf16:
994 ; AVX1-ONLY:       # %bb.0:
995 ; AVX1-ONLY-NEXT:    vmovdqa (%rcx), %xmm2
996 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rcx), %xmm9
997 ; AVX1-ONLY-NEXT:    vmovdqa (%rdx), %xmm5
998 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdx), %xmm10
999 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]
1000 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1001 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]
1002 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]
1003 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
1004 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm6 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]
1005 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm6, %ymm0
1006 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm3
1007 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm8
1008 ; AVX1-ONLY-NEXT:    vmovdqa (%rsi), %xmm4
1009 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rsi), %xmm12
1010 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm12, %xmm1
1011 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm1 = xmm8[1],xmm1[1]
1012 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm7 = xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7],xmm12[7]
1013 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]
1014 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[0,1,2,2]
1015 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm7, %ymm1
1016 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm1, %ymm1
1017 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm1
1018 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm1, %xmm0
1019 ; AVX1-ONLY-NEXT:    vmovdqa 16(%r8), %xmm11
1020 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm11[2,3,2,3]
1021 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm7[2],xmm0[3,4,5,6],xmm7[7]
1022 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1023 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm7[0],xmm1[1,2,3,4],xmm7[5],xmm1[6,7]
1024 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm4, %xmm7
1025 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm7 = xmm3[1],xmm7[1]
1026 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm13 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3]
1027 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm14 = xmm13[0,1,3,2,4,5,6,7]
1028 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm14 = xmm14[0,1,1,1]
1029 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm14, %ymm7, %ymm14
1030 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm7 = xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
1031 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm15 = xmm7[0,1,2,3,4,5,7,6]
1032 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm15 = xmm15[2,1,3,3]
1033 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3]
1034 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
1035 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
1036 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm15, %ymm0
1037 ; AVX1-ONLY-NEXT:    vandnps %ymm14, %ymm6, %ymm14
1038 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm0, %ymm0
1039 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm14, %ymm6
1040 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm6, %xmm0
1041 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm12 = xmm12[3,3,3,3,4,5,6,7]
1042 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,4,4,4,4]
1043 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm8 = xmm12[0,1,2,3],xmm8[4],xmm12[5,6,7]
1044 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm12 = xmm13[0,1,2,3,4,5,6,6]
1045 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm12 = xmm12[0,2,2,3]
1046 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm8, %ymm12, %ymm12
1047 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm8 = xmm10[1,1,2,2]
1048 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm13 = xmm9[3,3,3,3,4,5,6,7]
1049 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,4,4,4]
1050 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm13 = xmm8[0,1],xmm13[2],xmm8[3,4,5,6],xmm13[7]
1051 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm14 = xmm11[0,1,0,1]
1052 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm8 = xmm0[0,1,2,3],xmm14[4],xmm0[5,6,7]
1053 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm9[0],xmm10[0],xmm9[1],xmm10[1],xmm9[2],xmm10[2],xmm9[3],xmm10[3]
1054 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm15 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
1055 ; AVX1-ONLY-NEXT:    vandnps %ymm12, %ymm15, %ymm9
1056 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]
1057 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,4,6,7]
1058 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm13, %ymm0, %ymm0
1059 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm15, %ymm0
1060 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm9, %ymm0
1061 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm9 = xmm0[0],xmm14[1],xmm0[2,3,4,5],xmm14[6],xmm0[7]
1062 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm0
1063 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm10 = xmm0[0,1,2],xmm11[3],xmm0[4,5,6,7]
1064 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]
1065 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
1066 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
1067 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm11 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3]
1068 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm11 = xmm11[1,1,2,3]
1069 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,5,4,6,7]
1070 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm11, %ymm0, %ymm0
1071 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm11 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
1072 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm12 = xmm11[0,1,3,2,4,5,6,7]
1073 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm12 = xmm12[0,1,1,1]
1074 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,5,6,6]
1075 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm11 = xmm11[0,2,2,3]
1076 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm11, %ymm12, %ymm12
1077 ; AVX1-ONLY-NEXT:    vmovdqa (%r8), %xmm11
1078 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm15, %ymm0
1079 ; AVX1-ONLY-NEXT:    vandps %ymm15, %ymm12, %ymm12
1080 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm12, %ymm0
1081 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm12
1082 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm13 = xmm11[0,1,0,1]
1083 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm12 = xmm12[0],xmm13[1],xmm12[2,3,4,5],xmm13[6],xmm12[7]
1084 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm13[4],xmm0[5,6,7]
1085 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[1,1,2,2]
1086 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[3,3,3,3,4,5,6,7]
1087 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,4,4]
1088 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm5[0,1],xmm2[2],xmm5[3,4,5,6],xmm2[7]
1089 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm5 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1090 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm2, %ymm2
1091 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm4[3,3,3,3,4,5,6,7]
1092 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]
1093 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm3[4],xmm5[5,6,7]
1094 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm3 = xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
1095 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm3[0,2,3,3,4,5,6,7]
1096 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,1,2,2]
1097 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm5, %ymm3
1098 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm4 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
1099 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm4, %ymm2
1100 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm3, %ymm3
1101 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm3, %ymm2
1102 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm11[2,3,2,3]
1103 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm6[0,1],xmm3[2],xmm6[3,4,5,6],xmm3[7]
1104 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm5 = xmm2[0,1,2],xmm11[3],xmm2[4,5,6,7]
1105 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm2
1106 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1,2,3,4],xmm3[5],xmm2[6,7]
1107 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, 48(%r9)
1108 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, 32(%r9)
1109 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, (%r9)
1110 ; AVX1-ONLY-NEXT:    vmovdqa %xmm12, 16(%r9)
1111 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, 112(%r9)
1112 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, 96(%r9)
1113 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, 64(%r9)
1114 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, 80(%r9)
1115 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, 128(%r9)
1116 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1117 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 144(%r9)
1118 ; AVX1-ONLY-NEXT:    vzeroupper
1119 ; AVX1-ONLY-NEXT:    retq
1121 ; AVX2-SLOW-LABEL: store_i16_stride5_vf16:
1122 ; AVX2-SLOW:       # %bb.0:
1123 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %ymm0
1124 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %ymm2
1125 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %ymm3
1126 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %ymm4
1127 ; AVX2-SLOW-NEXT:    vmovdqa (%r8), %ymm1
1128 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %xmm7
1129 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %xmm8
1130 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]
1131 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
1132 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]
1133 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %xmm9
1134 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %xmm6
1135 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm6[0],xmm9[0],xmm6[1],xmm9[1],xmm6[2],xmm9[2],xmm6[3],xmm9[3]
1136 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[0,2,1,3]
1137 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,5,6]
1138 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]
1139 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255>
1140 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm6, %ymm5, %ymm5
1141 ; AVX2-SLOW-NEXT:    vpbroadcastq (%r8), %ymm6
1142 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
1143 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm5, %ymm6, %ymm5
1144 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm6 = ymm3[1,1,1,2,5,5,5,6]
1145 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]
1146 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm6 = ymm10[0],ymm6[1],ymm10[2,3],ymm6[4],ymm10[5],ymm6[6],ymm10[7,8],ymm6[9],ymm10[10,11],ymm6[12],ymm10[13],ymm6[14],ymm10[15]
1147 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,3,2,3]
1148 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm10 = ymm0[0,1,2,1,4,5,6,5]
1149 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm11 = ymm2[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]
1150 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm11 = ymm11[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
1151 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm11[0,1],ymm10[2],ymm11[3],ymm10[4],ymm11[5,6],ymm10[7],ymm11[8,9],ymm10[10],ymm11[11],ymm10[12],ymm11[13,14],ymm10[15]
1152 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,3,2,3]
1153 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = <255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255>
1154 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm6, %ymm10, %ymm6
1155 ; AVX2-SLOW-NEXT:    vpbroadcastq 16(%r8), %ymm10
1156 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = [255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255]
1157 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm6, %ymm10, %ymm6
1158 ; AVX2-SLOW-NEXT:    vpbroadcastq 8(%rdi), %xmm10
1159 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]
1160 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm9 = xmm9[0],xmm10[1],xmm9[2,3],xmm10[4],xmm9[5],xmm10[6],xmm9[7]
1161 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]
1162 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]
1163 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]
1164 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm7 = xmm8[0],xmm7[1],xmm8[2],xmm7[3],xmm8[4,5],xmm7[6],xmm8[7]
1165 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,0]
1166 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
1167 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm9, %ymm7, %ymm7
1168 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm1[0,1,1,1]
1169 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
1170 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1171 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[2,3,2,3,6,7,6,7]
1172 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm9 = ymm2[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
1173 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm9[2,3,2,2,6,7,6,6]
1174 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]
1175 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,2,2]
1176 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm3[3,2,3,3,7,6,7,7]
1177 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm10 = ymm4[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
1178 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm10 = ymm10[2,3,2,3,6,7,6,7]
1179 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2],ymm9[3,4],ymm10[5,6,7,8],ymm9[9],ymm10[10],ymm9[11,12],ymm10[13,14,15]
1180 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]
1181 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = <u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u>
1182 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1183 ; AVX2-SLOW-NEXT:    vpbroadcastq 24(%r8), %ymm9
1184 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = [0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0]
1185 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1186 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]
1187 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]
1188 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]
1189 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]
1190 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[1,1,2,2]
1191 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]
1192 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255>
1193 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm3, %ymm0, %ymm0
1194 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[1,1,2,2]
1195 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = [255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255]
1196 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
1197 ; AVX2-SLOW-NEXT:    vmovdqa %ymm0, 64(%r9)
1198 ; AVX2-SLOW-NEXT:    vmovdqa %ymm8, 128(%r9)
1199 ; AVX2-SLOW-NEXT:    vmovdqa %ymm7, 32(%r9)
1200 ; AVX2-SLOW-NEXT:    vmovdqa %ymm6, 96(%r9)
1201 ; AVX2-SLOW-NEXT:    vmovdqa %ymm5, (%r9)
1202 ; AVX2-SLOW-NEXT:    vzeroupper
1203 ; AVX2-SLOW-NEXT:    retq
1205 ; AVX2-FAST-LABEL: store_i16_stride5_vf16:
1206 ; AVX2-FAST:       # %bb.0:
1207 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %ymm0
1208 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %ymm2
1209 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %ymm3
1210 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %ymm4
1211 ; AVX2-FAST-NEXT:    vmovdqa (%r8), %ymm1
1212 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %xmm6
1213 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %xmm5
1214 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]
1215 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
1216 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]
1217 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %xmm7
1218 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %xmm8
1219 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm9 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]
1220 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
1221 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]
1222 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255>
1223 ; AVX2-FAST-NEXT:    vpblendvb %ymm10, %ymm5, %ymm9, %ymm5
1224 ; AVX2-FAST-NEXT:    vpbroadcastq (%r8), %ymm9
1225 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
1226 ; AVX2-FAST-NEXT:    vpblendvb %ymm10, %ymm5, %ymm9, %ymm5
1227 ; AVX2-FAST-NEXT:    vpbroadcastq 8(%rdi), %xmm9
1228 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]
1229 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0],xmm9[1],xmm6[2,3],xmm9[4],xmm6[5],xmm9[6],xmm6[7]
1230 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]
1231 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]
1232 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]
1233 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm7 = xmm8[0],xmm7[1],xmm8[2],xmm7[3],xmm8[4,5],xmm7[6],xmm8[7]
1234 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,0]
1235 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
1236 ; AVX2-FAST-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
1237 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm1[0,1,1,1]
1238 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
1239 ; AVX2-FAST-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
1240 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm7 = ymm3[1,1,1,2,5,5,5,6]
1241 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]
1242 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2,3],ymm7[4],ymm8[5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10,11],ymm7[12],ymm8[13],ymm7[14],ymm8[15]
1243 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,3,2,3]
1244 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[0,1,2,1,4,5,6,5]
1245 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,18,19,u,u,20,21,u,u,24,25,24,25,u,u]
1246 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3],ymm8[4],ymm9[5,6],ymm8[7],ymm9[8,9],ymm8[10],ymm9[11],ymm8[12],ymm9[13,14],ymm8[15]
1247 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,2,3]
1248 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255>
1249 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1250 ; AVX2-FAST-NEXT:    vpbroadcastq 16(%r8), %ymm8
1251 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255]
1252 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1253 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[2,3,2,3,6,7,6,7]
1254 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,30,31,u,u,26,27,u,u,30,31,28,29,u,u,28,29]
1255 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]
1256 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,2,2]
1257 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm9 = ymm3[3,2,3,3,7,6,7,7]
1258 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,u,u,30,31,u,u,u,u,28,29,30,31,30,31]
1259 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2],ymm9[3,4],ymm10[5,6,7,8],ymm9[9],ymm10[10],ymm9[11,12],ymm10[13,14,15]
1260 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]
1261 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = <u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u>
1262 ; AVX2-FAST-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1263 ; AVX2-FAST-NEXT:    vpbroadcastq 24(%r8), %ymm9
1264 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = [0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0]
1265 ; AVX2-FAST-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1266 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]
1267 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]
1268 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]
1269 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]
1270 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[1,1,2,2]
1271 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]
1272 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255>
1273 ; AVX2-FAST-NEXT:    vpblendvb %ymm2, %ymm3, %ymm0, %ymm0
1274 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[1,1,2,2]
1275 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255]
1276 ; AVX2-FAST-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
1277 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, 64(%r9)
1278 ; AVX2-FAST-NEXT:    vmovdqa %ymm8, 128(%r9)
1279 ; AVX2-FAST-NEXT:    vmovdqa %ymm7, 96(%r9)
1280 ; AVX2-FAST-NEXT:    vmovdqa %ymm6, 32(%r9)
1281 ; AVX2-FAST-NEXT:    vmovdqa %ymm5, (%r9)
1282 ; AVX2-FAST-NEXT:    vzeroupper
1283 ; AVX2-FAST-NEXT:    retq
1285 ; AVX2-FAST-PERLANE-LABEL: store_i16_stride5_vf16:
1286 ; AVX2-FAST-PERLANE:       # %bb.0:
1287 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %ymm0
1288 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %ymm2
1289 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %ymm3
1290 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %ymm4
1291 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%r8), %ymm1
1292 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %xmm6
1293 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %xmm5
1294 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]
1295 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
1296 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]
1297 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %xmm7
1298 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %xmm8
1299 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm9 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]
1300 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
1301 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]
1302 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255>
1303 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm5, %ymm9, %ymm5
1304 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq (%r8), %ymm9
1305 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
1306 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm5, %ymm9, %ymm5
1307 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 8(%rdi), %xmm9
1308 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]
1309 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0],xmm9[1],xmm6[2,3],xmm9[4],xmm6[5],xmm9[6],xmm6[7]
1310 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]
1311 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]
1312 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]
1313 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm7 = xmm8[0],xmm7[1],xmm8[2],xmm7[3],xmm8[4,5],xmm7[6],xmm8[7]
1314 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,0]
1315 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm8 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
1316 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
1317 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm7 = ymm1[0,1,1,1]
1318 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm8 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
1319 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm6
1320 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm7 = ymm3[1,1,1,2,5,5,5,6]
1321 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm8 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]
1322 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2,3],ymm7[4],ymm8[5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10,11],ymm7[12],ymm8[13],ymm7[14],ymm8[15]
1323 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,3,2,3]
1324 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[0,1,2,1,4,5,6,5]
1325 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,22,23,18,19,u,u,20,21,u,u,24,25,24,25,u,u]
1326 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0,1],ymm8[2],ymm9[3],ymm8[4],ymm9[5,6],ymm8[7],ymm9[8,9],ymm8[10],ymm9[11],ymm8[12],ymm9[13,14],ymm8[15]
1327 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,2,3]
1328 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255>
1329 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1330 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 16(%r8), %ymm8
1331 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255]
1332 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm7, %ymm8, %ymm7
1333 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm8 = ymm0[2,3,2,3,6,7,6,7]
1334 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm9 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,30,31,u,u,26,27,u,u,30,31,28,29,u,u,28,29]
1335 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1],ymm9[2],ymm8[3],ymm9[4,5],ymm8[6],ymm9[7,8],ymm8[9],ymm9[10],ymm8[11],ymm9[12,13],ymm8[14],ymm9[15]
1336 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,2,2]
1337 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm9 = ymm3[3,2,3,3,7,6,7,7]
1338 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm10 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,u,u,30,31,u,u,u,u,28,29,30,31,30,31]
1339 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm9 = ymm10[0],ymm9[1],ymm10[2],ymm9[3,4],ymm10[5,6,7,8],ymm9[9],ymm10[10],ymm9[11,12],ymm10[13,14,15]
1340 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]
1341 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = <u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u>
1342 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1343 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 24(%r8), %ymm9
1344 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = [0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0]
1345 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm8, %ymm9, %ymm8
1346 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u]
1347 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]
1348 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]
1349 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u]
1350 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[1,1,2,2]
1351 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]
1352 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255>
1353 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm3, %ymm0, %ymm0
1354 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[1,1,2,2]
1355 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = [255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255]
1356 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
1357 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm0, 64(%r9)
1358 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm8, 128(%r9)
1359 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm7, 96(%r9)
1360 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm6, 32(%r9)
1361 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm5, (%r9)
1362 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
1363 ; AVX2-FAST-PERLANE-NEXT:    retq
1365 ; AVX512F-SLOW-LABEL: store_i16_stride5_vf16:
1366 ; AVX512F-SLOW:       # %bb.0:
1367 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %ymm0
1368 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %ymm1
1369 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %ymm2
1370 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %ymm3
1371 ; AVX512F-SLOW-NEXT:    vmovdqa (%r8), %ymm4
1372 ; AVX512F-SLOW-NEXT:    vpbroadcastq 8(%rdi), %xmm5
1373 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %xmm6
1374 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]
1375 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm5 = xmm7[0],xmm5[1],xmm7[2,3],xmm5[4],xmm7[5],xmm5[6],xmm7[7]
1376 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]
1377 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %xmm7
1378 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm8 = xmm7[1,2,2,2]
1379 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %xmm9
1380 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm9[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]
1381 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm8 = xmm10[0],xmm8[1],xmm10[2],xmm8[3],xmm10[4,5],xmm8[6],xmm10[7]
1382 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,0,0]
1383 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm5, %ymm8
1384 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm8, %zmm0, %zmm5
1385 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]
1386 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
1387 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]
1388 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %xmm8
1389 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3]
1390 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[0,2,1,3]
1391 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,5,6]
1392 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]
1393 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
1394 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %ymm7, %ymm8, %ymm6
1395 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm6[0,1,2,3],zmm5[4,5,6,7]
1396 ; AVX512F-SLOW-NEXT:    vpbroadcastq (%r8), %ymm6
1397 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm4[0,1,1,1]
1398 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm7, %zmm6, %zmm6
1399 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm6
1400 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm1[u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u,18,19,u,u]
1401 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm0[1,1,2,2]
1402 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm7[0],ymm5[1],ymm7[2,3],ymm5[4],ymm7[5],ymm5[6],ymm7[7,8],ymm5[9],ymm7[10,11],ymm5[12],ymm7[13],ymm5[14],ymm7[15]
1403 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = ymm3[u,u,12,13,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u]
1404 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm2[3,0,3,0,7,4,7,4]
1405 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm9[0],ymm7[1],ymm9[2],ymm7[3],ymm9[4,5],ymm7[6],ymm9[7,8],ymm7[9],ymm9[10],ymm7[11],ymm9[12,13],ymm7[14],ymm9[15]
1406 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]
1407 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %ymm5, %ymm9, %ymm7
1408 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm0[0,1,2,1,4,5,6,5]
1409 ; AVX512F-SLOW-NEXT:    vprolq $16, %ymm1, %ymm10
1410 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]
1411 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,3,2,3]
1412 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm10 = ymm2[1,1,1,2,5,5,5,6]
1413 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm11 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]
1414 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]
1415 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,3,2,3]
1416 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %ymm5, %ymm8, %ymm10
1417 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm10, %zmm0, %zmm5
1418 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm7[0,1,2,3],zmm5[4,5,6,7]
1419 ; AVX512F-SLOW-NEXT:    vpbroadcastq 16(%r8), %ymm7
1420 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]
1421 ; AVX512F-SLOW-NEXT:    vpandn %ymm7, %ymm8, %ymm7
1422 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[14,15],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[16,17],zero,zero,zero,zero,zero,zero
1423 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm7, %zmm4, %zmm4
1424 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm4
1425 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm2[3,2,3,3,7,6,7,7]
1426 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
1427 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[2,3,2,3,6,7,6,7]
1428 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3,4],ymm3[5,6,7,8],ymm2[9],ymm3[10],ymm2[11,12],ymm3[13,14,15]
1429 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,2]
1430 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]
1431 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm1 = ymm1[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
1432 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,2,6,7,6,6]
1433 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]
1434 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
1435 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %ymm2, %ymm9, %ymm0
1436 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]
1437 ; AVX512F-SLOW-NEXT:    vpternlogq $202, 24(%r8){1to4}, %ymm0, %ymm1
1438 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm1, 128(%r9)
1439 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm4, 64(%r9)
1440 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm6, (%r9)
1441 ; AVX512F-SLOW-NEXT:    vzeroupper
1442 ; AVX512F-SLOW-NEXT:    retq
1444 ; AVX512F-FAST-LABEL: store_i16_stride5_vf16:
1445 ; AVX512F-FAST:       # %bb.0:
1446 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %ymm0
1447 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %ymm1
1448 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %ymm2
1449 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %ymm3
1450 ; AVX512F-FAST-NEXT:    vmovdqa (%r8), %ymm4
1451 ; AVX512F-FAST-NEXT:    vpbroadcastq 8(%rdi), %xmm5
1452 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %xmm6
1453 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm6[6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13]
1454 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm5 = xmm7[0],xmm5[1],xmm7[2,3],xmm5[4],xmm7[5],xmm5[6],xmm7[7]
1455 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]
1456 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %xmm7
1457 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} xmm8 = xmm7[1,2,2,2]
1458 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %xmm9
1459 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm9[10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9]
1460 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm8 = xmm10[0],xmm8[1],xmm10[2],xmm8[3],xmm10[4,5],xmm8[6],xmm10[7]
1461 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,0,0]
1462 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm5, %ymm8
1463 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm8, %zmm0, %zmm5
1464 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]
1465 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
1466 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]
1467 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %xmm8
1468 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3]
1469 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
1470 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]
1471 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
1472 ; AVX512F-FAST-NEXT:    vpternlogq $226, %ymm7, %ymm8, %ymm6
1473 ; AVX512F-FAST-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm6[0,1,2,3],zmm5[4,5,6,7]
1474 ; AVX512F-FAST-NEXT:    vpbroadcastq (%r8), %ymm6
1475 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm4[0,1,1,1]
1476 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm6, %zmm6
1477 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm6
1478 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm1[u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u,18,19,u,u]
1479 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm0[1,1,2,2]
1480 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm7[0],ymm5[1],ymm7[2,3],ymm5[4],ymm7[5],ymm5[6],ymm7[7,8],ymm5[9],ymm7[10,11],ymm5[12],ymm7[13],ymm5[14],ymm7[15]
1481 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm3[u,u,12,13,u,u,u,u,u,u,u,u,14,15,u,u,u,u,u,u,u,u,16,17,u,u,u,u,u,u,u,u]
1482 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm9 = ymm2[3,0,3,0,7,4,7,4]
1483 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm7 = ymm9[0],ymm7[1],ymm9[2],ymm7[3],ymm9[4,5],ymm7[6],ymm9[7,8],ymm7[9],ymm9[10],ymm7[11],ymm9[12,13],ymm7[14],ymm9[15]
1484 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]
1485 ; AVX512F-FAST-NEXT:    vpternlogq $226, %ymm5, %ymm9, %ymm7
1486 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm5 = ymm0[0,1,2,1,4,5,6,5]
1487 ; AVX512F-FAST-NEXT:    vprolq $16, %ymm1, %ymm10
1488 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm10[0,1],ymm5[2],ymm10[3],ymm5[4],ymm10[5,6],ymm5[7],ymm10[8,9],ymm5[10],ymm10[11],ymm5[12],ymm10[13,14],ymm5[15]
1489 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,3,2,3]
1490 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm10 = ymm2[1,1,1,2,5,5,5,6]
1491 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm11 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,19,u,u,22,23,22,23,u,u,20,21,u,u,24,25]
1492 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2,3],ymm10[4],ymm11[5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10,11],ymm10[12],ymm11[13],ymm10[14],ymm11[15]
1493 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,3,2,3]
1494 ; AVX512F-FAST-NEXT:    vpternlogq $226, %ymm5, %ymm8, %ymm10
1495 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm10, %zmm0, %zmm5
1496 ; AVX512F-FAST-NEXT:    vshufi64x2 {{.*#+}} zmm5 = zmm7[0,1,2,3],zmm5[4,5,6,7]
1497 ; AVX512F-FAST-NEXT:    vpbroadcastq 16(%r8), %ymm7
1498 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]
1499 ; AVX512F-FAST-NEXT:    vpandn %ymm7, %ymm8, %ymm7
1500 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,ymm4[12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[14,15],zero,zero,zero,zero,zero,zero,zero,zero,ymm4[16,17],zero,zero,zero,zero,zero,zero
1501 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm4, %zmm4
1502 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm4
1503 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm2 = ymm2[3,2,3,3,7,6,7,7]
1504 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,26,27,u,u,30,31,u,u,u,u,28,29,30,31,30,31]
1505 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3,4],ymm3[5,6,7,8],ymm2[9],ymm3[10],ymm2[11,12],ymm3[13,14,15]
1506 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,2]
1507 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]
1508 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,30,31,u,u,26,27,u,u,30,31,28,29,u,u,28,29]
1509 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]
1510 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
1511 ; AVX512F-FAST-NEXT:    vpternlogq $226, %ymm2, %ymm9, %ymm0
1512 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]
1513 ; AVX512F-FAST-NEXT:    vpternlogq $202, 24(%r8){1to4}, %ymm0, %ymm1
1514 ; AVX512F-FAST-NEXT:    vmovdqa %ymm1, 128(%r9)
1515 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm4, 64(%r9)
1516 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm6, (%r9)
1517 ; AVX512F-FAST-NEXT:    vzeroupper
1518 ; AVX512F-FAST-NEXT:    retq
1520 ; AVX512BW-LABEL: store_i16_stride5_vf16:
1521 ; AVX512BW:       # %bb.0:
1522 ; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm0
1523 ; AVX512BW-NEXT:    vmovdqa (%rdx), %ymm1
1524 ; AVX512BW-NEXT:    vmovdqa (%r8), %ymm2
1525 ; AVX512BW-NEXT:    vinserti64x4 $1, (%rsi), %zmm0, %zmm0
1526 ; AVX512BW-NEXT:    vinserti64x4 $1, (%rcx), %zmm1, %zmm1
1527 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} ymm3 = <u,13,29,45,61,u,14,30,46,62,u,15,31,47,63,u>
1528 ; AVX512BW-NEXT:    vpermi2w %zmm1, %zmm0, %zmm3
1529 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm4 = <0,16,32,48,u,1,17,33,49,u,2,18,34,50,u,3,19,35,51,u,4,20,36,52,u,5,21,37,53,u,6,22>
1530 ; AVX512BW-NEXT:    vpermi2w %zmm1, %zmm0, %zmm4
1531 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]
1532 ; AVX512BW-NEXT:    vpermi2w %zmm2, %zmm4, %zmm5
1533 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm4 = <6,22,u,39,55,7,23,u,40,56,8,24,u,41,57,9,25,u,42,58,10,26,u,43,59,11,27,u,44,60,12,28>
1534 ; AVX512BW-NEXT:    vpermi2w %zmm0, %zmm1, %zmm4
1535 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm0 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]
1536 ; AVX512BW-NEXT:    vpermi2w %zmm2, %zmm4, %zmm0
1537 ; AVX512BW-NEXT:    vmovdqa64 %zmm0, 64(%r9)
1538 ; AVX512BW-NEXT:    vmovdqa64 %zmm5, (%r9)
1539 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} ymm0 = [28,1,2,3,4,29,6,7,8,9,30,11,12,13,14,31]
1540 ; AVX512BW-NEXT:    vpermi2w %ymm2, %ymm3, %ymm0
1541 ; AVX512BW-NEXT:    vmovdqa %ymm0, 128(%r9)
1542 ; AVX512BW-NEXT:    vzeroupper
1543 ; AVX512BW-NEXT:    retq
1544   %in.vec0 = load <16 x i16>, ptr %in.vecptr0, align 64
1545   %in.vec1 = load <16 x i16>, ptr %in.vecptr1, align 64
1546   %in.vec2 = load <16 x i16>, ptr %in.vecptr2, align 64
1547   %in.vec3 = load <16 x i16>, ptr %in.vecptr3, align 64
1548   %in.vec4 = load <16 x i16>, ptr %in.vecptr4, align 64
1549   %1 = shufflevector <16 x i16> %in.vec0, <16 x i16> %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>
1550   %2 = shufflevector <16 x i16> %in.vec2, <16 x i16> %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>
1551   %3 = shufflevector <32 x i16> %1, <32 x i16> %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>
1552   %4 = shufflevector <16 x i16> %in.vec4, <16 x i16> 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>
1553   %5 = shufflevector <64 x i16> %3, <64 x i16> %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>
1554   %interleaved.vec = shufflevector <80 x i16> %5, <80 x i16> 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>
1555   store <80 x i16> %interleaved.vec, ptr %out.vec, align 64
1556   ret void
1559 define void @store_i16_stride5_vf32(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
1560 ; SSE-LABEL: store_i16_stride5_vf32:
1561 ; SSE:       # %bb.0:
1562 ; SSE-NEXT:    subq $248, %rsp
1563 ; SSE-NEXT:    movdqa (%rdi), %xmm5
1564 ; SSE-NEXT:    movdqa 16(%rdi), %xmm9
1565 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1566 ; SSE-NEXT:    movdqa (%rsi), %xmm6
1567 ; SSE-NEXT:    movdqa 16(%rsi), %xmm12
1568 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1569 ; SSE-NEXT:    movdqa (%rdx), %xmm2
1570 ; SSE-NEXT:    movdqa (%rcx), %xmm8
1571 ; SSE-NEXT:    movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1572 ; SSE-NEXT:    movdqa 16(%rcx), %xmm14
1573 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1574 ; SSE-NEXT:    movdqa (%r8), %xmm0
1575 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1576 ; SSE-NEXT:    movdqa {{.*#+}} xmm15 = [65535,65535,65535,65535,0,65535,65535,65535]
1577 ; SSE-NEXT:    movdqa %xmm15, %xmm1
1578 ; SSE-NEXT:    pandn %xmm5, %xmm1
1579 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm6[3,3,3,3,4,5,6,7]
1580 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]
1581 ; SSE-NEXT:    pand %xmm15, %xmm3
1582 ; SSE-NEXT:    por %xmm1, %xmm3
1583 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [0,65535,65535,65535,0,0,65535,65535]
1584 ; SSE-NEXT:    movdqa %xmm1, %xmm4
1585 ; SSE-NEXT:    pandn %xmm3, %xmm4
1586 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm2[1,1,2,2]
1587 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [65535,65535,0,65535,65535,65535,65535,0]
1588 ; SSE-NEXT:    pand %xmm13, %xmm7
1589 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[3,3,3,3,4,5,6,7]
1590 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]
1591 ; SSE-NEXT:    movdqa %xmm13, %xmm11
1592 ; SSE-NEXT:    pandn %xmm8, %xmm11
1593 ; SSE-NEXT:    por %xmm7, %xmm11
1594 ; SSE-NEXT:    pand %xmm1, %xmm11
1595 ; SSE-NEXT:    por %xmm4, %xmm11
1596 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,65535,0,65535,65535,65535,65535]
1597 ; SSE-NEXT:    pand %xmm10, %xmm11
1598 ; SSE-NEXT:    movdqa %xmm10, %xmm3
1599 ; SSE-NEXT:    pandn %xmm0, %xmm3
1600 ; SSE-NEXT:    por %xmm11, %xmm3
1601 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1602 ; SSE-NEXT:    movdqa %xmm15, %xmm4
1603 ; SSE-NEXT:    pandn %xmm9, %xmm4
1604 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm12[3,3,3,3,4,5,6,7]
1605 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]
1606 ; SSE-NEXT:    pand %xmm15, %xmm7
1607 ; SSE-NEXT:    por %xmm4, %xmm7
1608 ; SSE-NEXT:    movdqa %xmm1, %xmm8
1609 ; SSE-NEXT:    pandn %xmm7, %xmm8
1610 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm14[3,3,3,3,4,5,6,7]
1611 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]
1612 ; SSE-NEXT:    movdqa %xmm13, %xmm7
1613 ; SSE-NEXT:    pandn %xmm4, %xmm7
1614 ; SSE-NEXT:    movdqa 16(%rdx), %xmm14
1615 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm14[1,1,2,2]
1616 ; SSE-NEXT:    pand %xmm13, %xmm11
1617 ; SSE-NEXT:    por %xmm11, %xmm7
1618 ; SSE-NEXT:    pand %xmm1, %xmm7
1619 ; SSE-NEXT:    por %xmm8, %xmm7
1620 ; SSE-NEXT:    movdqa 16(%r8), %xmm4
1621 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1622 ; SSE-NEXT:    pand %xmm10, %xmm7
1623 ; SSE-NEXT:    movdqa %xmm10, %xmm3
1624 ; SSE-NEXT:    pandn %xmm4, %xmm3
1625 ; SSE-NEXT:    por %xmm7, %xmm3
1626 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1627 ; SSE-NEXT:    movdqa 32(%rdi), %xmm3
1628 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1629 ; SSE-NEXT:    movdqa %xmm15, %xmm7
1630 ; SSE-NEXT:    pandn %xmm3, %xmm7
1631 ; SSE-NEXT:    movdqa 32(%rsi), %xmm3
1632 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1633 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm3[3,3,3,3,4,5,6,7]
1634 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]
1635 ; SSE-NEXT:    pand %xmm15, %xmm8
1636 ; SSE-NEXT:    por %xmm7, %xmm8
1637 ; SSE-NEXT:    movdqa %xmm1, %xmm7
1638 ; SSE-NEXT:    pandn %xmm8, %xmm7
1639 ; SSE-NEXT:    movdqa 32(%rcx), %xmm3
1640 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1641 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm3[3,3,3,3,4,5,6,7]
1642 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]
1643 ; SSE-NEXT:    movdqa %xmm13, %xmm12
1644 ; SSE-NEXT:    pandn %xmm8, %xmm12
1645 ; SSE-NEXT:    movdqa 32(%rdx), %xmm11
1646 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm11[1,1,2,2]
1647 ; SSE-NEXT:    pand %xmm13, %xmm8
1648 ; SSE-NEXT:    por %xmm8, %xmm12
1649 ; SSE-NEXT:    pand %xmm1, %xmm12
1650 ; SSE-NEXT:    por %xmm7, %xmm12
1651 ; SSE-NEXT:    pand %xmm10, %xmm12
1652 ; SSE-NEXT:    movdqa 32(%r8), %xmm7
1653 ; SSE-NEXT:    movdqa %xmm7, (%rsp) # 16-byte Spill
1654 ; SSE-NEXT:    movdqa %xmm10, %xmm3
1655 ; SSE-NEXT:    pandn %xmm7, %xmm3
1656 ; SSE-NEXT:    por %xmm12, %xmm3
1657 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1658 ; SSE-NEXT:    movdqa 48(%rdi), %xmm3
1659 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1660 ; SSE-NEXT:    movdqa %xmm15, %xmm7
1661 ; SSE-NEXT:    pandn %xmm3, %xmm7
1662 ; SSE-NEXT:    movdqa 48(%rsi), %xmm3
1663 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1664 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm3[3,3,3,3,4,5,6,7]
1665 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]
1666 ; SSE-NEXT:    pand %xmm15, %xmm8
1667 ; SSE-NEXT:    por %xmm7, %xmm8
1668 ; SSE-NEXT:    movdqa 48(%rcx), %xmm3
1669 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1670 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm3[3,3,3,3,4,5,6,7]
1671 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]
1672 ; SSE-NEXT:    movdqa %xmm13, %xmm12
1673 ; SSE-NEXT:    pandn %xmm7, %xmm12
1674 ; SSE-NEXT:    movdqa 48(%rdx), %xmm3
1675 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1676 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm3[1,1,2,2]
1677 ; SSE-NEXT:    pand %xmm13, %xmm7
1678 ; SSE-NEXT:    por %xmm7, %xmm12
1679 ; SSE-NEXT:    pand %xmm1, %xmm12
1680 ; SSE-NEXT:    pandn %xmm8, %xmm1
1681 ; SSE-NEXT:    por %xmm12, %xmm1
1682 ; SSE-NEXT:    pand %xmm10, %xmm1
1683 ; SSE-NEXT:    movdqa 48(%r8), %xmm3
1684 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1685 ; SSE-NEXT:    pandn %xmm3, %xmm10
1686 ; SSE-NEXT:    por %xmm1, %xmm10
1687 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1688 ; SSE-NEXT:    movdqa %xmm2, %xmm1
1689 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1690 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
1691 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]
1692 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm1[0,0,2,1]
1693 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,0,0,65535,65535,65535,0]
1694 ; SSE-NEXT:    movdqa %xmm3, %xmm8
1695 ; SSE-NEXT:    pandn %xmm7, %xmm8
1696 ; SSE-NEXT:    movdqa %xmm5, %xmm7
1697 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]
1698 ; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm7[0,1,3,2,4,5,6,7]
1699 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm12[0,1,1,1]
1700 ; SSE-NEXT:    pand %xmm3, %xmm12
1701 ; SSE-NEXT:    por %xmm8, %xmm12
1702 ; SSE-NEXT:    pand %xmm15, %xmm12
1703 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1704 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm4[0,1,0,1]
1705 ; SSE-NEXT:    movdqa %xmm15, %xmm1
1706 ; SSE-NEXT:    pandn %xmm8, %xmm1
1707 ; SSE-NEXT:    por %xmm12, %xmm1
1708 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1709 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,6,6]
1710 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[2,3,2,3]
1711 ; SSE-NEXT:    movdqa %xmm0, %xmm12
1712 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm12 = xmm12[0],xmm2[0],xmm12[1],xmm2[1],xmm12[2],xmm2[2],xmm12[3],xmm2[3]
1713 ; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm12[2,2,2,2,4,5,6,7]
1714 ; SSE-NEXT:    pshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,5,4,6,7]
1715 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm12[0,2,2,3]
1716 ; SSE-NEXT:    punpckldq {{.*#+}} xmm12 = xmm12[0],xmm7[0],xmm12[1],xmm7[1]
1717 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,0,65535,65535,65535,65535,0,65535]
1718 ; SSE-NEXT:    movdqa %xmm9, %xmm1
1719 ; SSE-NEXT:    pandn %xmm8, %xmm1
1720 ; SSE-NEXT:    pand %xmm9, %xmm12
1721 ; SSE-NEXT:    por %xmm12, %xmm1
1722 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1723 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1724 ; SSE-NEXT:    movdqa %xmm2, %xmm7
1725 ; SSE-NEXT:    pslldq {{.*#+}} xmm7 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1726 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,0,0,65535,65535,65535]
1727 ; SSE-NEXT:    movdqa %xmm0, %xmm8
1728 ; SSE-NEXT:    pandn %xmm7, %xmm8
1729 ; SSE-NEXT:    movdqa %xmm5, %xmm7
1730 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm7 = xmm7[4],xmm6[4],xmm7[5],xmm6[5],xmm7[6],xmm6[6],xmm7[7],xmm6[7]
1731 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]
1732 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm7[0,1,2,2]
1733 ; SSE-NEXT:    pand %xmm0, %xmm12
1734 ; SSE-NEXT:    por %xmm8, %xmm12
1735 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [0,65535,65535,65535,65535,0,65535,65535]
1736 ; SSE-NEXT:    pand %xmm10, %xmm12
1737 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm4[2,3,2,3]
1738 ; SSE-NEXT:    movdqa %xmm10, %xmm1
1739 ; SSE-NEXT:    pandn %xmm8, %xmm1
1740 ; SSE-NEXT:    por %xmm12, %xmm1
1741 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1742 ; SSE-NEXT:    psrlq $48, %xmm6
1743 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm5 = xmm5[1],xmm6[1]
1744 ; SSE-NEXT:    movdqa %xmm0, %xmm6
1745 ; SSE-NEXT:    pandn %xmm5, %xmm6
1746 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,6]
1747 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,1,3,3]
1748 ; SSE-NEXT:    pand %xmm0, %xmm2
1749 ; SSE-NEXT:    por %xmm6, %xmm2
1750 ; SSE-NEXT:    movdqa %xmm13, %xmm1
1751 ; SSE-NEXT:    pandn %xmm8, %xmm1
1752 ; SSE-NEXT:    pand %xmm13, %xmm2
1753 ; SSE-NEXT:    por %xmm2, %xmm1
1754 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1755 ; SSE-NEXT:    movdqa %xmm14, %xmm2
1756 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
1757 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]
1758 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,2,4,5,6,7]
1759 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,2,1]
1760 ; SSE-NEXT:    movdqa %xmm3, %xmm5
1761 ; SSE-NEXT:    pandn %xmm2, %xmm5
1762 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1763 ; SSE-NEXT:    movdqa %xmm1, %xmm2
1764 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1765 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1],xmm2[2],xmm7[2],xmm2[3],xmm7[3]
1766 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm2[0,1,3,2,4,5,6,7]
1767 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,1,1,1]
1768 ; SSE-NEXT:    pand %xmm3, %xmm6
1769 ; SSE-NEXT:    por %xmm5, %xmm6
1770 ; SSE-NEXT:    pand %xmm15, %xmm6
1771 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1772 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,1,0,1]
1773 ; SSE-NEXT:    movdqa %xmm15, %xmm12
1774 ; SSE-NEXT:    pandn %xmm5, %xmm12
1775 ; SSE-NEXT:    por %xmm6, %xmm12
1776 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1777 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6,6]
1778 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,3,2,3]
1779 ; SSE-NEXT:    movdqa %xmm8, %xmm6
1780 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm14[0],xmm6[1],xmm14[1],xmm6[2],xmm14[2],xmm6[3],xmm14[3]
1781 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[2,2,2,2,4,5,6,7]
1782 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,4,6,7]
1783 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,2,2,3]
1784 ; SSE-NEXT:    punpckldq {{.*#+}} xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1]
1785 ; SSE-NEXT:    movdqa %xmm9, %xmm2
1786 ; SSE-NEXT:    pandn %xmm5, %xmm2
1787 ; SSE-NEXT:    pand %xmm9, %xmm6
1788 ; SSE-NEXT:    por %xmm6, %xmm2
1789 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1790 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm14 = xmm14[4],xmm8[4],xmm14[5],xmm8[5],xmm14[6],xmm8[6],xmm14[7],xmm8[7]
1791 ; SSE-NEXT:    movdqa %xmm14, %xmm2
1792 ; SSE-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1793 ; SSE-NEXT:    movdqa %xmm0, %xmm5
1794 ; SSE-NEXT:    pandn %xmm2, %xmm5
1795 ; SSE-NEXT:    movdqa %xmm1, %xmm2
1796 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm7[4],xmm2[5],xmm7[5],xmm2[6],xmm7[6],xmm2[7],xmm7[7]
1797 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]
1798 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,2]
1799 ; SSE-NEXT:    pand %xmm0, %xmm2
1800 ; SSE-NEXT:    por %xmm5, %xmm2
1801 ; SSE-NEXT:    pand %xmm10, %xmm2
1802 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[2,3,2,3]
1803 ; SSE-NEXT:    movdqa %xmm10, %xmm4
1804 ; SSE-NEXT:    pandn %xmm5, %xmm4
1805 ; SSE-NEXT:    por %xmm2, %xmm4
1806 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1807 ; SSE-NEXT:    movdqa %xmm7, %xmm2
1808 ; SSE-NEXT:    psrlq $48, %xmm2
1809 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm1 = xmm1[1],xmm2[1]
1810 ; SSE-NEXT:    movdqa %xmm0, %xmm2
1811 ; SSE-NEXT:    pandn %xmm1, %xmm2
1812 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm14[0,1,2,3,4,5,7,6]
1813 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,1,3,3]
1814 ; SSE-NEXT:    pand %xmm0, %xmm4
1815 ; SSE-NEXT:    por %xmm2, %xmm4
1816 ; SSE-NEXT:    movdqa %xmm13, %xmm1
1817 ; SSE-NEXT:    pandn %xmm5, %xmm1
1818 ; SSE-NEXT:    pand %xmm13, %xmm4
1819 ; SSE-NEXT:    por %xmm4, %xmm1
1820 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1821 ; SSE-NEXT:    movdqa %xmm11, %xmm2
1822 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
1823 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]
1824 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,2,4,5,6,7]
1825 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,2,1]
1826 ; SSE-NEXT:    movdqa %xmm3, %xmm4
1827 ; SSE-NEXT:    pandn %xmm2, %xmm4
1828 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1829 ; SSE-NEXT:    movdqa %xmm7, %xmm2
1830 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
1831 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3]
1832 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm2[0,1,3,2,4,5,6,7]
1833 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]
1834 ; SSE-NEXT:    pand %xmm3, %xmm5
1835 ; SSE-NEXT:    por %xmm4, %xmm5
1836 ; SSE-NEXT:    pand %xmm15, %xmm5
1837 ; SSE-NEXT:    movdqa (%rsp), %xmm12 # 16-byte Reload
1838 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm12[0,1,0,1]
1839 ; SSE-NEXT:    movdqa %xmm15, %xmm4
1840 ; SSE-NEXT:    pandn %xmm1, %xmm4
1841 ; SSE-NEXT:    por %xmm5, %xmm4
1842 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1843 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6,6]
1844 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,3,2,3]
1845 ; SSE-NEXT:    movdqa %xmm8, %xmm5
1846 ; SSE-NEXT:    movdqa %xmm8, %xmm4
1847 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm11[0],xmm5[1],xmm11[1],xmm5[2],xmm11[2],xmm5[3],xmm11[3]
1848 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
1849 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]
1850 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]
1851 ; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
1852 ; SSE-NEXT:    movdqa %xmm9, %xmm8
1853 ; SSE-NEXT:    pandn %xmm1, %xmm8
1854 ; SSE-NEXT:    pand %xmm9, %xmm5
1855 ; SSE-NEXT:    por %xmm5, %xmm8
1856 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm11 = xmm11[4],xmm4[4],xmm11[5],xmm4[5],xmm11[6],xmm4[6],xmm11[7],xmm4[7]
1857 ; SSE-NEXT:    movdqa %xmm11, %xmm1
1858 ; SSE-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1859 ; SSE-NEXT:    movdqa %xmm0, %xmm5
1860 ; SSE-NEXT:    pandn %xmm1, %xmm5
1861 ; SSE-NEXT:    movdqa %xmm7, %xmm4
1862 ; SSE-NEXT:    movdqa %xmm7, %xmm1
1863 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
1864 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]
1865 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,2]
1866 ; SSE-NEXT:    pand %xmm0, %xmm1
1867 ; SSE-NEXT:    por %xmm5, %xmm1
1868 ; SSE-NEXT:    pand %xmm10, %xmm1
1869 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm12[2,3,2,3]
1870 ; SSE-NEXT:    movdqa %xmm10, %xmm9
1871 ; SSE-NEXT:    pandn %xmm2, %xmm9
1872 ; SSE-NEXT:    por %xmm1, %xmm9
1873 ; SSE-NEXT:    movdqa %xmm6, %xmm1
1874 ; SSE-NEXT:    psrlq $48, %xmm1
1875 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm4 = xmm4[1],xmm1[1]
1876 ; SSE-NEXT:    movdqa %xmm0, %xmm1
1877 ; SSE-NEXT:    pandn %xmm4, %xmm1
1878 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,5,7,6]
1879 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[2,1,3,3]
1880 ; SSE-NEXT:    pand %xmm0, %xmm11
1881 ; SSE-NEXT:    por %xmm1, %xmm11
1882 ; SSE-NEXT:    movdqa %xmm13, %xmm14
1883 ; SSE-NEXT:    pandn %xmm2, %xmm14
1884 ; SSE-NEXT:    pand %xmm13, %xmm11
1885 ; SSE-NEXT:    por %xmm11, %xmm14
1886 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1887 ; SSE-NEXT:    movdqa %xmm1, %xmm2
1888 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
1889 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3]
1890 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,2,4,5,6,7]
1891 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,2,1]
1892 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1893 ; SSE-NEXT:    movdqa %xmm7, %xmm11
1894 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
1895 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm11 = xmm11[0],xmm5[0],xmm11[1],xmm5[1],xmm11[2],xmm5[2],xmm11[3],xmm5[3]
1896 ; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm11[0,1,3,2,4,5,6,7]
1897 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm12[0,1,1,1]
1898 ; SSE-NEXT:    pand %xmm3, %xmm12
1899 ; SSE-NEXT:    pandn %xmm2, %xmm3
1900 ; SSE-NEXT:    por %xmm12, %xmm3
1901 ; SSE-NEXT:    pand %xmm15, %xmm3
1902 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1903 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[0,1,0,1]
1904 ; SSE-NEXT:    pandn %xmm2, %xmm15
1905 ; SSE-NEXT:    por %xmm3, %xmm15
1906 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm11[0,1,2,3,4,5,6,6]
1907 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,3,2,3]
1908 ; SSE-NEXT:    movdqa %xmm6, %xmm11
1909 ; SSE-NEXT:    movdqa %xmm1, %xmm12
1910 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm11 = xmm11[0],xmm1[0],xmm11[1],xmm1[1],xmm11[2],xmm1[2],xmm11[3],xmm1[3]
1911 ; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm11[2,2,2,2,4,5,6,7]
1912 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,5,4,6,7]
1913 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[0,2,2,3]
1914 ; SSE-NEXT:    punpckldq {{.*#+}} xmm11 = xmm11[0],xmm3[0],xmm11[1],xmm3[1]
1915 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,0,65535,65535,65535,65535,0,65535]
1916 ; SSE-NEXT:    pand %xmm1, %xmm11
1917 ; SSE-NEXT:    pandn %xmm2, %xmm1
1918 ; SSE-NEXT:    por %xmm11, %xmm1
1919 ; SSE-NEXT:    movdqa %xmm12, %xmm3
1920 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm6[4],xmm3[5],xmm6[5],xmm3[6],xmm6[6],xmm3[7],xmm6[7]
1921 ; SSE-NEXT:    movdqa %xmm3, %xmm2
1922 ; SSE-NEXT:    movdqa %xmm3, %xmm6
1923 ; SSE-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
1924 ; SSE-NEXT:    movdqa %xmm0, %xmm3
1925 ; SSE-NEXT:    pandn %xmm2, %xmm3
1926 ; SSE-NEXT:    movdqa %xmm7, %xmm2
1927 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
1928 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]
1929 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,2]
1930 ; SSE-NEXT:    pand %xmm0, %xmm2
1931 ; SSE-NEXT:    por %xmm3, %xmm2
1932 ; SSE-NEXT:    pand %xmm10, %xmm2
1933 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[2,3,2,3]
1934 ; SSE-NEXT:    pandn %xmm3, %xmm10
1935 ; SSE-NEXT:    por %xmm2, %xmm10
1936 ; SSE-NEXT:    psrlq $48, %xmm5
1937 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm7 = xmm7[1],xmm5[1]
1938 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm6[0,1,2,3,4,5,7,6]
1939 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,1,3,3]
1940 ; SSE-NEXT:    pand %xmm0, %xmm2
1941 ; SSE-NEXT:    pandn %xmm7, %xmm0
1942 ; SSE-NEXT:    por %xmm2, %xmm0
1943 ; SSE-NEXT:    pand %xmm13, %xmm0
1944 ; SSE-NEXT:    pandn %xmm3, %xmm13
1945 ; SSE-NEXT:    por %xmm0, %xmm13
1946 ; SSE-NEXT:    movdqa %xmm13, 304(%r9)
1947 ; SSE-NEXT:    movdqa %xmm10, 288(%r9)
1948 ; SSE-NEXT:    movdqa %xmm1, 256(%r9)
1949 ; SSE-NEXT:    movdqa %xmm15, 240(%r9)
1950 ; SSE-NEXT:    movdqa %xmm14, 224(%r9)
1951 ; SSE-NEXT:    movdqa %xmm9, 208(%r9)
1952 ; SSE-NEXT:    movdqa %xmm8, 176(%r9)
1953 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1954 ; SSE-NEXT:    movaps %xmm0, 160(%r9)
1955 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1956 ; SSE-NEXT:    movaps %xmm0, 144(%r9)
1957 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1958 ; SSE-NEXT:    movaps %xmm0, 128(%r9)
1959 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1960 ; SSE-NEXT:    movaps %xmm0, 96(%r9)
1961 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1962 ; SSE-NEXT:    movaps %xmm0, 80(%r9)
1963 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1964 ; SSE-NEXT:    movaps %xmm0, 64(%r9)
1965 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1966 ; SSE-NEXT:    movaps %xmm0, 48(%r9)
1967 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1968 ; SSE-NEXT:    movaps %xmm0, 16(%r9)
1969 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1970 ; SSE-NEXT:    movaps %xmm0, (%r9)
1971 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1972 ; SSE-NEXT:    movaps %xmm0, 272(%r9)
1973 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1974 ; SSE-NEXT:    movaps %xmm0, 192(%r9)
1975 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1976 ; SSE-NEXT:    movaps %xmm0, 112(%r9)
1977 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1978 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
1979 ; SSE-NEXT:    addq $248, %rsp
1980 ; SSE-NEXT:    retq
1982 ; AVX1-ONLY-LABEL: store_i16_stride5_vf32:
1983 ; AVX1-ONLY:       # %bb.0:
1984 ; AVX1-ONLY-NEXT:    subq $56, %rsp
1985 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm15
1986 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm4
1987 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rsi), %xmm11
1988 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rsi), %xmm6
1989 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm6[3,3,3,3,4,5,6,7]
1990 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
1991 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm4[4],xmm0[5,6,7]
1992 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3]
1993 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,5,6,6]
1994 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
1995 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
1996 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm10 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
1997 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm10, %ymm2
1998 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdx), %xmm12
1999 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdx), %xmm1
2000 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm1[1,1,2,2]
2001 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rcx), %xmm13
2002 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rcx), %xmm3
2003 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm3[3,3,3,3,4,5,6,7]
2004 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]
2005 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0,1],xmm7[2],xmm5[3,4,5,6],xmm7[7]
2006 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
2007 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]
2008 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,4,6,7]
2009 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm7, %ymm5
2010 ; AVX1-ONLY-NEXT:    vandps %ymm5, %ymm10, %ymm5
2011 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm5, %ymm5
2012 ; AVX1-ONLY-NEXT:    vmovdqa 48(%r8), %xmm2
2013 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm7 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
2014 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm8 = zero,zero,xmm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
2015 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,7,6]
2016 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[2,1,3,3]
2017 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm8, %ymm7
2018 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm14 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]
2019 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm14, %ymm7
2020 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm6, %xmm8
2021 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm8 = xmm4[1],xmm8[1]
2022 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm4 = xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]
2023 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm4[0,2,3,3,4,5,6,7]
2024 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,1,2,2]
2025 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm8, %ymm4, %ymm4
2026 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm14, %ymm4
2027 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm4, %ymm4
2028 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm4, %xmm6
2029 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm2[2,3,2,3]
2030 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0,1],xmm7[2],xmm6[3,4,5,6],xmm7[7]
2031 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2032 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm7[0],xmm4[1,2,3,4],xmm7[5],xmm4[6,7]
2033 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2034 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm4 = xmm12[1,1,2,2]
2035 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm6 = xmm13[3,3,3,3,4,5,6,7]
2036 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]
2037 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm4[0,1],xmm6[2],xmm4[3,4,5,6],xmm6[7]
2038 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm4 = xmm12[4],xmm13[4],xmm12[5],xmm13[5],xmm12[6],xmm13[6],xmm12[7],xmm13[7]
2039 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm7 = zero,zero,xmm4[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
2040 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm6, %ymm6
2041 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm11[3,3,3,3,4,5,6,7]
2042 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,4,4]
2043 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3],xmm15[4],xmm7[5,6,7]
2044 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm8 = xmm15[4],xmm11[4],xmm15[5],xmm11[5],xmm15[6],xmm11[6],xmm15[7],xmm11[7]
2045 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm8 = xmm8[0,2,3,3,4,5,6,7]
2046 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm8 = xmm8[0,1,2,2]
2047 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm8, %ymm7, %ymm7
2048 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm8 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
2049 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm8, %ymm6
2050 ; AVX1-ONLY-NEXT:    vandps %ymm7, %ymm8, %ymm7
2051 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm7, %ymm7
2052 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm11, %xmm6
2053 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm6 = xmm15[1],xmm6[1]
2054 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]
2055 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,1,1]
2056 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm6, %ymm6
2057 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
2058 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm5, %xmm1
2059 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm3 = xmm4[0,1,2,3,4,5,7,6]
2060 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]
2061 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
2062 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
2063 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm3, %ymm3
2064 ; AVX1-ONLY-NEXT:    vmovdqa 32(%r8), %xmm0
2065 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm2[3],xmm1[4,5,6,7]
2066 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, (%rsp) # 16-byte Spill
2067 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm2[0,1,0,1]
2068 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm5[0],xmm1[1],xmm5[2,3,4,5],xmm1[6],xmm5[7]
2069 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2070 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm14, %ymm2
2071 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm14, %ymm3
2072 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm3, %ymm2
2073 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm3
2074 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm3[0,1,2,3],xmm1[4],xmm3[5,6,7]
2075 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2076 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm7, %xmm1
2077 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm0[2,3,2,3]
2078 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm3[0],xmm1[1,2,3,4],xmm3[5],xmm1[6,7]
2079 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2080 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1],xmm3[2],xmm2[3,4,5,6],xmm3[7]
2081 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2082 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm12[0],xmm13[0],xmm12[1],xmm13[1],xmm12[2],xmm13[2],xmm12[3],xmm13[3]
2083 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm13[0],xmm12[0],xmm13[1],xmm12[1],xmm13[2],xmm12[2],xmm13[3],xmm12[3]
2084 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]
2085 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]
2086 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[1,1,2,3]
2087 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]
2088 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
2089 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdx), %xmm9
2090 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm15[0],xmm11[0],xmm15[1],xmm11[1],xmm15[2],xmm11[2],xmm15[3],xmm11[3]
2091 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm2[0,1,3,2,4,5,6,7]
2092 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,1,1,1]
2093 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6,6]
2094 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
2095 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
2096 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rcx), %xmm6
2097 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm7[0,1,2],xmm0[3],xmm7[4,5,6,7]
2098 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2099 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm10, %ymm1
2100 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm10, %ymm2
2101 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm2, %ymm1
2102 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm1, %xmm2
2103 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
2104 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm0[1],xmm2[2,3,4,5],xmm0[6],xmm2[7]
2105 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2106 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4],xmm1[5,6,7]
2107 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2108 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm9[4],xmm6[4],xmm9[5],xmm6[5],xmm9[6],xmm6[6],xmm9[7],xmm6[7]
2109 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
2110 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]
2111 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]
2112 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm2
2113 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm1
2114 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rsi), %xmm0
2115 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm0, %xmm3
2116 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm3 = xmm1[1],xmm3[1]
2117 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm5 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2118 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm5[0,2,3,3,4,5,6,7]
2119 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[0,1,2,2]
2120 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm5, %ymm3
2121 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm14, %ymm2
2122 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm14, %ymm3
2123 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm3, %ymm2
2124 ; AVX1-ONLY-NEXT:    vmovdqa 16(%r8), %xmm8
2125 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm3
2126 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm8[2,3,2,3]
2127 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm7[2],xmm3[3,4,5,6],xmm7[7]
2128 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2129 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm11 = xmm7[0],xmm2[1,2,3,4],xmm7[5],xmm2[6,7]
2130 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm15
2131 ; AVX1-ONLY-NEXT:    vmovdqa (%rsi), %xmm7
2132 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm7, %xmm2
2133 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm15[1],xmm2[1]
2134 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
2135 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm3[0,1,3,2,4,5,6,7]
2136 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,1,1,1]
2137 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm4, %ymm2, %ymm2
2138 ; AVX1-ONLY-NEXT:    vmovdqa (%rdx), %xmm5
2139 ; AVX1-ONLY-NEXT:    vmovdqa (%rcx), %xmm4
2140 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm10 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]
2141 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm12 = xmm10[0,1,2,3,4,5,7,6]
2142 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm12 = xmm12[2,1,3,3]
2143 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm13 = xmm9[0],xmm6[0],xmm9[1],xmm6[1],xmm9[2],xmm6[2],xmm9[3],xmm6[3]
2144 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm13 = xmm13[0,1,2,2,4,5,6,7]
2145 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm13 = xmm13[0,0,2,1]
2146 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm13, %ymm12, %ymm12
2147 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm14, %ymm2
2148 ; AVX1-ONLY-NEXT:    vandps %ymm14, %ymm12, %ymm12
2149 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm12, %ymm2
2150 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
2151 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
2152 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
2153 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm3[0,1,2,3,4,5,6,6]
2154 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2155 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
2156 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm6[3,3,3,3,4,5,6,7]
2157 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
2158 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm9[1,1,2,2]
2159 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm3[0,1],xmm1[2],xmm3[3,4,5,6],xmm1[7]
2160 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm6[0],xmm9[0],xmm6[1],xmm9[1],xmm6[2],xmm9[2],xmm6[3],xmm9[3]
2161 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm3[2,2,2,2,4,5,6,7]
2162 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,4,6,7]
2163 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm3, %ymm1
2164 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm3 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
2165 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm3, %ymm0
2166 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm1, %ymm1
2167 ; AVX1-ONLY-NEXT:    vmovaps %ymm3, %ymm12
2168 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm3
2169 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm3, %xmm0
2170 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm8[3],xmm0[4,5,6,7]
2171 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm6 = xmm8[0,1,0,1]
2172 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm1
2173 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3],xmm6[4],xmm1[5,6,7]
2174 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm6[1],xmm3[2,3,4,5],xmm6[6],xmm3[7]
2175 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]
2176 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm6 = xmm6[0,1,2,2,4,5,6,7]
2177 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[0,0,2,1]
2178 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]
2179 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm8 = xmm8[1,1,2,3]
2180 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,4,6,7]
2181 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm8, %ymm6, %ymm6
2182 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm15[0],xmm7[0],xmm15[1],xmm7[1],xmm15[2],xmm7[2],xmm15[3],xmm7[3]
2183 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm9 = xmm8[0,1,3,2,4,5,6,7]
2184 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm9 = xmm9[0,1,1,1]
2185 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,6]
2186 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm8 = xmm8[0,2,2,3]
2187 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm8, %ymm9, %ymm8
2188 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm12, %ymm6
2189 ; AVX1-ONLY-NEXT:    vandps %ymm12, %ymm8, %ymm8
2190 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm8, %ymm6
2191 ; AVX1-ONLY-NEXT:    vmovdqa (%r8), %xmm8
2192 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm6, %xmm9
2193 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm12 = xmm8[0,1,0,1]
2194 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm9 = xmm9[0],xmm12[1],xmm9[2,3,4,5],xmm12[6],xmm9[7]
2195 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0,1,2,3],xmm12[4],xmm6[5,6,7]
2196 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[1,1,2,2]
2197 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm4[3,3,3,3,4,5,6,7]
2198 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,4,4]
2199 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm5[0,1],xmm4[2],xmm5[3,4,5,6],xmm4[7]
2200 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm5 = zero,zero,xmm10[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
2201 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm4, %ymm4
2202 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm7[3,3,3,3,4,5,6,7]
2203 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]
2204 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm15[4],xmm5[5,6,7]
2205 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm7 = xmm15[4],xmm7[4],xmm15[5],xmm7[5],xmm15[6],xmm7[6],xmm15[7],xmm7[7]
2206 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]
2207 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[0,1,2,2]
2208 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm5, %ymm5
2209 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm7 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
2210 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm7, %ymm4
2211 ; AVX1-ONLY-NEXT:    vandps %ymm7, %ymm5, %ymm5
2212 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm5, %ymm4
2213 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm8[2,3,2,3]
2214 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm5[2],xmm2[3,4,5,6],xmm5[7]
2215 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm4, %xmm7
2216 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0],xmm7[1,2,3,4],xmm5[5],xmm7[6,7]
2217 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm8[3],xmm4[4,5,6,7]
2218 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, 32(%r9)
2219 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, 48(%r9)
2220 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, (%r9)
2221 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, 16(%r9)
2222 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, 96(%r9)
2223 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, 112(%r9)
2224 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, 64(%r9)
2225 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, 80(%r9)
2226 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, 128(%r9)
2227 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2228 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 144(%r9)
2229 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2230 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 160(%r9)
2231 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2232 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 176(%r9)
2233 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2234 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 224(%r9)
2235 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2236 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 240(%r9)
2237 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2238 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 192(%r9)
2239 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2240 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 208(%r9)
2241 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2242 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 288(%r9)
2243 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2244 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 304(%r9)
2245 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2246 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 256(%r9)
2247 ; AVX1-ONLY-NEXT:    vmovaps (%rsp), %xmm0 # 16-byte Reload
2248 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 272(%r9)
2249 ; AVX1-ONLY-NEXT:    addq $56, %rsp
2250 ; AVX1-ONLY-NEXT:    vzeroupper
2251 ; AVX1-ONLY-NEXT:    retq
2253 ; AVX2-SLOW-LABEL: store_i16_stride5_vf32:
2254 ; AVX2-SLOW:       # %bb.0:
2255 ; AVX2-SLOW-NEXT:    subq $72, %rsp
2256 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %ymm2
2257 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm4
2258 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rsi), %ymm3
2259 ; AVX2-SLOW-NEXT:    vmovdqa (%r8), %ymm1
2260 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2261 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %xmm6
2262 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdx), %xmm8
2263 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %xmm7
2264 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rcx), %xmm9
2265 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]
2266 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm5 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
2267 ; AVX2-SLOW-NEXT:    vpshufb %xmm5, %xmm0, %xmm0
2268 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
2269 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %xmm12
2270 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rsi), %xmm10
2271 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %xmm11
2272 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdi), %xmm13
2273 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]
2274 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm11 = xmm11[0,2,1,3]
2275 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,5,6]
2276 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[0,1,0,1]
2277 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = <255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255>
2278 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm11, %ymm0, %ymm0
2279 ; AVX2-SLOW-NEXT:    vpbroadcastq (%r8), %ymm11
2280 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm15 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
2281 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm0, %ymm11, %ymm0
2282 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2283 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3]
2284 ; AVX2-SLOW-NEXT:    vpshufb %xmm5, %xmm0, %xmm0
2285 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
2286 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm13[0],xmm10[0],xmm13[1],xmm10[1],xmm13[2],xmm10[2],xmm13[3],xmm10[3]
2287 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[0,2,1,3]
2288 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,5,6]
2289 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]
2290 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm5, %ymm0, %ymm0
2291 ; AVX2-SLOW-NEXT:    vpbroadcastq 32(%r8), %ymm5
2292 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm0, %ymm5, %ymm0
2293 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, (%rsp) # 32-byte Spill
2294 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm11 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
2295 ; AVX2-SLOW-NEXT:    vpshufb %xmm11, %xmm12, %xmm0
2296 ; AVX2-SLOW-NEXT:    vpbroadcastq 8(%rdi), %xmm12
2297 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm12[1],xmm0[2,3],xmm12[4],xmm0[5],xmm12[6],xmm0[7]
2298 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
2299 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm14 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
2300 ; AVX2-SLOW-NEXT:    vpshufb %xmm14, %xmm7, %xmm7
2301 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[1,2,2,2]
2302 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm6 = xmm7[0],xmm6[1],xmm7[2],xmm6[3],xmm7[4,5],xmm6[6],xmm7[7]
2303 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,1,0,0]
2304 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm13 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
2305 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm0, %ymm6, %ymm0
2306 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm1[0,1,1,1]
2307 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm12 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
2308 ; AVX2-SLOW-NEXT:    vpblendvb %ymm12, %ymm0, %ymm6, %ymm0
2309 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2310 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm4[2,3,2,3,6,7,6,7]
2311 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm7 = ymm3[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
2312 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm7 = ymm7[2,3,2,2,6,7,6,6]
2313 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm7[0],ymm0[1],ymm7[2],ymm0[3],ymm7[4,5],ymm0[6],ymm7[7,8],ymm0[9],ymm7[10],ymm0[11],ymm7[12,13],ymm0[14],ymm7[15]
2314 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %ymm5
2315 ; AVX2-SLOW-NEXT:    vpshufb %xmm11, %xmm10, %xmm10
2316 ; AVX2-SLOW-NEXT:    vpbroadcastq 40(%rdi), %xmm11
2317 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm15 = xmm10[0],xmm11[1],xmm10[2,3],xmm11[4],xmm10[5],xmm11[6],xmm10[7]
2318 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdx), %ymm10
2319 ; AVX2-SLOW-NEXT:    vpshufb %xmm14, %xmm9, %xmm9
2320 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rcx), %ymm11
2321 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm8 = xmm8[1,2,2,2]
2322 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm9 = xmm9[0],xmm8[1],xmm9[2],xmm8[3],xmm9[4,5],xmm8[6],xmm9[7]
2323 ; AVX2-SLOW-NEXT:    vmovdqa 32(%r8), %ymm6
2324 ; AVX2-SLOW-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2325 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
2326 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm15[0,1,0,1]
2327 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,1,0,0]
2328 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm14, %ymm9, %ymm9
2329 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm13 = ymm10[3,2,3,3,7,6,7,7]
2330 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm14 = ymm11[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
2331 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm14 = ymm14[2,3,2,3,6,7,6,7]
2332 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm13 = ymm14[0],ymm13[1],ymm14[2],ymm13[3,4],ymm14[5,6,7,8],ymm13[9],ymm14[10],ymm13[11,12],ymm14[13,14,15]
2333 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,2,3,2]
2334 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = <u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u>
2335 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm0, %ymm13, %ymm1
2336 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm6[0,1,1,1]
2337 ; AVX2-SLOW-NEXT:    vpblendvb %ymm12, %ymm9, %ymm13, %ymm0
2338 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2339 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm12 = ymm2[2,3,2,3,6,7,6,7]
2340 ; AVX2-SLOW-NEXT:    vmovdqa %ymm5, %ymm9
2341 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm13 = ymm5[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
2342 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm13 = ymm13[2,3,2,2,6,7,6,6]
2343 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm12 = ymm13[0],ymm12[1],ymm13[2],ymm12[3],ymm13[4,5],ymm12[6],ymm13[7,8],ymm12[9],ymm13[10],ymm12[11],ymm13[12,13],ymm12[14],ymm13[15]
2344 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %ymm13
2345 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm15 = ymm13[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
2346 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm15[2,3,2,3,6,7,6,7]
2347 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %ymm15
2348 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm15[3,2,3,3,7,6,7,7]
2349 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm5[1],ymm0[2],ymm5[3,4],ymm0[5,6,7,8],ymm5[9],ymm0[10],ymm5[11,12],ymm0[13,14,15]
2350 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm12[2,3,2,2]
2351 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,2]
2352 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm5, %ymm0, %ymm0
2353 ; AVX2-SLOW-NEXT:    vpbroadcastq 56(%r8), %ymm5
2354 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = [0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0]
2355 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm1, %ymm5, %ymm12
2356 ; AVX2-SLOW-NEXT:    vpbroadcastq 24(%r8), %ymm1
2357 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm0, %ymm1, %ymm14
2358 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
2359 ; AVX2-SLOW-NEXT:    # ymm0 = mem[0,1,0,1]
2360 ; AVX2-SLOW-NEXT:    vpshufb %ymm0, %ymm11, %ymm1
2361 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm10[1,1,1,2,5,5,5,6]
2362 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm5[1],ymm1[2,3],ymm5[4],ymm1[5],ymm5[6],ymm1[7,8],ymm5[9],ymm1[10,11],ymm5[12],ymm1[13],ymm5[14],ymm1[15]
2363 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm5 = ymm3[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]
2364 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm5 = ymm5[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
2365 ; AVX2-SLOW-NEXT:    vmovdqa %ymm4, %ymm7
2366 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm6 = ymm4[0,1,2,1,4,5,6,5]
2367 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm6[2],ymm5[3],ymm6[4],ymm5[5,6],ymm6[7],ymm5[8,9],ymm6[10],ymm5[11],ymm6[12],ymm5[13,14],ymm6[15]
2368 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
2369 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,3,2,3]
2370 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm6 = <255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255>
2371 ; AVX2-SLOW-NEXT:    vpblendvb %ymm6, %ymm1, %ymm5, %ymm1
2372 ; AVX2-SLOW-NEXT:    vpshufb %ymm0, %ymm13, %ymm0
2373 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm15[1,1,1,2,5,5,5,6]
2374 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm5[1],ymm0[2,3],ymm5[4],ymm0[5],ymm5[6],ymm0[7,8],ymm5[9],ymm0[10,11],ymm5[12],ymm0[13],ymm5[14],ymm0[15]
2375 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm5 = ymm9[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]
2376 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm5 = ymm5[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
2377 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm2[0,1,2,1,4,5,6,5]
2378 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, %ymm8
2379 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3],ymm4[4],ymm5[5,6],ymm4[7],ymm5[8,9],ymm4[10],ymm5[11],ymm4[12],ymm5[13,14],ymm4[15]
2380 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]
2381 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,3,2,3]
2382 ; AVX2-SLOW-NEXT:    vpblendvb %ymm6, %ymm0, %ymm4, %ymm4
2383 ; AVX2-SLOW-NEXT:    vpbroadcastq 48(%r8), %ymm0
2384 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = [255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255]
2385 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm1, %ymm0, %ymm0
2386 ; AVX2-SLOW-NEXT:    vpbroadcastq 16(%r8), %ymm1
2387 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm4, %ymm1, %ymm1
2388 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm4 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
2389 ; AVX2-SLOW-NEXT:    vpshufb %ymm4, %ymm11, %ymm5
2390 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm6 = ymm10[3,0,3,0,7,4,7,4]
2391 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2],ymm5[3],ymm6[4,5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10],ymm5[11],ymm6[12,13],ymm5[14],ymm6[15]
2392 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm6 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
2393 ; AVX2-SLOW-NEXT:    vpshufb %ymm6, %ymm3, %ymm3
2394 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm7[1,1,2,2]
2395 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]
2396 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm3 = <255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255>
2397 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm5, %ymm2, %ymm2
2398 ; AVX2-SLOW-NEXT:    vpshufb %ymm4, %ymm13, %ymm4
2399 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm15[3,0,3,0,7,4,7,4]
2400 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]
2401 ; AVX2-SLOW-NEXT:    vpshufb %ymm6, %ymm9, %ymm5
2402 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm8[1,1,2,2]
2403 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2,3],ymm5[4],ymm6[5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10,11],ymm5[12],ymm6[13],ymm5[14],ymm6[15]
2404 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm4, %ymm5, %ymm3
2405 ; AVX2-SLOW-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
2406 ; AVX2-SLOW-NEXT:    # ymm4 = mem[1,1,2,2]
2407 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = [255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255]
2408 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm2, %ymm4, %ymm2
2409 ; AVX2-SLOW-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
2410 ; AVX2-SLOW-NEXT:    # ymm4 = mem[1,1,2,2]
2411 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm3, %ymm4, %ymm3
2412 ; AVX2-SLOW-NEXT:    vmovdqa %ymm3, 64(%r9)
2413 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, 224(%r9)
2414 ; AVX2-SLOW-NEXT:    vmovdqa %ymm1, 96(%r9)
2415 ; AVX2-SLOW-NEXT:    vmovdqa %ymm14, 128(%r9)
2416 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
2417 ; AVX2-SLOW-NEXT:    vmovaps %ymm1, 192(%r9)
2418 ; AVX2-SLOW-NEXT:    vmovdqa %ymm12, 288(%r9)
2419 ; AVX2-SLOW-NEXT:    vmovdqa %ymm0, 256(%r9)
2420 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2421 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 32(%r9)
2422 ; AVX2-SLOW-NEXT:    vmovups (%rsp), %ymm0 # 32-byte Reload
2423 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 160(%r9)
2424 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2425 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, (%r9)
2426 ; AVX2-SLOW-NEXT:    addq $72, %rsp
2427 ; AVX2-SLOW-NEXT:    vzeroupper
2428 ; AVX2-SLOW-NEXT:    retq
2430 ; AVX2-FAST-LABEL: store_i16_stride5_vf32:
2431 ; AVX2-FAST:       # %bb.0:
2432 ; AVX2-FAST-NEXT:    subq $40, %rsp
2433 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %ymm5
2434 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdi), %ymm3
2435 ; AVX2-FAST-NEXT:    vmovdqa 32(%rsi), %ymm4
2436 ; AVX2-FAST-NEXT:    vmovdqa (%r8), %ymm1
2437 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2438 ; AVX2-FAST-NEXT:    vmovdqa 32(%r8), %ymm2
2439 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2440 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %xmm0
2441 ; AVX2-FAST-NEXT:    vmovdqa 32(%rsi), %xmm8
2442 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm7 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
2443 ; AVX2-FAST-NEXT:    vpshufb %xmm7, %xmm0, %xmm6
2444 ; AVX2-FAST-NEXT:    vpbroadcastq 8(%rdi), %xmm9
2445 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0],xmm9[1],xmm6[2,3],xmm9[4],xmm6[5],xmm9[6],xmm6[7]
2446 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]
2447 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %xmm13
2448 ; AVX2-FAST-NEXT:    vmovdqa 32(%rcx), %xmm11
2449 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm10 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
2450 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm13, %xmm9
2451 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %xmm14
2452 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} xmm12 = xmm14[1,2,2,2]
2453 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm9 = xmm9[0],xmm12[1],xmm9[2],xmm12[3],xmm9[4,5],xmm12[6],xmm9[7]
2454 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm12 = ymm9[0,1,0,0]
2455 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
2456 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm6, %ymm12, %ymm12
2457 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm15 = ymm1[0,1,1,1]
2458 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
2459 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm12, %ymm15, %ymm1
2460 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, (%rsp) # 32-byte Spill
2461 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %xmm12
2462 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm12[0],xmm0[0],xmm12[1],xmm0[1],xmm12[2],xmm0[2],xmm12[3],xmm0[3]
2463 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdx), %xmm12
2464 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm13 = xmm13[0],xmm14[0],xmm13[1],xmm14[1],xmm13[2],xmm14[2],xmm13[3],xmm14[3]
2465 ; AVX2-FAST-NEXT:    vpshufb %xmm7, %xmm8, %xmm7
2466 ; AVX2-FAST-NEXT:    vpbroadcastq 40(%rdi), %xmm14
2467 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm7 = xmm7[0],xmm14[1],xmm7[2,3],xmm14[4],xmm7[5],xmm14[6],xmm7[7]
2468 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm11, %xmm10
2469 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} xmm14 = xmm12[1,2,2,2]
2470 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm10 = xmm10[0],xmm14[1],xmm10[2],xmm14[3],xmm10[4,5],xmm14[6],xmm10[7]
2471 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm14 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
2472 ; AVX2-FAST-NEXT:    vpshufb %xmm14, %xmm0, %xmm0
2473 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
2474 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]
2475 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,1,0,0]
2476 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm7, %ymm10, %ymm7
2477 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm15 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
2478 ; AVX2-FAST-NEXT:    vpshufb %xmm15, %xmm13, %xmm9
2479 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]
2480 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm13 = <255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255>
2481 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm0, %ymm9, %ymm0
2482 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm2[0,1,1,1]
2483 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm7, %ymm9, %ymm1
2484 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2485 ; AVX2-FAST-NEXT:    vpbroadcastq (%r8), %ymm7
2486 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
2487 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm0, %ymm7, %ymm0
2488 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2489 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdi), %xmm0
2490 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],xmm8[3]
2491 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdx), %ymm9
2492 ; AVX2-FAST-NEXT:    vpshufb %xmm14, %xmm0, %xmm0
2493 ; AVX2-FAST-NEXT:    vmovdqa 32(%rcx), %ymm10
2494 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
2495 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]
2496 ; AVX2-FAST-NEXT:    vpshufb %xmm15, %xmm8, %xmm8
2497 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,0,1]
2498 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm0, %ymm8, %ymm0
2499 ; AVX2-FAST-NEXT:    vpbroadcastq 32(%r8), %ymm8
2500 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm0, %ymm8, %ymm8
2501 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]
2502 ; AVX2-FAST-NEXT:    # ymm0 = mem[0,1,0,1]
2503 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm4, %ymm1
2504 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm11 = ymm3[2,3,2,3,6,7,6,7]
2505 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm11[1],ymm1[2],ymm11[3],ymm1[4,5],ymm11[6],ymm1[7,8],ymm11[9],ymm1[10],ymm11[11],ymm1[12,13],ymm11[14],ymm1[15]
2506 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,2]
2507 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} ymm12 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]
2508 ; AVX2-FAST-NEXT:    vpshufb %ymm12, %ymm10, %ymm11
2509 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm13 = ymm9[3,2,3,3,7,6,7,7]
2510 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm11 = ymm11[0],ymm13[1],ymm11[2],ymm13[3,4],ymm11[5,6,7,8],ymm13[9],ymm11[10],ymm13[11,12],ymm11[13,14,15]
2511 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[2,2,3,2]
2512 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm13 = <u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u>
2513 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm1, %ymm11, %ymm1
2514 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %ymm11
2515 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm11, %ymm0
2516 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm14 = ymm5[2,3,2,3,6,7,6,7]
2517 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm14[1],ymm0[2],ymm14[3],ymm0[4,5],ymm14[6],ymm0[7,8],ymm14[9],ymm0[10],ymm14[11],ymm0[12,13],ymm14[14],ymm0[15]
2518 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %ymm14
2519 ; AVX2-FAST-NEXT:    vpshufb %ymm12, %ymm14, %ymm12
2520 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %ymm15
2521 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm6 = ymm15[3,2,3,3,7,6,7,7]
2522 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm12[0],ymm6[1],ymm12[2],ymm6[3,4],ymm12[5,6,7,8],ymm6[9],ymm12[10],ymm6[11,12],ymm12[13,14,15]
2523 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
2524 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,2]
2525 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm0, %ymm6, %ymm0
2526 ; AVX2-FAST-NEXT:    vpbroadcastq 56(%r8), %ymm6
2527 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm13 = [0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0]
2528 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm1, %ymm6, %ymm12
2529 ; AVX2-FAST-NEXT:    vpbroadcastq 24(%r8), %ymm1
2530 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm0, %ymm1, %ymm13
2531 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
2532 ; AVX2-FAST-NEXT:    # ymm2 = mem[0,1,0,1]
2533 ; AVX2-FAST-NEXT:    vpshufb %ymm2, %ymm10, %ymm1
2534 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm6 = ymm9[1,1,1,2,5,5,5,6]
2535 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm6[1],ymm1[2,3],ymm6[4],ymm1[5],ymm6[6],ymm1[7,8],ymm6[9],ymm1[10,11],ymm6[12],ymm1[13],ymm6[14],ymm1[15]
2536 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm6 = [22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0,22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0]
2537 ; AVX2-FAST-NEXT:    # ymm6 = mem[0,1,0,1]
2538 ; AVX2-FAST-NEXT:    vpshufb %ymm6, %ymm4, %ymm0
2539 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm7 = ymm3[0,1,2,1,4,5,6,5]
2540 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm7[2],ymm0[3],ymm7[4],ymm0[5,6],ymm7[7],ymm0[8,9],ymm7[10],ymm0[11],ymm7[12],ymm0[13,14],ymm7[15]
2541 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
2542 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]
2543 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255>
2544 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm1, %ymm0, %ymm0
2545 ; AVX2-FAST-NEXT:    vpshufb %ymm2, %ymm14, %ymm1
2546 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm2 = ymm15[1,1,1,2,5,5,5,6]
2547 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]
2548 ; AVX2-FAST-NEXT:    vpshufb %ymm6, %ymm11, %ymm2
2549 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm6 = ymm5[0,1,2,1,4,5,6,5]
2550 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm6[2],ymm2[3],ymm6[4],ymm2[5,6],ymm6[7],ymm2[8,9],ymm6[10],ymm2[11],ymm6[12],ymm2[13,14],ymm6[15]
2551 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
2552 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
2553 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm1, %ymm2, %ymm1
2554 ; AVX2-FAST-NEXT:    vpbroadcastq 48(%r8), %ymm2
2555 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = [255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255]
2556 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm0, %ymm2, %ymm0
2557 ; AVX2-FAST-NEXT:    vpbroadcastq 16(%r8), %ymm2
2558 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm1, %ymm2, %ymm1
2559 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
2560 ; AVX2-FAST-NEXT:    vpshufb %ymm2, %ymm10, %ymm6
2561 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm7 = ymm9[3,0,3,0,7,4,7,4]
2562 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm7[0],ymm6[1],ymm7[2],ymm6[3],ymm7[4,5],ymm6[6],ymm7[7,8],ymm6[9],ymm7[10],ymm6[11],ymm7[12,13],ymm6[14],ymm7[15]
2563 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
2564 ; AVX2-FAST-NEXT:    vpshufb %ymm7, %ymm4, %ymm4
2565 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[1,1,2,2]
2566 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2,3],ymm4[4],ymm3[5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10,11],ymm4[12],ymm3[13],ymm4[14],ymm3[15]
2567 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = <255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255>
2568 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm6, %ymm3, %ymm3
2569 ; AVX2-FAST-NEXT:    vpshufb %ymm2, %ymm14, %ymm2
2570 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm6 = ymm15[3,0,3,0,7,4,7,4]
2571 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm6[0],ymm2[1],ymm6[2],ymm2[3],ymm6[4,5],ymm2[6],ymm6[7,8],ymm2[9],ymm6[10],ymm2[11],ymm6[12,13],ymm2[14],ymm6[15]
2572 ; AVX2-FAST-NEXT:    vpshufb %ymm7, %ymm11, %ymm6
2573 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[1,1,2,2]
2574 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0],ymm6[1],ymm5[2,3],ymm6[4],ymm5[5],ymm6[6],ymm5[7,8],ymm6[9],ymm5[10,11],ymm6[12],ymm5[13],ymm6[14],ymm5[15]
2575 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm2, %ymm5, %ymm2
2576 ; AVX2-FAST-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
2577 ; AVX2-FAST-NEXT:    # ymm4 = mem[1,1,2,2]
2578 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm5 = [255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255]
2579 ; AVX2-FAST-NEXT:    vpblendvb %ymm5, %ymm3, %ymm4, %ymm3
2580 ; AVX2-FAST-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
2581 ; AVX2-FAST-NEXT:    # ymm4 = mem[1,1,2,2]
2582 ; AVX2-FAST-NEXT:    vpblendvb %ymm5, %ymm2, %ymm4, %ymm2
2583 ; AVX2-FAST-NEXT:    vmovdqa %ymm2, 64(%r9)
2584 ; AVX2-FAST-NEXT:    vmovdqa %ymm3, 224(%r9)
2585 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, 96(%r9)
2586 ; AVX2-FAST-NEXT:    vmovdqa %ymm13, 128(%r9)
2587 ; AVX2-FAST-NEXT:    vmovdqa %ymm12, 288(%r9)
2588 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, 256(%r9)
2589 ; AVX2-FAST-NEXT:    vmovdqa %ymm8, 160(%r9)
2590 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2591 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 192(%r9)
2592 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2593 ; AVX2-FAST-NEXT:    vmovaps %ymm0, (%r9)
2594 ; AVX2-FAST-NEXT:    vmovups (%rsp), %ymm0 # 32-byte Reload
2595 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 32(%r9)
2596 ; AVX2-FAST-NEXT:    addq $40, %rsp
2597 ; AVX2-FAST-NEXT:    vzeroupper
2598 ; AVX2-FAST-NEXT:    retq
2600 ; AVX2-FAST-PERLANE-LABEL: store_i16_stride5_vf32:
2601 ; AVX2-FAST-PERLANE:       # %bb.0:
2602 ; AVX2-FAST-PERLANE-NEXT:    subq $40, %rsp
2603 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %ymm5
2604 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdi), %ymm3
2605 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rsi), %ymm4
2606 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%r8), %ymm1
2607 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2608 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%r8), %ymm2
2609 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2610 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %xmm0
2611 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rsi), %xmm8
2612 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm7 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
2613 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm0, %xmm6
2614 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 8(%rdi), %xmm9
2615 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0],xmm9[1],xmm6[2,3],xmm9[4],xmm6[5],xmm9[6],xmm6[7]
2616 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,1,0,1]
2617 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %xmm13
2618 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rcx), %xmm11
2619 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm10 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
2620 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm13, %xmm9
2621 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %xmm14
2622 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm12 = xmm14[1,2,2,2]
2623 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm9 = xmm9[0],xmm12[1],xmm9[2],xmm12[3],xmm9[4,5],xmm12[6],xmm9[7]
2624 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm12 = ymm9[0,1,0,0]
2625 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
2626 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm6, %ymm12, %ymm12
2627 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm15 = ymm1[0,1,1,1]
2628 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm6 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
2629 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm12, %ymm15, %ymm1
2630 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, (%rsp) # 32-byte Spill
2631 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %xmm12
2632 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm12[0],xmm0[0],xmm12[1],xmm0[1],xmm12[2],xmm0[2],xmm12[3],xmm0[3]
2633 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdx), %xmm12
2634 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm13 = xmm13[0],xmm14[0],xmm13[1],xmm14[1],xmm13[2],xmm14[2],xmm13[3],xmm14[3]
2635 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm8, %xmm7
2636 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 40(%rdi), %xmm14
2637 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm7 = xmm7[0],xmm14[1],xmm7[2,3],xmm14[4],xmm7[5],xmm14[6],xmm7[7]
2638 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm11, %xmm10
2639 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm14 = xmm12[1,2,2,2]
2640 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm10 = xmm10[0],xmm14[1],xmm10[2],xmm14[3],xmm10[4,5],xmm14[6],xmm10[7]
2641 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm14 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
2642 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm14, %xmm0, %xmm0
2643 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
2644 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]
2645 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,1,0,0]
2646 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm7, %ymm10, %ymm7
2647 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm15 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
2648 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm15, %xmm13, %xmm9
2649 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,1,0,1]
2650 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm13 = <255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255>
2651 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm13, %ymm0, %ymm9, %ymm0
2652 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm2[0,1,1,1]
2653 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm7, %ymm9, %ymm1
2654 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2655 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq (%r8), %ymm7
2656 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm1 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
2657 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm1, %ymm0, %ymm7, %ymm0
2658 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2659 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdi), %xmm0
2660 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],xmm8[3]
2661 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdx), %ymm9
2662 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm14, %xmm0, %xmm0
2663 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rcx), %ymm10
2664 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
2665 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]
2666 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm15, %xmm8, %xmm8
2667 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,0,1]
2668 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm13, %ymm0, %ymm8, %ymm0
2669 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 32(%r8), %ymm8
2670 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm1, %ymm0, %ymm8, %ymm8
2671 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]
2672 ; AVX2-FAST-PERLANE-NEXT:    # ymm0 = mem[0,1,0,1]
2673 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm4, %ymm1
2674 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm11 = ymm3[2,3,2,3,6,7,6,7]
2675 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm11[1],ymm1[2],ymm11[3],ymm1[4,5],ymm11[6],ymm1[7,8],ymm11[9],ymm1[10],ymm11[11],ymm1[12,13],ymm11[14],ymm1[15]
2676 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,2]
2677 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} ymm12 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]
2678 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm12, %ymm10, %ymm11
2679 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm13 = ymm9[3,2,3,3,7,6,7,7]
2680 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm11 = ymm11[0],ymm13[1],ymm11[2],ymm13[3,4],ymm11[5,6,7,8],ymm13[9],ymm11[10],ymm13[11,12],ymm11[13,14,15]
2681 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[2,2,3,2]
2682 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm13 = <u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u>
2683 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm13, %ymm1, %ymm11, %ymm1
2684 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %ymm11
2685 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm11, %ymm0
2686 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm14 = ymm5[2,3,2,3,6,7,6,7]
2687 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm14[1],ymm0[2],ymm14[3],ymm0[4,5],ymm14[6],ymm0[7,8],ymm14[9],ymm0[10],ymm14[11],ymm0[12,13],ymm14[14],ymm0[15]
2688 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %ymm14
2689 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm12, %ymm14, %ymm12
2690 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %ymm15
2691 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm6 = ymm15[3,2,3,3,7,6,7,7]
2692 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm6 = ymm12[0],ymm6[1],ymm12[2],ymm6[3,4],ymm12[5,6,7,8],ymm6[9],ymm12[10],ymm6[11,12],ymm12[13,14,15]
2693 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
2694 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,2,3,2]
2695 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm13, %ymm0, %ymm6, %ymm0
2696 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 56(%r8), %ymm6
2697 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm13 = [0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0]
2698 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm13, %ymm1, %ymm6, %ymm12
2699 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 24(%r8), %ymm1
2700 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm13, %ymm0, %ymm1, %ymm13
2701 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
2702 ; AVX2-FAST-PERLANE-NEXT:    # ymm2 = mem[0,1,0,1]
2703 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm2, %ymm10, %ymm1
2704 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm6 = ymm9[1,1,1,2,5,5,5,6]
2705 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm6[1],ymm1[2,3],ymm6[4],ymm1[5],ymm6[6],ymm1[7,8],ymm6[9],ymm1[10,11],ymm6[12],ymm1[13],ymm6[14],ymm1[15]
2706 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm6 = [22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0,22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0]
2707 ; AVX2-FAST-PERLANE-NEXT:    # ymm6 = mem[0,1,0,1]
2708 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm6, %ymm4, %ymm0
2709 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm7 = ymm3[0,1,2,1,4,5,6,5]
2710 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm7[2],ymm0[3],ymm7[4],ymm0[5,6],ymm7[7],ymm0[8,9],ymm7[10],ymm0[11],ymm7[12],ymm0[13,14],ymm7[15]
2711 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
2712 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]
2713 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255>
2714 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm1, %ymm0, %ymm0
2715 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm2, %ymm14, %ymm1
2716 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm2 = ymm15[1,1,1,2,5,5,5,6]
2717 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]
2718 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm6, %ymm11, %ymm2
2719 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm6 = ymm5[0,1,2,1,4,5,6,5]
2720 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm6[2],ymm2[3],ymm6[4],ymm2[5,6],ymm6[7],ymm2[8,9],ymm6[10],ymm2[11],ymm6[12],ymm2[13,14],ymm6[15]
2721 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
2722 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
2723 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm1, %ymm2, %ymm1
2724 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 48(%r8), %ymm2
2725 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm6 = [255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255]
2726 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm0, %ymm2, %ymm0
2727 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 16(%r8), %ymm2
2728 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm1, %ymm2, %ymm1
2729 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
2730 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm2, %ymm10, %ymm6
2731 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm7 = ymm9[3,0,3,0,7,4,7,4]
2732 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm6 = ymm7[0],ymm6[1],ymm7[2],ymm6[3],ymm7[4,5],ymm6[6],ymm7[7,8],ymm6[9],ymm7[10],ymm6[11],ymm7[12,13],ymm6[14],ymm7[15]
2733 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm7 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
2734 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm7, %ymm4, %ymm4
2735 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[1,1,2,2]
2736 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2,3],ymm4[4],ymm3[5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10,11],ymm4[12],ymm3[13],ymm4[14],ymm3[15]
2737 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm4 = <255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255>
2738 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm6, %ymm3, %ymm3
2739 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm2, %ymm14, %ymm2
2740 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm6 = ymm15[3,0,3,0,7,4,7,4]
2741 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm6[0],ymm2[1],ymm6[2],ymm2[3],ymm6[4,5],ymm2[6],ymm6[7,8],ymm2[9],ymm6[10],ymm2[11],ymm6[12,13],ymm2[14],ymm6[15]
2742 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm7, %ymm11, %ymm6
2743 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[1,1,2,2]
2744 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0],ymm6[1],ymm5[2,3],ymm6[4],ymm5[5],ymm6[6],ymm5[7,8],ymm6[9],ymm5[10,11],ymm6[12],ymm5[13],ymm6[14],ymm5[15]
2745 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm2, %ymm5, %ymm2
2746 ; AVX2-FAST-PERLANE-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
2747 ; AVX2-FAST-PERLANE-NEXT:    # ymm4 = mem[1,1,2,2]
2748 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm5 = [255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255]
2749 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm3, %ymm4, %ymm3
2750 ; AVX2-FAST-PERLANE-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
2751 ; AVX2-FAST-PERLANE-NEXT:    # ymm4 = mem[1,1,2,2]
2752 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm2, %ymm4, %ymm2
2753 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, 64(%r9)
2754 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm3, 224(%r9)
2755 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm1, 96(%r9)
2756 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm13, 128(%r9)
2757 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm12, 288(%r9)
2758 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm0, 256(%r9)
2759 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm8, 160(%r9)
2760 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2761 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 192(%r9)
2762 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
2763 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, (%r9)
2764 ; AVX2-FAST-PERLANE-NEXT:    vmovups (%rsp), %ymm0 # 32-byte Reload
2765 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 32(%r9)
2766 ; AVX2-FAST-PERLANE-NEXT:    addq $40, %rsp
2767 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
2768 ; AVX2-FAST-PERLANE-NEXT:    retq
2770 ; AVX512F-SLOW-LABEL: store_i16_stride5_vf32:
2771 ; AVX512F-SLOW:       # %bb.0:
2772 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdx), %xmm9
2773 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %xmm12
2774 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rcx), %xmm10
2775 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3]
2776 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm13 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
2777 ; AVX512F-SLOW-NEXT:    vpshufb %xmm13, %xmm0, %xmm0
2778 ; AVX512F-SLOW-NEXT:    vmovdqa64 (%rdx), %ymm17
2779 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdx), %ymm5
2780 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm17[3,2,3,3,7,6,7,7]
2781 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %ymm1
2782 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm3 = ymm1[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
2783 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[2,3,2,3,6,7,6,7]
2784 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2],ymm2[3,4],ymm3[5,6,7,8],ymm2[9],ymm3[10],ymm2[11,12],ymm3[13,14,15]
2785 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,2,3,2]
2786 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm2[0,1,2,3],zmm0[0,1,0,1]
2787 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %xmm14
2788 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rsi), %xmm8
2789 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %xmm15
2790 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdi), %xmm2
2791 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3]
2792 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]
2793 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]
2794 ; AVX512F-SLOW-NEXT:    vmovdqa64 (%rdi), %ymm20
2795 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm20[2,3,2,3,6,7,6,7]
2796 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %ymm6
2797 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm7 = ymm6[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
2798 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm7 = ymm7[2,3,2,2,6,7,6,6]
2799 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm7[0],ymm3[1],ymm7[2],ymm3[3],ymm7[4,5],ymm3[6],ymm7[7,8],ymm3[9],ymm7[10],ymm3[11],ymm7[12,13],ymm3[14],ymm7[15]
2800 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,2]
2801 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm3 = zmm3[0,1,2,3],zmm2[0,1,0,1]
2802 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
2803 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm0, %zmm16, %zmm3
2804 ; AVX512F-SLOW-NEXT:    vpbroadcastq 24(%r8), %ymm0
2805 ; AVX512F-SLOW-NEXT:    vpbroadcastq 32(%r8), %ymm2
2806 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm19
2807 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm3, %zmm19
2808 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rsi), %ymm3
2809 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
2810 ; AVX512F-SLOW-NEXT:    vpshufb %ymm2, %ymm3, %ymm0
2811 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm2, %ymm22
2812 ; AVX512F-SLOW-NEXT:    vmovdqa64 32(%rdi), %ymm18
2813 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm18[1,1,2,2]
2814 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm7[0],ymm0[1],ymm7[2,3],ymm0[4],ymm7[5],ymm0[6],ymm7[7,8],ymm0[9],ymm7[10,11],ymm0[12],ymm7[13],ymm0[14],ymm7[15]
2815 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm7 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
2816 ; AVX512F-SLOW-NEXT:    vpshufb %xmm7, %xmm8, %xmm8
2817 ; AVX512F-SLOW-NEXT:    vpbroadcastq 40(%rdi), %xmm11
2818 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm8 = xmm8[0],xmm11[1],xmm8[2,3],xmm11[4],xmm8[5],xmm11[6],xmm8[7]
2819 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[0,1,0,1]
2820 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm8, %zmm11
2821 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rcx), %ymm0
2822 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm4 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
2823 ; AVX512F-SLOW-NEXT:    vpshufb %ymm4, %ymm0, %ymm2
2824 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm4, %ymm23
2825 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm8 = ymm5[3,0,3,0,7,4,7,4]
2826 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm8[0],ymm2[1],ymm8[2],ymm2[3],ymm8[4,5],ymm2[6],ymm8[7,8],ymm2[9],ymm8[10],ymm2[11],ymm8[12,13],ymm2[14],ymm8[15]
2827 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm8 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
2828 ; AVX512F-SLOW-NEXT:    vpshufb %xmm8, %xmm10, %xmm10
2829 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm9 = xmm9[1,2,2,2]
2830 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm9 = xmm10[0],xmm9[1],xmm10[2],xmm9[3],xmm10[4,5],xmm9[6],xmm10[7]
2831 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,1,0,0]
2832 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm9, %zmm2
2833 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm11, %zmm2
2834 ; AVX512F-SLOW-NEXT:    vmovdqa (%r8), %ymm9
2835 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%r8), %ymm10
2836 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]
2837 ; AVX512F-SLOW-NEXT:    vpshufb %ymm11, %ymm10, %ymm4
2838 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,1,1,1]
2839 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm21 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]
2840 ; AVX512F-SLOW-NEXT:    vpandnq %ymm10, %ymm21, %ymm10
2841 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm10, %zmm10
2842 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm2, %zmm10
2843 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %xmm2
2844 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm12[0],xmm2[0],xmm12[1],xmm2[1],xmm12[2],xmm2[2],xmm12[3],xmm2[3]
2845 ; AVX512F-SLOW-NEXT:    vpshufb %xmm13, %xmm4, %xmm4
2846 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,0,1]
2847 ; AVX512F-SLOW-NEXT:    vpshufb %xmm8, %xmm12, %xmm8
2848 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[1,2,2,2]
2849 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm2 = xmm8[0],xmm2[1],xmm8[2],xmm2[3],xmm8[4,5],xmm2[6],xmm8[7]
2850 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]
2851 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm4, %zmm2
2852 ; AVX512F-SLOW-NEXT:    vpshufb %xmm7, %xmm14, %xmm4
2853 ; AVX512F-SLOW-NEXT:    vpbroadcastq 8(%rdi), %xmm7
2854 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0],xmm7[1],xmm4[2,3],xmm7[4],xmm4[5],xmm7[6],xmm4[7]
2855 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm15[0],xmm14[0],xmm15[1],xmm14[1],xmm15[2],xmm14[2],xmm15[3],xmm14[3]
2856 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[0,2,1,3]
2857 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,5,6]
2858 ; AVX512F-SLOW-NEXT:    vinserti32x4 $2, %xmm4, %zmm7, %zmm4
2859 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} zmm4 = zmm4[0,1,0,1,4,5,4,5]
2860 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
2861 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm2, %zmm7, %zmm4
2862 ; AVX512F-SLOW-NEXT:    vpbroadcastq (%r8), %ymm2
2863 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm9[0,1,1,1]
2864 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm8, %zmm2, %zmm2
2865 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm4, %zmm2
2866 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm18[0,1,2,1,4,5,6,5]
2867 ; AVX512F-SLOW-NEXT:    vprolq $16, %ymm3, %ymm8
2868 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm8[0,1],ymm4[2],ymm8[3],ymm4[4],ymm8[5,6],ymm4[7],ymm8[8,9],ymm4[10],ymm8[11],ymm4[12],ymm8[13,14],ymm4[15]
2869 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,3,2,3]
2870 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm8 = ymm18[2,3,2,3,6,7,6,7]
2871 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
2872 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[2,3,2,2,6,7,6,6]
2873 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm8[1],ymm3[2],ymm8[3],ymm3[4,5],ymm8[6],ymm3[7,8],ymm8[9],ymm3[10],ymm8[11],ymm3[12,13],ymm8[14],ymm3[15]
2874 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,2]
2875 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm4, %zmm4
2876 ; AVX512F-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
2877 ; AVX512F-SLOW-NEXT:    # ymm3 = mem[0,1,0,1]
2878 ; AVX512F-SLOW-NEXT:    vpshufb %ymm3, %ymm0, %ymm8
2879 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm12 = ymm5[1,1,1,2,5,5,5,6]
2880 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm8[0],ymm12[1],ymm8[2,3],ymm12[4],ymm8[5],ymm12[6],ymm8[7,8],ymm12[9],ymm8[10,11],ymm12[12],ymm8[13],ymm12[14],ymm8[15]
2881 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,2,3]
2882 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm5[3,2,3,3,7,6,7,7]
2883 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
2884 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]
2885 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm5[1],ymm0[2],ymm5[3,4],ymm0[5,6,7,8],ymm5[9],ymm0[10],ymm5[11,12],ymm0[13,14,15]
2886 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,2]
2887 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm8, %zmm0
2888 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm4, %zmm7, %zmm0
2889 ; AVX512F-SLOW-NEXT:    vpbroadcastq 48(%r8), %ymm4
2890 ; AVX512F-SLOW-NEXT:    vpbroadcastq 56(%r8), %ymm5
2891 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm5, %zmm4, %zmm4
2892 ; AVX512F-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm4
2893 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm22, %ymm0
2894 ; AVX512F-SLOW-NEXT:    vpshufb %ymm0, %ymm6, %ymm0
2895 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm20[1,1,2,2]
2896 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm5[0],ymm0[1],ymm5[2,3],ymm0[4],ymm5[5],ymm0[6],ymm5[7,8],ymm0[9],ymm5[10,11],ymm0[12],ymm5[13],ymm0[14],ymm5[15]
2897 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm20[0,1,2,1,4,5,6,5]
2898 ; AVX512F-SLOW-NEXT:    vprolq $16, %ymm6, %ymm6
2899 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm6[0,1],ymm5[2],ymm6[3],ymm5[4],ymm6[5,6],ymm5[7],ymm6[8,9],ymm5[10],ymm6[11],ymm5[12],ymm6[13,14],ymm5[15]
2900 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,3,2,3]
2901 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm5, %zmm0, %zmm0
2902 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm23, %ymm5
2903 ; AVX512F-SLOW-NEXT:    vpshufb %ymm5, %ymm1, %ymm5
2904 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm6 = ymm17[3,0,3,0,7,4,7,4]
2905 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2],ymm5[3],ymm6[4,5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10],ymm5[11],ymm6[12,13],ymm5[14],ymm6[15]
2906 ; AVX512F-SLOW-NEXT:    vpshufb %ymm3, %ymm1, %ymm1
2907 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm17[1,1,1,2,5,5,5,6]
2908 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm3[1],ymm1[2,3],ymm3[4],ymm1[5],ymm3[6],ymm1[7,8],ymm3[9],ymm1[10,11],ymm3[12],ymm1[13],ymm3[14],ymm1[15]
2909 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
2910 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm1, %zmm5, %zmm1
2911 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm0, %zmm16, %zmm1
2912 ; AVX512F-SLOW-NEXT:    vpbroadcastq 16(%r8), %ymm0
2913 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm3 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]
2914 ; AVX512F-SLOW-NEXT:    vpandn %ymm0, %ymm3, %ymm0
2915 ; AVX512F-SLOW-NEXT:    vpshufb %ymm11, %ymm9, %ymm3
2916 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm3, %zmm0
2917 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm1, %zmm0
2918 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm0, 64(%r9)
2919 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm4, 256(%r9)
2920 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm2, (%r9)
2921 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm10, 192(%r9)
2922 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm19, 128(%r9)
2923 ; AVX512F-SLOW-NEXT:    vzeroupper
2924 ; AVX512F-SLOW-NEXT:    retq
2926 ; AVX512F-FAST-LABEL: store_i16_stride5_vf32:
2927 ; AVX512F-FAST:       # %bb.0:
2928 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rsi), %ymm5
2929 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
2930 ; AVX512F-FAST-NEXT:    vpshufb %ymm11, %ymm5, %ymm0
2931 ; AVX512F-FAST-NEXT:    vmovdqa64 32(%rdi), %ymm19
2932 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm19[1,1,2,2]
2933 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
2934 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %xmm10
2935 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rsi), %xmm2
2936 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm12 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
2937 ; AVX512F-FAST-NEXT:    vpshufb %xmm12, %xmm2, %xmm1
2938 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm2, %xmm21
2939 ; AVX512F-FAST-NEXT:    vpbroadcastq 40(%rdi), %xmm2
2940 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2,3],xmm2[4],xmm1[5],xmm2[6],xmm1[7]
2941 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]
2942 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm0
2943 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %ymm2
2944 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rcx), %ymm8
2945 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm3 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
2946 ; AVX512F-FAST-NEXT:    vpshufb %ymm3, %ymm8, %ymm1
2947 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm3, %ymm20
2948 ; AVX512F-FAST-NEXT:    vmovdqa64 (%rdx), %ymm18
2949 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdx), %ymm9
2950 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm4 = ymm9[3,0,3,0,7,4,7,4]
2951 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm4[0],ymm1[1],ymm4[2],ymm1[3],ymm4[4,5],ymm1[6],ymm4[7,8],ymm1[9],ymm4[10],ymm1[11],ymm4[12,13],ymm1[14],ymm4[15]
2952 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rcx), %xmm4
2953 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm15 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
2954 ; AVX512F-FAST-NEXT:    vpshufb %xmm15, %xmm4, %xmm13
2955 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdx), %xmm6
2956 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} xmm14 = xmm6[1,2,2,2]
2957 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm13 = xmm13[0],xmm14[1],xmm13[2],xmm14[3],xmm13[4,5],xmm14[6],xmm13[7]
2958 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[0,1,0,0]
2959 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm1, %zmm13, %zmm1
2960 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm1
2961 ; AVX512F-FAST-NEXT:    vmovdqa (%r8), %ymm0
2962 ; AVX512F-FAST-NEXT:    vmovdqa 32(%r8), %ymm14
2963 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]
2964 ; AVX512F-FAST-NEXT:    vpshufb %ymm7, %ymm14, %ymm3
2965 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm7, %ymm24
2966 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm14 = ymm14[0,1,1,1]
2967 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm16 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]
2968 ; AVX512F-FAST-NEXT:    vpandnq %ymm14, %ymm16, %ymm14
2969 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm14, %zmm17
2970 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm1, %zmm17
2971 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %xmm1
2972 ; AVX512F-FAST-NEXT:    vpshufb %xmm15, %xmm1, %xmm3
2973 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %xmm14
2974 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} xmm15 = xmm14[1,2,2,2]
2975 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm15[1],xmm3[2],xmm15[3],xmm3[4,5],xmm15[6],xmm3[7]
2976 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm14[0],xmm1[1],xmm14[1],xmm1[2],xmm14[2],xmm1[3],xmm14[3]
2977 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm7 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
2978 ; AVX512F-FAST-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
2979 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm7, %xmm22
2980 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm14 = [0,1,0,1,8,9,8,8]
2981 ; AVX512F-FAST-NEXT:    vpermi2q %zmm3, %zmm1, %zmm14
2982 ; AVX512F-FAST-NEXT:    vpshufb %xmm12, %xmm10, %xmm1
2983 ; AVX512F-FAST-NEXT:    vpbroadcastq 8(%rdi), %xmm3
2984 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm3[1],xmm1[2,3],xmm3[4],xmm1[5],xmm3[6],xmm1[7]
2985 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %xmm3
2986 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdi), %xmm12
2987 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm10[0],xmm3[1],xmm10[1],xmm3[2],xmm10[2],xmm3[3],xmm10[3]
2988 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm7 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
2989 ; AVX512F-FAST-NEXT:    vpshufb %xmm7, %xmm3, %xmm3
2990 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm7, %xmm23
2991 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm1, %zmm3, %zmm1
2992 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} zmm1 = zmm1[0,1,0,1,4,5,4,5]
2993 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm16 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
2994 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm14, %zmm16, %zmm1
2995 ; AVX512F-FAST-NEXT:    vpbroadcastq (%r8), %ymm3
2996 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm0[0,1,1,1]
2997 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm10, %zmm3, %zmm10
2998 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm1, %zmm10
2999 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %ymm15
3000 ; AVX512F-FAST-NEXT:    vpshufb %ymm11, %ymm15, %ymm1
3001 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %ymm14
3002 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm14[1,1,2,2]
3003 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm3[0],ymm1[1],ymm3[2,3],ymm1[4],ymm3[5],ymm1[6],ymm3[7,8],ymm1[9],ymm3[10,11],ymm1[12],ymm3[13],ymm1[14],ymm3[15]
3004 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm3 = ymm14[0,1,2,1,4,5,6,5]
3005 ; AVX512F-FAST-NEXT:    vprolq $16, %ymm15, %ymm13
3006 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm13[0,1],ymm3[2],ymm13[3],ymm3[4],ymm13[5,6],ymm3[7],ymm13[8,9],ymm3[10],ymm13[11],ymm3[12],ymm13[13,14],ymm3[15]
3007 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]
3008 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm1, %zmm3
3009 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm20, %ymm1
3010 ; AVX512F-FAST-NEXT:    vpshufb %ymm1, %ymm2, %ymm1
3011 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm13 = ymm18[3,0,3,0,7,4,7,4]
3012 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0],ymm1[1],ymm13[2],ymm1[3],ymm13[4,5],ymm1[6],ymm13[7,8],ymm1[9],ymm13[10],ymm1[11],ymm13[12,13],ymm1[14],ymm13[15]
3013 ; AVX512F-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
3014 ; AVX512F-FAST-NEXT:    # ymm1 = mem[0,1,0,1]
3015 ; AVX512F-FAST-NEXT:    vpshufb %ymm1, %ymm2, %ymm7
3016 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm11 = ymm18[1,1,1,2,5,5,5,6]
3017 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm7 = ymm7[0],ymm11[1],ymm7[2,3],ymm11[4],ymm7[5],ymm11[6],ymm7[7,8],ymm11[9],ymm7[10,11],ymm11[12],ymm7[13],ymm11[14],ymm7[15]
3018 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[2,3,2,3]
3019 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm13, %zmm7
3020 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm20 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
3021 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm3, %zmm20, %zmm7
3022 ; AVX512F-FAST-NEXT:    vpbroadcastq 16(%r8), %ymm3
3023 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm13 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]
3024 ; AVX512F-FAST-NEXT:    vpandn %ymm3, %ymm13, %ymm3
3025 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm24, %ymm11
3026 ; AVX512F-FAST-NEXT:    vpshufb %ymm11, %ymm0, %ymm0
3027 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm0
3028 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm7, %zmm0
3029 ; AVX512F-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm13 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]
3030 ; AVX512F-FAST-NEXT:    # ymm13 = mem[0,1,0,1]
3031 ; AVX512F-FAST-NEXT:    vpshufb %ymm13, %ymm5, %ymm3
3032 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm7 = ymm19[2,3,2,3,6,7,6,7]
3033 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm7[1],ymm3[2],ymm7[3],ymm3[4,5],ymm7[6],ymm3[7,8],ymm7[9],ymm3[10],ymm7[11],ymm3[12,13],ymm7[14],ymm3[15]
3034 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm7 = ymm19[0,1,2,1,4,5,6,5]
3035 ; AVX512F-FAST-NEXT:    vprolq $16, %ymm5, %ymm5
3036 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm7[2],ymm5[3],ymm7[4],ymm5[5,6],ymm7[7],ymm5[8,9],ymm7[10],ymm5[11],ymm7[12],ymm5[13,14],ymm7[15]
3037 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [2,3,2,3,10,11,10,10]
3038 ; AVX512F-FAST-NEXT:    vpermi2q %zmm3, %zmm5, %zmm7
3039 ; AVX512F-FAST-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]
3040 ; AVX512F-FAST-NEXT:    vpshufb %ymm3, %ymm8, %ymm5
3041 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm11 = ymm9[3,2,3,3,7,6,7,7]
3042 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0],ymm11[1],ymm5[2],ymm11[3,4],ymm5[5,6,7,8],ymm11[9],ymm5[10],ymm11[11,12],ymm5[13,14,15]
3043 ; AVX512F-FAST-NEXT:    vpshufb %ymm1, %ymm8, %ymm1
3044 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm8 = ymm9[1,1,1,2,5,5,5,6]
3045 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm8[1],ymm1[2,3],ymm8[4],ymm1[5],ymm8[6],ymm1[7,8],ymm8[9],ymm1[10,11],ymm8[12],ymm1[13],ymm8[14],ymm1[15]
3046 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [2,3,2,3,10,10,11,10]
3047 ; AVX512F-FAST-NEXT:    vpermi2q %zmm5, %zmm1, %zmm8
3048 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm7, %zmm16, %zmm8
3049 ; AVX512F-FAST-NEXT:    vpbroadcastq 48(%r8), %ymm1
3050 ; AVX512F-FAST-NEXT:    vpbroadcastq 56(%r8), %ymm5
3051 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm5, %zmm1, %zmm1
3052 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm8, %zmm1
3053 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3]
3054 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm22, %xmm5
3055 ; AVX512F-FAST-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
3056 ; AVX512F-FAST-NEXT:    vpshufb %ymm3, %ymm2, %ymm2
3057 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm3 = ymm18[3,2,3,3,7,6,7,7]
3058 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2],ymm3[3,4],ymm2[5,6,7,8],ymm3[9],ymm2[10],ymm3[11,12],ymm2[13,14,15]
3059 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm3 = [2,2,3,2,8,9,8,9]
3060 ; AVX512F-FAST-NEXT:    vpermi2q %zmm4, %zmm2, %zmm3
3061 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm21, %xmm2
3062 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm12[0],xmm2[0],xmm12[1],xmm2[1],xmm12[2],xmm2[2],xmm12[3],xmm2[3]
3063 ; AVX512F-FAST-NEXT:    vmovdqa64 %xmm23, %xmm4
3064 ; AVX512F-FAST-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
3065 ; AVX512F-FAST-NEXT:    vpshufb %ymm13, %ymm15, %ymm4
3066 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm5 = ymm14[2,3,2,3,6,7,6,7]
3067 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1],ymm4[2],ymm5[3],ymm4[4,5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10],ymm5[11],ymm4[12,13],ymm5[14],ymm4[15]
3068 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [2,3,2,2,8,9,8,9]
3069 ; AVX512F-FAST-NEXT:    vpermi2q %zmm2, %zmm4, %zmm5
3070 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm3, %zmm20, %zmm5
3071 ; AVX512F-FAST-NEXT:    vpbroadcastq 24(%r8), %ymm2
3072 ; AVX512F-FAST-NEXT:    vpbroadcastq 32(%r8), %ymm3
3073 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm2, %zmm2
3074 ; AVX512F-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm5, %zmm2
3075 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm2, 128(%r9)
3076 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm1, 256(%r9)
3077 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm0, 64(%r9)
3078 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm10, (%r9)
3079 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm17, 192(%r9)
3080 ; AVX512F-FAST-NEXT:    vzeroupper
3081 ; AVX512F-FAST-NEXT:    retq
3083 ; AVX512BW-LABEL: store_i16_stride5_vf32:
3084 ; AVX512BW:       # %bb.0:
3085 ; AVX512BW-NEXT:    vmovdqa64 (%rdi), %zmm0
3086 ; AVX512BW-NEXT:    vmovdqa64 (%rsi), %zmm1
3087 ; AVX512BW-NEXT:    vmovdqa64 (%rdx), %zmm2
3088 ; AVX512BW-NEXT:    vmovdqa64 (%rcx), %zmm3
3089 ; AVX512BW-NEXT:    vmovdqa64 (%r8), %zmm4
3090 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm5 = <u,u,0,32,u,u,u,1,33,u,u,u,2,34,u,u,u,3,35,u,u,u,4,36,u,u,u,5,37,u,u,u>
3091 ; AVX512BW-NEXT:    vpermi2w %zmm3, %zmm2, %zmm5
3092 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm6 = <0,32,u,u,u,1,33,u,u,u,2,34,u,u,u,3,35,u,u,u,4,36,u,u,u,5,37,u,u,u,6,38>
3093 ; AVX512BW-NEXT:    vpermi2w %zmm1, %zmm0, %zmm6
3094 ; AVX512BW-NEXT:    movl $415641996, %eax # imm = 0x18C6318C
3095 ; AVX512BW-NEXT:    kmovd %eax, %k1
3096 ; AVX512BW-NEXT:    vmovdqu16 %zmm5, %zmm6 {%k1}
3097 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]
3098 ; AVX512BW-NEXT:    vpermi2w %zmm4, %zmm6, %zmm5
3099 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm6 = <u,u,u,7,39,u,u,u,8,40,u,u,u,9,41,u,u,u,10,42,u,u,u,11,43,u,u,u,12,44,u,u>
3100 ; AVX512BW-NEXT:    vpermi2w %zmm1, %zmm0, %zmm6
3101 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm7 = <6,38,u,u,u,7,39,u,u,u,8,40,u,u,u,9,41,u,u,u,10,42,u,u,u,11,43,u,u,u,12,44>
3102 ; AVX512BW-NEXT:    vpermi2w %zmm3, %zmm2, %zmm7
3103 ; AVX512BW-NEXT:    movl $831283992, %eax # imm = 0x318C6318
3104 ; AVX512BW-NEXT:    kmovd %eax, %k2
3105 ; AVX512BW-NEXT:    vmovdqu16 %zmm6, %zmm7 {%k2}
3106 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm6 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]
3107 ; AVX512BW-NEXT:    vpermi2w %zmm4, %zmm7, %zmm6
3108 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm7 = <u,u,u,13,45,u,u,u,14,46,u,u,u,15,47,u,u,u,16,48,u,u,u,17,49,u,u,u,18,50,u,u>
3109 ; AVX512BW-NEXT:    vpermi2w %zmm3, %zmm2, %zmm7
3110 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm8 = <u,13,45,u,u,u,14,46,u,u,u,15,47,u,u,u,16,48,u,u,u,17,49,u,u,u,18,50,u,u,u,19>
3111 ; AVX512BW-NEXT:    vpermi2w %zmm1, %zmm0, %zmm8
3112 ; AVX512BW-NEXT:    vmovdqu16 %zmm7, %zmm8 {%k2}
3113 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]
3114 ; AVX512BW-NEXT:    vpermi2w %zmm4, %zmm8, %zmm7
3115 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm8 = <u,19,51,u,u,u,20,52,u,u,u,21,53,u,u,u,22,54,u,u,u,23,55,u,u,u,24,56,u,u,u,25>
3116 ; AVX512BW-NEXT:    vpermi2w %zmm3, %zmm2, %zmm8
3117 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm9 = <19,u,u,u,52,20,u,u,u,53,21,u,u,u,54,22,u,u,u,55,23,u,u,u,56,24,u,u,u,57,25,u>
3118 ; AVX512BW-NEXT:    vpermi2w %zmm0, %zmm1, %zmm9
3119 ; AVX512BW-NEXT:    movl $-1939662650, %eax # imm = 0x8C6318C6
3120 ; AVX512BW-NEXT:    kmovd %eax, %k2
3121 ; AVX512BW-NEXT:    vmovdqu16 %zmm8, %zmm9 {%k2}
3122 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm8 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]
3123 ; AVX512BW-NEXT:    vpermi2w %zmm4, %zmm9, %zmm8
3124 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm9 = <u,u,26,58,u,u,u,27,59,u,u,u,28,60,u,u,u,29,61,u,u,u,30,62,u,u,u,31,63,u,u,u>
3125 ; AVX512BW-NEXT:    vpermi2w %zmm1, %zmm0, %zmm9
3126 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm0 = <25,u,u,u,58,26,u,u,u,59,27,u,u,u,60,28,u,u,u,61,29,u,u,u,62,30,u,u,u,63,31,u>
3127 ; AVX512BW-NEXT:    vpermi2w %zmm2, %zmm3, %zmm0
3128 ; AVX512BW-NEXT:    vmovdqu16 %zmm9, %zmm0 {%k1}
3129 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm1 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]
3130 ; AVX512BW-NEXT:    vpermi2w %zmm4, %zmm0, %zmm1
3131 ; AVX512BW-NEXT:    vmovdqa64 %zmm1, 256(%r9)
3132 ; AVX512BW-NEXT:    vmovdqa64 %zmm8, 192(%r9)
3133 ; AVX512BW-NEXT:    vmovdqa64 %zmm7, 128(%r9)
3134 ; AVX512BW-NEXT:    vmovdqa64 %zmm6, 64(%r9)
3135 ; AVX512BW-NEXT:    vmovdqa64 %zmm5, (%r9)
3136 ; AVX512BW-NEXT:    vzeroupper
3137 ; AVX512BW-NEXT:    retq
3138   %in.vec0 = load <32 x i16>, ptr %in.vecptr0, align 64
3139   %in.vec1 = load <32 x i16>, ptr %in.vecptr1, align 64
3140   %in.vec2 = load <32 x i16>, ptr %in.vecptr2, align 64
3141   %in.vec3 = load <32 x i16>, ptr %in.vecptr3, align 64
3142   %in.vec4 = load <32 x i16>, ptr %in.vecptr4, align 64
3143   %1 = shufflevector <32 x i16> %in.vec0, <32 x i16> %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>
3144   %2 = shufflevector <32 x i16> %in.vec2, <32 x i16> %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>
3145   %3 = shufflevector <64 x i16> %1, <64 x i16> %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>
3146   %4 = shufflevector <32 x i16> %in.vec4, <32 x i16> 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>
3147   %5 = shufflevector <128 x i16> %3, <128 x i16> %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>
3148   %interleaved.vec = shufflevector <160 x i16> %5, <160 x i16> 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>
3149   store <160 x i16> %interleaved.vec, ptr %out.vec, align 64
3150   ret void
3153 define void @store_i16_stride5_vf64(ptr %in.vecptr0, ptr %in.vecptr1, ptr %in.vecptr2, ptr %in.vecptr3, ptr %in.vecptr4, ptr %out.vec) nounwind {
3154 ; SSE-LABEL: store_i16_stride5_vf64:
3155 ; SSE:       # %bb.0:
3156 ; SSE-NEXT:    subq $616, %rsp # imm = 0x268
3157 ; SSE-NEXT:    movdqa (%rdi), %xmm14
3158 ; SSE-NEXT:    movdqa 16(%rdi), %xmm4
3159 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3160 ; SSE-NEXT:    movdqa (%rsi), %xmm12
3161 ; SSE-NEXT:    movdqa 16(%rsi), %xmm11
3162 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3163 ; SSE-NEXT:    movdqa (%rdx), %xmm7
3164 ; SSE-NEXT:    movdqa (%rcx), %xmm0
3165 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3166 ; SSE-NEXT:    movdqa 16(%rcx), %xmm13
3167 ; SSE-NEXT:    movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3168 ; SSE-NEXT:    movdqa (%r8), %xmm15
3169 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3170 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,65535,65535,0,65535,65535,65535]
3171 ; SSE-NEXT:    movdqa %xmm9, %xmm1
3172 ; SSE-NEXT:    pandn %xmm14, %xmm1
3173 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm12[3,3,3,3,4,5,6,7]
3174 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]
3175 ; SSE-NEXT:    pand %xmm9, %xmm3
3176 ; SSE-NEXT:    por %xmm1, %xmm3
3177 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [0,65535,65535,65535,0,0,65535,65535]
3178 ; SSE-NEXT:    movdqa %xmm1, %xmm5
3179 ; SSE-NEXT:    pandn %xmm3, %xmm5
3180 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm7[1,1,2,2]
3181 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,0,65535,65535,65535,65535,0]
3182 ; SSE-NEXT:    pand %xmm10, %xmm3
3183 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm0[3,3,3,3,4,5,6,7]
3184 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]
3185 ; SSE-NEXT:    movdqa %xmm10, %xmm8
3186 ; SSE-NEXT:    pandn %xmm6, %xmm8
3187 ; SSE-NEXT:    por %xmm3, %xmm8
3188 ; SSE-NEXT:    pand %xmm1, %xmm8
3189 ; SSE-NEXT:    por %xmm5, %xmm8
3190 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,65535,65535]
3191 ; SSE-NEXT:    pand %xmm2, %xmm8
3192 ; SSE-NEXT:    movdqa %xmm2, %xmm0
3193 ; SSE-NEXT:    pandn %xmm15, %xmm0
3194 ; SSE-NEXT:    por %xmm8, %xmm0
3195 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3196 ; SSE-NEXT:    movdqa %xmm9, %xmm3
3197 ; SSE-NEXT:    pandn %xmm4, %xmm3
3198 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm11[3,3,3,3,4,5,6,7]
3199 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]
3200 ; SSE-NEXT:    pand %xmm9, %xmm5
3201 ; SSE-NEXT:    por %xmm3, %xmm5
3202 ; SSE-NEXT:    movdqa %xmm1, %xmm3
3203 ; SSE-NEXT:    pandn %xmm5, %xmm3
3204 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm13[3,3,3,3,4,5,6,7]
3205 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]
3206 ; SSE-NEXT:    movdqa %xmm10, %xmm6
3207 ; SSE-NEXT:    pandn %xmm5, %xmm6
3208 ; SSE-NEXT:    movdqa 16(%rdx), %xmm5
3209 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm5[1,1,2,2]
3210 ; SSE-NEXT:    pand %xmm10, %xmm8
3211 ; SSE-NEXT:    por %xmm8, %xmm6
3212 ; SSE-NEXT:    pand %xmm1, %xmm6
3213 ; SSE-NEXT:    por %xmm3, %xmm6
3214 ; SSE-NEXT:    movdqa 16(%r8), %xmm3
3215 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3216 ; SSE-NEXT:    pand %xmm2, %xmm6
3217 ; SSE-NEXT:    movdqa %xmm2, %xmm0
3218 ; SSE-NEXT:    pandn %xmm3, %xmm0
3219 ; SSE-NEXT:    por %xmm6, %xmm0
3220 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3221 ; SSE-NEXT:    movdqa 32(%rdi), %xmm0
3222 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3223 ; SSE-NEXT:    movdqa %xmm9, %xmm3
3224 ; SSE-NEXT:    pandn %xmm0, %xmm3
3225 ; SSE-NEXT:    movdqa 32(%rsi), %xmm0
3226 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3227 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm0[3,3,3,3,4,5,6,7]
3228 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]
3229 ; SSE-NEXT:    pand %xmm9, %xmm6
3230 ; SSE-NEXT:    por %xmm3, %xmm6
3231 ; SSE-NEXT:    movdqa %xmm1, %xmm3
3232 ; SSE-NEXT:    pandn %xmm6, %xmm3
3233 ; SSE-NEXT:    movdqa 32(%rcx), %xmm0
3234 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3235 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm0[3,3,3,3,4,5,6,7]
3236 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,4,4]
3237 ; SSE-NEXT:    movdqa %xmm10, %xmm8
3238 ; SSE-NEXT:    pandn %xmm6, %xmm8
3239 ; SSE-NEXT:    movdqa 32(%rdx), %xmm6
3240 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm6[1,1,2,2]
3241 ; SSE-NEXT:    pand %xmm10, %xmm11
3242 ; SSE-NEXT:    por %xmm11, %xmm8
3243 ; SSE-NEXT:    pand %xmm1, %xmm8
3244 ; SSE-NEXT:    por %xmm3, %xmm8
3245 ; SSE-NEXT:    pand %xmm2, %xmm8
3246 ; SSE-NEXT:    movdqa 32(%r8), %xmm3
3247 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3248 ; SSE-NEXT:    movdqa %xmm2, %xmm0
3249 ; SSE-NEXT:    pandn %xmm3, %xmm0
3250 ; SSE-NEXT:    por %xmm8, %xmm0
3251 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3252 ; SSE-NEXT:    movdqa 48(%rdi), %xmm0
3253 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3254 ; SSE-NEXT:    movdqa %xmm9, %xmm3
3255 ; SSE-NEXT:    pandn %xmm0, %xmm3
3256 ; SSE-NEXT:    movdqa 48(%rsi), %xmm0
3257 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3258 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm0[3,3,3,3,4,5,6,7]
3259 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]
3260 ; SSE-NEXT:    pand %xmm9, %xmm8
3261 ; SSE-NEXT:    por %xmm3, %xmm8
3262 ; SSE-NEXT:    movdqa %xmm1, %xmm3
3263 ; SSE-NEXT:    pandn %xmm8, %xmm3
3264 ; SSE-NEXT:    movdqa 48(%rcx), %xmm0
3265 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3266 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm0[3,3,3,3,4,5,6,7]
3267 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,4,4]
3268 ; SSE-NEXT:    movdqa %xmm10, %xmm11
3269 ; SSE-NEXT:    pandn %xmm8, %xmm11
3270 ; SSE-NEXT:    movdqa 48(%rdx), %xmm8
3271 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm8[1,1,2,2]
3272 ; SSE-NEXT:    pand %xmm10, %xmm15
3273 ; SSE-NEXT:    por %xmm15, %xmm11
3274 ; SSE-NEXT:    pand %xmm1, %xmm11
3275 ; SSE-NEXT:    por %xmm3, %xmm11
3276 ; SSE-NEXT:    pand %xmm2, %xmm11
3277 ; SSE-NEXT:    movdqa 48(%r8), %xmm3
3278 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3279 ; SSE-NEXT:    movdqa %xmm2, %xmm0
3280 ; SSE-NEXT:    pandn %xmm3, %xmm0
3281 ; SSE-NEXT:    por %xmm11, %xmm0
3282 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3283 ; SSE-NEXT:    movdqa 64(%rdi), %xmm0
3284 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3285 ; SSE-NEXT:    movdqa %xmm9, %xmm3
3286 ; SSE-NEXT:    pandn %xmm0, %xmm3
3287 ; SSE-NEXT:    movdqa 64(%rsi), %xmm0
3288 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3289 ; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm0[3,3,3,3,4,5,6,7]
3290 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]
3291 ; SSE-NEXT:    pand %xmm9, %xmm11
3292 ; SSE-NEXT:    por %xmm3, %xmm11
3293 ; SSE-NEXT:    movdqa %xmm1, %xmm15
3294 ; SSE-NEXT:    pandn %xmm11, %xmm15
3295 ; SSE-NEXT:    movdqa 64(%rcx), %xmm0
3296 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3297 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm0[3,3,3,3,4,5,6,7]
3298 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]
3299 ; SSE-NEXT:    movdqa %xmm10, %xmm11
3300 ; SSE-NEXT:    pandn %xmm3, %xmm11
3301 ; SSE-NEXT:    movdqa 64(%rdx), %xmm0
3302 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3303 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
3304 ; SSE-NEXT:    pand %xmm10, %xmm0
3305 ; SSE-NEXT:    por %xmm0, %xmm11
3306 ; SSE-NEXT:    pand %xmm1, %xmm11
3307 ; SSE-NEXT:    por %xmm15, %xmm11
3308 ; SSE-NEXT:    pand %xmm2, %xmm11
3309 ; SSE-NEXT:    movdqa 64(%r8), %xmm3
3310 ; SSE-NEXT:    movdqa %xmm3, (%rsp) # 16-byte Spill
3311 ; SSE-NEXT:    movdqa %xmm2, %xmm0
3312 ; SSE-NEXT:    pandn %xmm3, %xmm0
3313 ; SSE-NEXT:    por %xmm11, %xmm0
3314 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3315 ; SSE-NEXT:    movdqa 80(%rdi), %xmm3
3316 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3317 ; SSE-NEXT:    movdqa %xmm9, %xmm0
3318 ; SSE-NEXT:    pandn %xmm3, %xmm0
3319 ; SSE-NEXT:    movdqa 80(%rsi), %xmm3
3320 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3321 ; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm3[3,3,3,3,4,5,6,7]
3322 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]
3323 ; SSE-NEXT:    pand %xmm9, %xmm11
3324 ; SSE-NEXT:    por %xmm0, %xmm11
3325 ; SSE-NEXT:    movdqa %xmm1, %xmm0
3326 ; SSE-NEXT:    pandn %xmm11, %xmm0
3327 ; SSE-NEXT:    movdqa 80(%rcx), %xmm3
3328 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3329 ; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm3[3,3,3,3,4,5,6,7]
3330 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]
3331 ; SSE-NEXT:    movdqa %xmm10, %xmm15
3332 ; SSE-NEXT:    pandn %xmm11, %xmm15
3333 ; SSE-NEXT:    movdqa 80(%rdx), %xmm3
3334 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3335 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm3[1,1,2,2]
3336 ; SSE-NEXT:    pand %xmm10, %xmm11
3337 ; SSE-NEXT:    por %xmm11, %xmm15
3338 ; SSE-NEXT:    pand %xmm1, %xmm15
3339 ; SSE-NEXT:    por %xmm0, %xmm15
3340 ; SSE-NEXT:    pand %xmm2, %xmm15
3341 ; SSE-NEXT:    movdqa 80(%r8), %xmm3
3342 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3343 ; SSE-NEXT:    movdqa %xmm2, %xmm0
3344 ; SSE-NEXT:    pandn %xmm3, %xmm0
3345 ; SSE-NEXT:    por %xmm15, %xmm0
3346 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3347 ; SSE-NEXT:    movdqa 96(%rdi), %xmm4
3348 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3349 ; SSE-NEXT:    movdqa %xmm9, %xmm0
3350 ; SSE-NEXT:    pandn %xmm4, %xmm0
3351 ; SSE-NEXT:    movdqa 96(%rsi), %xmm3
3352 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3353 ; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm3[3,3,3,3,4,5,6,7]
3354 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]
3355 ; SSE-NEXT:    pand %xmm9, %xmm11
3356 ; SSE-NEXT:    por %xmm0, %xmm11
3357 ; SSE-NEXT:    movdqa %xmm1, %xmm0
3358 ; SSE-NEXT:    pandn %xmm11, %xmm0
3359 ; SSE-NEXT:    movdqa 96(%rcx), %xmm3
3360 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3361 ; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm3[3,3,3,3,4,5,6,7]
3362 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]
3363 ; SSE-NEXT:    movdqa %xmm10, %xmm15
3364 ; SSE-NEXT:    pandn %xmm11, %xmm15
3365 ; SSE-NEXT:    movdqa 96(%rdx), %xmm3
3366 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3367 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm3[1,1,2,2]
3368 ; SSE-NEXT:    pand %xmm10, %xmm11
3369 ; SSE-NEXT:    por %xmm11, %xmm15
3370 ; SSE-NEXT:    pand %xmm1, %xmm15
3371 ; SSE-NEXT:    por %xmm0, %xmm15
3372 ; SSE-NEXT:    pand %xmm2, %xmm15
3373 ; SSE-NEXT:    movdqa 96(%r8), %xmm3
3374 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3375 ; SSE-NEXT:    movdqa %xmm2, %xmm0
3376 ; SSE-NEXT:    pandn %xmm3, %xmm0
3377 ; SSE-NEXT:    por %xmm15, %xmm0
3378 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3379 ; SSE-NEXT:    movdqa 112(%rdi), %xmm4
3380 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3381 ; SSE-NEXT:    movdqa %xmm9, %xmm0
3382 ; SSE-NEXT:    pandn %xmm4, %xmm0
3383 ; SSE-NEXT:    movdqa 112(%rsi), %xmm4
3384 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3385 ; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm4[3,3,3,3,4,5,6,7]
3386 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]
3387 ; SSE-NEXT:    pand %xmm9, %xmm11
3388 ; SSE-NEXT:    por %xmm0, %xmm11
3389 ; SSE-NEXT:    movdqa 112(%rcx), %xmm0
3390 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3391 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
3392 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
3393 ; SSE-NEXT:    movdqa %xmm10, %xmm15
3394 ; SSE-NEXT:    pandn %xmm0, %xmm15
3395 ; SSE-NEXT:    movdqa 112(%rdx), %xmm0
3396 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3397 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,2,2]
3398 ; SSE-NEXT:    pand %xmm10, %xmm0
3399 ; SSE-NEXT:    por %xmm0, %xmm15
3400 ; SSE-NEXT:    pand %xmm1, %xmm15
3401 ; SSE-NEXT:    pandn %xmm11, %xmm1
3402 ; SSE-NEXT:    por %xmm15, %xmm1
3403 ; SSE-NEXT:    pand %xmm2, %xmm1
3404 ; SSE-NEXT:    movdqa 112(%r8), %xmm0
3405 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3406 ; SSE-NEXT:    pandn %xmm0, %xmm2
3407 ; SSE-NEXT:    por %xmm1, %xmm2
3408 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3409 ; SSE-NEXT:    movdqa %xmm7, %xmm0
3410 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
3411 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
3412 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
3413 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
3414 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,0,0,65535,65535,65535,0]
3415 ; SSE-NEXT:    movdqa %xmm1, %xmm11
3416 ; SSE-NEXT:    pandn %xmm0, %xmm11
3417 ; SSE-NEXT:    movdqa %xmm14, %xmm0
3418 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm12[0],xmm0[1],xmm12[1],xmm0[2],xmm12[2],xmm0[3],xmm12[3]
3419 ; SSE-NEXT:    pshuflw {{.*#+}} xmm15 = xmm0[0,1,3,2,4,5,6,7]
3420 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm15[0,1,1,1]
3421 ; SSE-NEXT:    pand %xmm1, %xmm15
3422 ; SSE-NEXT:    por %xmm11, %xmm15
3423 ; SSE-NEXT:    movdqa %xmm9, %xmm13
3424 ; SSE-NEXT:    pand %xmm9, %xmm15
3425 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3426 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm4[0,1,0,1]
3427 ; SSE-NEXT:    movdqa %xmm9, %xmm1
3428 ; SSE-NEXT:    pandn %xmm11, %xmm1
3429 ; SSE-NEXT:    por %xmm15, %xmm1
3430 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3431 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]
3432 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
3433 ; SSE-NEXT:    movdqa %xmm2, %xmm15
3434 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm15 = xmm15[0],xmm7[0],xmm15[1],xmm7[1],xmm15[2],xmm7[2],xmm15[3],xmm7[3]
3435 ; SSE-NEXT:    pshuflw {{.*#+}} xmm15 = xmm15[2,2,2,2,4,5,6,7]
3436 ; SSE-NEXT:    pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,5,4,6,7]
3437 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm15[0,2,2,3]
3438 ; SSE-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
3439 ; SSE-NEXT:    movdqa {{.*#+}} xmm15 = [65535,0,65535,65535,65535,65535,0,65535]
3440 ; SSE-NEXT:    movdqa %xmm15, %xmm1
3441 ; SSE-NEXT:    pandn %xmm11, %xmm1
3442 ; SSE-NEXT:    pand %xmm15, %xmm0
3443 ; SSE-NEXT:    por %xmm0, %xmm1
3444 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3445 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm7 = xmm7[4],xmm2[4],xmm7[5],xmm2[5],xmm7[6],xmm2[6],xmm7[7],xmm2[7]
3446 ; SSE-NEXT:    movdqa %xmm7, %xmm1
3447 ; SSE-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3448 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,65535,0,0,65535,65535,65535]
3449 ; SSE-NEXT:    movdqa %xmm9, %xmm11
3450 ; SSE-NEXT:    pandn %xmm1, %xmm11
3451 ; SSE-NEXT:    movdqa %xmm14, %xmm1
3452 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm12[4],xmm1[5],xmm12[5],xmm1[6],xmm12[6],xmm1[7],xmm12[7]
3453 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]
3454 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,2]
3455 ; SSE-NEXT:    pand %xmm9, %xmm1
3456 ; SSE-NEXT:    por %xmm11, %xmm1
3457 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [0,65535,65535,65535,65535,0,65535,65535]
3458 ; SSE-NEXT:    pand %xmm3, %xmm1
3459 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[2,3,2,3]
3460 ; SSE-NEXT:    movdqa %xmm3, %xmm11
3461 ; SSE-NEXT:    pandn %xmm0, %xmm11
3462 ; SSE-NEXT:    por %xmm1, %xmm11
3463 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3464 ; SSE-NEXT:    psrlq $48, %xmm12
3465 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm14 = xmm14[1],xmm12[1]
3466 ; SSE-NEXT:    movdqa %xmm9, %xmm1
3467 ; SSE-NEXT:    pandn %xmm14, %xmm1
3468 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,7,6]
3469 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[2,1,3,3]
3470 ; SSE-NEXT:    pand %xmm9, %xmm7
3471 ; SSE-NEXT:    por %xmm1, %xmm7
3472 ; SSE-NEXT:    movdqa %xmm10, %xmm1
3473 ; SSE-NEXT:    pandn %xmm0, %xmm1
3474 ; SSE-NEXT:    pand %xmm10, %xmm7
3475 ; SSE-NEXT:    por %xmm7, %xmm1
3476 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3477 ; SSE-NEXT:    movdqa %xmm5, %xmm0
3478 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
3479 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
3480 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
3481 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
3482 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,0,0,65535,65535,65535,0]
3483 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3484 ; SSE-NEXT:    pandn %xmm0, %xmm1
3485 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
3486 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3487 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
3488 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm14[0],xmm0[1],xmm14[1],xmm0[2],xmm14[2],xmm0[3],xmm14[3]
3489 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm0[0,1,3,2,4,5,6,7]
3490 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[0,1,1,1]
3491 ; SSE-NEXT:    pand %xmm4, %xmm7
3492 ; SSE-NEXT:    por %xmm1, %xmm7
3493 ; SSE-NEXT:    pand %xmm13, %xmm7
3494 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3495 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[0,1,0,1]
3496 ; SSE-NEXT:    movdqa %xmm13, %xmm11
3497 ; SSE-NEXT:    pandn %xmm1, %xmm11
3498 ; SSE-NEXT:    por %xmm7, %xmm11
3499 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3500 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]
3501 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
3502 ; SSE-NEXT:    movdqa %xmm2, %xmm7
3503 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm5[0],xmm7[1],xmm5[1],xmm7[2],xmm5[2],xmm7[3],xmm5[3]
3504 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]
3505 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,4,6,7]
3506 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[0,2,2,3]
3507 ; SSE-NEXT:    punpckldq {{.*#+}} xmm7 = xmm7[0],xmm0[0],xmm7[1],xmm0[1]
3508 ; SSE-NEXT:    movdqa %xmm15, %xmm0
3509 ; SSE-NEXT:    pandn %xmm1, %xmm0
3510 ; SSE-NEXT:    pand %xmm15, %xmm7
3511 ; SSE-NEXT:    por %xmm7, %xmm0
3512 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3513 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
3514 ; SSE-NEXT:    movdqa %xmm5, %xmm0
3515 ; SSE-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3516 ; SSE-NEXT:    movdqa %xmm9, %xmm1
3517 ; SSE-NEXT:    pandn %xmm0, %xmm1
3518 ; SSE-NEXT:    movdqa %xmm12, %xmm11
3519 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3520 ; SSE-NEXT:    movdqa %xmm14, %xmm12
3521 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm14[4],xmm0[5],xmm14[5],xmm0[6],xmm14[6],xmm0[7],xmm14[7]
3522 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]
3523 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]
3524 ; SSE-NEXT:    pand %xmm9, %xmm0
3525 ; SSE-NEXT:    por %xmm1, %xmm0
3526 ; SSE-NEXT:    pand %xmm3, %xmm0
3527 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[2,3,2,3]
3528 ; SSE-NEXT:    movdqa %xmm3, %xmm7
3529 ; SSE-NEXT:    movdqa %xmm3, %xmm14
3530 ; SSE-NEXT:    pandn %xmm1, %xmm7
3531 ; SSE-NEXT:    por %xmm0, %xmm7
3532 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3533 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3534 ; SSE-NEXT:    psrlq $48, %xmm0
3535 ; SSE-NEXT:    movdqa %xmm11, %xmm3
3536 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]
3537 ; SSE-NEXT:    movdqa %xmm9, %xmm0
3538 ; SSE-NEXT:    pandn %xmm3, %xmm0
3539 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,7,6]
3540 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,1,3,3]
3541 ; SSE-NEXT:    pand %xmm9, %xmm5
3542 ; SSE-NEXT:    por %xmm0, %xmm5
3543 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3544 ; SSE-NEXT:    pandn %xmm1, %xmm0
3545 ; SSE-NEXT:    pand %xmm10, %xmm5
3546 ; SSE-NEXT:    por %xmm5, %xmm0
3547 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3548 ; SSE-NEXT:    movdqa %xmm6, %xmm0
3549 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
3550 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm12[0],xmm0[1],xmm12[1],xmm0[2],xmm12[2],xmm0[3],xmm12[3]
3551 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
3552 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
3553 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,0,0,65535,65535,65535,0]
3554 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3555 ; SSE-NEXT:    pandn %xmm0, %xmm1
3556 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
3557 ; SSE-NEXT:    movdqa %xmm7, %xmm0
3558 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3559 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm11[0],xmm0[1],xmm11[1],xmm0[2],xmm11[2],xmm0[3],xmm11[3]
3560 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm0[0,1,3,2,4,5,6,7]
3561 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]
3562 ; SSE-NEXT:    pand %xmm4, %xmm5
3563 ; SSE-NEXT:    por %xmm1, %xmm5
3564 ; SSE-NEXT:    movdqa %xmm13, %xmm2
3565 ; SSE-NEXT:    pand %xmm13, %xmm5
3566 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
3567 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm13[0,1,0,1]
3568 ; SSE-NEXT:    movdqa %xmm2, %xmm3
3569 ; SSE-NEXT:    pandn %xmm1, %xmm3
3570 ; SSE-NEXT:    por %xmm5, %xmm3
3571 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3572 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]
3573 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
3574 ; SSE-NEXT:    movdqa %xmm12, %xmm5
3575 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]
3576 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
3577 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]
3578 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]
3579 ; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]
3580 ; SSE-NEXT:    movdqa %xmm15, %xmm0
3581 ; SSE-NEXT:    pandn %xmm1, %xmm0
3582 ; SSE-NEXT:    pand %xmm15, %xmm5
3583 ; SSE-NEXT:    por %xmm5, %xmm0
3584 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3585 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm6 = xmm6[4],xmm12[4],xmm6[5],xmm12[5],xmm6[6],xmm12[6],xmm6[7],xmm12[7]
3586 ; SSE-NEXT:    movdqa %xmm6, %xmm0
3587 ; SSE-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3588 ; SSE-NEXT:    movdqa %xmm9, %xmm1
3589 ; SSE-NEXT:    pandn %xmm0, %xmm1
3590 ; SSE-NEXT:    movdqa %xmm7, %xmm3
3591 ; SSE-NEXT:    movdqa %xmm7, %xmm0
3592 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm11[4],xmm0[5],xmm11[5],xmm0[6],xmm11[6],xmm0[7],xmm11[7]
3593 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]
3594 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]
3595 ; SSE-NEXT:    pand %xmm9, %xmm0
3596 ; SSE-NEXT:    por %xmm1, %xmm0
3597 ; SSE-NEXT:    pand %xmm14, %xmm0
3598 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm13[2,3,2,3]
3599 ; SSE-NEXT:    movdqa %xmm14, %xmm7
3600 ; SSE-NEXT:    pandn %xmm1, %xmm7
3601 ; SSE-NEXT:    por %xmm0, %xmm7
3602 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3603 ; SSE-NEXT:    movdqa %xmm11, %xmm0
3604 ; SSE-NEXT:    psrlq $48, %xmm0
3605 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]
3606 ; SSE-NEXT:    movdqa %xmm9, %xmm0
3607 ; SSE-NEXT:    pandn %xmm3, %xmm0
3608 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm6[0,1,2,3,4,5,7,6]
3609 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,1,3,3]
3610 ; SSE-NEXT:    pand %xmm9, %xmm5
3611 ; SSE-NEXT:    por %xmm0, %xmm5
3612 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3613 ; SSE-NEXT:    pandn %xmm1, %xmm0
3614 ; SSE-NEXT:    pand %xmm10, %xmm5
3615 ; SSE-NEXT:    por %xmm5, %xmm0
3616 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3617 ; SSE-NEXT:    movdqa %xmm8, %xmm0
3618 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
3619 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3]
3620 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
3621 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
3622 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3623 ; SSE-NEXT:    pandn %xmm0, %xmm1
3624 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3625 ; SSE-NEXT:    movdqa %xmm3, %xmm0
3626 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3627 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]
3628 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm0[0,1,3,2,4,5,6,7]
3629 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]
3630 ; SSE-NEXT:    pand %xmm4, %xmm5
3631 ; SSE-NEXT:    por %xmm1, %xmm5
3632 ; SSE-NEXT:    pand %xmm2, %xmm5
3633 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3634 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm11[0,1,0,1]
3635 ; SSE-NEXT:    movdqa %xmm2, %xmm12
3636 ; SSE-NEXT:    pandn %xmm1, %xmm12
3637 ; SSE-NEXT:    por %xmm5, %xmm12
3638 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3639 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]
3640 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
3641 ; SSE-NEXT:    movdqa %xmm7, %xmm5
3642 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm8[0],xmm5[1],xmm8[1],xmm5[2],xmm8[2],xmm5[3],xmm8[3]
3643 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
3644 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]
3645 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]
3646 ; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]
3647 ; SSE-NEXT:    movdqa %xmm15, %xmm0
3648 ; SSE-NEXT:    pandn %xmm1, %xmm0
3649 ; SSE-NEXT:    pand %xmm15, %xmm5
3650 ; SSE-NEXT:    por %xmm5, %xmm0
3651 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3652 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm8 = xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]
3653 ; SSE-NEXT:    movdqa %xmm8, %xmm0
3654 ; SSE-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3655 ; SSE-NEXT:    movdqa %xmm9, %xmm1
3656 ; SSE-NEXT:    pandn %xmm0, %xmm1
3657 ; SSE-NEXT:    movdqa %xmm3, %xmm0
3658 ; SSE-NEXT:    movdqa %xmm6, %xmm5
3659 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]
3660 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]
3661 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]
3662 ; SSE-NEXT:    pand %xmm9, %xmm0
3663 ; SSE-NEXT:    por %xmm1, %xmm0
3664 ; SSE-NEXT:    pand %xmm14, %xmm0
3665 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm11[2,3,2,3]
3666 ; SSE-NEXT:    movdqa %xmm14, %xmm6
3667 ; SSE-NEXT:    pandn %xmm1, %xmm6
3668 ; SSE-NEXT:    por %xmm0, %xmm6
3669 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3670 ; SSE-NEXT:    movdqa %xmm5, %xmm0
3671 ; SSE-NEXT:    psrlq $48, %xmm0
3672 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]
3673 ; SSE-NEXT:    movdqa %xmm9, %xmm0
3674 ; SSE-NEXT:    pandn %xmm3, %xmm0
3675 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm8[0,1,2,3,4,5,7,6]
3676 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,1,3,3]
3677 ; SSE-NEXT:    pand %xmm9, %xmm5
3678 ; SSE-NEXT:    por %xmm0, %xmm5
3679 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3680 ; SSE-NEXT:    pandn %xmm1, %xmm0
3681 ; SSE-NEXT:    pand %xmm10, %xmm5
3682 ; SSE-NEXT:    por %xmm5, %xmm0
3683 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3684 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3685 ; SSE-NEXT:    movdqa %xmm11, %xmm0
3686 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3687 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]
3688 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
3689 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
3690 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3691 ; SSE-NEXT:    pandn %xmm0, %xmm1
3692 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3693 ; SSE-NEXT:    movdqa %xmm3, %xmm0
3694 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
3695 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm7[0],xmm0[1],xmm7[1],xmm0[2],xmm7[2],xmm0[3],xmm7[3]
3696 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm0[0,1,3,2,4,5,6,7]
3697 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]
3698 ; SSE-NEXT:    pand %xmm4, %xmm5
3699 ; SSE-NEXT:    por %xmm1, %xmm5
3700 ; SSE-NEXT:    pand %xmm2, %xmm5
3701 ; SSE-NEXT:    movdqa (%rsp), %xmm8 # 16-byte Reload
3702 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm8[0,1,0,1]
3703 ; SSE-NEXT:    movdqa %xmm2, %xmm12
3704 ; SSE-NEXT:    pandn %xmm1, %xmm12
3705 ; SSE-NEXT:    por %xmm5, %xmm12
3706 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3707 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,6]
3708 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
3709 ; SSE-NEXT:    movdqa %xmm6, %xmm5
3710 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm11[0],xmm5[1],xmm11[1],xmm5[2],xmm11[2],xmm5[3],xmm11[3]
3711 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
3712 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]
3713 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]
3714 ; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]
3715 ; SSE-NEXT:    movdqa %xmm15, %xmm0
3716 ; SSE-NEXT:    pandn %xmm1, %xmm0
3717 ; SSE-NEXT:    pand %xmm15, %xmm5
3718 ; SSE-NEXT:    por %xmm5, %xmm0
3719 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3720 ; SSE-NEXT:    movdqa %xmm11, %xmm1
3721 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
3722 ; SSE-NEXT:    movdqa %xmm1, %xmm0
3723 ; SSE-NEXT:    movdqa %xmm1, %xmm6
3724 ; SSE-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3725 ; SSE-NEXT:    movdqa %xmm9, %xmm1
3726 ; SSE-NEXT:    pandn %xmm0, %xmm1
3727 ; SSE-NEXT:    movdqa %xmm3, %xmm0
3728 ; SSE-NEXT:    movdqa %xmm7, %xmm5
3729 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm7[4],xmm0[5],xmm7[5],xmm0[6],xmm7[6],xmm0[7],xmm7[7]
3730 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]
3731 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]
3732 ; SSE-NEXT:    pand %xmm9, %xmm0
3733 ; SSE-NEXT:    por %xmm1, %xmm0
3734 ; SSE-NEXT:    pand %xmm14, %xmm0
3735 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm8[2,3,2,3]
3736 ; SSE-NEXT:    movdqa %xmm14, %xmm7
3737 ; SSE-NEXT:    pandn %xmm1, %xmm7
3738 ; SSE-NEXT:    por %xmm0, %xmm7
3739 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3740 ; SSE-NEXT:    movdqa %xmm5, %xmm0
3741 ; SSE-NEXT:    psrlq $48, %xmm0
3742 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]
3743 ; SSE-NEXT:    movdqa %xmm9, %xmm0
3744 ; SSE-NEXT:    pandn %xmm3, %xmm0
3745 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm6[0,1,2,3,4,5,7,6]
3746 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]
3747 ; SSE-NEXT:    pand %xmm9, %xmm3
3748 ; SSE-NEXT:    por %xmm0, %xmm3
3749 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3750 ; SSE-NEXT:    pandn %xmm1, %xmm0
3751 ; SSE-NEXT:    pand %xmm10, %xmm3
3752 ; SSE-NEXT:    por %xmm3, %xmm0
3753 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3754 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
3755 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3756 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3757 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3]
3758 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
3759 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
3760 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3761 ; SSE-NEXT:    pandn %xmm0, %xmm1
3762 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
3763 ; SSE-NEXT:    movdqa %xmm7, %xmm3
3764 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
3765 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3]
3766 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm3[0,1,3,2,4,5,6,7]
3767 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[0,1,1,1]
3768 ; SSE-NEXT:    pand %xmm4, %xmm5
3769 ; SSE-NEXT:    por %xmm1, %xmm5
3770 ; SSE-NEXT:    pand %xmm2, %xmm5
3771 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3772 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm11[0,1,0,1]
3773 ; SSE-NEXT:    movdqa %xmm2, %xmm0
3774 ; SSE-NEXT:    pandn %xmm1, %xmm0
3775 ; SSE-NEXT:    por %xmm5, %xmm0
3776 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3777 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6,6]
3778 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,3,2,3]
3779 ; SSE-NEXT:    movdqa %xmm6, %xmm5
3780 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm12[0],xmm5[1],xmm12[1],xmm5[2],xmm12[2],xmm5[3],xmm12[3]
3781 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3782 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[2,2,2,2,4,5,6,7]
3783 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]
3784 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,2,2,3]
3785 ; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm3[0],xmm5[1],xmm3[1]
3786 ; SSE-NEXT:    movdqa %xmm15, %xmm3
3787 ; SSE-NEXT:    pandn %xmm1, %xmm3
3788 ; SSE-NEXT:    pand %xmm15, %xmm5
3789 ; SSE-NEXT:    movdqa %xmm15, %xmm13
3790 ; SSE-NEXT:    por %xmm5, %xmm3
3791 ; SSE-NEXT:    movdqa %xmm3, (%rsp) # 16-byte Spill
3792 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]
3793 ; SSE-NEXT:    movdqa %xmm0, %xmm1
3794 ; SSE-NEXT:    movdqa %xmm0, %xmm6
3795 ; SSE-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3796 ; SSE-NEXT:    movdqa %xmm9, %xmm3
3797 ; SSE-NEXT:    pandn %xmm1, %xmm3
3798 ; SSE-NEXT:    movdqa %xmm7, %xmm0
3799 ; SSE-NEXT:    movdqa %xmm7, %xmm1
3800 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
3801 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]
3802 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,2]
3803 ; SSE-NEXT:    pand %xmm9, %xmm1
3804 ; SSE-NEXT:    por %xmm3, %xmm1
3805 ; SSE-NEXT:    pand %xmm14, %xmm1
3806 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm11[2,3,2,3]
3807 ; SSE-NEXT:    movdqa %xmm14, %xmm7
3808 ; SSE-NEXT:    pandn %xmm3, %xmm7
3809 ; SSE-NEXT:    por %xmm1, %xmm7
3810 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3811 ; SSE-NEXT:    movdqa %xmm8, %xmm1
3812 ; SSE-NEXT:    psrlq $48, %xmm1
3813 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm1[1]
3814 ; SSE-NEXT:    movdqa %xmm9, %xmm1
3815 ; SSE-NEXT:    pandn %xmm0, %xmm1
3816 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm6[0,1,2,3,4,5,7,6]
3817 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm5[2,1,3,3]
3818 ; SSE-NEXT:    pand %xmm9, %xmm8
3819 ; SSE-NEXT:    por %xmm1, %xmm8
3820 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3821 ; SSE-NEXT:    pandn %xmm3, %xmm0
3822 ; SSE-NEXT:    pand %xmm10, %xmm8
3823 ; SSE-NEXT:    por %xmm8, %xmm0
3824 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3825 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3826 ; SSE-NEXT:    movdqa %xmm11, %xmm1
3827 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3828 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
3829 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]
3830 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]
3831 ; SSE-NEXT:    movdqa %xmm4, %xmm3
3832 ; SSE-NEXT:    pandn %xmm1, %xmm3
3833 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3834 ; SSE-NEXT:    movdqa %xmm5, %xmm8
3835 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
3836 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3]
3837 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm8[0,1,3,2,4,5,6,7]
3838 ; SSE-NEXT:    pshufd {{.*#+}} xmm14 = xmm1[0,1,1,1]
3839 ; SSE-NEXT:    pand %xmm4, %xmm14
3840 ; SSE-NEXT:    por %xmm3, %xmm14
3841 ; SSE-NEXT:    pand %xmm2, %xmm14
3842 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
3843 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm7[0,1,0,1]
3844 ; SSE-NEXT:    movdqa %xmm2, %xmm15
3845 ; SSE-NEXT:    pandn %xmm3, %xmm15
3846 ; SSE-NEXT:    por %xmm14, %xmm15
3847 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,6,6]
3848 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[2,3,2,3]
3849 ; SSE-NEXT:    movdqa %xmm0, %xmm14
3850 ; SSE-NEXT:    movdqa %xmm0, %xmm6
3851 ; SSE-NEXT:    movdqa %xmm11, %xmm1
3852 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm14 = xmm14[0],xmm11[0],xmm14[1],xmm11[1],xmm14[2],xmm11[2],xmm14[3],xmm11[3]
3853 ; SSE-NEXT:    pshuflw {{.*#+}} xmm14 = xmm14[2,2,2,2,4,5,6,7]
3854 ; SSE-NEXT:    pshufhw {{.*#+}} xmm14 = xmm14[0,1,2,3,5,4,6,7]
3855 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm14[0,2,2,3]
3856 ; SSE-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1]
3857 ; SSE-NEXT:    movdqa %xmm13, %xmm14
3858 ; SSE-NEXT:    pandn %xmm3, %xmm14
3859 ; SSE-NEXT:    pand %xmm13, %xmm0
3860 ; SSE-NEXT:    por %xmm0, %xmm14
3861 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
3862 ; SSE-NEXT:    movdqa %xmm1, %xmm0
3863 ; SSE-NEXT:    movdqa %xmm1, %xmm6
3864 ; SSE-NEXT:    pslldq {{.*#+}} xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3865 ; SSE-NEXT:    movdqa %xmm9, %xmm3
3866 ; SSE-NEXT:    pandn %xmm0, %xmm3
3867 ; SSE-NEXT:    movdqa %xmm5, %xmm0
3868 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm12[4],xmm0[5],xmm12[5],xmm0[6],xmm12[6],xmm0[7],xmm12[7]
3869 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]
3870 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]
3871 ; SSE-NEXT:    pand %xmm9, %xmm0
3872 ; SSE-NEXT:    por %xmm3, %xmm0
3873 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [0,65535,65535,65535,65535,0,65535,65535]
3874 ; SSE-NEXT:    pand %xmm11, %xmm0
3875 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[2,3,2,3]
3876 ; SSE-NEXT:    pandn %xmm1, %xmm11
3877 ; SSE-NEXT:    por %xmm0, %xmm11
3878 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3879 ; SSE-NEXT:    psrlq $48, %xmm0
3880 ; SSE-NEXT:    movdqa %xmm5, %xmm3
3881 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm3 = xmm3[1],xmm0[1]
3882 ; SSE-NEXT:    movdqa %xmm9, %xmm0
3883 ; SSE-NEXT:    pandn %xmm3, %xmm0
3884 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm6[0,1,2,3,4,5,7,6]
3885 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]
3886 ; SSE-NEXT:    pand %xmm9, %xmm3
3887 ; SSE-NEXT:    por %xmm0, %xmm3
3888 ; SSE-NEXT:    movdqa %xmm10, %xmm12
3889 ; SSE-NEXT:    pandn %xmm1, %xmm12
3890 ; SSE-NEXT:    pand %xmm10, %xmm3
3891 ; SSE-NEXT:    por %xmm3, %xmm12
3892 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3893 ; SSE-NEXT:    movdqa %xmm0, %xmm1
3894 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
3895 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1],xmm1[2],xmm7[2],xmm1[3],xmm7[3]
3896 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]
3897 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]
3898 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
3899 ; SSE-NEXT:    movdqa %xmm8, %xmm3
3900 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3901 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3]
3902 ; SSE-NEXT:    pshuflw {{.*#+}} xmm13 = xmm3[0,1,3,2,4,5,6,7]
3903 ; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm13[0,1,1,1]
3904 ; SSE-NEXT:    pand %xmm4, %xmm13
3905 ; SSE-NEXT:    pandn %xmm1, %xmm4
3906 ; SSE-NEXT:    por %xmm13, %xmm4
3907 ; SSE-NEXT:    pand %xmm2, %xmm4
3908 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3909 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm5[0,1,0,1]
3910 ; SSE-NEXT:    pandn %xmm1, %xmm2
3911 ; SSE-NEXT:    por %xmm4, %xmm2
3912 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6,6]
3913 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,3,2,3]
3914 ; SSE-NEXT:    movdqa %xmm7, %xmm4
3915 ; SSE-NEXT:    movdqa %xmm0, %xmm13
3916 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]
3917 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]
3918 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,4,6,7]
3919 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]
3920 ; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
3921 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,0,65535]
3922 ; SSE-NEXT:    pand %xmm0, %xmm4
3923 ; SSE-NEXT:    pandn %xmm1, %xmm0
3924 ; SSE-NEXT:    por %xmm4, %xmm0
3925 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3926 ; SSE-NEXT:    movdqa %xmm13, %xmm3
3927 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm7[4],xmm3[5],xmm7[5],xmm3[6],xmm7[6],xmm3[7],xmm7[7]
3928 ; SSE-NEXT:    movdqa %xmm3, %xmm1
3929 ; SSE-NEXT:    movdqa %xmm3, %xmm7
3930 ; SSE-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
3931 ; SSE-NEXT:    movdqa %xmm9, %xmm3
3932 ; SSE-NEXT:    pandn %xmm1, %xmm3
3933 ; SSE-NEXT:    movdqa %xmm8, %xmm1
3934 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
3935 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,2,3,3,4,5,6,7]
3936 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,2]
3937 ; SSE-NEXT:    pand %xmm9, %xmm1
3938 ; SSE-NEXT:    por %xmm3, %xmm1
3939 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [0,65535,65535,65535,65535,0,65535,65535]
3940 ; SSE-NEXT:    pand %xmm0, %xmm1
3941 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[2,3,2,3]
3942 ; SSE-NEXT:    pandn %xmm3, %xmm0
3943 ; SSE-NEXT:    por %xmm1, %xmm0
3944 ; SSE-NEXT:    psrlq $48, %xmm6
3945 ; SSE-NEXT:    punpckhqdq {{.*#+}} xmm8 = xmm8[1],xmm6[1]
3946 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm7[0,1,2,3,4,5,7,6]
3947 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]
3948 ; SSE-NEXT:    pand %xmm9, %xmm1
3949 ; SSE-NEXT:    pandn %xmm8, %xmm9
3950 ; SSE-NEXT:    por %xmm1, %xmm9
3951 ; SSE-NEXT:    pand %xmm10, %xmm9
3952 ; SSE-NEXT:    pandn %xmm3, %xmm10
3953 ; SSE-NEXT:    por %xmm9, %xmm10
3954 ; SSE-NEXT:    movdqa %xmm10, 624(%r9)
3955 ; SSE-NEXT:    movdqa %xmm0, 608(%r9)
3956 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3957 ; SSE-NEXT:    movaps %xmm0, 576(%r9)
3958 ; SSE-NEXT:    movdqa %xmm2, 560(%r9)
3959 ; SSE-NEXT:    movdqa %xmm12, 544(%r9)
3960 ; SSE-NEXT:    movdqa %xmm11, 528(%r9)
3961 ; SSE-NEXT:    movdqa %xmm14, 496(%r9)
3962 ; SSE-NEXT:    movdqa %xmm15, 480(%r9)
3963 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3964 ; SSE-NEXT:    movaps %xmm0, 464(%r9)
3965 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3966 ; SSE-NEXT:    movaps %xmm0, 448(%r9)
3967 ; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload
3968 ; SSE-NEXT:    movaps %xmm0, 416(%r9)
3969 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3970 ; SSE-NEXT:    movaps %xmm0, 400(%r9)
3971 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3972 ; SSE-NEXT:    movaps %xmm0, 384(%r9)
3973 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3974 ; SSE-NEXT:    movaps %xmm0, 368(%r9)
3975 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3976 ; SSE-NEXT:    movaps %xmm0, 336(%r9)
3977 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3978 ; SSE-NEXT:    movaps %xmm0, 320(%r9)
3979 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3980 ; SSE-NEXT:    movaps %xmm0, 304(%r9)
3981 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3982 ; SSE-NEXT:    movaps %xmm0, 288(%r9)
3983 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3984 ; SSE-NEXT:    movaps %xmm0, 256(%r9)
3985 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3986 ; SSE-NEXT:    movaps %xmm0, 240(%r9)
3987 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3988 ; SSE-NEXT:    movaps %xmm0, 224(%r9)
3989 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3990 ; SSE-NEXT:    movaps %xmm0, 208(%r9)
3991 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3992 ; SSE-NEXT:    movaps %xmm0, 176(%r9)
3993 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3994 ; SSE-NEXT:    movaps %xmm0, 160(%r9)
3995 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3996 ; SSE-NEXT:    movaps %xmm0, 144(%r9)
3997 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3998 ; SSE-NEXT:    movaps %xmm0, 128(%r9)
3999 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4000 ; SSE-NEXT:    movaps %xmm0, 96(%r9)
4001 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4002 ; SSE-NEXT:    movaps %xmm0, 80(%r9)
4003 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4004 ; SSE-NEXT:    movaps %xmm0, 64(%r9)
4005 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4006 ; SSE-NEXT:    movaps %xmm0, 48(%r9)
4007 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4008 ; SSE-NEXT:    movaps %xmm0, 16(%r9)
4009 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4010 ; SSE-NEXT:    movaps %xmm0, (%r9)
4011 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4012 ; SSE-NEXT:    movaps %xmm0, 592(%r9)
4013 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4014 ; SSE-NEXT:    movaps %xmm0, 512(%r9)
4015 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4016 ; SSE-NEXT:    movaps %xmm0, 432(%r9)
4017 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4018 ; SSE-NEXT:    movaps %xmm0, 352(%r9)
4019 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4020 ; SSE-NEXT:    movaps %xmm0, 272(%r9)
4021 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4022 ; SSE-NEXT:    movaps %xmm0, 192(%r9)
4023 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4024 ; SSE-NEXT:    movaps %xmm0, 112(%r9)
4025 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4026 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
4027 ; SSE-NEXT:    addq $616, %rsp # imm = 0x268
4028 ; SSE-NEXT:    retq
4030 ; AVX1-ONLY-LABEL: store_i16_stride5_vf64:
4031 ; AVX1-ONLY:       # %bb.0:
4032 ; AVX1-ONLY-NEXT:    subq $392, %rsp # imm = 0x188
4033 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rcx), %xmm4
4034 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rdx), %xmm6
4035 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]
4036 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
4037 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]
4038 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]
4039 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
4040 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm12 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535]
4041 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm12, %ymm0
4042 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rdi), %xmm8
4043 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rsi), %xmm10
4044 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm10, %xmm1
4045 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm1 = xmm8[1],xmm1[1]
4046 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm8[4],xmm10[4],xmm8[5],xmm10[5],xmm8[6],xmm10[6],xmm8[7],xmm10[7]
4047 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[0,2,3,3,4,5,6,7]
4048 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[0,1,2,2]
4049 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
4050 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm12, %ymm1
4051 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm0
4052 ; AVX1-ONLY-NEXT:    vmovdqa 80(%r8), %xmm9
4053 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm9[2,3,2,3]
4054 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm1[0],xmm0[1,2,3,4],xmm1[5],xmm0[6,7]
4055 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4056 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm0
4057 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6],xmm1[7]
4058 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4059 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm0
4060 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rsi), %xmm1
4061 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm1, %xmm2
4062 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm0[1],xmm2[1]
4063 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm11 = xmm8[0],xmm10[0],xmm8[1],xmm10[1],xmm8[2],xmm10[2],xmm8[3],xmm10[3]
4064 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm11[0,1,3,2,4,5,6,7]
4065 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,1,1,1]
4066 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm2, %ymm7
4067 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rcx), %xmm3
4068 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rdx), %xmm5
4069 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm2 = xmm5[4],xmm3[4],xmm5[5],xmm3[5],xmm5[6],xmm3[6],xmm5[7],xmm3[7]
4070 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm13 = xmm2[0,1,2,3,4,5,7,6]
4071 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm13 = xmm13[2,1,3,3]
4072 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm14 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3]
4073 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm14 = xmm14[0,1,2,2,4,5,6,7]
4074 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm14 = xmm14[0,0,2,1]
4075 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm14, %ymm13, %ymm13
4076 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm12, %ymm7
4077 ; AVX1-ONLY-NEXT:    vandps %ymm12, %ymm13, %ymm13
4078 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm13, %ymm7
4079 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm7, %xmm13
4080 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm10 = xmm10[3,3,3,3,4,5,6,7]
4081 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,4,4]
4082 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm8 = xmm10[0,1,2,3],xmm8[4],xmm10[5,6,7]
4083 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm10 = xmm11[0,1,2,3,4,5,6,6]
4084 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm10 = xmm10[0,2,2,3]
4085 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm8, %ymm10, %ymm8
4086 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm10 = xmm6[1,1,2,2]
4087 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm11 = xmm4[3,3,3,3,4,5,6,7]
4088 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,4,4,4]
4089 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm11 = xmm10[0,1],xmm11[2],xmm10[3,4,5,6],xmm11[7]
4090 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm14 = xmm9[0,1,0,1]
4091 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm10 = xmm13[0,1,2,3],xmm14[4],xmm13[5,6,7]
4092 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4093 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3]
4094 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm15 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
4095 ; AVX1-ONLY-NEXT:    vandnps %ymm8, %ymm15, %ymm6
4096 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm4[2,2,2,2,4,5,6,7]
4097 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,4,6,7]
4098 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm11, %ymm4, %ymm4
4099 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm15, %ymm4
4100 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm4, %ymm4
4101 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm4[0],xmm14[1],xmm4[2,3,4,5],xmm14[6],xmm4[7]
4102 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4103 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm4, %xmm4
4104 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm9[3],xmm4[4,5,6,7]
4105 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4106 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3]
4107 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm4[0,1,2,2,4,5,6,7]
4108 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,0,2,1]
4109 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3]
4110 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[1,1,2,3]
4111 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,4,6,7]
4112 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm4, %ymm6
4113 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
4114 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm8 = xmm4[0,1,3,2,4,5,6,7]
4115 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm8 = xmm8[0,1,1,1]
4116 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6,6]
4117 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]
4118 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm4, %ymm8, %ymm8
4119 ; AVX1-ONLY-NEXT:    vmovdqa 64(%r8), %xmm4
4120 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm15, %ymm6
4121 ; AVX1-ONLY-NEXT:    vandps %ymm15, %ymm8, %ymm8
4122 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm8, %ymm6
4123 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm8 = xmm4[0,1,0,1]
4124 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm9 = xmm6[0,1,2,3],xmm8[4],xmm6[5,6,7]
4125 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4126 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm6, %xmm6
4127 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0],xmm8[1],xmm6[2,3,4,5],xmm8[6],xmm6[7]
4128 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4129 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[1,1,2,2]
4130 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm3[3,3,3,3,4,5,6,7]
4131 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]
4132 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm5[0,1],xmm3[2],xmm5[3,4,5,6],xmm3[7]
4133 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm4[2,3,2,3]
4134 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm7[0,1],xmm5[2],xmm7[3,4,5,6],xmm5[7]
4135 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4136 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm2 = zero,zero,xmm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
4137 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
4138 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm1[3,3,3,3,4,5,6,7]
4139 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,4,4]
4140 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3],xmm0[4],xmm3[5,6,7]
4141 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
4142 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm10 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
4143 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm10, %ymm1
4144 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,2,3,3,4,5,6,7]
4145 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,2,2]
4146 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm3, %ymm0
4147 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm10, %ymm0
4148 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
4149 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2],xmm4[3],xmm0[4,5,6,7]
4150 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4151 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm0
4152 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm5[0],xmm0[1,2,3,4],xmm5[5],xmm0[6,7]
4153 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4154 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm4
4155 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rsi), %xmm5
4156 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm5[3,3,3,3,4,5,6,7]
4157 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
4158 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm4[4],xmm0[5,6,7]
4159 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]
4160 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,5,6,6]
4161 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
4162 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm2
4163 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rcx), %xmm1
4164 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm1[3,3,3,3,4,5,6,7]
4165 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm3[0,1,2,3,4,4,4,4]
4166 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdx), %xmm3
4167 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm3[1,1,2,2]
4168 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm7[0,1],xmm6[2],xmm7[3,4,5,6],xmm6[7]
4169 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
4170 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]
4171 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,4,6,7]
4172 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm7, %ymm6
4173 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm15, %ymm2
4174 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm15, %ymm6
4175 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm6, %ymm2
4176 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm6 = xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]
4177 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm7 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
4178 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,7,6]
4179 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[2,1,3,3]
4180 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm7, %ymm6
4181 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm5, %xmm7
4182 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm7 = xmm4[1],xmm7[1]
4183 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm4 = xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7]
4184 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm4[0,2,3,3,4,5,6,7]
4185 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,1,2,2]
4186 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm4, %ymm4
4187 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm12, %ymm5
4188 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm12, %ymm4
4189 ; AVX1-ONLY-NEXT:    vorps %ymm5, %ymm4, %ymm4
4190 ; AVX1-ONLY-NEXT:    vmovdqa 48(%r8), %xmm11
4191 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm11[2,3,2,3]
4192 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm5[0],xmm4[1,2,3,4],xmm5[5],xmm4[6,7]
4193 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4194 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm4, %xmm4
4195 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2],xmm4[3,4,5,6],xmm5[7]
4196 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4197 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rcx), %xmm4
4198 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm4[3,3,3,3,4,5,6,7]
4199 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]
4200 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdx), %xmm6
4201 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm6[1,1,2,2]
4202 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm5 = xmm7[0,1],xmm5[2],xmm7[3,4,5,6],xmm5[7]
4203 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm8 = xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]
4204 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm7 = zero,zero,xmm8[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
4205 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm5, %ymm7
4206 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rsi), %xmm5
4207 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm9 = xmm5[3,3,3,3,4,5,6,7]
4208 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm13 = xmm9[0,1,2,3,4,4,4,4]
4209 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm9
4210 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3],xmm9[4],xmm13[5,6,7]
4211 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm14 = xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]
4212 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm14 = xmm14[0,2,3,3,4,5,6,7]
4213 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm14 = xmm14[0,1,2,2]
4214 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm14, %ymm13, %ymm13
4215 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm10, %ymm7
4216 ; AVX1-ONLY-NEXT:    vandps %ymm10, %ymm13, %ymm13
4217 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm13, %ymm7
4218 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm5, %xmm13
4219 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm13 = xmm9[1],xmm13[1]
4220 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]
4221 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,1,1]
4222 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm13, %ymm0
4223 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
4224 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm3 = xmm8[0,1,2,3,4,5,7,6]
4225 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]
4226 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]
4227 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]
4228 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm3, %ymm1
4229 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm12, %ymm0
4230 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm12, %ymm1
4231 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm0
4232 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm1
4233 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm11[3],xmm1[4,5,6,7]
4234 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4235 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm11[0,1,0,1]
4236 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm1[1],xmm2[2,3,4,5],xmm1[6],xmm2[7]
4237 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4238 ; AVX1-ONLY-NEXT:    vmovdqa 32(%r8), %xmm2
4239 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm7, %xmm3
4240 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm8 = xmm2[2,3,2,3]
4241 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm8[0],xmm3[1,2,3,4],xmm8[5],xmm3[6,7]
4242 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4243 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm0[0,1],xmm8[2],xmm0[3,4,5,6],xmm8[7]
4244 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4245 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm0
4246 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
4247 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4248 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3]
4249 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3]
4250 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
4251 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
4252 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,3]
4253 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,4,6,7]
4254 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
4255 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3]
4256 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm1[0,1,3,2,4,5,6,7]
4257 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,1,1,1]
4258 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,6]
4259 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
4260 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm3, %ymm1
4261 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm15, %ymm0
4262 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm15, %ymm1
4263 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm0
4264 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm7[0,1,2],xmm2[3],xmm7[4,5,6,7]
4265 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4266 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm2[0,1,0,1]
4267 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
4268 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4269 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm0
4270 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5],xmm1[6],xmm0[7]
4271 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4272 ; AVX1-ONLY-NEXT:    vmovdqa 112(%rsi), %xmm4
4273 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm4[3,3,3,3,4,5,6,7]
4274 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
4275 ; AVX1-ONLY-NEXT:    vmovdqa 112(%rdi), %xmm5
4276 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm5[4],xmm0[5,6,7]
4277 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]
4278 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,5,6,6]
4279 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
4280 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm2
4281 ; AVX1-ONLY-NEXT:    vmovdqa 112(%rcx), %xmm1
4282 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm1[3,3,3,3,4,5,6,7]
4283 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm3[0,1,2,3,4,4,4,4]
4284 ; AVX1-ONLY-NEXT:    vmovdqa 112(%rdx), %xmm3
4285 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm3[1,1,2,2]
4286 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm7[0,1],xmm6[2],xmm7[3,4,5,6],xmm6[7]
4287 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
4288 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm7[2,2,2,2,4,5,6,7]
4289 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,4,6,7]
4290 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm7, %ymm6
4291 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm15, %ymm2
4292 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm15, %ymm6
4293 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm6, %ymm2
4294 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm6 = xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]
4295 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm7 = zero,zero,xmm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
4296 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,7,6]
4297 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[2,1,3,3]
4298 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm7, %ymm6
4299 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm4, %xmm7
4300 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm7 = xmm5[1],xmm7[1]
4301 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm4 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]
4302 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm4 = xmm4[0,2,3,3,4,5,6,7]
4303 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,1,2,2]
4304 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm4, %ymm4
4305 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm12, %ymm5
4306 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm12, %ymm4
4307 ; AVX1-ONLY-NEXT:    vorps %ymm5, %ymm4, %ymm4
4308 ; AVX1-ONLY-NEXT:    vmovdqa 112(%r8), %xmm7
4309 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm7[2,3,2,3]
4310 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm5[0],xmm4[1,2,3,4],xmm5[5],xmm4[6,7]
4311 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4312 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm4, %xmm4
4313 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2],xmm4[3,4,5,6],xmm5[7]
4314 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4315 ; AVX1-ONLY-NEXT:    vmovdqa 96(%rcx), %xmm4
4316 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm4[3,3,3,3,4,5,6,7]
4317 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm5[0,1,2,3,4,4,4,4]
4318 ; AVX1-ONLY-NEXT:    vmovdqa 96(%rdx), %xmm5
4319 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm8 = xmm5[1,1,2,2]
4320 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm8[0,1],xmm6[2],xmm8[3,4,5,6],xmm6[7]
4321 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm8 = xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]
4322 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm9 = zero,zero,xmm8[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
4323 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm9, %ymm6, %ymm9
4324 ; AVX1-ONLY-NEXT:    vmovdqa 96(%rsi), %xmm6
4325 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm11 = xmm6[3,3,3,3,4,5,6,7]
4326 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm13 = xmm11[0,1,2,3,4,4,4,4]
4327 ; AVX1-ONLY-NEXT:    vmovdqa 96(%rdi), %xmm11
4328 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3],xmm11[4],xmm13[5,6,7]
4329 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm14 = xmm11[4],xmm6[4],xmm11[5],xmm6[5],xmm11[6],xmm6[6],xmm11[7],xmm6[7]
4330 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm14 = xmm14[0,2,3,3,4,5,6,7]
4331 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm14 = xmm14[0,1,2,2]
4332 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm14, %ymm13, %ymm13
4333 ; AVX1-ONLY-NEXT:    vandnps %ymm9, %ymm10, %ymm9
4334 ; AVX1-ONLY-NEXT:    vandps %ymm10, %ymm13, %ymm13
4335 ; AVX1-ONLY-NEXT:    vorps %ymm9, %ymm13, %ymm9
4336 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm6, %xmm13
4337 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm13 = xmm11[1],xmm13[1]
4338 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,3,2,4,5,6,7]
4339 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,1,1,1]
4340 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm13, %ymm0
4341 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
4342 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm3 = xmm8[0,1,2,3,4,5,7,6]
4343 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[2,1,3,3]
4344 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm1[0,1,2,2,4,5,6,7]
4345 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,0,2,1]
4346 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm3, %ymm1
4347 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm12, %ymm0
4348 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm12, %ymm1
4349 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm0
4350 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm1
4351 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2],xmm7[3],xmm1[4,5,6,7]
4352 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4353 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm7[0,1,0,1]
4354 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm1[1],xmm2[2,3,4,5],xmm1[6],xmm2[7]
4355 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, (%rsp) # 16-byte Spill
4356 ; AVX1-ONLY-NEXT:    vmovdqa 96(%r8), %xmm2
4357 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm9, %xmm3
4358 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm2[2,3,2,3]
4359 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm7[0],xmm3[1,2,3,4],xmm7[5],xmm3[6,7]
4360 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4361 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm0[0,1],xmm7[2],xmm0[3,4,5,6],xmm7[7]
4362 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4363 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm0
4364 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
4365 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4366 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]
4367 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]
4368 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[0,1,2,2,4,5,6,7]
4369 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,0,2,1]
4370 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,2,3]
4371 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,4,6,7]
4372 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
4373 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm11[0],xmm6[0],xmm11[1],xmm6[1],xmm11[2],xmm6[2],xmm11[3],xmm6[3]
4374 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm1[0,1,3,2,4,5,6,7]
4375 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,1,1,1]
4376 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,6]
4377 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
4378 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm3, %ymm1
4379 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm15, %ymm0
4380 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm15, %ymm1
4381 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm0
4382 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm9[0,1,2],xmm2[3],xmm9[4,5,6,7]
4383 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4384 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm2[0,1,0,1]
4385 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
4386 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4387 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm0, %xmm0
4388 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3,4,5],xmm1[6],xmm0[7]
4389 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4390 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdx), %xmm8
4391 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rcx), %xmm7
4392 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm0 = xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]
4393 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm1 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
4394 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,7,6]
4395 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[2,1,3,3]
4396 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm4
4397 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm1
4398 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rsi), %xmm0
4399 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm0, %xmm5
4400 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm5 = xmm1[1],xmm5[1]
4401 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm6 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
4402 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm6 = xmm6[0,2,3,3,4,5,6,7]
4403 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[0,1,2,2]
4404 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm6, %ymm5
4405 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm12, %ymm4
4406 ; AVX1-ONLY-NEXT:    vandps %ymm5, %ymm12, %ymm5
4407 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm5, %ymm4
4408 ; AVX1-ONLY-NEXT:    vmovdqa 16(%r8), %xmm6
4409 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm6[2,3,2,3]
4410 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm5[0],xmm4[1,2,3,4],xmm5[5],xmm4[6,7]
4411 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4412 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm4, %xmm4
4413 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm4[0,1],xmm5[2],xmm4[3,4,5,6],xmm5[7]
4414 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4415 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm10
4416 ; AVX1-ONLY-NEXT:    vmovdqa (%rsi), %xmm9
4417 ; AVX1-ONLY-NEXT:    vpsrlq $48, %xmm9, %xmm4
4418 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm4 = xmm10[1],xmm4[1]
4419 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
4420 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm2[0,1,3,2,4,5,6,7]
4421 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[0,1,1,1]
4422 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm4, %ymm3
4423 ; AVX1-ONLY-NEXT:    vmovdqa (%rdx), %xmm4
4424 ; AVX1-ONLY-NEXT:    vmovdqa (%rcx), %xmm5
4425 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm11 = xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7]
4426 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm14 = xmm11[0,1,2,3,4,5,7,6]
4427 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm14 = xmm14[2,1,3,3]
4428 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm13 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]
4429 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm13 = xmm13[0,1,2,2,4,5,6,7]
4430 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm13 = xmm13[0,0,2,1]
4431 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm13, %ymm14, %ymm13
4432 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm12, %ymm3
4433 ; AVX1-ONLY-NEXT:    vandps %ymm12, %ymm13, %ymm12
4434 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm12, %ymm12
4435 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm0 = xmm0[3,3,3,3,4,5,6,7]
4436 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,4,4]
4437 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
4438 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5,6,6]
4439 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
4440 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
4441 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm1 = xmm7[3,3,3,3,4,5,6,7]
4442 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,4,4]
4443 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm2 = xmm8[1,1,2,2]
4444 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1],xmm1[2],xmm2[3,4,5,6],xmm1[7]
4445 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]
4446 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm2 = xmm2[2,2,2,2,4,5,6,7]
4447 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]
4448 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
4449 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm15, %ymm0
4450 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm15, %ymm1
4451 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm2
4452 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm12, %xmm0
4453 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm1 = xmm6[0,1,0,1]
4454 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
4455 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0],xmm1[1],xmm2[2,3,4,5],xmm1[6],xmm2[7]
4456 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm2, %xmm2
4457 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1,2],xmm6[3],xmm2[4,5,6,7]
4458 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]
4459 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm3 = xmm3[0,1,2,2,4,5,6,7]
4460 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[0,0,2,1]
4461 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]
4462 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[1,1,2,3]
4463 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,4,6,7]
4464 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm3, %ymm3
4465 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm10[0],xmm9[0],xmm10[1],xmm9[1],xmm10[2],xmm9[2],xmm10[3],xmm9[3]
4466 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm6[0,1,3,2,4,5,6,7]
4467 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[0,1,1,1]
4468 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,5,6,6]
4469 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm6 = xmm6[0,2,2,3]
4470 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm7, %ymm6
4471 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm15, %ymm3
4472 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm15, %ymm6
4473 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm6, %ymm3
4474 ; AVX1-ONLY-NEXT:    vmovdqa (%r8), %xmm6
4475 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm6[0,1,0,1]
4476 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm8 = xmm3[0,1,2,3],xmm7[4],xmm3[5,6,7]
4477 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm3, %xmm3
4478 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm7[1],xmm3[2,3,4,5],xmm7[6],xmm3[7]
4479 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,2]
4480 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm5[3,3,3,3,4,5,6,7]
4481 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]
4482 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm5[2],xmm4[3,4,5,6],xmm5[7]
4483 ; AVX1-ONLY-NEXT:    vpslldq {{.*#+}} xmm5 = zero,zero,xmm11[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
4484 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm4, %ymm4
4485 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm5 = xmm9[3,3,3,3,4,5,6,7]
4486 ; AVX1-ONLY-NEXT:    vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,4,4]
4487 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3],xmm10[4],xmm5[5,6,7]
4488 ; AVX1-ONLY-NEXT:    vpunpckhwd {{.*#+}} xmm7 = xmm10[4],xmm9[4],xmm10[5],xmm9[5],xmm10[6],xmm9[6],xmm10[7],xmm9[7]
4489 ; AVX1-ONLY-NEXT:    vpshuflw {{.*#+}} xmm7 = xmm7[0,2,3,3,4,5,6,7]
4490 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[0,1,2,2]
4491 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm5, %ymm5
4492 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm7 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
4493 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm7, %ymm4
4494 ; AVX1-ONLY-NEXT:    vandps %ymm7, %ymm5, %ymm5
4495 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm5, %ymm4
4496 ; AVX1-ONLY-NEXT:    vpshufd {{.*#+}} xmm5 = xmm6[2,3,2,3]
4497 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm12[0,1],xmm5[2],xmm12[3,4,5,6],xmm5[7]
4498 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm4[0,1,2],xmm6[3],xmm4[4,5,6,7]
4499 ; AVX1-ONLY-NEXT:    vextractf128 $1, %ymm4, %xmm4
4500 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm5[0],xmm4[1,2,3,4],xmm5[5],xmm4[6,7]
4501 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, 48(%r9)
4502 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, 32(%r9)
4503 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, 16(%r9)
4504 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, (%r9)
4505 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, 112(%r9)
4506 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, 96(%r9)
4507 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, 80(%r9)
4508 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, 64(%r9)
4509 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4510 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 144(%r9)
4511 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4512 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 128(%r9)
4513 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4514 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 496(%r9)
4515 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4516 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 480(%r9)
4517 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4518 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 560(%r9)
4519 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4520 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 544(%r9)
4521 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4522 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 528(%r9)
4523 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4524 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 512(%r9)
4525 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4526 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 624(%r9)
4527 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4528 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 608(%r9)
4529 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4530 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 592(%r9)
4531 ; AVX1-ONLY-NEXT:    vmovaps (%rsp), %xmm0 # 16-byte Reload
4532 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 576(%r9)
4533 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4534 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 176(%r9)
4535 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4536 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 160(%r9)
4537 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4538 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 240(%r9)
4539 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4540 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 224(%r9)
4541 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4542 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 208(%r9)
4543 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4544 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 192(%r9)
4545 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4546 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 304(%r9)
4547 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4548 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 288(%r9)
4549 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4550 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 272(%r9)
4551 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4552 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 256(%r9)
4553 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4554 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 368(%r9)
4555 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4556 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 352(%r9)
4557 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4558 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 336(%r9)
4559 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4560 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 320(%r9)
4561 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4562 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 432(%r9)
4563 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4564 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 416(%r9)
4565 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4566 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 400(%r9)
4567 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4568 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 384(%r9)
4569 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4570 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 464(%r9)
4571 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4572 ; AVX1-ONLY-NEXT:    vmovaps %xmm0, 448(%r9)
4573 ; AVX1-ONLY-NEXT:    addq $392, %rsp # imm = 0x188
4574 ; AVX1-ONLY-NEXT:    vzeroupper
4575 ; AVX1-ONLY-NEXT:    retq
4577 ; AVX2-SLOW-LABEL: store_i16_stride5_vf64:
4578 ; AVX2-SLOW:       # %bb.0:
4579 ; AVX2-SLOW-NEXT:    subq $968, %rsp # imm = 0x3C8
4580 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %xmm3
4581 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdx), %xmm12
4582 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rdx), %xmm4
4583 ; AVX2-SLOW-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4584 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %xmm9
4585 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rcx), %xmm0
4586 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rcx), %xmm5
4587 ; AVX2-SLOW-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4588 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm9[0],xmm3[0],xmm9[1],xmm3[1],xmm9[2],xmm3[2],xmm9[3],xmm3[3]
4589 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm2 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
4590 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
4591 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]
4592 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %xmm11
4593 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rsi), %xmm10
4594 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rsi), %xmm6
4595 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %xmm7
4596 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdi), %xmm14
4597 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rdi), %xmm15
4598 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm7[0],xmm11[0],xmm7[1],xmm11[1],xmm7[2],xmm11[2],xmm7[3],xmm11[3]
4599 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[0,2,1,3]
4600 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,5,6]
4601 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]
4602 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm13 = <255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255>
4603 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm7, %ymm1, %ymm8
4604 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm0[0],xmm12[0],xmm0[1],xmm12[1],xmm0[2],xmm12[2],xmm0[3],xmm12[3]
4605 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
4606 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]
4607 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm14[0],xmm10[0],xmm14[1],xmm10[1],xmm14[2],xmm10[2],xmm14[3],xmm10[3]
4608 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[0,2,1,3]
4609 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,5,6]
4610 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]
4611 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm7, %ymm1, %ymm14
4612 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]
4613 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
4614 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]
4615 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm15[0],xmm6[0],xmm15[1],xmm6[1],xmm15[2],xmm6[2],xmm15[3],xmm6[3]
4616 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[0,2,1,3]
4617 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,5,6]
4618 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm7[0,1,0,1]
4619 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm7, %ymm1, %ymm15
4620 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rdx), %xmm1
4621 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rcx), %xmm7
4622 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm7[0],xmm1[0],xmm7[1],xmm1[1],xmm7[2],xmm1[2],xmm7[3],xmm1[3]
4623 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm4, %xmm2
4624 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm2[0,1,0,1]
4625 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rsi), %xmm2
4626 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rdi), %xmm5
4627 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]
4628 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm5 = xmm5[0,2,1,3]
4629 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,4,5,6]
4630 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]
4631 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm5, %ymm4, %ymm4
4632 ; AVX2-SLOW-NEXT:    vpbroadcastq (%r8), %ymm5
4633 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm13 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
4634 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm8, %ymm5, %ymm5
4635 ; AVX2-SLOW-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4636 ; AVX2-SLOW-NEXT:    vpbroadcastq 32(%r8), %ymm5
4637 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm14, %ymm5, %ymm5
4638 ; AVX2-SLOW-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4639 ; AVX2-SLOW-NEXT:    vpbroadcastq 64(%r8), %ymm5
4640 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm15, %ymm5, %ymm5
4641 ; AVX2-SLOW-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4642 ; AVX2-SLOW-NEXT:    vpbroadcastq 96(%r8), %ymm5
4643 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm4, %ymm5, %ymm4
4644 ; AVX2-SLOW-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4645 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm8 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
4646 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm11, %xmm4
4647 ; AVX2-SLOW-NEXT:    vpbroadcastq 8(%rdi), %xmm5
4648 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1],xmm4[2,3],xmm5[4],xmm4[5],xmm5[6],xmm4[7]
4649 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm14 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
4650 ; AVX2-SLOW-NEXT:    vpshufb %xmm14, %xmm9, %xmm5
4651 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[1,2,2,2]
4652 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm3 = xmm5[0],xmm3[1],xmm5[2],xmm3[3],xmm5[4,5],xmm3[6],xmm5[7]
4653 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,0,1]
4654 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,1,0,0]
4655 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
4656 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm4, %ymm3, %ymm3
4657 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm10, %xmm4
4658 ; AVX2-SLOW-NEXT:    vpbroadcastq 40(%rdi), %xmm5
4659 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1],xmm4[2,3],xmm5[4],xmm4[5],xmm5[6],xmm4[7]
4660 ; AVX2-SLOW-NEXT:    vpshufb %xmm14, %xmm0, %xmm0
4661 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm5 = xmm12[1,2,2,2]
4662 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm5[1],xmm0[2],xmm5[3],xmm0[4,5],xmm5[6],xmm0[7]
4663 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,0,1]
4664 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,0]
4665 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm4, %ymm0, %ymm0
4666 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm6, %xmm4
4667 ; AVX2-SLOW-NEXT:    vpbroadcastq 72(%rdi), %xmm5
4668 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1],xmm4[2,3],xmm5[4],xmm4[5],xmm5[6],xmm4[7]
4669 ; AVX2-SLOW-NEXT:    vmovdqa (%rdx), %ymm10
4670 ; AVX2-SLOW-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4671 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
4672 ; AVX2-SLOW-NEXT:    vpshufb %xmm14, %xmm5, %xmm5
4673 ; AVX2-SLOW-NEXT:    vpshufd $169, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
4674 ; AVX2-SLOW-NEXT:    # xmm6 = mem[1,2,2,2]
4675 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1],xmm5[2],xmm6[3],xmm5[4,5],xmm6[6],xmm5[7]
4676 ; AVX2-SLOW-NEXT:    vmovdqa (%rcx), %ymm12
4677 ; AVX2-SLOW-NEXT:    vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4678 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,0,1]
4679 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,0]
4680 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm4, %ymm5, %ymm4
4681 ; AVX2-SLOW-NEXT:    vmovdqa (%r8), %ymm6
4682 ; AVX2-SLOW-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4683 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm2, %xmm2
4684 ; AVX2-SLOW-NEXT:    vpbroadcastq 104(%rdi), %xmm5
4685 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm5[1],xmm2[2,3],xmm5[4],xmm2[5],xmm5[6],xmm2[7]
4686 ; AVX2-SLOW-NEXT:    vmovdqa 32(%r8), %ymm8
4687 ; AVX2-SLOW-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4688 ; AVX2-SLOW-NEXT:    vpshufb %xmm14, %xmm7, %xmm5
4689 ; AVX2-SLOW-NEXT:    vmovdqa 64(%r8), %ymm7
4690 ; AVX2-SLOW-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4691 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,2,2,2]
4692 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} xmm1 = xmm5[0],xmm1[1],xmm5[2],xmm1[3],xmm5[4,5],xmm1[6],xmm5[7]
4693 ; AVX2-SLOW-NEXT:    vmovdqa 96(%r8), %ymm11
4694 ; AVX2-SLOW-NEXT:    vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4695 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]
4696 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,0]
4697 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm2, %ymm1, %ymm1
4698 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm6[0,1,1,1]
4699 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
4700 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm3, %ymm2, %ymm2
4701 ; AVX2-SLOW-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4702 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm8[0,1,1,1]
4703 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm0, %ymm2, %ymm0
4704 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4705 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm7[0,1,1,1]
4706 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm4, %ymm0, %ymm0
4707 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4708 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm11[0,1,1,1]
4709 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm1, %ymm0, %ymm0
4710 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4711 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm9 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
4712 ; AVX2-SLOW-NEXT:    # ymm9 = mem[0,1,0,1]
4713 ; AVX2-SLOW-NEXT:    vpshufb %ymm9, %ymm12, %ymm1
4714 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm10[1,1,1,2,5,5,5,6]
4715 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]
4716 ; AVX2-SLOW-NEXT:    vmovdqa (%rsi), %ymm7
4717 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm2 = ymm7[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]
4718 ; AVX2-SLOW-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4719 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
4720 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %ymm0
4721 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4722 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm0[0,1,2,1,4,5,6,5]
4723 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3],ymm3[4],ymm2[5,6],ymm3[7],ymm2[8,9],ymm3[10],ymm2[11],ymm3[12],ymm2[13,14],ymm3[15]
4724 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
4725 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
4726 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm15 = <255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255>
4727 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm1, %ymm2, %ymm10
4728 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdx), %ymm0
4729 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4730 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rcx), %ymm1
4731 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4732 ; AVX2-SLOW-NEXT:    vpshufb %ymm9, %ymm1, %ymm1
4733 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm0[1,1,1,2,5,5,5,6]
4734 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]
4735 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rsi), %ymm13
4736 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm2 = ymm13[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]
4737 ; AVX2-SLOW-NEXT:    vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4738 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
4739 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm12
4740 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm12[0,1,2,1,4,5,6,5]
4741 ; AVX2-SLOW-NEXT:    vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4742 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3],ymm3[4],ymm2[5,6],ymm3[7],ymm2[8,9],ymm3[10],ymm2[11],ymm3[12],ymm2[13,14],ymm3[15]
4743 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
4744 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
4745 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm1, %ymm2, %ymm5
4746 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rdx), %ymm0
4747 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4748 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rcx), %ymm1
4749 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4750 ; AVX2-SLOW-NEXT:    vpshufb %ymm9, %ymm1, %ymm2
4751 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm0[1,1,1,2,5,5,5,6]
4752 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]
4753 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rsi), %ymm11
4754 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm3 = ymm11[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]
4755 ; AVX2-SLOW-NEXT:    vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4756 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
4757 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rdi), %ymm8
4758 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm8[0,1,2,1,4,5,6,5]
4759 ; AVX2-SLOW-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4760 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]
4761 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
4762 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]
4763 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm2, %ymm3, %ymm1
4764 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rcx), %ymm0
4765 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4766 ; AVX2-SLOW-NEXT:    vpshufb %ymm9, %ymm0, %ymm2
4767 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rdx), %ymm0
4768 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4769 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm0[1,1,1,2,5,5,5,6]
4770 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm9 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]
4771 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rsi), %ymm6
4772 ; AVX2-SLOW-NEXT:    vpshuflw {{.*#+}} ymm2 = ymm6[3,1,2,2,4,5,6,7,11,9,10,10,12,13,14,15]
4773 ; AVX2-SLOW-NEXT:    vmovdqu %ymm6, (%rsp) # 32-byte Spill
4774 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm2[0,1,2,3,4,4,4,4,8,9,10,11,12,12,12,12]
4775 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rdi), %ymm3
4776 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm14 = ymm3[0,1,2,1,4,5,6,5]
4777 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm14[2],ymm0[3],ymm14[4],ymm0[5,6],ymm14[7],ymm0[8,9],ymm14[10],ymm0[11],ymm14[12],ymm0[13,14],ymm14[15]
4778 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,3,2,3]
4779 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]
4780 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm9, %ymm0, %ymm0
4781 ; AVX2-SLOW-NEXT:    vpbroadcastq 16(%r8), %ymm9
4782 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = [255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255]
4783 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm10, %ymm9, %ymm9
4784 ; AVX2-SLOW-NEXT:    vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4785 ; AVX2-SLOW-NEXT:    vpbroadcastq 48(%r8), %ymm9
4786 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm5, %ymm9, %ymm2
4787 ; AVX2-SLOW-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4788 ; AVX2-SLOW-NEXT:    vpbroadcastq 80(%r8), %ymm5
4789 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm1, %ymm5, %ymm1
4790 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4791 ; AVX2-SLOW-NEXT:    vpbroadcastq 112(%r8), %ymm1
4792 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm0, %ymm1, %ymm0
4793 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4794 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm7[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
4795 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,2,6,7,6,6]
4796 ; AVX2-SLOW-NEXT:    vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload
4797 ; AVX2-SLOW-NEXT:    # ymm1 = mem[2,3,2,3,6,7,6,7]
4798 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]
4799 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
4800 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm1 = ymm10[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
4801 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,3,6,7,6,7]
4802 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
4803 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm7[3,2,3,3,7,6,7,7]
4804 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm5[1],ymm1[2],ymm5[3,4],ymm1[5,6,7,8],ymm5[9],ymm1[10],ymm5[11,12],ymm1[13,14,15]
4805 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
4806 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,2]
4807 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm15 = <u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u>
4808 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm0, %ymm1, %ymm0
4809 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4810 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm13[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
4811 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,2,6,7,6,6]
4812 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm12[2,3,2,3,6,7,6,7]
4813 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]
4814 ; AVX2-SLOW-NEXT:    vpshufhw $249, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload
4815 ; AVX2-SLOW-NEXT:    # ymm1 = mem[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
4816 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,3,6,7,6,7]
4817 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload
4818 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm12[3,2,3,3,7,6,7,7]
4819 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm5[1],ymm1[2],ymm5[3,4],ymm1[5,6,7,8],ymm5[9],ymm1[10],ymm5[11,12],ymm1[13,14,15]
4820 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
4821 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,2,3,2]
4822 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm0, %ymm1, %ymm0
4823 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm1 = ymm11[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
4824 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm1[2,3,2,2,6,7,6,6]
4825 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm8[2,3,2,3,6,7,6,7]
4826 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm5[1],ymm1[2],ymm5[3],ymm1[4,5],ymm5[6],ymm1[7,8],ymm5[9],ymm1[10],ymm5[11],ymm1[12,13],ymm5[14],ymm1[15]
4827 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
4828 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm5 = ymm8[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
4829 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm5[2,3,2,3,6,7,6,7]
4830 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
4831 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm4[3,2,3,3,7,6,7,7]
4832 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0],ymm9[1],ymm5[2],ymm9[3,4],ymm5[5,6,7,8],ymm9[9],ymm5[10],ymm9[11,12],ymm5[13,14,15]
4833 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,2]
4834 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,2,3,2]
4835 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm1, %ymm5, %ymm1
4836 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm5 = ymm6[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
4837 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm5[2,3,2,2,6,7,6,6]
4838 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm3[2,3,2,3,6,7,6,7]
4839 ; AVX2-SLOW-NEXT:    vmovdqa %ymm3, %ymm6
4840 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0],ymm9[1],ymm5[2],ymm9[3],ymm5[4,5],ymm9[6],ymm5[7,8],ymm9[9],ymm5[10],ymm9[11],ymm5[12,13],ymm9[14],ymm5[15]
4841 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
4842 ; AVX2-SLOW-NEXT:    vpshufhw {{.*#+}} ymm9 = ymm3[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
4843 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm9[2,3,2,3,6,7,6,7]
4844 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
4845 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm14 = ymm2[3,2,3,3,7,6,7,7]
4846 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm9 = ymm9[0],ymm14[1],ymm9[2],ymm14[3,4],ymm9[5,6,7,8],ymm14[9],ymm9[10],ymm14[11,12],ymm9[13,14,15]
4847 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,3,2,2]
4848 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]
4849 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm5, %ymm9, %ymm5
4850 ; AVX2-SLOW-NEXT:    vpbroadcastq 24(%r8), %ymm9
4851 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = [0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0]
4852 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9, %ymm13 # 32-byte Folded Reload
4853 ; AVX2-SLOW-NEXT:    vpbroadcastq 56(%r8), %ymm9
4854 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm0, %ymm9, %ymm0
4855 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4856 ; AVX2-SLOW-NEXT:    vpbroadcastq 88(%r8), %ymm0
4857 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm1, %ymm0, %ymm0
4858 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4859 ; AVX2-SLOW-NEXT:    vpbroadcastq 120(%r8), %ymm0
4860 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm5, %ymm0, %ymm0
4861 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4862 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
4863 ; AVX2-SLOW-NEXT:    vpshufb %ymm0, %ymm10, %ymm1
4864 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm7[3,0,3,0,7,4,7,4]
4865 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm5[0],ymm1[1],ymm5[2],ymm1[3],ymm5[4,5],ymm1[6],ymm5[7,8],ymm1[9],ymm5[10],ymm1[11],ymm5[12,13],ymm1[14],ymm5[15]
4866 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
4867 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
4868 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm7, %ymm9
4869 ; AVX2-SLOW-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload
4870 ; AVX2-SLOW-NEXT:    # ymm14 = mem[1,1,2,2]
4871 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm9 = ymm14[0],ymm9[1],ymm14[2,3],ymm9[4],ymm14[5],ymm9[6],ymm14[7,8],ymm9[9],ymm14[10,11],ymm9[12],ymm14[13],ymm9[14],ymm14[15]
4872 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = <255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255>
4873 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm1, %ymm9, %ymm1
4874 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
4875 ; AVX2-SLOW-NEXT:    vpshufb %ymm0, %ymm7, %ymm9
4876 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm15 = ymm12[3,0,3,0,7,4,7,4]
4877 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm9 = ymm15[0],ymm9[1],ymm15[2],ymm9[3],ymm15[4,5],ymm9[6],ymm15[7,8],ymm9[9],ymm15[10],ymm9[11],ymm15[12,13],ymm9[14],ymm15[15]
4878 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
4879 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm7, %ymm12
4880 ; AVX2-SLOW-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Folded Reload
4881 ; AVX2-SLOW-NEXT:    # ymm11 = mem[1,1,2,2]
4882 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm11 = ymm11[0],ymm12[1],ymm11[2,3],ymm12[4],ymm11[5],ymm12[6],ymm11[7,8],ymm12[9],ymm11[10,11],ymm12[12],ymm11[13],ymm12[14],ymm11[15]
4883 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm9, %ymm11, %ymm9
4884 ; AVX2-SLOW-NEXT:    vpshufb %ymm0, %ymm8, %ymm10
4885 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm11 = ymm4[3,0,3,0,7,4,7,4]
4886 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1],ymm11[2],ymm10[3],ymm11[4,5],ymm10[6],ymm11[7,8],ymm10[9],ymm11[10],ymm10[11],ymm11[12,13],ymm10[14],ymm11[15]
4887 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
4888 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm4, %ymm8
4889 ; AVX2-SLOW-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Folded Reload
4890 ; AVX2-SLOW-NEXT:    # ymm7 = mem[1,1,2,2]
4891 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm7[0],ymm8[1],ymm7[2,3],ymm8[4],ymm7[5],ymm8[6],ymm7[7,8],ymm8[9],ymm7[10,11],ymm8[12],ymm7[13],ymm8[14],ymm7[15]
4892 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm10, %ymm7, %ymm7
4893 ; AVX2-SLOW-NEXT:    vpshufb %ymm0, %ymm3, %ymm0
4894 ; AVX2-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm2[3,0,3,0,7,4,7,4]
4895 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm4[0],ymm0[1],ymm4[2],ymm0[3],ymm4[4,5],ymm0[6],ymm4[7,8],ymm0[9],ymm4[10],ymm0[11],ymm4[12,13],ymm0[14],ymm4[15]
4896 ; AVX2-SLOW-NEXT:    vmovdqu (%rsp), %ymm2 # 32-byte Reload
4897 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm2, %ymm3
4898 ; AVX2-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm6[1,1,2,2]
4899 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]
4900 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm0, %ymm2, %ymm0
4901 ; AVX2-SLOW-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload
4902 ; AVX2-SLOW-NEXT:    # ymm2 = mem[1,1,2,2]
4903 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm3 = [255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255]
4904 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm1, %ymm2, %ymm1
4905 ; AVX2-SLOW-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload
4906 ; AVX2-SLOW-NEXT:    # ymm2 = mem[1,1,2,2]
4907 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm9, %ymm2, %ymm2
4908 ; AVX2-SLOW-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
4909 ; AVX2-SLOW-NEXT:    # ymm4 = mem[1,1,2,2]
4910 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm7, %ymm4, %ymm4
4911 ; AVX2-SLOW-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Folded Reload
4912 ; AVX2-SLOW-NEXT:    # ymm5 = mem[1,1,2,2]
4913 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm0, %ymm5, %ymm0
4914 ; AVX2-SLOW-NEXT:    vmovdqa %ymm0, 544(%r9)
4915 ; AVX2-SLOW-NEXT:    vmovdqa %ymm4, 384(%r9)
4916 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, 224(%r9)
4917 ; AVX2-SLOW-NEXT:    vmovdqa %ymm1, 64(%r9)
4918 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4919 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 608(%r9)
4920 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4921 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 576(%r9)
4922 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4923 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 512(%r9)
4924 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4925 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 448(%r9)
4926 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4927 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 416(%r9)
4928 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4929 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 352(%r9)
4930 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4931 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 288(%r9)
4932 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4933 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 256(%r9)
4934 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4935 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 192(%r9)
4936 ; AVX2-SLOW-NEXT:    vmovdqa %ymm13, 128(%r9)
4937 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4938 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 96(%r9)
4939 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4940 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 32(%r9)
4941 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4942 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 480(%r9)
4943 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4944 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 320(%r9)
4945 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4946 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, 160(%r9)
4947 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4948 ; AVX2-SLOW-NEXT:    vmovaps %ymm0, (%r9)
4949 ; AVX2-SLOW-NEXT:    addq $968, %rsp # imm = 0x3C8
4950 ; AVX2-SLOW-NEXT:    vzeroupper
4951 ; AVX2-SLOW-NEXT:    retq
4953 ; AVX2-FAST-LABEL: store_i16_stride5_vf64:
4954 ; AVX2-FAST:       # %bb.0:
4955 ; AVX2-FAST-NEXT:    subq $936, %rsp # imm = 0x3A8
4956 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %xmm5
4957 ; AVX2-FAST-NEXT:    vmovdqa 32(%rsi), %xmm2
4958 ; AVX2-FAST-NEXT:    vmovdqa 64(%rsi), %xmm3
4959 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %xmm0
4960 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdi), %xmm14
4961 ; AVX2-FAST-NEXT:    vmovdqa 64(%rdi), %xmm13
4962 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3]
4963 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm9 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
4964 ; AVX2-FAST-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
4965 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
4966 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %xmm7
4967 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdx), %xmm10
4968 ; AVX2-FAST-NEXT:    vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4969 ; AVX2-FAST-NEXT:    vmovdqa 64(%rdx), %xmm6
4970 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %xmm8
4971 ; AVX2-FAST-NEXT:    vmovdqa 32(%rcx), %xmm4
4972 ; AVX2-FAST-NEXT:    vmovdqa 64(%rcx), %xmm1
4973 ; AVX2-FAST-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4974 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm12 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]
4975 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm11 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
4976 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm12, %xmm12
4977 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm15 = ymm12[0,1,0,1]
4978 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm12 = <255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255>
4979 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm0, %ymm15, %ymm0
4980 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4981 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm14[0],xmm2[0],xmm14[1],xmm2[1],xmm14[2],xmm2[2],xmm14[3],xmm2[3]
4982 ; AVX2-FAST-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
4983 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
4984 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm14 = xmm4[0],xmm10[0],xmm4[1],xmm10[1],xmm4[2],xmm10[2],xmm4[3],xmm10[3]
4985 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm14, %xmm14
4986 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm14 = ymm14[0,1,0,1]
4987 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm0, %ymm14, %ymm14
4988 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm13[0],xmm3[0],xmm13[1],xmm3[1],xmm13[2],xmm3[2],xmm13[3],xmm3[3]
4989 ; AVX2-FAST-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
4990 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
4991 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm13 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3]
4992 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm13, %xmm13
4993 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[0,1,0,1]
4994 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm0, %ymm13, %ymm1
4995 ; AVX2-FAST-NEXT:    vmovdqa 96(%rsi), %xmm13
4996 ; AVX2-FAST-NEXT:    vmovdqa 96(%rdi), %xmm15
4997 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm15 = xmm15[0],xmm13[0],xmm15[1],xmm13[1],xmm15[2],xmm13[2],xmm15[3],xmm13[3]
4998 ; AVX2-FAST-NEXT:    vpshufb %xmm9, %xmm15, %xmm0
4999 ; AVX2-FAST-NEXT:    vmovdqa 96(%rdx), %xmm9
5000 ; AVX2-FAST-NEXT:    vmovdqa 96(%rcx), %xmm15
5001 ; AVX2-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm10 = xmm15[0],xmm9[0],xmm15[1],xmm9[1],xmm15[2],xmm9[2],xmm15[3],xmm9[3]
5002 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm10, %xmm10
5003 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
5004 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,1,0,1]
5005 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm0, %ymm10, %ymm0
5006 ; AVX2-FAST-NEXT:    vpbroadcastq (%r8), %ymm10
5007 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
5008 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm10 # 32-byte Folded Reload
5009 ; AVX2-FAST-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5010 ; AVX2-FAST-NEXT:    vpbroadcastq 32(%r8), %ymm10
5011 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm14, %ymm10, %ymm10
5012 ; AVX2-FAST-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5013 ; AVX2-FAST-NEXT:    vpbroadcastq 64(%r8), %ymm10
5014 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm1, %ymm10, %ymm1
5015 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5016 ; AVX2-FAST-NEXT:    vpbroadcastq 96(%r8), %ymm1
5017 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm0
5018 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5019 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm11 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
5020 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm5, %xmm0
5021 ; AVX2-FAST-NEXT:    vpbroadcastq 8(%rdi), %xmm1
5022 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5],xmm1[6],xmm0[7]
5023 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm0 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
5024 ; AVX2-FAST-NEXT:    vpshufb %xmm0, %xmm8, %xmm5
5025 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]
5026 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0],xmm7[1],xmm5[2],xmm7[3],xmm5[4,5],xmm7[6],xmm5[7]
5027 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]
5028 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,0]
5029 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
5030 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm1, %ymm5, %ymm5
5031 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm2, %xmm1
5032 ; AVX2-FAST-NEXT:    vpbroadcastq 40(%rdi), %xmm2
5033 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2,3],xmm2[4],xmm1[5],xmm2[6],xmm1[7]
5034 ; AVX2-FAST-NEXT:    vpshufb %xmm0, %xmm4, %xmm2
5035 ; AVX2-FAST-NEXT:    vpshufd $169, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
5036 ; AVX2-FAST-NEXT:    # xmm4 = mem[1,2,2,2]
5037 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2],xmm4[3],xmm2[4,5],xmm4[6],xmm2[7]
5038 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]
5039 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]
5040 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm1, %ymm2, %ymm1
5041 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm3, %xmm2
5042 ; AVX2-FAST-NEXT:    vpbroadcastq 72(%rdi), %xmm4
5043 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2,3],xmm4[4],xmm2[5],xmm4[6],xmm2[7]
5044 ; AVX2-FAST-NEXT:    vmovdqa (%rdx), %ymm12
5045 ; AVX2-FAST-NEXT:    vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5046 ; AVX2-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5047 ; AVX2-FAST-NEXT:    vpshufb %xmm0, %xmm3, %xmm3
5048 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} xmm4 = xmm6[1,2,2,2]
5049 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2],xmm4[3],xmm3[4,5],xmm4[6],xmm3[7]
5050 ; AVX2-FAST-NEXT:    vmovdqa (%rcx), %ymm14
5051 ; AVX2-FAST-NEXT:    vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5052 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]
5053 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,1,0,0]
5054 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm2, %ymm3, %ymm2
5055 ; AVX2-FAST-NEXT:    vmovdqa (%r8), %ymm6
5056 ; AVX2-FAST-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5057 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm13, %xmm3
5058 ; AVX2-FAST-NEXT:    vpbroadcastq 104(%rdi), %xmm4
5059 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2,3],xmm4[4],xmm3[5],xmm4[6],xmm3[7]
5060 ; AVX2-FAST-NEXT:    vmovdqa 32(%r8), %ymm8
5061 ; AVX2-FAST-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5062 ; AVX2-FAST-NEXT:    vpshufb %xmm0, %xmm15, %xmm0
5063 ; AVX2-FAST-NEXT:    vmovdqa 64(%r8), %ymm10
5064 ; AVX2-FAST-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5065 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} xmm4 = xmm9[1,2,2,2]
5066 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm4[1],xmm0[2],xmm4[3],xmm0[4,5],xmm4[6],xmm0[7]
5067 ; AVX2-FAST-NEXT:    vmovdqa 96(%r8), %ymm9
5068 ; AVX2-FAST-NEXT:    vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5069 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,1,0,1]
5070 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,0]
5071 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm3, %ymm0, %ymm0
5072 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm6[0,1,1,1]
5073 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
5074 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm5, %ymm3, %ymm3
5075 ; AVX2-FAST-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5076 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm8[0,1,1,1]
5077 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm1, %ymm3, %ymm1
5078 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5079 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm10[0,1,1,1]
5080 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm2, %ymm1, %ymm1
5081 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5082 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm9[0,1,1,1]
5083 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm0
5084 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5085 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
5086 ; AVX2-FAST-NEXT:    # ymm1 = mem[0,1,0,1]
5087 ; AVX2-FAST-NEXT:    vpshufb %ymm1, %ymm14, %ymm0
5088 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm2 = ymm12[1,1,1,2,5,5,5,6]
5089 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]
5090 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %ymm5
5091 ; AVX2-FAST-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5092 ; AVX2-FAST-NEXT:    vmovdqa (%rsi), %ymm11
5093 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0,22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0]
5094 ; AVX2-FAST-NEXT:    # ymm0 = mem[0,1,0,1]
5095 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm11, %ymm3
5096 ; AVX2-FAST-NEXT:    vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5097 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm4 = ymm5[0,1,2,1,4,5,6,5]
5098 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]
5099 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
5100 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]
5101 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm14 = <255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255>
5102 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm2, %ymm3, %ymm8
5103 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdx), %ymm4
5104 ; AVX2-FAST-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5105 ; AVX2-FAST-NEXT:    vmovdqa 32(%rcx), %ymm2
5106 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5107 ; AVX2-FAST-NEXT:    vpshufb %ymm1, %ymm2, %ymm2
5108 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm3 = ymm4[1,1,1,2,5,5,5,6]
5109 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]
5110 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdi), %ymm5
5111 ; AVX2-FAST-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5112 ; AVX2-FAST-NEXT:    vmovdqa 32(%rsi), %ymm6
5113 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm6, %ymm3
5114 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm4 = ymm5[0,1,2,1,4,5,6,5]
5115 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]
5116 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
5117 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]
5118 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm2, %ymm3, %ymm10
5119 ; AVX2-FAST-NEXT:    vmovdqa 64(%rdx), %ymm4
5120 ; AVX2-FAST-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5121 ; AVX2-FAST-NEXT:    vmovdqa 64(%rcx), %ymm2
5122 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5123 ; AVX2-FAST-NEXT:    vpshufb %ymm1, %ymm2, %ymm2
5124 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm3 = ymm4[1,1,1,2,5,5,5,6]
5125 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]
5126 ; AVX2-FAST-NEXT:    vmovdqa 64(%rdi), %ymm4
5127 ; AVX2-FAST-NEXT:    vmovdqu %ymm4, (%rsp) # 32-byte Spill
5128 ; AVX2-FAST-NEXT:    vmovdqa 64(%rsi), %ymm5
5129 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm5, %ymm3
5130 ; AVX2-FAST-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5131 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm12 = ymm4[0,1,2,1,4,5,6,5]
5132 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm12[2],ymm3[3],ymm12[4],ymm3[5,6],ymm12[7],ymm3[8,9],ymm12[10],ymm3[11],ymm12[12],ymm3[13,14],ymm12[15]
5133 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
5134 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]
5135 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm2, %ymm3, %ymm12
5136 ; AVX2-FAST-NEXT:    vmovdqa 96(%rcx), %ymm2
5137 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5138 ; AVX2-FAST-NEXT:    vpshufb %ymm1, %ymm2, %ymm1
5139 ; AVX2-FAST-NEXT:    vmovdqa 96(%rdx), %ymm7
5140 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm13 = ymm7[1,1,1,2,5,5,5,6]
5141 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm13 = ymm1[0],ymm13[1],ymm1[2,3],ymm13[4],ymm1[5],ymm13[6],ymm1[7,8],ymm13[9],ymm1[10,11],ymm13[12],ymm1[13],ymm13[14],ymm1[15]
5142 ; AVX2-FAST-NEXT:    vmovdqa 96(%rsi), %ymm3
5143 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm3, %ymm0
5144 ; AVX2-FAST-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5145 ; AVX2-FAST-NEXT:    vmovdqa 96(%rdi), %ymm2
5146 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm15 = ymm2[0,1,2,1,4,5,6,5]
5147 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5148 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm15[2],ymm0[3],ymm15[4],ymm0[5,6],ymm15[7],ymm0[8,9],ymm15[10],ymm0[11],ymm15[12],ymm0[13,14],ymm15[15]
5149 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,3,2,3]
5150 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]
5151 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm13, %ymm0, %ymm0
5152 ; AVX2-FAST-NEXT:    vpbroadcastq 16(%r8), %ymm13
5153 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm14 = [255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255]
5154 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm8, %ymm13, %ymm1
5155 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5156 ; AVX2-FAST-NEXT:    vpbroadcastq 48(%r8), %ymm13
5157 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm10, %ymm13, %ymm1
5158 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5159 ; AVX2-FAST-NEXT:    vpbroadcastq 80(%r8), %ymm10
5160 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm12, %ymm10, %ymm1
5161 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5162 ; AVX2-FAST-NEXT:    vpbroadcastq 112(%r8), %ymm10
5163 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm0, %ymm10, %ymm0
5164 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5165 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]
5166 ; AVX2-FAST-NEXT:    # ymm0 = mem[0,1,0,1]
5167 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm11, %ymm10
5168 ; AVX2-FAST-NEXT:    vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload
5169 ; AVX2-FAST-NEXT:    # ymm12 = mem[2,3,2,3,6,7,6,7]
5170 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm10 = ymm10[0],ymm12[1],ymm10[2],ymm12[3],ymm10[4,5],ymm12[6],ymm10[7,8],ymm12[9],ymm10[10],ymm12[11],ymm10[12,13],ymm12[14],ymm10[15]
5171 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} ymm12 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]
5172 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5173 ; AVX2-FAST-NEXT:    vpshufb %ymm12, %ymm1, %ymm13
5174 ; AVX2-FAST-NEXT:    vpshufd $251, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload
5175 ; AVX2-FAST-NEXT:    # ymm14 = mem[3,2,3,3,7,6,7,7]
5176 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0],ymm14[1],ymm13[2],ymm14[3,4],ymm13[5,6,7,8],ymm14[9],ymm13[10],ymm14[11,12],ymm13[13,14,15]
5177 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,3,2,2]
5178 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,2,3,2]
5179 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm14 = <u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u>
5180 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm10, %ymm13, %ymm10
5181 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm6, %ymm13
5182 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
5183 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm15 = ymm8[2,3,2,3,6,7,6,7]
5184 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2],ymm15[3],ymm13[4,5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10],ymm15[11],ymm13[12,13],ymm15[14],ymm13[15]
5185 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
5186 ; AVX2-FAST-NEXT:    vpshufb %ymm12, %ymm4, %ymm15
5187 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5188 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm11 = ymm1[3,2,3,3,7,6,7,7]
5189 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm11 = ymm15[0],ymm11[1],ymm15[2],ymm11[3,4],ymm15[5,6,7,8],ymm11[9],ymm15[10],ymm11[11,12],ymm15[13,14,15]
5190 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,3,2,2]
5191 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[2,2,3,2]
5192 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm13, %ymm11, %ymm11
5193 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm5, %ymm13
5194 ; AVX2-FAST-NEXT:    vpshufd $238, (%rsp), %ymm15 # 32-byte Folded Reload
5195 ; AVX2-FAST-NEXT:    # ymm15 = mem[2,3,2,3,6,7,6,7]
5196 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2],ymm15[3],ymm13[4,5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10],ymm15[11],ymm13[12,13],ymm15[14],ymm13[15]
5197 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
5198 ; AVX2-FAST-NEXT:    vpshufb %ymm12, %ymm5, %ymm15
5199 ; AVX2-FAST-NEXT:    vpshufd $251, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Folded Reload
5200 ; AVX2-FAST-NEXT:    # ymm9 = mem[3,2,3,3,7,6,7,7]
5201 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm9 = ymm15[0],ymm9[1],ymm15[2],ymm9[3,4],ymm15[5,6,7,8],ymm9[9],ymm15[10],ymm9[11,12],ymm15[13,14,15]
5202 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,3,2,2]
5203 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]
5204 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm13, %ymm9, %ymm9
5205 ; AVX2-FAST-NEXT:    vpshufb %ymm0, %ymm3, %ymm0
5206 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm13 = ymm2[2,3,2,3,6,7,6,7]
5207 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm13[1],ymm0[2],ymm13[3],ymm0[4,5],ymm13[6],ymm0[7,8],ymm13[9],ymm0[10],ymm13[11],ymm0[12,13],ymm13[14],ymm0[15]
5208 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
5209 ; AVX2-FAST-NEXT:    vpshufb %ymm12, %ymm2, %ymm12
5210 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm13 = ymm7[3,2,3,3,7,6,7,7]
5211 ; AVX2-FAST-NEXT:    vmovdqa %ymm7, %ymm3
5212 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm12 = ymm12[0],ymm13[1],ymm12[2],ymm13[3,4],ymm12[5,6,7,8],ymm13[9],ymm12[10],ymm13[11,12],ymm12[13,14,15]
5213 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
5214 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[2,2,3,2]
5215 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm0, %ymm12, %ymm0
5216 ; AVX2-FAST-NEXT:    vpbroadcastq 24(%r8), %ymm12
5217 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm14 = [0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0]
5218 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm10, %ymm12, %ymm2
5219 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5220 ; AVX2-FAST-NEXT:    vpbroadcastq 56(%r8), %ymm10
5221 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm11, %ymm10, %ymm2
5222 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5223 ; AVX2-FAST-NEXT:    vpbroadcastq 88(%r8), %ymm10
5224 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm9, %ymm10, %ymm2
5225 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5226 ; AVX2-FAST-NEXT:    vpbroadcastq 120(%r8), %ymm9
5227 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm0, %ymm9, %ymm0
5228 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
5229 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
5230 ; AVX2-FAST-NEXT:    vpshufb %ymm9, %ymm7, %ymm11
5231 ; AVX2-FAST-NEXT:    vpshufd $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload
5232 ; AVX2-FAST-NEXT:    # ymm14 = mem[3,0,3,0,7,4,7,4]
5233 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm11 = ymm14[0],ymm11[1],ymm14[2],ymm11[3],ymm14[4,5],ymm11[6],ymm14[7,8],ymm11[9],ymm14[10],ymm11[11],ymm14[12,13],ymm11[14],ymm14[15]
5234 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm14 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
5235 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
5236 ; AVX2-FAST-NEXT:    vpshufb %ymm14, %ymm2, %ymm15
5237 ; AVX2-FAST-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Folded Reload
5238 ; AVX2-FAST-NEXT:    # ymm13 = mem[1,1,2,2]
5239 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2,3],ymm15[4],ymm13[5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10,11],ymm15[12],ymm13[13],ymm15[14],ymm13[15]
5240 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm15 = <255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255>
5241 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm11, %ymm13, %ymm11
5242 ; AVX2-FAST-NEXT:    vpshufb %ymm9, %ymm4, %ymm13
5243 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm12 = ymm1[3,0,3,0,7,4,7,4]
5244 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm12 = ymm12[0],ymm13[1],ymm12[2],ymm13[3],ymm12[4,5],ymm13[6],ymm12[7,8],ymm13[9],ymm12[10],ymm13[11],ymm12[12,13],ymm13[14],ymm12[15]
5245 ; AVX2-FAST-NEXT:    vpshufb %ymm14, %ymm6, %ymm13
5246 ; AVX2-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm8[1,1,2,2]
5247 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm10 = ymm10[0],ymm13[1],ymm10[2,3],ymm13[4],ymm10[5],ymm13[6],ymm10[7,8],ymm13[9],ymm10[10,11],ymm13[12],ymm10[13],ymm13[14],ymm10[15]
5248 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm12, %ymm10, %ymm10
5249 ; AVX2-FAST-NEXT:    vpshufb %ymm9, %ymm5, %ymm7
5250 ; AVX2-FAST-NEXT:    vpshufd $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload
5251 ; AVX2-FAST-NEXT:    # ymm8 = mem[3,0,3,0,7,4,7,4]
5252 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2],ymm7[3],ymm8[4,5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10],ymm7[11],ymm8[12,13],ymm7[14],ymm8[15]
5253 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5254 ; AVX2-FAST-NEXT:    vpshufb %ymm14, %ymm1, %ymm5
5255 ; AVX2-FAST-NEXT:    vpermq $165, (%rsp), %ymm6 # 32-byte Folded Reload
5256 ; AVX2-FAST-NEXT:    # ymm6 = mem[1,1,2,2]
5257 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2,3],ymm5[4],ymm6[5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10,11],ymm5[12],ymm6[13],ymm5[14],ymm6[15]
5258 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm7, %ymm5, %ymm5
5259 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5260 ; AVX2-FAST-NEXT:    vpshufb %ymm9, %ymm1, %ymm4
5261 ; AVX2-FAST-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]
5262 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]
5263 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5264 ; AVX2-FAST-NEXT:    vpshufb %ymm14, %ymm1, %ymm2
5265 ; AVX2-FAST-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload
5266 ; AVX2-FAST-NEXT:    # ymm1 = mem[1,1,2,2]
5267 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]
5268 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm3, %ymm1, %ymm1
5269 ; AVX2-FAST-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload
5270 ; AVX2-FAST-NEXT:    # ymm2 = mem[1,1,2,2]
5271 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm3 = [255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255]
5272 ; AVX2-FAST-NEXT:    vpblendvb %ymm3, %ymm11, %ymm2, %ymm2
5273 ; AVX2-FAST-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
5274 ; AVX2-FAST-NEXT:    # ymm4 = mem[1,1,2,2]
5275 ; AVX2-FAST-NEXT:    vpblendvb %ymm3, %ymm10, %ymm4, %ymm4
5276 ; AVX2-FAST-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload
5277 ; AVX2-FAST-NEXT:    # ymm6 = mem[1,1,2,2]
5278 ; AVX2-FAST-NEXT:    vpblendvb %ymm3, %ymm5, %ymm6, %ymm5
5279 ; AVX2-FAST-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload
5280 ; AVX2-FAST-NEXT:    # ymm6 = mem[1,1,2,2]
5281 ; AVX2-FAST-NEXT:    vpblendvb %ymm3, %ymm1, %ymm6, %ymm1
5282 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, 544(%r9)
5283 ; AVX2-FAST-NEXT:    vmovdqa %ymm5, 384(%r9)
5284 ; AVX2-FAST-NEXT:    vmovdqa %ymm4, 224(%r9)
5285 ; AVX2-FAST-NEXT:    vmovdqa %ymm2, 64(%r9)
5286 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, 608(%r9)
5287 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5288 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 576(%r9)
5289 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5290 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 448(%r9)
5291 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5292 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 416(%r9)
5293 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5294 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 288(%r9)
5295 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5296 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 256(%r9)
5297 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5298 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 128(%r9)
5299 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5300 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 96(%r9)
5301 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5302 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 512(%r9)
5303 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5304 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 480(%r9)
5305 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5306 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 352(%r9)
5307 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5308 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 320(%r9)
5309 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5310 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 192(%r9)
5311 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5312 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 160(%r9)
5313 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5314 ; AVX2-FAST-NEXT:    vmovaps %ymm0, 32(%r9)
5315 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5316 ; AVX2-FAST-NEXT:    vmovaps %ymm0, (%r9)
5317 ; AVX2-FAST-NEXT:    addq $936, %rsp # imm = 0x3A8
5318 ; AVX2-FAST-NEXT:    vzeroupper
5319 ; AVX2-FAST-NEXT:    retq
5321 ; AVX2-FAST-PERLANE-LABEL: store_i16_stride5_vf64:
5322 ; AVX2-FAST-PERLANE:       # %bb.0:
5323 ; AVX2-FAST-PERLANE-NEXT:    subq $936, %rsp # imm = 0x3A8
5324 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %xmm5
5325 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rsi), %xmm2
5326 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rsi), %xmm3
5327 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %xmm0
5328 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdi), %xmm14
5329 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rdi), %xmm13
5330 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3]
5331 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm9 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
5332 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
5333 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
5334 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %xmm7
5335 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdx), %xmm10
5336 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5337 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rdx), %xmm6
5338 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %xmm8
5339 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rcx), %xmm4
5340 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rcx), %xmm1
5341 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5342 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm12 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]
5343 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm11 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
5344 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm11, %xmm12, %xmm12
5345 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm15 = ymm12[0,1,0,1]
5346 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm12 = <255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255>
5347 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm0, %ymm15, %ymm0
5348 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5349 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm14[0],xmm2[0],xmm14[1],xmm2[1],xmm14[2],xmm2[2],xmm14[3],xmm2[3]
5350 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
5351 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
5352 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm14 = xmm4[0],xmm10[0],xmm4[1],xmm10[1],xmm4[2],xmm10[2],xmm4[3],xmm10[3]
5353 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm11, %xmm14, %xmm14
5354 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm14 = ymm14[0,1,0,1]
5355 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm0, %ymm14, %ymm14
5356 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm13[0],xmm3[0],xmm13[1],xmm3[1],xmm13[2],xmm3[2],xmm13[3],xmm3[3]
5357 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm9, %xmm0, %xmm0
5358 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
5359 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm13 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3]
5360 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm11, %xmm13, %xmm13
5361 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[0,1,0,1]
5362 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm0, %ymm13, %ymm1
5363 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rsi), %xmm13
5364 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rdi), %xmm15
5365 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm15 = xmm15[0],xmm13[0],xmm15[1],xmm13[1],xmm15[2],xmm13[2],xmm15[3],xmm13[3]
5366 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm9, %xmm15, %xmm0
5367 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rdx), %xmm9
5368 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rcx), %xmm15
5369 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm10 = xmm15[0],xmm9[0],xmm15[1],xmm9[1],xmm15[2],xmm9[2],xmm15[3],xmm9[3]
5370 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm11, %xmm10, %xmm10
5371 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
5372 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[0,1,0,1]
5373 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm0, %ymm10, %ymm0
5374 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq (%r8), %ymm10
5375 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm11 = [255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255]
5376 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm10 # 32-byte Folded Reload
5377 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5378 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 32(%r8), %ymm10
5379 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm14, %ymm10, %ymm10
5380 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5381 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 64(%r8), %ymm10
5382 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm1, %ymm10, %ymm1
5383 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5384 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 96(%r8), %ymm1
5385 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm0
5386 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5387 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm11 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
5388 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm11, %xmm5, %xmm0
5389 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 8(%rdi), %xmm1
5390 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5],xmm1[6],xmm0[7]
5391 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm0 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
5392 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm0, %xmm8, %xmm5
5393 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]
5394 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0],xmm7[1],xmm5[2],xmm7[3],xmm5[4,5],xmm7[6],xmm5[7]
5395 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]
5396 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,0]
5397 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255>
5398 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm1, %ymm5, %ymm5
5399 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm11, %xmm2, %xmm1
5400 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 40(%rdi), %xmm2
5401 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2,3],xmm2[4],xmm1[5],xmm2[6],xmm1[7]
5402 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm0, %xmm4, %xmm2
5403 ; AVX2-FAST-PERLANE-NEXT:    vpshufd $169, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
5404 ; AVX2-FAST-PERLANE-NEXT:    # xmm4 = mem[1,2,2,2]
5405 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2],xmm4[3],xmm2[4,5],xmm4[6],xmm2[7]
5406 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]
5407 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]
5408 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm1, %ymm2, %ymm1
5409 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm11, %xmm3, %xmm2
5410 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 72(%rdi), %xmm4
5411 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2,3],xmm4[4],xmm2[5],xmm4[6],xmm2[7]
5412 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdx), %ymm12
5413 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5414 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5415 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm0, %xmm3, %xmm3
5416 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm4 = xmm6[1,2,2,2]
5417 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2],xmm4[3],xmm3[4,5],xmm4[6],xmm3[7]
5418 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rcx), %ymm14
5419 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5420 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,1,0,1]
5421 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,1,0,0]
5422 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm2, %ymm3, %ymm2
5423 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%r8), %ymm6
5424 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5425 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm11, %xmm13, %xmm3
5426 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 104(%rdi), %xmm4
5427 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1],xmm3[2,3],xmm4[4],xmm3[5],xmm4[6],xmm3[7]
5428 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%r8), %ymm8
5429 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5430 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm0, %xmm15, %xmm0
5431 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%r8), %ymm10
5432 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5433 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} xmm4 = xmm9[1,2,2,2]
5434 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm4[1],xmm0[2],xmm4[3],xmm0[4,5],xmm4[6],xmm0[7]
5435 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%r8), %ymm9
5436 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5437 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,1,0,1]
5438 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[0,1,0,0]
5439 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm3, %ymm0, %ymm0
5440 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm6[0,1,1,1]
5441 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255]
5442 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm5, %ymm3, %ymm3
5443 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5444 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm8[0,1,1,1]
5445 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm1, %ymm3, %ymm1
5446 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5447 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm10[0,1,1,1]
5448 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm2, %ymm1, %ymm1
5449 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5450 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm1 = ymm9[0,1,1,1]
5451 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm0
5452 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5453 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
5454 ; AVX2-FAST-PERLANE-NEXT:    # ymm1 = mem[0,1,0,1]
5455 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm1, %ymm14, %ymm0
5456 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm2 = ymm12[1,1,1,2,5,5,5,6]
5457 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm0[0],ymm2[1],ymm0[2,3],ymm2[4],ymm0[5],ymm2[6],ymm0[7,8],ymm2[9],ymm0[10,11],ymm2[12],ymm0[13],ymm2[14],ymm0[15]
5458 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %ymm5
5459 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5460 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsi), %ymm11
5461 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0,22,23,18,19,0,0,20,21,0,0,24,25,24,25,0,0]
5462 ; AVX2-FAST-PERLANE-NEXT:    # ymm0 = mem[0,1,0,1]
5463 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm11, %ymm3
5464 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm11, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5465 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm4 = ymm5[0,1,2,1,4,5,6,5]
5466 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]
5467 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
5468 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]
5469 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm14 = <255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255>
5470 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm2, %ymm3, %ymm8
5471 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdx), %ymm4
5472 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5473 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rcx), %ymm2
5474 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5475 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm1, %ymm2, %ymm2
5476 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm3 = ymm4[1,1,1,2,5,5,5,6]
5477 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]
5478 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdi), %ymm5
5479 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5480 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rsi), %ymm6
5481 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm6, %ymm3
5482 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm4 = ymm5[0,1,2,1,4,5,6,5]
5483 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm4[2],ymm3[3],ymm4[4],ymm3[5,6],ymm4[7],ymm3[8,9],ymm4[10],ymm3[11],ymm4[12],ymm3[13,14],ymm4[15]
5484 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
5485 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]
5486 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm2, %ymm3, %ymm10
5487 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rdx), %ymm4
5488 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5489 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rcx), %ymm2
5490 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5491 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm1, %ymm2, %ymm2
5492 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm3 = ymm4[1,1,1,2,5,5,5,6]
5493 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]
5494 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rdi), %ymm4
5495 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm4, (%rsp) # 32-byte Spill
5496 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rsi), %ymm5
5497 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm5, %ymm3
5498 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5499 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm12 = ymm4[0,1,2,1,4,5,6,5]
5500 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm12[2],ymm3[3],ymm12[4],ymm3[5,6],ymm12[7],ymm3[8,9],ymm12[10],ymm3[11],ymm12[12],ymm3[13,14],ymm12[15]
5501 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
5502 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,3,2,3]
5503 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm2, %ymm3, %ymm12
5504 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rcx), %ymm2
5505 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5506 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm1, %ymm2, %ymm1
5507 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rdx), %ymm7
5508 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm13 = ymm7[1,1,1,2,5,5,5,6]
5509 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm13 = ymm1[0],ymm13[1],ymm1[2,3],ymm13[4],ymm1[5],ymm13[6],ymm1[7,8],ymm13[9],ymm1[10,11],ymm13[12],ymm1[13],ymm13[14],ymm1[15]
5510 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rsi), %ymm3
5511 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm3, %ymm0
5512 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5513 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rdi), %ymm2
5514 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm15 = ymm2[0,1,2,1,4,5,6,5]
5515 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5516 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1],ymm15[2],ymm0[3],ymm15[4],ymm0[5,6],ymm15[7],ymm0[8,9],ymm15[10],ymm0[11],ymm15[12],ymm0[13,14],ymm15[15]
5517 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,3,2,3]
5518 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3]
5519 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm13, %ymm0, %ymm0
5520 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 16(%r8), %ymm13
5521 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm14 = [255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255]
5522 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm8, %ymm13, %ymm1
5523 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5524 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 48(%r8), %ymm13
5525 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm10, %ymm13, %ymm1
5526 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5527 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 80(%r8), %ymm10
5528 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm12, %ymm10, %ymm1
5529 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5530 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 112(%r8), %ymm10
5531 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm0, %ymm10, %ymm0
5532 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5533 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]
5534 ; AVX2-FAST-PERLANE-NEXT:    # ymm0 = mem[0,1,0,1]
5535 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm11, %ymm10
5536 ; AVX2-FAST-PERLANE-NEXT:    vpshufd $238, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Folded Reload
5537 ; AVX2-FAST-PERLANE-NEXT:    # ymm12 = mem[2,3,2,3,6,7,6,7]
5538 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm10 = ymm10[0],ymm12[1],ymm10[2],ymm12[3],ymm10[4,5],ymm12[6],ymm10[7,8],ymm12[9],ymm10[10],ymm12[11],ymm10[12,13],ymm12[14],ymm10[15]
5539 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} ymm12 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]
5540 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5541 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm12, %ymm1, %ymm13
5542 ; AVX2-FAST-PERLANE-NEXT:    vpshufd $251, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload
5543 ; AVX2-FAST-PERLANE-NEXT:    # ymm14 = mem[3,2,3,3,7,6,7,7]
5544 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0],ymm14[1],ymm13[2],ymm14[3,4],ymm13[5,6,7,8],ymm14[9],ymm13[10],ymm14[11,12],ymm13[13,14,15]
5545 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm10 = ymm10[2,3,2,2]
5546 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,2,3,2]
5547 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm14 = <u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u,255,255,255,255,0,0,0,0,u,u>
5548 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm10, %ymm13, %ymm10
5549 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm6, %ymm13
5550 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
5551 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm15 = ymm8[2,3,2,3,6,7,6,7]
5552 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2],ymm15[3],ymm13[4,5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10],ymm15[11],ymm13[12,13],ymm15[14],ymm13[15]
5553 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
5554 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm12, %ymm4, %ymm15
5555 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5556 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm11 = ymm1[3,2,3,3,7,6,7,7]
5557 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm11 = ymm15[0],ymm11[1],ymm15[2],ymm11[3,4],ymm15[5,6,7,8],ymm11[9],ymm15[10],ymm11[11,12],ymm15[13,14,15]
5558 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,3,2,2]
5559 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[2,2,3,2]
5560 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm13, %ymm11, %ymm11
5561 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm5, %ymm13
5562 ; AVX2-FAST-PERLANE-NEXT:    vpshufd $238, (%rsp), %ymm15 # 32-byte Folded Reload
5563 ; AVX2-FAST-PERLANE-NEXT:    # ymm15 = mem[2,3,2,3,6,7,6,7]
5564 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2],ymm15[3],ymm13[4,5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10],ymm15[11],ymm13[12,13],ymm15[14],ymm13[15]
5565 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
5566 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm12, %ymm5, %ymm15
5567 ; AVX2-FAST-PERLANE-NEXT:    vpshufd $251, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Folded Reload
5568 ; AVX2-FAST-PERLANE-NEXT:    # ymm9 = mem[3,2,3,3,7,6,7,7]
5569 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm9 = ymm15[0],ymm9[1],ymm15[2],ymm9[3,4],ymm15[5,6,7,8],ymm9[9],ymm15[10],ymm9[11,12],ymm15[13,14,15]
5570 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm13 = ymm13[2,3,2,2]
5571 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,2,3,2]
5572 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm13, %ymm9, %ymm9
5573 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm0, %ymm3, %ymm0
5574 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm13 = ymm2[2,3,2,3,6,7,6,7]
5575 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm13[1],ymm0[2],ymm13[3],ymm0[4,5],ymm13[6],ymm0[7,8],ymm13[9],ymm0[10],ymm13[11],ymm0[12,13],ymm13[14],ymm0[15]
5576 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
5577 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm12, %ymm2, %ymm12
5578 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm13 = ymm7[3,2,3,3,7,6,7,7]
5579 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm7, %ymm3
5580 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm12 = ymm12[0],ymm13[1],ymm12[2],ymm13[3,4],ymm12[5,6,7,8],ymm13[9],ymm12[10],ymm13[11,12],ymm12[13,14,15]
5581 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
5582 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[2,2,3,2]
5583 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm0, %ymm12, %ymm0
5584 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 24(%r8), %ymm12
5585 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm14 = [0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0]
5586 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm10, %ymm12, %ymm2
5587 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5588 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 56(%r8), %ymm10
5589 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm11, %ymm10, %ymm2
5590 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5591 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 88(%r8), %ymm10
5592 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm9, %ymm10, %ymm2
5593 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5594 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq 120(%r8), %ymm9
5595 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm0, %ymm9, %ymm0
5596 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
5597 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
5598 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm9, %ymm7, %ymm11
5599 ; AVX2-FAST-PERLANE-NEXT:    vpshufd $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14 # 32-byte Folded Reload
5600 ; AVX2-FAST-PERLANE-NEXT:    # ymm14 = mem[3,0,3,0,7,4,7,4]
5601 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm11 = ymm14[0],ymm11[1],ymm14[2],ymm11[3],ymm14[4,5],ymm11[6],ymm14[7,8],ymm11[9],ymm14[10],ymm11[11],ymm14[12,13],ymm11[14],ymm14[15]
5602 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm14 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
5603 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
5604 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm14, %ymm2, %ymm15
5605 ; AVX2-FAST-PERLANE-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm13 # 32-byte Folded Reload
5606 ; AVX2-FAST-PERLANE-NEXT:    # ymm13 = mem[1,1,2,2]
5607 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0],ymm15[1],ymm13[2,3],ymm15[4],ymm13[5],ymm15[6],ymm13[7,8],ymm15[9],ymm13[10,11],ymm15[12],ymm13[13],ymm15[14],ymm13[15]
5608 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm15 = <255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255,255,255,u,u,0,0,0,0,255,255>
5609 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm11, %ymm13, %ymm11
5610 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm9, %ymm4, %ymm13
5611 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm12 = ymm1[3,0,3,0,7,4,7,4]
5612 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm12 = ymm12[0],ymm13[1],ymm12[2],ymm13[3],ymm12[4,5],ymm13[6],ymm12[7,8],ymm13[9],ymm12[10],ymm13[11],ymm12[12,13],ymm13[14],ymm12[15]
5613 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm14, %ymm6, %ymm13
5614 ; AVX2-FAST-PERLANE-NEXT:    vpermq {{.*#+}} ymm10 = ymm8[1,1,2,2]
5615 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm10 = ymm10[0],ymm13[1],ymm10[2,3],ymm13[4],ymm10[5],ymm13[6],ymm10[7,8],ymm13[9],ymm10[10,11],ymm13[12],ymm10[13],ymm13[14],ymm10[15]
5616 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm12, %ymm10, %ymm10
5617 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm9, %ymm5, %ymm7
5618 ; AVX2-FAST-PERLANE-NEXT:    vpshufd $51, {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Folded Reload
5619 ; AVX2-FAST-PERLANE-NEXT:    # ymm8 = mem[3,0,3,0,7,4,7,4]
5620 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2],ymm7[3],ymm8[4,5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10],ymm7[11],ymm8[12,13],ymm7[14],ymm8[15]
5621 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5622 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm14, %ymm1, %ymm5
5623 ; AVX2-FAST-PERLANE-NEXT:    vpermq $165, (%rsp), %ymm6 # 32-byte Folded Reload
5624 ; AVX2-FAST-PERLANE-NEXT:    # ymm6 = mem[1,1,2,2]
5625 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1],ymm6[2,3],ymm5[4],ymm6[5],ymm5[6],ymm6[7,8],ymm5[9],ymm6[10,11],ymm5[12],ymm6[13],ymm5[14],ymm6[15]
5626 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm7, %ymm5, %ymm5
5627 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5628 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm9, %ymm1, %ymm4
5629 ; AVX2-FAST-PERLANE-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[3,0,3,0,7,4,7,4]
5630 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm4[1],ymm3[2],ymm4[3],ymm3[4,5],ymm4[6],ymm3[7,8],ymm4[9],ymm3[10],ymm4[11],ymm3[12,13],ymm4[14],ymm3[15]
5631 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
5632 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm14, %ymm1, %ymm2
5633 ; AVX2-FAST-PERLANE-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Folded Reload
5634 ; AVX2-FAST-PERLANE-NEXT:    # ymm1 = mem[1,1,2,2]
5635 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]
5636 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm3, %ymm1, %ymm1
5637 ; AVX2-FAST-PERLANE-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Folded Reload
5638 ; AVX2-FAST-PERLANE-NEXT:    # ymm2 = mem[1,1,2,2]
5639 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm3 = [255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255,255,255,0,0,255,255,255,255,255,255]
5640 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm3, %ymm11, %ymm2, %ymm2
5641 ; AVX2-FAST-PERLANE-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Folded Reload
5642 ; AVX2-FAST-PERLANE-NEXT:    # ymm4 = mem[1,1,2,2]
5643 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm3, %ymm10, %ymm4, %ymm4
5644 ; AVX2-FAST-PERLANE-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload
5645 ; AVX2-FAST-PERLANE-NEXT:    # ymm6 = mem[1,1,2,2]
5646 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm3, %ymm5, %ymm6, %ymm5
5647 ; AVX2-FAST-PERLANE-NEXT:    vpermq $165, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Folded Reload
5648 ; AVX2-FAST-PERLANE-NEXT:    # ymm6 = mem[1,1,2,2]
5649 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm3, %ymm1, %ymm6, %ymm1
5650 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm1, 544(%r9)
5651 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm5, 384(%r9)
5652 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm4, 224(%r9)
5653 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, 64(%r9)
5654 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm0, 608(%r9)
5655 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5656 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 576(%r9)
5657 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5658 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 448(%r9)
5659 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5660 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 416(%r9)
5661 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5662 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 288(%r9)
5663 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5664 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 256(%r9)
5665 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5666 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 128(%r9)
5667 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5668 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 96(%r9)
5669 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5670 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 512(%r9)
5671 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5672 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 480(%r9)
5673 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5674 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 352(%r9)
5675 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5676 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 320(%r9)
5677 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5678 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 192(%r9)
5679 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5680 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 160(%r9)
5681 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5682 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, 32(%r9)
5683 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
5684 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm0, (%r9)
5685 ; AVX2-FAST-PERLANE-NEXT:    addq $936, %rsp # imm = 0x3A8
5686 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
5687 ; AVX2-FAST-PERLANE-NEXT:    retq
5689 ; AVX512F-SLOW-LABEL: store_i16_stride5_vf64:
5690 ; AVX512F-SLOW:       # %bb.0:
5691 ; AVX512F-SLOW-NEXT:    subq $520, %rsp # imm = 0x208
5692 ; AVX512F-SLOW-NEXT:    vmovdqa 96(%rcx), %ymm15
5693 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
5694 ; AVX512F-SLOW-NEXT:    vpshufb %ymm1, %ymm15, %ymm0
5695 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm1, %ymm8
5696 ; AVX512F-SLOW-NEXT:    vmovdqa64 96(%rdx), %ymm16
5697 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm16[3,0,3,0,7,4,7,4]
5698 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]
5699 ; AVX512F-SLOW-NEXT:    vmovdqa 96(%rcx), %xmm0
5700 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm14 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
5701 ; AVX512F-SLOW-NEXT:    vpshufb %xmm14, %xmm0, %xmm2
5702 ; AVX512F-SLOW-NEXT:    vmovdqa 96(%rdx), %xmm3
5703 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm4 = xmm3[1,2,2,2]
5704 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1],xmm2[2],xmm4[3],xmm2[4,5],xmm4[6],xmm2[7]
5705 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]
5706 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm1, %zmm2, %zmm1
5707 ; AVX512F-SLOW-NEXT:    vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
5708 ; AVX512F-SLOW-NEXT:    vmovdqa 96(%rsi), %ymm2
5709 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm12 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
5710 ; AVX512F-SLOW-NEXT:    vpshufb %ymm12, %ymm2, %ymm1
5711 ; AVX512F-SLOW-NEXT:    vmovdqa64 96(%rdi), %ymm18
5712 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm18[1,1,2,2]
5713 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0],ymm1[1],ymm4[2,3],ymm1[4],ymm4[5],ymm1[6],ymm4[7,8],ymm1[9],ymm4[10,11],ymm1[12],ymm4[13],ymm1[14],ymm4[15]
5714 ; AVX512F-SLOW-NEXT:    vmovdqa 96(%rsi), %xmm1
5715 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm10 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
5716 ; AVX512F-SLOW-NEXT:    vpshufb %xmm10, %xmm1, %xmm5
5717 ; AVX512F-SLOW-NEXT:    vpbroadcastq 104(%rdi), %xmm6
5718 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0],xmm6[1],xmm5[2,3],xmm6[4],xmm5[5],xmm6[6],xmm5[7]
5719 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,1]
5720 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm5, %zmm4
5721 ; AVX512F-SLOW-NEXT:    vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
5722 ; AVX512F-SLOW-NEXT:    vmovdqa 96(%r8), %ymm4
5723 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm6 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]
5724 ; AVX512F-SLOW-NEXT:    vpshufb %ymm6, %ymm4, %ymm5
5725 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm6, %ymm29
5726 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,1,1]
5727 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm17 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]
5728 ; AVX512F-SLOW-NEXT:    vpandnq %ymm4, %ymm17, %ymm4
5729 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm5, %zmm4, %zmm4
5730 ; AVX512F-SLOW-NEXT:    vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
5731 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
5732 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} xmm5 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
5733 ; AVX512F-SLOW-NEXT:    vpshufb %xmm5, %xmm0, %xmm0
5734 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %ymm13
5735 ; AVX512F-SLOW-NEXT:    vmovdqa 64(%rdx), %ymm3
5736 ; AVX512F-SLOW-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5737 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[3,2,3,3,7,6,7,7]
5738 ; AVX512F-SLOW-NEXT:    vmovdqa 64(%rcx), %ymm4
5739 ; AVX512F-SLOW-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5740 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm4 = ymm4[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
5741 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,3,2,3,6,7,6,7]
5742 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1],ymm4[2],ymm3[3,4],ymm4[5,6,7,8],ymm3[9],ymm4[10],ymm3[11,12],ymm4[13,14,15]
5743 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[2,2,3,2]
5744 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm3[0,1,2,3],zmm0[0,1,0,1]
5745 ; AVX512F-SLOW-NEXT:    vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
5746 ; AVX512F-SLOW-NEXT:    vmovdqa 96(%rdi), %xmm0
5747 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
5748 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
5749 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]
5750 ; AVX512F-SLOW-NEXT:    vmovdqa64 64(%rdi), %ymm19
5751 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm19[2,3,2,3,6,7,6,7]
5752 ; AVX512F-SLOW-NEXT:    vmovdqa 64(%rsi), %ymm3
5753 ; AVX512F-SLOW-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5754 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm3 = ymm3[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
5755 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[2,3,2,2,6,7,6,6]
5756 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm3[0],ymm1[1],ymm3[2],ymm1[3],ymm3[4,5],ymm1[6],ymm3[7,8],ymm1[9],ymm3[10],ymm1[11],ymm3[12,13],ymm1[14],ymm3[15]
5757 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,2]
5758 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm31 = zmm1[0,1,2,3],zmm0[0,1,0,1]
5759 ; AVX512F-SLOW-NEXT:    vmovdqa 64(%rdx), %xmm0
5760 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rcx), %xmm7
5761 ; AVX512F-SLOW-NEXT:    vmovdqa 64(%rcx), %xmm1
5762 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm11 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
5763 ; AVX512F-SLOW-NEXT:    vpshufb %xmm14, %xmm1, %xmm1
5764 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[1,2,2,2]
5765 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1],xmm1[2],xmm0[3],xmm1[4,5],xmm0[6],xmm1[7]
5766 ; AVX512F-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
5767 ; AVX512F-SLOW-NEXT:    vmovdqa 64(%rsi), %xmm0
5768 ; AVX512F-SLOW-NEXT:    vpshufb %xmm10, %xmm0, %xmm1
5769 ; AVX512F-SLOW-NEXT:    vpbroadcastq 72(%rdi), %xmm3
5770 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm3[1],xmm1[2,3],xmm3[4],xmm1[5],xmm3[6],xmm1[7]
5771 ; AVX512F-SLOW-NEXT:    vmovdqa 64(%rdi), %xmm3
5772 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]
5773 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %xmm4
5774 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
5775 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]
5776 ; AVX512F-SLOW-NEXT:    vinserti32x4 $2, %xmm1, %zmm0, %zmm0
5777 ; AVX512F-SLOW-NEXT:    vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
5778 ; AVX512F-SLOW-NEXT:    vpshufb %xmm10, %xmm4, %xmm0
5779 ; AVX512F-SLOW-NEXT:    vpbroadcastq 8(%rdi), %xmm1
5780 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2,3],xmm1[4],xmm0[5],xmm1[6],xmm0[7]
5781 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %xmm1
5782 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3]
5783 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm13[3,2,3,3,7,6,7,7]
5784 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
5785 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,5,6]
5786 ; AVX512F-SLOW-NEXT:    vinserti32x4 $2, %xmm0, %zmm1, %zmm0
5787 ; AVX512F-SLOW-NEXT:    vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
5788 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %ymm6
5789 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm6[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
5790 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]
5791 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm3[1],ymm0[2],ymm3[3,4],ymm0[5,6,7,8],ymm3[9],ymm0[10],ymm3[11,12],ymm0[13,14,15]
5792 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdx), %xmm3
5793 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,2,3,2]
5794 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3]
5795 ; AVX512F-SLOW-NEXT:    vpshufb %xmm5, %xmm1, %xmm1
5796 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,2,3],zmm1[0,1,0,1]
5797 ; AVX512F-SLOW-NEXT:    vmovdqu64 %zmm0, (%rsp) # 64-byte Spill
5798 ; AVX512F-SLOW-NEXT:    vmovdqa64 (%rdi), %ymm30
5799 ; AVX512F-SLOW-NEXT:    vmovdqa (%rsi), %ymm9
5800 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm9[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
5801 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,2,6,7,6,6]
5802 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm30[2,3,2,3,6,7,6,7]
5803 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]
5804 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm0 = ymm0[2,3,2,2]
5805 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rsi), %xmm4
5806 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdi), %xmm1
5807 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3]
5808 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
5809 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,5,6]
5810 ; AVX512F-SLOW-NEXT:    vshufi64x2 {{.*#+}} zmm28 = zmm0[0,1,2,3],zmm1[0,1,0,1]
5811 ; AVX512F-SLOW-NEXT:    vmovdqa64 32(%rdx), %ymm22
5812 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rcx), %ymm1
5813 ; AVX512F-SLOW-NEXT:    vpshufb %ymm8, %ymm1, %ymm0
5814 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm8 = ymm22[3,0,3,0,7,4,7,4]
5815 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm8[0],ymm0[1],ymm8[2],ymm0[3],ymm8[4,5],ymm0[6],ymm8[7,8],ymm0[9],ymm8[10],ymm0[11],ymm8[12,13],ymm0[14],ymm8[15]
5816 ; AVX512F-SLOW-NEXT:    vpshufb %xmm14, %xmm7, %xmm7
5817 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[1,2,2,2]
5818 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm3 = xmm7[0],xmm3[1],xmm7[2],xmm3[3],xmm7[4,5],xmm3[6],xmm7[7]
5819 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm3[0,1,0,0]
5820 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm3, %zmm0
5821 ; AVX512F-SLOW-NEXT:    vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
5822 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm3
5823 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rsi), %ymm0
5824 ; AVX512F-SLOW-NEXT:    vpshufb %ymm12, %ymm0, %ymm7
5825 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm3[1,1,2,2]
5826 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1],ymm8[2,3],ymm7[4],ymm8[5],ymm7[6],ymm8[7,8],ymm7[9],ymm8[10,11],ymm7[12],ymm8[13],ymm7[14],ymm8[15]
5827 ; AVX512F-SLOW-NEXT:    vpshufb %xmm10, %xmm4, %xmm4
5828 ; AVX512F-SLOW-NEXT:    vpbroadcastq 40(%rdi), %xmm8
5829 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0],xmm8[1],xmm4[2,3],xmm8[4],xmm4[5],xmm8[6],xmm4[7]
5830 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,0,1]
5831 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm7, %zmm4, %zmm25
5832 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%r8), %ymm4
5833 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm4[0,1,1,1]
5834 ; AVX512F-SLOW-NEXT:    vpandnq %ymm7, %ymm17, %ymm7
5835 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm29, %ymm8
5836 ; AVX512F-SLOW-NEXT:    vpshufb %ymm8, %ymm4, %ymm4
5837 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm7, %zmm17
5838 ; AVX512F-SLOW-NEXT:    vpshufb %xmm5, %xmm11, %xmm4
5839 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm4, %ymm24
5840 ; AVX512F-SLOW-NEXT:    vmovdqa (%rcx), %xmm4
5841 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdx), %xmm7
5842 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm4[0],xmm7[0],xmm4[1],xmm7[1],xmm4[2],xmm7[2],xmm4[3],xmm7[3]
5843 ; AVX512F-SLOW-NEXT:    vpshufb %xmm5, %xmm8, %xmm5
5844 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm5, %ymm27
5845 ; AVX512F-SLOW-NEXT:    vpshufb %xmm14, %xmm4, %xmm4
5846 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} xmm5 = xmm7[1,2,2,2]
5847 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1],xmm4[2],xmm5[3],xmm4[4,5],xmm5[6],xmm4[7]
5848 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm4, %ymm26
5849 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm18[0,1,2,1,4,5,6,5]
5850 ; AVX512F-SLOW-NEXT:    vprolq $16, %ymm2, %ymm5
5851 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm5[0,1],ymm4[2],ymm5[3],ymm4[4],ymm5[5,6],ymm4[7],ymm5[8,9],ymm4[10],ymm5[11],ymm4[12],ymm5[13,14],ymm4[15]
5852 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm4, %ymm21
5853 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm2 = ymm2[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
5854 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm2[2,3,2,2,6,7,6,6]
5855 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm18[2,3,2,3,6,7,6,7]
5856 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm11 = ymm2[0],ymm4[1],ymm2[2],ymm4[3],ymm2[4,5],ymm4[6],ymm2[7,8],ymm4[9],ymm2[10],ymm4[11],ymm2[12,13],ymm4[14],ymm2[15]
5857 ; AVX512F-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
5858 ; AVX512F-SLOW-NEXT:    # ymm7 = mem[0,1,0,1]
5859 ; AVX512F-SLOW-NEXT:    vpshufb %ymm7, %ymm15, %ymm4
5860 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm16[1,1,1,2,5,5,5,6]
5861 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm4[0],ymm5[1],ymm4[2,3],ymm5[4],ymm4[5],ymm5[6],ymm4[7,8],ymm5[9],ymm4[10,11],ymm5[12],ymm4[13],ymm5[14],ymm4[15]
5862 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm4 = ymm15[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
5863 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm4[2,3,2,3,6,7,6,7]
5864 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm5 = ymm16[3,2,3,3,7,6,7,7]
5865 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm15 = ymm4[0],ymm5[1],ymm4[2],ymm5[3,4],ymm4[5,6,7,8],ymm5[9],ymm4[10],ymm5[11,12],ymm4[13,14,15]
5866 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm4 = ymm3[0,1,2,1,4,5,6,5]
5867 ; AVX512F-SLOW-NEXT:    vprolq $16, %ymm0, %ymm5
5868 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm5[0,1],ymm4[2],ymm5[3],ymm4[4],ymm5[5,6],ymm4[7],ymm5[8,9],ymm4[10],ymm5[11],ymm4[12],ymm5[13,14],ymm4[15]
5869 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm2, %ymm20
5870 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm0[0,1,2,3,7,6,5,7,8,9,10,11,15,14,13,15]
5871 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,2,6,7,6,6]
5872 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm3[2,3,2,3,6,7,6,7]
5873 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm0[0],ymm3[1],ymm0[2],ymm3[3],ymm0[4,5],ymm3[6],ymm0[7,8],ymm3[9],ymm0[10],ymm3[11],ymm0[12,13],ymm3[14],ymm0[15]
5874 ; AVX512F-SLOW-NEXT:    vpshufb %ymm7, %ymm1, %ymm0
5875 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm3 = ymm22[1,1,1,2,5,5,5,6]
5876 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm0[0],ymm3[1],ymm0[2,3],ymm3[4],ymm0[5],ymm3[6],ymm0[7,8],ymm3[9],ymm0[10,11],ymm3[12],ymm0[13],ymm3[14],ymm0[15]
5877 ; AVX512F-SLOW-NEXT:    vpshufhw {{.*#+}} ymm0 = ymm1[0,1,2,3,5,6,7,7,8,9,10,11,13,14,15,15]
5878 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm0 = ymm0[2,3,2,3,6,7,6,7]
5879 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm1 = ymm22[3,2,3,3,7,6,7,7]
5880 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm0[0],ymm1[1],ymm0[2],ymm1[3,4],ymm0[5,6,7,8],ymm1[9],ymm0[10],ymm1[11,12],ymm0[13,14,15]
5881 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm12, %ymm2
5882 ; AVX512F-SLOW-NEXT:    vpshufb %ymm12, %ymm9, %ymm1
5883 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm30[1,1,2,2]
5884 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm14[0],ymm1[1],ymm14[2,3],ymm1[4],ymm14[5],ymm1[6],ymm14[7,8],ymm1[9],ymm14[10,11],ymm1[12],ymm14[13],ymm1[14],ymm14[15]
5885 ; AVX512F-SLOW-NEXT:    vprolq $16, %ymm9, %ymm9
5886 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm14 = ymm30[0,1,2,1,4,5,6,5]
5887 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm9 = ymm9[0,1],ymm14[2],ymm9[3],ymm14[4],ymm9[5,6],ymm14[7],ymm9[8,9],ymm14[10],ymm9[11],ymm14[12],ymm9[13,14],ymm14[15]
5888 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[2,3,2,3]
5889 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm9, %zmm1, %zmm23
5890 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
5891 ; AVX512F-SLOW-NEXT:    vpshufb %ymm0, %ymm6, %ymm1
5892 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm13[3,0,3,0,7,4,7,4]
5893 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm9[0],ymm1[1],ymm9[2],ymm1[3],ymm9[4,5],ymm1[6],ymm9[7,8],ymm1[9],ymm9[10],ymm1[11],ymm9[12,13],ymm1[14],ymm9[15]
5894 ; AVX512F-SLOW-NEXT:    vpshufb %ymm7, %ymm6, %ymm6
5895 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm9 = ymm13[1,1,1,2,5,5,5,6]
5896 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm6 = ymm6[0],ymm9[1],ymm6[2,3],ymm9[4],ymm6[5],ymm9[6],ymm6[7,8],ymm9[9],ymm6[10,11],ymm9[12],ymm6[13],ymm9[14],ymm6[15]
5897 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[2,3,2,3]
5898 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm6, %zmm1, %zmm6
5899 ; AVX512F-SLOW-NEXT:    vpbroadcastq 16(%r8), %ymm1
5900 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm18 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]
5901 ; AVX512F-SLOW-NEXT:    vpandnq %ymm1, %ymm18, %ymm1
5902 ; AVX512F-SLOW-NEXT:    vmovdqa (%r8), %ymm9
5903 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm29, %ymm3
5904 ; AVX512F-SLOW-NEXT:    vpshufb %ymm3, %ymm9, %ymm13
5905 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm1, %zmm13, %zmm13
5906 ; AVX512F-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload
5907 ; AVX512F-SLOW-NEXT:    vpshufb %ymm2, %ymm12, %ymm1
5908 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm19[1,1,2,2]
5909 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm14[0],ymm1[1],ymm14[2,3],ymm1[4],ymm14[5],ymm1[6],ymm14[7,8],ymm1[9],ymm14[10,11],ymm1[12],ymm14[13],ymm1[14],ymm14[15]
5910 ; AVX512F-SLOW-NEXT:    vprolq $16, %ymm12, %ymm12
5911 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm14 = ymm19[0,1,2,1,4,5,6,5]
5912 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm12 = ymm12[0,1],ymm14[2],ymm12[3],ymm14[4],ymm12[5,6],ymm14[7],ymm12[8,9],ymm14[10],ymm12[11],ymm14[12],ymm12[13,14],ymm14[15]
5913 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[2,3,2,3]
5914 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm12, %zmm1, %zmm30
5915 ; AVX512F-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
5916 ; AVX512F-SLOW-NEXT:    vpshufb %ymm0, %ymm2, %ymm1
5917 ; AVX512F-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload
5918 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm14 = ymm12[3,0,3,0,7,4,7,4]
5919 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm14[0],ymm1[1],ymm14[2],ymm1[3],ymm14[4,5],ymm1[6],ymm14[7,8],ymm1[9],ymm14[10],ymm1[11],ymm14[12,13],ymm1[14],ymm14[15]
5920 ; AVX512F-SLOW-NEXT:    vpshufb %ymm7, %ymm2, %ymm1
5921 ; AVX512F-SLOW-NEXT:    vpshufd {{.*#+}} ymm2 = ymm12[1,1,1,2,5,5,5,6]
5922 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm1[0],ymm2[1],ymm1[2,3],ymm2[4],ymm1[5],ymm2[6],ymm1[7,8],ymm2[9],ymm1[10,11],ymm2[12],ymm1[13],ymm2[14],ymm1[15]
5923 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm16 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
5924 ; AVX512F-SLOW-NEXT:    vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm16, %zmm31 # 64-byte Folded Reload
5925 ; AVX512F-SLOW-NEXT:    vpbroadcastq 88(%r8), %ymm1
5926 ; AVX512F-SLOW-NEXT:    vpbroadcastq 96(%r8), %ymm14
5927 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm14, %zmm1, %zmm29
5928 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm19 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]
5929 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %zmm31, %zmm19, %zmm29
5930 ; AVX512F-SLOW-NEXT:    vpternlogq $226, (%rsp), %zmm16, %zmm28 # 64-byte Folded Reload
5931 ; AVX512F-SLOW-NEXT:    vpbroadcastq 24(%r8), %ymm14
5932 ; AVX512F-SLOW-NEXT:    vpbroadcastq 32(%r8), %ymm22
5933 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm22, %zmm14, %zmm14
5934 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %zmm28, %zmm19, %zmm14
5935 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm19 = ymm24[0,1,0,1]
5936 ; AVX512F-SLOW-NEXT:    vpermq $4, {{[-0-9]+}}(%r{{[sb]}}p), %ymm22 # 32-byte Folded Reload
5937 ; AVX512F-SLOW-NEXT:    # ymm22 = mem[0,1,0,0]
5938 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[2,3,2,3]
5939 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm0
5940 ; AVX512F-SLOW-NEXT:    vpbroadcastq 80(%r8), %ymm2
5941 ; AVX512F-SLOW-NEXT:    vpandnq %ymm2, %ymm18, %ymm2
5942 ; AVX512F-SLOW-NEXT:    vmovdqa 64(%r8), %ymm12
5943 ; AVX512F-SLOW-NEXT:    vpshufb %ymm3, %ymm12, %ymm1
5944 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm12 = ymm12[0,1,1,1]
5945 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm18 = ymm27[0,1,0,1]
5946 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm26 = ymm26[0,1,0,0]
5947 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm9 = ymm9[0,1,1,1]
5948 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm28 = ymm21[2,3,2,3]
5949 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm11 = ymm11[2,3,2,2]
5950 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,2,3]
5951 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm15 = ymm15[2,2,3,2]
5952 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm7 = ymm20[2,3,2,3]
5953 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[2,3,2,2]
5954 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[2,3,2,3]
5955 ; AVX512F-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm10[2,2,3,2]
5956 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm1, %zmm1
5957 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm2 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0]
5958 ; AVX512F-SLOW-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm21 # 64-byte Reload
5959 ; AVX512F-SLOW-NEXT:    vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm21 # 64-byte Folded Reload
5960 ; AVX512F-SLOW-NEXT:    vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm25 # 64-byte Folded Reload
5961 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm2 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]
5962 ; AVX512F-SLOW-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm10 # 64-byte Reload
5963 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %zmm2, %zmm21, %zmm10
5964 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %zmm2, %zmm25, %zmm17
5965 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm22, %zmm19, %zmm2
5966 ; AVX512F-SLOW-NEXT:    vpermq $68, {{[-0-9]+}}(%r{{[sb]}}p), %zmm19 # 64-byte Folded Reload
5967 ; AVX512F-SLOW-NEXT:    # zmm19 = mem[0,1,0,1,4,5,4,5]
5968 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm21 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
5969 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm2, %zmm21, %zmm19
5970 ; AVX512F-SLOW-NEXT:    vpbroadcastq 64(%r8), %ymm2
5971 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm12, %zmm2, %zmm2
5972 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm12 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]
5973 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %zmm19, %zmm12, %zmm2
5974 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm26, %zmm18, %zmm18
5975 ; AVX512F-SLOW-NEXT:    vpermq $68, {{[-0-9]+}}(%r{{[sb]}}p), %zmm19 # 64-byte Folded Reload
5976 ; AVX512F-SLOW-NEXT:    # zmm19 = mem[0,1,0,1,4,5,4,5]
5977 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm18, %zmm21, %zmm19
5978 ; AVX512F-SLOW-NEXT:    vpbroadcastq (%r8), %ymm18
5979 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm9, %zmm18, %zmm9
5980 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %zmm19, %zmm12, %zmm9
5981 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm11, %zmm28, %zmm11
5982 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm15, %zmm8, %zmm8
5983 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm11, %zmm21, %zmm8
5984 ; AVX512F-SLOW-NEXT:    vpbroadcastq 112(%r8), %ymm11
5985 ; AVX512F-SLOW-NEXT:    vpbroadcastq 120(%r8), %ymm12
5986 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm12, %zmm11, %zmm11
5987 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm12 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]
5988 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %zmm8, %zmm12, %zmm11
5989 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm5, %zmm7, %zmm5
5990 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm4, %zmm3
5991 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm5, %zmm21, %zmm3
5992 ; AVX512F-SLOW-NEXT:    vpbroadcastq 48(%r8), %ymm4
5993 ; AVX512F-SLOW-NEXT:    vpbroadcastq 56(%r8), %ymm5
5994 ; AVX512F-SLOW-NEXT:    vinserti64x4 $1, %ymm5, %zmm4, %zmm4
5995 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %zmm3, %zmm12, %zmm4
5996 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm23, %zmm16, %zmm6
5997 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %zmm30, %zmm16, %zmm0
5998 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm3 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]
5999 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %zmm3, %zmm6, %zmm13
6000 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %zmm3, %zmm0, %zmm1
6001 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm1, 384(%r9)
6002 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm13, 64(%r9)
6003 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm4, 256(%r9)
6004 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm11, 576(%r9)
6005 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm9, (%r9)
6006 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm17, 192(%r9)
6007 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm14, 128(%r9)
6008 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm2, 320(%r9)
6009 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm29, 448(%r9)
6010 ; AVX512F-SLOW-NEXT:    vmovdqa64 %zmm10, 512(%r9)
6011 ; AVX512F-SLOW-NEXT:    addq $520, %rsp # imm = 0x208
6012 ; AVX512F-SLOW-NEXT:    vzeroupper
6013 ; AVX512F-SLOW-NEXT:    retq
6015 ; AVX512F-FAST-LABEL: store_i16_stride5_vf64:
6016 ; AVX512F-FAST:       # %bb.0:
6017 ; AVX512F-FAST-NEXT:    subq $360, %rsp # imm = 0x168
6018 ; AVX512F-FAST-NEXT:    vmovdqa 96(%rcx), %ymm6
6019 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm15 = <u,u,12,13,u,u,0,1,u,u,u,u,14,15,u,u,u,u,28,29,u,u,16,17,u,u,u,u,30,31,u,u>
6020 ; AVX512F-FAST-NEXT:    vpshufb %ymm15, %ymm6, %ymm0
6021 ; AVX512F-FAST-NEXT:    vmovdqa64 96(%rdx), %ymm18
6022 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm1 = ymm18[3,0,3,0,7,4,7,4]
6023 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]
6024 ; AVX512F-FAST-NEXT:    vmovdqa 96(%rcx), %xmm2
6025 ; AVX512F-FAST-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6026 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm0 = <10,11,u,u,6,7,u,u,8,9,8,9,u,u,8,9>
6027 ; AVX512F-FAST-NEXT:    vpshufb %xmm0, %xmm2, %xmm2
6028 ; AVX512F-FAST-NEXT:    vmovdqa 96(%rdx), %xmm3
6029 ; AVX512F-FAST-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6030 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} xmm3 = xmm3[1,2,2,2]
6031 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0],xmm3[1],xmm2[2],xmm3[3],xmm2[4,5],xmm3[6],xmm2[7]
6032 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm2[0,1,0,0]
6033 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm1, %zmm2, %zmm1
6034 ; AVX512F-FAST-NEXT:    vmovdqu64 %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
6035 ; AVX512F-FAST-NEXT:    vmovdqa 96(%rsi), %ymm2
6036 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm8 = <u,u,0,1,u,u,u,u,14,15,u,u,2,3,u,u,u,u,16,17,u,u,u,u,30,31,u,u,18,19,u,u>
6037 ; AVX512F-FAST-NEXT:    vpshufb %ymm8, %ymm2, %ymm1
6038 ; AVX512F-FAST-NEXT:    vmovdqa64 96(%rdi), %ymm23
6039 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm23[1,1,2,2]
6040 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm1[1],ymm3[2,3],ymm1[4],ymm3[5],ymm1[6],ymm3[7,8],ymm1[9],ymm3[10,11],ymm1[12],ymm3[13],ymm1[14],ymm3[15]
6041 ; AVX512F-FAST-NEXT:    vmovdqa 96(%rsi), %xmm4
6042 ; AVX512F-FAST-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6043 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm1 = <6,7,u,u,10,11,6,7,u,u,8,9,u,u,12,13>
6044 ; AVX512F-FAST-NEXT:    vpshufb %xmm1, %xmm4, %xmm4
6045 ; AVX512F-FAST-NEXT:    vpbroadcastq 104(%rdi), %xmm5
6046 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1],xmm4[2,3],xmm5[4],xmm4[5],xmm5[6],xmm4[7]
6047 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,1,0,1]
6048 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm4, %zmm3
6049 ; AVX512F-FAST-NEXT:    vmovdqu64 %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
6050 ; AVX512F-FAST-NEXT:    vmovdqa 96(%r8), %ymm3
6051 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm14 = [128,128,128,128,12,13,128,128,128,128,128,128,128,128,14,15,128,128,128,128,128,128,128,128,16,17,128,128,128,128,128,128]
6052 ; AVX512F-FAST-NEXT:    vpshufb %ymm14, %ymm3, %ymm4
6053 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm3[0,1,1,1]
6054 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm3 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]
6055 ; AVX512F-FAST-NEXT:    vpandn %ymm5, %ymm3, %ymm5
6056 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm4, %zmm5, %zmm4
6057 ; AVX512F-FAST-NEXT:    vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
6058 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rcx), %ymm4
6059 ; AVX512F-FAST-NEXT:    vmovdqu %ymm4, (%rsp) # 32-byte Spill
6060 ; AVX512F-FAST-NEXT:    vpshufb %ymm15, %ymm4, %ymm4
6061 ; AVX512F-FAST-NEXT:    vmovdqa64 32(%rdx), %ymm27
6062 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm5 = ymm27[3,0,3,0,7,4,7,4]
6063 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2],ymm4[3],ymm5[4,5],ymm4[6],ymm5[7,8],ymm4[9],ymm5[10],ymm4[11],ymm5[12,13],ymm4[14],ymm5[15]
6064 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rcx), %xmm5
6065 ; AVX512F-FAST-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6066 ; AVX512F-FAST-NEXT:    vpshufb %xmm0, %xmm5, %xmm5
6067 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdx), %xmm7
6068 ; AVX512F-FAST-NEXT:    vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6069 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} xmm7 = xmm7[1,2,2,2]
6070 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0],xmm7[1],xmm5[2],xmm7[3],xmm5[4,5],xmm7[6],xmm5[7]
6071 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm5 = ymm5[0,1,0,0]
6072 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm4, %zmm5, %zmm4
6073 ; AVX512F-FAST-NEXT:    vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
6074 ; AVX512F-FAST-NEXT:    vmovdqa 64(%rsi), %xmm4
6075 ; AVX512F-FAST-NEXT:    vpshufb %xmm1, %xmm4, %xmm5
6076 ; AVX512F-FAST-NEXT:    vpbroadcastq 72(%rdi), %xmm7
6077 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0],xmm7[1],xmm5[2,3],xmm7[4],xmm5[5],xmm7[6],xmm5[7]
6078 ; AVX512F-FAST-NEXT:    vmovdqa 64(%rdi), %xmm7
6079 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm7[0],xmm4[0],xmm7[1],xmm4[1],xmm7[2],xmm4[2],xmm7[3],xmm4[3]
6080 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm7 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
6081 ; AVX512F-FAST-NEXT:    vpshufb %xmm7, %xmm4, %xmm4
6082 ; AVX512F-FAST-NEXT:    vmovdqa %xmm7, %xmm10
6083 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm5, %zmm4, %zmm4
6084 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %xmm5
6085 ; AVX512F-FAST-NEXT:    vpshufb %xmm1, %xmm5, %xmm7
6086 ; AVX512F-FAST-NEXT:    vpbroadcastq 8(%rdi), %xmm9
6087 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm7 = xmm7[0],xmm9[1],xmm7[2,3],xmm9[4],xmm7[5],xmm9[6],xmm7[7]
6088 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %xmm9
6089 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3]
6090 ; AVX512F-FAST-NEXT:    vpshufb %xmm10, %xmm5, %xmm5
6091 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm5, %zmm5
6092 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rsi), %ymm13
6093 ; AVX512F-FAST-NEXT:    vpshufb %ymm8, %ymm13, %ymm7
6094 ; AVX512F-FAST-NEXT:    vmovdqa64 32(%rdi), %ymm30
6095 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm30[1,1,2,2]
6096 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm7 = ymm9[0],ymm7[1],ymm9[2,3],ymm7[4],ymm9[5],ymm7[6],ymm9[7,8],ymm7[9],ymm9[10,11],ymm7[12],ymm9[13],ymm7[14],ymm9[15]
6097 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rsi), %xmm9
6098 ; AVX512F-FAST-NEXT:    vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6099 ; AVX512F-FAST-NEXT:    vpshufb %xmm1, %xmm9, %xmm1
6100 ; AVX512F-FAST-NEXT:    vpbroadcastq 40(%rdi), %xmm9
6101 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm9[1],xmm1[2,3],xmm9[4],xmm1[5],xmm9[6],xmm1[7]
6102 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[0,1,0,1]
6103 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm1, %zmm16
6104 ; AVX512F-FAST-NEXT:    vmovdqa 32(%r8), %ymm1
6105 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm1[0,1,1,1]
6106 ; AVX512F-FAST-NEXT:    vpshufb %ymm14, %ymm1, %ymm1
6107 ; AVX512F-FAST-NEXT:    vpandn %ymm7, %ymm3, %ymm3
6108 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm1, %zmm3, %zmm29
6109 ; AVX512F-FAST-NEXT:    vmovdqa 64(%rcx), %xmm1
6110 ; AVX512F-FAST-NEXT:    vpshufb %xmm0, %xmm1, %xmm3
6111 ; AVX512F-FAST-NEXT:    vmovdqa 64(%rdx), %xmm7
6112 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} xmm9 = xmm7[1,2,2,2]
6113 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0],xmm9[1],xmm3[2],xmm9[3],xmm3[4,5],xmm9[6],xmm3[7]
6114 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1],xmm1[2],xmm7[2],xmm1[3],xmm7[3]
6115 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm7 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
6116 ; AVX512F-FAST-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
6117 ; AVX512F-FAST-NEXT:    vmovdqa %xmm7, %xmm9
6118 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm7 = [0,1,0,1,8,9,8,8]
6119 ; AVX512F-FAST-NEXT:    vpermt2q %zmm3, %zmm7, %zmm1
6120 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} zmm19 = zmm4[0,1,0,1,4,5,4,5]
6121 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm31 = [65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535]
6122 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm1, %zmm31, %zmm19
6123 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %xmm1
6124 ; AVX512F-FAST-NEXT:    vpshufb %xmm0, %xmm1, %xmm0
6125 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %xmm3
6126 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} xmm4 = xmm3[1,2,2,2]
6127 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm4[1],xmm0[2],xmm4[3],xmm0[4,5],xmm4[6],xmm0[7]
6128 ; AVX512F-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
6129 ; AVX512F-FAST-NEXT:    vpshufb %xmm9, %xmm1, %xmm1
6130 ; AVX512F-FAST-NEXT:    vpermt2q %zmm0, %zmm7, %zmm1
6131 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} zmm21 = zmm5[0,1,0,1,4,5,4,5]
6132 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm1, %zmm31, %zmm21
6133 ; AVX512F-FAST-NEXT:    vmovdqa (%rsi), %ymm3
6134 ; AVX512F-FAST-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
6135 ; AVX512F-FAST-NEXT:    vmovdqa64 (%rdi), %ymm28
6136 ; AVX512F-FAST-NEXT:    vpshufb %ymm8, %ymm3, %ymm0
6137 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm28[1,1,2,2]
6138 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
6139 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm1 = ymm28[0,1,2,1,4,5,6,5]
6140 ; AVX512F-FAST-NEXT:    vprolq $16, %ymm3, %ymm3
6141 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm3[0,1],ymm1[2],ymm3[3],ymm1[4],ymm3[5,6],ymm1[7],ymm3[8,9],ymm1[10],ymm3[11],ymm1[12],ymm3[13,14],ymm1[15]
6142 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
6143 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
6144 ; AVX512F-FAST-NEXT:    vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
6145 ; AVX512F-FAST-NEXT:    vmovdqa (%rdx), %ymm10
6146 ; AVX512F-FAST-NEXT:    vmovdqa (%rcx), %ymm4
6147 ; AVX512F-FAST-NEXT:    vpshufb %ymm15, %ymm4, %ymm0
6148 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm1 = ymm10[3,0,3,0,7,4,7,4]
6149 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4,5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10],ymm0[11],ymm1[12,13],ymm0[14],ymm1[15]
6150 ; AVX512F-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25,18,19,0,0,22,23,22,23,0,0,20,21,0,0,24,25]
6151 ; AVX512F-FAST-NEXT:    # ymm7 = mem[0,1,0,1]
6152 ; AVX512F-FAST-NEXT:    vpshufb %ymm7, %ymm4, %ymm1
6153 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm3 = ymm10[1,1,1,2,5,5,5,6]
6154 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm3[1],ymm1[2,3],ymm3[4],ymm1[5],ymm3[6],ymm1[7,8],ymm3[9],ymm1[10,11],ymm3[12],ymm1[13],ymm3[14],ymm1[15]
6155 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
6156 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm25
6157 ; AVX512F-FAST-NEXT:    vpbroadcastq 16(%r8), %ymm0
6158 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]
6159 ; AVX512F-FAST-NEXT:    vpandn %ymm0, %ymm9, %ymm0
6160 ; AVX512F-FAST-NEXT:    vmovdqa (%r8), %ymm3
6161 ; AVX512F-FAST-NEXT:    vpshufb %ymm14, %ymm3, %ymm1
6162 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm3, %ymm24
6163 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm1, %zmm26
6164 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]
6165 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm1 = ymm23[2,3,2,3,6,7,6,7]
6166 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7,8],ymm1[9],ymm0[10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]
6167 ; AVX512F-FAST-NEXT:    vprolq $16, %ymm2, %ymm1
6168 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm2 = ymm23[0,1,2,1,4,5,6,5]
6169 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3],ymm2[4],ymm1[5,6],ymm2[7],ymm1[8,9],ymm2[10],ymm1[11],ymm2[12],ymm1[13,14],ymm2[15]
6170 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm20 = [2,3,2,3,10,11,10,10]
6171 ; AVX512F-FAST-NEXT:    vpermt2q %zmm0, %zmm20, %zmm1
6172 ; AVX512F-FAST-NEXT:    vpbroadcastq {{.*#+}} ymm11 = [26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31,26,27,28,29,30,31,30,31]
6173 ; AVX512F-FAST-NEXT:    vpshufb %ymm11, %ymm6, %ymm0
6174 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm2 = ymm18[3,2,3,3,7,6,7,7]
6175 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm2[1],ymm0[2],ymm2[3,4],ymm0[5,6,7,8],ymm2[9],ymm0[10],ymm2[11,12],ymm0[13,14,15]
6176 ; AVX512F-FAST-NEXT:    vpshufb %ymm7, %ymm6, %ymm2
6177 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm3 = ymm18[1,1,1,2,5,5,5,6]
6178 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5],ymm3[6],ymm2[7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13],ymm3[14],ymm2[15]
6179 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm18 = [2,3,2,3,10,10,11,10]
6180 ; AVX512F-FAST-NEXT:    vpermt2q %zmm0, %zmm18, %zmm2
6181 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm1, %zmm31, %zmm2
6182 ; AVX512F-FAST-NEXT:    vpbroadcastq 112(%r8), %ymm0
6183 ; AVX512F-FAST-NEXT:    vpbroadcastq 120(%r8), %ymm1
6184 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm12
6185 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm17 = [65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0]
6186 ; AVX512F-FAST-NEXT:    vpternlogq $184, %zmm2, %zmm17, %zmm12
6187 ; AVX512F-FAST-NEXT:    vmovdqa 64(%rsi), %ymm6
6188 ; AVX512F-FAST-NEXT:    vpshufb %ymm8, %ymm6, %ymm0
6189 ; AVX512F-FAST-NEXT:    vmovdqa64 64(%rdi), %ymm23
6190 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm23[1,1,2,2]
6191 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2,3],ymm0[4],ymm1[5],ymm0[6],ymm1[7,8],ymm0[9],ymm1[10,11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
6192 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm1 = ymm23[0,1,2,1,4,5,6,5]
6193 ; AVX512F-FAST-NEXT:    vprolq $16, %ymm6, %ymm2
6194 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3],ymm1[4],ymm2[5,6],ymm1[7],ymm2[8,9],ymm1[10],ymm2[11],ymm1[12],ymm2[13,14],ymm1[15]
6195 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm1 = ymm1[2,3,2,3]
6196 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm22
6197 ; AVX512F-FAST-NEXT:    vmovdqa 64(%rcx), %ymm1
6198 ; AVX512F-FAST-NEXT:    vpshufb %ymm15, %ymm1, %ymm2
6199 ; AVX512F-FAST-NEXT:    vmovdqa 64(%rdx), %ymm3
6200 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm8 = ymm3[3,0,3,0,7,4,7,4]
6201 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm8[0],ymm2[1],ymm8[2],ymm2[3],ymm8[4,5],ymm2[6],ymm8[7,8],ymm2[9],ymm8[10],ymm2[11],ymm8[12,13],ymm2[14],ymm8[15]
6202 ; AVX512F-FAST-NEXT:    vpshufb %ymm7, %ymm1, %ymm8
6203 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm15 = ymm3[1,1,1,2,5,5,5,6]
6204 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm8 = ymm8[0],ymm15[1],ymm8[2,3],ymm15[4],ymm8[5],ymm15[6],ymm8[7,8],ymm15[9],ymm8[10,11],ymm15[12],ymm8[13],ymm15[14],ymm8[15]
6205 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm8[2,3,2,3]
6206 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm8, %zmm2, %zmm8
6207 ; AVX512F-FAST-NEXT:    vpbroadcastq 80(%r8), %ymm2
6208 ; AVX512F-FAST-NEXT:    vpandn %ymm2, %ymm9, %ymm9
6209 ; AVX512F-FAST-NEXT:    vmovdqa 64(%r8), %ymm5
6210 ; AVX512F-FAST-NEXT:    vpshufb %ymm14, %ymm5, %ymm15
6211 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm9, %zmm15, %zmm15
6212 ; AVX512F-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29,30,31,28,29,26,27,30,31,30,31,28,29,30,31,28,29]
6213 ; AVX512F-FAST-NEXT:    # ymm2 = mem[0,1,0,1]
6214 ; AVX512F-FAST-NEXT:    vpshufb %ymm2, %ymm13, %ymm9
6215 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm14 = ymm30[2,3,2,3,6,7,6,7]
6216 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm9 = ymm9[0],ymm14[1],ymm9[2],ymm14[3],ymm9[4,5],ymm14[6],ymm9[7,8],ymm14[9],ymm9[10],ymm14[11],ymm9[12,13],ymm14[14],ymm9[15]
6217 ; AVX512F-FAST-NEXT:    vprolq $16, %ymm13, %ymm13
6218 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm14 = ymm30[0,1,2,1,4,5,6,5]
6219 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm13 = ymm13[0,1],ymm14[2],ymm13[3],ymm14[4],ymm13[5,6],ymm14[7],ymm13[8,9],ymm14[10],ymm13[11],ymm14[12],ymm13[13,14],ymm14[15]
6220 ; AVX512F-FAST-NEXT:    vpermt2q %zmm9, %zmm20, %zmm13
6221 ; AVX512F-FAST-NEXT:    vmovdqu (%rsp), %ymm0 # 32-byte Reload
6222 ; AVX512F-FAST-NEXT:    vpshufb %ymm11, %ymm0, %ymm9
6223 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm14 = ymm27[3,2,3,3,7,6,7,7]
6224 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm9 = ymm9[0],ymm14[1],ymm9[2],ymm14[3,4],ymm9[5,6,7,8],ymm14[9],ymm9[10],ymm14[11,12],ymm9[13,14,15]
6225 ; AVX512F-FAST-NEXT:    vpshufb %ymm7, %ymm0, %ymm7
6226 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm14 = ymm27[1,1,1,2,5,5,5,6]
6227 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm14 = ymm7[0],ymm14[1],ymm7[2,3],ymm14[4],ymm7[5],ymm14[6],ymm7[7,8],ymm14[9],ymm7[10,11],ymm14[12],ymm7[13],ymm14[14],ymm7[15]
6228 ; AVX512F-FAST-NEXT:    vpermt2q %zmm9, %zmm18, %zmm14
6229 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm13, %zmm31, %zmm14
6230 ; AVX512F-FAST-NEXT:    vpbroadcastq 48(%r8), %ymm7
6231 ; AVX512F-FAST-NEXT:    vpbroadcastq 56(%r8), %ymm9
6232 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm9, %zmm7, %zmm7
6233 ; AVX512F-FAST-NEXT:    vpternlogq $184, %zmm14, %zmm17, %zmm7
6234 ; AVX512F-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
6235 ; AVX512F-FAST-NEXT:    vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm9, %xmm9 # 16-byte Folded Reload
6236 ; AVX512F-FAST-NEXT:    # xmm9 = xmm9[0],mem[0],xmm9[1],mem[1],xmm9[2],mem[2],xmm9[3],mem[3]
6237 ; AVX512F-FAST-NEXT:    vpshufb %ymm11, %ymm1, %ymm1
6238 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm0 = ymm3[3,2,3,3,7,6,7,7]
6239 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3,4],ymm1[5,6,7,8],ymm0[9],ymm1[10],ymm0[11,12],ymm1[13,14,15]
6240 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm14 = [4,5,2,3,2,3,0,1,10,11,8,9,4,5,6,7]
6241 ; AVX512F-FAST-NEXT:    vpshufb %xmm14, %xmm9, %xmm1
6242 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm9 = [2,2,3,2,8,9,8,9]
6243 ; AVX512F-FAST-NEXT:    vpermt2q %zmm1, %zmm9, %zmm0
6244 ; AVX512F-FAST-NEXT:    vmovdqa 96(%rdi), %xmm1
6245 ; AVX512F-FAST-NEXT:    vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
6246 ; AVX512F-FAST-NEXT:    # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1],xmm1[2],mem[2],xmm1[3],mem[3]
6247 ; AVX512F-FAST-NEXT:    vpshufb %ymm2, %ymm6, %ymm6
6248 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm2, %ymm17
6249 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm13 = ymm23[2,3,2,3,6,7,6,7]
6250 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm6[0],ymm13[1],ymm6[2],ymm13[3],ymm6[4,5],ymm13[6],ymm6[7,8],ymm13[9],ymm6[10],ymm13[11],ymm6[12,13],ymm13[14],ymm6[15]
6251 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} xmm3 = [0,1,2,3,8,9,10,11,4,5,4,5,6,7,12,13]
6252 ; AVX512F-FAST-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
6253 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm13 = [2,3,2,2,8,9,8,9]
6254 ; AVX512F-FAST-NEXT:    vpermt2q %zmm1, %zmm13, %zmm6
6255 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm1 = [65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535]
6256 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm0, %zmm1, %zmm6
6257 ; AVX512F-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6258 ; AVX512F-FAST-NEXT:    vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload
6259 ; AVX512F-FAST-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
6260 ; AVX512F-FAST-NEXT:    vpshufb %xmm14, %xmm0, %xmm0
6261 ; AVX512F-FAST-NEXT:    vpshufb %ymm11, %ymm4, %ymm4
6262 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm2 = ymm5[0,1,1,1]
6263 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm5 = ymm10[3,2,3,3,7,6,7,7]
6264 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0],ymm5[1],ymm4[2],ymm5[3,4],ymm4[5,6,7,8],ymm5[9],ymm4[10],ymm5[11,12],ymm4[13,14,15]
6265 ; AVX512F-FAST-NEXT:    vpermt2q %zmm0, %zmm9, %zmm4
6266 ; AVX512F-FAST-NEXT:    vpbroadcastq 88(%r8), %ymm0
6267 ; AVX512F-FAST-NEXT:    vpbroadcastq 96(%r8), %ymm5
6268 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm5, %zmm0, %zmm0
6269 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535]
6270 ; AVX512F-FAST-NEXT:    vpternlogq $184, %zmm6, %zmm5, %zmm0
6271 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdi), %xmm6
6272 ; AVX512F-FAST-NEXT:    vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm6, %xmm6 # 16-byte Folded Reload
6273 ; AVX512F-FAST-NEXT:    # xmm6 = xmm6[0],mem[0],xmm6[1],mem[1],xmm6[2],mem[2],xmm6[3],mem[3]
6274 ; AVX512F-FAST-NEXT:    vpshufb %xmm3, %xmm6, %xmm6
6275 ; AVX512F-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
6276 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm17, %ymm9
6277 ; AVX512F-FAST-NEXT:    vpshufb %ymm9, %ymm3, %ymm9
6278 ; AVX512F-FAST-NEXT:    vpermq {{.*#+}} ymm10 = ymm24[0,1,1,1]
6279 ; AVX512F-FAST-NEXT:    vpshufd {{.*#+}} ymm11 = ymm28[2,3,2,3,6,7,6,7]
6280 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm9 = ymm9[0],ymm11[1],ymm9[2],ymm11[3],ymm9[4,5],ymm11[6],ymm9[7,8],ymm11[9],ymm9[10],ymm11[11],ymm9[12,13],ymm11[14],ymm9[15]
6281 ; AVX512F-FAST-NEXT:    vpermt2q %zmm6, %zmm13, %zmm9
6282 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm4, %zmm1, %zmm9
6283 ; AVX512F-FAST-NEXT:    vpbroadcastq 24(%r8), %ymm4
6284 ; AVX512F-FAST-NEXT:    vpbroadcastq 32(%r8), %ymm6
6285 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm6, %zmm4, %zmm4
6286 ; AVX512F-FAST-NEXT:    vpternlogq $184, %zmm9, %zmm5, %zmm4
6287 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0,0,65535,65535,65535,0]
6288 ; AVX512F-FAST-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 # 64-byte Reload
6289 ; AVX512F-FAST-NEXT:    vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm5, %zmm3 # 64-byte Folded Reload
6290 ; AVX512F-FAST-NEXT:    vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm5, %zmm16 # 64-byte Folded Reload
6291 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535]
6292 ; AVX512F-FAST-NEXT:    vmovdqu64 {{[-0-9]+}}(%r{{[sb]}}p), %zmm9 # 64-byte Reload
6293 ; AVX512F-FAST-NEXT:    vpternlogq $248, %zmm5, %zmm3, %zmm9
6294 ; AVX512F-FAST-NEXT:    vpternlogq $248, %zmm5, %zmm16, %zmm29
6295 ; AVX512F-FAST-NEXT:    vpbroadcastq 64(%r8), %ymm5
6296 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm2, %zmm5, %zmm2
6297 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm5 = [65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535]
6298 ; AVX512F-FAST-NEXT:    vpternlogq $184, %zmm19, %zmm5, %zmm2
6299 ; AVX512F-FAST-NEXT:    vpbroadcastq (%r8), %ymm6
6300 ; AVX512F-FAST-NEXT:    vinserti64x4 $1, %ymm10, %zmm6, %zmm6
6301 ; AVX512F-FAST-NEXT:    vpternlogq $184, %zmm21, %zmm5, %zmm6
6302 ; AVX512F-FAST-NEXT:    vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm25 # 64-byte Folded Reload
6303 ; AVX512F-FAST-NEXT:    vpternlogq $226, %zmm22, %zmm1, %zmm8
6304 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm1 = [65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535,0,65535,65535,65535,65535]
6305 ; AVX512F-FAST-NEXT:    vpternlogq $248, %zmm1, %zmm25, %zmm26
6306 ; AVX512F-FAST-NEXT:    vpternlogq $248, %zmm1, %zmm8, %zmm15
6307 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm4, 128(%r9)
6308 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm7, 256(%r9)
6309 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm0, 448(%r9)
6310 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm15, 384(%r9)
6311 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm12, 576(%r9)
6312 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm26, 64(%r9)
6313 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm6, (%r9)
6314 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm2, 320(%r9)
6315 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm29, 192(%r9)
6316 ; AVX512F-FAST-NEXT:    vmovdqa64 %zmm9, 512(%r9)
6317 ; AVX512F-FAST-NEXT:    addq $360, %rsp # imm = 0x168
6318 ; AVX512F-FAST-NEXT:    vzeroupper
6319 ; AVX512F-FAST-NEXT:    retq
6321 ; AVX512BW-LABEL: store_i16_stride5_vf64:
6322 ; AVX512BW:       # %bb.0:
6323 ; AVX512BW-NEXT:    vmovdqa64 (%rdi), %zmm1
6324 ; AVX512BW-NEXT:    vmovdqa64 64(%rdi), %zmm0
6325 ; AVX512BW-NEXT:    vmovdqa64 (%rsi), %zmm4
6326 ; AVX512BW-NEXT:    vmovdqa64 64(%rsi), %zmm11
6327 ; AVX512BW-NEXT:    vmovdqa64 (%rdx), %zmm2
6328 ; AVX512BW-NEXT:    vmovdqa64 64(%rdx), %zmm12
6329 ; AVX512BW-NEXT:    vmovdqa64 (%rcx), %zmm6
6330 ; AVX512BW-NEXT:    vmovdqa64 64(%rcx), %zmm15
6331 ; AVX512BW-NEXT:    vmovdqa64 (%r8), %zmm5
6332 ; AVX512BW-NEXT:    vmovdqa64 64(%r8), %zmm13
6333 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm16 = <u,u,0,32,u,u,u,1,33,u,u,u,2,34,u,u,u,3,35,u,u,u,4,36,u,u,u,5,37,u,u,u>
6334 ; AVX512BW-NEXT:    vmovdqa64 %zmm2, %zmm7
6335 ; AVX512BW-NEXT:    vpermt2w %zmm6, %zmm16, %zmm7
6336 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm17 = <0,32,u,u,u,1,33,u,u,u,2,34,u,u,u,3,35,u,u,u,4,36,u,u,u,5,37,u,u,u,6,38>
6337 ; AVX512BW-NEXT:    vmovdqa64 %zmm1, %zmm3
6338 ; AVX512BW-NEXT:    vpermt2w %zmm4, %zmm17, %zmm3
6339 ; AVX512BW-NEXT:    movl $415641996, %eax # imm = 0x18C6318C
6340 ; AVX512BW-NEXT:    kmovd %eax, %k1
6341 ; AVX512BW-NEXT:    vmovdqu16 %zmm7, %zmm3 {%k1}
6342 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm18 = [0,1,2,3,32,5,6,7,8,33,10,11,12,13,34,15,16,17,18,35,20,21,22,23,36,25,26,27,28,37,30,31]
6343 ; AVX512BW-NEXT:    vpermt2w %zmm5, %zmm18, %zmm3
6344 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm19 = <u,u,26,58,u,u,u,27,59,u,u,u,28,60,u,u,u,29,61,u,u,u,30,62,u,u,u,31,63,u,u,u>
6345 ; AVX512BW-NEXT:    vmovdqa64 %zmm0, %zmm9
6346 ; AVX512BW-NEXT:    vpermt2w %zmm11, %zmm19, %zmm9
6347 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm8 = <25,u,u,u,58,26,u,u,u,59,27,u,u,u,60,28,u,u,u,61,29,u,u,u,62,30,u,u,u,63,31,u>
6348 ; AVX512BW-NEXT:    vmovdqa64 %zmm15, %zmm7
6349 ; AVX512BW-NEXT:    vpermt2w %zmm12, %zmm8, %zmm7
6350 ; AVX512BW-NEXT:    vmovdqu16 %zmm9, %zmm7 {%k1}
6351 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm20 = [0,57,2,3,4,5,58,7,8,9,10,59,12,13,14,15,60,17,18,19,20,61,22,23,24,25,62,27,28,29,30,63]
6352 ; AVX512BW-NEXT:    vpermt2w %zmm13, %zmm20, %zmm7
6353 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm21 = <u,19,51,u,u,u,20,52,u,u,u,21,53,u,u,u,22,54,u,u,u,23,55,u,u,u,24,56,u,u,u,25>
6354 ; AVX512BW-NEXT:    vmovdqa64 %zmm12, %zmm14
6355 ; AVX512BW-NEXT:    vpermt2w %zmm15, %zmm21, %zmm14
6356 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm10 = <19,u,u,u,52,20,u,u,u,53,21,u,u,u,54,22,u,u,u,55,23,u,u,u,56,24,u,u,u,57,25,u>
6357 ; AVX512BW-NEXT:    vmovdqa64 %zmm11, %zmm9
6358 ; AVX512BW-NEXT:    vpermt2w %zmm0, %zmm10, %zmm9
6359 ; AVX512BW-NEXT:    movl $-1939662650, %eax # imm = 0x8C6318C6
6360 ; AVX512BW-NEXT:    kmovd %eax, %k3
6361 ; AVX512BW-NEXT:    vmovdqu16 %zmm14, %zmm9 {%k3}
6362 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm22 = [0,1,2,51,4,5,6,7,52,9,10,11,12,53,14,15,16,17,54,19,20,21,22,55,24,25,26,27,56,29,30,31]
6363 ; AVX512BW-NEXT:    vpermt2w %zmm13, %zmm22, %zmm9
6364 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm23 = <u,u,u,13,45,u,u,u,14,46,u,u,u,15,47,u,u,u,16,48,u,u,u,17,49,u,u,u,18,50,u,u>
6365 ; AVX512BW-NEXT:    vmovdqa64 %zmm12, %zmm24
6366 ; AVX512BW-NEXT:    vpermt2w %zmm15, %zmm23, %zmm24
6367 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm25 = <u,13,45,u,u,u,14,46,u,u,u,15,47,u,u,u,16,48,u,u,u,17,49,u,u,u,18,50,u,u,u,19>
6368 ; AVX512BW-NEXT:    vmovdqa64 %zmm0, %zmm14
6369 ; AVX512BW-NEXT:    vpermt2w %zmm11, %zmm25, %zmm14
6370 ; AVX512BW-NEXT:    movl $831283992, %eax # imm = 0x318C6318
6371 ; AVX512BW-NEXT:    kmovd %eax, %k2
6372 ; AVX512BW-NEXT:    vmovdqu16 %zmm24, %zmm14 {%k2}
6373 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm24 = [44,1,2,3,4,45,6,7,8,9,46,11,12,13,14,47,16,17,18,19,48,21,22,23,24,49,26,27,28,29,50,31]
6374 ; AVX512BW-NEXT:    vpermt2w %zmm13, %zmm24, %zmm14
6375 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm26 = <u,u,u,7,39,u,u,u,8,40,u,u,u,9,41,u,u,u,10,42,u,u,u,11,43,u,u,u,12,44,u,u>
6376 ; AVX512BW-NEXT:    vmovdqa64 %zmm0, %zmm27
6377 ; AVX512BW-NEXT:    vpermt2w %zmm11, %zmm26, %zmm27
6378 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm28 = <6,38,u,u,u,7,39,u,u,u,8,40,u,u,u,9,41,u,u,u,10,42,u,u,u,11,43,u,u,u,12,44>
6379 ; AVX512BW-NEXT:    vmovdqa64 %zmm12, %zmm29
6380 ; AVX512BW-NEXT:    vpermt2w %zmm15, %zmm28, %zmm29
6381 ; AVX512BW-NEXT:    vmovdqu16 %zmm27, %zmm29 {%k2}
6382 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} zmm27 = [0,1,38,3,4,5,6,39,8,9,10,11,40,13,14,15,16,41,18,19,20,21,42,23,24,25,26,43,28,29,30,31]
6383 ; AVX512BW-NEXT:    vpermt2w %zmm13, %zmm27, %zmm29
6384 ; AVX512BW-NEXT:    vpermt2w %zmm15, %zmm16, %zmm12
6385 ; AVX512BW-NEXT:    vpermt2w %zmm11, %zmm17, %zmm0
6386 ; AVX512BW-NEXT:    vmovdqu16 %zmm12, %zmm0 {%k1}
6387 ; AVX512BW-NEXT:    vpermt2w %zmm13, %zmm18, %zmm0
6388 ; AVX512BW-NEXT:    vpermi2w %zmm4, %zmm1, %zmm19
6389 ; AVX512BW-NEXT:    vpermi2w %zmm2, %zmm6, %zmm8
6390 ; AVX512BW-NEXT:    vmovdqu16 %zmm19, %zmm8 {%k1}
6391 ; AVX512BW-NEXT:    vpermt2w %zmm5, %zmm20, %zmm8
6392 ; AVX512BW-NEXT:    vpermi2w %zmm6, %zmm2, %zmm21
6393 ; AVX512BW-NEXT:    vpermi2w %zmm1, %zmm4, %zmm10
6394 ; AVX512BW-NEXT:    vmovdqu16 %zmm21, %zmm10 {%k3}
6395 ; AVX512BW-NEXT:    vpermt2w %zmm5, %zmm22, %zmm10
6396 ; AVX512BW-NEXT:    vpermi2w %zmm6, %zmm2, %zmm23
6397 ; AVX512BW-NEXT:    vpermi2w %zmm4, %zmm1, %zmm25
6398 ; AVX512BW-NEXT:    vmovdqu16 %zmm23, %zmm25 {%k2}
6399 ; AVX512BW-NEXT:    vpermt2w %zmm5, %zmm24, %zmm25
6400 ; AVX512BW-NEXT:    vpermt2w %zmm4, %zmm26, %zmm1
6401 ; AVX512BW-NEXT:    vpermt2w %zmm6, %zmm28, %zmm2
6402 ; AVX512BW-NEXT:    vmovdqu16 %zmm1, %zmm2 {%k2}
6403 ; AVX512BW-NEXT:    vpermt2w %zmm5, %zmm27, %zmm2
6404 ; AVX512BW-NEXT:    vmovdqa64 %zmm2, 64(%r9)
6405 ; AVX512BW-NEXT:    vmovdqa64 %zmm25, 128(%r9)
6406 ; AVX512BW-NEXT:    vmovdqa64 %zmm10, 192(%r9)
6407 ; AVX512BW-NEXT:    vmovdqa64 %zmm8, 256(%r9)
6408 ; AVX512BW-NEXT:    vmovdqa64 %zmm0, 320(%r9)
6409 ; AVX512BW-NEXT:    vmovdqa64 %zmm29, 384(%r9)
6410 ; AVX512BW-NEXT:    vmovdqa64 %zmm14, 448(%r9)
6411 ; AVX512BW-NEXT:    vmovdqa64 %zmm9, 512(%r9)
6412 ; AVX512BW-NEXT:    vmovdqa64 %zmm7, 576(%r9)
6413 ; AVX512BW-NEXT:    vmovdqa64 %zmm3, (%r9)
6414 ; AVX512BW-NEXT:    vzeroupper
6415 ; AVX512BW-NEXT:    retq
6416   %in.vec0 = load <64 x i16>, ptr %in.vecptr0, align 64
6417   %in.vec1 = load <64 x i16>, ptr %in.vecptr1, align 64
6418   %in.vec2 = load <64 x i16>, ptr %in.vecptr2, align 64
6419   %in.vec3 = load <64 x i16>, ptr %in.vecptr3, align 64
6420   %in.vec4 = load <64 x i16>, ptr %in.vecptr4, align 64
6421   %1 = shufflevector <64 x i16> %in.vec0, <64 x i16> %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>
6422   %2 = shufflevector <64 x i16> %in.vec2, <64 x i16> %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>
6423   %3 = shufflevector <128 x i16> %1, <128 x i16> %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>
6424   %4 = shufflevector <64 x i16> %in.vec4, <64 x i16> 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>
6425   %5 = shufflevector <256 x i16> %3, <256 x i16> %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>
6426   %interleaved.vec = shufflevector <320 x i16> %5, <320 x i16> 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>
6427   store <320 x i16> %interleaved.vec, ptr %out.vec, align 64
6428   ret void
6430 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
6431 ; AVX: {{.*}}
6432 ; AVX1: {{.*}}
6433 ; AVX2: {{.*}}
6434 ; AVX2-ONLY: {{.*}}
6435 ; AVX512: {{.*}}
6436 ; AVX512-FAST: {{.*}}
6437 ; AVX512-SLOW: {{.*}}
6438 ; AVX512BW-FAST: {{.*}}
6439 ; AVX512BW-ONLY-FAST: {{.*}}
6440 ; AVX512BW-ONLY-SLOW: {{.*}}
6441 ; AVX512BW-SLOW: {{.*}}
6442 ; AVX512DQ-FAST: {{.*}}
6443 ; AVX512DQ-SLOW: {{.*}}
6444 ; AVX512DQBW-FAST: {{.*}}
6445 ; AVX512DQBW-SLOW: {{.*}}
6446 ; AVX512F-ONLY-FAST: {{.*}}
6447 ; AVX512F-ONLY-SLOW: {{.*}}
6448 ; FALLBACK0: {{.*}}
6449 ; FALLBACK1: {{.*}}
6450 ; FALLBACK10: {{.*}}
6451 ; FALLBACK11: {{.*}}
6452 ; FALLBACK12: {{.*}}
6453 ; FALLBACK2: {{.*}}
6454 ; FALLBACK3: {{.*}}
6455 ; FALLBACK4: {{.*}}
6456 ; FALLBACK5: {{.*}}
6457 ; FALLBACK6: {{.*}}
6458 ; FALLBACK7: {{.*}}
6459 ; FALLBACK8: {{.*}}
6460 ; FALLBACK9: {{.*}}