Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / vector-interleaved-load-i8-stride-6.ll
blob9ec0e2f036e85c5b1ec074e5f900e7dfe6917dfb
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 loads.
18 define void @load_i8_stride6_vf2(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5) nounwind {
19 ; SSE-LABEL: load_i8_stride6_vf2:
20 ; SSE:       # %bb.0:
21 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
22 ; SSE-NEXT:    movdqa (%rdi), %xmm1
23 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]
24 ; SSE-NEXT:    pand %xmm1, %xmm3
25 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm3[0,3,2,3,4,5,6,7]
26 ; SSE-NEXT:    packuswb %xmm2, %xmm2
27 ; SSE-NEXT:    pxor %xmm4, %xmm4
28 ; SSE-NEXT:    movdqa %xmm1, %xmm0
29 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
30 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[0,3,2,3]
31 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,3,2,3,4,5,6,7]
32 ; SSE-NEXT:    packuswb %xmm5, %xmm5
33 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm3[0,2,2,3]
34 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[1,2,2,3,4,5,6,7]
35 ; SSE-NEXT:    packuswb %xmm6, %xmm6
36 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm4[8],xmm1[9],xmm4[9],xmm1[10],xmm4[10],xmm1[11],xmm4[11],xmm1[12],xmm4[12],xmm1[13],xmm4[13],xmm1[14],xmm4[14],xmm1[15],xmm4[15]
37 ; SSE-NEXT:    movdqa %xmm0, %xmm4
38 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3]
39 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[3,1,2,3]
40 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,3,4,5,6,7]
41 ; SSE-NEXT:    packuswb %xmm4, %xmm4
42 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,1,2,3]
43 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[2,1,2,3,4,5,6,7]
44 ; SSE-NEXT:    packuswb %xmm3, %xmm3
45 ; SSE-NEXT:    psrlq $48, %xmm1
46 ; SSE-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
47 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
48 ; SSE-NEXT:    packuswb %xmm0, %xmm0
49 ; SSE-NEXT:    movd %xmm2, %edi
50 ; SSE-NEXT:    movw %di, (%rsi)
51 ; SSE-NEXT:    movd %xmm5, %esi
52 ; SSE-NEXT:    movw %si, (%rdx)
53 ; SSE-NEXT:    movd %xmm6, %edx
54 ; SSE-NEXT:    movw %dx, (%rcx)
55 ; SSE-NEXT:    movd %xmm4, %ecx
56 ; SSE-NEXT:    movw %cx, (%r8)
57 ; SSE-NEXT:    movd %xmm3, %ecx
58 ; SSE-NEXT:    movw %cx, (%r9)
59 ; SSE-NEXT:    movd %xmm0, %ecx
60 ; SSE-NEXT:    movw %cx, (%rax)
61 ; SSE-NEXT:    retq
63 ; AVX-LABEL: load_i8_stride6_vf2:
64 ; AVX:       # %bb.0:
65 ; AVX-NEXT:    movq {{[0-9]+}}(%rsp), %rax
66 ; AVX-NEXT:    vmovdqa (%rdi), %xmm0
67 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
68 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
69 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
70 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[3,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
71 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[4,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
72 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[5,11,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
73 ; AVX-NEXT:    vpextrw $0, %xmm1, (%rsi)
74 ; AVX-NEXT:    vpextrw $0, %xmm2, (%rdx)
75 ; AVX-NEXT:    vpextrw $0, %xmm3, (%rcx)
76 ; AVX-NEXT:    vpextrw $0, %xmm4, (%r8)
77 ; AVX-NEXT:    vpextrw $0, %xmm5, (%r9)
78 ; AVX-NEXT:    vpextrw $0, %xmm0, (%rax)
79 ; AVX-NEXT:    retq
80   %wide.vec = load <12 x i8>, ptr %in.vec, align 64
81   %strided.vec0 = shufflevector <12 x i8> %wide.vec, <12 x i8> poison, <2 x i32> <i32 0, i32 6>
82   %strided.vec1 = shufflevector <12 x i8> %wide.vec, <12 x i8> poison, <2 x i32> <i32 1, i32 7>
83   %strided.vec2 = shufflevector <12 x i8> %wide.vec, <12 x i8> poison, <2 x i32> <i32 2, i32 8>
84   %strided.vec3 = shufflevector <12 x i8> %wide.vec, <12 x i8> poison, <2 x i32> <i32 3, i32 9>
85   %strided.vec4 = shufflevector <12 x i8> %wide.vec, <12 x i8> poison, <2 x i32> <i32 4, i32 10>
86   %strided.vec5 = shufflevector <12 x i8> %wide.vec, <12 x i8> poison, <2 x i32> <i32 5, i32 11>
87   store <2 x i8> %strided.vec0, ptr %out.vec0, align 64
88   store <2 x i8> %strided.vec1, ptr %out.vec1, align 64
89   store <2 x i8> %strided.vec2, ptr %out.vec2, align 64
90   store <2 x i8> %strided.vec3, ptr %out.vec3, align 64
91   store <2 x i8> %strided.vec4, ptr %out.vec4, align 64
92   store <2 x i8> %strided.vec5, ptr %out.vec5, align 64
93   ret void
96 define void @load_i8_stride6_vf4(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5) nounwind {
97 ; SSE-LABEL: load_i8_stride6_vf4:
98 ; SSE:       # %bb.0:
99 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
100 ; SSE-NEXT:    movdqa (%rdi), %xmm5
101 ; SSE-NEXT:    movdqa 16(%rdi), %xmm1
102 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,65535,65535]
103 ; SSE-NEXT:    movdqa %xmm5, %xmm2
104 ; SSE-NEXT:    pand %xmm0, %xmm2
105 ; SSE-NEXT:    pandn %xmm1, %xmm0
106 ; SSE-NEXT:    por %xmm2, %xmm0
107 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [255,255,255,255,255,255,255,255]
108 ; SSE-NEXT:    pand %xmm2, %xmm0
109 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
110 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
111 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
112 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,1,4,5,6,7]
113 ; SSE-NEXT:    packuswb %xmm0, %xmm0
114 ; SSE-NEXT:    pxor %xmm3, %xmm3
115 ; SSE-NEXT:    movdqa %xmm5, %xmm7
116 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255]
117 ; SSE-NEXT:    pandn %xmm1, %xmm4
118 ; SSE-NEXT:    movdqa %xmm1, %xmm6
119 ; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[1,0],xmm5[0,0]
120 ; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[2,0],xmm5[2,3]
121 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [65535,65535,0,65535,65535,0,65535,65535]
122 ; SSE-NEXT:    pand %xmm8, %xmm1
123 ; SSE-NEXT:    pandn %xmm5, %xmm8
124 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm3[8],xmm5[9],xmm3[9],xmm5[10],xmm3[10],xmm5[11],xmm3[11],xmm5[12],xmm3[12],xmm5[13],xmm3[13],xmm5[14],xmm3[14],xmm5[15],xmm3[15]
125 ; SSE-NEXT:    movdqa %xmm5, %xmm9
126 ; SSE-NEXT:    psrld $16, %xmm9
127 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3],xmm7[4],xmm3[4],xmm7[5],xmm3[5],xmm7[6],xmm3[6],xmm7[7],xmm3[7]
128 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[0,1,0,3]
129 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,7,6,7]
130 ; SSE-NEXT:    punpckhdq {{.*#+}} xmm7 = xmm7[2],xmm9[2],xmm7[3],xmm9[3]
131 ; SSE-NEXT:    packuswb %xmm7, %xmm7
132 ; SSE-NEXT:    por %xmm7, %xmm4
133 ; SSE-NEXT:    movaps %xmm6, %xmm7
134 ; SSE-NEXT:    andps %xmm2, %xmm7
135 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[2,1,2,3,4,5,6,7]
136 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,7,6,7]
137 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[0,2,2,3]
138 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[1,2,3,0,4,5,6,7]
139 ; SSE-NEXT:    packuswb %xmm7, %xmm7
140 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm3[0],xmm6[1],xmm3[1],xmm6[2],xmm3[2],xmm6[3],xmm3[3],xmm6[4],xmm3[4],xmm6[5],xmm3[5],xmm6[6],xmm3[6],xmm6[7],xmm3[7]
141 ; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[1,2],xmm5[0,3]
142 ; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[2,0,1,3]
143 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[3,1,2,3,4,5,6,7]
144 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,7,5,6,7]
145 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,2,2,3]
146 ; SSE-NEXT:    packuswb %xmm6, %xmm6
147 ; SSE-NEXT:    por %xmm1, %xmm8
148 ; SSE-NEXT:    pand %xmm8, %xmm2
149 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[3,1,2,0]
150 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
151 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]
152 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,0,3,4,5,6,7]
153 ; SSE-NEXT:    packuswb %xmm1, %xmm1
154 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3],xmm8[4],xmm3[4],xmm8[5],xmm3[5],xmm8[6],xmm3[6],xmm8[7],xmm3[7]
155 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[1,0],xmm8[0,0]
156 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[2,0],xmm8[2,3]
157 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm5[3,1,2,3,4,5,6,7]
158 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,5,6,7]
159 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
160 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[3,0,1,2,4,5,6,7]
161 ; SSE-NEXT:    packuswb %xmm2, %xmm2
162 ; SSE-NEXT:    movd %xmm0, (%rsi)
163 ; SSE-NEXT:    movd %xmm4, (%rdx)
164 ; SSE-NEXT:    movd %xmm7, (%rcx)
165 ; SSE-NEXT:    movd %xmm6, (%r8)
166 ; SSE-NEXT:    movd %xmm1, (%r9)
167 ; SSE-NEXT:    movd %xmm2, (%rax)
168 ; SSE-NEXT:    retq
170 ; AVX-LABEL: load_i8_stride6_vf4:
171 ; AVX:       # %bb.0:
172 ; AVX-NEXT:    movq {{[0-9]+}}(%rsp), %rax
173 ; AVX-NEXT:    vmovdqa (%rdi), %xmm0
174 ; AVX-NEXT:    vmovdqa 16(%rdi), %xmm1
175 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm1[2,u,u,u,u,u,u,u,u,u,u,u,u]
176 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[0,6,12],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
177 ; AVX-NEXT:    vpor %xmm2, %xmm3, %xmm2
178 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm1[3,u,u,u,u,u,u,u,u,u,u,u,u]
179 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[1,7,13],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
180 ; AVX-NEXT:    vpor %xmm3, %xmm4, %xmm3
181 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm1[4,u,u,u,u,u,u,u,u,u,u,u,u]
182 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[2,8,14],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
183 ; AVX-NEXT:    vpor %xmm4, %xmm5, %xmm4
184 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm1[5,u,u,u,u,u,u,u,u,u,u,u,u]
185 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm0[3,9,15],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
186 ; AVX-NEXT:    vpor %xmm5, %xmm6, %xmm5
187 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[0,6,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
188 ; AVX-NEXT:    vpshufb {{.*#+}} xmm7 = xmm0[4,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
189 ; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]
190 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[1,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
191 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[5,11,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
192 ; AVX-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
193 ; AVX-NEXT:    vmovd %xmm2, (%rsi)
194 ; AVX-NEXT:    vmovd %xmm3, (%rdx)
195 ; AVX-NEXT:    vmovd %xmm4, (%rcx)
196 ; AVX-NEXT:    vmovd %xmm5, (%r8)
197 ; AVX-NEXT:    vmovd %xmm6, (%r9)
198 ; AVX-NEXT:    vmovd %xmm0, (%rax)
199 ; AVX-NEXT:    retq
200   %wide.vec = load <24 x i8>, ptr %in.vec, align 64
201   %strided.vec0 = shufflevector <24 x i8> %wide.vec, <24 x i8> poison, <4 x i32> <i32 0, i32 6, i32 12, i32 18>
202   %strided.vec1 = shufflevector <24 x i8> %wide.vec, <24 x i8> poison, <4 x i32> <i32 1, i32 7, i32 13, i32 19>
203   %strided.vec2 = shufflevector <24 x i8> %wide.vec, <24 x i8> poison, <4 x i32> <i32 2, i32 8, i32 14, i32 20>
204   %strided.vec3 = shufflevector <24 x i8> %wide.vec, <24 x i8> poison, <4 x i32> <i32 3, i32 9, i32 15, i32 21>
205   %strided.vec4 = shufflevector <24 x i8> %wide.vec, <24 x i8> poison, <4 x i32> <i32 4, i32 10, i32 16, i32 22>
206   %strided.vec5 = shufflevector <24 x i8> %wide.vec, <24 x i8> poison, <4 x i32> <i32 5, i32 11, i32 17, i32 23>
207   store <4 x i8> %strided.vec0, ptr %out.vec0, align 64
208   store <4 x i8> %strided.vec1, ptr %out.vec1, align 64
209   store <4 x i8> %strided.vec2, ptr %out.vec2, align 64
210   store <4 x i8> %strided.vec3, ptr %out.vec3, align 64
211   store <4 x i8> %strided.vec4, ptr %out.vec4, align 64
212   store <4 x i8> %strided.vec5, ptr %out.vec5, align 64
213   ret void
216 define void @load_i8_stride6_vf8(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5) nounwind {
217 ; SSE-LABEL: load_i8_stride6_vf8:
218 ; SSE:       # %bb.0:
219 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
220 ; SSE-NEXT:    movdqa (%rdi), %xmm4
221 ; SSE-NEXT:    movdqa 16(%rdi), %xmm3
222 ; SSE-NEXT:    movdqa 32(%rdi), %xmm0
223 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [65535,0,65535,65535,0,65535,65535,0]
224 ; SSE-NEXT:    movdqa %xmm4, %xmm1
225 ; SSE-NEXT:    pand %xmm8, %xmm1
226 ; SSE-NEXT:    pandn %xmm3, %xmm8
227 ; SSE-NEXT:    por %xmm1, %xmm8
228 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255]
229 ; SSE-NEXT:    movdqa %xmm8, %xmm1
230 ; SSE-NEXT:    pand %xmm5, %xmm1
231 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
232 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
233 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
234 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
235 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm1[0,1,2,3,4,7,6,7]
236 ; SSE-NEXT:    packuswb %xmm6, %xmm6
237 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,65535,65535,65535,65535]
238 ; SSE-NEXT:    pand %xmm1, %xmm6
239 ; SSE-NEXT:    movdqa %xmm0, %xmm7
240 ; SSE-NEXT:    pand %xmm5, %xmm7
241 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm7[0,1,2,1]
242 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm2[0,1,2,3,4,5,6,5]
243 ; SSE-NEXT:    packuswb %xmm9, %xmm9
244 ; SSE-NEXT:    movdqa %xmm1, %xmm2
245 ; SSE-NEXT:    pandn %xmm9, %xmm2
246 ; SSE-NEXT:    por %xmm6, %xmm2
247 ; SSE-NEXT:    pxor %xmm6, %xmm6
248 ; SSE-NEXT:    movdqa %xmm8, %xmm9
249 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm9 = xmm9[8],xmm6[8],xmm9[9],xmm6[9],xmm9[10],xmm6[10],xmm9[11],xmm6[11],xmm9[12],xmm6[12],xmm9[13],xmm6[13],xmm9[14],xmm6[14],xmm9[15],xmm6[15]
250 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[2,1,0,3]
251 ; SSE-NEXT:    pshuflw {{.*#+}} xmm9 = xmm9[1,1,1,1,4,5,6,7]
252 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,5,7,6,7]
253 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,0,65535,0,0,65535,65535]
254 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3],xmm8[4],xmm6[4],xmm8[5],xmm6[5],xmm8[6],xmm6[6],xmm8[7],xmm6[7]
255 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[3,1,2,3,4,5,6,7]
256 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,3,2,3]
257 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[1,3,2,0,4,5,6,7]
258 ; SSE-NEXT:    pand %xmm10, %xmm8
259 ; SSE-NEXT:    pandn %xmm9, %xmm10
260 ; SSE-NEXT:    por %xmm8, %xmm10
261 ; SSE-NEXT:    packuswb %xmm10, %xmm10
262 ; SSE-NEXT:    pand %xmm1, %xmm10
263 ; SSE-NEXT:    movdqa %xmm0, %xmm8
264 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm6[8],xmm8[9],xmm6[9],xmm8[10],xmm6[10],xmm8[11],xmm6[11],xmm8[12],xmm6[12],xmm8[13],xmm6[13],xmm8[14],xmm6[14],xmm8[15],xmm6[15]
265 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1],xmm0[2],xmm6[2],xmm0[3],xmm6[3],xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]
266 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm0[2,2,3,3]
267 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3]
268 ; SSE-NEXT:    packuswb %xmm9, %xmm9
269 ; SSE-NEXT:    pandn %xmm9, %xmm1
270 ; SSE-NEXT:    por %xmm10, %xmm1
271 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [65535,65535,0,65535,65535,0,65535,65535]
272 ; SSE-NEXT:    movdqa %xmm11, %xmm9
273 ; SSE-NEXT:    pandn %xmm3, %xmm9
274 ; SSE-NEXT:    movdqa %xmm4, %xmm12
275 ; SSE-NEXT:    pand %xmm11, %xmm12
276 ; SSE-NEXT:    por %xmm9, %xmm12
277 ; SSE-NEXT:    movdqa %xmm12, %xmm9
278 ; SSE-NEXT:    pand %xmm5, %xmm9
279 ; SSE-NEXT:    pshuflw {{.*#+}} xmm9 = xmm9[2,1,2,3,4,5,6,7]
280 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5,4,7]
281 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[0,3,2,3]
282 ; SSE-NEXT:    pshuflw {{.*#+}} xmm9 = xmm9[1,2,3,0,4,5,6,7]
283 ; SSE-NEXT:    pshufhw {{.*#+}} xmm13 = xmm9[0,1,2,3,5,5,5,5]
284 ; SSE-NEXT:    packuswb %xmm13, %xmm13
285 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [255,255,255,255,255,0,0,0,255,255,255,255,255,255,255,255]
286 ; SSE-NEXT:    pand %xmm9, %xmm13
287 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm7[0,3,2,3,4,5,6,7]
288 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,1,0,3]
289 ; SSE-NEXT:    pshufhw {{.*#+}} xmm14 = xmm10[0,1,2,3,4,4,5,6]
290 ; SSE-NEXT:    packuswb %xmm14, %xmm14
291 ; SSE-NEXT:    movdqa %xmm9, %xmm10
292 ; SSE-NEXT:    pandn %xmm14, %xmm10
293 ; SSE-NEXT:    por %xmm13, %xmm10
294 ; SSE-NEXT:    movdqa %xmm12, %xmm13
295 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm13 = xmm13[0],xmm6[0],xmm13[1],xmm6[1],xmm13[2],xmm6[2],xmm13[3],xmm6[3],xmm13[4],xmm6[4],xmm13[5],xmm6[5],xmm13[6],xmm6[6],xmm13[7],xmm6[7]
296 ; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm13[2,1,2,3]
297 ; SSE-NEXT:    pshuflw {{.*#+}} xmm13 = xmm13[3,1,2,1,4,5,6,7]
298 ; SSE-NEXT:    movdqa {{.*#+}} xmm14 = [0,65535,65535,0,65535,65535,65535,65535]
299 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm12 = xmm12[8],xmm6[8],xmm12[9],xmm6[9],xmm12[10],xmm6[10],xmm12[11],xmm6[11],xmm12[12],xmm6[12],xmm12[13],xmm6[13],xmm12[14],xmm6[14],xmm12[15],xmm6[15]
300 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm12[0,3,2,1]
301 ; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm12[0,1,3,3,4,5,6,7]
302 ; SSE-NEXT:    pshufhw {{.*#+}} xmm12 = xmm12[0,1,2,3,7,7,7,7]
303 ; SSE-NEXT:    pand %xmm14, %xmm12
304 ; SSE-NEXT:    pandn %xmm13, %xmm14
305 ; SSE-NEXT:    por %xmm12, %xmm14
306 ; SSE-NEXT:    packuswb %xmm14, %xmm14
307 ; SSE-NEXT:    pand %xmm9, %xmm14
308 ; SSE-NEXT:    movdqa %xmm8, %xmm12
309 ; SSE-NEXT:    shufps {{.*#+}} xmm12 = xmm12[2,0],xmm0[3,0]
310 ; SSE-NEXT:    movaps %xmm0, %xmm13
311 ; SSE-NEXT:    shufps {{.*#+}} xmm13 = xmm13[0,1],xmm12[0,2]
312 ; SSE-NEXT:    pshufhw {{.*#+}} xmm12 = xmm13[0,1,2,3,7,5,6,7]
313 ; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm12[0,1,0,2]
314 ; SSE-NEXT:    packuswb %xmm13, %xmm13
315 ; SSE-NEXT:    movdqa %xmm9, %xmm12
316 ; SSE-NEXT:    pandn %xmm13, %xmm12
317 ; SSE-NEXT:    por %xmm14, %xmm12
318 ; SSE-NEXT:    pand %xmm11, %xmm3
319 ; SSE-NEXT:    pandn %xmm4, %xmm11
320 ; SSE-NEXT:    por %xmm3, %xmm11
321 ; SSE-NEXT:    pand %xmm11, %xmm5
322 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm5[3,1,2,0]
323 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,6,5,6,7]
324 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,1,0,3]
325 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm3[2,1,0,3,4,5,6,7]
326 ; SSE-NEXT:    packuswb %xmm4, %xmm4
327 ; SSE-NEXT:    pand %xmm9, %xmm4
328 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm7[0,1,2,3,4,7,6,7]
329 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm3[0,1,0,2]
330 ; SSE-NEXT:    packuswb %xmm5, %xmm5
331 ; SSE-NEXT:    movdqa %xmm9, %xmm3
332 ; SSE-NEXT:    pandn %xmm5, %xmm3
333 ; SSE-NEXT:    por %xmm4, %xmm3
334 ; SSE-NEXT:    movdqa %xmm11, %xmm4
335 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm6[8],xmm4[9],xmm6[9],xmm4[10],xmm6[10],xmm4[11],xmm6[11],xmm4[12],xmm6[12],xmm4[13],xmm6[13],xmm4[14],xmm6[14],xmm4[15],xmm6[15]
336 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[1,1,2,3]
337 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,5,5,5]
338 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,0,65535,65535,0,65535,65535,65535]
339 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm6[0],xmm11[1],xmm6[1],xmm11[2],xmm6[2],xmm11[3],xmm6[3],xmm11[4],xmm6[4],xmm11[5],xmm6[5],xmm11[6],xmm6[6],xmm11[7],xmm6[7]
340 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm11[0,1,2,3,7,5,6,7]
341 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,2,2,3]
342 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[3,1,1,2,4,5,6,7]
343 ; SSE-NEXT:    pand %xmm5, %xmm6
344 ; SSE-NEXT:    pandn %xmm4, %xmm5
345 ; SSE-NEXT:    por %xmm6, %xmm5
346 ; SSE-NEXT:    packuswb %xmm5, %xmm5
347 ; SSE-NEXT:    pand %xmm9, %xmm5
348 ; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,0],xmm8[0,0]
349 ; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[2,0],xmm8[2,3]
350 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
351 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
352 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,7]
353 ; SSE-NEXT:    packuswb %xmm0, %xmm0
354 ; SSE-NEXT:    pandn %xmm0, %xmm9
355 ; SSE-NEXT:    por %xmm5, %xmm9
356 ; SSE-NEXT:    movq %xmm2, (%rsi)
357 ; SSE-NEXT:    movq %xmm1, (%rdx)
358 ; SSE-NEXT:    movq %xmm10, (%rcx)
359 ; SSE-NEXT:    movq %xmm12, (%r8)
360 ; SSE-NEXT:    movq %xmm3, (%r9)
361 ; SSE-NEXT:    movq %xmm9, (%rax)
362 ; SSE-NEXT:    retq
364 ; AVX1-ONLY-LABEL: load_i8_stride6_vf8:
365 ; AVX1-ONLY:       # %bb.0:
366 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
367 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm1
368 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm2
369 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm0
370 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm2[2,8,14,u,u,u,u,u,u,u,u,u,u]
371 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm1[0,6,12],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u]
372 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
373 ; AVX1-ONLY-NEXT:    vpxor %xmm4, %xmm4, %xmm4
374 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1,2],xmm4[3],xmm3[4,5,6,7]
375 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,zero,zero,zero,xmm0[4,10,u,u,u,u,u,u,u,u]
376 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm3, %xmm3
377 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm2[3,9,15,u,u,u,u,u,u,u,u,u,u]
378 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[1,7,13],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u]
379 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm6, %xmm5
380 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm5[0,1,2],xmm4[3],xmm5[4,5,6,7]
381 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,zero,zero,zero,xmm0[5,11,u,u,u,u,u,u,u,u]
382 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm4, %xmm4
383 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm2[4,10,u,u,u,u,u,u,u,u,u,u,u]
384 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[2,8,14],zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
385 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm6, %xmm5
386 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [0,1,2,3,4,128,128,128,0,1,2,3,4,128,128,128]
387 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
388 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm5, %xmm5
389 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,zero,zero,xmm0[0,6,12,u,u,u,u,u,u,u,u]
390 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm5, %xmm5
391 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm2[5,11,u,u,u,u,u,u,u,u,u,u,u]
392 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[3,9,15],zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
393 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm7
394 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm7, %xmm7
395 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,zero,zero,zero,xmm0[1,7,13,u,u,u,u,u,u,u,u]
396 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm7
397 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[4,10],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
398 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,xmm2[0,6,12,u,u,u,u,u,u,u,u,u,u,u]
399 ; AVX1-ONLY-NEXT:    vpor %xmm8, %xmm9, %xmm8
400 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm8, %xmm8
401 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,zero,zero,zero,xmm0[2,8,14,u,u,u,u,u,u,u,u]
402 ; AVX1-ONLY-NEXT:    vpor %xmm9, %xmm8, %xmm8
403 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[5,11],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
404 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[1,7,13,u,u,u,u,u,u,u,u,u,u,u]
405 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
406 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
407 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,zero,zero,zero,xmm0[3,9,15,u,u,u,u,u,u,u,u]
408 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
409 ; AVX1-ONLY-NEXT:    vmovq %xmm3, (%rsi)
410 ; AVX1-ONLY-NEXT:    vmovq %xmm4, (%rdx)
411 ; AVX1-ONLY-NEXT:    vmovq %xmm5, (%rcx)
412 ; AVX1-ONLY-NEXT:    vmovq %xmm7, (%r8)
413 ; AVX1-ONLY-NEXT:    vmovq %xmm8, (%r9)
414 ; AVX1-ONLY-NEXT:    vmovq %xmm0, (%rax)
415 ; AVX1-ONLY-NEXT:    retq
417 ; AVX2-LABEL: load_i8_stride6_vf8:
418 ; AVX2:       # %bb.0:
419 ; AVX2-NEXT:    movq {{[0-9]+}}(%rsp), %rax
420 ; AVX2-NEXT:    vmovdqa (%rdi), %ymm0
421 ; AVX2-NEXT:    vmovdqa 32(%rdi), %ymm1
422 ; AVX2-NEXT:    vpblendw {{.*#+}} ymm2 = ymm0[0,1],ymm1[2],ymm0[3,4],ymm1[5],ymm0[6,7,8,9],ymm1[10],ymm0[11,12],ymm1[13],ymm0[14,15]
423 ; AVX2-NEXT:    vextracti128 $1, %ymm2, %xmm3
424 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm3[2,8,14],zero,zero,xmm3[u,u,u,u,u,u,u,u]
425 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm5 = xmm2[0,6,12],zero,zero,zero,xmm2[4,10,u,u,u,u,u,u,u,u]
426 ; AVX2-NEXT:    vpor %xmm4, %xmm5, %xmm4
427 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[3,9,15],zero,zero,xmm3[u,u,u,u,u,u,u,u]
428 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[1,7,13],zero,zero,zero,xmm2[5,11,u,u,u,u,u,u,u,u]
429 ; AVX2-NEXT:    vpor %xmm3, %xmm2, %xmm2
430 ; AVX2-NEXT:    vpblendw {{.*#+}} ymm3 = ymm1[0],ymm0[1,2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7],ymm1[8],ymm0[9,10],ymm1[11],ymm0[12,13],ymm1[14],ymm0[15]
431 ; AVX2-NEXT:    vextracti128 $1, %ymm3, %xmm5
432 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm5[4,10],zero,zero,zero,xmm5[u,u,u,u,u,u,u,u]
433 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm7 = xmm3[2,8,14],zero,zero,xmm3[0,6,12,u,u,u,u,u,u,u,u]
434 ; AVX2-NEXT:    vpor %xmm6, %xmm7, %xmm6
435 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm5[5,11],zero,zero,zero,xmm5[u,u,u,u,u,u,u,u]
436 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[3,9,15],zero,zero,xmm3[1,7,13,u,u,u,u,u,u,u,u]
437 ; AVX2-NEXT:    vpor %xmm5, %xmm3, %xmm3
438 ; AVX2-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2,3],ymm1[4],ymm0[5,6],ymm1[7],ymm0[8],ymm1[9],ymm0[10,11],ymm1[12],ymm0[13,14],ymm1[15]
439 ; AVX2-NEXT:    vextracti128 $1, %ymm0, %xmm1
440 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm1[0,6,12],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u]
441 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm7 = xmm0[4,10],zero,zero,zero,xmm0[2,8,14,u,u,u,u,u,u,u,u]
442 ; AVX2-NEXT:    vpor %xmm5, %xmm7, %xmm5
443 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,xmm1[1,7,13],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u]
444 ; AVX2-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[5,11],zero,zero,zero,xmm0[3,9,15,u,u,u,u,u,u,u,u]
445 ; AVX2-NEXT:    vpor %xmm1, %xmm0, %xmm0
446 ; AVX2-NEXT:    vmovq %xmm4, (%rsi)
447 ; AVX2-NEXT:    vmovq %xmm2, (%rdx)
448 ; AVX2-NEXT:    vmovq %xmm6, (%rcx)
449 ; AVX2-NEXT:    vmovq %xmm3, (%r8)
450 ; AVX2-NEXT:    vmovq %xmm5, (%r9)
451 ; AVX2-NEXT:    vmovq %xmm0, (%rax)
452 ; AVX2-NEXT:    vzeroupper
453 ; AVX2-NEXT:    retq
454   %wide.vec = load <48 x i8>, ptr %in.vec, align 64
455   %strided.vec0 = shufflevector <48 x i8> %wide.vec, <48 x i8> poison, <8 x i32> <i32 0, i32 6, i32 12, i32 18, i32 24, i32 30, i32 36, i32 42>
456   %strided.vec1 = shufflevector <48 x i8> %wide.vec, <48 x i8> poison, <8 x i32> <i32 1, i32 7, i32 13, i32 19, i32 25, i32 31, i32 37, i32 43>
457   %strided.vec2 = shufflevector <48 x i8> %wide.vec, <48 x i8> poison, <8 x i32> <i32 2, i32 8, i32 14, i32 20, i32 26, i32 32, i32 38, i32 44>
458   %strided.vec3 = shufflevector <48 x i8> %wide.vec, <48 x i8> poison, <8 x i32> <i32 3, i32 9, i32 15, i32 21, i32 27, i32 33, i32 39, i32 45>
459   %strided.vec4 = shufflevector <48 x i8> %wide.vec, <48 x i8> poison, <8 x i32> <i32 4, i32 10, i32 16, i32 22, i32 28, i32 34, i32 40, i32 46>
460   %strided.vec5 = shufflevector <48 x i8> %wide.vec, <48 x i8> poison, <8 x i32> <i32 5, i32 11, i32 17, i32 23, i32 29, i32 35, i32 41, i32 47>
461   store <8 x i8> %strided.vec0, ptr %out.vec0, align 64
462   store <8 x i8> %strided.vec1, ptr %out.vec1, align 64
463   store <8 x i8> %strided.vec2, ptr %out.vec2, align 64
464   store <8 x i8> %strided.vec3, ptr %out.vec3, align 64
465   store <8 x i8> %strided.vec4, ptr %out.vec4, align 64
466   store <8 x i8> %strided.vec5, ptr %out.vec5, align 64
467   ret void
470 define void @load_i8_stride6_vf16(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5) nounwind {
471 ; SSE-LABEL: load_i8_stride6_vf16:
472 ; SSE:       # %bb.0:
473 ; SSE-NEXT:    movdqa 64(%rdi), %xmm11
474 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
475 ; SSE-NEXT:    movdqa (%rdi), %xmm5
476 ; SSE-NEXT:    movdqa 16(%rdi), %xmm2
477 ; SSE-NEXT:    movdqa 32(%rdi), %xmm8
478 ; SSE-NEXT:    movdqa 48(%rdi), %xmm6
479 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,0,65535,65535,0,65535,65535]
480 ; SSE-NEXT:    movdqa %xmm4, %xmm7
481 ; SSE-NEXT:    pandn %xmm8, %xmm7
482 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,0,65535,65535,0,65535,65535,0]
483 ; SSE-NEXT:    movdqa %xmm10, %xmm0
484 ; SSE-NEXT:    pandn %xmm6, %xmm0
485 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
486 ; SSE-NEXT:    movdqa %xmm4, %xmm0
487 ; SSE-NEXT:    pandn %xmm6, %xmm0
488 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
489 ; SSE-NEXT:    pand %xmm4, %xmm6
490 ; SSE-NEXT:    por %xmm7, %xmm6
491 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,255,255,255,255,255,255,255]
492 ; SSE-NEXT:    movdqa %xmm6, %xmm0
493 ; SSE-NEXT:    pand %xmm7, %xmm0
494 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm0[0,3,2,3,4,5,6,7]
495 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,3,2,3]
496 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
497 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,5]
498 ; SSE-NEXT:    packuswb %xmm3, %xmm0
499 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,65535,0,0,0,65535,65535]
500 ; SSE-NEXT:    pandn %xmm0, %xmm9
501 ; SSE-NEXT:    movdqa %xmm10, %xmm0
502 ; SSE-NEXT:    pandn %xmm2, %xmm10
503 ; SSE-NEXT:    pand %xmm4, %xmm11
504 ; SSE-NEXT:    movdqa %xmm4, %xmm3
505 ; SSE-NEXT:    pandn %xmm2, %xmm3
506 ; SSE-NEXT:    movdqa %xmm5, %xmm14
507 ; SSE-NEXT:    pand %xmm4, %xmm14
508 ; SSE-NEXT:    movdqa 80(%rdi), %xmm1
509 ; SSE-NEXT:    movdqa %xmm1, %xmm13
510 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
511 ; SSE-NEXT:    pand %xmm4, %xmm13
512 ; SSE-NEXT:    movdqa %xmm8, %xmm15
513 ; SSE-NEXT:    pand %xmm4, %xmm8
514 ; SSE-NEXT:    pand %xmm4, %xmm2
515 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
516 ; SSE-NEXT:    movdqa %xmm4, %xmm12
517 ; SSE-NEXT:    movdqa %xmm4, %xmm2
518 ; SSE-NEXT:    pandn %xmm5, %xmm4
519 ; SSE-NEXT:    pand %xmm0, %xmm5
520 ; SSE-NEXT:    por %xmm10, %xmm5
521 ; SSE-NEXT:    movdqa %xmm5, %xmm10
522 ; SSE-NEXT:    pand %xmm7, %xmm10
523 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,2,1,3]
524 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,6,5,6,7]
525 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,2,1,3]
526 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm10[0,3,2,1,4,5,6,7]
527 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm10[0,1,2,3,4,7,6,7]
528 ; SSE-NEXT:    packuswb %xmm0, %xmm0
529 ; SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
530 ; SSE-NEXT:    por %xmm9, %xmm0
531 ; SSE-NEXT:    pandn %xmm1, %xmm12
532 ; SSE-NEXT:    por %xmm12, %xmm11
533 ; SSE-NEXT:    movdqa %xmm11, %xmm9
534 ; SSE-NEXT:    pand %xmm7, %xmm9
535 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[3,1,2,0]
536 ; SSE-NEXT:    pshuflw {{.*#+}} xmm9 = xmm9[2,1,2,3,4,5,6,7]
537 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[0,3,2,0]
538 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,7,6,5]
539 ; SSE-NEXT:    packuswb %xmm9, %xmm9
540 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
541 ; SSE-NEXT:    movdqa %xmm10, %xmm1
542 ; SSE-NEXT:    pandn %xmm9, %xmm1
543 ; SSE-NEXT:    pand %xmm10, %xmm0
544 ; SSE-NEXT:    por %xmm0, %xmm1
545 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
546 ; SSE-NEXT:    pxor %xmm9, %xmm9
547 ; SSE-NEXT:    movdqa %xmm6, %xmm0
548 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm9[8],xmm0[9],xmm9[9],xmm0[10],xmm9[10],xmm0[11],xmm9[11],xmm0[12],xmm9[12],xmm0[13],xmm9[13],xmm0[14],xmm9[14],xmm0[15],xmm9[15]
549 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm9[0],xmm6[1],xmm9[1],xmm6[2],xmm9[2],xmm6[3],xmm9[3],xmm6[4],xmm9[4],xmm6[5],xmm9[5],xmm6[6],xmm9[6],xmm6[7],xmm9[7]
550 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm6[2,2,3,3]
551 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
552 ; SSE-NEXT:    psrld $16, %xmm0
553 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,1,0,3]
554 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,7,6,7]
555 ; SSE-NEXT:    punpckhdq {{.*#+}} xmm6 = xmm6[2],xmm0[2],xmm6[3],xmm0[3]
556 ; SSE-NEXT:    packuswb %xmm6, %xmm1
557 ; SSE-NEXT:    movdqa %xmm5, %xmm0
558 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm9[8],xmm0[9],xmm9[9],xmm0[10],xmm9[10],xmm0[11],xmm9[11],xmm0[12],xmm9[12],xmm0[13],xmm9[13],xmm0[14],xmm9[14],xmm0[15],xmm9[15]
559 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,0,3]
560 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7]
561 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,7,6,7]
562 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1],xmm5[2],xmm9[2],xmm5[3],xmm9[3],xmm5[4],xmm9[4],xmm5[5],xmm9[5],xmm5[6],xmm9[6],xmm5[7],xmm9[7]
563 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[3,1,2,3,4,5,6,7]
564 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,3,2,3]
565 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,3,2,0,4,5,6,7]
566 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [65535,65535,0,65535,0,0,65535,65535]
567 ; SSE-NEXT:    pand %xmm6, %xmm5
568 ; SSE-NEXT:    pandn %xmm0, %xmm6
569 ; SSE-NEXT:    por %xmm5, %xmm6
570 ; SSE-NEXT:    packuswb %xmm6, %xmm6
571 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,0,0,0,65535,65535]
572 ; SSE-NEXT:    pand %xmm0, %xmm6
573 ; SSE-NEXT:    pandn %xmm1, %xmm0
574 ; SSE-NEXT:    por %xmm0, %xmm6
575 ; SSE-NEXT:    movdqa %xmm11, %xmm0
576 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm9[0],xmm0[1],xmm9[1],xmm0[2],xmm9[2],xmm0[3],xmm9[3],xmm0[4],xmm9[4],xmm0[5],xmm9[5],xmm0[6],xmm9[6],xmm0[7],xmm9[7]
577 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
578 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8],xmm9[8],xmm11[9],xmm9[9],xmm11[10],xmm9[10],xmm11[11],xmm9[11],xmm11[12],xmm9[12],xmm11[13],xmm9[13],xmm11[14],xmm9[14],xmm11[15],xmm9[15]
579 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm11[3,1,2,3,4,5,6,7]
580 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]
581 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,7,6,4]
582 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,65535,65535,0,65535,65535,0,65535]
583 ; SSE-NEXT:    pand %xmm5, %xmm1
584 ; SSE-NEXT:    pandn %xmm0, %xmm5
585 ; SSE-NEXT:    por %xmm1, %xmm5
586 ; SSE-NEXT:    packuswb %xmm5, %xmm0
587 ; SSE-NEXT:    movdqa %xmm10, %xmm12
588 ; SSE-NEXT:    pandn %xmm0, %xmm12
589 ; SSE-NEXT:    pand %xmm10, %xmm6
590 ; SSE-NEXT:    por %xmm6, %xmm12
591 ; SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm15
592 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
593 ; SSE-NEXT:    movdqa %xmm15, %xmm0
594 ; SSE-NEXT:    pand %xmm7, %xmm0
595 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,7,6,7]
596 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
597 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,3,4,5,6,7]
598 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
599 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
600 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]
601 ; SSE-NEXT:    packuswb %xmm1, %xmm0
602 ; SSE-NEXT:    por %xmm3, %xmm14
603 ; SSE-NEXT:    movdqa %xmm14, %xmm1
604 ; SSE-NEXT:    pand %xmm7, %xmm1
605 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]
606 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
607 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
608 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,0,4,5,6,7]
609 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
610 ; SSE-NEXT:    packuswb %xmm1, %xmm1
611 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255]
612 ; SSE-NEXT:    movdqa %xmm3, %xmm5
613 ; SSE-NEXT:    pandn %xmm1, %xmm5
614 ; SSE-NEXT:    pand %xmm3, %xmm0
615 ; SSE-NEXT:    por %xmm0, %xmm5
616 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
617 ; SSE-NEXT:    pandn %xmm11, %xmm2
618 ; SSE-NEXT:    por %xmm2, %xmm13
619 ; SSE-NEXT:    movdqa %xmm13, %xmm0
620 ; SSE-NEXT:    pand %xmm7, %xmm0
621 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
622 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
623 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,0]
624 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]
625 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,6,7,4]
626 ; SSE-NEXT:    packuswb %xmm0, %xmm0
627 ; SSE-NEXT:    movdqa %xmm10, %xmm1
628 ; SSE-NEXT:    pandn %xmm0, %xmm1
629 ; SSE-NEXT:    pand %xmm10, %xmm5
630 ; SSE-NEXT:    por %xmm5, %xmm1
631 ; SSE-NEXT:    movdqa %xmm15, %xmm0
632 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm9[0],xmm0[1],xmm9[1],xmm0[2],xmm9[2],xmm0[3],xmm9[3],xmm0[4],xmm9[4],xmm0[5],xmm9[5],xmm0[6],xmm9[6],xmm0[7],xmm9[7]
633 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm15 = xmm15[8],xmm9[8],xmm15[9],xmm9[9],xmm15[10],xmm9[10],xmm15[11],xmm9[11],xmm15[12],xmm9[12],xmm15[13],xmm9[13],xmm15[14],xmm9[14],xmm15[15],xmm9[15]
634 ; SSE-NEXT:    movdqa %xmm15, %xmm2
635 ; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[2,0],xmm0[3,0]
636 ; SSE-NEXT:    movaps %xmm0, %xmm5
637 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm2[0,2]
638 ; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,0],xmm15[0,0]
639 ; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[2,0],xmm15[2,3]
640 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm5[0,1,2,3,7,5,6,7]
641 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,0,2]
642 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
643 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
644 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,3,3,4,5,6,7]
645 ; SSE-NEXT:    packuswb %xmm0, %xmm2
646 ; SSE-NEXT:    movdqa %xmm14, %xmm0
647 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm9[0],xmm0[1],xmm9[1],xmm0[2],xmm9[2],xmm0[3],xmm9[3],xmm0[4],xmm9[4],xmm0[5],xmm9[5],xmm0[6],xmm9[6],xmm0[7],xmm9[7]
648 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
649 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,1,4,5,6,7]
650 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm14 = xmm14[8],xmm9[8],xmm14[9],xmm9[9],xmm14[10],xmm9[10],xmm14[11],xmm9[11],xmm14[12],xmm9[12],xmm14[13],xmm9[13],xmm14[14],xmm9[14],xmm14[15],xmm9[15]
651 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm14[0,3,2,1]
652 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,1,3,3,4,5,6,7]
653 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,7,7,7]
654 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [0,65535,65535,0,65535,65535,65535,65535]
655 ; SSE-NEXT:    pand %xmm6, %xmm5
656 ; SSE-NEXT:    pandn %xmm0, %xmm6
657 ; SSE-NEXT:    por %xmm5, %xmm6
658 ; SSE-NEXT:    pand %xmm3, %xmm2
659 ; SSE-NEXT:    packuswb %xmm6, %xmm6
660 ; SSE-NEXT:    pandn %xmm6, %xmm3
661 ; SSE-NEXT:    por %xmm2, %xmm3
662 ; SSE-NEXT:    movdqa %xmm13, %xmm0
663 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm9[8],xmm0[9],xmm9[9],xmm0[10],xmm9[10],xmm0[11],xmm9[11],xmm0[12],xmm9[12],xmm0[13],xmm9[13],xmm0[14],xmm9[14],xmm0[15],xmm9[15]
664 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
665 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,5]
666 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm13 = xmm13[0],xmm9[0],xmm13[1],xmm9[1],xmm13[2],xmm9[2],xmm13[3],xmm9[3],xmm13[4],xmm9[4],xmm13[5],xmm9[5],xmm13[6],xmm9[6],xmm13[7],xmm9[7]
667 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm13[0,2,0,3]
668 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7]
669 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,65535,65535,65535,0,65535,65535,0]
670 ; SSE-NEXT:    pand %xmm5, %xmm2
671 ; SSE-NEXT:    pandn %xmm0, %xmm5
672 ; SSE-NEXT:    por %xmm2, %xmm5
673 ; SSE-NEXT:    pand %xmm10, %xmm3
674 ; SSE-NEXT:    packuswb %xmm5, %xmm0
675 ; SSE-NEXT:    pandn %xmm0, %xmm10
676 ; SSE-NEXT:    por %xmm3, %xmm10
677 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
678 ; SSE-NEXT:    movdqa %xmm8, %xmm0
679 ; SSE-NEXT:    pand %xmm7, %xmm0
680 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[2,1,2,3]
681 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]
682 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
683 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,2]
684 ; SSE-NEXT:    packuswb %xmm2, %xmm0
685 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,0,0,0,0,0,255,255,255,255,255,255]
686 ; SSE-NEXT:    movdqa %xmm3, %xmm2
687 ; SSE-NEXT:    pandn %xmm0, %xmm2
688 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
689 ; SSE-NEXT:    movdqa %xmm4, %xmm0
690 ; SSE-NEXT:    pand %xmm7, %xmm0
691 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
692 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
693 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,0,3]
694 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm0[2,1,0,3,4,5,6,7]
695 ; SSE-NEXT:    packuswb %xmm5, %xmm5
696 ; SSE-NEXT:    pand %xmm3, %xmm5
697 ; SSE-NEXT:    por %xmm2, %xmm5
698 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [65535,0,65535,65535,0,65535,65535,0]
699 ; SSE-NEXT:    pand %xmm13, %xmm11
700 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload
701 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,0,0,0]
702 ; SSE-NEXT:    pand %xmm0, %xmm5
703 ; SSE-NEXT:    por %xmm11, %xmm13
704 ; SSE-NEXT:    pand %xmm13, %xmm7
705 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm7[0,2,1,3]
706 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,1,4,5,6,7]
707 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]
708 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]
709 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,4,7]
710 ; SSE-NEXT:    packuswb %xmm2, %xmm2
711 ; SSE-NEXT:    movdqa %xmm0, %xmm6
712 ; SSE-NEXT:    pandn %xmm2, %xmm6
713 ; SSE-NEXT:    por %xmm5, %xmm6
714 ; SSE-NEXT:    movdqa %xmm8, %xmm2
715 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm9[8],xmm2[9],xmm9[9],xmm2[10],xmm9[10],xmm2[11],xmm9[11],xmm2[12],xmm9[12],xmm2[13],xmm9[13],xmm2[14],xmm9[14],xmm2[15],xmm9[15]
716 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm9[0],xmm8[1],xmm9[1],xmm8[2],xmm9[2],xmm8[3],xmm9[3],xmm8[4],xmm9[4],xmm8[5],xmm9[5],xmm8[6],xmm9[6],xmm8[7],xmm9[7]
717 ; SSE-NEXT:    movdqa %xmm8, %xmm5
718 ; SSE-NEXT:    shufps {{.*#+}} xmm8 = xmm8[1,0],xmm2[0,0]
719 ; SSE-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm2[2,3]
720 ; SSE-NEXT:    psrlq $48, %xmm2
721 ; SSE-NEXT:    psrldq {{.*#+}} xmm5 = xmm5[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
722 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]
723 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm8[3,1,2,3,4,5,6,7]
724 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,0,3]
725 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm2[0,1,2,3,4,4,5,7]
726 ; SSE-NEXT:    packuswb %xmm5, %xmm7
727 ; SSE-NEXT:    movdqa %xmm4, %xmm2
728 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm9[8],xmm2[9],xmm9[9],xmm2[10],xmm9[10],xmm2[11],xmm9[11],xmm2[12],xmm9[12],xmm2[13],xmm9[13],xmm2[14],xmm9[14],xmm2[15],xmm9[15]
729 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,2,3]
730 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm2[0,1,2,3,5,5,5,5]
731 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,0,65535,65535,0,65535,65535,65535]
732 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm9[0],xmm4[1],xmm9[1],xmm4[2],xmm9[2],xmm4[3],xmm9[3],xmm4[4],xmm9[4],xmm4[5],xmm9[5],xmm4[6],xmm9[6],xmm4[7],xmm9[7]
733 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,7,5,6,7]
734 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]
735 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[3,1,1,2,4,5,6,7]
736 ; SSE-NEXT:    pand %xmm2, %xmm4
737 ; SSE-NEXT:    pandn %xmm5, %xmm2
738 ; SSE-NEXT:    por %xmm4, %xmm2
739 ; SSE-NEXT:    packuswb %xmm2, %xmm2
740 ; SSE-NEXT:    pand %xmm3, %xmm2
741 ; SSE-NEXT:    pandn %xmm7, %xmm3
742 ; SSE-NEXT:    por %xmm3, %xmm2
743 ; SSE-NEXT:    movdqa %xmm13, %xmm3
744 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm9[0],xmm3[1],xmm9[1],xmm3[2],xmm9[2],xmm3[3],xmm9[3],xmm3[4],xmm9[4],xmm3[5],xmm9[5],xmm3[6],xmm9[6],xmm3[7],xmm9[7]
745 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,3,1,1]
746 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,1,3,4,5,6,7]
747 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm13 = xmm13[8],xmm9[8],xmm13[9],xmm9[9],xmm13[10],xmm9[10],xmm13[11],xmm9[11],xmm13[12],xmm9[12],xmm13[13],xmm9[13],xmm13[14],xmm9[14],xmm13[15],xmm9[15]
748 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,0,65535,0,0]
749 ; SSE-NEXT:    pand %xmm4, %xmm3
750 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm13[0,1,2,3,7,5,6,7]
751 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,2,0]
752 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,7,4]
753 ; SSE-NEXT:    pandn %xmm5, %xmm4
754 ; SSE-NEXT:    por %xmm3, %xmm4
755 ; SSE-NEXT:    pand %xmm0, %xmm2
756 ; SSE-NEXT:    packuswb %xmm4, %xmm3
757 ; SSE-NEXT:    pandn %xmm3, %xmm0
758 ; SSE-NEXT:    por %xmm2, %xmm0
759 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
760 ; SSE-NEXT:    movaps %xmm2, (%rsi)
761 ; SSE-NEXT:    movdqa %xmm12, (%rdx)
762 ; SSE-NEXT:    movdqa %xmm1, (%rcx)
763 ; SSE-NEXT:    movdqa %xmm10, (%r8)
764 ; SSE-NEXT:    movdqa %xmm6, (%r9)
765 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
766 ; SSE-NEXT:    movdqa %xmm0, (%rax)
767 ; SSE-NEXT:    retq
769 ; AVX1-ONLY-LABEL: load_i8_stride6_vf16:
770 ; AVX1-ONLY:       # %bb.0:
771 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
772 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm1
773 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm2
774 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm0
775 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm3
776 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[u,u,4,10,u,u,u,u,u,u,u,u,u,u,u,u]
777 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm3[u,u,u,u,0,6,12,u,u,u,u,u,u,u,u,u]
778 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm4 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
779 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm2[2,8,14,u,u,u,u,u,u,u,u,u,u]
780 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[0,6,12],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u]
781 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm6, %xmm5
782 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm5[0,1,2],xmm4[3,4,5],xmm5[6,7]
783 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rdi), %xmm4
784 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm4[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm4[4,10]
785 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm5
786 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm5[u,u,u,u,u,u,u,u,u,u,u,2,8,14],zero,zero
787 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm7
788 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm9 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
789 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm6, %xmm7, %xmm6
790 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm0[u,u,5,11,u,u,u,u,u,u,u,u,u,u,u,u]
791 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm3[u,u,u,u,1,7,13,u,u,u,u,u,u,u,u,u]
792 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]
793 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,zero,xmm2[3,9,15,u,u,u,u,u,u,u,u,u,u]
794 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm1[1,7,13],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u]
795 ; AVX1-ONLY-NEXT:    vpor %xmm8, %xmm10, %xmm8
796 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm8[0,1,2],xmm7[3,4,5],xmm8[6,7]
797 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm4[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm4[5,11]
798 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm5[u,u,u,u,u,u,u,u,u,u,u,3,9,15],zero,zero
799 ; AVX1-ONLY-NEXT:    vpor %xmm8, %xmm10, %xmm8
800 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm7, %xmm8, %xmm7
801 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm3[2,8,14,u,u,u,u,u,u,u,u,u,u,u,u,u]
802 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm0[u,u,u,u,u,0,6,12,u,u,u,u,u,u,u,u]
803 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm8 = xmm10[0],xmm8[0]
804 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,zero,xmm2[4,10,u,u,u,u,u,u,u,u,u,u,u]
805 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm1[2,8,14],zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
806 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm11, %xmm10
807 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm11 = <0,0,0,0,0,255,255,255,255,255,255,u,u,u,u,u>
808 ; AVX1-ONLY-NEXT:    vpblendvb %xmm11, %xmm8, %xmm10, %xmm8
809 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm5[u,u,u,u,u,u,u,u,u,u,u,4,10],zero,zero,zero
810 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm4[0,6,12]
811 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm12, %xmm10
812 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm8, %xmm10, %xmm8
813 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm3[3,9,15,u,u,u,u,u,u,u,u,u,u,u,u,u]
814 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm0[u,u,u,u,u,1,7,13,u,u,u,u,u,u,u,u]
815 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm10 = xmm12[0],xmm10[0]
816 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,zero,xmm2[5,11,u,u,u,u,u,u,u,u,u,u,u]
817 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm1[3,9,15],zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
818 ; AVX1-ONLY-NEXT:    vpor %xmm12, %xmm13, %xmm12
819 ; AVX1-ONLY-NEXT:    vpblendvb %xmm11, %xmm10, %xmm12, %xmm10
820 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm5[u,u,u,u,u,u,u,u,u,u,u,5,11],zero,zero,zero
821 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm4[1,7,13]
822 ; AVX1-ONLY-NEXT:    vpor %xmm11, %xmm12, %xmm11
823 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm10, %xmm11, %xmm9
824 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm1[4,10],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
825 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm2[0,6,12,u,u,u,u,u,u,u,u,u,u,u]
826 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm11, %xmm10
827 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm3[u,u,u,u,u,u,u,u,4,10,u,u,u,u,u,u]
828 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm0[u,u,u,u,u,u,u,u,u,u,u,u,u,2,8,14]
829 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm11 = xmm12[1],xmm11[1]
830 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm12 = <255,255,255,255,255,0,0,0,0,0,u,u,u,u,u,u>
831 ; AVX1-ONLY-NEXT:    vpblendvb %xmm12, %xmm10, %xmm11, %xmm10
832 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm4[u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm4[2,8,14]
833 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm5[u,u,u,u,u,u,u,u,u,u,0,6,12],zero,zero,zero
834 ; AVX1-ONLY-NEXT:    vpor %xmm11, %xmm13, %xmm11
835 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm10 = xmm10[0,1,2,3,4],xmm11[5,6,7]
836 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[5,11],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
837 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[1,7,13,u,u,u,u,u,u,u,u,u,u,u]
838 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
839 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm3[u,u,u,u,u,u,u,u,5,11,u,u,u,u,u,u]
840 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u,u,u,u,u,u,u,3,9,15]
841 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm0 = xmm0[1],xmm2[1]
842 ; AVX1-ONLY-NEXT:    vpblendvb %xmm12, %xmm1, %xmm0, %xmm0
843 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm4[3,9,15]
844 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm5[u,u,u,u,u,u,u,u,u,u,1,7,13],zero,zero,zero
845 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
846 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5,6,7]
847 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, (%rsi)
848 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, (%rdx)
849 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, (%rcx)
850 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, (%r8)
851 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, (%r9)
852 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, (%rax)
853 ; AVX1-ONLY-NEXT:    retq
855 ; AVX2-ONLY-LABEL: load_i8_stride6_vf16:
856 ; AVX2-ONLY:       # %bb.0:
857 ; AVX2-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
858 ; AVX2-ONLY-NEXT:    vmovdqa (%rdi), %ymm3
859 ; AVX2-ONLY-NEXT:    vmovdqa 32(%rdi), %ymm4
860 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm0 = <255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255>
861 ; AVX2-ONLY-NEXT:    vpblendvb %ymm0, %ymm3, %ymm4, %ymm5
862 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm5[0,6,12],zero,zero,zero,xmm5[4,10],zero,zero,zero,xmm5[u,u,u,u,u]
863 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm5, %xmm6
864 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm6[2,8,14],zero,zero,xmm6[0,6,12,u,u,u,u,u]
865 ; AVX2-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm2
866 ; AVX2-ONLY-NEXT:    vmovdqa 80(%rdi), %xmm0
867 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm0[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm0[4,10]
868 ; AVX2-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm1
869 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[u,u,u,u,u,u,u,u,u,u,u,2,8,14],zero,zero
870 ; AVX2-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm7
871 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm8 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
872 ; AVX2-ONLY-NEXT:    vpblendvb %xmm8, %xmm2, %xmm7, %xmm2
873 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[1,7,13],zero,zero,zero,xmm5[5,11],zero,zero,zero,xmm5[u,u,u,u,u]
874 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm6[3,9,15],zero,zero,xmm6[1,7,13,u,u,u,u,u]
875 ; AVX2-ONLY-NEXT:    vpor %xmm5, %xmm6, %xmm5
876 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm0[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm0[5,11]
877 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm1[u,u,u,u,u,u,u,u,u,u,u,3,9,15],zero,zero
878 ; AVX2-ONLY-NEXT:    vpor %xmm6, %xmm7, %xmm6
879 ; AVX2-ONLY-NEXT:    vpblendvb %xmm8, %xmm5, %xmm6, %xmm5
880 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm6 = <255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255>
881 ; AVX2-ONLY-NEXT:    vpblendvb %ymm6, %ymm4, %ymm3, %ymm6
882 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm6, %xmm7
883 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,zero,xmm7[4,10],zero,zero,zero,xmm7[2,8,14,u,u,u,u,u]
884 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm6[2,8,14],zero,zero,xmm6[0,6,12],zero,zero,zero,xmm6[u,u,u,u,u]
885 ; AVX2-ONLY-NEXT:    vpor %xmm9, %xmm10, %xmm9
886 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm1[u,u,u,u,u,u,u,u,u,u,u,4,10],zero,zero,zero
887 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm0[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm0[0,6,12]
888 ; AVX2-ONLY-NEXT:    vpor %xmm10, %xmm11, %xmm10
889 ; AVX2-ONLY-NEXT:    vpblendvb %xmm8, %xmm9, %xmm10, %xmm9
890 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm7[5,11],zero,zero,zero,xmm7[3,9,15,u,u,u,u,u]
891 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[3,9,15],zero,zero,xmm6[1,7,13],zero,zero,zero,xmm6[u,u,u,u,u]
892 ; AVX2-ONLY-NEXT:    vpor %xmm7, %xmm6, %xmm6
893 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm1[u,u,u,u,u,u,u,u,u,u,u,5,11],zero,zero,zero
894 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm0[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm0[1,7,13]
895 ; AVX2-ONLY-NEXT:    vpor %xmm7, %xmm10, %xmm7
896 ; AVX2-ONLY-NEXT:    vpblendvb %xmm8, %xmm6, %xmm7, %xmm6
897 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm7 = <u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u>
898 ; AVX2-ONLY-NEXT:    vpblendvb %ymm7, %ymm4, %ymm3, %ymm3
899 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm3, %xmm4
900 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm4[0,6,12],zero,zero,zero,xmm4[4,10,u,u,u,u,u,u]
901 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm3[4,10],zero,zero,zero,xmm3[2,8,14],zero,zero,xmm3[u,u,u,u,u,u]
902 ; AVX2-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm7
903 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm0[u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm0[2,8,14]
904 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm1[u,u,u,u,u,u,u,u,u,u,0,6,12],zero,zero,zero
905 ; AVX2-ONLY-NEXT:    vpor %xmm8, %xmm10, %xmm8
906 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3,4],xmm8[5,6,7]
907 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,xmm4[1,7,13],zero,zero,zero,xmm4[5,11,u,u,u,u,u,u]
908 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[5,11],zero,zero,zero,xmm3[3,9,15],zero,zero,xmm3[u,u,u,u,u,u]
909 ; AVX2-ONLY-NEXT:    vpor %xmm4, %xmm3, %xmm3
910 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm0[3,9,15]
911 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u,u,u,u,u,u,1,7,13],zero,zero,zero
912 ; AVX2-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
913 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm3[0,1,2,3,4],xmm0[5,6,7]
914 ; AVX2-ONLY-NEXT:    vmovdqa %xmm2, (%rsi)
915 ; AVX2-ONLY-NEXT:    vmovdqa %xmm5, (%rdx)
916 ; AVX2-ONLY-NEXT:    vmovdqa %xmm9, (%rcx)
917 ; AVX2-ONLY-NEXT:    vmovdqa %xmm6, (%r8)
918 ; AVX2-ONLY-NEXT:    vmovdqa %xmm7, (%r9)
919 ; AVX2-ONLY-NEXT:    vmovdqa %xmm0, (%rax)
920 ; AVX2-ONLY-NEXT:    vzeroupper
921 ; AVX2-ONLY-NEXT:    retq
923 ; AVX512F-LABEL: load_i8_stride6_vf16:
924 ; AVX512F:       # %bb.0:
925 ; AVX512F-NEXT:    movq {{[0-9]+}}(%rsp), %rax
926 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm0 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]
927 ; AVX512F-NEXT:    vmovdqa (%rdi), %ymm3
928 ; AVX512F-NEXT:    vmovdqa 32(%rdi), %ymm4
929 ; AVX512F-NEXT:    vmovdqa %ymm0, %ymm5
930 ; AVX512F-NEXT:    vpternlogq $202, %ymm4, %ymm3, %ymm5
931 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm1 = xmm5[0,6,12],zero,zero,zero,xmm5[4,10],zero,zero,zero,xmm5[u,u,u,u,u]
932 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
933 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm6[2,8,14],zero,zero,xmm6[0,6,12,u,u,u,u,u]
934 ; AVX512F-NEXT:    vpor %xmm1, %xmm2, %xmm7
935 ; AVX512F-NEXT:    vmovdqa 80(%rdi), %xmm2
936 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm8 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[4,10]
937 ; AVX512F-NEXT:    vmovdqa 64(%rdi), %xmm1
938 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm9 = xmm1[u,u,u,u,u,u,u,u,u,u,u,2,8,14],zero,zero
939 ; AVX512F-NEXT:    vpor %xmm8, %xmm9, %xmm8
940 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm9 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
941 ; AVX512F-NEXT:    vpternlogq $184, %xmm7, %xmm9, %xmm8
942 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[1,7,13],zero,zero,zero,xmm5[5,11],zero,zero,zero,xmm5[u,u,u,u,u]
943 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm6[3,9,15],zero,zero,xmm6[1,7,13,u,u,u,u,u]
944 ; AVX512F-NEXT:    vpor %xmm5, %xmm6, %xmm5
945 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm6 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[5,11]
946 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = xmm1[u,u,u,u,u,u,u,u,u,u,u,3,9,15],zero,zero
947 ; AVX512F-NEXT:    vpor %xmm6, %xmm7, %xmm6
948 ; AVX512F-NEXT:    vpternlogq $184, %xmm5, %xmm9, %xmm6
949 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm5 = xmm1[u,u,u,u,u,u,u,u,u,u,u,4,10],zero,zero,zero
950 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm2[0,6,12]
951 ; AVX512F-NEXT:    vpor %xmm5, %xmm7, %xmm5
952 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm7 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]
953 ; AVX512F-NEXT:    vpternlogq $202, %ymm3, %ymm4, %ymm7
954 ; AVX512F-NEXT:    vextracti128 $1, %ymm7, %xmm10
955 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,zero,xmm10[4,10],zero,zero,zero,xmm10[2,8,14,u,u,u,u,u]
956 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm12 = xmm7[2,8,14],zero,zero,xmm7[0,6,12],zero,zero,zero,xmm7[u,u,u,u,u]
957 ; AVX512F-NEXT:    vpor %xmm11, %xmm12, %xmm11
958 ; AVX512F-NEXT:    vpternlogq $226, %xmm5, %xmm9, %xmm11
959 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm5 = xmm1[u,u,u,u,u,u,u,u,u,u,u,5,11],zero,zero,zero
960 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm12 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm2[1,7,13]
961 ; AVX512F-NEXT:    vpor %xmm5, %xmm12, %xmm5
962 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,zero,xmm10[5,11],zero,zero,zero,xmm10[3,9,15,u,u,u,u,u]
963 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[3,9,15],zero,zero,xmm7[1,7,13],zero,zero,zero,xmm7[u,u,u,u,u]
964 ; AVX512F-NEXT:    vpor %xmm7, %xmm10, %xmm7
965 ; AVX512F-NEXT:    vpternlogq $226, %xmm5, %xmm9, %xmm7
966 ; AVX512F-NEXT:    vpternlogq $202, %ymm3, %ymm4, %ymm0
967 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm3
968 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,xmm3[0,6,12],zero,zero,zero,xmm3[4,10,u,u,u,u,u,u]
969 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm5 = xmm2[u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[2,8,14]
970 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4],xmm5[5,6,7]
971 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[4,10],zero,zero,zero,xmm0[2,8,14],zero,zero,xmm0[u,u,u,u,u,u]
972 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm9 = xmm1[u,u,u,u,u,u,u,u,u,u,0,6,12],zero,zero,zero
973 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4],xmm9[5,6,7]
974 ; AVX512F-NEXT:    vpor %xmm4, %xmm5, %xmm4
975 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm3[1,7,13],zero,zero,zero,xmm3[5,11,u,u,u,u,u,u]
976 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[3,9,15]
977 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm2 = xmm3[0,1,2,3,4],xmm2[5,6,7]
978 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[5,11],zero,zero,zero,xmm0[3,9,15],zero,zero,xmm0[u,u,u,u,u,u]
979 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u,u,u,u,u,u,1,7,13],zero,zero,zero
980 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5,6,7]
981 ; AVX512F-NEXT:    vpor %xmm2, %xmm0, %xmm0
982 ; AVX512F-NEXT:    vmovdqa %xmm8, (%rsi)
983 ; AVX512F-NEXT:    vmovdqa %xmm6, (%rdx)
984 ; AVX512F-NEXT:    vmovdqa %xmm11, (%rcx)
985 ; AVX512F-NEXT:    vmovdqa %xmm7, (%r8)
986 ; AVX512F-NEXT:    vmovdqa %xmm4, (%r9)
987 ; AVX512F-NEXT:    vmovdqa %xmm0, (%rax)
988 ; AVX512F-NEXT:    vzeroupper
989 ; AVX512F-NEXT:    retq
991 ; AVX512BW-LABEL: load_i8_stride6_vf16:
992 ; AVX512BW:       # %bb.0:
993 ; AVX512BW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
994 ; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm0
995 ; AVX512BW-NEXT:    vmovdqa 32(%rdi), %ymm1
996 ; AVX512BW-NEXT:    movw $18724, %r10w # imm = 0x4924
997 ; AVX512BW-NEXT:    kmovd %r10d, %k1
998 ; AVX512BW-NEXT:    vpblendmw %ymm1, %ymm0, %ymm2 {%k1}
999 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[0,6,12],zero,zero,zero,xmm2[4,10],zero,zero,zero,xmm2[u,u,u,u,u]
1000 ; AVX512BW-NEXT:    vextracti128 $1, %ymm2, %xmm4
1001 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm4[2,8,14],zero,zero,xmm4[0,6,12,u,u,u,u,u]
1002 ; AVX512BW-NEXT:    vpor %xmm3, %xmm5, %xmm3
1003 ; AVX512BW-NEXT:    vmovdqa 80(%rdi), %xmm5
1004 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[4,10]
1005 ; AVX512BW-NEXT:    vmovdqa 64(%rdi), %xmm7
1006 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm7[u,u,u,u,u,u,u,u,u,u,u,2,8,14],zero,zero
1007 ; AVX512BW-NEXT:    vpor %xmm6, %xmm8, %xmm6
1008 ; AVX512BW-NEXT:    movw $-2048, %di # imm = 0xF800
1009 ; AVX512BW-NEXT:    kmovd %edi, %k2
1010 ; AVX512BW-NEXT:    vmovdqu8 %xmm6, %xmm3 {%k2}
1011 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[1,7,13],zero,zero,zero,xmm2[5,11],zero,zero,zero,xmm2[u,u,u,u,u]
1012 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[3,9,15],zero,zero,xmm4[1,7,13,u,u,u,u,u]
1013 ; AVX512BW-NEXT:    vpor %xmm2, %xmm4, %xmm2
1014 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[5,11]
1015 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm7[u,u,u,u,u,u,u,u,u,u,u,3,9,15],zero,zero
1016 ; AVX512BW-NEXT:    vpor %xmm4, %xmm6, %xmm4
1017 ; AVX512BW-NEXT:    vmovdqu8 %xmm4, %xmm2 {%k2}
1018 ; AVX512BW-NEXT:    movw $9362, %di # imm = 0x2492
1019 ; AVX512BW-NEXT:    kmovd %edi, %k3
1020 ; AVX512BW-NEXT:    vpblendmw %ymm0, %ymm1, %ymm4 {%k3}
1021 ; AVX512BW-NEXT:    vextracti128 $1, %ymm4, %xmm6
1022 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,zero,xmm6[4,10],zero,zero,zero,xmm6[2,8,14,u,u,u,u,u]
1023 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm4[2,8,14],zero,zero,xmm4[0,6,12],zero,zero,zero,xmm4[u,u,u,u,u]
1024 ; AVX512BW-NEXT:    vpor %xmm8, %xmm9, %xmm8
1025 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm7[u,u,u,u,u,u,u,u,u,u,u,4,10],zero,zero,zero
1026 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[0,6,12]
1027 ; AVX512BW-NEXT:    vpor %xmm9, %xmm10, %xmm9
1028 ; AVX512BW-NEXT:    vmovdqu8 %xmm9, %xmm8 {%k2}
1029 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm6[5,11],zero,zero,zero,xmm6[3,9,15,u,u,u,u,u]
1030 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[3,9,15],zero,zero,xmm4[1,7,13],zero,zero,zero,xmm4[u,u,u,u,u]
1031 ; AVX512BW-NEXT:    vpor %xmm6, %xmm4, %xmm4
1032 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm7[u,u,u,u,u,u,u,u,u,u,u,5,11],zero,zero,zero
1033 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[1,7,13]
1034 ; AVX512BW-NEXT:    vpor %xmm6, %xmm9, %xmm6
1035 ; AVX512BW-NEXT:    vmovdqu8 %xmm6, %xmm4 {%k2}
1036 ; AVX512BW-NEXT:    vmovdqu16 %ymm0, %ymm1 {%k1}
1037 ; AVX512BW-NEXT:    vextracti128 $1, %ymm1, %xmm0
1038 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm0[0,6,12],zero,zero,zero,xmm0[4,10,u,u,u,u,u,u]
1039 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm5[u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[2,8,14]
1040 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0,1,2,3,4],xmm9[5,6,7]
1041 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm1[4,10],zero,zero,zero,xmm1[2,8,14],zero,zero,xmm1[u,u,u,u,u,u]
1042 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm7[u,u,u,u,u,u,u,u,u,u,0,6,12],zero,zero,zero
1043 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm9 = xmm9[0,1,2,3,4],xmm10[5,6,7]
1044 ; AVX512BW-NEXT:    vpor %xmm6, %xmm9, %xmm6
1045 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[1,7,13],zero,zero,zero,xmm0[5,11,u,u,u,u,u,u]
1046 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[3,9,15]
1047 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm5[5,6,7]
1048 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[5,11],zero,zero,zero,xmm1[3,9,15],zero,zero,xmm1[u,u,u,u,u,u]
1049 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm7[u,u,u,u,u,u,u,u,u,u,1,7,13],zero,zero,zero
1050 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4],xmm5[5,6,7]
1051 ; AVX512BW-NEXT:    vpor %xmm0, %xmm1, %xmm0
1052 ; AVX512BW-NEXT:    vmovdqa %xmm3, (%rsi)
1053 ; AVX512BW-NEXT:    vmovdqa %xmm2, (%rdx)
1054 ; AVX512BW-NEXT:    vmovdqa %xmm8, (%rcx)
1055 ; AVX512BW-NEXT:    vmovdqa %xmm4, (%r8)
1056 ; AVX512BW-NEXT:    vmovdqa %xmm6, (%r9)
1057 ; AVX512BW-NEXT:    vmovdqa %xmm0, (%rax)
1058 ; AVX512BW-NEXT:    vzeroupper
1059 ; AVX512BW-NEXT:    retq
1060   %wide.vec = load <96 x i8>, ptr %in.vec, align 64
1061   %strided.vec0 = shufflevector <96 x i8> %wide.vec, <96 x i8> poison, <16 x i32> <i32 0, i32 6, i32 12, i32 18, i32 24, i32 30, i32 36, i32 42, i32 48, i32 54, i32 60, i32 66, i32 72, i32 78, i32 84, i32 90>
1062   %strided.vec1 = shufflevector <96 x i8> %wide.vec, <96 x i8> poison, <16 x i32> <i32 1, i32 7, i32 13, i32 19, i32 25, i32 31, i32 37, i32 43, i32 49, i32 55, i32 61, i32 67, i32 73, i32 79, i32 85, i32 91>
1063   %strided.vec2 = shufflevector <96 x i8> %wide.vec, <96 x i8> poison, <16 x i32> <i32 2, i32 8, i32 14, i32 20, i32 26, i32 32, i32 38, i32 44, i32 50, i32 56, i32 62, i32 68, i32 74, i32 80, i32 86, i32 92>
1064   %strided.vec3 = shufflevector <96 x i8> %wide.vec, <96 x i8> poison, <16 x i32> <i32 3, i32 9, i32 15, i32 21, i32 27, i32 33, i32 39, i32 45, i32 51, i32 57, i32 63, i32 69, i32 75, i32 81, i32 87, i32 93>
1065   %strided.vec4 = shufflevector <96 x i8> %wide.vec, <96 x i8> poison, <16 x i32> <i32 4, i32 10, i32 16, i32 22, i32 28, i32 34, i32 40, i32 46, i32 52, i32 58, i32 64, i32 70, i32 76, i32 82, i32 88, i32 94>
1066   %strided.vec5 = shufflevector <96 x i8> %wide.vec, <96 x i8> poison, <16 x i32> <i32 5, i32 11, i32 17, i32 23, i32 29, i32 35, i32 41, i32 47, i32 53, i32 59, i32 65, i32 71, i32 77, i32 83, i32 89, i32 95>
1067   store <16 x i8> %strided.vec0, ptr %out.vec0, align 64
1068   store <16 x i8> %strided.vec1, ptr %out.vec1, align 64
1069   store <16 x i8> %strided.vec2, ptr %out.vec2, align 64
1070   store <16 x i8> %strided.vec3, ptr %out.vec3, align 64
1071   store <16 x i8> %strided.vec4, ptr %out.vec4, align 64
1072   store <16 x i8> %strided.vec5, ptr %out.vec5, align 64
1073   ret void
1076 define void @load_i8_stride6_vf32(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5) nounwind {
1077 ; SSE-LABEL: load_i8_stride6_vf32:
1078 ; SSE:       # %bb.0:
1079 ; SSE-NEXT:    subq $280, %rsp # imm = 0x118
1080 ; SSE-NEXT:    movdqa 64(%rdi), %xmm10
1081 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1082 ; SSE-NEXT:    movdqa 80(%rdi), %xmm9
1083 ; SSE-NEXT:    movdqa (%rdi), %xmm14
1084 ; SSE-NEXT:    movdqa 16(%rdi), %xmm2
1085 ; SSE-NEXT:    movdqa 32(%rdi), %xmm1
1086 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1087 ; SSE-NEXT:    movdqa 48(%rdi), %xmm5
1088 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,65535,0,65535,65535,0,65535,65535]
1089 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1090 ; SSE-NEXT:    pandn %xmm1, %xmm0
1091 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [65535,0,65535,65535,0,65535,65535,0]
1092 ; SSE-NEXT:    movdqa %xmm12, %xmm1
1093 ; SSE-NEXT:    pandn %xmm5, %xmm1
1094 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1095 ; SSE-NEXT:    movdqa %xmm7, %xmm1
1096 ; SSE-NEXT:    pandn %xmm5, %xmm1
1097 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1098 ; SSE-NEXT:    movdqa %xmm5, %xmm15
1099 ; SSE-NEXT:    pand %xmm7, %xmm15
1100 ; SSE-NEXT:    por %xmm0, %xmm15
1101 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255]
1102 ; SSE-NEXT:    movdqa %xmm15, %xmm0
1103 ; SSE-NEXT:    pand %xmm1, %xmm0
1104 ; SSE-NEXT:    movdqa %xmm1, %xmm3
1105 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm0[0,3,2,3,4,5,6,7]
1106 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
1107 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
1108 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,5]
1109 ; SSE-NEXT:    packuswb %xmm1, %xmm0
1110 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,65535,0,0,0,65535,65535]
1111 ; SSE-NEXT:    movdqa %xmm12, %xmm1
1112 ; SSE-NEXT:    pandn %xmm2, %xmm1
1113 ; SSE-NEXT:    movdqa %xmm14, %xmm11
1114 ; SSE-NEXT:    pand %xmm12, %xmm11
1115 ; SSE-NEXT:    por %xmm1, %xmm11
1116 ; SSE-NEXT:    movdqa %xmm11, %xmm1
1117 ; SSE-NEXT:    pand %xmm3, %xmm1
1118 ; SSE-NEXT:    movdqa %xmm3, %xmm6
1119 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
1120 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
1121 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
1122 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
1123 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
1124 ; SSE-NEXT:    packuswb %xmm1, %xmm1
1125 ; SSE-NEXT:    pand %xmm4, %xmm1
1126 ; SSE-NEXT:    movdqa %xmm4, %xmm3
1127 ; SSE-NEXT:    pandn %xmm0, %xmm3
1128 ; SSE-NEXT:    por %xmm3, %xmm1
1129 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1130 ; SSE-NEXT:    pandn %xmm9, %xmm0
1131 ; SSE-NEXT:    pand %xmm7, %xmm10
1132 ; SSE-NEXT:    por %xmm0, %xmm10
1133 ; SSE-NEXT:    movdqa %xmm10, %xmm0
1134 ; SSE-NEXT:    pand %xmm6, %xmm0
1135 ; SSE-NEXT:    movdqa %xmm6, %xmm8
1136 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
1137 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]
1138 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,0]
1139 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,5]
1140 ; SSE-NEXT:    packuswb %xmm0, %xmm0
1141 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
1142 ; SSE-NEXT:    movdqa %xmm5, %xmm3
1143 ; SSE-NEXT:    pandn %xmm0, %xmm3
1144 ; SSE-NEXT:    pand %xmm5, %xmm1
1145 ; SSE-NEXT:    por %xmm1, %xmm3
1146 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1147 ; SSE-NEXT:    movdqa 128(%rdi), %xmm13
1148 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1149 ; SSE-NEXT:    pandn %xmm13, %xmm0
1150 ; SSE-NEXT:    movdqa 144(%rdi), %xmm6
1151 ; SSE-NEXT:    movdqa %xmm12, %xmm3
1152 ; SSE-NEXT:    pandn %xmm6, %xmm3
1153 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1154 ; SSE-NEXT:    movdqa %xmm7, %xmm3
1155 ; SSE-NEXT:    pandn %xmm6, %xmm3
1156 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1157 ; SSE-NEXT:    pand %xmm7, %xmm6
1158 ; SSE-NEXT:    por %xmm0, %xmm6
1159 ; SSE-NEXT:    movdqa %xmm6, %xmm0
1160 ; SSE-NEXT:    pand %xmm8, %xmm0
1161 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm0[0,3,2,3,4,5,6,7]
1162 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,3,2,3]
1163 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
1164 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,5]
1165 ; SSE-NEXT:    packuswb %xmm3, %xmm0
1166 ; SSE-NEXT:    movdqa %xmm4, %xmm8
1167 ; SSE-NEXT:    pandn %xmm0, %xmm8
1168 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1169 ; SSE-NEXT:    movdqa %xmm7, %xmm1
1170 ; SSE-NEXT:    pandn %xmm14, %xmm1
1171 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1172 ; SSE-NEXT:    movdqa 112(%rdi), %xmm1
1173 ; SSE-NEXT:    movdqa %xmm12, %xmm4
1174 ; SSE-NEXT:    pandn %xmm1, %xmm4
1175 ; SSE-NEXT:    movdqa 160(%rdi), %xmm7
1176 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1177 ; SSE-NEXT:    pand %xmm0, %xmm7
1178 ; SSE-NEXT:    movdqa %xmm0, %xmm3
1179 ; SSE-NEXT:    pandn %xmm2, %xmm3
1180 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1181 ; SSE-NEXT:    pand %xmm0, %xmm14
1182 ; SSE-NEXT:    pandn %xmm9, %xmm12
1183 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1184 ; SSE-NEXT:    pand %xmm0, %xmm9
1185 ; SSE-NEXT:    movdqa %xmm9, (%rsp) # 16-byte Spill
1186 ; SSE-NEXT:    movdqa %xmm0, %xmm3
1187 ; SSE-NEXT:    pandn %xmm1, %xmm3
1188 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1189 ; SSE-NEXT:    movdqa 96(%rdi), %xmm3
1190 ; SSE-NEXT:    movdqa %xmm3, %xmm5
1191 ; SSE-NEXT:    pand %xmm0, %xmm5
1192 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1193 ; SSE-NEXT:    movdqa 176(%rdi), %xmm5
1194 ; SSE-NEXT:    movdqa %xmm5, %xmm12
1195 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1196 ; SSE-NEXT:    pand %xmm0, %xmm12
1197 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1198 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1199 ; SSE-NEXT:    movdqa %xmm9, %xmm12
1200 ; SSE-NEXT:    pand %xmm0, %xmm9
1201 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1202 ; SSE-NEXT:    pand %xmm0, %xmm2
1203 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1204 ; SSE-NEXT:    movdqa %xmm13, %xmm2
1205 ; SSE-NEXT:    pand %xmm0, %xmm2
1206 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1207 ; SSE-NEXT:    movdqa %xmm0, %xmm2
1208 ; SSE-NEXT:    pand %xmm0, %xmm1
1209 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1210 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1211 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1212 ; SSE-NEXT:    pandn %xmm3, %xmm2
1213 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1214 ; SSE-NEXT:    movdqa %xmm3, %xmm2
1215 ; SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
1216 ; SSE-NEXT:    por %xmm4, %xmm2
1217 ; SSE-NEXT:    movdqa %xmm2, %xmm4
1218 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255]
1219 ; SSE-NEXT:    pand %xmm1, %xmm4
1220 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,1,3]
1221 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,6,5,6,7]
1222 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,2,1,3]
1223 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,1,4,5,6,7]
1224 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,7,6,7]
1225 ; SSE-NEXT:    packuswb %xmm4, %xmm4
1226 ; SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm4
1227 ; SSE-NEXT:    por %xmm8, %xmm4
1228 ; SSE-NEXT:    pandn %xmm5, %xmm0
1229 ; SSE-NEXT:    por %xmm0, %xmm7
1230 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1231 ; SSE-NEXT:    pand %xmm1, %xmm0
1232 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
1233 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]
1234 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,0]
1235 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,5]
1236 ; SSE-NEXT:    packuswb %xmm0, %xmm0
1237 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
1238 ; SSE-NEXT:    movdqa %xmm3, %xmm1
1239 ; SSE-NEXT:    pandn %xmm0, %xmm1
1240 ; SSE-NEXT:    pand %xmm3, %xmm4
1241 ; SSE-NEXT:    por %xmm4, %xmm1
1242 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1243 ; SSE-NEXT:    pxor %xmm9, %xmm9
1244 ; SSE-NEXT:    movdqa %xmm15, %xmm0
1245 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm9[8],xmm0[9],xmm9[9],xmm0[10],xmm9[10],xmm0[11],xmm9[11],xmm0[12],xmm9[12],xmm0[13],xmm9[13],xmm0[14],xmm9[14],xmm0[15],xmm9[15]
1246 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm9[0],xmm15[1],xmm9[1],xmm15[2],xmm9[2],xmm15[3],xmm9[3],xmm15[4],xmm9[4],xmm15[5],xmm9[5],xmm15[6],xmm9[6],xmm15[7],xmm9[7]
1247 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm15[2,2,3,3]
1248 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3]
1249 ; SSE-NEXT:    psrld $16, %xmm0
1250 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm15[0,1,0,3]
1251 ; SSE-NEXT:    pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,5,7,6,7]
1252 ; SSE-NEXT:    punpckhdq {{.*#+}} xmm15 = xmm15[2],xmm0[2],xmm15[3],xmm0[3]
1253 ; SSE-NEXT:    packuswb %xmm15, %xmm5
1254 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,65535,0,0,0,65535,65535]
1255 ; SSE-NEXT:    movdqa %xmm4, %xmm1
1256 ; SSE-NEXT:    pandn %xmm5, %xmm1
1257 ; SSE-NEXT:    movdqa %xmm11, %xmm5
1258 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm9[8],xmm5[9],xmm9[9],xmm5[10],xmm9[10],xmm5[11],xmm9[11],xmm5[12],xmm9[12],xmm5[13],xmm9[13],xmm5[14],xmm9[14],xmm5[15],xmm9[15]
1259 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,1,0,3]
1260 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,1,1,1,4,5,6,7]
1261 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,7,6,7]
1262 ; SSE-NEXT:    movdqa {{.*#+}} xmm15 = [65535,65535,0,65535,0,0,65535,65535]
1263 ; SSE-NEXT:    movdqa %xmm15, %xmm0
1264 ; SSE-NEXT:    pandn %xmm5, %xmm0
1265 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm9[0],xmm11[1],xmm9[1],xmm11[2],xmm9[2],xmm11[3],xmm9[3],xmm11[4],xmm9[4],xmm11[5],xmm9[5],xmm11[6],xmm9[6],xmm11[7],xmm9[7]
1266 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm11[3,1,2,3,4,5,6,7]
1267 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,3,2,3]
1268 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,3,2,0,4,5,6,7]
1269 ; SSE-NEXT:    pand %xmm15, %xmm5
1270 ; SSE-NEXT:    por %xmm0, %xmm5
1271 ; SSE-NEXT:    packuswb %xmm5, %xmm5
1272 ; SSE-NEXT:    pand %xmm4, %xmm5
1273 ; SSE-NEXT:    por %xmm1, %xmm5
1274 ; SSE-NEXT:    movdqa %xmm10, %xmm0
1275 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm9[0],xmm0[1],xmm9[1],xmm0[2],xmm9[2],xmm0[3],xmm9[3],xmm0[4],xmm9[4],xmm0[5],xmm9[5],xmm0[6],xmm9[6],xmm0[7],xmm9[7]
1276 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
1277 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [65535,65535,65535,0,65535,65535,0,65535]
1278 ; SSE-NEXT:    movdqa %xmm8, %xmm1
1279 ; SSE-NEXT:    pandn %xmm0, %xmm1
1280 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm10 = xmm10[8],xmm9[8],xmm10[9],xmm9[9],xmm10[10],xmm9[10],xmm10[11],xmm9[11],xmm10[12],xmm9[12],xmm10[13],xmm9[13],xmm10[14],xmm9[14],xmm10[15],xmm9[15]
1281 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm10[3,1,2,3,4,5,6,7]
1282 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
1283 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,7,6,4]
1284 ; SSE-NEXT:    pand %xmm8, %xmm0
1285 ; SSE-NEXT:    por %xmm1, %xmm0
1286 ; SSE-NEXT:    packuswb %xmm0, %xmm0
1287 ; SSE-NEXT:    movdqa %xmm3, %xmm1
1288 ; SSE-NEXT:    pandn %xmm0, %xmm1
1289 ; SSE-NEXT:    pand %xmm3, %xmm5
1290 ; SSE-NEXT:    por %xmm5, %xmm1
1291 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1292 ; SSE-NEXT:    movdqa %xmm6, %xmm0
1293 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm9[8],xmm0[9],xmm9[9],xmm0[10],xmm9[10],xmm0[11],xmm9[11],xmm0[12],xmm9[12],xmm0[13],xmm9[13],xmm0[14],xmm9[14],xmm0[15],xmm9[15]
1294 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm9[0],xmm6[1],xmm9[1],xmm6[2],xmm9[2],xmm6[3],xmm9[3],xmm6[4],xmm9[4],xmm6[5],xmm9[5],xmm6[6],xmm9[6],xmm6[7],xmm9[7]
1295 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm6[2,2,3,3]
1296 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
1297 ; SSE-NEXT:    psrld $16, %xmm0
1298 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[0,1,0,3]
1299 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,7,6,7]
1300 ; SSE-NEXT:    punpckhdq {{.*#+}} xmm5 = xmm5[2],xmm0[2],xmm5[3],xmm0[3]
1301 ; SSE-NEXT:    packuswb %xmm5, %xmm1
1302 ; SSE-NEXT:    movdqa %xmm2, %xmm0
1303 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm9[8],xmm0[9],xmm9[9],xmm0[10],xmm9[10],xmm0[11],xmm9[11],xmm0[12],xmm9[12],xmm0[13],xmm9[13],xmm0[14],xmm9[14],xmm0[15],xmm9[15]
1304 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,0,3]
1305 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,1,1,1,4,5,6,7]
1306 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,7,6,7]
1307 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm9[0],xmm2[1],xmm9[1],xmm2[2],xmm9[2],xmm2[3],xmm9[3],xmm2[4],xmm9[4],xmm2[5],xmm9[5],xmm2[6],xmm9[6],xmm2[7],xmm9[7]
1308 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[3,1,2,3,4,5,6,7]
1309 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,2,3]
1310 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[1,3,2,0,4,5,6,7]
1311 ; SSE-NEXT:    pand %xmm15, %xmm2
1312 ; SSE-NEXT:    pandn %xmm0, %xmm15
1313 ; SSE-NEXT:    por %xmm2, %xmm15
1314 ; SSE-NEXT:    packuswb %xmm15, %xmm15
1315 ; SSE-NEXT:    movdqa %xmm4, %xmm0
1316 ; SSE-NEXT:    pand %xmm4, %xmm15
1317 ; SSE-NEXT:    pandn %xmm1, %xmm0
1318 ; SSE-NEXT:    por %xmm0, %xmm15
1319 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1320 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm9[0],xmm0[1],xmm9[1],xmm0[2],xmm9[2],xmm0[3],xmm9[3],xmm0[4],xmm9[4],xmm0[5],xmm9[5],xmm0[6],xmm9[6],xmm0[7],xmm9[7]
1321 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
1322 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm9[8],xmm7[9],xmm9[9],xmm7[10],xmm9[10],xmm7[11],xmm9[11],xmm7[12],xmm9[12],xmm7[13],xmm9[13],xmm7[14],xmm9[14],xmm7[15],xmm9[15]
1323 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm7[3,1,2,3,4,5,6,7]
1324 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]
1325 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,7,6,4]
1326 ; SSE-NEXT:    pand %xmm8, %xmm1
1327 ; SSE-NEXT:    pandn %xmm0, %xmm8
1328 ; SSE-NEXT:    por %xmm1, %xmm8
1329 ; SSE-NEXT:    packuswb %xmm8, %xmm0
1330 ; SSE-NEXT:    movdqa %xmm3, %xmm1
1331 ; SSE-NEXT:    pandn %xmm0, %xmm1
1332 ; SSE-NEXT:    pand %xmm3, %xmm15
1333 ; SSE-NEXT:    movdqa %xmm3, %xmm8
1334 ; SSE-NEXT:    por %xmm15, %xmm1
1335 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1336 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,0,65535,65535,0,65535,65535,0]
1337 ; SSE-NEXT:    pand %xmm4, %xmm12
1338 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
1339 ; SSE-NEXT:    movdqa %xmm12, %xmm0
1340 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [255,255,255,255,255,255,255,255]
1341 ; SSE-NEXT:    pand %xmm11, %xmm0
1342 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,7,6,7]
1343 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
1344 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,3,4,5,6,7]
1345 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
1346 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
1347 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,4,5,6]
1348 ; SSE-NEXT:    packuswb %xmm1, %xmm2
1349 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload
1350 ; SSE-NEXT:    movdqa %xmm14, %xmm0
1351 ; SSE-NEXT:    pand %xmm11, %xmm0
1352 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]
1353 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,4,7]
1354 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
1355 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,2,3,0,4,5,6,7]
1356 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,5,5,5,5]
1357 ; SSE-NEXT:    packuswb %xmm1, %xmm1
1358 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255]
1359 ; SSE-NEXT:    movdqa %xmm0, %xmm3
1360 ; SSE-NEXT:    pandn %xmm1, %xmm3
1361 ; SSE-NEXT:    pand %xmm0, %xmm2
1362 ; SSE-NEXT:    por %xmm2, %xmm3
1363 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1364 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
1365 ; SSE-NEXT:    movdqa (%rsp), %xmm15 # 16-byte Reload
1366 ; SSE-NEXT:    por %xmm1, %xmm15
1367 ; SSE-NEXT:    movdqa %xmm15, %xmm1
1368 ; SSE-NEXT:    pand %xmm11, %xmm1
1369 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
1370 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
1371 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
1372 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]
1373 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,7,4]
1374 ; SSE-NEXT:    packuswb %xmm1, %xmm1
1375 ; SSE-NEXT:    movdqa %xmm8, %xmm2
1376 ; SSE-NEXT:    pandn %xmm1, %xmm2
1377 ; SSE-NEXT:    pand %xmm8, %xmm3
1378 ; SSE-NEXT:    por %xmm3, %xmm2
1379 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1380 ; SSE-NEXT:    pand %xmm4, %xmm13
1381 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload
1382 ; SSE-NEXT:    movdqa %xmm13, %xmm1
1383 ; SSE-NEXT:    pand %xmm11, %xmm1
1384 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm1[0,1,2,3,4,7,6,7]
1385 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
1386 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[1,2,3,3,4,5,6,7]
1387 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
1388 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]
1389 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,5,6]
1390 ; SSE-NEXT:    packuswb %xmm2, %xmm1
1391 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1392 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
1393 ; SSE-NEXT:    movdqa %xmm4, %xmm2
1394 ; SSE-NEXT:    pand %xmm11, %xmm2
1395 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]
1396 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]
1397 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,2,3]
1398 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[1,2,3,0,4,5,6,7]
1399 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,5,5,5]
1400 ; SSE-NEXT:    packuswb %xmm2, %xmm2
1401 ; SSE-NEXT:    movdqa %xmm0, %xmm3
1402 ; SSE-NEXT:    pandn %xmm2, %xmm3
1403 ; SSE-NEXT:    pand %xmm0, %xmm1
1404 ; SSE-NEXT:    por %xmm1, %xmm3
1405 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1406 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
1407 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
1408 ; SSE-NEXT:    por %xmm1, %xmm10
1409 ; SSE-NEXT:    movdqa %xmm10, %xmm1
1410 ; SSE-NEXT:    pand %xmm11, %xmm1
1411 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
1412 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
1413 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
1414 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,2,2,2,4,5,6,7]
1415 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,6,7,4]
1416 ; SSE-NEXT:    packuswb %xmm1, %xmm1
1417 ; SSE-NEXT:    movdqa %xmm8, %xmm2
1418 ; SSE-NEXT:    pandn %xmm1, %xmm2
1419 ; SSE-NEXT:    pand %xmm8, %xmm3
1420 ; SSE-NEXT:    por %xmm3, %xmm2
1421 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1422 ; SSE-NEXT:    movdqa %xmm12, %xmm1
1423 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm9[0],xmm1[1],xmm9[1],xmm1[2],xmm9[2],xmm1[3],xmm9[3],xmm1[4],xmm9[4],xmm1[5],xmm9[5],xmm1[6],xmm9[6],xmm1[7],xmm9[7]
1424 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm12 = xmm12[8],xmm9[8],xmm12[9],xmm9[9],xmm12[10],xmm9[10],xmm12[11],xmm9[11],xmm12[12],xmm9[12],xmm12[13],xmm9[13],xmm12[14],xmm9[14],xmm12[15],xmm9[15]
1425 ; SSE-NEXT:    movdqa %xmm12, %xmm3
1426 ; SSE-NEXT:    shufps {{.*#+}} xmm3 = xmm3[2,0],xmm1[3,0]
1427 ; SSE-NEXT:    movaps %xmm1, %xmm5
1428 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm3[0,2]
1429 ; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,0],xmm12[0,0]
1430 ; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,0],xmm12[2,3]
1431 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm5[0,1,2,3,7,5,6,7]
1432 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,0,2]
1433 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[3,1,2,3,4,5,6,7]
1434 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
1435 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,3,3,4,5,6,7]
1436 ; SSE-NEXT:    packuswb %xmm1, %xmm3
1437 ; SSE-NEXT:    movdqa %xmm14, %xmm1
1438 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm9[0],xmm1[1],xmm9[1],xmm1[2],xmm9[2],xmm1[3],xmm9[3],xmm1[4],xmm9[4],xmm1[5],xmm9[5],xmm1[6],xmm9[6],xmm1[7],xmm9[7]
1439 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]
1440 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm1[3,1,2,1,4,5,6,7]
1441 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [0,65535,65535,0,65535,65535,65535,65535]
1442 ; SSE-NEXT:    movdqa %xmm1, %xmm6
1443 ; SSE-NEXT:    pandn %xmm5, %xmm6
1444 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm14 = xmm14[8],xmm9[8],xmm14[9],xmm9[9],xmm14[10],xmm9[10],xmm14[11],xmm9[11],xmm14[12],xmm9[12],xmm14[13],xmm9[13],xmm14[14],xmm9[14],xmm14[15],xmm9[15]
1445 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm14[0,3,2,1]
1446 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,1,3,3,4,5,6,7]
1447 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,7,7,7,7]
1448 ; SSE-NEXT:    pand %xmm1, %xmm5
1449 ; SSE-NEXT:    por %xmm6, %xmm5
1450 ; SSE-NEXT:    packuswb %xmm5, %xmm5
1451 ; SSE-NEXT:    movdqa %xmm0, %xmm6
1452 ; SSE-NEXT:    pandn %xmm5, %xmm6
1453 ; SSE-NEXT:    pand %xmm0, %xmm3
1454 ; SSE-NEXT:    por %xmm3, %xmm6
1455 ; SSE-NEXT:    movdqa %xmm15, %xmm3
1456 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm9[8],xmm3[9],xmm9[9],xmm3[10],xmm9[10],xmm3[11],xmm9[11],xmm3[12],xmm9[12],xmm3[13],xmm9[13],xmm3[14],xmm9[14],xmm3[15],xmm9[15]
1457 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
1458 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm3[0,1,2,3,7,5,6,5]
1459 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,65535,65535,0,65535,65535,0]
1460 ; SSE-NEXT:    movdqa %xmm3, %xmm7
1461 ; SSE-NEXT:    pandn %xmm5, %xmm7
1462 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm9[0],xmm15[1],xmm9[1],xmm15[2],xmm9[2],xmm15[3],xmm9[3],xmm15[4],xmm9[4],xmm15[5],xmm9[5],xmm15[6],xmm9[6],xmm15[7],xmm9[7]
1463 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm15[0,2,0,3]
1464 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,7,7]
1465 ; SSE-NEXT:    pand %xmm3, %xmm5
1466 ; SSE-NEXT:    por %xmm7, %xmm5
1467 ; SSE-NEXT:    packuswb %xmm5, %xmm5
1468 ; SSE-NEXT:    movdqa %xmm8, %xmm15
1469 ; SSE-NEXT:    pandn %xmm5, %xmm15
1470 ; SSE-NEXT:    pand %xmm8, %xmm6
1471 ; SSE-NEXT:    por %xmm6, %xmm15
1472 ; SSE-NEXT:    movdqa %xmm13, %xmm5
1473 ; SSE-NEXT:    pxor %xmm2, %xmm2
1474 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
1475 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm13 = xmm13[8],xmm2[8],xmm13[9],xmm2[9],xmm13[10],xmm2[10],xmm13[11],xmm2[11],xmm13[12],xmm2[12],xmm13[13],xmm2[13],xmm13[14],xmm2[14],xmm13[15],xmm2[15]
1476 ; SSE-NEXT:    movdqa %xmm13, %xmm6
1477 ; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[2,0],xmm5[3,0]
1478 ; SSE-NEXT:    movaps %xmm5, %xmm7
1479 ; SSE-NEXT:    shufps {{.*#+}} xmm7 = xmm7[0,1],xmm6[0,2]
1480 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[1,0],xmm13[0,0]
1481 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[2,0],xmm13[2,3]
1482 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm7[0,1,2,3,7,5,6,7]
1483 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,1,0,2]
1484 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[3,1,2,3,4,5,6,7]
1485 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,3,2,3]
1486 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,1,3,3,4,5,6,7]
1487 ; SSE-NEXT:    packuswb %xmm5, %xmm6
1488 ; SSE-NEXT:    movdqa %xmm4, %xmm5
1489 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
1490 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,1,2,3]
1491 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[3,1,2,1,4,5,6,7]
1492 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm2[8],xmm4[9],xmm2[9],xmm4[10],xmm2[10],xmm4[11],xmm2[11],xmm4[12],xmm2[12],xmm4[13],xmm2[13],xmm4[14],xmm2[14],xmm4[15],xmm2[15]
1493 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm4[0,3,2,1]
1494 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[0,1,3,3,4,5,6,7]
1495 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,7,7,7,7]
1496 ; SSE-NEXT:    pand %xmm1, %xmm7
1497 ; SSE-NEXT:    pandn %xmm5, %xmm1
1498 ; SSE-NEXT:    por %xmm7, %xmm1
1499 ; SSE-NEXT:    pand %xmm0, %xmm6
1500 ; SSE-NEXT:    packuswb %xmm1, %xmm1
1501 ; SSE-NEXT:    pandn %xmm1, %xmm0
1502 ; SSE-NEXT:    por %xmm6, %xmm0
1503 ; SSE-NEXT:    movdqa %xmm10, %xmm1
1504 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
1505 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
1506 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,5,6,5]
1507 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm2[0],xmm10[1],xmm2[1],xmm10[2],xmm2[2],xmm10[3],xmm2[3],xmm10[4],xmm2[4],xmm10[5],xmm2[5],xmm10[6],xmm2[6],xmm10[7],xmm2[7]
1508 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm10[0,2,0,3]
1509 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,7,7]
1510 ; SSE-NEXT:    pand %xmm3, %xmm5
1511 ; SSE-NEXT:    pandn %xmm1, %xmm3
1512 ; SSE-NEXT:    por %xmm5, %xmm3
1513 ; SSE-NEXT:    movdqa %xmm8, %xmm4
1514 ; SSE-NEXT:    pand %xmm8, %xmm0
1515 ; SSE-NEXT:    packuswb %xmm3, %xmm1
1516 ; SSE-NEXT:    pandn %xmm1, %xmm4
1517 ; SSE-NEXT:    por %xmm0, %xmm4
1518 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1519 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1520 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload
1521 ; SSE-NEXT:    movdqa %xmm9, %xmm0
1522 ; SSE-NEXT:    pand %xmm11, %xmm0
1523 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,1,2,3]
1524 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]
1525 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
1526 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,2]
1527 ; SSE-NEXT:    packuswb %xmm1, %xmm0
1528 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [255,255,255,255,255,0,0,0,0,0,255,255,255,255,255,255]
1529 ; SSE-NEXT:    movdqa %xmm5, %xmm1
1530 ; SSE-NEXT:    pandn %xmm0, %xmm1
1531 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
1532 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload
1533 ; SSE-NEXT:    movdqa %xmm10, %xmm0
1534 ; SSE-NEXT:    pand %xmm11, %xmm0
1535 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
1536 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
1537 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,0,3]
1538 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm0[2,1,0,3,4,5,6,7]
1539 ; SSE-NEXT:    packuswb %xmm3, %xmm3
1540 ; SSE-NEXT:    pand %xmm5, %xmm3
1541 ; SSE-NEXT:    por %xmm1, %xmm3
1542 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
1543 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [65535,0,65535,65535,0,65535,65535,0]
1544 ; SSE-NEXT:    pand %xmm13, %xmm12
1545 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
1546 ; SSE-NEXT:    movdqa %xmm12, %xmm0
1547 ; SSE-NEXT:    pand %xmm11, %xmm0
1548 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
1549 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]
1550 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
1551 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,3,4,5,6,7]
1552 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,4,7]
1553 ; SSE-NEXT:    packuswb %xmm0, %xmm6
1554 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,0,0,0]
1555 ; SSE-NEXT:    movdqa %xmm0, %xmm8
1556 ; SSE-NEXT:    pandn %xmm6, %xmm8
1557 ; SSE-NEXT:    pand %xmm0, %xmm3
1558 ; SSE-NEXT:    por %xmm3, %xmm8
1559 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
1560 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload
1561 ; SSE-NEXT:    movdqa %xmm14, %xmm3
1562 ; SSE-NEXT:    pand %xmm11, %xmm3
1563 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm3[2,1,2,3]
1564 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[2,1,2,3,4,5,6,7]
1565 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,7,6,7]
1566 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,0,2]
1567 ; SSE-NEXT:    packuswb %xmm6, %xmm3
1568 ; SSE-NEXT:    movdqa %xmm5, %xmm6
1569 ; SSE-NEXT:    pandn %xmm3, %xmm6
1570 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1571 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
1572 ; SSE-NEXT:    movdqa %xmm1, %xmm3
1573 ; SSE-NEXT:    pand %xmm11, %xmm3
1574 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[3,1,2,0]
1575 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,6,5,6,7]
1576 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,1,0,3]
1577 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm3[2,1,0,3,4,5,6,7]
1578 ; SSE-NEXT:    packuswb %xmm7, %xmm7
1579 ; SSE-NEXT:    pand %xmm5, %xmm7
1580 ; SSE-NEXT:    por %xmm6, %xmm7
1581 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
1582 ; SSE-NEXT:    pand %xmm13, %xmm3
1583 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload
1584 ; SSE-NEXT:    por %xmm3, %xmm13
1585 ; SSE-NEXT:    movdqa %xmm11, %xmm3
1586 ; SSE-NEXT:    pand %xmm13, %xmm3
1587 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,1,3]
1588 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,2,1,4,5,6,7]
1589 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,2,1,3]
1590 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,1,0,3,4,5,6,7]
1591 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,6,5,4,7]
1592 ; SSE-NEXT:    packuswb %xmm3, %xmm6
1593 ; SSE-NEXT:    movdqa %xmm0, %xmm3
1594 ; SSE-NEXT:    pandn %xmm6, %xmm3
1595 ; SSE-NEXT:    pand %xmm0, %xmm7
1596 ; SSE-NEXT:    por %xmm7, %xmm3
1597 ; SSE-NEXT:    movdqa %xmm9, %xmm6
1598 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm2[8],xmm6[9],xmm2[9],xmm6[10],xmm2[10],xmm6[11],xmm2[11],xmm6[12],xmm2[12],xmm6[13],xmm2[13],xmm6[14],xmm2[14],xmm6[15],xmm2[15]
1599 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm2[0],xmm9[1],xmm2[1],xmm9[2],xmm2[2],xmm9[3],xmm2[3],xmm9[4],xmm2[4],xmm9[5],xmm2[5],xmm9[6],xmm2[6],xmm9[7],xmm2[7]
1600 ; SSE-NEXT:    movdqa %xmm9, %xmm7
1601 ; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[1,0],xmm6[0,0]
1602 ; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[2,0],xmm6[2,3]
1603 ; SSE-NEXT:    psrlq $48, %xmm6
1604 ; SSE-NEXT:    psrldq {{.*#+}} xmm7 = xmm7[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1605 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]
1606 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm9[3,1,2,3,4,5,6,7]
1607 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,1,0,3]
1608 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,5,7]
1609 ; SSE-NEXT:    packuswb %xmm7, %xmm6
1610 ; SSE-NEXT:    movdqa %xmm5, %xmm7
1611 ; SSE-NEXT:    pandn %xmm6, %xmm7
1612 ; SSE-NEXT:    movdqa %xmm10, %xmm6
1613 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm2[8],xmm6[9],xmm2[9],xmm6[10],xmm2[10],xmm6[11],xmm2[11],xmm6[12],xmm2[12],xmm6[13],xmm2[13],xmm6[14],xmm2[14],xmm6[15],xmm2[15]
1614 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[1,1,2,3]
1615 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm6[0,1,2,3,5,5,5,5]
1616 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [65535,0,65535,65535,0,65535,65535,65535]
1617 ; SSE-NEXT:    movdqa %xmm6, %xmm11
1618 ; SSE-NEXT:    pandn %xmm9, %xmm11
1619 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm2[0],xmm10[1],xmm2[1],xmm10[2],xmm2[2],xmm10[3],xmm2[3],xmm10[4],xmm2[4],xmm10[5],xmm2[5],xmm10[6],xmm2[6],xmm10[7],xmm2[7]
1620 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm10[0,1,2,3,7,5,6,7]
1621 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[0,2,2,3]
1622 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm9[3,1,1,2,4,5,6,7]
1623 ; SSE-NEXT:    pand %xmm6, %xmm10
1624 ; SSE-NEXT:    por %xmm11, %xmm10
1625 ; SSE-NEXT:    packuswb %xmm10, %xmm10
1626 ; SSE-NEXT:    pand %xmm5, %xmm10
1627 ; SSE-NEXT:    por %xmm7, %xmm10
1628 ; SSE-NEXT:    movdqa %xmm12, %xmm7
1629 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm12 = xmm12[8],xmm2[8],xmm12[9],xmm2[9],xmm12[10],xmm2[10],xmm12[11],xmm2[11],xmm12[12],xmm2[12],xmm12[13],xmm2[13],xmm12[14],xmm2[14],xmm12[15],xmm2[15]
1630 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm12[0,1,2,3,7,5,6,7]
1631 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[0,1,2,0]
1632 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm9[0,1,2,3,5,5,7,4]
1633 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,65535,65535,0,65535,0,0]
1634 ; SSE-NEXT:    movdqa %xmm9, %xmm12
1635 ; SSE-NEXT:    pandn %xmm11, %xmm12
1636 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm2[0],xmm7[1],xmm2[1],xmm7[2],xmm2[2],xmm7[3],xmm2[3],xmm7[4],xmm2[4],xmm7[5],xmm2[5],xmm7[6],xmm2[6],xmm7[7],xmm2[7]
1637 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[0,3,1,1]
1638 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[0,1,1,3,4,5,6,7]
1639 ; SSE-NEXT:    pand %xmm9, %xmm7
1640 ; SSE-NEXT:    por %xmm7, %xmm12
1641 ; SSE-NEXT:    packuswb %xmm12, %xmm11
1642 ; SSE-NEXT:    movdqa %xmm0, %xmm7
1643 ; SSE-NEXT:    pandn %xmm11, %xmm7
1644 ; SSE-NEXT:    pand %xmm0, %xmm10
1645 ; SSE-NEXT:    por %xmm10, %xmm7
1646 ; SSE-NEXT:    movdqa %xmm14, %xmm10
1647 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm10 = xmm10[8],xmm2[8],xmm10[9],xmm2[9],xmm10[10],xmm2[10],xmm10[11],xmm2[11],xmm10[12],xmm2[12],xmm10[13],xmm2[13],xmm10[14],xmm2[14],xmm10[15],xmm2[15]
1648 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm2[0],xmm14[1],xmm2[1],xmm14[2],xmm2[2],xmm14[3],xmm2[3],xmm14[4],xmm2[4],xmm14[5],xmm2[5],xmm14[6],xmm2[6],xmm14[7],xmm2[7]
1649 ; SSE-NEXT:    movdqa %xmm14, %xmm11
1650 ; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[1,0],xmm10[0,0]
1651 ; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[2,0],xmm10[2,3]
1652 ; SSE-NEXT:    psrlq $48, %xmm10
1653 ; SSE-NEXT:    psrldq {{.*#+}} xmm11 = xmm11[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1654 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm11 = xmm11[0],xmm10[0],xmm11[1],xmm10[1],xmm11[2],xmm10[2],xmm11[3],xmm10[3]
1655 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm14[3,1,2,3,4,5,6,7]
1656 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,1,0,3]
1657 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,4,5,7]
1658 ; SSE-NEXT:    packuswb %xmm11, %xmm10
1659 ; SSE-NEXT:    movdqa %xmm1, %xmm11
1660 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8],xmm2[8],xmm11[9],xmm2[9],xmm11[10],xmm2[10],xmm11[11],xmm2[11],xmm11[12],xmm2[12],xmm11[13],xmm2[13],xmm11[14],xmm2[14],xmm11[15],xmm2[15]
1661 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[1,1,2,3]
1662 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,5,5,5,5]
1663 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1664 ; SSE-NEXT:    pshufhw {{.*#+}} xmm12 = xmm1[0,1,2,3,7,5,6,7]
1665 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm12[0,2,2,3]
1666 ; SSE-NEXT:    pshuflw {{.*#+}} xmm12 = xmm12[3,1,1,2,4,5,6,7]
1667 ; SSE-NEXT:    pand %xmm6, %xmm12
1668 ; SSE-NEXT:    pandn %xmm11, %xmm6
1669 ; SSE-NEXT:    por %xmm12, %xmm6
1670 ; SSE-NEXT:    packuswb %xmm6, %xmm6
1671 ; SSE-NEXT:    pand %xmm5, %xmm6
1672 ; SSE-NEXT:    pandn %xmm10, %xmm5
1673 ; SSE-NEXT:    por %xmm5, %xmm6
1674 ; SSE-NEXT:    movdqa %xmm13, %xmm5
1675 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
1676 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm13 = xmm13[8],xmm2[8],xmm13[9],xmm2[9],xmm13[10],xmm2[10],xmm13[11],xmm2[11],xmm13[12],xmm2[12],xmm13[13],xmm2[13],xmm13[14],xmm2[14],xmm13[15],xmm2[15]
1677 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[0,3,1,1]
1678 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,1,1,3,4,5,6,7]
1679 ; SSE-NEXT:    pand %xmm9, %xmm4
1680 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm13[0,1,2,3,7,5,6,7]
1681 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,2,0]
1682 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,7,4]
1683 ; SSE-NEXT:    pandn %xmm5, %xmm9
1684 ; SSE-NEXT:    por %xmm4, %xmm9
1685 ; SSE-NEXT:    pand %xmm0, %xmm6
1686 ; SSE-NEXT:    packuswb %xmm9, %xmm4
1687 ; SSE-NEXT:    pandn %xmm4, %xmm0
1688 ; SSE-NEXT:    por %xmm6, %xmm0
1689 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1690 ; SSE-NEXT:    movaps %xmm4, 16(%rsi)
1691 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1692 ; SSE-NEXT:    movaps %xmm4, (%rsi)
1693 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1694 ; SSE-NEXT:    movaps %xmm1, 16(%rdx)
1695 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1696 ; SSE-NEXT:    movaps %xmm1, (%rdx)
1697 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1698 ; SSE-NEXT:    movaps %xmm1, 16(%rcx)
1699 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1700 ; SSE-NEXT:    movaps %xmm1, (%rcx)
1701 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1702 ; SSE-NEXT:    movaps %xmm1, 16(%r8)
1703 ; SSE-NEXT:    movdqa %xmm15, (%r8)
1704 ; SSE-NEXT:    movdqa %xmm3, 16(%r9)
1705 ; SSE-NEXT:    movdqa %xmm8, (%r9)
1706 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1707 ; SSE-NEXT:    movdqa %xmm0, 16(%rax)
1708 ; SSE-NEXT:    movdqa %xmm7, (%rax)
1709 ; SSE-NEXT:    addq $280, %rsp # imm = 0x118
1710 ; SSE-NEXT:    retq
1712 ; AVX1-ONLY-LABEL: load_i8_stride6_vf32:
1713 ; AVX1-ONLY:       # %bb.0:
1714 ; AVX1-ONLY-NEXT:    subq $168, %rsp
1715 ; AVX1-ONLY-NEXT:    vmovdqa 128(%rdi), %xmm1
1716 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm1[u,u,4,10,u,u,u,u,u,u,u,u,u,u,u,u]
1717 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, %xmm4
1718 ; AVX1-ONLY-NEXT:    vmovdqa 144(%rdi), %xmm2
1719 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm2[u,u,u,u,0,6,12,u,u,u,u,u,u,u,u,u]
1720 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm5
1721 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
1722 ; AVX1-ONLY-NEXT:    vmovdqa 176(%rdi), %xmm2
1723 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[4,10]
1724 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm6
1725 ; AVX1-ONLY-NEXT:    vmovdqa 160(%rdi), %xmm3
1726 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm3[u,u,u,u,u,u,u,u,u,u,u,2,8,14],zero,zero
1727 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm7
1728 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm2
1729 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <u,u,u,u,u,u,255,255,255,255,255,0,0,0,0,0>
1730 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
1731 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, (%rsp) # 16-byte Spill
1732 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm4[u,u,5,11,u,u,u,u,u,u,u,u,u,u,u,u]
1733 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm5[u,u,u,u,1,7,13,u,u,u,u,u,u,u,u,u]
1734 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
1735 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm6[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm6[5,11]
1736 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u,u,u,u,u,3,9,15],zero,zero
1737 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
1738 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm0
1739 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1740 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm14
1741 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm15
1742 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm0 = [2,8,14,0,2,8,14,0,2,8,14,0,2,8,14,0]
1743 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm15, %xmm2
1744 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm1 = [0,0,6,12,0,0,6,12,0,0,6,12,0,0,6,12]
1745 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm14, %xmm3
1746 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
1747 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm9
1748 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm8
1749 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm8[4,10,u,u,u,u,u,u,u,u,u,u,u]
1750 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm9[2,8,14],zero,zero,xmm9[u,u,u,u,u,u,u,u,u,u,u]
1751 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm10, %xmm10
1752 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm2 = <0,0,0,0,0,255,255,255,255,255,255,u,u,u,u,u>
1753 ; AVX1-ONLY-NEXT:    vpblendvb %xmm2, %xmm3, %xmm10, %xmm3
1754 ; AVX1-ONLY-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1755 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm3 = [3,9,15,0,3,9,15,0,3,9,15,0,3,9,15,0]
1756 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm15, %xmm10
1757 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm11 = [0,1,7,13,0,1,7,13,0,1,7,13,0,1,7,13]
1758 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm14, %xmm12
1759 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm10 = xmm12[0],xmm10[0]
1760 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,zero,xmm8[5,11,u,u,u,u,u,u,u,u,u,u,u]
1761 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm9[3,9,15],zero,zero,xmm9[u,u,u,u,u,u,u,u,u,u,u]
1762 ; AVX1-ONLY-NEXT:    vpor %xmm12, %xmm13, %xmm12
1763 ; AVX1-ONLY-NEXT:    vpblendvb %xmm2, %xmm10, %xmm12, %xmm2
1764 ; AVX1-ONLY-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1765 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1766 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm5, %xmm0
1767 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1768 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm4, %xmm1
1769 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
1770 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1771 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm7[u,u,u,u,u,u,u,u,u,u,u,4,10],zero,zero,zero
1772 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1773 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm6[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm6[0,6,12]
1774 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
1775 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm2 = <u,u,u,u,u,255,255,255,255,255,255,0,0,0,0,0>
1776 ; AVX1-ONLY-NEXT:    vpblendvb %xmm2, %xmm0, %xmm1, %xmm0
1777 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1778 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm5, %xmm0
1779 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm4, %xmm1
1780 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
1781 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm7[u,u,u,u,u,u,u,u,u,u,u,5,11],zero,zero,zero
1782 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm6[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm6[1,7,13]
1783 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm3, %xmm1
1784 ; AVX1-ONLY-NEXT:    vpblendvb %xmm2, %xmm0, %xmm1, %xmm0
1785 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1786 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm9[4,10],zero,zero,zero,xmm9[u,u,u,u,u,u,u,u,u,u,u]
1787 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,xmm8[0,6,12,u,u,u,u,u,u,u,u,u,u,u]
1788 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm1
1789 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm15[u,u,u,u,u,u,u,u,4,10,u,u,u,u,u,u]
1790 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm14[u,u,u,u,u,u,u,u,u,u,u,u,u,2,8,14]
1791 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm0[1]
1792 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <255,255,255,255,255,0,0,0,0,0,u,u,u,u,u,u>
1793 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
1794 ; AVX1-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1795 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm9[5,11],zero,zero,zero,xmm9[u,u,u,u,u,u,u,u,u,u,u]
1796 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm8[1,7,13,u,u,u,u,u,u,u,u,u,u,u]
1797 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
1798 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm15[u,u,u,u,u,u,u,u,5,11,u,u,u,u,u,u]
1799 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm14[u,u,u,u,u,u,u,u,u,u,u,u,u,3,9,15]
1800 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm3[1],xmm2[1]
1801 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm0
1802 ; AVX1-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1803 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm10 = [128,128,128,2,8,14,0,0,128,128,128,2,8,14,0,0]
1804 ; AVX1-ONLY-NEXT:    # xmm10 = mem[0,0]
1805 ; AVX1-ONLY-NEXT:    vmovdqa 112(%rdi), %xmm5
1806 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm5, %xmm1
1807 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [0,6,12,128,128,128,0,0,0,6,12,128,128,128,0,0]
1808 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
1809 ; AVX1-ONLY-NEXT:    vmovdqa 96(%rdi), %xmm3
1810 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm3, %xmm2
1811 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
1812 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rdi), %xmm2
1813 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[4,10]
1814 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm4
1815 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm4[u,u,u,u,u,u,u,u,u,u,u,2,8,14],zero,zero
1816 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm13, %xmm0
1817 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
1818 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm14[u,u,4,10,u,u,u,u,u,u,u,u,u,u,u,u]
1819 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm15[u,u,u,u,0,6,12,u,u,u,u,u,u,u,u,u]
1820 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm13[0],xmm1[0],xmm13[1],xmm1[1]
1821 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm8, %xmm10
1822 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm9, %xmm6
1823 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm10, %xmm6
1824 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm6[0,1,2],xmm1[3,4,5],xmm6[6,7]
1825 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm6 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255]
1826 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm6, %ymm0
1827 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm1, %ymm1
1828 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm0
1829 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm1 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0]
1830 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm0, %ymm0
1831 ; AVX1-ONLY-NEXT:    vinsertf128 $1, (%rsp), %ymm0, %ymm10 # 16-byte Folded Reload
1832 ; AVX1-ONLY-NEXT:    vandnps %ymm10, %ymm1, %ymm10
1833 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm10, %ymm0
1834 ; AVX1-ONLY-NEXT:    vmovups %ymm0, (%rsp) # 32-byte Spill
1835 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = [128,128,128,3,9,15,0,0,128,128,128,3,9,15,0,0]
1836 ; AVX1-ONLY-NEXT:    # xmm7 = mem[0,0]
1837 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm5, %xmm13
1838 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [1,7,13,128,128,128,0,0,1,7,13,128,128,128,0,0]
1839 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
1840 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm3, %xmm12
1841 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm12, %xmm12
1842 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[5,11]
1843 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm4[u,u,u,u,u,u,u,u,u,u,u,3,9,15],zero,zero
1844 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm11, %xmm11
1845 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm12, %ymm11, %ymm11
1846 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm14[u,u,5,11,u,u,u,u,u,u,u,u,u,u,u,u]
1847 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm15[u,u,u,u,1,7,13,u,u,u,u,u,u,u,u,u]
1848 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm12 = xmm13[0],xmm12[0],xmm13[1],xmm12[1]
1849 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm8, %xmm7
1850 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm9, %xmm0
1851 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm0, %xmm0
1852 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm12[3,4,5],xmm0[6,7]
1853 ; AVX1-ONLY-NEXT:    vandnps %ymm11, %ymm6, %ymm7
1854 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm0, %ymm0
1855 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm0, %ymm0
1856 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm0, %ymm0
1857 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm6 # 16-byte Folded Reload
1858 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm1, %ymm1
1859 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
1860 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
1861 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm5[4,10,u,u,u,u,u,u,u,u,u,u,u]
1862 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[2,8,14],zero,zero,xmm3[u,u,u,u,u,u,u,u,u,u,u]
1863 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm6, %xmm1
1864 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm4[u,u,u,u,u,u,u,u,u,u,u,4,10],zero,zero,zero
1865 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm2[0,6,12]
1866 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm7, %xmm6
1867 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm6, %ymm1
1868 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm6 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255]
1869 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm6, %ymm1
1870 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm7 # 32-byte Folded Reload
1871 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm7, %ymm7
1872 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm10 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0]
1873 ; AVX1-ONLY-NEXT:    vandps %ymm7, %ymm10, %ymm7
1874 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm8 # 16-byte Folded Reload
1875 ; AVX1-ONLY-NEXT:    vandnps %ymm8, %ymm10, %ymm8
1876 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm8, %ymm13
1877 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm5[5,11,u,u,u,u,u,u,u,u,u,u,u]
1878 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm3[3,9,15],zero,zero,xmm3[u,u,u,u,u,u,u,u,u,u,u]
1879 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm7
1880 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm4[u,u,u,u,u,u,u,u,u,u,u,5,11],zero,zero,zero
1881 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm2[1,7,13]
1882 ; AVX1-ONLY-NEXT:    vpor %xmm8, %xmm9, %xmm8
1883 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm8, %ymm7
1884 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm6, %ymm7
1885 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm6 # 32-byte Folded Reload
1886 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm6, %ymm6
1887 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm10, %ymm6
1888 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm7 # 16-byte Folded Reload
1889 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm10, %ymm7
1890 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm6, %ymm14
1891 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[4,10],zero,zero,zero,xmm3[u,u,u,u,u,u,u,u,u,u,u]
1892 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm5[0,6,12,u,u,u,u,u,u,u,u,u,u,u]
1893 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm7, %xmm6
1894 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = [0,0,128,128,128,2,8,14,0,0,128,128,128,2,8,14]
1895 ; AVX1-ONLY-NEXT:    # xmm7 = mem[0,0]
1896 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm2, %xmm8
1897 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm9 = [0,0,0,6,12,128,128,128,0,0,0,6,12,128,128,128]
1898 ; AVX1-ONLY-NEXT:    # xmm9 = mem[0,0]
1899 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm4, %xmm11
1900 ; AVX1-ONLY-NEXT:    vpor %xmm8, %xmm11, %xmm8
1901 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm8, %ymm6
1902 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm8 = [0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
1903 ; AVX1-ONLY-NEXT:    vandnps {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm11 # 32-byte Folded Reload
1904 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm8, %ymm6
1905 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm11, %ymm6
1906 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1907 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm1, %xmm7
1908 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1909 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm0, %xmm9
1910 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm9, %xmm7
1911 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
1912 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm15[u,u,u,u,u,u,u,u,4,10,u,u,u,u,u,u]
1913 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
1914 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm12[u,u,u,u,u,u,u,u,u,u,u,u,u,2,8,14]
1915 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm9 = xmm11[1],xmm9[1]
1916 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm9[0,1,2,3,4],xmm7[5,6,7]
1917 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm10, %ymm6
1918 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm0, %ymm7
1919 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm10, %ymm7
1920 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm6, %ymm6
1921 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[5,11],zero,zero,zero,xmm3[u,u,u,u,u,u,u,u,u,u,u]
1922 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm5[1,7,13,u,u,u,u,u,u,u,u,u,u,u]
1923 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm5, %xmm3
1924 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = [0,0,128,128,128,3,9,15,0,0,128,128,128,3,9,15]
1925 ; AVX1-ONLY-NEXT:    # xmm5 = mem[0,0]
1926 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm2, %xmm2
1927 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = [0,0,1,7,13,128,128,128,0,0,1,7,13,128,128,128]
1928 ; AVX1-ONLY-NEXT:    # xmm7 = mem[0,0]
1929 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm4, %xmm4
1930 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm4, %xmm2
1931 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm2, %ymm2
1932 ; AVX1-ONLY-NEXT:    vandnps {{[-0-9]+}}(%r{{[sb]}}p), %ymm8, %ymm3 # 32-byte Folded Reload
1933 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm8, %ymm2
1934 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm2, %ymm2
1935 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm1, %xmm3
1936 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm0, %xmm4
1937 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
1938 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm15[u,u,u,u,u,u,u,u,5,11,u,u,u,u,u,u]
1939 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm12[u,u,u,u,u,u,u,u,u,u,u,u,u,3,9,15]
1940 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm4 = xmm5[1],xmm4[1]
1941 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm4[0,1,2,3,4],xmm3[5,6,7]
1942 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm10, %ymm2
1943 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm3
1944 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm10, %ymm1
1945 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm2, %ymm1
1946 ; AVX1-ONLY-NEXT:    vmovups (%rsp), %ymm0 # 32-byte Reload
1947 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%rsi)
1948 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
1949 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%rdx)
1950 ; AVX1-ONLY-NEXT:    vmovaps %ymm13, (%rcx)
1951 ; AVX1-ONLY-NEXT:    vmovaps %ymm14, (%r8)
1952 ; AVX1-ONLY-NEXT:    vmovaps %ymm6, (%r9)
1953 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1954 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%rax)
1955 ; AVX1-ONLY-NEXT:    addq $168, %rsp
1956 ; AVX1-ONLY-NEXT:    vzeroupper
1957 ; AVX1-ONLY-NEXT:    retq
1959 ; AVX2-ONLY-LABEL: load_i8_stride6_vf32:
1960 ; AVX2-ONLY:       # %bb.0:
1961 ; AVX2-ONLY-NEXT:    vmovdqa 160(%rdi), %ymm4
1962 ; AVX2-ONLY-NEXT:    vmovdqa (%rdi), %ymm2
1963 ; AVX2-ONLY-NEXT:    vmovdqa 32(%rdi), %ymm3
1964 ; AVX2-ONLY-NEXT:    vmovdqa 64(%rdi), %ymm0
1965 ; AVX2-ONLY-NEXT:    vmovdqa 96(%rdi), %ymm1
1966 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm8 = <255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255>
1967 ; AVX2-ONLY-NEXT:    vpblendvb %ymm8, %ymm2, %ymm3, %ymm9
1968 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm9[0,6,12],zero,zero,zero,xmm9[4,10],zero,zero,zero,xmm9[u,u,u,u,u]
1969 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm9, %xmm10
1970 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm10[2,8,14],zero,zero,xmm10[0,6,12,u,u,u,u,u]
1971 ; AVX2-ONLY-NEXT:    vpor %xmm5, %xmm6, %xmm11
1972 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm7 = <u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0>
1973 ; AVX2-ONLY-NEXT:    vperm2i128 {{.*#+}} ymm5 = ymm0[0,1],ymm1[0,1]
1974 ; AVX2-ONLY-NEXT:    vperm2i128 {{.*#+}} ymm6 = ymm0[2,3],ymm1[2,3]
1975 ; AVX2-ONLY-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm1
1976 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm0 = ymm1[u,u,u,u,u,u,u,u,u,u,u,2,8,14,4,10,16,22,28,18,24,30,u,u,u,u,u,u,u,u,u,u]
1977 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm7 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
1978 ; AVX2-ONLY-NEXT:    vpblendvb %ymm7, %ymm11, %ymm0, %ymm0
1979 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[1,7,13],zero,zero,zero,xmm9[5,11],zero,zero,zero,xmm9[u,u,u,u,u]
1980 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,zero,xmm10[3,9,15],zero,zero,xmm10[1,7,13,u,u,u,u,u]
1981 ; AVX2-ONLY-NEXT:    vpor %xmm9, %xmm10, %xmm9
1982 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,u,3,9,15,5,11,17,23,29,19,25,31,u,u,u,u,u,u,u,u,u,u]
1983 ; AVX2-ONLY-NEXT:    vpblendvb %ymm7, %ymm9, %ymm1, %ymm1
1984 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm11 = <255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255>
1985 ; AVX2-ONLY-NEXT:    vpblendvb %ymm11, %ymm3, %ymm2, %ymm9
1986 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm9, %xmm10
1987 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,zero,xmm10[4,10],zero,zero,zero,xmm10[2,8,14,u,u,u,u,u]
1988 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm9[2,8,14],zero,zero,xmm9[0,6,12],zero,zero,zero,xmm9[u,u,u,u,u]
1989 ; AVX2-ONLY-NEXT:    vpor %xmm12, %xmm13, %xmm12
1990 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm13 = <255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0>
1991 ; AVX2-ONLY-NEXT:    vpblendvb %ymm13, %ymm6, %ymm5, %ymm13
1992 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm14 = ymm13[u,u,u,u,u,u,u,u,u,u,u,4,10,0,6,12,18,24,30,20,26,u,u,u,u,u,u,u,u,u,u,u]
1993 ; AVX2-ONLY-NEXT:    vpblendvb %ymm7, %ymm12, %ymm14, %ymm12
1994 ; AVX2-ONLY-NEXT:    vmovdqa 128(%rdi), %ymm14
1995 ; AVX2-ONLY-NEXT:    vpblendvb %ymm8, %ymm14, %ymm4, %ymm8
1996 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,zero,xmm10[5,11],zero,zero,zero,xmm10[3,9,15,u,u,u,u,u]
1997 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[3,9,15],zero,zero,xmm9[1,7,13],zero,zero,zero,xmm9[u,u,u,u,u]
1998 ; AVX2-ONLY-NEXT:    vpor %xmm10, %xmm9, %xmm9
1999 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm8[u,u,u,u,u,0,6,12],zero,zero,zero,xmm8[4,10],zero,zero,zero
2000 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm13 = ymm13[u,u,u,u,u,u,u,u,u,u,u,5,11,1,7,13,19,25,31,21,27,u,u,u,u,u,u,u,u,u,u,u]
2001 ; AVX2-ONLY-NEXT:    vpblendvb %ymm7, %ymm9, %ymm13, %ymm13
2002 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm8, %xmm9
2003 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm9[u,u,u,u,u],zero,zero,zero,xmm9[2,8,14],zero,zero,xmm9[0,6,12]
2004 ; AVX2-ONLY-NEXT:    vpor %xmm7, %xmm10, %xmm7
2005 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
2006 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm10 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0]
2007 ; AVX2-ONLY-NEXT:    vpblendvb %ymm10, %ymm12, %ymm7, %ymm7
2008 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm12 = <u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u>
2009 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,1,7,13],zero,zero,zero,xmm8[5,11],zero,zero,zero
2010 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u],zero,zero,zero,xmm9[3,9,15],zero,zero,xmm9[1,7,13]
2011 ; AVX2-ONLY-NEXT:    vpor %xmm8, %xmm9, %xmm8
2012 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm4, %ymm14, %ymm9
2013 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
2014 ; AVX2-ONLY-NEXT:    vpblendvb %ymm10, %ymm13, %ymm8, %ymm8
2015 ; AVX2-ONLY-NEXT:    vpblendvb %ymm11, %ymm4, %ymm14, %ymm4
2016 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm4, %xmm11
2017 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm11[u,u,u,u,u],zero,zero,zero,xmm11[4,10],zero,zero,zero,xmm11[2,8,14]
2018 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm4[u,u,u,u,u,2,8,14],zero,zero,xmm4[0,6,12],zero,zero,zero
2019 ; AVX2-ONLY-NEXT:    vpor %xmm13, %xmm14, %xmm13
2020 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm3, %ymm2, %ymm2
2021 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm2, %xmm3
2022 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm12 = <0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u>
2023 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm6, %ymm5, %ymm5
2024 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm3[0,6,12],zero,zero,zero,xmm3[4,10,u,u,u,u,u,u]
2025 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm2[4,10],zero,zero,zero,xmm2[2,8,14],zero,zero,xmm2[u,u,u,u,u,u]
2026 ; AVX2-ONLY-NEXT:    vpor %xmm6, %xmm12, %xmm6
2027 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm12 = ymm5[u,u,u,u,u,u,u,u,u,u,0,6,12,2,8,14,20,26,16,22,28,u,u,u,u,u,u,u,u,u,u,u]
2028 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0,1,2,3,4],xmm12[5,6,7]
2029 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm12[4,5,6,7]
2030 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm12
2031 ; AVX2-ONLY-NEXT:    vpblendvb %ymm10, %ymm6, %ymm12, %ymm6
2032 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,u,u,u],zero,zero,zero,xmm11[5,11],zero,zero,zero,xmm11[3,9,15]
2033 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,3,9,15],zero,zero,xmm4[1,7,13],zero,zero,zero
2034 ; AVX2-ONLY-NEXT:    vpor %xmm4, %xmm11, %xmm4
2035 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm3[1,7,13],zero,zero,zero,xmm3[5,11,u,u,u,u,u,u]
2036 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[5,11],zero,zero,zero,xmm2[3,9,15],zero,zero,xmm2[u,u,u,u,u,u]
2037 ; AVX2-ONLY-NEXT:    vpor %xmm3, %xmm2, %xmm2
2038 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm3 = ymm5[u,u,u,u,u,u,u,u,u,u,1,7,13,3,9,15,21,27,17,23,29,u,u,u,u,u,u,u,u,u,u,u]
2039 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4],xmm3[5,6,7]
2040 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7]
2041 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm9, %xmm3
2042 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
2043 ; AVX2-ONLY-NEXT:    vpblendvb %ymm10, %ymm2, %ymm4, %ymm2
2044 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm3[u,u,u,u,u,u],zero,zero,xmm3[0,6,12],zero,zero,zero,xmm3[4,10]
2045 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm9[u,u,u,u,u,u,4,10],zero,zero,zero,xmm9[2,8,14],zero,zero
2046 ; AVX2-ONLY-NEXT:    vpor %xmm4, %xmm5, %xmm4
2047 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
2048 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} ymm4 = ymm0[0,1,2],ymm4[3,4,5,6,7],ymm0[8,9,10],ymm4[11,12,13,14,15]
2049 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5,6,7]
2050 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u],zero,zero,xmm3[1,7,13],zero,zero,zero,xmm3[5,11]
2051 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm9[u,u,u,u,u,u,5,11],zero,zero,zero,xmm9[3,9,15],zero,zero
2052 ; AVX2-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
2053 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
2054 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} ymm3 = ymm1[0,1,2],ymm3[3,4,5,6,7],ymm1[8,9,10],ymm3[11,12,13,14,15]
2055 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm3[4,5,6,7]
2056 ; AVX2-ONLY-NEXT:    vmovdqa %ymm0, (%rsi)
2057 ; AVX2-ONLY-NEXT:    vmovdqa %ymm1, (%rdx)
2058 ; AVX2-ONLY-NEXT:    vmovdqa %ymm7, (%rcx)
2059 ; AVX2-ONLY-NEXT:    vmovdqa %ymm8, (%r8)
2060 ; AVX2-ONLY-NEXT:    vmovdqa %ymm6, (%r9)
2061 ; AVX2-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
2062 ; AVX2-ONLY-NEXT:    vmovdqa %ymm2, (%rax)
2063 ; AVX2-ONLY-NEXT:    vzeroupper
2064 ; AVX2-ONLY-NEXT:    retq
2066 ; AVX512F-LABEL: load_i8_stride6_vf32:
2067 ; AVX512F:       # %bb.0:
2068 ; AVX512F-NEXT:    movq {{[0-9]+}}(%rsp), %rax
2069 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm0 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]
2070 ; AVX512F-NEXT:    vmovdqa64 (%rdi), %ymm17
2071 ; AVX512F-NEXT:    vmovdqa 32(%rdi), %ymm3
2072 ; AVX512F-NEXT:    vmovdqa 64(%rdi), %ymm1
2073 ; AVX512F-NEXT:    vmovdqa 128(%rdi), %ymm6
2074 ; AVX512F-NEXT:    vmovdqa %ymm0, %ymm7
2075 ; AVX512F-NEXT:    vpternlogq $202, %ymm3, %ymm17, %ymm7
2076 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm4 = xmm7[0,6,12],zero,zero,zero,xmm7[4,10],zero,zero,zero,xmm7[u,u,u,u,u]
2077 ; AVX512F-NEXT:    vextracti128 $1, %ymm7, %xmm8
2078 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm8[2,8,14],zero,zero,xmm8[0,6,12,u,u,u,u,u]
2079 ; AVX512F-NEXT:    vpor %xmm4, %xmm5, %xmm4
2080 ; AVX512F-NEXT:    vperm2i128 {{.*#+}} ymm5 = ymm1[2,3],mem[2,3]
2081 ; AVX512F-NEXT:    vinserti128 $1, 96(%rdi), %ymm1, %ymm1
2082 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm9 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,0]
2083 ; AVX512F-NEXT:    vmovdqa %ymm9, %ymm10
2084 ; AVX512F-NEXT:    vpternlogq $202, %ymm5, %ymm1, %ymm10
2085 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[2,8,14,4,10,16,22,28,18,24,30],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
2086 ; AVX512F-NEXT:    vmovdqa64 {{.*#+}} ymm16 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255]
2087 ; AVX512F-NEXT:    vpternlogq $248, %ymm16, %ymm4, %ymm11
2088 ; AVX512F-NEXT:    vmovdqa 160(%rdi), %ymm13
2089 ; AVX512F-NEXT:    vmovdqa %ymm0, %ymm14
2090 ; AVX512F-NEXT:    vpternlogq $202, %ymm6, %ymm13, %ymm14
2091 ; AVX512F-NEXT:    vextracti128 $1, %ymm14, %xmm15
2092 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm4 = xmm15[u,u,u,u,u,u],zero,zero,xmm15[0,6,12],zero,zero,zero,xmm15[4,10]
2093 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm12 = xmm14[u,u,u,u,u,u,4,10],zero,zero,zero,xmm14[2,8,14],zero,zero
2094 ; AVX512F-NEXT:    vpor %xmm4, %xmm12, %xmm4
2095 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
2096 ; AVX512F-NEXT:    vpblendw {{.*#+}} ymm4 = ymm11[0,1,2],ymm4[3,4,5,6,7],ymm11[8,9,10],ymm4[11,12,13,14,15]
2097 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm2 = ymm11[0,1,2,3],ymm4[4,5,6,7]
2098 ; AVX512F-NEXT:    vmovdqa64 %ymm2, %ymm18
2099 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[1,7,13],zero,zero,zero,xmm7[5,11],zero,zero,zero,xmm7[u,u,u,u,u]
2100 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,zero,xmm8[3,9,15],zero,zero,xmm8[1,7,13,u,u,u,u,u]
2101 ; AVX512F-NEXT:    vpor %xmm7, %xmm8, %xmm7
2102 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[3,9,15,5,11,17,23,29,19,25,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
2103 ; AVX512F-NEXT:    vpternlogq $248, %ymm16, %ymm7, %ymm8
2104 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = xmm15[u,u,u,u,u,u],zero,zero,xmm15[1,7,13],zero,zero,zero,xmm15[5,11]
2105 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm10 = xmm14[u,u,u,u,u,u,5,11],zero,zero,zero,xmm14[3,9,15],zero,zero
2106 ; AVX512F-NEXT:    vpor %xmm7, %xmm10, %xmm7
2107 ; AVX512F-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
2108 ; AVX512F-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0,1,2],ymm7[3,4,5,6,7],ymm8[8,9,10],ymm7[11,12,13,14,15]
2109 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm7 = ymm8[0,1,2,3],ymm7[4,5,6,7]
2110 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm8 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]
2111 ; AVX512F-NEXT:    vmovdqa %ymm8, %ymm10
2112 ; AVX512F-NEXT:    vpternlogq $202, %ymm17, %ymm3, %ymm10
2113 ; AVX512F-NEXT:    vextracti128 $1, %ymm10, %xmm11
2114 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,zero,xmm11[4,10],zero,zero,zero,xmm11[2,8,14,u,u,u,u,u]
2115 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm14 = xmm10[2,8,14],zero,zero,xmm10[0,6,12],zero,zero,zero,xmm10[u,u,u,u,u]
2116 ; AVX512F-NEXT:    vpor %xmm12, %xmm14, %xmm12
2117 ; AVX512F-NEXT:    vpternlogq $202, %ymm1, %ymm5, %ymm9
2118 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm14 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm9[4,10,0,6,12,18,24,30,20,26,u,u,u,u,u,u,u,u,u,u,u]
2119 ; AVX512F-NEXT:    vmovdqa64 {{.*#+}} ymm16 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255]
2120 ; AVX512F-NEXT:    vpternlogq $248, %ymm16, %ymm12, %ymm14
2121 ; AVX512F-NEXT:    vmovdqa %ymm0, %ymm12
2122 ; AVX512F-NEXT:    vpternlogq $202, %ymm13, %ymm6, %ymm12
2123 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm15 = xmm12[u,u,u,u,u,0,6,12],zero,zero,zero,xmm12[4,10],zero,zero,zero
2124 ; AVX512F-NEXT:    vextracti128 $1, %ymm12, %xmm2
2125 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm4 = xmm2[u,u,u,u,u],zero,zero,zero,xmm2[2,8,14],zero,zero,xmm2[0,6,12]
2126 ; AVX512F-NEXT:    vpor %xmm4, %xmm15, %xmm4
2127 ; AVX512F-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
2128 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm15 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0]
2129 ; AVX512F-NEXT:    vpternlogq $184, %ymm14, %ymm15, %ymm4
2130 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,zero,xmm11[5,11],zero,zero,zero,xmm11[3,9,15,u,u,u,u,u]
2131 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[3,9,15],zero,zero,xmm10[1,7,13],zero,zero,zero,xmm10[u,u,u,u,u]
2132 ; AVX512F-NEXT:    vpor %xmm11, %xmm10, %xmm10
2133 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm9 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm9[5,11,1,7,13,19,25,31,21,27,u,u,u,u,u,u,u,u,u,u,u]
2134 ; AVX512F-NEXT:    vpternlogq $248, %ymm16, %ymm10, %ymm9
2135 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm10 = xmm12[u,u,u,u,u,1,7,13],zero,zero,zero,xmm12[5,11],zero,zero,zero
2136 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u],zero,zero,zero,xmm2[3,9,15],zero,zero,xmm2[1,7,13]
2137 ; AVX512F-NEXT:    vpor %xmm2, %xmm10, %xmm2
2138 ; AVX512F-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
2139 ; AVX512F-NEXT:    vpternlogq $184, %ymm9, %ymm15, %ymm2
2140 ; AVX512F-NEXT:    vpternlogq $202, %ymm6, %ymm13, %ymm8
2141 ; AVX512F-NEXT:    vextracti128 $1, %ymm8, %xmm6
2142 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm9 = xmm6[u,u,u,u,u],zero,zero,zero,xmm6[4,10],zero,zero,zero,xmm6[2,8,14]
2143 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm10 = xmm8[u,u,u,u,u,2,8,14],zero,zero,xmm8[0,6,12],zero,zero,zero
2144 ; AVX512F-NEXT:    vpor %xmm9, %xmm10, %xmm9
2145 ; AVX512F-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
2146 ; AVX512F-NEXT:    vpternlogq $202, %ymm17, %ymm3, %ymm0
2147 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm3
2148 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,xmm3[0,6,12],zero,zero,zero,xmm3[4,10,u,u,u,u,u,u]
2149 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm11 = xmm0[4,10],zero,zero,zero,xmm0[2,8,14],zero,zero,xmm0[u,u,u,u,u,u]
2150 ; AVX512F-NEXT:    vpor %xmm10, %xmm11, %xmm10
2151 ; AVX512F-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm5, %ymm1
2152 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm5 = ymm1[u,u,u,u,u,u,u,u,u,u,0,6,12,2,8,14,20,26,16,22,28,u,u,u,u,u,u,u,u,u,u,u]
2153 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm10 = xmm10[0,1,2,3,4],xmm5[5,6,7]
2154 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm10[0,1,2,3],ymm5[4,5,6,7]
2155 ; AVX512F-NEXT:    vpternlogq $226, %ymm9, %ymm15, %ymm5
2156 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,u],zero,zero,zero,xmm6[5,11],zero,zero,zero,xmm6[3,9,15]
2157 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,3,9,15],zero,zero,xmm8[1,7,13],zero,zero,zero
2158 ; AVX512F-NEXT:    vpor %xmm6, %xmm8, %xmm6
2159 ; AVX512F-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
2160 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm3[1,7,13],zero,zero,zero,xmm3[5,11,u,u,u,u,u,u]
2161 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[5,11],zero,zero,zero,xmm0[3,9,15],zero,zero,xmm0[u,u,u,u,u,u]
2162 ; AVX512F-NEXT:    vpor %xmm3, %xmm0, %xmm0
2163 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,1,7,13,3,9,15,21,27,17,23,29,u,u,u,u,u,u,u,u,u,u,u]
2164 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5,6,7]
2165 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
2166 ; AVX512F-NEXT:    vpternlogq $226, %ymm6, %ymm15, %ymm0
2167 ; AVX512F-NEXT:    vmovdqa64 %ymm18, (%rsi)
2168 ; AVX512F-NEXT:    vmovdqa %ymm7, (%rdx)
2169 ; AVX512F-NEXT:    vmovdqa %ymm4, (%rcx)
2170 ; AVX512F-NEXT:    vmovdqa %ymm2, (%r8)
2171 ; AVX512F-NEXT:    vmovdqa %ymm5, (%r9)
2172 ; AVX512F-NEXT:    vmovdqa %ymm0, (%rax)
2173 ; AVX512F-NEXT:    vzeroupper
2174 ; AVX512F-NEXT:    retq
2176 ; AVX512BW-LABEL: load_i8_stride6_vf32:
2177 ; AVX512BW:       # %bb.0:
2178 ; AVX512BW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
2179 ; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm4
2180 ; AVX512BW-NEXT:    vmovdqa 32(%rdi), %ymm0
2181 ; AVX512BW-NEXT:    vmovdqa 64(%rdi), %ymm3
2182 ; AVX512BW-NEXT:    vmovdqa 128(%rdi), %ymm2
2183 ; AVX512BW-NEXT:    vperm2i128 {{.*#+}} ymm1 = ymm3[2,3],mem[2,3]
2184 ; AVX512BW-NEXT:    vinserti128 $1, 96(%rdi), %ymm3, %ymm8
2185 ; AVX512BW-NEXT:    movw $-28124, %r10w # imm = 0x9224
2186 ; AVX512BW-NEXT:    kmovd %r10d, %k2
2187 ; AVX512BW-NEXT:    vpblendmw %ymm1, %ymm8, %ymm6 {%k2}
2188 ; AVX512BW-NEXT:    movw $18724, %r10w # imm = 0x4924
2189 ; AVX512BW-NEXT:    kmovd %r10d, %k1
2190 ; AVX512BW-NEXT:    vpblendmw %ymm0, %ymm4, %ymm7 {%k1}
2191 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm7[0,6,12],zero,zero,zero,xmm7[4,10],zero,zero,zero,xmm7[u,u,u,u,u]
2192 ; AVX512BW-NEXT:    vextracti128 $1, %ymm7, %xmm9
2193 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm9[2,8,14],zero,zero,xmm9[0,6,12,u,u,u,u,u]
2194 ; AVX512BW-NEXT:    vpor %xmm3, %xmm5, %xmm5
2195 ; AVX512BW-NEXT:    movl $4192256, %r10d # imm = 0x3FF800
2196 ; AVX512BW-NEXT:    kmovd %r10d, %k3
2197 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm5 {%k3} = ymm6[u,u,u,u,u,u,u,u,u,u,u,2,8,14,4,10,16,22,28,18,24,30,u,u,u,u,u,u,u,u,u,u]
2198 ; AVX512BW-NEXT:    vmovdqa 160(%rdi), %ymm3
2199 ; AVX512BW-NEXT:    vpblendmw %ymm2, %ymm3, %ymm10 {%k1}
2200 ; AVX512BW-NEXT:    vextracti128 $1, %ymm10, %xmm11
2201 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm11[u,u,u,u,u,u],zero,zero,xmm11[0,6,12],zero,zero,zero,xmm11[4,10]
2202 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm10[u,u,u,u,u,u,4,10],zero,zero,zero,xmm10[2,8,14],zero,zero
2203 ; AVX512BW-NEXT:    vpor %xmm12, %xmm13, %xmm12
2204 ; AVX512BW-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
2205 ; AVX512BW-NEXT:    vpblendw {{.*#+}} ymm12 = ymm5[0,1,2],ymm12[3,4,5,6,7],ymm5[8,9,10],ymm12[11,12,13,14,15]
2206 ; AVX512BW-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm12[4,5,6,7]
2207 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[1,7,13],zero,zero,zero,xmm7[5,11],zero,zero,zero,xmm7[u,u,u,u,u]
2208 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,zero,xmm9[3,9,15],zero,zero,xmm9[1,7,13,u,u,u,u,u]
2209 ; AVX512BW-NEXT:    vpor %xmm7, %xmm9, %xmm7
2210 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm7 {%k3} = ymm6[u,u,u,u,u,u,u,u,u,u,u,3,9,15,5,11,17,23,29,19,25,31,u,u,u,u,u,u,u,u,u,u]
2211 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm11[u,u,u,u,u,u],zero,zero,xmm11[1,7,13],zero,zero,zero,xmm11[5,11]
2212 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm10[u,u,u,u,u,u,5,11],zero,zero,zero,xmm10[3,9,15],zero,zero
2213 ; AVX512BW-NEXT:    vpor %xmm6, %xmm9, %xmm6
2214 ; AVX512BW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
2215 ; AVX512BW-NEXT:    vpblendw {{.*#+}} ymm6 = ymm7[0,1,2],ymm6[3,4,5,6,7],ymm7[8,9,10],ymm6[11,12,13,14,15]
2216 ; AVX512BW-NEXT:    vpblendd {{.*#+}} ymm6 = ymm7[0,1,2,3],ymm6[4,5,6,7]
2217 ; AVX512BW-NEXT:    vpblendmw %ymm8, %ymm1, %ymm9 {%k2}
2218 ; AVX512BW-NEXT:    movw $9362, %di # imm = 0x2492
2219 ; AVX512BW-NEXT:    kmovd %edi, %k3
2220 ; AVX512BW-NEXT:    vpblendmw %ymm4, %ymm0, %ymm10 {%k3}
2221 ; AVX512BW-NEXT:    vextracti128 $1, %ymm10, %xmm11
2222 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm11[4,10],zero,zero,zero,xmm11[2,8,14,u,u,u,u,u]
2223 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm10[2,8,14],zero,zero,xmm10[0,6,12],zero,zero,zero,xmm10[u,u,u,u,u]
2224 ; AVX512BW-NEXT:    vpor %xmm7, %xmm12, %xmm7
2225 ; AVX512BW-NEXT:    movl $2095104, %edi # imm = 0x1FF800
2226 ; AVX512BW-NEXT:    kmovd %edi, %k4
2227 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm7 {%k4} = ymm9[u,u,u,u,u,u,u,u,u,u,u,4,10,0,6,12,18,24,30,20,26,u,u,u,u,u,u,u,u,u,u,u]
2228 ; AVX512BW-NEXT:    vpblendmw %ymm3, %ymm2, %ymm12 {%k1}
2229 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm12[u,u,u,u,u,0,6,12],zero,zero,zero,xmm12[4,10],zero,zero,zero
2230 ; AVX512BW-NEXT:    vextracti128 $1, %ymm12, %xmm14
2231 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm14[u,u,u,u,u],zero,zero,zero,xmm14[2,8,14],zero,zero,xmm14[0,6,12]
2232 ; AVX512BW-NEXT:    vpor %xmm13, %xmm15, %xmm13
2233 ; AVX512BW-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
2234 ; AVX512BW-NEXT:    movl $-2097152, %edi # imm = 0xFFE00000
2235 ; AVX512BW-NEXT:    kmovd %edi, %k2
2236 ; AVX512BW-NEXT:    vmovdqu8 %ymm13, %ymm7 {%k2}
2237 ; AVX512BW-NEXT:    movw $9289, %di # imm = 0x2449
2238 ; AVX512BW-NEXT:    kmovd %edi, %k5
2239 ; AVX512BW-NEXT:    vmovdqu16 %ymm8, %ymm1 {%k5}
2240 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,zero,xmm11[5,11],zero,zero,zero,xmm11[3,9,15,u,u,u,u,u]
2241 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[3,9,15],zero,zero,xmm10[1,7,13],zero,zero,zero,xmm10[u,u,u,u,u]
2242 ; AVX512BW-NEXT:    vpor %xmm8, %xmm10, %xmm8
2243 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm8 {%k4} = ymm9[u,u,u,u,u,u,u,u,u,u,u,5,11,1,7,13,19,25,31,21,27,u,u,u,u,u,u,u,u,u,u,u]
2244 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm12[u,u,u,u,u,1,7,13],zero,zero,zero,xmm12[5,11],zero,zero,zero
2245 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm14[u,u,u,u,u],zero,zero,zero,xmm14[3,9,15],zero,zero,xmm14[1,7,13]
2246 ; AVX512BW-NEXT:    vpor %xmm9, %xmm10, %xmm9
2247 ; AVX512BW-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
2248 ; AVX512BW-NEXT:    vmovdqu8 %ymm9, %ymm8 {%k2}
2249 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm9 = ymm1[u,u,u,u,u,u,u,u,u,u,0,6,12,2,8,14,20,26,16,22,28,u,u,u,u,u,u,u,u,u,u,u]
2250 ; AVX512BW-NEXT:    vmovdqu16 %ymm4, %ymm0 {%k1}
2251 ; AVX512BW-NEXT:    vextracti128 $1, %ymm0, %xmm4
2252 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,xmm4[0,6,12],zero,zero,zero,xmm4[4,10,u,u,u,u,u,u]
2253 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm0[4,10],zero,zero,zero,xmm0[2,8,14],zero,zero,xmm0[u,u,u,u,u,u]
2254 ; AVX512BW-NEXT:    vpor %xmm10, %xmm11, %xmm10
2255 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm10 = xmm10[0,1,2,3,4],xmm9[5,6,7]
2256 ; AVX512BW-NEXT:    vpblendd {{.*#+}} ymm9 = ymm10[0,1,2,3],ymm9[4,5,6,7]
2257 ; AVX512BW-NEXT:    vmovdqu16 %ymm2, %ymm3 {%k3}
2258 ; AVX512BW-NEXT:    vextracti128 $1, %ymm3, %xmm2
2259 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm2[u,u,u,u,u],zero,zero,zero,xmm2[4,10],zero,zero,zero,xmm2[2,8,14]
2260 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm3[u,u,u,u,u,2,8,14],zero,zero,xmm3[0,6,12],zero,zero,zero
2261 ; AVX512BW-NEXT:    vpor %xmm10, %xmm11, %xmm10
2262 ; AVX512BW-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
2263 ; AVX512BW-NEXT:    vmovdqu8 %ymm10, %ymm9 {%k2}
2264 ; AVX512BW-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,1,7,13,3,9,15,21,27,17,23,29,u,u,u,u,u,u,u,u,u,u,u]
2265 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,xmm4[1,7,13],zero,zero,zero,xmm4[5,11,u,u,u,u,u,u]
2266 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[5,11],zero,zero,zero,xmm0[3,9,15],zero,zero,xmm0[u,u,u,u,u,u]
2267 ; AVX512BW-NEXT:    vpor %xmm4, %xmm0, %xmm0
2268 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4],xmm1[5,6,7]
2269 ; AVX512BW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
2270 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm2[u,u,u,u,u],zero,zero,zero,xmm2[5,11],zero,zero,zero,xmm2[3,9,15]
2271 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm3[u,u,u,u,u,3,9,15],zero,zero,xmm3[1,7,13],zero,zero,zero
2272 ; AVX512BW-NEXT:    vpor %xmm1, %xmm2, %xmm1
2273 ; AVX512BW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
2274 ; AVX512BW-NEXT:    vmovdqu8 %ymm1, %ymm0 {%k2}
2275 ; AVX512BW-NEXT:    vmovdqa %ymm5, (%rsi)
2276 ; AVX512BW-NEXT:    vmovdqa %ymm6, (%rdx)
2277 ; AVX512BW-NEXT:    vmovdqa %ymm7, (%rcx)
2278 ; AVX512BW-NEXT:    vmovdqa %ymm8, (%r8)
2279 ; AVX512BW-NEXT:    vmovdqa %ymm9, (%r9)
2280 ; AVX512BW-NEXT:    vmovdqa %ymm0, (%rax)
2281 ; AVX512BW-NEXT:    vzeroupper
2282 ; AVX512BW-NEXT:    retq
2283   %wide.vec = load <192 x i8>, ptr %in.vec, align 64
2284   %strided.vec0 = shufflevector <192 x i8> %wide.vec, <192 x i8> poison, <32 x i32> <i32 0, i32 6, i32 12, i32 18, i32 24, i32 30, i32 36, i32 42, i32 48, i32 54, i32 60, i32 66, i32 72, i32 78, i32 84, i32 90, i32 96, i32 102, i32 108, i32 114, i32 120, i32 126, i32 132, i32 138, i32 144, i32 150, i32 156, i32 162, i32 168, i32 174, i32 180, i32 186>
2285   %strided.vec1 = shufflevector <192 x i8> %wide.vec, <192 x i8> poison, <32 x i32> <i32 1, i32 7, i32 13, i32 19, i32 25, i32 31, i32 37, i32 43, i32 49, i32 55, i32 61, i32 67, i32 73, i32 79, i32 85, i32 91, i32 97, i32 103, i32 109, i32 115, i32 121, i32 127, i32 133, i32 139, i32 145, i32 151, i32 157, i32 163, i32 169, i32 175, i32 181, i32 187>
2286   %strided.vec2 = shufflevector <192 x i8> %wide.vec, <192 x i8> poison, <32 x i32> <i32 2, i32 8, i32 14, i32 20, i32 26, i32 32, i32 38, i32 44, i32 50, i32 56, i32 62, i32 68, i32 74, i32 80, i32 86, i32 92, i32 98, i32 104, i32 110, i32 116, i32 122, i32 128, i32 134, i32 140, i32 146, i32 152, i32 158, i32 164, i32 170, i32 176, i32 182, i32 188>
2287   %strided.vec3 = shufflevector <192 x i8> %wide.vec, <192 x i8> poison, <32 x i32> <i32 3, i32 9, i32 15, i32 21, i32 27, i32 33, i32 39, i32 45, i32 51, i32 57, i32 63, i32 69, i32 75, i32 81, i32 87, i32 93, i32 99, i32 105, i32 111, i32 117, i32 123, i32 129, i32 135, i32 141, i32 147, i32 153, i32 159, i32 165, i32 171, i32 177, i32 183, i32 189>
2288   %strided.vec4 = shufflevector <192 x i8> %wide.vec, <192 x i8> poison, <32 x i32> <i32 4, i32 10, i32 16, i32 22, i32 28, i32 34, i32 40, i32 46, i32 52, i32 58, i32 64, i32 70, i32 76, i32 82, i32 88, i32 94, i32 100, i32 106, i32 112, i32 118, i32 124, i32 130, i32 136, i32 142, i32 148, i32 154, i32 160, i32 166, i32 172, i32 178, i32 184, i32 190>
2289   %strided.vec5 = shufflevector <192 x i8> %wide.vec, <192 x i8> poison, <32 x i32> <i32 5, i32 11, i32 17, i32 23, i32 29, i32 35, i32 41, i32 47, i32 53, i32 59, i32 65, i32 71, i32 77, i32 83, i32 89, i32 95, i32 101, i32 107, i32 113, i32 119, i32 125, i32 131, i32 137, i32 143, i32 149, i32 155, i32 161, i32 167, i32 173, i32 179, i32 185, i32 191>
2290   store <32 x i8> %strided.vec0, ptr %out.vec0, align 64
2291   store <32 x i8> %strided.vec1, ptr %out.vec1, align 64
2292   store <32 x i8> %strided.vec2, ptr %out.vec2, align 64
2293   store <32 x i8> %strided.vec3, ptr %out.vec3, align 64
2294   store <32 x i8> %strided.vec4, ptr %out.vec4, align 64
2295   store <32 x i8> %strided.vec5, ptr %out.vec5, align 64
2296   ret void
2299 define void @load_i8_stride6_vf64(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5) nounwind {
2300 ; SSE-LABEL: load_i8_stride6_vf64:
2301 ; SSE:       # %bb.0:
2302 ; SSE-NEXT:    subq $808, %rsp # imm = 0x328
2303 ; SSE-NEXT:    movdqa 64(%rdi), %xmm4
2304 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2305 ; SSE-NEXT:    movdqa 80(%rdi), %xmm5
2306 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2307 ; SSE-NEXT:    movdqa (%rdi), %xmm7
2308 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2309 ; SSE-NEXT:    movdqa 16(%rdi), %xmm6
2310 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2311 ; SSE-NEXT:    movdqa 32(%rdi), %xmm2
2312 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2313 ; SSE-NEXT:    movdqa 48(%rdi), %xmm0
2314 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,0,65535,65535,0,65535,65535]
2315 ; SSE-NEXT:    movdqa %xmm9, %xmm1
2316 ; SSE-NEXT:    pandn %xmm2, %xmm1
2317 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,0,65535,65535,0,65535,65535,0]
2318 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2319 ; SSE-NEXT:    pandn %xmm0, %xmm2
2320 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2321 ; SSE-NEXT:    movdqa %xmm9, %xmm2
2322 ; SSE-NEXT:    pandn %xmm0, %xmm2
2323 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2324 ; SSE-NEXT:    pand %xmm9, %xmm0
2325 ; SSE-NEXT:    por %xmm1, %xmm0
2326 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2327 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255]
2328 ; SSE-NEXT:    pand %xmm1, %xmm0
2329 ; SSE-NEXT:    movdqa %xmm1, %xmm11
2330 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm0[0,3,2,3,4,5,6,7]
2331 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
2332 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
2333 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,5]
2334 ; SSE-NEXT:    packuswb %xmm1, %xmm0
2335 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [65535,65535,65535,0,0,0,65535,65535]
2336 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2337 ; SSE-NEXT:    pandn %xmm6, %xmm1
2338 ; SSE-NEXT:    movdqa %xmm7, %xmm2
2339 ; SSE-NEXT:    pand %xmm3, %xmm2
2340 ; SSE-NEXT:    por %xmm1, %xmm2
2341 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2342 ; SSE-NEXT:    movdqa %xmm2, %xmm1
2343 ; SSE-NEXT:    pand %xmm11, %xmm1
2344 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
2345 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
2346 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
2347 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
2348 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
2349 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2350 ; SSE-NEXT:    pand %xmm8, %xmm1
2351 ; SSE-NEXT:    movdqa %xmm8, %xmm2
2352 ; SSE-NEXT:    pandn %xmm0, %xmm2
2353 ; SSE-NEXT:    por %xmm2, %xmm1
2354 ; SSE-NEXT:    movdqa %xmm9, %xmm6
2355 ; SSE-NEXT:    movdqa %xmm9, %xmm0
2356 ; SSE-NEXT:    pandn %xmm5, %xmm0
2357 ; SSE-NEXT:    pand %xmm9, %xmm4
2358 ; SSE-NEXT:    por %xmm0, %xmm4
2359 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2360 ; SSE-NEXT:    movdqa %xmm4, %xmm0
2361 ; SSE-NEXT:    pand %xmm11, %xmm0
2362 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
2363 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]
2364 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,0]
2365 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,5]
2366 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2367 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
2368 ; SSE-NEXT:    movdqa %xmm4, %xmm2
2369 ; SSE-NEXT:    pandn %xmm0, %xmm2
2370 ; SSE-NEXT:    pand %xmm4, %xmm1
2371 ; SSE-NEXT:    por %xmm1, %xmm2
2372 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2373 ; SSE-NEXT:    movdqa 320(%rdi), %xmm1
2374 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2375 ; SSE-NEXT:    movdqa %xmm9, %xmm0
2376 ; SSE-NEXT:    pandn %xmm1, %xmm0
2377 ; SSE-NEXT:    movdqa 336(%rdi), %xmm13
2378 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2379 ; SSE-NEXT:    pandn %xmm13, %xmm1
2380 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2381 ; SSE-NEXT:    movdqa %xmm9, %xmm1
2382 ; SSE-NEXT:    pandn %xmm13, %xmm1
2383 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2384 ; SSE-NEXT:    pand %xmm9, %xmm13
2385 ; SSE-NEXT:    por %xmm0, %xmm13
2386 ; SSE-NEXT:    movdqa %xmm13, %xmm0
2387 ; SSE-NEXT:    pand %xmm11, %xmm0
2388 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm0[0,3,2,3,4,5,6,7]
2389 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
2390 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
2391 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,5]
2392 ; SSE-NEXT:    packuswb %xmm1, %xmm0
2393 ; SSE-NEXT:    movdqa %xmm8, %xmm2
2394 ; SSE-NEXT:    pandn %xmm0, %xmm2
2395 ; SSE-NEXT:    movdqa 304(%rdi), %xmm1
2396 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2397 ; SSE-NEXT:    movdqa %xmm3, %xmm0
2398 ; SSE-NEXT:    pandn %xmm1, %xmm0
2399 ; SSE-NEXT:    movdqa 288(%rdi), %xmm7
2400 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2401 ; SSE-NEXT:    pand %xmm3, %xmm1
2402 ; SSE-NEXT:    por %xmm0, %xmm1
2403 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2404 ; SSE-NEXT:    movdqa %xmm1, %xmm0
2405 ; SSE-NEXT:    pand %xmm11, %xmm0
2406 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
2407 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
2408 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
2409 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,1,4,5,6,7]
2410 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
2411 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2412 ; SSE-NEXT:    pand %xmm8, %xmm0
2413 ; SSE-NEXT:    por %xmm2, %xmm0
2414 ; SSE-NEXT:    movdqa 368(%rdi), %xmm1
2415 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2416 ; SSE-NEXT:    movdqa %xmm9, %xmm2
2417 ; SSE-NEXT:    pandn %xmm1, %xmm2
2418 ; SSE-NEXT:    movdqa 352(%rdi), %xmm1
2419 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2420 ; SSE-NEXT:    pand %xmm9, %xmm1
2421 ; SSE-NEXT:    por %xmm2, %xmm1
2422 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2423 ; SSE-NEXT:    movdqa %xmm1, %xmm2
2424 ; SSE-NEXT:    pand %xmm11, %xmm2
2425 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[3,1,2,0]
2426 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]
2427 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,2,0]
2428 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,5]
2429 ; SSE-NEXT:    packuswb %xmm2, %xmm2
2430 ; SSE-NEXT:    movdqa %xmm4, %xmm1
2431 ; SSE-NEXT:    pandn %xmm2, %xmm1
2432 ; SSE-NEXT:    pand %xmm4, %xmm0
2433 ; SSE-NEXT:    movdqa %xmm4, %xmm9
2434 ; SSE-NEXT:    por %xmm0, %xmm1
2435 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2436 ; SSE-NEXT:    movdqa 224(%rdi), %xmm1
2437 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2438 ; SSE-NEXT:    movdqa %xmm6, %xmm0
2439 ; SSE-NEXT:    pandn %xmm1, %xmm0
2440 ; SSE-NEXT:    movdqa 240(%rdi), %xmm14
2441 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2442 ; SSE-NEXT:    pandn %xmm14, %xmm1
2443 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2444 ; SSE-NEXT:    movdqa %xmm6, %xmm1
2445 ; SSE-NEXT:    pandn %xmm14, %xmm1
2446 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2447 ; SSE-NEXT:    pand %xmm6, %xmm14
2448 ; SSE-NEXT:    por %xmm0, %xmm14
2449 ; SSE-NEXT:    movdqa %xmm14, %xmm0
2450 ; SSE-NEXT:    pand %xmm11, %xmm0
2451 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm0[0,3,2,3,4,5,6,7]
2452 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,2,3]
2453 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
2454 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,5]
2455 ; SSE-NEXT:    packuswb %xmm2, %xmm0
2456 ; SSE-NEXT:    movdqa %xmm8, %xmm5
2457 ; SSE-NEXT:    movdqa %xmm8, %xmm2
2458 ; SSE-NEXT:    pandn %xmm0, %xmm2
2459 ; SSE-NEXT:    movdqa 208(%rdi), %xmm4
2460 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2461 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2462 ; SSE-NEXT:    movdqa %xmm3, %xmm0
2463 ; SSE-NEXT:    pandn %xmm4, %xmm0
2464 ; SSE-NEXT:    movdqa 192(%rdi), %xmm3
2465 ; SSE-NEXT:    movdqa %xmm3, %xmm4
2466 ; SSE-NEXT:    pand %xmm1, %xmm4
2467 ; SSE-NEXT:    movdqa %xmm1, %xmm8
2468 ; SSE-NEXT:    por %xmm0, %xmm4
2469 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2470 ; SSE-NEXT:    movdqa %xmm4, %xmm0
2471 ; SSE-NEXT:    pand %xmm11, %xmm0
2472 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
2473 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
2474 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
2475 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,1,4,5,6,7]
2476 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
2477 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2478 ; SSE-NEXT:    pand %xmm5, %xmm0
2479 ; SSE-NEXT:    movdqa %xmm5, %xmm1
2480 ; SSE-NEXT:    por %xmm2, %xmm0
2481 ; SSE-NEXT:    movdqa 272(%rdi), %xmm15
2482 ; SSE-NEXT:    movdqa %xmm6, %xmm2
2483 ; SSE-NEXT:    pandn %xmm15, %xmm2
2484 ; SSE-NEXT:    movdqa 256(%rdi), %xmm12
2485 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2486 ; SSE-NEXT:    pand %xmm6, %xmm12
2487 ; SSE-NEXT:    por %xmm2, %xmm12
2488 ; SSE-NEXT:    movdqa %xmm12, %xmm2
2489 ; SSE-NEXT:    pand %xmm11, %xmm2
2490 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[3,1,2,0]
2491 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]
2492 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,2,0]
2493 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,5]
2494 ; SSE-NEXT:    packuswb %xmm2, %xmm2
2495 ; SSE-NEXT:    movdqa %xmm9, %xmm4
2496 ; SSE-NEXT:    pandn %xmm2, %xmm4
2497 ; SSE-NEXT:    pand %xmm9, %xmm0
2498 ; SSE-NEXT:    por %xmm0, %xmm4
2499 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2500 ; SSE-NEXT:    movdqa 128(%rdi), %xmm2
2501 ; SSE-NEXT:    movdqa %xmm2, (%rsp) # 16-byte Spill
2502 ; SSE-NEXT:    movdqa %xmm6, %xmm0
2503 ; SSE-NEXT:    pandn %xmm2, %xmm0
2504 ; SSE-NEXT:    movdqa 144(%rdi), %xmm10
2505 ; SSE-NEXT:    movdqa %xmm8, %xmm4
2506 ; SSE-NEXT:    pandn %xmm10, %xmm4
2507 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2508 ; SSE-NEXT:    movdqa %xmm6, %xmm4
2509 ; SSE-NEXT:    pandn %xmm10, %xmm4
2510 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2511 ; SSE-NEXT:    pand %xmm6, %xmm10
2512 ; SSE-NEXT:    por %xmm0, %xmm10
2513 ; SSE-NEXT:    movdqa %xmm10, %xmm0
2514 ; SSE-NEXT:    pand %xmm11, %xmm0
2515 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm0[0,3,2,3,4,5,6,7]
2516 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,3,2,3]
2517 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
2518 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,5]
2519 ; SSE-NEXT:    packuswb %xmm5, %xmm0
2520 ; SSE-NEXT:    movdqa %xmm1, %xmm11
2521 ; SSE-NEXT:    pandn %xmm0, %xmm11
2522 ; SSE-NEXT:    movdqa %xmm6, %xmm0
2523 ; SSE-NEXT:    movdqa %xmm6, %xmm4
2524 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2525 ; SSE-NEXT:    pandn %xmm1, %xmm4
2526 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2527 ; SSE-NEXT:    movdqa %xmm6, %xmm2
2528 ; SSE-NEXT:    pandn %xmm7, %xmm2
2529 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2530 ; SSE-NEXT:    movdqa %xmm7, %xmm4
2531 ; SSE-NEXT:    movdqa %xmm6, %xmm2
2532 ; SSE-NEXT:    pandn %xmm3, %xmm2
2533 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2534 ; SSE-NEXT:    movdqa %xmm3, %xmm5
2535 ; SSE-NEXT:    movdqa 112(%rdi), %xmm6
2536 ; SSE-NEXT:    movdqa %xmm8, %xmm7
2537 ; SSE-NEXT:    movdqa %xmm8, %xmm9
2538 ; SSE-NEXT:    pandn %xmm6, %xmm9
2539 ; SSE-NEXT:    movdqa 160(%rdi), %xmm8
2540 ; SSE-NEXT:    movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2541 ; SSE-NEXT:    pand %xmm0, %xmm8
2542 ; SSE-NEXT:    movdqa %xmm0, %xmm3
2543 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2544 ; SSE-NEXT:    pandn %xmm2, %xmm3
2545 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2546 ; SSE-NEXT:    pand %xmm0, %xmm1
2547 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2548 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2549 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2550 ; SSE-NEXT:    pandn %xmm3, %xmm1
2551 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2552 ; SSE-NEXT:    pand %xmm0, %xmm3
2553 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2554 ; SSE-NEXT:    movdqa %xmm0, %xmm3
2555 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2556 ; SSE-NEXT:    pandn %xmm1, %xmm3
2557 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2558 ; SSE-NEXT:    pand %xmm0, %xmm4
2559 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2560 ; SSE-NEXT:    movdqa %xmm7, %xmm3
2561 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
2562 ; SSE-NEXT:    pandn %xmm4, %xmm3
2563 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2564 ; SSE-NEXT:    movdqa %xmm4, %xmm3
2565 ; SSE-NEXT:    pand %xmm0, %xmm3
2566 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2567 ; SSE-NEXT:    movdqa %xmm0, %xmm3
2568 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
2569 ; SSE-NEXT:    pandn %xmm4, %xmm3
2570 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2571 ; SSE-NEXT:    pand %xmm0, %xmm5
2572 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2573 ; SSE-NEXT:    movdqa %xmm7, %xmm3
2574 ; SSE-NEXT:    pandn %xmm15, %xmm3
2575 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2576 ; SSE-NEXT:    pand %xmm0, %xmm15
2577 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2578 ; SSE-NEXT:    movdqa %xmm0, %xmm3
2579 ; SSE-NEXT:    pandn %xmm6, %xmm3
2580 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2581 ; SSE-NEXT:    movdqa %xmm6, %xmm15
2582 ; SSE-NEXT:    movdqa 96(%rdi), %xmm5
2583 ; SSE-NEXT:    movdqa %xmm5, %xmm3
2584 ; SSE-NEXT:    pand %xmm0, %xmm3
2585 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2586 ; SSE-NEXT:    movdqa 176(%rdi), %xmm6
2587 ; SSE-NEXT:    movdqa %xmm6, %xmm3
2588 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2589 ; SSE-NEXT:    pand %xmm0, %xmm3
2590 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2591 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2592 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2593 ; SSE-NEXT:    pand %xmm0, %xmm3
2594 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2595 ; SSE-NEXT:    pand %xmm0, %xmm2
2596 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2597 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2598 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2599 ; SSE-NEXT:    pand %xmm0, %xmm2
2600 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2601 ; SSE-NEXT:    pand %xmm0, %xmm1
2602 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2603 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2604 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2605 ; SSE-NEXT:    pand %xmm0, %xmm1
2606 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2607 ; SSE-NEXT:    pand %xmm0, %xmm4
2608 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2609 ; SSE-NEXT:    movdqa (%rsp), %xmm1 # 16-byte Reload
2610 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2611 ; SSE-NEXT:    pand %xmm0, %xmm1
2612 ; SSE-NEXT:    movdqa %xmm1, (%rsp) # 16-byte Spill
2613 ; SSE-NEXT:    movdqa %xmm0, %xmm1
2614 ; SSE-NEXT:    pand %xmm0, %xmm15
2615 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2616 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2617 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2618 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2619 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2620 ; SSE-NEXT:    pandn %xmm5, %xmm1
2621 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2622 ; SSE-NEXT:    movdqa %xmm5, %xmm3
2623 ; SSE-NEXT:    pand %xmm7, %xmm3
2624 ; SSE-NEXT:    por %xmm9, %xmm3
2625 ; SSE-NEXT:    movdqa %xmm3, %xmm5
2626 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,255,255,255,255,255,255,255]
2627 ; SSE-NEXT:    pand %xmm7, %xmm5
2628 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,2,1,3]
2629 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,6,5,6,7]
2630 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,2,1,3]
2631 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,1,4,5,6,7]
2632 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,7,6,7]
2633 ; SSE-NEXT:    packuswb %xmm5, %xmm5
2634 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,65535,0,0,0,65535,65535]
2635 ; SSE-NEXT:    pand %xmm9, %xmm5
2636 ; SSE-NEXT:    por %xmm11, %xmm5
2637 ; SSE-NEXT:    pandn %xmm6, %xmm0
2638 ; SSE-NEXT:    por %xmm0, %xmm8
2639 ; SSE-NEXT:    movdqa %xmm8, %xmm0
2640 ; SSE-NEXT:    pand %xmm7, %xmm0
2641 ; SSE-NEXT:    movdqa %xmm7, %xmm11
2642 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
2643 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,2,3,4,5,6,7]
2644 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,0]
2645 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,5]
2646 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2647 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
2648 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2649 ; SSE-NEXT:    pandn %xmm0, %xmm1
2650 ; SSE-NEXT:    pand %xmm7, %xmm5
2651 ; SSE-NEXT:    por %xmm5, %xmm1
2652 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2653 ; SSE-NEXT:    pxor %xmm5, %xmm5
2654 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2655 ; SSE-NEXT:    movdqa %xmm1, %xmm0
2656 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm5[8],xmm0[9],xmm5[9],xmm0[10],xmm5[10],xmm0[11],xmm5[11],xmm0[12],xmm5[12],xmm0[13],xmm5[13],xmm0[14],xmm5[14],xmm0[15],xmm5[15]
2657 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3],xmm1[4],xmm5[4],xmm1[5],xmm5[5],xmm1[6],xmm5[6],xmm1[7],xmm5[7]
2658 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm1[2,2,3,3]
2659 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]
2660 ; SSE-NEXT:    psrld $16, %xmm0
2661 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm1[0,1,0,3]
2662 ; SSE-NEXT:    pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,5,7,6,7]
2663 ; SSE-NEXT:    punpckhdq {{.*#+}} xmm15 = xmm15[2],xmm0[2],xmm15[3],xmm0[3]
2664 ; SSE-NEXT:    packuswb %xmm15, %xmm4
2665 ; SSE-NEXT:    movdqa %xmm9, %xmm1
2666 ; SSE-NEXT:    pandn %xmm4, %xmm1
2667 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2668 ; SSE-NEXT:    movdqa %xmm2, %xmm4
2669 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm5[8],xmm4[9],xmm5[9],xmm4[10],xmm5[10],xmm4[11],xmm5[11],xmm4[12],xmm5[12],xmm4[13],xmm5[13],xmm4[14],xmm5[14],xmm4[15],xmm5[15]
2670 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,1,0,3]
2671 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,1,1,1,4,5,6,7]
2672 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,7,6,7]
2673 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,0,65535,0,0,65535,65535]
2674 ; SSE-NEXT:    movdqa %xmm0, %xmm15
2675 ; SSE-NEXT:    pandn %xmm4, %xmm15
2676 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3],xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
2677 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm2[3,1,2,3,4,5,6,7]
2678 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,3,2,3]
2679 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,3,2,0,4,5,6,7]
2680 ; SSE-NEXT:    pand %xmm0, %xmm4
2681 ; SSE-NEXT:    por %xmm15, %xmm4
2682 ; SSE-NEXT:    packuswb %xmm4, %xmm4
2683 ; SSE-NEXT:    pand %xmm9, %xmm4
2684 ; SSE-NEXT:    por %xmm1, %xmm4
2685 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2686 ; SSE-NEXT:    movdqa %xmm6, %xmm1
2687 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3],xmm1[4],xmm5[4],xmm1[5],xmm5[5],xmm1[6],xmm5[6],xmm1[7],xmm5[7]
2688 ; SSE-NEXT:    pshufhw {{.*#+}} xmm15 = xmm1[0,1,2,3,5,5,5,5]
2689 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,0,65535]
2690 ; SSE-NEXT:    movdqa %xmm2, %xmm1
2691 ; SSE-NEXT:    pandn %xmm15, %xmm1
2692 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm5[8],xmm6[9],xmm5[9],xmm6[10],xmm5[10],xmm6[11],xmm5[11],xmm6[12],xmm5[12],xmm6[13],xmm5[13],xmm6[14],xmm5[14],xmm6[15],xmm5[15]
2693 ; SSE-NEXT:    pshuflw {{.*#+}} xmm15 = xmm6[3,1,2,3,4,5,6,7]
2694 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm15[0,1,0,3]
2695 ; SSE-NEXT:    pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,5,7,6,4]
2696 ; SSE-NEXT:    pand %xmm2, %xmm15
2697 ; SSE-NEXT:    por %xmm1, %xmm15
2698 ; SSE-NEXT:    packuswb %xmm15, %xmm1
2699 ; SSE-NEXT:    movdqa %xmm7, %xmm15
2700 ; SSE-NEXT:    pandn %xmm1, %xmm15
2701 ; SSE-NEXT:    pand %xmm7, %xmm4
2702 ; SSE-NEXT:    por %xmm4, %xmm15
2703 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2704 ; SSE-NEXT:    movdqa %xmm13, %xmm1
2705 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]
2706 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm13 = xmm13[0],xmm5[0],xmm13[1],xmm5[1],xmm13[2],xmm5[2],xmm13[3],xmm5[3],xmm13[4],xmm5[4],xmm13[5],xmm5[5],xmm13[6],xmm5[6],xmm13[7],xmm5[7]
2707 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm13[2,2,3,3]
2708 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3]
2709 ; SSE-NEXT:    psrld $16, %xmm1
2710 ; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm13[0,1,0,3]
2711 ; SSE-NEXT:    pshufhw {{.*#+}} xmm13 = xmm13[0,1,2,3,5,7,6,7]
2712 ; SSE-NEXT:    punpckhdq {{.*#+}} xmm13 = xmm13[2],xmm1[2],xmm13[3],xmm1[3]
2713 ; SSE-NEXT:    packuswb %xmm13, %xmm4
2714 ; SSE-NEXT:    movdqa %xmm9, %xmm15
2715 ; SSE-NEXT:    movdqa %xmm9, %xmm1
2716 ; SSE-NEXT:    pandn %xmm4, %xmm1
2717 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2718 ; SSE-NEXT:    movdqa %xmm6, %xmm4
2719 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm5[8],xmm4[9],xmm5[9],xmm4[10],xmm5[10],xmm4[11],xmm5[11],xmm4[12],xmm5[12],xmm4[13],xmm5[13],xmm4[14],xmm5[14],xmm4[15],xmm5[15]
2720 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,1,0,3]
2721 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,1,1,1,4,5,6,7]
2722 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,7,6,7]
2723 ; SSE-NEXT:    movdqa %xmm0, %xmm13
2724 ; SSE-NEXT:    pandn %xmm4, %xmm13
2725 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3],xmm6[4],xmm5[4],xmm6[5],xmm5[5],xmm6[6],xmm5[6],xmm6[7],xmm5[7]
2726 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm6[3,1,2,3,4,5,6,7]
2727 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,3,2,3]
2728 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,3,2,0,4,5,6,7]
2729 ; SSE-NEXT:    pand %xmm0, %xmm4
2730 ; SSE-NEXT:    por %xmm13, %xmm4
2731 ; SSE-NEXT:    packuswb %xmm4, %xmm4
2732 ; SSE-NEXT:    pand %xmm9, %xmm4
2733 ; SSE-NEXT:    por %xmm1, %xmm4
2734 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2735 ; SSE-NEXT:    movdqa %xmm6, %xmm1
2736 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3],xmm1[4],xmm5[4],xmm1[5],xmm5[5],xmm1[6],xmm5[6],xmm1[7],xmm5[7]
2737 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
2738 ; SSE-NEXT:    movdqa %xmm2, %xmm13
2739 ; SSE-NEXT:    pandn %xmm1, %xmm13
2740 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm5[8],xmm6[9],xmm5[9],xmm6[10],xmm5[10],xmm6[11],xmm5[11],xmm6[12],xmm5[12],xmm6[13],xmm5[13],xmm6[14],xmm5[14],xmm6[15],xmm5[15]
2741 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm6[3,1,2,3,4,5,6,7]
2742 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]
2743 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,7,6,4]
2744 ; SSE-NEXT:    pand %xmm2, %xmm1
2745 ; SSE-NEXT:    por %xmm13, %xmm1
2746 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2747 ; SSE-NEXT:    movdqa %xmm7, %xmm13
2748 ; SSE-NEXT:    pandn %xmm1, %xmm13
2749 ; SSE-NEXT:    pand %xmm7, %xmm4
2750 ; SSE-NEXT:    por %xmm4, %xmm13
2751 ; SSE-NEXT:    movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2752 ; SSE-NEXT:    movdqa %xmm14, %xmm1
2753 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]
2754 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm5[0],xmm14[1],xmm5[1],xmm14[2],xmm5[2],xmm14[3],xmm5[3],xmm14[4],xmm5[4],xmm14[5],xmm5[5],xmm14[6],xmm5[6],xmm14[7],xmm5[7]
2755 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm14[2,2,3,3]
2756 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3]
2757 ; SSE-NEXT:    psrld $16, %xmm1
2758 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm14[0,1,0,3]
2759 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,5,7,6,7]
2760 ; SSE-NEXT:    punpckhdq {{.*#+}} xmm9 = xmm9[2],xmm1[2],xmm9[3],xmm1[3]
2761 ; SSE-NEXT:    packuswb %xmm9, %xmm4
2762 ; SSE-NEXT:    movdqa %xmm15, %xmm1
2763 ; SSE-NEXT:    pandn %xmm4, %xmm1
2764 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2765 ; SSE-NEXT:    movdqa %xmm6, %xmm4
2766 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm5[8],xmm4[9],xmm5[9],xmm4[10],xmm5[10],xmm4[11],xmm5[11],xmm4[12],xmm5[12],xmm4[13],xmm5[13],xmm4[14],xmm5[14],xmm4[15],xmm5[15]
2767 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,1,0,3]
2768 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,1,1,1,4,5,6,7]
2769 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,7,6,7]
2770 ; SSE-NEXT:    movdqa %xmm0, %xmm9
2771 ; SSE-NEXT:    pandn %xmm4, %xmm9
2772 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3],xmm6[4],xmm5[4],xmm6[5],xmm5[5],xmm6[6],xmm5[6],xmm6[7],xmm5[7]
2773 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm6[3,1,2,3,4,5,6,7]
2774 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,3,2,3]
2775 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[1,3,2,0,4,5,6,7]
2776 ; SSE-NEXT:    pand %xmm0, %xmm4
2777 ; SSE-NEXT:    por %xmm9, %xmm4
2778 ; SSE-NEXT:    packuswb %xmm4, %xmm4
2779 ; SSE-NEXT:    pand %xmm15, %xmm4
2780 ; SSE-NEXT:    por %xmm1, %xmm4
2781 ; SSE-NEXT:    movdqa %xmm12, %xmm1
2782 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3],xmm1[4],xmm5[4],xmm1[5],xmm5[5],xmm1[6],xmm5[6],xmm1[7],xmm5[7]
2783 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
2784 ; SSE-NEXT:    movdqa %xmm2, %xmm9
2785 ; SSE-NEXT:    pandn %xmm1, %xmm9
2786 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm12 = xmm12[8],xmm5[8],xmm12[9],xmm5[9],xmm12[10],xmm5[10],xmm12[11],xmm5[11],xmm12[12],xmm5[12],xmm12[13],xmm5[13],xmm12[14],xmm5[14],xmm12[15],xmm5[15]
2787 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm12[3,1,2,3,4,5,6,7]
2788 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]
2789 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,7,6,4]
2790 ; SSE-NEXT:    pand %xmm2, %xmm1
2791 ; SSE-NEXT:    por %xmm9, %xmm1
2792 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2793 ; SSE-NEXT:    movdqa %xmm7, %xmm9
2794 ; SSE-NEXT:    pandn %xmm1, %xmm9
2795 ; SSE-NEXT:    pand %xmm7, %xmm4
2796 ; SSE-NEXT:    por %xmm4, %xmm9
2797 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2798 ; SSE-NEXT:    movdqa %xmm10, %xmm1
2799 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]
2800 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm5[0],xmm10[1],xmm5[1],xmm10[2],xmm5[2],xmm10[3],xmm5[3],xmm10[4],xmm5[4],xmm10[5],xmm5[5],xmm10[6],xmm5[6],xmm10[7],xmm5[7]
2801 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm10[2,2,3,3]
2802 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3]
2803 ; SSE-NEXT:    psrld $16, %xmm1
2804 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm10[0,1,0,3]
2805 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,7,6,7]
2806 ; SSE-NEXT:    punpckhdq {{.*#+}} xmm6 = xmm6[2],xmm1[2],xmm6[3],xmm1[3]
2807 ; SSE-NEXT:    packuswb %xmm6, %xmm4
2808 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2809 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]
2810 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,1,0,3]
2811 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,1,1,1,4,5,6,7]
2812 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,7,6,7]
2813 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7]
2814 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]
2815 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,3,2,3]
2816 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[1,3,2,0,4,5,6,7]
2817 ; SSE-NEXT:    pand %xmm0, %xmm3
2818 ; SSE-NEXT:    pandn %xmm1, %xmm0
2819 ; SSE-NEXT:    por %xmm3, %xmm0
2820 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2821 ; SSE-NEXT:    movdqa %xmm15, %xmm1
2822 ; SSE-NEXT:    pand %xmm15, %xmm0
2823 ; SSE-NEXT:    pandn %xmm4, %xmm1
2824 ; SSE-NEXT:    por %xmm1, %xmm0
2825 ; SSE-NEXT:    movdqa %xmm8, %xmm1
2826 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3],xmm1[4],xmm5[4],xmm1[5],xmm5[5],xmm1[6],xmm5[6],xmm1[7],xmm5[7]
2827 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
2828 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm5[8],xmm8[9],xmm5[9],xmm8[10],xmm5[10],xmm8[11],xmm5[11],xmm8[12],xmm5[12],xmm8[13],xmm5[13],xmm8[14],xmm5[14],xmm8[15],xmm5[15]
2829 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm8[3,1,2,3,4,5,6,7]
2830 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,0,3]
2831 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,7,6,4]
2832 ; SSE-NEXT:    pand %xmm2, %xmm3
2833 ; SSE-NEXT:    pandn %xmm1, %xmm2
2834 ; SSE-NEXT:    por %xmm3, %xmm2
2835 ; SSE-NEXT:    packuswb %xmm2, %xmm1
2836 ; SSE-NEXT:    movdqa %xmm7, %xmm2
2837 ; SSE-NEXT:    pandn %xmm1, %xmm2
2838 ; SSE-NEXT:    pand %xmm7, %xmm0
2839 ; SSE-NEXT:    por %xmm0, %xmm2
2840 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2841 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [65535,0,65535,65535,0,65535,65535,0]
2842 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2843 ; SSE-NEXT:    pand %xmm12, %xmm0
2844 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2845 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2846 ; SSE-NEXT:    pand %xmm11, %xmm0
2847 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,7,6,7]
2848 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2849 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,3,4,5,6,7]
2850 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
2851 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
2852 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]
2853 ; SSE-NEXT:    packuswb %xmm1, %xmm0
2854 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2855 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
2856 ; SSE-NEXT:    movdqa %xmm6, %xmm1
2857 ; SSE-NEXT:    pand %xmm11, %xmm1
2858 ; SSE-NEXT:    movdqa %xmm11, %xmm4
2859 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]
2860 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
2861 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
2862 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,0,4,5,6,7]
2863 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
2864 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2865 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255]
2866 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2867 ; SSE-NEXT:    pandn %xmm1, %xmm2
2868 ; SSE-NEXT:    pand %xmm3, %xmm0
2869 ; SSE-NEXT:    por %xmm0, %xmm2
2870 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2871 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2872 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2873 ; SSE-NEXT:    por %xmm0, %xmm14
2874 ; SSE-NEXT:    movdqa %xmm14, %xmm0
2875 ; SSE-NEXT:    pand %xmm11, %xmm0
2876 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
2877 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
2878 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,0]
2879 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]
2880 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,6,7,4]
2881 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2882 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2883 ; SSE-NEXT:    pandn %xmm0, %xmm1
2884 ; SSE-NEXT:    pand %xmm7, %xmm2
2885 ; SSE-NEXT:    por %xmm2, %xmm1
2886 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2887 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2888 ; SSE-NEXT:    pand %xmm12, %xmm1
2889 ; SSE-NEXT:    movdqa %xmm12, %xmm10
2890 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
2891 ; SSE-NEXT:    movdqa %xmm1, %xmm0
2892 ; SSE-NEXT:    movdqa %xmm1, %xmm12
2893 ; SSE-NEXT:    pand %xmm11, %xmm0
2894 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,7,6,7]
2895 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2896 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,3,4,5,6,7]
2897 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
2898 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
2899 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]
2900 ; SSE-NEXT:    packuswb %xmm1, %xmm0
2901 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
2902 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
2903 ; SSE-NEXT:    movdqa %xmm15, %xmm1
2904 ; SSE-NEXT:    pand %xmm11, %xmm1
2905 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]
2906 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
2907 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
2908 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,0,4,5,6,7]
2909 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
2910 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2911 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2912 ; SSE-NEXT:    pandn %xmm1, %xmm2
2913 ; SSE-NEXT:    pand %xmm3, %xmm0
2914 ; SSE-NEXT:    por %xmm0, %xmm2
2915 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2916 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2917 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
2918 ; SSE-NEXT:    por %xmm0, %xmm9
2919 ; SSE-NEXT:    movdqa %xmm9, %xmm0
2920 ; SSE-NEXT:    pand %xmm11, %xmm0
2921 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
2922 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
2923 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,0]
2924 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]
2925 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,6,7,4]
2926 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2927 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2928 ; SSE-NEXT:    pandn %xmm0, %xmm1
2929 ; SSE-NEXT:    pand %xmm7, %xmm2
2930 ; SSE-NEXT:    por %xmm2, %xmm1
2931 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2932 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2933 ; SSE-NEXT:    pand %xmm10, %xmm8
2934 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
2935 ; SSE-NEXT:    movdqa %xmm8, %xmm0
2936 ; SSE-NEXT:    pand %xmm11, %xmm0
2937 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,7,6,7]
2938 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2939 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,3,4,5,6,7]
2940 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
2941 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
2942 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]
2943 ; SSE-NEXT:    packuswb %xmm1, %xmm0
2944 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2945 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Folded Reload
2946 ; SSE-NEXT:    movdqa %xmm13, %xmm1
2947 ; SSE-NEXT:    pand %xmm11, %xmm1
2948 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]
2949 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
2950 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
2951 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,0,4,5,6,7]
2952 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
2953 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2954 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2955 ; SSE-NEXT:    pandn %xmm1, %xmm2
2956 ; SSE-NEXT:    pand %xmm3, %xmm0
2957 ; SSE-NEXT:    por %xmm0, %xmm2
2958 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2959 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2960 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2961 ; SSE-NEXT:    por %xmm0, %xmm1
2962 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2963 ; SSE-NEXT:    movdqa %xmm1, %xmm0
2964 ; SSE-NEXT:    pand %xmm11, %xmm0
2965 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
2966 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
2967 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,0]
2968 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]
2969 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,6,7,4]
2970 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2971 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2972 ; SSE-NEXT:    pandn %xmm0, %xmm1
2973 ; SSE-NEXT:    pand %xmm7, %xmm2
2974 ; SSE-NEXT:    por %xmm2, %xmm1
2975 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2976 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2977 ; SSE-NEXT:    pand %xmm10, %xmm7
2978 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
2979 ; SSE-NEXT:    movdqa %xmm7, %xmm0
2980 ; SSE-NEXT:    pand %xmm11, %xmm0
2981 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,7,6,7]
2982 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2983 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,3,4,5,6,7]
2984 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
2985 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
2986 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,5,6]
2987 ; SSE-NEXT:    packuswb %xmm1, %xmm0
2988 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
2989 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
2990 ; SSE-NEXT:    movdqa %xmm11, %xmm1
2991 ; SSE-NEXT:    pand %xmm4, %xmm1
2992 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]
2993 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
2994 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
2995 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,2,3,0,4,5,6,7]
2996 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
2997 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2998 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2999 ; SSE-NEXT:    pandn %xmm1, %xmm2
3000 ; SSE-NEXT:    pand %xmm3, %xmm0
3001 ; SSE-NEXT:    por %xmm0, %xmm2
3002 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3003 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
3004 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
3005 ; SSE-NEXT:    por %xmm0, %xmm10
3006 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3007 ; SSE-NEXT:    pand %xmm4, %xmm0
3008 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
3009 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
3010 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,0]
3011 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,2,2,2,4,5,6,7]
3012 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,6,7,4]
3013 ; SSE-NEXT:    packuswb %xmm0, %xmm0
3014 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
3015 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3016 ; SSE-NEXT:    pandn %xmm0, %xmm1
3017 ; SSE-NEXT:    pand %xmm4, %xmm2
3018 ; SSE-NEXT:    por %xmm2, %xmm1
3019 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3020 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3021 ; SSE-NEXT:    movdqa %xmm4, %xmm0
3022 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
3023 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm5[8],xmm4[9],xmm5[9],xmm4[10],xmm5[10],xmm4[11],xmm5[11],xmm4[12],xmm5[12],xmm4[13],xmm5[13],xmm4[14],xmm5[14],xmm4[15],xmm5[15]
3024 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3025 ; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,0],xmm0[3,0]
3026 ; SSE-NEXT:    movaps %xmm0, %xmm2
3027 ; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,1],xmm1[0,2]
3028 ; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,0],xmm4[0,0]
3029 ; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[2,0],xmm4[2,3]
3030 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm2[0,1,2,3,7,5,6,7]
3031 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,2]
3032 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
3033 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
3034 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,3,3,4,5,6,7]
3035 ; SSE-NEXT:    packuswb %xmm0, %xmm1
3036 ; SSE-NEXT:    movdqa %xmm6, %xmm0
3037 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
3038 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
3039 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm0[3,1,2,1,4,5,6,7]
3040 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [0,65535,65535,0,65535,65535,65535,65535]
3041 ; SSE-NEXT:    movdqa %xmm0, %xmm4
3042 ; SSE-NEXT:    pandn %xmm2, %xmm4
3043 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm5[8],xmm6[9],xmm5[9],xmm6[10],xmm5[10],xmm6[11],xmm5[11],xmm6[12],xmm5[12],xmm6[13],xmm5[13],xmm6[14],xmm5[14],xmm6[15],xmm5[15]
3044 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm6[0,3,2,1]
3045 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,3,4,5,6,7]
3046 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,7,7,7]
3047 ; SSE-NEXT:    pand %xmm0, %xmm2
3048 ; SSE-NEXT:    por %xmm4, %xmm2
3049 ; SSE-NEXT:    packuswb %xmm2, %xmm2
3050 ; SSE-NEXT:    movdqa %xmm3, %xmm4
3051 ; SSE-NEXT:    pandn %xmm2, %xmm4
3052 ; SSE-NEXT:    pand %xmm3, %xmm1
3053 ; SSE-NEXT:    por %xmm1, %xmm4
3054 ; SSE-NEXT:    movdqa %xmm14, %xmm1
3055 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]
3056 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
3057 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm1[0,1,2,3,7,5,6,5]
3058 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,0]
3059 ; SSE-NEXT:    movdqa %xmm1, %xmm6
3060 ; SSE-NEXT:    pandn %xmm2, %xmm6
3061 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm5[0],xmm14[1],xmm5[1],xmm14[2],xmm5[2],xmm14[3],xmm5[3],xmm14[4],xmm5[4],xmm14[5],xmm5[5],xmm14[6],xmm5[6],xmm14[7],xmm5[7]
3062 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm14[0,2,0,3]
3063 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7]
3064 ; SSE-NEXT:    pand %xmm1, %xmm2
3065 ; SSE-NEXT:    por %xmm6, %xmm2
3066 ; SSE-NEXT:    packuswb %xmm2, %xmm2
3067 ; SSE-NEXT:    movdqa {{.*#+}} xmm14 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
3068 ; SSE-NEXT:    movdqa %xmm14, %xmm6
3069 ; SSE-NEXT:    pandn %xmm2, %xmm6
3070 ; SSE-NEXT:    pand %xmm14, %xmm4
3071 ; SSE-NEXT:    por %xmm4, %xmm6
3072 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3073 ; SSE-NEXT:    movdqa %xmm12, %xmm2
3074 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3],xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
3075 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm12 = xmm12[8],xmm5[8],xmm12[9],xmm5[9],xmm12[10],xmm5[10],xmm12[11],xmm5[11],xmm12[12],xmm5[12],xmm12[13],xmm5[13],xmm12[14],xmm5[14],xmm12[15],xmm5[15]
3076 ; SSE-NEXT:    movdqa %xmm12, %xmm4
3077 ; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[2,0],xmm2[3,0]
3078 ; SSE-NEXT:    movaps %xmm2, %xmm6
3079 ; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,1],xmm4[0,2]
3080 ; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,0],xmm12[0,0]
3081 ; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[2,0],xmm12[2,3]
3082 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm6[0,1,2,3,7,5,6,7]
3083 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,1,0,2]
3084 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[3,1,2,3,4,5,6,7]
3085 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,2,3]
3086 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,3,4,5,6,7]
3087 ; SSE-NEXT:    packuswb %xmm2, %xmm4
3088 ; SSE-NEXT:    movdqa %xmm15, %xmm2
3089 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3],xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
3090 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,1,2,3]
3091 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[3,1,2,1,4,5,6,7]
3092 ; SSE-NEXT:    movdqa %xmm0, %xmm6
3093 ; SSE-NEXT:    pandn %xmm2, %xmm6
3094 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm15 = xmm15[8],xmm5[8],xmm15[9],xmm5[9],xmm15[10],xmm5[10],xmm15[11],xmm5[11],xmm15[12],xmm5[12],xmm15[13],xmm5[13],xmm15[14],xmm5[14],xmm15[15],xmm5[15]
3095 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm15[0,3,2,1]
3096 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,3,4,5,6,7]
3097 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,7,7,7]
3098 ; SSE-NEXT:    pand %xmm0, %xmm2
3099 ; SSE-NEXT:    por %xmm6, %xmm2
3100 ; SSE-NEXT:    packuswb %xmm2, %xmm2
3101 ; SSE-NEXT:    movdqa %xmm3, %xmm6
3102 ; SSE-NEXT:    pandn %xmm2, %xmm6
3103 ; SSE-NEXT:    pand %xmm3, %xmm4
3104 ; SSE-NEXT:    por %xmm4, %xmm6
3105 ; SSE-NEXT:    movdqa %xmm9, %xmm2
3106 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm5[8],xmm2[9],xmm5[9],xmm2[10],xmm5[10],xmm2[11],xmm5[11],xmm2[12],xmm5[12],xmm2[13],xmm5[13],xmm2[14],xmm5[14],xmm2[15],xmm5[15]
3107 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
3108 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,5,6,5]
3109 ; SSE-NEXT:    movdqa %xmm1, %xmm4
3110 ; SSE-NEXT:    pandn %xmm2, %xmm4
3111 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3],xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]
3112 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm9[0,2,0,3]
3113 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7]
3114 ; SSE-NEXT:    pand %xmm1, %xmm2
3115 ; SSE-NEXT:    por %xmm4, %xmm2
3116 ; SSE-NEXT:    packuswb %xmm2, %xmm2
3117 ; SSE-NEXT:    movdqa %xmm14, %xmm4
3118 ; SSE-NEXT:    pandn %xmm2, %xmm4
3119 ; SSE-NEXT:    pand %xmm14, %xmm6
3120 ; SSE-NEXT:    por %xmm6, %xmm4
3121 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3122 ; SSE-NEXT:    movdqa %xmm8, %xmm2
3123 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3],xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
3124 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm5[8],xmm8[9],xmm5[9],xmm8[10],xmm5[10],xmm8[11],xmm5[11],xmm8[12],xmm5[12],xmm8[13],xmm5[13],xmm8[14],xmm5[14],xmm8[15],xmm5[15]
3125 ; SSE-NEXT:    movdqa %xmm8, %xmm4
3126 ; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[2,0],xmm2[3,0]
3127 ; SSE-NEXT:    movaps %xmm2, %xmm6
3128 ; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,1],xmm4[0,2]
3129 ; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,0],xmm8[0,0]
3130 ; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[2,0],xmm8[2,3]
3131 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm6[0,1,2,3,7,5,6,7]
3132 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,1,0,2]
3133 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[3,1,2,3,4,5,6,7]
3134 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,2,3]
3135 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,3,4,5,6,7]
3136 ; SSE-NEXT:    packuswb %xmm2, %xmm4
3137 ; SSE-NEXT:    movdqa %xmm13, %xmm2
3138 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3],xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
3139 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,1,2,3]
3140 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[3,1,2,1,4,5,6,7]
3141 ; SSE-NEXT:    movdqa %xmm0, %xmm6
3142 ; SSE-NEXT:    pandn %xmm2, %xmm6
3143 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm13 = xmm13[8],xmm5[8],xmm13[9],xmm5[9],xmm13[10],xmm5[10],xmm13[11],xmm5[11],xmm13[12],xmm5[12],xmm13[13],xmm5[13],xmm13[14],xmm5[14],xmm13[15],xmm5[15]
3144 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm13[0,3,2,1]
3145 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,3,4,5,6,7]
3146 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,7,7,7]
3147 ; SSE-NEXT:    pand %xmm0, %xmm2
3148 ; SSE-NEXT:    por %xmm6, %xmm2
3149 ; SSE-NEXT:    packuswb %xmm2, %xmm2
3150 ; SSE-NEXT:    movdqa %xmm3, %xmm6
3151 ; SSE-NEXT:    pandn %xmm2, %xmm6
3152 ; SSE-NEXT:    pand %xmm3, %xmm4
3153 ; SSE-NEXT:    por %xmm4, %xmm6
3154 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
3155 ; SSE-NEXT:    movdqa %xmm8, %xmm2
3156 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm5[8],xmm2[9],xmm5[9],xmm2[10],xmm5[10],xmm2[11],xmm5[11],xmm2[12],xmm5[12],xmm2[13],xmm5[13],xmm2[14],xmm5[14],xmm2[15],xmm5[15]
3157 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
3158 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,7,5,6,5]
3159 ; SSE-NEXT:    movdqa %xmm1, %xmm4
3160 ; SSE-NEXT:    pandn %xmm2, %xmm4
3161 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm5[0],xmm8[1],xmm5[1],xmm8[2],xmm5[2],xmm8[3],xmm5[3],xmm8[4],xmm5[4],xmm8[5],xmm5[5],xmm8[6],xmm5[6],xmm8[7],xmm5[7]
3162 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm8[0,2,0,3]
3163 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7]
3164 ; SSE-NEXT:    pand %xmm1, %xmm2
3165 ; SSE-NEXT:    por %xmm4, %xmm2
3166 ; SSE-NEXT:    packuswb %xmm2, %xmm2
3167 ; SSE-NEXT:    movdqa %xmm14, %xmm4
3168 ; SSE-NEXT:    pandn %xmm2, %xmm4
3169 ; SSE-NEXT:    pand %xmm14, %xmm6
3170 ; SSE-NEXT:    por %xmm6, %xmm4
3171 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3172 ; SSE-NEXT:    movdqa %xmm7, %xmm2
3173 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3],xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
3174 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm5[8],xmm7[9],xmm5[9],xmm7[10],xmm5[10],xmm7[11],xmm5[11],xmm7[12],xmm5[12],xmm7[13],xmm5[13],xmm7[14],xmm5[14],xmm7[15],xmm5[15]
3175 ; SSE-NEXT:    movdqa %xmm7, %xmm4
3176 ; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[2,0],xmm2[3,0]
3177 ; SSE-NEXT:    movaps %xmm2, %xmm6
3178 ; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,1],xmm4[0,2]
3179 ; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[1,0],xmm7[0,0]
3180 ; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[2,0],xmm7[2,3]
3181 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm6[0,1,2,3,7,5,6,7]
3182 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,1,0,2]
3183 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[3,1,2,3,4,5,6,7]
3184 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,2,3]
3185 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,3,3,4,5,6,7]
3186 ; SSE-NEXT:    packuswb %xmm2, %xmm4
3187 ; SSE-NEXT:    movdqa %xmm11, %xmm2
3188 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3],xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
3189 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,1,2,3]
3190 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[3,1,2,1,4,5,6,7]
3191 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8],xmm5[8],xmm11[9],xmm5[9],xmm11[10],xmm5[10],xmm11[11],xmm5[11],xmm11[12],xmm5[12],xmm11[13],xmm5[13],xmm11[14],xmm5[14],xmm11[15],xmm5[15]
3192 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm11[0,3,2,1]
3193 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[0,1,3,3,4,5,6,7]
3194 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,7,7,7,7]
3195 ; SSE-NEXT:    pand %xmm0, %xmm6
3196 ; SSE-NEXT:    pandn %xmm2, %xmm0
3197 ; SSE-NEXT:    por %xmm6, %xmm0
3198 ; SSE-NEXT:    pand %xmm3, %xmm4
3199 ; SSE-NEXT:    packuswb %xmm0, %xmm0
3200 ; SSE-NEXT:    pandn %xmm0, %xmm3
3201 ; SSE-NEXT:    por %xmm4, %xmm3
3202 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3203 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm5[8],xmm0[9],xmm5[9],xmm0[10],xmm5[10],xmm0[11],xmm5[11],xmm0[12],xmm5[12],xmm0[13],xmm5[13],xmm0[14],xmm5[14],xmm0[15],xmm5[15]
3204 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
3205 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,5,6,5]
3206 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm5[0],xmm10[1],xmm5[1],xmm10[2],xmm5[2],xmm10[3],xmm5[3],xmm10[4],xmm5[4],xmm10[5],xmm5[5],xmm10[6],xmm5[6],xmm10[7],xmm5[7]
3207 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm10[0,2,0,3]
3208 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7]
3209 ; SSE-NEXT:    pand %xmm1, %xmm2
3210 ; SSE-NEXT:    pandn %xmm0, %xmm1
3211 ; SSE-NEXT:    por %xmm2, %xmm1
3212 ; SSE-NEXT:    movdqa %xmm14, %xmm2
3213 ; SSE-NEXT:    pand %xmm14, %xmm3
3214 ; SSE-NEXT:    packuswb %xmm1, %xmm0
3215 ; SSE-NEXT:    pandn %xmm0, %xmm2
3216 ; SSE-NEXT:    por %xmm3, %xmm2
3217 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3218 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
3219 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Folded Reload
3220 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3221 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [255,255,255,255,255,255,255,255]
3222 ; SSE-NEXT:    pand %xmm8, %xmm0
3223 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[2,1,2,3]
3224 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,2,3,4,5,6,7]
3225 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
3226 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,2]
3227 ; SSE-NEXT:    packuswb %xmm1, %xmm0
3228 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [255,255,255,255,255,0,0,0,0,0,255,255,255,255,255,255]
3229 ; SSE-NEXT:    movdqa %xmm13, %xmm2
3230 ; SSE-NEXT:    pandn %xmm0, %xmm2
3231 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3232 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
3233 ; SSE-NEXT:    movdqa %xmm11, %xmm0
3234 ; SSE-NEXT:    pand %xmm8, %xmm0
3235 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
3236 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
3237 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,0,3]
3238 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,0,3,4,5,6,7]
3239 ; SSE-NEXT:    packuswb %xmm0, %xmm0
3240 ; SSE-NEXT:    pand %xmm13, %xmm0
3241 ; SSE-NEXT:    por %xmm2, %xmm0
3242 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
3243 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [65535,0,65535,65535,0,65535,65535,0]
3244 ; SSE-NEXT:    pand %xmm6, %xmm9
3245 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Folded Reload
3246 ; SSE-NEXT:    movdqa %xmm9, %xmm2
3247 ; SSE-NEXT:    pand %xmm8, %xmm2
3248 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]
3249 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,1,4,5,6,7]
3250 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]
3251 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]
3252 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,4,7]
3253 ; SSE-NEXT:    packuswb %xmm2, %xmm2
3254 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,65535,0,0,0]
3255 ; SSE-NEXT:    movdqa %xmm4, %xmm1
3256 ; SSE-NEXT:    pandn %xmm2, %xmm1
3257 ; SSE-NEXT:    pand %xmm4, %xmm0
3258 ; SSE-NEXT:    por %xmm0, %xmm1
3259 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3260 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
3261 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
3262 ; SSE-NEXT:    movdqa %xmm12, %xmm0
3263 ; SSE-NEXT:    pand %xmm8, %xmm0
3264 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[2,1,2,3]
3265 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]
3266 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
3267 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,2]
3268 ; SSE-NEXT:    packuswb %xmm2, %xmm0
3269 ; SSE-NEXT:    movdqa %xmm13, %xmm2
3270 ; SSE-NEXT:    pandn %xmm0, %xmm2
3271 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
3272 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
3273 ; SSE-NEXT:    movdqa %xmm3, %xmm0
3274 ; SSE-NEXT:    pand %xmm8, %xmm0
3275 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
3276 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
3277 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,0,3]
3278 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,0,3,4,5,6,7]
3279 ; SSE-NEXT:    packuswb %xmm0, %xmm0
3280 ; SSE-NEXT:    pand %xmm13, %xmm0
3281 ; SSE-NEXT:    por %xmm2, %xmm0
3282 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
3283 ; SSE-NEXT:    pand %xmm6, %xmm1
3284 ; SSE-NEXT:    movdqa %xmm6, %xmm7
3285 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
3286 ; SSE-NEXT:    movdqa %xmm1, %xmm2
3287 ; SSE-NEXT:    pand %xmm8, %xmm2
3288 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]
3289 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,1,4,5,6,7]
3290 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]
3291 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]
3292 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,4,7]
3293 ; SSE-NEXT:    packuswb %xmm2, %xmm2
3294 ; SSE-NEXT:    movdqa %xmm4, %xmm6
3295 ; SSE-NEXT:    pandn %xmm2, %xmm6
3296 ; SSE-NEXT:    pand %xmm4, %xmm0
3297 ; SSE-NEXT:    por %xmm0, %xmm6
3298 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3299 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3300 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
3301 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3302 ; SSE-NEXT:    pand %xmm8, %xmm0
3303 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[2,1,2,3]
3304 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]
3305 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
3306 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,2]
3307 ; SSE-NEXT:    packuswb %xmm2, %xmm0
3308 ; SSE-NEXT:    movdqa %xmm13, %xmm2
3309 ; SSE-NEXT:    pandn %xmm0, %xmm2
3310 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
3311 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload
3312 ; SSE-NEXT:    movdqa %xmm14, %xmm0
3313 ; SSE-NEXT:    pand %xmm8, %xmm0
3314 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
3315 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
3316 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,0,3]
3317 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,0,3,4,5,6,7]
3318 ; SSE-NEXT:    packuswb %xmm0, %xmm0
3319 ; SSE-NEXT:    pand %xmm13, %xmm0
3320 ; SSE-NEXT:    por %xmm2, %xmm0
3321 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
3322 ; SSE-NEXT:    pand %xmm7, %xmm15
3323 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Folded Reload
3324 ; SSE-NEXT:    movdqa %xmm15, %xmm2
3325 ; SSE-NEXT:    pand %xmm8, %xmm2
3326 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]
3327 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,2,1,4,5,6,7]
3328 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]
3329 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,0,3,4,5,6,7]
3330 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,4,7]
3331 ; SSE-NEXT:    packuswb %xmm2, %xmm2
3332 ; SSE-NEXT:    movdqa %xmm4, %xmm6
3333 ; SSE-NEXT:    pandn %xmm2, %xmm6
3334 ; SSE-NEXT:    pand %xmm4, %xmm0
3335 ; SSE-NEXT:    por %xmm0, %xmm6
3336 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3337 ; SSE-NEXT:    movdqa (%rsp), %xmm0 # 16-byte Reload
3338 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
3339 ; SSE-NEXT:    movdqa %xmm0, (%rsp) # 16-byte Spill
3340 ; SSE-NEXT:    pand %xmm8, %xmm0
3341 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[2,1,2,3]
3342 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,2,3,4,5,6,7]
3343 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
3344 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,2]
3345 ; SSE-NEXT:    packuswb %xmm2, %xmm0
3346 ; SSE-NEXT:    movdqa %xmm13, %xmm2
3347 ; SSE-NEXT:    pandn %xmm0, %xmm2
3348 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3349 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
3350 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3351 ; SSE-NEXT:    pand %xmm8, %xmm0
3352 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,1,2,0]
3353 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
3354 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,0,3]
3355 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm0[2,1,0,3,4,5,6,7]
3356 ; SSE-NEXT:    packuswb %xmm6, %xmm6
3357 ; SSE-NEXT:    pand %xmm13, %xmm6
3358 ; SSE-NEXT:    por %xmm2, %xmm6
3359 ; SSE-NEXT:    movdqa %xmm7, %xmm2
3360 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3361 ; SSE-NEXT:    pand %xmm7, %xmm0
3362 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
3363 ; SSE-NEXT:    por %xmm0, %xmm2
3364 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3365 ; SSE-NEXT:    movdqa %xmm8, %xmm0
3366 ; SSE-NEXT:    pand %xmm2, %xmm0
3367 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
3368 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,2,1,4,5,6,7]
3369 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
3370 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,3,4,5,6,7]
3371 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,4,7]
3372 ; SSE-NEXT:    packuswb %xmm0, %xmm2
3373 ; SSE-NEXT:    movdqa %xmm4, %xmm7
3374 ; SSE-NEXT:    pandn %xmm2, %xmm7
3375 ; SSE-NEXT:    pand %xmm4, %xmm6
3376 ; SSE-NEXT:    por %xmm6, %xmm7
3377 ; SSE-NEXT:    movdqa %xmm10, %xmm0
3378 ; SSE-NEXT:    movdqa %xmm10, %xmm2
3379 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm5[8],xmm2[9],xmm5[9],xmm2[10],xmm5[10],xmm2[11],xmm5[11],xmm2[12],xmm5[12],xmm2[13],xmm5[13],xmm2[14],xmm5[14],xmm2[15],xmm5[15]
3380 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1],xmm0[2],xmm5[2],xmm0[3],xmm5[3],xmm0[4],xmm5[4],xmm0[5],xmm5[5],xmm0[6],xmm5[6],xmm0[7],xmm5[7]
3381 ; SSE-NEXT:    movdqa %xmm0, %xmm6
3382 ; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,0],xmm2[0,0]
3383 ; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[2,0],xmm2[2,3]
3384 ; SSE-NEXT:    psrlq $48, %xmm2
3385 ; SSE-NEXT:    psrldq {{.*#+}} xmm6 = xmm6[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
3386 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1],xmm6[2],xmm2[2],xmm6[3],xmm2[3]
3387 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm0[3,1,2,3,4,5,6,7]
3388 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,0,3]
3389 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,7]
3390 ; SSE-NEXT:    packuswb %xmm6, %xmm2
3391 ; SSE-NEXT:    movdqa %xmm13, %xmm8
3392 ; SSE-NEXT:    pandn %xmm2, %xmm8
3393 ; SSE-NEXT:    movdqa %xmm11, %xmm2
3394 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm5[8],xmm2[9],xmm5[9],xmm2[10],xmm5[10],xmm2[11],xmm5[11],xmm2[12],xmm5[12],xmm2[13],xmm5[13],xmm2[14],xmm5[14],xmm2[15],xmm5[15]
3395 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,2,3]
3396 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,5,5,5]
3397 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,0,65535,65535,65535]
3398 ; SSE-NEXT:    movdqa %xmm0, %xmm10
3399 ; SSE-NEXT:    pandn %xmm2, %xmm10
3400 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm5[0],xmm11[1],xmm5[1],xmm11[2],xmm5[2],xmm11[3],xmm5[3],xmm11[4],xmm5[4],xmm11[5],xmm5[5],xmm11[6],xmm5[6],xmm11[7],xmm5[7]
3401 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm11[0,1,2,3,7,5,6,7]
3402 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
3403 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm2[3,1,1,2,4,5,6,7]
3404 ; SSE-NEXT:    pand %xmm0, %xmm6
3405 ; SSE-NEXT:    por %xmm10, %xmm6
3406 ; SSE-NEXT:    packuswb %xmm6, %xmm6
3407 ; SSE-NEXT:    pand %xmm13, %xmm6
3408 ; SSE-NEXT:    por %xmm8, %xmm6
3409 ; SSE-NEXT:    movdqa %xmm9, %xmm2
3410 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm9 = xmm9[8],xmm5[8],xmm9[9],xmm5[9],xmm9[10],xmm5[10],xmm9[11],xmm5[11],xmm9[12],xmm5[12],xmm9[13],xmm5[13],xmm9[14],xmm5[14],xmm9[15],xmm5[15]
3411 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm9[0,1,2,3,7,5,6,7]
3412 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,1,2,0]
3413 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,5,7,4]
3414 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [65535,65535,65535,65535,0,65535,0,0]
3415 ; SSE-NEXT:    movdqa %xmm11, %xmm10
3416 ; SSE-NEXT:    pandn %xmm8, %xmm10
3417 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm5[0],xmm2[1],xmm5[1],xmm2[2],xmm5[2],xmm2[3],xmm5[3],xmm2[4],xmm5[4],xmm2[5],xmm5[5],xmm2[6],xmm5[6],xmm2[7],xmm5[7]
3418 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,1,1]
3419 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,1,1,3,4,5,6,7]
3420 ; SSE-NEXT:    pand %xmm11, %xmm2
3421 ; SSE-NEXT:    por %xmm2, %xmm10
3422 ; SSE-NEXT:    packuswb %xmm10, %xmm8
3423 ; SSE-NEXT:    movdqa %xmm4, %xmm2
3424 ; SSE-NEXT:    pandn %xmm8, %xmm2
3425 ; SSE-NEXT:    pand %xmm4, %xmm6
3426 ; SSE-NEXT:    por %xmm6, %xmm2
3427 ; SSE-NEXT:    movdqa %xmm12, %xmm9
3428 ; SSE-NEXT:    movdqa %xmm12, %xmm6
3429 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm5[8],xmm6[9],xmm5[9],xmm6[10],xmm5[10],xmm6[11],xmm5[11],xmm6[12],xmm5[12],xmm6[13],xmm5[13],xmm6[14],xmm5[14],xmm6[15],xmm5[15]
3430 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3],xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]
3431 ; SSE-NEXT:    movdqa %xmm9, %xmm8
3432 ; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[1,0],xmm6[0,0]
3433 ; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[2,0],xmm6[2,3]
3434 ; SSE-NEXT:    psrlq $48, %xmm6
3435 ; SSE-NEXT:    psrldq {{.*#+}} xmm8 = xmm8[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
3436 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3]
3437 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm9[3,1,2,3,4,5,6,7]
3438 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,1,0,3]
3439 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,5,7]
3440 ; SSE-NEXT:    packuswb %xmm8, %xmm6
3441 ; SSE-NEXT:    movdqa %xmm13, %xmm8
3442 ; SSE-NEXT:    pandn %xmm6, %xmm8
3443 ; SSE-NEXT:    movdqa %xmm3, %xmm6
3444 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm5[8],xmm6[9],xmm5[9],xmm6[10],xmm5[10],xmm6[11],xmm5[11],xmm6[12],xmm5[12],xmm6[13],xmm5[13],xmm6[14],xmm5[14],xmm6[15],xmm5[15]
3445 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[1,1,2,3]
3446 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,5,5,5]
3447 ; SSE-NEXT:    movdqa %xmm0, %xmm10
3448 ; SSE-NEXT:    pandn %xmm6, %xmm10
3449 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7]
3450 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm3[0,1,2,3,7,5,6,7]
3451 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,2,2,3]
3452 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[3,1,1,2,4,5,6,7]
3453 ; SSE-NEXT:    pand %xmm0, %xmm6
3454 ; SSE-NEXT:    por %xmm10, %xmm6
3455 ; SSE-NEXT:    packuswb %xmm6, %xmm6
3456 ; SSE-NEXT:    pand %xmm13, %xmm6
3457 ; SSE-NEXT:    por %xmm8, %xmm6
3458 ; SSE-NEXT:    movdqa %xmm1, %xmm8
3459 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm5[8],xmm1[9],xmm5[9],xmm1[10],xmm5[10],xmm1[11],xmm5[11],xmm1[12],xmm5[12],xmm1[13],xmm5[13],xmm1[14],xmm5[14],xmm1[15],xmm5[15]
3460 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm1[0,1,2,3,7,5,6,7]
3461 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,1,2,0]
3462 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,5,5,7,4]
3463 ; SSE-NEXT:    movdqa %xmm11, %xmm12
3464 ; SSE-NEXT:    pandn %xmm10, %xmm12
3465 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm5[0],xmm8[1],xmm5[1],xmm8[2],xmm5[2],xmm8[3],xmm5[3],xmm8[4],xmm5[4],xmm8[5],xmm5[5],xmm8[6],xmm5[6],xmm8[7],xmm5[7]
3466 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,3,1,1]
3467 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[0,1,1,3,4,5,6,7]
3468 ; SSE-NEXT:    pand %xmm11, %xmm8
3469 ; SSE-NEXT:    por %xmm8, %xmm12
3470 ; SSE-NEXT:    packuswb %xmm12, %xmm8
3471 ; SSE-NEXT:    movdqa %xmm4, %xmm12
3472 ; SSE-NEXT:    pandn %xmm8, %xmm12
3473 ; SSE-NEXT:    pand %xmm4, %xmm6
3474 ; SSE-NEXT:    por %xmm6, %xmm12
3475 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
3476 ; SSE-NEXT:    movdqa %xmm9, %xmm6
3477 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm5[8],xmm6[9],xmm5[9],xmm6[10],xmm5[10],xmm6[11],xmm5[11],xmm6[12],xmm5[12],xmm6[13],xmm5[13],xmm6[14],xmm5[14],xmm6[15],xmm5[15]
3478 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm5[0],xmm9[1],xmm5[1],xmm9[2],xmm5[2],xmm9[3],xmm5[3],xmm9[4],xmm5[4],xmm9[5],xmm5[5],xmm9[6],xmm5[6],xmm9[7],xmm5[7]
3479 ; SSE-NEXT:    movdqa %xmm9, %xmm8
3480 ; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[1,0],xmm6[0,0]
3481 ; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[2,0],xmm6[2,3]
3482 ; SSE-NEXT:    psrlq $48, %xmm6
3483 ; SSE-NEXT:    psrldq {{.*#+}} xmm8 = xmm8[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
3484 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3]
3485 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm9[3,1,2,3,4,5,6,7]
3486 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,1,0,3]
3487 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,4,4,5,7]
3488 ; SSE-NEXT:    packuswb %xmm8, %xmm6
3489 ; SSE-NEXT:    movdqa %xmm13, %xmm8
3490 ; SSE-NEXT:    pandn %xmm6, %xmm8
3491 ; SSE-NEXT:    movdqa %xmm14, %xmm6
3492 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm5[8],xmm6[9],xmm5[9],xmm6[10],xmm5[10],xmm6[11],xmm5[11],xmm6[12],xmm5[12],xmm6[13],xmm5[13],xmm6[14],xmm5[14],xmm6[15],xmm5[15]
3493 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[1,1,2,3]
3494 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,5,5,5,5]
3495 ; SSE-NEXT:    movdqa %xmm0, %xmm9
3496 ; SSE-NEXT:    pandn %xmm6, %xmm9
3497 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm5[0],xmm14[1],xmm5[1],xmm14[2],xmm5[2],xmm14[3],xmm5[3],xmm14[4],xmm5[4],xmm14[5],xmm5[5],xmm14[6],xmm5[6],xmm14[7],xmm5[7]
3498 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm14[0,1,2,3,7,5,6,7]
3499 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,2,2,3]
3500 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm6[3,1,1,2,4,5,6,7]
3501 ; SSE-NEXT:    pand %xmm0, %xmm10
3502 ; SSE-NEXT:    por %xmm9, %xmm10
3503 ; SSE-NEXT:    packuswb %xmm10, %xmm10
3504 ; SSE-NEXT:    pand %xmm13, %xmm10
3505 ; SSE-NEXT:    por %xmm8, %xmm10
3506 ; SSE-NEXT:    movdqa %xmm15, %xmm6
3507 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm15 = xmm15[8],xmm5[8],xmm15[9],xmm5[9],xmm15[10],xmm5[10],xmm15[11],xmm5[11],xmm15[12],xmm5[12],xmm15[13],xmm5[13],xmm15[14],xmm5[14],xmm15[15],xmm5[15]
3508 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm15[0,1,2,3,7,5,6,7]
3509 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,1,2,0]
3510 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,5,7,4]
3511 ; SSE-NEXT:    movdqa %xmm11, %xmm9
3512 ; SSE-NEXT:    pandn %xmm8, %xmm9
3513 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm5[0],xmm6[1],xmm5[1],xmm6[2],xmm5[2],xmm6[3],xmm5[3],xmm6[4],xmm5[4],xmm6[5],xmm5[5],xmm6[6],xmm5[6],xmm6[7],xmm5[7]
3514 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,3,1,1]
3515 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[0,1,1,3,4,5,6,7]
3516 ; SSE-NEXT:    pand %xmm11, %xmm6
3517 ; SSE-NEXT:    por %xmm6, %xmm9
3518 ; SSE-NEXT:    packuswb %xmm9, %xmm8
3519 ; SSE-NEXT:    movdqa %xmm4, %xmm6
3520 ; SSE-NEXT:    pandn %xmm8, %xmm6
3521 ; SSE-NEXT:    pand %xmm4, %xmm10
3522 ; SSE-NEXT:    por %xmm10, %xmm6
3523 ; SSE-NEXT:    movdqa (%rsp), %xmm1 # 16-byte Reload
3524 ; SSE-NEXT:    movdqa %xmm1, %xmm8
3525 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm5[8],xmm8[9],xmm5[9],xmm8[10],xmm5[10],xmm8[11],xmm5[11],xmm8[12],xmm5[12],xmm8[13],xmm5[13],xmm8[14],xmm5[14],xmm8[15],xmm5[15]
3526 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3],xmm1[4],xmm5[4],xmm1[5],xmm5[5],xmm1[6],xmm5[6],xmm1[7],xmm5[7]
3527 ; SSE-NEXT:    movdqa %xmm1, %xmm9
3528 ; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,0],xmm8[0,0]
3529 ; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,0],xmm8[2,3]
3530 ; SSE-NEXT:    psrlq $48, %xmm8
3531 ; SSE-NEXT:    psrldq {{.*#+}} xmm9 = xmm9[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
3532 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3]
3533 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm1[3,1,2,3,4,5,6,7]
3534 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,1,0,3]
3535 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,5,7]
3536 ; SSE-NEXT:    packuswb %xmm9, %xmm8
3537 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
3538 ; SSE-NEXT:    movdqa %xmm14, %xmm9
3539 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm9 = xmm9[8],xmm5[8],xmm9[9],xmm5[9],xmm9[10],xmm5[10],xmm9[11],xmm5[11],xmm9[12],xmm5[12],xmm9[13],xmm5[13],xmm9[14],xmm5[14],xmm9[15],xmm5[15]
3540 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[1,1,2,3]
3541 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,5,5,5,5]
3542 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm5[0],xmm14[1],xmm5[1],xmm14[2],xmm5[2],xmm14[3],xmm5[3],xmm14[4],xmm5[4],xmm14[5],xmm5[5],xmm14[6],xmm5[6],xmm14[7],xmm5[7]
3543 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm14[0,1,2,3,7,5,6,7]
3544 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,2,2,3]
3545 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm10[3,1,1,2,4,5,6,7]
3546 ; SSE-NEXT:    pand %xmm0, %xmm10
3547 ; SSE-NEXT:    pandn %xmm9, %xmm0
3548 ; SSE-NEXT:    por %xmm10, %xmm0
3549 ; SSE-NEXT:    packuswb %xmm0, %xmm0
3550 ; SSE-NEXT:    pand %xmm13, %xmm0
3551 ; SSE-NEXT:    pandn %xmm8, %xmm13
3552 ; SSE-NEXT:    por %xmm13, %xmm0
3553 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
3554 ; SSE-NEXT:    movdqa %xmm14, %xmm1
3555 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3],xmm1[4],xmm5[4],xmm1[5],xmm5[5],xmm1[6],xmm5[6],xmm1[7],xmm5[7]
3556 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm14 = xmm14[8],xmm5[8],xmm14[9],xmm5[9],xmm14[10],xmm5[10],xmm14[11],xmm5[11],xmm14[12],xmm5[12],xmm14[13],xmm5[13],xmm14[14],xmm5[14],xmm14[15],xmm5[15]
3557 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,1,1]
3558 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,1,3,4,5,6,7]
3559 ; SSE-NEXT:    pand %xmm11, %xmm1
3560 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm14[0,1,2,3,7,5,6,7]
3561 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[0,1,2,0]
3562 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,5,7,4]
3563 ; SSE-NEXT:    pandn %xmm5, %xmm11
3564 ; SSE-NEXT:    por %xmm1, %xmm11
3565 ; SSE-NEXT:    pand %xmm4, %xmm0
3566 ; SSE-NEXT:    packuswb %xmm11, %xmm1
3567 ; SSE-NEXT:    pandn %xmm1, %xmm4
3568 ; SSE-NEXT:    por %xmm0, %xmm4
3569 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3570 ; SSE-NEXT:    movaps %xmm0, 16(%rsi)
3571 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3572 ; SSE-NEXT:    movaps %xmm0, 32(%rsi)
3573 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3574 ; SSE-NEXT:    movaps %xmm0, 48(%rsi)
3575 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3576 ; SSE-NEXT:    movaps %xmm0, (%rsi)
3577 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3578 ; SSE-NEXT:    movaps %xmm0, 16(%rdx)
3579 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3580 ; SSE-NEXT:    movaps %xmm0, 32(%rdx)
3581 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3582 ; SSE-NEXT:    movaps %xmm0, 48(%rdx)
3583 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3584 ; SSE-NEXT:    movaps %xmm0, (%rdx)
3585 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3586 ; SSE-NEXT:    movaps %xmm0, 16(%rcx)
3587 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3588 ; SSE-NEXT:    movaps %xmm0, 32(%rcx)
3589 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3590 ; SSE-NEXT:    movaps %xmm0, 48(%rcx)
3591 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3592 ; SSE-NEXT:    movaps %xmm0, (%rcx)
3593 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3594 ; SSE-NEXT:    movaps %xmm0, 16(%r8)
3595 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3596 ; SSE-NEXT:    movaps %xmm0, 32(%r8)
3597 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3598 ; SSE-NEXT:    movaps %xmm0, 48(%r8)
3599 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3600 ; SSE-NEXT:    movaps %xmm0, (%r8)
3601 ; SSE-NEXT:    movdqa %xmm7, 16(%r9)
3602 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3603 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
3604 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3605 ; SSE-NEXT:    movaps %xmm0, 48(%r9)
3606 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3607 ; SSE-NEXT:    movaps %xmm0, (%r9)
3608 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3609 ; SSE-NEXT:    movdqa %xmm4, 16(%rax)
3610 ; SSE-NEXT:    movdqa %xmm6, 32(%rax)
3611 ; SSE-NEXT:    movdqa %xmm12, 48(%rax)
3612 ; SSE-NEXT:    movdqa %xmm2, (%rax)
3613 ; SSE-NEXT:    addq $808, %rsp # imm = 0x328
3614 ; SSE-NEXT:    retq
3616 ; AVX1-ONLY-LABEL: load_i8_stride6_vf64:
3617 ; AVX1-ONLY:       # %bb.0:
3618 ; AVX1-ONLY-NEXT:    subq $808, %rsp # imm = 0x328
3619 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [0,0,0,128,128,128,4,10,0,0,0,128,128,128,4,10]
3620 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
3621 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = [0,0,0,2,8,14,128,128,0,0,0,2,8,14,128,128]
3622 ; AVX1-ONLY-NEXT:    # xmm7 = mem[0,0]
3623 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm2 = [0,0,4,10,0,0,4,10,0,0,4,10,0,0,4,10]
3624 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm3 = [0,6,12,0,0,6,12,0,0,6,12,0,0,6,12,0]
3625 ; AVX1-ONLY-NEXT:    vmovdqa 128(%rdi), %xmm1
3626 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm1, %xmm0
3627 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm4
3628 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, %xmm8
3629 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3630 ; AVX1-ONLY-NEXT:    vmovdqa 144(%rdi), %xmm2
3631 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm2, %xmm1
3632 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm5
3633 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm10
3634 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3635 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
3636 ; AVX1-ONLY-NEXT:    vmovdqa 176(%rdi), %xmm2
3637 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm2, %xmm0
3638 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm9
3639 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3640 ; AVX1-ONLY-NEXT:    vmovdqa 160(%rdi), %xmm3
3641 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm3, %xmm2
3642 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm11
3643 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3644 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm2
3645 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <u,u,u,u,u,u,255,255,255,255,255,0,0,0,0,0>
3646 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
3647 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3648 ; AVX1-ONLY-NEXT:    vmovdqa 320(%rdi), %xmm2
3649 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm2, %xmm1
3650 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm12
3651 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3652 ; AVX1-ONLY-NEXT:    vmovdqa 336(%rdi), %xmm3
3653 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm3, %xmm2
3654 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm13
3655 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3656 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
3657 ; AVX1-ONLY-NEXT:    vmovdqa 368(%rdi), %xmm3
3658 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm3, %xmm2
3659 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm14
3660 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3661 ; AVX1-ONLY-NEXT:    vmovdqa 352(%rdi), %xmm4
3662 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm4, %xmm3
3663 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, %xmm15
3664 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3665 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
3666 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
3667 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3668 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm2 = [0,0,5,11,0,0,5,11,0,0,5,11,0,0,5,11]
3669 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm3 = [1,7,13,0,1,7,13,0,1,7,13,0,1,7,13,0]
3670 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm8, %xmm1
3671 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm4
3672 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm10, %xmm2
3673 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm5
3674 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
3675 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [0,0,0,128,128,128,5,11,0,0,0,128,128,128,5,11]
3676 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
3677 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [0,0,0,3,9,15,128,128,0,0,0,3,9,15,128,128]
3678 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
3679 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm9, %xmm2
3680 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm7
3681 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm11, %xmm3
3682 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
3683 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
3684 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3685 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm12, %xmm1
3686 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm13, %xmm2
3687 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
3688 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm14, %xmm2
3689 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm15, %xmm3
3690 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
3691 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm0
3692 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3693 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm4
3694 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm11
3695 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm0 = [2,8,14,0,2,8,14,0,2,8,14,0,2,8,14,0]
3696 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm11, %xmm2
3697 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, %xmm8
3698 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3699 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm15 = [0,0,6,12,0,0,6,12,0,0,6,12,0,0,6,12]
3700 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm4, %xmm3
3701 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, %xmm0
3702 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3703 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
3704 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm10
3705 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm14
3706 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [128,128,128,4,10,0,0,0,128,128,128,4,10,0,0,0]
3707 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
3708 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = [2,8,14,128,128,0,0,0,2,8,14,128,128,0,0,0]
3709 ; AVX1-ONLY-NEXT:    # xmm5 = mem[0,0]
3710 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm14, %xmm2
3711 ; AVX1-ONLY-NEXT:    vmovdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3712 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, %xmm12
3713 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm10, %xmm4
3714 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3715 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm6
3716 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm4, %xmm4
3717 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm13 = <0,0,0,0,0,255,255,255,255,255,255,u,u,u,u,u>
3718 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, %xmm3, %xmm4, %xmm3
3719 ; AVX1-ONLY-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3720 ; AVX1-ONLY-NEXT:    vmovdqa 224(%rdi), %xmm5
3721 ; AVX1-ONLY-NEXT:    vmovdqa 240(%rdi), %xmm9
3722 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm9, %xmm3
3723 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3724 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm5, %xmm4
3725 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm8
3726 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3727 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm3 = xmm4[0],xmm3[0]
3728 ; AVX1-ONLY-NEXT:    vmovdqa 208(%rdi), %xmm1
3729 ; AVX1-ONLY-NEXT:    vmovdqa 192(%rdi), %xmm2
3730 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm1, %xmm4
3731 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3732 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm2, %xmm5
3733 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3734 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm5, %xmm4
3735 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, %xmm3, %xmm4, %xmm3
3736 ; AVX1-ONLY-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3737 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm3 = [3,9,15,0,3,9,15,0,3,9,15,0,3,9,15,0]
3738 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm11, %xmm5
3739 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm11
3740 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm12 = [0,1,7,13,0,1,7,13,0,1,7,13,0,1,7,13]
3741 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm0, %xmm6
3742 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm5 = xmm6[0],xmm5[0]
3743 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [128,128,128,5,11,0,0,0,128,128,128,5,11,0,0,0]
3744 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
3745 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [3,9,15,128,128,0,0,0,3,9,15,128,128,0,0,0]
3746 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
3747 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm14, %xmm6
3748 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm10, %xmm7
3749 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm7, %xmm6
3750 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, %xmm5, %xmm6, %xmm0
3751 ; AVX1-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3752 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm9, %xmm5
3753 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, %xmm14
3754 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm8, %xmm6
3755 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm5 = xmm6[0],xmm5[0]
3756 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm1, %xmm6
3757 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm2, %xmm7
3758 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm7, %xmm6
3759 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, %xmm5, %xmm6, %xmm0
3760 ; AVX1-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3761 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
3762 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm1 = [2,8,14,0,2,8,14,0,2,8,14,0,2,8,14,0]
3763 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm9, %xmm2
3764 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
3765 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm8, %xmm5
3766 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0]
3767 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = [0,0,0,4,10,128,128,128,0,0,0,4,10,128,128,128]
3768 ; AVX1-ONLY-NEXT:    # xmm7 = mem[0,0]
3769 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [0,0,0,128,128,0,6,12,0,0,0,128,128,0,6,12]
3770 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
3771 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3772 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm11, %xmm5
3773 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
3774 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm10, %xmm6
3775 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm6, %xmm5
3776 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm6 = <u,u,u,u,u,255,255,255,255,255,255,0,0,0,0,0>
3777 ; AVX1-ONLY-NEXT:    vpblendvb %xmm6, %xmm2, %xmm5, %xmm0
3778 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3779 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
3780 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm13, %xmm0
3781 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3782 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm5, %xmm1
3783 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
3784 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
3785 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm15, %xmm1
3786 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
3787 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm7, %xmm2
3788 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
3789 ; AVX1-ONLY-NEXT:    vpblendvb %xmm6, %xmm0, %xmm1, %xmm0
3790 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3791 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm9, %xmm0
3792 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm8, %xmm1
3793 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
3794 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [0,0,0,5,11,128,128,128,0,0,0,5,11,128,128,128]
3795 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
3796 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm8 = [0,0,0,128,128,1,7,13,0,0,0,128,128,1,7,13]
3797 ; AVX1-ONLY-NEXT:    # xmm8 = mem[0,0]
3798 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm11, %xmm1
3799 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm3
3800 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm10, %xmm2
3801 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
3802 ; AVX1-ONLY-NEXT:    vpblendvb %xmm6, %xmm0, %xmm1, %xmm0
3803 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3804 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm13, %xmm0
3805 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm5, %xmm1
3806 ; AVX1-ONLY-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
3807 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm15, %xmm1
3808 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm7, %xmm2
3809 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
3810 ; AVX1-ONLY-NEXT:    vpblendvb %xmm6, %xmm0, %xmm1, %xmm0
3811 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3812 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [4,10,128,128,128,0,0,0,4,10,128,128,128,0,0,0]
3813 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
3814 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
3815 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm10, %xmm0
3816 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, %xmm5
3817 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [128,128,0,6,12,0,0,0,128,128,0,6,12,0,0,0]
3818 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
3819 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
3820 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm4, %xmm1
3821 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm9
3822 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm1
3823 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm2 = [4,10,0,0,4,10,0,0,4,10,0,0,4,10,0,0]
3824 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
3825 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm12, %xmm0
3826 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm6
3827 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm3 = [0,2,8,14,0,2,8,14,0,2,8,14,0,2,8,14]
3828 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
3829 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm14, %xmm2
3830 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm2[1],xmm0[1]
3831 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <255,255,255,255,255,0,0,0,0,0,u,u,u,u,u,u>
3832 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
3833 ; AVX1-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3834 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
3835 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm15, %xmm1
3836 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
3837 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm8, %xmm2
3838 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
3839 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
3840 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm7, %xmm2
3841 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
3842 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm6, %xmm3
3843 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm3[1],xmm2[1]
3844 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
3845 ; AVX1-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3846 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [5,11,128,128,128,0,0,0,5,11,128,128,128,0,0,0]
3847 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
3848 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm10, %xmm1
3849 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm9
3850 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [128,128,1,7,13,0,0,0,128,128,1,7,13,0,0,0]
3851 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
3852 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm4, %xmm2
3853 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm10
3854 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, %xmm13
3855 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
3856 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm3 = [5,11,0,0,5,11,0,0,5,11,0,0,5,11,0,0]
3857 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm12, %xmm2
3858 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm11
3859 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [0,3,9,15,0,3,9,15,0,3,9,15,0,3,9,15]
3860 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm14, %xmm3
3861 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm3[1],xmm2[1]
3862 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
3863 ; AVX1-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3864 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm15, %xmm1
3865 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm8, %xmm2
3866 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
3867 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm7, %xmm2
3868 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm6, %xmm3
3869 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm3[1],xmm2[1]
3870 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm0
3871 ; AVX1-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3872 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [128,128,128,2,8,14,0,0,128,128,128,2,8,14,0,0]
3873 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
3874 ; AVX1-ONLY-NEXT:    vmovdqa 112(%rdi), %xmm0
3875 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, (%rsp) # 16-byte Spill
3876 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
3877 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, %xmm3
3878 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [0,6,12,128,128,128,0,0,0,6,12,128,128,128,0,0]
3879 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
3880 ; AVX1-ONLY-NEXT:    vmovdqa 96(%rdi), %xmm1
3881 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3882 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm1, %xmm1
3883 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm5
3884 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
3885 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rdi), %xmm2
3886 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm10 = [0,0,0,128,128,128,4,10,0,0,0,128,128,128,4,10]
3887 ; AVX1-ONLY-NEXT:    # xmm10 = mem[0,0]
3888 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm2, %xmm1
3889 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm9
3890 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3891 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm2
3892 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3893 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm11 = [0,0,0,2,8,14,128,128,0,0,0,2,8,14,128,128]
3894 ; AVX1-ONLY-NEXT:    # xmm11 = mem[0,0]
3895 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm2, %xmm4
3896 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm4, %xmm1
3897 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm1
3898 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm14[u,u,4,10,u,u,u,u,u,u,u,u,u,u,u,u]
3899 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm12[u,u,u,u,0,6,12,u,u,u,u,u,u,u,u,u]
3900 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm4[0],xmm0[0],xmm4[1],xmm0[1]
3901 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm13, %xmm4
3902 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm14
3903 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
3904 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm12
3905 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm2, %xmm5
3906 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm5, %xmm4
3907 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1,2],xmm0[3,4,5],xmm4[6,7]
3908 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm13 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255]
3909 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm13, %ymm1
3910 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm13, %ymm4
3911 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm4, %ymm4
3912 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm3 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0]
3913 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm4, %ymm4
3914 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm5 # 16-byte Folded Reload
3915 ; AVX1-ONLY-NEXT:    vandnps %ymm5, %ymm3, %ymm5
3916 ; AVX1-ONLY-NEXT:    vorps %ymm5, %ymm4, %ymm0
3917 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3918 ; AVX1-ONLY-NEXT:    vmovdqa 304(%rdi), %xmm0
3919 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3920 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm0, %xmm4
3921 ; AVX1-ONLY-NEXT:    vmovdqa 288(%rdi), %xmm0
3922 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm0, %xmm5
3923 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, %xmm12
3924 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3925 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm5, %xmm1
3926 ; AVX1-ONLY-NEXT:    vmovdqa 272(%rdi), %xmm0
3927 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3928 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm0, %xmm0
3929 ; AVX1-ONLY-NEXT:    vmovdqa 256(%rdi), %xmm2
3930 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3931 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm2, %xmm10
3932 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm10, %xmm0
3933 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0
3934 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm6[u,u,4,10,u,u,u,u,u,u,u,u,u,u,u,u]
3935 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm7[u,u,u,u,0,6,12,u,u,u,u,u,u,u,u,u]
3936 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm10[0],xmm1[0],xmm10[1],xmm1[1]
3937 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm8, %xmm7
3938 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm15[0,6,12],zero,zero,zero,xmm15[u,u,u,u,u,u,u,u,u,u]
3939 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm6, %xmm6
3940 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm6[0,1,2],xmm1[3,4,5],xmm6[6,7]
3941 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm13, %ymm0
3942 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm13, %ymm1
3943 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm0
3944 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm0, %ymm0
3945 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm1 # 16-byte Folded Reload
3946 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm3, %ymm1
3947 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
3948 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3949 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [128,128,128,3,9,15,0,0,128,128,128,3,9,15,0,0]
3950 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
3951 ; AVX1-ONLY-NEXT:    vmovdqa (%rsp), %xmm14 # 16-byte Reload
3952 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm14, %xmm1
3953 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [1,7,13,128,128,128,0,0,1,7,13,128,128,128,0,0]
3954 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
3955 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
3956 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm15, %xmm7
3957 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm7, %xmm1
3958 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm8 = [0,0,0,128,128,128,5,11,0,0,0,128,128,128,5,11]
3959 ; AVX1-ONLY-NEXT:    # xmm8 = mem[0,0]
3960 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm9, %xmm7
3961 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm9 = [0,0,0,3,9,15,128,128,0,0,0,3,9,15,128,128]
3962 ; AVX1-ONLY-NEXT:    # xmm9 = mem[0,0]
3963 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
3964 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm2, %xmm10
3965 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm10, %xmm7
3966 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm7, %ymm1
3967 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [0,0,5,11,0,0,5,11,0,0,5,11,0,0,5,11]
3968 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3969 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm5, %xmm7
3970 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm5 = [1,7,13,0,1,7,13,0,1,7,13,0,1,7,13,0]
3971 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
3972 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm10, %xmm10
3973 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm10[0],xmm7[0],xmm10[1],xmm7[1]
3974 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
3975 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm10, %xmm10
3976 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3977 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm11, %xmm11
3978 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm11, %xmm10
3979 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm10[0,1,2],xmm7[3,4,5],xmm10[6,7]
3980 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm13, %ymm1
3981 ; AVX1-ONLY-NEXT:    vandps %ymm7, %ymm13, %ymm7
3982 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm7, %ymm1
3983 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm1, %ymm1
3984 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm7 # 16-byte Folded Reload
3985 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm3, %ymm7
3986 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm1, %ymm1
3987 ; AVX1-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3988 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
3989 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm11, %xmm1
3990 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm12, %xmm7
3991 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm7, %xmm1
3992 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
3993 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm12, %xmm7
3994 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
3995 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm8, %xmm10
3996 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm10, %xmm7
3997 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm7, %ymm1
3998 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
3999 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm7, %xmm7
4000 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
4001 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm4, %xmm10
4002 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm10[0],xmm7[0],xmm10[1],xmm7[1]
4003 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
4004 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm4, %xmm0
4005 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
4006 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm4, %xmm6
4007 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm6, %xmm0
4008 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1,2],xmm7[3,4,5],xmm0[6,7]
4009 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm13, %ymm1
4010 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm13, %ymm0
4011 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
4012 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm0, %ymm0
4013 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm1 # 16-byte Folded Reload
4014 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm3, %ymm1
4015 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
4016 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4017 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [128,128,128,4,10,0,0,0,128,128,128,4,10,0,0,0]
4018 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
4019 ; AVX1-ONLY-NEXT:    vmovdqa %xmm14, %xmm13
4020 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm14, %xmm0
4021 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [2,8,14,128,128,0,0,0,2,8,14,128,128,0,0,0]
4022 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
4023 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm15, %xmm1
4024 ; AVX1-ONLY-NEXT:    vmovdqa %xmm15, %xmm4
4025 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
4026 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm15 = [0,0,0,4,10,128,128,128,0,0,0,4,10,128,128,128]
4027 ; AVX1-ONLY-NEXT:    # xmm15 = mem[0,0]
4028 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm2, %xmm1
4029 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm5
4030 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [0,0,0,128,128,0,6,12,0,0,0,128,128,0,6,12]
4031 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
4032 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
4033 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm7, %xmm2
4034 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
4035 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm1
4036 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm0 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255]
4037 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm0, %ymm1
4038 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 32-byte Folded Reload
4039 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm2, %ymm1
4040 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm14 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0]
4041 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm14, %ymm1
4042 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 16-byte Folded Reload
4043 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm14, %ymm2
4044 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm1, %ymm1
4045 ; AVX1-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4046 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, %xmm9
4047 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm11, %xmm2
4048 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
4049 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm10[2,8,14],zero,zero,xmm10[u,u,u,u,u,u,u,u,u,u,u]
4050 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
4051 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm8, %xmm3
4052 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, %xmm15
4053 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm12, %xmm6
4054 ; AVX1-ONLY-NEXT:    vmovdqa %xmm12, %xmm11
4055 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm6, %xmm3
4056 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
4057 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm0, %ymm2
4058 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm3 # 32-byte Folded Reload
4059 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm3, %ymm2
4060 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm14, %ymm2
4061 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm3 # 16-byte Folded Reload
4062 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm14, %ymm3
4063 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm2, %ymm1
4064 ; AVX1-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4065 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [128,128,128,5,11,0,0,0,128,128,128,5,11,0,0,0]
4066 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
4067 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm13, %xmm3
4068 ; AVX1-ONLY-NEXT:    vmovdqa %xmm13, %xmm1
4069 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [3,9,15,128,128,0,0,0,3,9,15,128,128,0,0,0]
4070 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
4071 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, %xmm13
4072 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm4, %xmm6
4073 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm6, %xmm3
4074 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [0,0,0,5,11,128,128,128,0,0,0,5,11,128,128,128]
4075 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
4076 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm12
4077 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm5, %xmm6
4078 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = [0,0,0,128,128,1,7,13,0,0,0,128,128,1,7,13]
4079 ; AVX1-ONLY-NEXT:    # xmm5 = mem[0,0]
4080 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, %xmm8
4081 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm7, %xmm7
4082 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm7, %xmm6
4083 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm6, %ymm3
4084 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm0, %ymm3
4085 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm6 # 32-byte Folded Reload
4086 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm6, %ymm3
4087 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm14, %ymm3
4088 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm6 # 16-byte Folded Reload
4089 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm14, %ymm6
4090 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm3, %ymm3
4091 ; AVX1-ONLY-NEXT:    vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4092 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm9[5,11,u,u,u,u,u,u,u,u,u,u,u]
4093 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm10, %xmm7
4094 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, %xmm9
4095 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm7, %xmm6
4096 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm15, %xmm7
4097 ; AVX1-ONLY-NEXT:    vmovdqa %xmm15, %xmm4
4098 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm11, %xmm10
4099 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, %xmm2
4100 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm10, %xmm7
4101 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm7, %ymm6
4102 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm0, %ymm6
4103 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
4104 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm0, %ymm0
4105 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm14, %ymm0
4106 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm6 # 16-byte Folded Reload
4107 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm14, %ymm6
4108 ; AVX1-ONLY-NEXT:    vmovaps %ymm14, %ymm11
4109 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm0, %ymm0
4110 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4111 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm14 = [4,10,128,128,128,0,0,0,4,10,128,128,128,0,0,0]
4112 ; AVX1-ONLY-NEXT:    # xmm14 = mem[0,0]
4113 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm13, %xmm0
4114 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm15 = [128,128,0,6,12,0,0,0,128,128,0,6,12,0,0,0]
4115 ; AVX1-ONLY-NEXT:    # xmm15 = mem[0,0]
4116 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm1, %xmm7
4117 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm7, %xmm0
4118 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [0,0,128,128,128,2,8,14,0,0,128,128,128,2,8,14]
4119 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
4120 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm8, %xmm7
4121 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = [0,0,0,6,12,128,128,128,0,0,0,6,12,128,128,128]
4122 ; AVX1-ONLY-NEXT:    # xmm5 = mem[0,0]
4123 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm12, %xmm10
4124 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm10, %xmm7
4125 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm7, %ymm0
4126 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm10 = [0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
4127 ; AVX1-ONLY-NEXT:    vandnps {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm7 # 32-byte Folded Reload
4128 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm10, %ymm0
4129 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm0, %ymm0
4130 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
4131 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm15, %xmm7
4132 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
4133 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm8, %xmm3
4134 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm3, %xmm3
4135 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
4136 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm12 = [4,10,0,0,4,10,0,0,4,10,0,0,4,10,0,0]
4137 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm14, %xmm7
4138 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
4139 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm13 = [0,2,8,14,0,2,8,14,0,2,8,14,0,2,8,14]
4140 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm12, %xmm6
4141 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm6 = xmm6[1],xmm7[1]
4142 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm6[0,1,2,3,4],xmm3[5,6,7]
4143 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm11, %ymm0
4144 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm3
4145 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm11, %ymm3
4146 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm0, %ymm0
4147 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4148 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm9[4,10],zero,zero,zero,xmm9[u,u,u,u,u,u,u,u,u,u,u]
4149 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
4150 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm7[0,6,12,u,u,u,u,u,u,u,u,u,u,u]
4151 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm3, %xmm0
4152 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm2, %xmm3
4153 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm4, %xmm6
4154 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm6, %xmm3
4155 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm3, %ymm0
4156 ; AVX1-ONLY-NEXT:    vandnps {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm3 # 32-byte Folded Reload
4157 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm10, %ymm0
4158 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm0, %ymm0
4159 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
4160 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm11, %xmm2
4161 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
4162 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm9, %xmm1
4163 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm1, %xmm1
4164 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
4165 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,u,4,10,u,u,u,u,u,u]
4166 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
4167 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm4, %xmm3
4168 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm2 = xmm3[1],xmm2[1]
4169 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5,6,7]
4170 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm2 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0]
4171 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm0, %ymm0
4172 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm1
4173 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm2, %ymm1
4174 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
4175 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4176 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4177 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[5,11],zero,zero,zero,xmm0[u,u,u,u,u,u,u,u,u,u,u]
4178 ; AVX1-ONLY-NEXT:    vmovdqa (%rsp), %xmm0 # 16-byte Reload
4179 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm0[1,7,13,u,u,u,u,u,u,u,u,u,u,u]
4180 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
4181 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm13 = [0,0,128,128,128,3,9,15,0,0,128,128,128,3,9,15]
4182 ; AVX1-ONLY-NEXT:    # xmm13 = mem[0,0]
4183 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4184 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm0, %xmm2
4185 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [0,0,1,7,13,128,128,128,0,0,1,7,13,128,128,128]
4186 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
4187 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
4188 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm3, %xmm3
4189 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
4190 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
4191 ; AVX1-ONLY-NEXT:    vandnps {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm2 # 32-byte Folded Reload
4192 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm10, %ymm1
4193 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm1, %ymm1
4194 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm15, %xmm2
4195 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm8, %xmm3
4196 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
4197 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm8 = [5,11,0,0,5,11,0,0,5,11,0,0,5,11,0,0]
4198 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm14, %xmm3
4199 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm5 = [0,3,9,15,0,3,9,15,0,3,9,15,0,3,9,15]
4200 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm12, %xmm6
4201 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm3 = xmm6[1],xmm3[1]
4202 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm3[0,1,2,3,4],xmm2[5,6,7]
4203 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm3 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0]
4204 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm1, %ymm1
4205 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm2
4206 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm3, %ymm2
4207 ; AVX1-ONLY-NEXT:    vmovaps %ymm3, %ymm12
4208 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm1, %ymm6
4209 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
4210 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[5,11],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
4211 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm7[1,7,13,u,u,u,u,u,u,u,u,u,u,u]
4212 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
4213 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
4214 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm2, %xmm2
4215 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
4216 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm3, %xmm3
4217 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
4218 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm2, %ymm1
4219 ; AVX1-ONLY-NEXT:    vandnps {{[-0-9]+}}(%r{{[sb]}}p), %ymm10, %ymm2 # 32-byte Folded Reload
4220 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm10, %ymm1
4221 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm1, %ymm1
4222 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm11, %xmm2
4223 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm9, %xmm3
4224 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
4225 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
4226 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm0, %xmm3
4227 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
4228 ; AVX1-ONLY-NEXT:    vpunpckhqdq {{.*#+}} xmm3 = xmm4[1],xmm3[1]
4229 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm3[0,1,2,3,4],xmm2[5,6,7]
4230 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm12, %ymm1
4231 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm2
4232 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm12, %ymm2
4233 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm1, %ymm1
4234 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4235 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 32(%rsi)
4236 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4237 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%rsi)
4238 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4239 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 32(%rdx)
4240 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4241 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%rdx)
4242 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4243 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 32(%rcx)
4244 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4245 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%rcx)
4246 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4247 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 32(%r8)
4248 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4249 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%r8)
4250 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4251 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 32(%r9)
4252 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4253 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%r9)
4254 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
4255 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 32(%rax)
4256 ; AVX1-ONLY-NEXT:    vmovaps %ymm6, (%rax)
4257 ; AVX1-ONLY-NEXT:    addq $808, %rsp # imm = 0x328
4258 ; AVX1-ONLY-NEXT:    vzeroupper
4259 ; AVX1-ONLY-NEXT:    retq
4261 ; AVX2-ONLY-LABEL: load_i8_stride6_vf64:
4262 ; AVX2-ONLY:       # %bb.0:
4263 ; AVX2-ONLY-NEXT:    subq $328, %rsp # imm = 0x148
4264 ; AVX2-ONLY-NEXT:    vmovdqa 192(%rdi), %ymm7
4265 ; AVX2-ONLY-NEXT:    vmovdqa (%rdi), %ymm3
4266 ; AVX2-ONLY-NEXT:    vmovdqa 32(%rdi), %ymm5
4267 ; AVX2-ONLY-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4268 ; AVX2-ONLY-NEXT:    vmovdqa 64(%rdi), %ymm0
4269 ; AVX2-ONLY-NEXT:    vmovdqa 96(%rdi), %ymm1
4270 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm13 = <u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0>
4271 ; AVX2-ONLY-NEXT:    vperm2i128 {{.*#+}} ymm2 = ymm0[0,1],ymm1[0,1]
4272 ; AVX2-ONLY-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4273 ; AVX2-ONLY-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]
4274 ; AVX2-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4275 ; AVX2-ONLY-NEXT:    vpblendvb %ymm13, %ymm2, %ymm0, %ymm4
4276 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm0 = ymm4[u,u,u,u,u,u,u,u,u,u,u,2,8,14,4,10,16,22,28,18,24,30,u,u,u,u,u,u,u,u,u,u]
4277 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm1 = <255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255>
4278 ; AVX2-ONLY-NEXT:    vpblendvb %ymm1, %ymm3, %ymm5, %ymm2
4279 ; AVX2-ONLY-NEXT:    vmovdqa %ymm3, %ymm5
4280 ; AVX2-ONLY-NEXT:    vmovdqu %ymm3, (%rsp) # 32-byte Spill
4281 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm10 = <0,6,12,128,128,128,4,10,128,128,128,u,u,u,u,u>
4282 ; AVX2-ONLY-NEXT:    vpshufb %xmm10, %xmm2, %xmm9
4283 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm2, %xmm3
4284 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm11 = <128,128,128,2,8,14,128,128,0,6,12,u,u,u,u,u>
4285 ; AVX2-ONLY-NEXT:    vpshufb %xmm11, %xmm3, %xmm12
4286 ; AVX2-ONLY-NEXT:    vpor %xmm9, %xmm12, %xmm9
4287 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm12 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
4288 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm9, %ymm0, %ymm0
4289 ; AVX2-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4290 ; AVX2-ONLY-NEXT:    vmovdqa 224(%rdi), %ymm8
4291 ; AVX2-ONLY-NEXT:    vpblendvb %ymm1, %ymm7, %ymm8, %ymm14
4292 ; AVX2-ONLY-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4293 ; AVX2-ONLY-NEXT:    vpshufb %xmm10, %xmm14, %xmm0
4294 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm14, %xmm15
4295 ; AVX2-ONLY-NEXT:    vpshufb %xmm11, %xmm15, %xmm10
4296 ; AVX2-ONLY-NEXT:    vpor %xmm0, %xmm10, %xmm1
4297 ; AVX2-ONLY-NEXT:    vmovdqa 288(%rdi), %ymm11
4298 ; AVX2-ONLY-NEXT:    vmovdqa 256(%rdi), %ymm0
4299 ; AVX2-ONLY-NEXT:    vperm2i128 {{.*#+}} ymm9 = ymm0[0,1],ymm11[0,1]
4300 ; AVX2-ONLY-NEXT:    vperm2i128 {{.*#+}} ymm11 = ymm0[2,3],ymm11[2,3]
4301 ; AVX2-ONLY-NEXT:    vpblendvb %ymm13, %ymm9, %ymm11, %ymm13
4302 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} ymm0 = ymm13[u,u,u,u,u,u,u,u,u,u,u,2,8,14,4,10,16,22,28,18,24,30,u,u,u,u,u,u,u,u,u,u]
4303 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm1, %ymm0, %ymm0
4304 ; AVX2-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4305 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <1,7,13,128,128,128,5,11,128,128,128,u,u,u,u,u>
4306 ; AVX2-ONLY-NEXT:    vpshufb %xmm0, %xmm2, %xmm1
4307 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm2 = <128,128,128,3,9,15,128,128,1,7,13,u,u,u,u,u>
4308 ; AVX2-ONLY-NEXT:    vpshufb %xmm2, %xmm3, %xmm3
4309 ; AVX2-ONLY-NEXT:    vpor %xmm1, %xmm3, %xmm1
4310 ; AVX2-ONLY-NEXT:    vpbroadcastq {{.*#+}} ymm3 = [1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11]
4311 ; AVX2-ONLY-NEXT:    vpshufb %ymm3, %ymm4, %ymm4
4312 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm1, %ymm4, %ymm1
4313 ; AVX2-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4314 ; AVX2-ONLY-NEXT:    vpshufb %xmm0, %xmm14, %xmm0
4315 ; AVX2-ONLY-NEXT:    vpshufb %xmm2, %xmm15, %xmm1
4316 ; AVX2-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
4317 ; AVX2-ONLY-NEXT:    vpshufb %ymm3, %ymm13, %ymm1
4318 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm0, %ymm1, %ymm0
4319 ; AVX2-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4320 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm13 = <255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255>
4321 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
4322 ; AVX2-ONLY-NEXT:    vpblendvb %ymm13, %ymm10, %ymm5, %ymm1
4323 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm1, %xmm2
4324 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm6 = <128,128,128,4,10,128,128,128,2,8,14,u,u,u,u,u>
4325 ; AVX2-ONLY-NEXT:    vpshufb %xmm6, %xmm2, %xmm3
4326 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm4 = <2,8,14,128,128,0,6,12,128,128,128,u,u,u,u,u>
4327 ; AVX2-ONLY-NEXT:    vpshufb %xmm4, %xmm1, %xmm5
4328 ; AVX2-ONLY-NEXT:    vpor %xmm3, %xmm5, %xmm5
4329 ; AVX2-ONLY-NEXT:    vpbroadcastq {{.*#+}} ymm14 = [2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12]
4330 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm0 = <255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0>
4331 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
4332 ; AVX2-ONLY-NEXT:    vpblendvb %ymm0, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm3 # 32-byte Folded Reload
4333 ; AVX2-ONLY-NEXT:    vpshufb %ymm14, %ymm3, %ymm15
4334 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm5, %ymm15, %ymm5
4335 ; AVX2-ONLY-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4336 ; AVX2-ONLY-NEXT:    vpblendvb %ymm13, %ymm8, %ymm7, %ymm5
4337 ; AVX2-ONLY-NEXT:    vmovdqa %ymm8, %ymm7
4338 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm5, %xmm15
4339 ; AVX2-ONLY-NEXT:    vpshufb %xmm6, %xmm15, %xmm6
4340 ; AVX2-ONLY-NEXT:    vpshufb %xmm4, %xmm5, %xmm4
4341 ; AVX2-ONLY-NEXT:    vpor %xmm6, %xmm4, %xmm4
4342 ; AVX2-ONLY-NEXT:    vpblendvb %ymm0, %ymm11, %ymm9, %ymm0
4343 ; AVX2-ONLY-NEXT:    vpshufb %ymm14, %ymm0, %ymm6
4344 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm4, %ymm6, %ymm4
4345 ; AVX2-ONLY-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4346 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm4 = <128,128,128,5,11,128,128,128,3,9,15,u,u,u,u,u>
4347 ; AVX2-ONLY-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
4348 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm6 = <3,9,15,128,128,1,7,13,128,128,128,u,u,u,u,u>
4349 ; AVX2-ONLY-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
4350 ; AVX2-ONLY-NEXT:    vpor %xmm2, %xmm1, %xmm1
4351 ; AVX2-ONLY-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13]
4352 ; AVX2-ONLY-NEXT:    vpshufb %ymm2, %ymm3, %ymm3
4353 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm1, %ymm3, %ymm1
4354 ; AVX2-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4355 ; AVX2-ONLY-NEXT:    vpshufb %xmm4, %xmm15, %xmm1
4356 ; AVX2-ONLY-NEXT:    vpshufb %xmm6, %xmm5, %xmm3
4357 ; AVX2-ONLY-NEXT:    vpor %xmm1, %xmm3, %xmm1
4358 ; AVX2-ONLY-NEXT:    vpshufb %ymm2, %ymm0, %ymm0
4359 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm1, %ymm0, %ymm14
4360 ; AVX2-ONLY-NEXT:    vmovdqa 160(%rdi), %ymm0
4361 ; AVX2-ONLY-NEXT:    vmovdqa 128(%rdi), %ymm3
4362 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u,255,255,0,0,u,u>
4363 ; AVX2-ONLY-NEXT:    vpblendvb %ymm2, %ymm0, %ymm3, %ymm1
4364 ; AVX2-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4365 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm1 = <255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255>
4366 ; AVX2-ONLY-NEXT:    vpblendvb %ymm1, %ymm3, %ymm0, %ymm5
4367 ; AVX2-ONLY-NEXT:    vpblendvb %ymm13, %ymm0, %ymm3, %ymm15
4368 ; AVX2-ONLY-NEXT:    vmovdqa 352(%rdi), %ymm4
4369 ; AVX2-ONLY-NEXT:    vmovdqa 320(%rdi), %ymm6
4370 ; AVX2-ONLY-NEXT:    vpblendvb %ymm1, %ymm6, %ymm4, %ymm1
4371 ; AVX2-ONLY-NEXT:    vpblendvb %ymm13, %ymm4, %ymm6, %ymm12
4372 ; AVX2-ONLY-NEXT:    vpblendvb %ymm2, %ymm4, %ymm6, %ymm0
4373 ; AVX2-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4374 ; AVX2-ONLY-NEXT:    vmovdqu (%rsp), %ymm0 # 32-byte Reload
4375 ; AVX2-ONLY-NEXT:    vpblendvb %ymm2, %ymm10, %ymm0, %ymm8
4376 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4377 ; AVX2-ONLY-NEXT:    vpblendvb %ymm2, %ymm7, %ymm0, %ymm10
4378 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm2 = <0,0,255,255,u,u,0,0,255,255,u,u,0,0,255,255,255,255,u,u,0,0,255,255,u,u,0,0,255,255,u,u>
4379 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4380 ; AVX2-ONLY-NEXT:    vpblendvb %ymm2, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm13 # 32-byte Folded Reload
4381 ; AVX2-ONLY-NEXT:    vpblendvb %ymm2, %ymm11, %ymm9, %ymm0
4382 ; AVX2-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4383 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm2 = <u,u,u,u,u,0,6,12,128,128,128,4,10,128,128,128>
4384 ; AVX2-ONLY-NEXT:    vpshufb %xmm2, %xmm5, %xmm6
4385 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm5, %xmm11
4386 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <u,u,u,u,u,128,128,128,2,8,14,128,128,0,6,12>
4387 ; AVX2-ONLY-NEXT:    vpshufb %xmm0, %xmm11, %xmm9
4388 ; AVX2-ONLY-NEXT:    vpor %xmm6, %xmm9, %xmm6
4389 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
4390 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm9 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0]
4391 ; AVX2-ONLY-NEXT:    vpblendvb %ymm9, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm3 # 32-byte Folded Reload
4392 ; AVX2-ONLY-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4393 ; AVX2-ONLY-NEXT:    vpshufb %xmm2, %xmm1, %xmm2
4394 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm1, %xmm6
4395 ; AVX2-ONLY-NEXT:    vpshufb %xmm0, %xmm6, %xmm0
4396 ; AVX2-ONLY-NEXT:    vpor %xmm2, %xmm0, %xmm0
4397 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
4398 ; AVX2-ONLY-NEXT:    vpblendvb %ymm9, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
4399 ; AVX2-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4400 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <u,u,u,u,u,1,7,13,128,128,128,5,11,128,128,128>
4401 ; AVX2-ONLY-NEXT:    vpshufb %xmm0, %xmm5, %xmm2
4402 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm5 = <u,u,u,u,u,128,128,128,3,9,15,128,128,1,7,13>
4403 ; AVX2-ONLY-NEXT:    vpshufb %xmm5, %xmm11, %xmm11
4404 ; AVX2-ONLY-NEXT:    vpor %xmm2, %xmm11, %xmm2
4405 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
4406 ; AVX2-ONLY-NEXT:    vpblendvb %ymm9, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm2 # 32-byte Folded Reload
4407 ; AVX2-ONLY-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4408 ; AVX2-ONLY-NEXT:    vpshufb %xmm0, %xmm1, %xmm0
4409 ; AVX2-ONLY-NEXT:    vpshufb %xmm5, %xmm6, %xmm1
4410 ; AVX2-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
4411 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
4412 ; AVX2-ONLY-NEXT:    vpblendvb %ymm9, %ymm14, %ymm0, %ymm0
4413 ; AVX2-ONLY-NEXT:    vmovdqu %ymm0, (%rsp) # 32-byte Spill
4414 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm15, %xmm14
4415 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,u,u,128,128,128,4,10,128,128,128,2,8,14>
4416 ; AVX2-ONLY-NEXT:    vpshufb %xmm7, %xmm14, %xmm0
4417 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm2 = <u,u,u,u,u,2,8,14,128,128,0,6,12,128,128,128>
4418 ; AVX2-ONLY-NEXT:    vpshufb %xmm2, %xmm15, %xmm1
4419 ; AVX2-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm1
4420 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm8, %xmm3
4421 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm5 = <128,128,0,6,12,128,128,128,4,10,u,u,u,u,u,u>
4422 ; AVX2-ONLY-NEXT:    vpshufb %xmm5, %xmm3, %xmm6
4423 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm4 = <4,10,128,128,128,2,8,14,128,128,u,u,u,u,u,u>
4424 ; AVX2-ONLY-NEXT:    vpshufb %xmm4, %xmm8, %xmm11
4425 ; AVX2-ONLY-NEXT:    vpor %xmm6, %xmm11, %xmm6
4426 ; AVX2-ONLY-NEXT:    vpbroadcastq {{.*#+}} ymm11 = [4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14]
4427 ; AVX2-ONLY-NEXT:    vpshufb %ymm11, %ymm13, %ymm0
4428 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0,1,2,3,4],xmm0[5,6,7]
4429 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm0 = ymm6[0,1,2,3],ymm0[4,5,6,7]
4430 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
4431 ; AVX2-ONLY-NEXT:    vpblendvb %ymm9, %ymm0, %ymm1, %ymm0
4432 ; AVX2-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
4433 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm12, %xmm1
4434 ; AVX2-ONLY-NEXT:    vpshufb %xmm7, %xmm1, %xmm0
4435 ; AVX2-ONLY-NEXT:    vpshufb %xmm2, %xmm12, %xmm2
4436 ; AVX2-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm0
4437 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm10, %xmm2
4438 ; AVX2-ONLY-NEXT:    vpshufb %xmm5, %xmm2, %xmm5
4439 ; AVX2-ONLY-NEXT:    vpshufb %xmm4, %xmm10, %xmm4
4440 ; AVX2-ONLY-NEXT:    vpor %xmm5, %xmm4, %xmm4
4441 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
4442 ; AVX2-ONLY-NEXT:    vpshufb %ymm11, %ymm6, %ymm5
4443 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4],xmm5[5,6,7]
4444 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm5[4,5,6,7]
4445 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
4446 ; AVX2-ONLY-NEXT:    vpblendvb %ymm9, %ymm4, %ymm0, %ymm5
4447 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <u,u,u,u,u,128,128,128,5,11,128,128,128,3,9,15>
4448 ; AVX2-ONLY-NEXT:    vpshufb %xmm0, %xmm14, %xmm4
4449 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,u,u,3,9,15,128,128,1,7,13,128,128,128>
4450 ; AVX2-ONLY-NEXT:    vpshufb %xmm7, %xmm15, %xmm11
4451 ; AVX2-ONLY-NEXT:    vpor %xmm4, %xmm11, %xmm4
4452 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm11 = <128,128,1,7,13,128,128,128,5,11,u,u,u,u,u,u>
4453 ; AVX2-ONLY-NEXT:    vpshufb %xmm11, %xmm3, %xmm3
4454 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm14 = <5,11,128,128,128,3,9,15,128,128,u,u,u,u,u,u>
4455 ; AVX2-ONLY-NEXT:    vpshufb %xmm14, %xmm8, %xmm8
4456 ; AVX2-ONLY-NEXT:    vpor %xmm3, %xmm8, %xmm3
4457 ; AVX2-ONLY-NEXT:    vpbroadcastq {{.*#+}} ymm8 = [5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15]
4458 ; AVX2-ONLY-NEXT:    vpshufb %ymm8, %ymm13, %ymm13
4459 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4],xmm13[5,6,7]
4460 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm13[4,5,6,7]
4461 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
4462 ; AVX2-ONLY-NEXT:    vpblendvb %ymm9, %ymm3, %ymm4, %ymm4
4463 ; AVX2-ONLY-NEXT:    vpshufb %xmm0, %xmm1, %xmm0
4464 ; AVX2-ONLY-NEXT:    vpshufb %xmm7, %xmm12, %xmm1
4465 ; AVX2-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
4466 ; AVX2-ONLY-NEXT:    vpshufb %xmm11, %xmm2, %xmm1
4467 ; AVX2-ONLY-NEXT:    vpshufb %xmm14, %xmm10, %xmm2
4468 ; AVX2-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
4469 ; AVX2-ONLY-NEXT:    vpshufb %ymm8, %ymm6, %ymm2
4470 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4],xmm2[5,6,7]
4471 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
4472 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
4473 ; AVX2-ONLY-NEXT:    vpblendvb %ymm9, %ymm1, %ymm0, %ymm3
4474 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
4475 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm9, %xmm0
4476 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm1 = <u,u,u,u,u,u,128,128,0,6,12,128,128,128,4,10>
4477 ; AVX2-ONLY-NEXT:    vpshufb %xmm1, %xmm0, %xmm2
4478 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,u,u,u,4,10,128,128,128,2,8,14,128,128>
4479 ; AVX2-ONLY-NEXT:    vpshufb %xmm7, %xmm9, %xmm8
4480 ; AVX2-ONLY-NEXT:    vmovdqa %ymm9, %ymm10
4481 ; AVX2-ONLY-NEXT:    vpor %xmm2, %xmm8, %xmm2
4482 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
4483 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
4484 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} ymm2 = ymm8[0,1,2],ymm2[3,4,5,6,7],ymm8[8,9,10],ymm2[11,12,13,14,15]
4485 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm2 = ymm8[0,1,2,3],ymm2[4,5,6,7]
4486 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
4487 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm9, %xmm8
4488 ; AVX2-ONLY-NEXT:    vpshufb %xmm1, %xmm8, %xmm1
4489 ; AVX2-ONLY-NEXT:    vpshufb %xmm7, %xmm9, %xmm7
4490 ; AVX2-ONLY-NEXT:    vmovdqa %ymm9, %ymm11
4491 ; AVX2-ONLY-NEXT:    vpor %xmm1, %xmm7, %xmm1
4492 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
4493 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
4494 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} ymm1 = ymm7[0,1,2],ymm1[3,4,5,6,7],ymm7[8,9,10],ymm1[11,12,13,14,15]
4495 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm1 = ymm7[0,1,2,3],ymm1[4,5,6,7]
4496 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,u,u,u,128,128,1,7,13,128,128,128,5,11>
4497 ; AVX2-ONLY-NEXT:    vpshufb %xmm7, %xmm0, %xmm0
4498 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm9 = <u,u,u,u,u,u,5,11,128,128,128,3,9,15,128,128>
4499 ; AVX2-ONLY-NEXT:    vpshufb %xmm9, %xmm10, %xmm10
4500 ; AVX2-ONLY-NEXT:    vpor %xmm0, %xmm10, %xmm0
4501 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
4502 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
4503 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} ymm0 = ymm10[0,1,2],ymm0[3,4,5,6,7],ymm10[8,9,10],ymm0[11,12,13,14,15]
4504 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm0 = ymm10[0,1,2,3],ymm0[4,5,6,7]
4505 ; AVX2-ONLY-NEXT:    vpshufb %xmm7, %xmm8, %xmm7
4506 ; AVX2-ONLY-NEXT:    vpshufb %xmm9, %xmm11, %xmm8
4507 ; AVX2-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm7
4508 ; AVX2-ONLY-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
4509 ; AVX2-ONLY-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
4510 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0,1,2],ymm7[3,4,5,6,7],ymm8[8,9,10],ymm7[11,12,13,14,15]
4511 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm7 = ymm8[0,1,2,3],ymm7[4,5,6,7]
4512 ; AVX2-ONLY-NEXT:    vmovdqa %ymm1, 32(%rsi)
4513 ; AVX2-ONLY-NEXT:    vmovdqa %ymm2, (%rsi)
4514 ; AVX2-ONLY-NEXT:    vmovdqa %ymm7, 32(%rdx)
4515 ; AVX2-ONLY-NEXT:    vmovdqa %ymm0, (%rdx)
4516 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4517 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 32(%rcx)
4518 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4519 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, (%rcx)
4520 ; AVX2-ONLY-NEXT:    vmovups (%rsp), %ymm0 # 32-byte Reload
4521 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, 32(%r8)
4522 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4523 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, (%r8)
4524 ; AVX2-ONLY-NEXT:    vmovdqa %ymm5, 32(%r9)
4525 ; AVX2-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
4526 ; AVX2-ONLY-NEXT:    vmovaps %ymm0, (%r9)
4527 ; AVX2-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
4528 ; AVX2-ONLY-NEXT:    vmovdqa %ymm3, 32(%rax)
4529 ; AVX2-ONLY-NEXT:    vmovdqa %ymm4, (%rax)
4530 ; AVX2-ONLY-NEXT:    addq $328, %rsp # imm = 0x148
4531 ; AVX2-ONLY-NEXT:    vzeroupper
4532 ; AVX2-ONLY-NEXT:    retq
4534 ; AVX512F-LABEL: load_i8_stride6_vf64:
4535 ; AVX512F:       # %bb.0:
4536 ; AVX512F-NEXT:    subq $40, %rsp
4537 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm1 = <0,6,12,128,128,128,4,10,128,128,128,u,u,u,u,u>
4538 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm11 = [65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535]
4539 ; AVX512F-NEXT:    vmovdqa64 224(%rdi), %ymm25
4540 ; AVX512F-NEXT:    vmovdqa64 192(%rdi), %ymm26
4541 ; AVX512F-NEXT:    vmovdqa %ymm11, %ymm0
4542 ; AVX512F-NEXT:    vpternlogq $202, %ymm25, %ymm26, %ymm0
4543 ; AVX512F-NEXT:    vpshufb %xmm1, %xmm0, %xmm3
4544 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm5 = <128,128,128,2,8,14,128,128,0,6,12,u,u,u,u,u>
4545 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm4
4546 ; AVX512F-NEXT:    vpshufb %xmm5, %xmm4, %xmm6
4547 ; AVX512F-NEXT:    vpor %xmm3, %xmm6, %xmm9
4548 ; AVX512F-NEXT:    vmovdqa64 (%rdi), %ymm30
4549 ; AVX512F-NEXT:    vmovdqa64 32(%rdi), %ymm31
4550 ; AVX512F-NEXT:    vmovdqa64 128(%rdi), %ymm29
4551 ; AVX512F-NEXT:    vmovdqa64 160(%rdi), %ymm18
4552 ; AVX512F-NEXT:    vmovdqa %ymm11, %ymm6
4553 ; AVX512F-NEXT:    vpternlogq $202, %ymm29, %ymm18, %ymm6
4554 ; AVX512F-NEXT:    vextracti128 $1, %ymm6, %xmm7
4555 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm3 = <u,u,u,u,u,u,128,128,0,6,12,128,128,128,4,10>
4556 ; AVX512F-NEXT:    vpshufb %xmm3, %xmm7, %xmm12
4557 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,u,u,u,u,4,10,128,128,128,2,8,14,128,128>
4558 ; AVX512F-NEXT:    vpshufb %xmm8, %xmm6, %xmm13
4559 ; AVX512F-NEXT:    vpor %xmm12, %xmm13, %xmm12
4560 ; AVX512F-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
4561 ; AVX512F-NEXT:    vinserti32x4 $2, %xmm9, %zmm12, %zmm2
4562 ; AVX512F-NEXT:    vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
4563 ; AVX512F-NEXT:    vmovdqa %ymm11, %ymm9
4564 ; AVX512F-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm9
4565 ; AVX512F-NEXT:    vpshufb %xmm1, %xmm9, %xmm1
4566 ; AVX512F-NEXT:    vextracti128 $1, %ymm9, %xmm13
4567 ; AVX512F-NEXT:    vpshufb %xmm5, %xmm13, %xmm5
4568 ; AVX512F-NEXT:    vporq %xmm1, %xmm5, %xmm17
4569 ; AVX512F-NEXT:    vmovdqa64 320(%rdi), %ymm24
4570 ; AVX512F-NEXT:    vmovdqa64 352(%rdi), %ymm22
4571 ; AVX512F-NEXT:    vmovdqa %ymm11, %ymm1
4572 ; AVX512F-NEXT:    vpternlogq $202, %ymm24, %ymm22, %ymm1
4573 ; AVX512F-NEXT:    vextracti128 $1, %ymm1, %xmm5
4574 ; AVX512F-NEXT:    vpshufb %xmm3, %xmm5, %xmm3
4575 ; AVX512F-NEXT:    vpshufb %xmm8, %xmm1, %xmm8
4576 ; AVX512F-NEXT:    vpor %xmm3, %xmm8, %xmm3
4577 ; AVX512F-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
4578 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm8 = <1,7,13,128,128,128,5,11,128,128,128,u,u,u,u,u>
4579 ; AVX512F-NEXT:    vpshufb %xmm8, %xmm0, %xmm0
4580 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm12 = <128,128,128,3,9,15,128,128,1,7,13,u,u,u,u,u>
4581 ; AVX512F-NEXT:    vpshufb %xmm12, %xmm4, %xmm4
4582 ; AVX512F-NEXT:    vpor %xmm0, %xmm4, %xmm0
4583 ; AVX512F-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4584 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm0 = <u,u,u,u,u,u,128,128,1,7,13,128,128,128,5,11>
4585 ; AVX512F-NEXT:    vpshufb %xmm0, %xmm7, %xmm4
4586 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,u,u,u,5,11,128,128,128,3,9,15,128,128>
4587 ; AVX512F-NEXT:    vpshufb %xmm7, %xmm6, %xmm6
4588 ; AVX512F-NEXT:    vporq %xmm4, %xmm6, %xmm28
4589 ; AVX512F-NEXT:    vpshufb %xmm8, %xmm9, %xmm4
4590 ; AVX512F-NEXT:    vpshufb %xmm12, %xmm13, %xmm6
4591 ; AVX512F-NEXT:    vporq %xmm4, %xmm6, %xmm21
4592 ; AVX512F-NEXT:    vpshufb %xmm0, %xmm5, %xmm0
4593 ; AVX512F-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
4594 ; AVX512F-NEXT:    vporq %xmm0, %xmm1, %xmm27
4595 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm0 = <128,128,128,4,10,128,128,128,2,8,14,u,u,u,u,u>
4596 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm9 = [65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535,0,65535,65535]
4597 ; AVX512F-NEXT:    vmovdqa %ymm9, %ymm4
4598 ; AVX512F-NEXT:    vpternlogq $202, %ymm26, %ymm25, %ymm4
4599 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm15
4600 ; AVX512F-NEXT:    vpshufb %xmm0, %xmm15, %xmm1
4601 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm6 = <2,8,14,128,128,0,6,12,128,128,128,u,u,u,u,u>
4602 ; AVX512F-NEXT:    vpshufb %xmm6, %xmm4, %xmm5
4603 ; AVX512F-NEXT:    vpor %xmm1, %xmm5, %xmm1
4604 ; AVX512F-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4605 ; AVX512F-NEXT:    vmovdqa %ymm11, %ymm5
4606 ; AVX512F-NEXT:    vpternlogq $202, %ymm18, %ymm29, %ymm5
4607 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,u,u,0,6,12,128,128,128,4,10,128,128,128>
4608 ; AVX512F-NEXT:    vpshufb %xmm7, %xmm5, %xmm8
4609 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm1
4610 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm12 = <u,u,u,u,u,128,128,128,2,8,14,128,128,0,6,12>
4611 ; AVX512F-NEXT:    vpshufb %xmm12, %xmm1, %xmm13
4612 ; AVX512F-NEXT:    vpor %xmm8, %xmm13, %xmm2
4613 ; AVX512F-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4614 ; AVX512F-NEXT:    vmovdqa %ymm9, %ymm13
4615 ; AVX512F-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm13
4616 ; AVX512F-NEXT:    vextracti128 $1, %ymm13, %xmm14
4617 ; AVX512F-NEXT:    vpshufb %xmm0, %xmm14, %xmm0
4618 ; AVX512F-NEXT:    vpshufb %xmm6, %xmm13, %xmm6
4619 ; AVX512F-NEXT:    vporq %xmm0, %xmm6, %xmm16
4620 ; AVX512F-NEXT:    vmovdqa %ymm11, %ymm10
4621 ; AVX512F-NEXT:    vpternlogq $202, %ymm22, %ymm24, %ymm10
4622 ; AVX512F-NEXT:    vpshufb %xmm7, %xmm10, %xmm8
4623 ; AVX512F-NEXT:    vextracti128 $1, %ymm10, %xmm7
4624 ; AVX512F-NEXT:    vpshufb %xmm12, %xmm7, %xmm12
4625 ; AVX512F-NEXT:    vpor %xmm8, %xmm12, %xmm0
4626 ; AVX512F-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4627 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm12 = <128,128,128,5,11,128,128,128,3,9,15,u,u,u,u,u>
4628 ; AVX512F-NEXT:    vpshufb %xmm12, %xmm15, %xmm15
4629 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm8 = <3,9,15,128,128,1,7,13,128,128,128,u,u,u,u,u>
4630 ; AVX512F-NEXT:    vpshufb %xmm8, %xmm4, %xmm4
4631 ; AVX512F-NEXT:    vpor %xmm4, %xmm15, %xmm0
4632 ; AVX512F-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4633 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm15 = xmm5[u,u,u,u,u,1,7,13],zero,zero,zero,xmm5[5,11],zero,zero,zero
4634 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u],zero,zero,zero,xmm1[3,9,15],zero,zero,xmm1[1,7,13]
4635 ; AVX512F-NEXT:    vpor %xmm1, %xmm15, %xmm0
4636 ; AVX512F-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4637 ; AVX512F-NEXT:    vmovdqa 256(%rdi), %ymm1
4638 ; AVX512F-NEXT:    vshufi64x2 {{.*#+}} ymm19 = ymm1[2,3],mem[2,3]
4639 ; AVX512F-NEXT:    vinserti32x4 $1, 288(%rdi), %ymm1, %ymm20
4640 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm5 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,0]
4641 ; AVX512F-NEXT:    vmovdqa %ymm5, %ymm1
4642 ; AVX512F-NEXT:    vpternlogq $202, %ymm19, %ymm20, %ymm1
4643 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm15 = ymm1[u,u,u,u,u,u,u,u,u,u,u,2,8,14,4,10,16,22,28,18,24,30,u,u,u,u,u,u,u,u,u,u]
4644 ; AVX512F-NEXT:    vpblendw {{.*#+}} ymm3 = ymm15[0,1,2],ymm3[3,4,5,6,7],ymm15[8,9,10],ymm3[11,12,13,14,15]
4645 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm15 = ymm15[0,1,2,3],ymm3[4,5,6,7]
4646 ; AVX512F-NEXT:    vmovdqa64 64(%rdi), %ymm23
4647 ; AVX512F-NEXT:    vshufi64x2 {{.*#+}} ymm6 = ymm23[2,3],mem[2,3]
4648 ; AVX512F-NEXT:    vinserti32x4 $1, 96(%rdi), %ymm23, %ymm23
4649 ; AVX512F-NEXT:    vinserti64x4 $1, %ymm15, %zmm0, %zmm15
4650 ; AVX512F-NEXT:    vmovdqa %ymm5, %ymm2
4651 ; AVX512F-NEXT:    vpternlogq $202, %ymm6, %ymm23, %ymm2
4652 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm4 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255]
4653 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[2,8,14,4,10,16,22,28,18,24,30],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4654 ; AVX512F-NEXT:    vpternlogq $248, %ymm4, %ymm17, %ymm0
4655 ; AVX512F-NEXT:    vmovdqa64 {{.*#+}} zmm17 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
4656 ; AVX512F-NEXT:    vpternlogq $226, {{[-0-9]+}}(%r{{[sb]}}p), %zmm17, %zmm0 # 64-byte Folded Reload
4657 ; AVX512F-NEXT:    vmovdqa64 {{.*#+}} zmm3 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
4658 ; AVX512F-NEXT:    vpternlogq $184, %zmm0, %zmm3, %zmm15
4659 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm0 = ymm1[u,u,u,u,u,u,u,u,u,u,u,3,9,15,5,11,17,23,29,19,25,31,u,u,u,u,u,u,u,u,u,u]
4660 ; AVX512F-NEXT:    vinserti32x4 $1, %xmm27, %ymm0, %ymm1
4661 ; AVX512F-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0,1,2],ymm1[3,4,5,6,7],ymm0[8,9,10],ymm1[11,12,13,14,15]
4662 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
4663 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[3,9,15,5,11,17,23,29,19,25,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4664 ; AVX512F-NEXT:    vpternlogq $248, %ymm4, %ymm21, %ymm1
4665 ; AVX512F-NEXT:    vinserti32x4 $1, %xmm28, %ymm0, %ymm2
4666 ; AVX512F-NEXT:    vinserti32x4 $2, {{[-0-9]+}}(%r{{[sb]}}p), %zmm2, %zmm2 # 16-byte Folded Reload
4667 ; AVX512F-NEXT:    vpternlogq $226, %zmm2, %zmm17, %zmm1
4668 ; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm17
4669 ; AVX512F-NEXT:    vpternlogq $184, %zmm1, %zmm3, %zmm17
4670 ; AVX512F-NEXT:    vpshufb %xmm12, %xmm14, %xmm0
4671 ; AVX512F-NEXT:    vpshufb %xmm8, %xmm13, %xmm1
4672 ; AVX512F-NEXT:    vporq %xmm0, %xmm1, %xmm21
4673 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm0 = xmm10[u,u,u,u,u,1,7,13],zero,zero,zero,xmm10[5,11],zero,zero,zero
4674 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm1 = xmm7[u,u,u,u,u],zero,zero,zero,xmm7[3,9,15],zero,zero,xmm7[1,7,13]
4675 ; AVX512F-NEXT:    vporq %xmm0, %xmm1, %xmm28
4676 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm2 = <128,128,0,6,12,128,128,128,4,10,u,u,u,u,u,u>
4677 ; AVX512F-NEXT:    vmovdqa64 %ymm25, %ymm7
4678 ; AVX512F-NEXT:    vpternlogq $226, %ymm26, %ymm11, %ymm7
4679 ; AVX512F-NEXT:    vextracti128 $1, %ymm7, %xmm0
4680 ; AVX512F-NEXT:    vpshufb %xmm2, %xmm0, %xmm1
4681 ; AVX512F-NEXT:    vmovdqa64 %xmm2, %xmm25
4682 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm14 = <4,10,128,128,128,2,8,14,128,128,u,u,u,u,u,u>
4683 ; AVX512F-NEXT:    vpshufb %xmm14, %xmm7, %xmm2
4684 ; AVX512F-NEXT:    vporq %xmm1, %xmm2, %xmm26
4685 ; AVX512F-NEXT:    vmovdqa64 %ymm18, %ymm10
4686 ; AVX512F-NEXT:    vpternlogq $226, %ymm29, %ymm9, %ymm10
4687 ; AVX512F-NEXT:    vextracti128 $1, %ymm10, %xmm8
4688 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm1 = <u,u,u,u,u,128,128,128,4,10,128,128,128,2,8,14>
4689 ; AVX512F-NEXT:    vpshufb %xmm1, %xmm8, %xmm2
4690 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm3 = <u,u,u,u,u,2,8,14,128,128,0,6,12,128,128,128>
4691 ; AVX512F-NEXT:    vpshufb %xmm3, %xmm10, %xmm4
4692 ; AVX512F-NEXT:    vporq %xmm2, %xmm4, %xmm27
4693 ; AVX512F-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm11
4694 ; AVX512F-NEXT:    vmovdqa %ymm5, %ymm4
4695 ; AVX512F-NEXT:    vpternlogq $202, %ymm23, %ymm6, %ymm4
4696 ; AVX512F-NEXT:    vpternlogq $202, %ymm24, %ymm22, %ymm9
4697 ; AVX512F-NEXT:    vextracti128 $1, %ymm9, %xmm12
4698 ; AVX512F-NEXT:    vpshufb %xmm1, %xmm12, %xmm1
4699 ; AVX512F-NEXT:    vpshufb %xmm3, %xmm9, %xmm2
4700 ; AVX512F-NEXT:    vporq %xmm1, %xmm2, %xmm24
4701 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm1 = <128,128,1,7,13,128,128,128,5,11,u,u,u,u,u,u>
4702 ; AVX512F-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
4703 ; AVX512F-NEXT:    vmovdqa64 %xmm1, %xmm29
4704 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm13 = <5,11,128,128,128,3,9,15,128,128,u,u,u,u,u,u>
4705 ; AVX512F-NEXT:    vpshufb %xmm13, %xmm7, %xmm1
4706 ; AVX512F-NEXT:    vporq %xmm0, %xmm1, %xmm18
4707 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm2 = <u,u,u,u,u,128,128,128,5,11,128,128,128,3,9,15>
4708 ; AVX512F-NEXT:    vpshufb %xmm2, %xmm8, %xmm1
4709 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm0 = <u,u,u,u,u,3,9,15,128,128,1,7,13,128,128,128>
4710 ; AVX512F-NEXT:    vpshufb %xmm0, %xmm10, %xmm8
4711 ; AVX512F-NEXT:    vpor %xmm1, %xmm8, %xmm8
4712 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm1 = [128,128,128,128,128,128,128,128,128,128,128,4,10,0,6,12,18,24,30,20,26,128,128,128,128,128,128,128,128,128,128,128]
4713 ; AVX512F-NEXT:    vpshufb %ymm1, %ymm4, %ymm3
4714 ; AVX512F-NEXT:    vmovdqa64 {{.*#+}} ymm22 = [255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255]
4715 ; AVX512F-NEXT:    vpternlogq $236, %ymm22, %ymm3, %ymm16
4716 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm3 = [128,128,128,128,128,128,128,128,128,128,128,5,11,1,7,13,19,25,31,21,27,128,128,128,128,128,128,128,128,128,128,128]
4717 ; AVX512F-NEXT:    vpshufb %ymm3, %ymm4, %ymm4
4718 ; AVX512F-NEXT:    vpternlogq $236, %ymm22, %ymm4, %ymm21
4719 ; AVX512F-NEXT:    vinserti128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 16-byte Folded Reload
4720 ; AVX512F-NEXT:    vpternlogq $202, %ymm20, %ymm19, %ymm5
4721 ; AVX512F-NEXT:    vpshufb %ymm1, %ymm5, %ymm1
4722 ; AVX512F-NEXT:    vpternlogq $248, %ymm22, %ymm4, %ymm1
4723 ; AVX512F-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm4
4724 ; AVX512F-NEXT:    vpshufb %ymm3, %ymm5, %ymm3
4725 ; AVX512F-NEXT:    vextracti128 $1, %ymm11, %xmm1
4726 ; AVX512F-NEXT:    vmovdqa64 %xmm25, %xmm5
4727 ; AVX512F-NEXT:    vpshufb %xmm5, %xmm1, %xmm5
4728 ; AVX512F-NEXT:    vpshufb %xmm14, %xmm11, %xmm14
4729 ; AVX512F-NEXT:    vpor %xmm5, %xmm14, %xmm5
4730 ; AVX512F-NEXT:    vpshufb %xmm2, %xmm12, %xmm2
4731 ; AVX512F-NEXT:    vpshufb %xmm0, %xmm9, %xmm0
4732 ; AVX512F-NEXT:    vpor %xmm2, %xmm0, %xmm0
4733 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535]
4734 ; AVX512F-NEXT:    vpternlogq $226, %ymm23, %ymm2, %ymm6
4735 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm9 = ymm6[u,u,u,u,u,u,u,u,u,u,0,6,12,2,8,14,20,26,16,22,28,u,u,u,u,u,u,u,u,u,u,u]
4736 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4],xmm9[5,6,7]
4737 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm9[4,5,6,7]
4738 ; AVX512F-NEXT:    vinserti32x4 $1, %xmm28, %ymm0, %ymm9
4739 ; AVX512F-NEXT:    vpternlogq $248, %ymm22, %ymm9, %ymm3
4740 ; AVX512F-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm3
4741 ; AVX512F-NEXT:    vinserti32x4 $1, %xmm24, %ymm0, %ymm9
4742 ; AVX512F-NEXT:    vpternlogq $202, %ymm20, %ymm19, %ymm2
4743 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm10 = ymm2[u,u,u,u,u,u,u,u,u,u,0,6,12,2,8,14,20,26,16,22,28],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4744 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm12 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0]
4745 ; AVX512F-NEXT:    vpternlogq $242, %ymm9, %ymm12, %ymm10
4746 ; AVX512F-NEXT:    vinserti64x4 $1, %ymm10, %zmm0, %zmm9
4747 ; AVX512F-NEXT:    vinserti32x4 $1, %xmm27, %ymm0, %ymm10
4748 ; AVX512F-NEXT:    vinserti32x4 $2, %xmm26, %zmm10, %zmm10
4749 ; AVX512F-NEXT:    vmovdqa64 {{.*#+}} zmm14 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
4750 ; AVX512F-NEXT:    vpternlogq $226, %zmm10, %zmm14, %zmm5
4751 ; AVX512F-NEXT:    vmovdqa64 {{.*#+}} zmm10 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,0,0]
4752 ; AVX512F-NEXT:    vpternlogq $184, %zmm5, %zmm10, %zmm9
4753 ; AVX512F-NEXT:    vmovdqa64 %xmm29, %xmm5
4754 ; AVX512F-NEXT:    vpshufb %xmm5, %xmm1, %xmm1
4755 ; AVX512F-NEXT:    vpshufb %xmm13, %xmm11, %xmm5
4756 ; AVX512F-NEXT:    vpor %xmm1, %xmm5, %xmm1
4757 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm5 = ymm6[u,u,u,u,u,u,u,u,u,u,1,7,13,3,9,15,21,27,17,23,29,u,u,u,u,u,u,u,u,u,u,u]
4758 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4],xmm5[5,6,7]
4759 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm5[4,5,6,7]
4760 ; AVX512F-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
4761 ; AVX512F-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,1,7,13,3,9,15,21,27,17,23,29],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4762 ; AVX512F-NEXT:    vpternlogq $242, %ymm0, %ymm12, %ymm2
4763 ; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm0
4764 ; AVX512F-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm2
4765 ; AVX512F-NEXT:    vinserti32x4 $2, %xmm18, %zmm2, %zmm2
4766 ; AVX512F-NEXT:    vpternlogq $226, %zmm2, %zmm14, %zmm1
4767 ; AVX512F-NEXT:    vpternlogq $184, %zmm1, %zmm10, %zmm0
4768 ; AVX512F-NEXT:    vinserti128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm1 # 16-byte Folded Reload
4769 ; AVX512F-NEXT:    vinserti32x4 $2, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 16-byte Folded Reload
4770 ; AVX512F-NEXT:    vmovdqa64 {{.*#+}} zmm2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
4771 ; AVX512F-NEXT:    vpternlogq $184, %zmm1, %zmm2, %zmm16
4772 ; AVX512F-NEXT:    vinserti128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm1 # 16-byte Folded Reload
4773 ; AVX512F-NEXT:    vinserti32x4 $2, {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm1 # 16-byte Folded Reload
4774 ; AVX512F-NEXT:    vpternlogq $184, %zmm1, %zmm2, %zmm21
4775 ; AVX512F-NEXT:    vmovdqa64 {{.*#+}} zmm1 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
4776 ; AVX512F-NEXT:    vpternlogq $184, %zmm16, %zmm1, %zmm4
4777 ; AVX512F-NEXT:    vpternlogq $184, %zmm21, %zmm1, %zmm3
4778 ; AVX512F-NEXT:    vmovdqa64 %zmm15, (%rsi)
4779 ; AVX512F-NEXT:    vmovdqa64 %zmm17, (%rdx)
4780 ; AVX512F-NEXT:    vmovdqa64 %zmm4, (%rcx)
4781 ; AVX512F-NEXT:    vmovdqa64 %zmm3, (%r8)
4782 ; AVX512F-NEXT:    vmovdqa64 %zmm9, (%r9)
4783 ; AVX512F-NEXT:    movq {{[0-9]+}}(%rsp), %rax
4784 ; AVX512F-NEXT:    vmovdqa64 %zmm0, (%rax)
4785 ; AVX512F-NEXT:    addq $40, %rsp
4786 ; AVX512F-NEXT:    vzeroupper
4787 ; AVX512F-NEXT:    retq
4789 ; AVX512BW-LABEL: load_i8_stride6_vf64:
4790 ; AVX512BW:       # %bb.0:
4791 ; AVX512BW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
4792 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm2 = <0,6,12,128,128,128,4,10,128,128,128,u,u,u,u,u>
4793 ; AVX512BW-NEXT:    vmovdqa 224(%rdi), %ymm0
4794 ; AVX512BW-NEXT:    vmovdqa64 192(%rdi), %ymm23
4795 ; AVX512BW-NEXT:    movw $18724, %r10w # imm = 0x4924
4796 ; AVX512BW-NEXT:    kmovd %r10d, %k1
4797 ; AVX512BW-NEXT:    vpblendmw %ymm0, %ymm23, %ymm9 {%k1}
4798 ; AVX512BW-NEXT:    vpshufb %xmm2, %xmm9, %xmm1
4799 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm4 = <128,128,128,2,8,14,128,128,0,6,12,u,u,u,u,u>
4800 ; AVX512BW-NEXT:    vextracti128 $1, %ymm9, %xmm12
4801 ; AVX512BW-NEXT:    vpshufb %xmm4, %xmm12, %xmm3
4802 ; AVX512BW-NEXT:    vpor %xmm1, %xmm3, %xmm5
4803 ; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm10
4804 ; AVX512BW-NEXT:    vmovdqa 32(%rdi), %ymm3
4805 ; AVX512BW-NEXT:    vmovdqa 64(%rdi), %ymm6
4806 ; AVX512BW-NEXT:    vmovdqa64 128(%rdi), %ymm26
4807 ; AVX512BW-NEXT:    vmovdqa 160(%rdi), %ymm1
4808 ; AVX512BW-NEXT:    vpblendmw %ymm26, %ymm1, %ymm15 {%k1}
4809 ; AVX512BW-NEXT:    vextracti32x4 $1, %ymm15, %xmm16
4810 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm17 = <u,u,u,u,u,u,128,128,0,6,12,128,128,128,4,10>
4811 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm16, %xmm11
4812 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm18 = <u,u,u,u,u,u,4,10,128,128,128,2,8,14,128,128>
4813 ; AVX512BW-NEXT:    vpshufb %xmm18, %xmm15, %xmm13
4814 ; AVX512BW-NEXT:    vpor %xmm11, %xmm13, %xmm11
4815 ; AVX512BW-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
4816 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm5, %zmm11, %zmm11
4817 ; AVX512BW-NEXT:    vperm2i128 {{.*#+}} ymm5 = ymm6[2,3],mem[2,3]
4818 ; AVX512BW-NEXT:    vinserti128 $1, 96(%rdi), %ymm6, %ymm13
4819 ; AVX512BW-NEXT:    movw $-28124, %r10w # imm = 0x9224
4820 ; AVX512BW-NEXT:    kmovd %r10d, %k4
4821 ; AVX512BW-NEXT:    vpblendmw %ymm5, %ymm13, %ymm19 {%k4}
4822 ; AVX512BW-NEXT:    vpblendmw %ymm3, %ymm10, %ymm20 {%k1}
4823 ; AVX512BW-NEXT:    vpshufb %xmm2, %xmm20, %xmm2
4824 ; AVX512BW-NEXT:    vextracti32x4 $1, %ymm20, %xmm21
4825 ; AVX512BW-NEXT:    vpshufb %xmm4, %xmm21, %xmm4
4826 ; AVX512BW-NEXT:    vpor %xmm2, %xmm4, %xmm2
4827 ; AVX512BW-NEXT:    vpbroadcastq {{.*#+}} ymm6 = [0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10]
4828 ; AVX512BW-NEXT:    movl $4192256, %r10d # imm = 0x3FF800
4829 ; AVX512BW-NEXT:    kmovd %r10d, %k2
4830 ; AVX512BW-NEXT:    vpshufb %ymm6, %ymm19, %ymm2 {%k2}
4831 ; AVX512BW-NEXT:    vmovdqu16 %zmm11, %zmm2 {%k2}
4832 ; AVX512BW-NEXT:    vmovdqa 256(%rdi), %ymm11
4833 ; AVX512BW-NEXT:    vperm2i128 {{.*#+}} ymm4 = ymm11[2,3],mem[2,3]
4834 ; AVX512BW-NEXT:    vinserti128 $1, 288(%rdi), %ymm11, %ymm14
4835 ; AVX512BW-NEXT:    vpblendmw %ymm4, %ymm14, %ymm22 {%k4}
4836 ; AVX512BW-NEXT:    vpshufb %ymm6, %ymm22, %ymm7
4837 ; AVX512BW-NEXT:    vmovdqa 320(%rdi), %ymm11
4838 ; AVX512BW-NEXT:    vmovdqa 352(%rdi), %ymm6
4839 ; AVX512BW-NEXT:    vpblendmw %ymm11, %ymm6, %ymm24 {%k1}
4840 ; AVX512BW-NEXT:    vextracti32x4 $1, %ymm24, %xmm25
4841 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm25, %xmm17
4842 ; AVX512BW-NEXT:    vpshufb %xmm18, %xmm24, %xmm18
4843 ; AVX512BW-NEXT:    vporq %xmm17, %xmm18, %xmm17
4844 ; AVX512BW-NEXT:    vinserti32x4 $1, %xmm17, %ymm0, %ymm8
4845 ; AVX512BW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm7[0,1,2],ymm8[3,4,5,6,7],ymm7[8,9,10],ymm8[11,12,13,14,15]
4846 ; AVX512BW-NEXT:    vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5,6,7]
4847 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm7, %zmm0, %zmm7
4848 ; AVX512BW-NEXT:    movabsq $-8796093022208, %rdi # imm = 0xFFFFF80000000000
4849 ; AVX512BW-NEXT:    kmovq %rdi, %k3
4850 ; AVX512BW-NEXT:    vmovdqu8 %zmm7, %zmm2 {%k3}
4851 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm7 = <1,7,13,128,128,128,5,11,128,128,128,u,u,u,u,u>
4852 ; AVX512BW-NEXT:    vpshufb %xmm7, %xmm9, %xmm8
4853 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm9 = <128,128,128,3,9,15,128,128,1,7,13,u,u,u,u,u>
4854 ; AVX512BW-NEXT:    vpshufb %xmm9, %xmm12, %xmm12
4855 ; AVX512BW-NEXT:    vpor %xmm8, %xmm12, %xmm8
4856 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm12 = <u,u,u,u,u,u,128,128,1,7,13,128,128,128,5,11>
4857 ; AVX512BW-NEXT:    vpshufb %xmm12, %xmm16, %xmm16
4858 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm17 = <u,u,u,u,u,u,5,11,128,128,128,3,9,15,128,128>
4859 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm15, %xmm15
4860 ; AVX512BW-NEXT:    vporq %xmm16, %xmm15, %xmm15
4861 ; AVX512BW-NEXT:    vinserti128 $1, %xmm15, %ymm0, %ymm15
4862 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm8, %zmm15, %zmm8
4863 ; AVX512BW-NEXT:    vpshufb %xmm7, %xmm20, %xmm7
4864 ; AVX512BW-NEXT:    vpshufb %xmm9, %xmm21, %xmm9
4865 ; AVX512BW-NEXT:    vpor %xmm7, %xmm9, %xmm9
4866 ; AVX512BW-NEXT:    vpbroadcastq {{.*#+}} ymm7 = [1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11]
4867 ; AVX512BW-NEXT:    vpshufb %ymm7, %ymm19, %ymm9 {%k2}
4868 ; AVX512BW-NEXT:    vmovdqu16 %zmm8, %zmm9 {%k2}
4869 ; AVX512BW-NEXT:    vpshufb %ymm7, %ymm22, %ymm7
4870 ; AVX512BW-NEXT:    vpshufb %xmm12, %xmm25, %xmm8
4871 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm24, %xmm12
4872 ; AVX512BW-NEXT:    vpor %xmm8, %xmm12, %xmm8
4873 ; AVX512BW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
4874 ; AVX512BW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm7[0,1,2],ymm8[3,4,5,6,7],ymm7[8,9,10],ymm8[11,12,13,14,15]
4875 ; AVX512BW-NEXT:    vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3],ymm8[4,5,6,7]
4876 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm7, %zmm0, %zmm7
4877 ; AVX512BW-NEXT:    vmovdqu8 %zmm7, %zmm9 {%k3}
4878 ; AVX512BW-NEXT:    vpblendmw %ymm13, %ymm5, %ymm15 {%k4}
4879 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm7 = <128,128,128,4,10,128,128,128,2,8,14,u,u,u,u,u>
4880 ; AVX512BW-NEXT:    movw $9362, %di # imm = 0x2492
4881 ; AVX512BW-NEXT:    kmovd %edi, %k2
4882 ; AVX512BW-NEXT:    vpblendmw %ymm10, %ymm3, %ymm8 {%k2}
4883 ; AVX512BW-NEXT:    vextracti32x4 $1, %ymm8, %xmm16
4884 ; AVX512BW-NEXT:    vpshufb %xmm7, %xmm16, %xmm12
4885 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm17 = <2,8,14,128,128,0,6,12,128,128,128,u,u,u,u,u>
4886 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm8, %xmm18
4887 ; AVX512BW-NEXT:    vporq %xmm12, %xmm18, %xmm18
4888 ; AVX512BW-NEXT:    vpbroadcastq {{.*#+}} ymm19 = [2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12]
4889 ; AVX512BW-NEXT:    movl $2095104, %edi # imm = 0x1FF800
4890 ; AVX512BW-NEXT:    kmovd %edi, %k5
4891 ; AVX512BW-NEXT:    vpshufb %ymm19, %ymm15, %ymm18 {%k5}
4892 ; AVX512BW-NEXT:    vpblendmw %ymm23, %ymm0, %ymm20 {%k2}
4893 ; AVX512BW-NEXT:    vextracti32x4 $1, %ymm20, %xmm21
4894 ; AVX512BW-NEXT:    vpshufb %xmm7, %xmm21, %xmm7
4895 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm20, %xmm12
4896 ; AVX512BW-NEXT:    vpor %xmm7, %xmm12, %xmm7
4897 ; AVX512BW-NEXT:    vpblendmw %ymm1, %ymm26, %ymm17 {%k1}
4898 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm22 = <u,u,u,u,u,0,6,12,128,128,128,4,10,128,128,128>
4899 ; AVX512BW-NEXT:    vpshufb %xmm22, %xmm17, %xmm12
4900 ; AVX512BW-NEXT:    vextracti32x4 $1, %ymm17, %xmm24
4901 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm25 = <u,u,u,u,u,128,128,128,2,8,14,128,128,0,6,12>
4902 ; AVX512BW-NEXT:    vpshufb %xmm25, %xmm24, %xmm27
4903 ; AVX512BW-NEXT:    vporq %xmm12, %xmm27, %xmm12
4904 ; AVX512BW-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
4905 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm7, %zmm12, %zmm12
4906 ; AVX512BW-NEXT:    movl $2097151, %edi # imm = 0x1FFFFF
4907 ; AVX512BW-NEXT:    kmovq %rdi, %k6
4908 ; AVX512BW-NEXT:    vmovdqu8 %zmm18, %zmm12 {%k6}
4909 ; AVX512BW-NEXT:    vpblendmw %ymm14, %ymm4, %ymm7 {%k4}
4910 ; AVX512BW-NEXT:    vpblendmw %ymm6, %ymm11, %ymm18 {%k1}
4911 ; AVX512BW-NEXT:    vpshufb %xmm22, %xmm18, %xmm22
4912 ; AVX512BW-NEXT:    vextracti32x4 $1, %ymm18, %xmm27
4913 ; AVX512BW-NEXT:    vpshufb %xmm25, %xmm27, %xmm25
4914 ; AVX512BW-NEXT:    vporq %xmm22, %xmm25, %xmm22
4915 ; AVX512BW-NEXT:    vinserti32x4 $1, %xmm22, %ymm0, %ymm22
4916 ; AVX512BW-NEXT:    vpshufb %ymm19, %ymm7, %ymm22 {%k5}
4917 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm22, %zmm0, %zmm19
4918 ; AVX512BW-NEXT:    vmovdqu8 %zmm19, %zmm12 {%k3}
4919 ; AVX512BW-NEXT:    movw $9289, %di # imm = 0x2449
4920 ; AVX512BW-NEXT:    kmovd %edi, %k4
4921 ; AVX512BW-NEXT:    vmovdqu16 %ymm14, %ymm4 {%k4}
4922 ; AVX512BW-NEXT:    vmovdqu16 %ymm13, %ymm5 {%k4}
4923 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm13 = <128,128,128,5,11,128,128,128,3,9,15,u,u,u,u,u>
4924 ; AVX512BW-NEXT:    vpshufb %xmm13, %xmm16, %xmm14
4925 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm16 = <3,9,15,128,128,1,7,13,128,128,128,u,u,u,u,u>
4926 ; AVX512BW-NEXT:    vpshufb %xmm16, %xmm8, %xmm8
4927 ; AVX512BW-NEXT:    vpor %xmm14, %xmm8, %xmm8
4928 ; AVX512BW-NEXT:    vpbroadcastq {{.*#+}} ymm14 = [3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13]
4929 ; AVX512BW-NEXT:    vpshufb %ymm14, %ymm15, %ymm8 {%k5}
4930 ; AVX512BW-NEXT:    vpshufb %xmm13, %xmm21, %xmm13
4931 ; AVX512BW-NEXT:    vpshufb %xmm16, %xmm20, %xmm15
4932 ; AVX512BW-NEXT:    vpor %xmm13, %xmm15, %xmm13
4933 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm15 = <u,u,u,u,u,1,7,13,128,128,128,5,11,128,128,128>
4934 ; AVX512BW-NEXT:    vpshufb %xmm15, %xmm17, %xmm16
4935 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm17 = <u,u,u,u,u,128,128,128,3,9,15,128,128,1,7,13>
4936 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm24, %xmm19
4937 ; AVX512BW-NEXT:    vporq %xmm16, %xmm19, %xmm16
4938 ; AVX512BW-NEXT:    vinserti32x4 $1, %xmm16, %ymm0, %ymm16
4939 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm13, %zmm16, %zmm13
4940 ; AVX512BW-NEXT:    vmovdqu8 %zmm8, %zmm13 {%k6}
4941 ; AVX512BW-NEXT:    vpshufb %xmm15, %xmm18, %xmm8
4942 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm27, %xmm15
4943 ; AVX512BW-NEXT:    vpor %xmm8, %xmm15, %xmm8
4944 ; AVX512BW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
4945 ; AVX512BW-NEXT:    vpshufb %ymm14, %ymm7, %ymm8 {%k5}
4946 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm8, %zmm0, %zmm7
4947 ; AVX512BW-NEXT:    vmovdqu8 %zmm7, %zmm13 {%k3}
4948 ; AVX512BW-NEXT:    vpbroadcastq {{.*#+}} ymm7 = [4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14,4,10,0,6,12,2,8,14]
4949 ; AVX512BW-NEXT:    vpshufb %ymm7, %ymm5, %ymm8
4950 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm14 = <128,128,0,6,12,128,128,128,4,10,u,u,u,u,u,u>
4951 ; AVX512BW-NEXT:    vmovdqu16 %ymm10, %ymm3 {%k1}
4952 ; AVX512BW-NEXT:    vextracti128 $1, %ymm3, %xmm15
4953 ; AVX512BW-NEXT:    vpshufb %xmm14, %xmm15, %xmm10
4954 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm16 = <4,10,128,128,128,2,8,14,128,128,u,u,u,u,u,u>
4955 ; AVX512BW-NEXT:    vpshufb %xmm16, %xmm3, %xmm17
4956 ; AVX512BW-NEXT:    vporq %xmm10, %xmm17, %xmm10
4957 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm10 = xmm10[0,1,2,3,4],xmm8[5,6,7]
4958 ; AVX512BW-NEXT:    vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3],ymm8[4,5,6,7]
4959 ; AVX512BW-NEXT:    vmovdqu16 %ymm23, %ymm0 {%k1}
4960 ; AVX512BW-NEXT:    vextracti128 $1, %ymm0, %xmm8
4961 ; AVX512BW-NEXT:    vpshufb %xmm14, %xmm8, %xmm14
4962 ; AVX512BW-NEXT:    vpshufb %xmm16, %xmm0, %xmm16
4963 ; AVX512BW-NEXT:    vporq %xmm14, %xmm16, %xmm14
4964 ; AVX512BW-NEXT:    vmovdqu16 %ymm26, %ymm1 {%k2}
4965 ; AVX512BW-NEXT:    vextracti32x4 $1, %ymm1, %xmm16
4966 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm17 = <u,u,u,u,u,128,128,128,4,10,128,128,128,2,8,14>
4967 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm16, %xmm18
4968 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm19 = <u,u,u,u,u,2,8,14,128,128,0,6,12,128,128,128>
4969 ; AVX512BW-NEXT:    vpshufb %xmm19, %xmm1, %xmm20
4970 ; AVX512BW-NEXT:    vporq %xmm18, %xmm20, %xmm18
4971 ; AVX512BW-NEXT:    vinserti32x4 $1, %xmm18, %ymm0, %ymm18
4972 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm14, %zmm18, %zmm14
4973 ; AVX512BW-NEXT:    movabsq $4398044413952, %rdi # imm = 0x3FFFFE00000
4974 ; AVX512BW-NEXT:    kmovq %rdi, %k1
4975 ; AVX512BW-NEXT:    vmovdqu8 %zmm14, %zmm10 {%k1}
4976 ; AVX512BW-NEXT:    vpshufb %ymm7, %ymm4, %ymm7
4977 ; AVX512BW-NEXT:    vmovdqu16 %ymm11, %ymm6 {%k2}
4978 ; AVX512BW-NEXT:    vextracti128 $1, %ymm6, %xmm11
4979 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm11, %xmm14
4980 ; AVX512BW-NEXT:    vpshufb %xmm19, %xmm6, %xmm17
4981 ; AVX512BW-NEXT:    vporq %xmm14, %xmm17, %xmm14
4982 ; AVX512BW-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
4983 ; AVX512BW-NEXT:    movl $-2097152, %edi # imm = 0xFFE00000
4984 ; AVX512BW-NEXT:    kmovd %edi, %k2
4985 ; AVX512BW-NEXT:    vmovdqu8 %ymm14, %ymm7 {%k2}
4986 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm7, %zmm0, %zmm7
4987 ; AVX512BW-NEXT:    vmovdqu16 %zmm7, %zmm10 {%k2}
4988 ; AVX512BW-NEXT:    vpbroadcastq {{.*#+}} ymm7 = [5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15,5,11,1,7,13,3,9,15]
4989 ; AVX512BW-NEXT:    vpshufb %ymm7, %ymm5, %ymm5
4990 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm14 = <128,128,1,7,13,128,128,128,5,11,u,u,u,u,u,u>
4991 ; AVX512BW-NEXT:    vpshufb %xmm14, %xmm15, %xmm15
4992 ; AVX512BW-NEXT:    vmovdqa64 {{.*#+}} xmm17 = <5,11,128,128,128,3,9,15,128,128,u,u,u,u,u,u>
4993 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm3, %xmm3
4994 ; AVX512BW-NEXT:    vpor %xmm3, %xmm15, %xmm3
4995 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4],xmm5[5,6,7]
4996 ; AVX512BW-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm5[4,5,6,7]
4997 ; AVX512BW-NEXT:    vpshufb %xmm14, %xmm8, %xmm5
4998 ; AVX512BW-NEXT:    vpshufb %xmm17, %xmm0, %xmm0
4999 ; AVX512BW-NEXT:    vpor %xmm5, %xmm0, %xmm0
5000 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm5 = <u,u,u,u,u,128,128,128,5,11,128,128,128,3,9,15>
5001 ; AVX512BW-NEXT:    vpshufb %xmm5, %xmm16, %xmm8
5002 ; AVX512BW-NEXT:    vmovdqa {{.*#+}} xmm14 = <u,u,u,u,u,3,9,15,128,128,1,7,13,128,128,128>
5003 ; AVX512BW-NEXT:    vpshufb %xmm14, %xmm1, %xmm1
5004 ; AVX512BW-NEXT:    vpor %xmm1, %xmm8, %xmm1
5005 ; AVX512BW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
5006 ; AVX512BW-NEXT:    vinserti32x4 $2, %xmm0, %zmm1, %zmm0
5007 ; AVX512BW-NEXT:    vmovdqu8 %zmm0, %zmm3 {%k1}
5008 ; AVX512BW-NEXT:    vpshufb %ymm7, %ymm4, %ymm0
5009 ; AVX512BW-NEXT:    vpshufb %xmm5, %xmm11, %xmm1
5010 ; AVX512BW-NEXT:    vpshufb %xmm14, %xmm6, %xmm4
5011 ; AVX512BW-NEXT:    vpor %xmm1, %xmm4, %xmm1
5012 ; AVX512BW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
5013 ; AVX512BW-NEXT:    vmovdqu8 %ymm1, %ymm0 {%k2}
5014 ; AVX512BW-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
5015 ; AVX512BW-NEXT:    vmovdqu16 %zmm0, %zmm3 {%k2}
5016 ; AVX512BW-NEXT:    vmovdqa64 %zmm2, (%rsi)
5017 ; AVX512BW-NEXT:    vmovdqa64 %zmm9, (%rdx)
5018 ; AVX512BW-NEXT:    vmovdqa64 %zmm12, (%rcx)
5019 ; AVX512BW-NEXT:    vmovdqa64 %zmm13, (%r8)
5020 ; AVX512BW-NEXT:    vmovdqa64 %zmm10, (%r9)
5021 ; AVX512BW-NEXT:    vmovdqa64 %zmm3, (%rax)
5022 ; AVX512BW-NEXT:    vzeroupper
5023 ; AVX512BW-NEXT:    retq
5024   %wide.vec = load <384 x i8>, ptr %in.vec, align 64
5025   %strided.vec0 = shufflevector <384 x i8> %wide.vec, <384 x i8> poison, <64 x i32> <i32 0, i32 6, i32 12, i32 18, i32 24, i32 30, i32 36, i32 42, i32 48, i32 54, i32 60, i32 66, i32 72, i32 78, i32 84, i32 90, i32 96, i32 102, i32 108, i32 114, i32 120, i32 126, i32 132, i32 138, i32 144, i32 150, i32 156, i32 162, i32 168, i32 174, i32 180, i32 186, i32 192, i32 198, i32 204, i32 210, i32 216, i32 222, i32 228, i32 234, i32 240, i32 246, i32 252, i32 258, i32 264, i32 270, i32 276, i32 282, i32 288, i32 294, i32 300, i32 306, i32 312, i32 318, i32 324, i32 330, i32 336, i32 342, i32 348, i32 354, i32 360, i32 366, i32 372, i32 378>
5026   %strided.vec1 = shufflevector <384 x i8> %wide.vec, <384 x i8> poison, <64 x i32> <i32 1, i32 7, i32 13, i32 19, i32 25, i32 31, i32 37, i32 43, i32 49, i32 55, i32 61, i32 67, i32 73, i32 79, i32 85, i32 91, i32 97, i32 103, i32 109, i32 115, i32 121, i32 127, i32 133, i32 139, i32 145, i32 151, i32 157, i32 163, i32 169, i32 175, i32 181, i32 187, i32 193, i32 199, i32 205, i32 211, i32 217, i32 223, i32 229, i32 235, i32 241, i32 247, i32 253, i32 259, i32 265, i32 271, i32 277, i32 283, i32 289, i32 295, i32 301, i32 307, i32 313, i32 319, i32 325, i32 331, i32 337, i32 343, i32 349, i32 355, i32 361, i32 367, i32 373, i32 379>
5027   %strided.vec2 = shufflevector <384 x i8> %wide.vec, <384 x i8> poison, <64 x i32> <i32 2, i32 8, i32 14, i32 20, i32 26, i32 32, i32 38, i32 44, i32 50, i32 56, i32 62, i32 68, i32 74, i32 80, i32 86, i32 92, i32 98, i32 104, i32 110, i32 116, i32 122, i32 128, i32 134, i32 140, i32 146, i32 152, i32 158, i32 164, i32 170, i32 176, i32 182, i32 188, i32 194, i32 200, i32 206, i32 212, i32 218, i32 224, i32 230, i32 236, i32 242, i32 248, i32 254, i32 260, i32 266, i32 272, i32 278, i32 284, i32 290, i32 296, i32 302, i32 308, i32 314, i32 320, i32 326, i32 332, i32 338, i32 344, i32 350, i32 356, i32 362, i32 368, i32 374, i32 380>
5028   %strided.vec3 = shufflevector <384 x i8> %wide.vec, <384 x i8> poison, <64 x i32> <i32 3, i32 9, i32 15, i32 21, i32 27, i32 33, i32 39, i32 45, i32 51, i32 57, i32 63, i32 69, i32 75, i32 81, i32 87, i32 93, i32 99, i32 105, i32 111, i32 117, i32 123, i32 129, i32 135, i32 141, i32 147, i32 153, i32 159, i32 165, i32 171, i32 177, i32 183, i32 189, i32 195, i32 201, i32 207, i32 213, i32 219, i32 225, i32 231, i32 237, i32 243, i32 249, i32 255, i32 261, i32 267, i32 273, i32 279, i32 285, i32 291, i32 297, i32 303, i32 309, i32 315, i32 321, i32 327, i32 333, i32 339, i32 345, i32 351, i32 357, i32 363, i32 369, i32 375, i32 381>
5029   %strided.vec4 = shufflevector <384 x i8> %wide.vec, <384 x i8> poison, <64 x i32> <i32 4, i32 10, i32 16, i32 22, i32 28, i32 34, i32 40, i32 46, i32 52, i32 58, i32 64, i32 70, i32 76, i32 82, i32 88, i32 94, i32 100, i32 106, i32 112, i32 118, i32 124, i32 130, i32 136, i32 142, i32 148, i32 154, i32 160, i32 166, i32 172, i32 178, i32 184, i32 190, i32 196, i32 202, i32 208, i32 214, i32 220, i32 226, i32 232, i32 238, i32 244, i32 250, i32 256, i32 262, i32 268, i32 274, i32 280, i32 286, i32 292, i32 298, i32 304, i32 310, i32 316, i32 322, i32 328, i32 334, i32 340, i32 346, i32 352, i32 358, i32 364, i32 370, i32 376, i32 382>
5030   %strided.vec5 = shufflevector <384 x i8> %wide.vec, <384 x i8> poison, <64 x i32> <i32 5, i32 11, i32 17, i32 23, i32 29, i32 35, i32 41, i32 47, i32 53, i32 59, i32 65, i32 71, i32 77, i32 83, i32 89, i32 95, i32 101, i32 107, i32 113, i32 119, i32 125, i32 131, i32 137, i32 143, i32 149, i32 155, i32 161, i32 167, i32 173, i32 179, i32 185, i32 191, i32 197, i32 203, i32 209, i32 215, i32 221, i32 227, i32 233, i32 239, i32 245, i32 251, i32 257, i32 263, i32 269, i32 275, i32 281, i32 287, i32 293, i32 299, i32 305, i32 311, i32 317, i32 323, i32 329, i32 335, i32 341, i32 347, i32 353, i32 359, i32 365, i32 371, i32 377, i32 383>
5031   store <64 x i8> %strided.vec0, ptr %out.vec0, align 64
5032   store <64 x i8> %strided.vec1, ptr %out.vec1, align 64
5033   store <64 x i8> %strided.vec2, ptr %out.vec2, align 64
5034   store <64 x i8> %strided.vec3, ptr %out.vec3, align 64
5035   store <64 x i8> %strided.vec4, ptr %out.vec4, align 64
5036   store <64 x i8> %strided.vec5, ptr %out.vec5, align 64
5037   ret void
5039 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
5040 ; AVX1: {{.*}}
5041 ; AVX2-FAST: {{.*}}
5042 ; AVX2-FAST-PERLANE: {{.*}}
5043 ; AVX2-SLOW: {{.*}}
5044 ; AVX512: {{.*}}
5045 ; AVX512-FAST: {{.*}}
5046 ; AVX512-SLOW: {{.*}}
5047 ; AVX512BW-FAST: {{.*}}
5048 ; AVX512BW-ONLY-FAST: {{.*}}
5049 ; AVX512BW-ONLY-SLOW: {{.*}}
5050 ; AVX512BW-SLOW: {{.*}}
5051 ; AVX512DQ-FAST: {{.*}}
5052 ; AVX512DQ-SLOW: {{.*}}
5053 ; AVX512DQBW-FAST: {{.*}}
5054 ; AVX512DQBW-SLOW: {{.*}}
5055 ; AVX512F-FAST: {{.*}}
5056 ; AVX512F-ONLY-FAST: {{.*}}
5057 ; AVX512F-ONLY-SLOW: {{.*}}
5058 ; AVX512F-SLOW: {{.*}}
5059 ; FALLBACK0: {{.*}}
5060 ; FALLBACK1: {{.*}}
5061 ; FALLBACK10: {{.*}}
5062 ; FALLBACK11: {{.*}}
5063 ; FALLBACK12: {{.*}}
5064 ; FALLBACK2: {{.*}}
5065 ; FALLBACK3: {{.*}}
5066 ; FALLBACK4: {{.*}}
5067 ; FALLBACK5: {{.*}}
5068 ; FALLBACK6: {{.*}}
5069 ; FALLBACK7: {{.*}}
5070 ; FALLBACK8: {{.*}}
5071 ; FALLBACK9: {{.*}}