[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / X86 / vector-interleaved-load-i8-stride-7.ll
blob3b13741aaf7d5b188072c3babf6b062c7e21b535
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_stride7_vf2(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5, ptr %out.vec6) nounwind {
19 ; SSE-LABEL: load_i8_stride7_vf2:
20 ; SSE:       # %bb.0:
21 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
22 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %r10
23 ; SSE-NEXT:    movdqa (%rdi), %xmm3
24 ; SSE-NEXT:    pxor %xmm4, %xmm4
25 ; SSE-NEXT:    movdqa %xmm3, %xmm2
26 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]
27 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,3,2,3]
28 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm0[0,3,2,3,4,5,6,7]
29 ; SSE-NEXT:    packuswb %xmm1, %xmm1
30 ; SSE-NEXT:    movdqa %xmm2, %xmm0
31 ; SSE-NEXT:    psrld $16, %xmm0
32 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm4[8],xmm3[9],xmm4[9],xmm3[10],xmm4[10],xmm3[11],xmm4[11],xmm3[12],xmm4[12],xmm3[13],xmm4[13],xmm3[14],xmm4[14],xmm3[15],xmm4[15]
33 ; SSE-NEXT:    movdqa %xmm0, %xmm4
34 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
35 ; SSE-NEXT:    packuswb %xmm4, %xmm4
36 ; SSE-NEXT:    movdqa %xmm2, %xmm6
37 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm3[0],xmm6[1],xmm3[1],xmm6[2],xmm3[2],xmm6[3],xmm3[3]
38 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[2,1,2,3]
39 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,3,2,3,4,5,6,7]
40 ; SSE-NEXT:    packuswb %xmm5, %xmm5
41 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,6,5,6,7]
42 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,2,2,2]
43 ; SSE-NEXT:    packuswb %xmm6, %xmm6
44 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm2[2,3,2,3]
45 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
46 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
47 ; SSE-NEXT:    psrlq $48, %xmm3
48 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3]
49 ; SSE-NEXT:    packuswb %xmm7, %xmm7
50 ; SSE-NEXT:    packuswb %xmm0, %xmm0
51 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,1,2,3]
52 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]
53 ; SSE-NEXT:    packuswb %xmm2, %xmm2
54 ; SSE-NEXT:    movd %xmm1, %edi
55 ; SSE-NEXT:    movw %di, (%rsi)
56 ; SSE-NEXT:    movd %xmm4, %esi
57 ; SSE-NEXT:    movw %si, (%rdx)
58 ; SSE-NEXT:    movd %xmm5, %edx
59 ; SSE-NEXT:    movw %dx, (%rcx)
60 ; SSE-NEXT:    movd %xmm6, %ecx
61 ; SSE-NEXT:    movw %cx, (%r8)
62 ; SSE-NEXT:    movd %xmm7, %ecx
63 ; SSE-NEXT:    movw %cx, (%r9)
64 ; SSE-NEXT:    movd %xmm0, %ecx
65 ; SSE-NEXT:    movw %cx, (%r10)
66 ; SSE-NEXT:    movd %xmm2, %ecx
67 ; SSE-NEXT:    movw %cx, (%rax)
68 ; SSE-NEXT:    retq
70 ; AVX-LABEL: load_i8_stride7_vf2:
71 ; AVX:       # %bb.0:
72 ; AVX-NEXT:    movq {{[0-9]+}}(%rsp), %rax
73 ; AVX-NEXT:    movq {{[0-9]+}}(%rsp), %r10
74 ; AVX-NEXT:    vmovdqa (%rdi), %xmm0
75 ; AVX-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[0,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
76 ; AVX-NEXT:    vpshufb {{.*#+}} xmm2 = xmm0[1,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
77 ; AVX-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
78 ; AVX-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
79 ; AVX-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[4,11,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
80 ; AVX-NEXT:    vpshufb {{.*#+}} xmm6 = xmm0[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
81 ; AVX-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
82 ; AVX-NEXT:    vpextrw $0, %xmm1, (%rsi)
83 ; AVX-NEXT:    vpextrw $0, %xmm2, (%rdx)
84 ; AVX-NEXT:    vpextrw $0, %xmm3, (%rcx)
85 ; AVX-NEXT:    vpextrw $0, %xmm4, (%r8)
86 ; AVX-NEXT:    vpextrw $0, %xmm5, (%r9)
87 ; AVX-NEXT:    vpextrw $0, %xmm6, (%r10)
88 ; AVX-NEXT:    vpextrw $0, %xmm0, (%rax)
89 ; AVX-NEXT:    retq
90   %wide.vec = load <14 x i8>, ptr %in.vec, align 64
91   %strided.vec0 = shufflevector <14 x i8> %wide.vec, <14 x i8> poison, <2 x i32> <i32 0, i32 7>
92   %strided.vec1 = shufflevector <14 x i8> %wide.vec, <14 x i8> poison, <2 x i32> <i32 1, i32 8>
93   %strided.vec2 = shufflevector <14 x i8> %wide.vec, <14 x i8> poison, <2 x i32> <i32 2, i32 9>
94   %strided.vec3 = shufflevector <14 x i8> %wide.vec, <14 x i8> poison, <2 x i32> <i32 3, i32 10>
95   %strided.vec4 = shufflevector <14 x i8> %wide.vec, <14 x i8> poison, <2 x i32> <i32 4, i32 11>
96   %strided.vec5 = shufflevector <14 x i8> %wide.vec, <14 x i8> poison, <2 x i32> <i32 5, i32 12>
97   %strided.vec6 = shufflevector <14 x i8> %wide.vec, <14 x i8> poison, <2 x i32> <i32 6, i32 13>
98   store <2 x i8> %strided.vec0, ptr %out.vec0, align 64
99   store <2 x i8> %strided.vec1, ptr %out.vec1, align 64
100   store <2 x i8> %strided.vec2, ptr %out.vec2, align 64
101   store <2 x i8> %strided.vec3, ptr %out.vec3, align 64
102   store <2 x i8> %strided.vec4, ptr %out.vec4, align 64
103   store <2 x i8> %strided.vec5, ptr %out.vec5, align 64
104   store <2 x i8> %strided.vec6, ptr %out.vec6, align 64
105   ret void
108 define void @load_i8_stride7_vf4(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5, ptr %out.vec6) nounwind {
109 ; SSE-LABEL: load_i8_stride7_vf4:
110 ; SSE:       # %bb.0:
111 ; SSE-NEXT:    movdqa (%rdi), %xmm4
112 ; SSE-NEXT:    movdqa 16(%rdi), %xmm0
113 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,0,65535,65535,65535,65535,65535]
114 ; SSE-NEXT:    movdqa %xmm4, %xmm1
115 ; SSE-NEXT:    pand %xmm3, %xmm1
116 ; SSE-NEXT:    pandn %xmm0, %xmm3
117 ; SSE-NEXT:    por %xmm1, %xmm3
118 ; SSE-NEXT:    pxor %xmm1, %xmm1
119 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3],xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]
120 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,65535,65535,65535,0,65535]
121 ; SSE-NEXT:    pand %xmm2, %xmm3
122 ; SSE-NEXT:    movdqa %xmm0, %xmm5
123 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[1,0],xmm4[0,0]
124 ; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[2,0],xmm4[2,3]
125 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,0,65535,65535,0,65535,65535,65535]
126 ; SSE-NEXT:    movdqa %xmm0, %xmm8
127 ; SSE-NEXT:    pand %xmm7, %xmm8
128 ; SSE-NEXT:    pandn %xmm4, %xmm7
129 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [65535,0,65535,65535,65535,0,65535,65535]
130 ; SSE-NEXT:    movdqa %xmm0, %xmm9
131 ; SSE-NEXT:    pand %xmm6, %xmm9
132 ; SSE-NEXT:    pandn %xmm4, %xmm6
133 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [65535,65535,0,65535,65535,0,65535,65535]
134 ; SSE-NEXT:    movdqa %xmm0, %xmm14
135 ; SSE-NEXT:    pand %xmm13, %xmm14
136 ; SSE-NEXT:    pandn %xmm4, %xmm13
137 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm4[1,3,2,3]
138 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm0[0,2,2,3]
139 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [65535,65535,65535,0,65535,65535,0,65535]
140 ; SSE-NEXT:    pand %xmm11, %xmm0
141 ; SSE-NEXT:    pandn %xmm4, %xmm11
142 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm1[8],xmm4[9],xmm1[9],xmm4[10],xmm1[10],xmm4[11],xmm1[11],xmm4[12],xmm1[12],xmm4[13],xmm1[13],xmm4[14],xmm1[14],xmm4[15],xmm1[15]
143 ; SSE-NEXT:    pandn %xmm4, %xmm2
144 ; SSE-NEXT:    por %xmm3, %xmm2
145 ; SSE-NEXT:    movdqa {{.*#+}} xmm15 = [0,65535,65535,65535,65535,65535,65535,0]
146 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],xmm1[3],xmm5[4],xmm1[4],xmm5[5],xmm1[5],xmm5[6],xmm1[6],xmm5[7],xmm1[7]
147 ; SSE-NEXT:    pand %xmm15, %xmm5
148 ; SSE-NEXT:    pandn %xmm4, %xmm15
149 ; SSE-NEXT:    por %xmm5, %xmm15
150 ; SSE-NEXT:    por %xmm8, %xmm7
151 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm1[0],xmm7[1],xmm1[1],xmm7[2],xmm1[2],xmm7[3],xmm1[3],xmm7[4],xmm1[4],xmm7[5],xmm1[5],xmm7[6],xmm1[6],xmm7[7],xmm1[7]
152 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm7[0,2,2,3,4,5,6,7]
153 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,3,2,3]
154 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm3[1,1,0,3,4,5,6,7]
155 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,0,65535,65535,65535,65535,65535,65535]
156 ; SSE-NEXT:    pand %xmm3, %xmm5
157 ; SSE-NEXT:    pandn %xmm4, %xmm3
158 ; SSE-NEXT:    por %xmm5, %xmm3
159 ; SSE-NEXT:    por %xmm9, %xmm6
160 ; SSE-NEXT:    movdqa %xmm6, %xmm4
161 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm1[8],xmm4[9],xmm1[9],xmm4[10],xmm1[10],xmm4[11],xmm1[11],xmm4[12],xmm1[12],xmm4[13],xmm1[13],xmm4[14],xmm1[14],xmm4[15],xmm1[15]
162 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm1[0],xmm6[1],xmm1[1],xmm6[2],xmm1[2],xmm6[3],xmm1[3],xmm6[4],xmm1[4],xmm6[5],xmm1[5],xmm6[6],xmm1[6],xmm6[7],xmm1[7]
163 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3]
164 ; SSE-NEXT:    por %xmm14, %xmm13
165 ; SSE-NEXT:    movdqa %xmm13, %xmm4
166 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm1[8],xmm4[9],xmm1[9],xmm4[10],xmm1[10],xmm4[11],xmm1[11],xmm4[12],xmm1[12],xmm4[13],xmm1[13],xmm4[14],xmm1[14],xmm4[15],xmm1[15]
167 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm4[3,1,2,3,4,5,6,7]
168 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm13 = xmm13[0],xmm1[0],xmm13[1],xmm1[1],xmm13[2],xmm1[2],xmm13[3],xmm1[3],xmm13[4],xmm1[4],xmm13[5],xmm1[5],xmm13[6],xmm1[6],xmm13[7],xmm1[7]
169 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm13[2,1,2,3]
170 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7]
171 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]
172 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
173 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rdi
174 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,1,3]
175 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]
176 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,2,3]
177 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,3,2,1,4,5,6,7]
178 ; SSE-NEXT:    packuswb %xmm2, %xmm2
179 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm15[0,3,2,3]
180 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,0,3,2,4,5,6,7]
181 ; SSE-NEXT:    packuswb %xmm5, %xmm5
182 ; SSE-NEXT:    packuswb %xmm3, %xmm3
183 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[2,1,2,3,4,5,6,7]
184 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm6[0,1,2,3,6,5,6,7]
185 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,0,2,3]
186 ; SSE-NEXT:    packuswb %xmm6, %xmm6
187 ; SSE-NEXT:    packuswb %xmm4, %xmm4
188 ; SSE-NEXT:    punpckldq {{.*#+}} xmm10 = xmm10[0],xmm12[0],xmm10[1],xmm12[1]
189 ; SSE-NEXT:    movdqa %xmm10, %xmm7
190 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm1[8],xmm7[9],xmm1[9],xmm7[10],xmm1[10],xmm7[11],xmm1[11],xmm7[12],xmm1[12],xmm7[13],xmm1[13],xmm7[14],xmm1[14],xmm7[15],xmm1[15]
191 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[2,1,2,3]
192 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[0,2,2,3,4,5,6,7]
193 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm1[0],xmm10[1],xmm1[1],xmm10[2],xmm1[2],xmm10[3],xmm1[3],xmm10[4],xmm1[4],xmm10[5],xmm1[5],xmm10[6],xmm1[6],xmm10[7],xmm1[7]
194 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm10[2,1,2,3]
195 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[1,3,2,3,4,5,6,7]
196 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]
197 ; SSE-NEXT:    packuswb %xmm8, %xmm8
198 ; SSE-NEXT:    por %xmm0, %xmm11
199 ; SSE-NEXT:    movdqa %xmm11, %xmm0
200 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
201 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,6,7]
202 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8],xmm1[8],xmm11[9],xmm1[9],xmm11[10],xmm1[10],xmm11[11],xmm1[11],xmm11[12],xmm1[12],xmm11[13],xmm1[13],xmm11[14],xmm1[14],xmm11[15],xmm1[15]
203 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm11[0,1,2,1]
204 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,7,6,7]
205 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
206 ; SSE-NEXT:    packuswb %xmm0, %xmm0
207 ; SSE-NEXT:    movd %xmm2, (%rsi)
208 ; SSE-NEXT:    movd %xmm5, (%rdx)
209 ; SSE-NEXT:    movd %xmm3, (%rcx)
210 ; SSE-NEXT:    movd %xmm6, (%r8)
211 ; SSE-NEXT:    movd %xmm4, (%r9)
212 ; SSE-NEXT:    movd %xmm8, (%rdi)
213 ; SSE-NEXT:    movd %xmm0, (%rax)
214 ; SSE-NEXT:    retq
216 ; AVX1-ONLY-LABEL: load_i8_stride7_vf4:
217 ; AVX1-ONLY:       # %bb.0:
218 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
219 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %r10
220 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm0
221 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm1
222 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm1[5,u,u,u,u,u,u,u,u,u,u,u,u]
223 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[0,7,14],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
224 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
225 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm1[6,u,u,u,u,u,u,u,u,u,u,u,u]
226 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[1,8,15],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
227 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
228 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [2,9,0,0,2,9,0,0,2,9,0,0,2,9,0,0]
229 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm0, %xmm5
230 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[0,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
231 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]
232 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm6 = [3,10,0,0,3,10,0,0,3,10,0,0,3,10,0,0]
233 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm0, %xmm7
234 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[1,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
235 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]
236 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm1, %xmm4
237 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm8 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
238 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm0, %xmm9
239 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm9[0],xmm4[0],xmm9[1],xmm4[1],xmm9[2],xmm4[2],xmm9[3],xmm4[3]
240 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm1, %xmm6
241 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm0[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
242 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm9[0],xmm6[0],xmm9[1],xmm6[1],xmm9[2],xmm6[2],xmm9[3],xmm6[3]
243 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
244 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
245 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
246 ; AVX1-ONLY-NEXT:    vmovd %xmm2, (%rsi)
247 ; AVX1-ONLY-NEXT:    vmovd %xmm3, (%rdx)
248 ; AVX1-ONLY-NEXT:    vmovd %xmm5, (%rcx)
249 ; AVX1-ONLY-NEXT:    vmovd %xmm7, (%r8)
250 ; AVX1-ONLY-NEXT:    vmovd %xmm4, (%r9)
251 ; AVX1-ONLY-NEXT:    vmovd %xmm6, (%r10)
252 ; AVX1-ONLY-NEXT:    vmovd %xmm0, (%rax)
253 ; AVX1-ONLY-NEXT:    retq
255 ; AVX2-ONLY-LABEL: load_i8_stride7_vf4:
256 ; AVX2-ONLY:       # %bb.0:
257 ; AVX2-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
258 ; AVX2-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %r10
259 ; AVX2-ONLY-NEXT:    vmovdqa (%rdi), %xmm0
260 ; AVX2-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm1
261 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm1[5,u,u,u,u,u,u,u,u,u,u,u,u]
262 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[0,7,14],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
263 ; AVX2-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
264 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm1[6,u,u,u,u,u,u,u,u,u,u,u,u]
265 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[1,8,15],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
266 ; AVX2-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
267 ; AVX2-ONLY-NEXT:    vpbroadcastw {{.*#+}} xmm4 = [2,9,2,9,2,9,2,9,2,9,2,9,2,9,2,9]
268 ; AVX2-ONLY-NEXT:    vpshufb %xmm4, %xmm0, %xmm5
269 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[0,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
270 ; AVX2-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]
271 ; AVX2-ONLY-NEXT:    vpbroadcastw {{.*#+}} xmm6 = [3,10,3,10,3,10,3,10,3,10,3,10,3,10,3,10]
272 ; AVX2-ONLY-NEXT:    vpshufb %xmm6, %xmm0, %xmm7
273 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[1,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
274 ; AVX2-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]
275 ; AVX2-ONLY-NEXT:    vpshufb %xmm4, %xmm1, %xmm4
276 ; AVX2-ONLY-NEXT:    vpbroadcastw {{.*#+}} xmm8 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
277 ; AVX2-ONLY-NEXT:    vpshufb %xmm8, %xmm0, %xmm9
278 ; AVX2-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm9[0],xmm4[0],xmm9[1],xmm4[1],xmm9[2],xmm4[2],xmm9[3],xmm4[3]
279 ; AVX2-ONLY-NEXT:    vpshufb %xmm6, %xmm1, %xmm6
280 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm0[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
281 ; AVX2-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm9[0],xmm6[0],xmm9[1],xmm6[1],xmm9[2],xmm6[2],xmm9[3],xmm6[3]
282 ; AVX2-ONLY-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
283 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
284 ; AVX2-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
285 ; AVX2-ONLY-NEXT:    vmovd %xmm2, (%rsi)
286 ; AVX2-ONLY-NEXT:    vmovd %xmm3, (%rdx)
287 ; AVX2-ONLY-NEXT:    vmovd %xmm5, (%rcx)
288 ; AVX2-ONLY-NEXT:    vmovd %xmm7, (%r8)
289 ; AVX2-ONLY-NEXT:    vmovd %xmm4, (%r9)
290 ; AVX2-ONLY-NEXT:    vmovd %xmm6, (%r10)
291 ; AVX2-ONLY-NEXT:    vmovd %xmm0, (%rax)
292 ; AVX2-ONLY-NEXT:    retq
294 ; AVX512F-LABEL: load_i8_stride7_vf4:
295 ; AVX512F:       # %bb.0:
296 ; AVX512F-NEXT:    movq {{[0-9]+}}(%rsp), %rax
297 ; AVX512F-NEXT:    movq {{[0-9]+}}(%rsp), %r10
298 ; AVX512F-NEXT:    vmovdqa (%rdi), %xmm0
299 ; AVX512F-NEXT:    vmovdqa 16(%rdi), %xmm1
300 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm1[5,u,u,u,u,u,u,u,u,u,u,u,u]
301 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[0,7,14],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
302 ; AVX512F-NEXT:    vpor %xmm2, %xmm3, %xmm2
303 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm1[6,u,u,u,u,u,u,u,u,u,u,u,u]
304 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[1,8,15],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
305 ; AVX512F-NEXT:    vpor %xmm3, %xmm4, %xmm3
306 ; AVX512F-NEXT:    vpbroadcastd {{.*#+}} xmm4 = [2,9,0,0,2,9,0,0,2,9,0,0,2,9,0,0]
307 ; AVX512F-NEXT:    vpshufb %xmm4, %xmm0, %xmm5
308 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[0,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
309 ; AVX512F-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]
310 ; AVX512F-NEXT:    vpbroadcastd {{.*#+}} xmm6 = [3,10,0,0,3,10,0,0,3,10,0,0,3,10,0,0]
311 ; AVX512F-NEXT:    vpshufb %xmm6, %xmm0, %xmm7
312 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[1,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
313 ; AVX512F-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]
314 ; AVX512F-NEXT:    vpshufb %xmm4, %xmm1, %xmm4
315 ; AVX512F-NEXT:    vpbroadcastd {{.*#+}} xmm8 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
316 ; AVX512F-NEXT:    vpshufb %xmm8, %xmm0, %xmm9
317 ; AVX512F-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm9[0],xmm4[0],xmm9[1],xmm4[1],xmm9[2],xmm4[2],xmm9[3],xmm4[3]
318 ; AVX512F-NEXT:    vpshufb %xmm6, %xmm1, %xmm6
319 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm9 = xmm0[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
320 ; AVX512F-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm9[0],xmm6[0],xmm9[1],xmm6[1],xmm9[2],xmm6[2],xmm9[3],xmm6[3]
321 ; AVX512F-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
322 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
323 ; AVX512F-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
324 ; AVX512F-NEXT:    vmovd %xmm2, (%rsi)
325 ; AVX512F-NEXT:    vmovd %xmm3, (%rdx)
326 ; AVX512F-NEXT:    vmovd %xmm5, (%rcx)
327 ; AVX512F-NEXT:    vmovd %xmm7, (%r8)
328 ; AVX512F-NEXT:    vmovd %xmm4, (%r9)
329 ; AVX512F-NEXT:    vmovd %xmm6, (%r10)
330 ; AVX512F-NEXT:    vmovd %xmm0, (%rax)
331 ; AVX512F-NEXT:    retq
333 ; AVX512BW-LABEL: load_i8_stride7_vf4:
334 ; AVX512BW:       # %bb.0:
335 ; AVX512BW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
336 ; AVX512BW-NEXT:    movq {{[0-9]+}}(%rsp), %r10
337 ; AVX512BW-NEXT:    vmovdqa (%rdi), %xmm0
338 ; AVX512BW-NEXT:    vmovdqa 16(%rdi), %xmm1
339 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm1[5,u,u,u,u,u,u,u,u,u,u,u,u]
340 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[0,7,14],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
341 ; AVX512BW-NEXT:    vpor %xmm2, %xmm3, %xmm2
342 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm1[6,u,u,u,u,u,u,u,u,u,u,u,u]
343 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[1,8,15],zero,xmm0[u,u,u,u,u,u,u,u,u,u,u,u]
344 ; AVX512BW-NEXT:    vpor %xmm3, %xmm4, %xmm3
345 ; AVX512BW-NEXT:    vpbroadcastw {{.*#+}} xmm4 = [2,9,2,9,2,9,2,9,2,9,2,9,2,9,2,9]
346 ; AVX512BW-NEXT:    vpshufb %xmm4, %xmm0, %xmm5
347 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[0,7,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
348 ; AVX512BW-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3]
349 ; AVX512BW-NEXT:    vpbroadcastw {{.*#+}} xmm6 = [3,10,3,10,3,10,3,10,3,10,3,10,3,10,3,10]
350 ; AVX512BW-NEXT:    vpshufb %xmm6, %xmm0, %xmm7
351 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[1,8,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
352 ; AVX512BW-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]
353 ; AVX512BW-NEXT:    vpshufb %xmm4, %xmm1, %xmm4
354 ; AVX512BW-NEXT:    vpbroadcastw {{.*#+}} xmm8 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
355 ; AVX512BW-NEXT:    vpshufb %xmm8, %xmm0, %xmm9
356 ; AVX512BW-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm9[0],xmm4[0],xmm9[1],xmm4[1],xmm9[2],xmm4[2],xmm9[3],xmm4[3]
357 ; AVX512BW-NEXT:    vpshufb %xmm6, %xmm1, %xmm6
358 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm0[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
359 ; AVX512BW-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm9[0],xmm6[0],xmm9[1],xmm6[1],xmm9[2],xmm6[2],xmm9[3],xmm6[3]
360 ; AVX512BW-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
361 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
362 ; AVX512BW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
363 ; AVX512BW-NEXT:    vmovd %xmm2, (%rsi)
364 ; AVX512BW-NEXT:    vmovd %xmm3, (%rdx)
365 ; AVX512BW-NEXT:    vmovd %xmm5, (%rcx)
366 ; AVX512BW-NEXT:    vmovd %xmm7, (%r8)
367 ; AVX512BW-NEXT:    vmovd %xmm4, (%r9)
368 ; AVX512BW-NEXT:    vmovd %xmm6, (%r10)
369 ; AVX512BW-NEXT:    vmovd %xmm0, (%rax)
370 ; AVX512BW-NEXT:    retq
371   %wide.vec = load <28 x i8>, ptr %in.vec, align 64
372   %strided.vec0 = shufflevector <28 x i8> %wide.vec, <28 x i8> poison, <4 x i32> <i32 0, i32 7, i32 14, i32 21>
373   %strided.vec1 = shufflevector <28 x i8> %wide.vec, <28 x i8> poison, <4 x i32> <i32 1, i32 8, i32 15, i32 22>
374   %strided.vec2 = shufflevector <28 x i8> %wide.vec, <28 x i8> poison, <4 x i32> <i32 2, i32 9, i32 16, i32 23>
375   %strided.vec3 = shufflevector <28 x i8> %wide.vec, <28 x i8> poison, <4 x i32> <i32 3, i32 10, i32 17, i32 24>
376   %strided.vec4 = shufflevector <28 x i8> %wide.vec, <28 x i8> poison, <4 x i32> <i32 4, i32 11, i32 18, i32 25>
377   %strided.vec5 = shufflevector <28 x i8> %wide.vec, <28 x i8> poison, <4 x i32> <i32 5, i32 12, i32 19, i32 26>
378   %strided.vec6 = shufflevector <28 x i8> %wide.vec, <28 x i8> poison, <4 x i32> <i32 6, i32 13, i32 20, i32 27>
379   store <4 x i8> %strided.vec0, ptr %out.vec0, align 64
380   store <4 x i8> %strided.vec1, ptr %out.vec1, align 64
381   store <4 x i8> %strided.vec2, ptr %out.vec2, align 64
382   store <4 x i8> %strided.vec3, ptr %out.vec3, align 64
383   store <4 x i8> %strided.vec4, ptr %out.vec4, align 64
384   store <4 x i8> %strided.vec5, ptr %out.vec5, align 64
385   store <4 x i8> %strided.vec6, ptr %out.vec6, align 64
386   ret void
389 define void @load_i8_stride7_vf8(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5, ptr %out.vec6) nounwind {
390 ; SSE-LABEL: load_i8_stride7_vf8:
391 ; SSE:       # %bb.0:
392 ; SSE-NEXT:    movdqa (%rdi), %xmm3
393 ; SSE-NEXT:    movdqa 16(%rdi), %xmm4
394 ; SSE-NEXT:    movdqa 32(%rdi), %xmm6
395 ; SSE-NEXT:    movdqa 48(%rdi), %xmm0
396 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,0,65535,65535,65535,0,65535]
397 ; SSE-NEXT:    movdqa %xmm3, %xmm1
398 ; SSE-NEXT:    pand %xmm2, %xmm1
399 ; SSE-NEXT:    pandn %xmm4, %xmm2
400 ; SSE-NEXT:    movdqa %xmm4, %xmm11
401 ; SSE-NEXT:    por %xmm1, %xmm2
402 ; SSE-NEXT:    pxor %xmm1, %xmm1
403 ; SSE-NEXT:    movdqa %xmm2, %xmm5
404 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm1[8],xmm5[9],xmm1[9],xmm5[10],xmm1[10],xmm5[11],xmm1[11],xmm5[12],xmm1[12],xmm5[13],xmm1[13],xmm5[14],xmm1[14],xmm5[15],xmm1[15]
405 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,65535,65535,65535,0,65535,0,65535]
406 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
407 ; SSE-NEXT:    pxor %xmm4, %xmm4
408 ; SSE-NEXT:    pand %xmm7, %xmm2
409 ; SSE-NEXT:    pandn %xmm5, %xmm7
410 ; SSE-NEXT:    por %xmm2, %xmm7
411 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm7[0,2,1,3]
412 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,3,2,3,4,5,6,7]
413 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,3,1,1]
414 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm2[0,3,2,1,4,5,6,7]
415 ; SSE-NEXT:    packuswb %xmm7, %xmm7
416 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,0,0,0,255,255,255,255,255,255,255,255]
417 ; SSE-NEXT:    pand %xmm1, %xmm7
418 ; SSE-NEXT:    movdqa %xmm1, %xmm2
419 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [0,65535,65535,65535,65535,65535,65535,65535]
420 ; SSE-NEXT:    movdqa %xmm6, %xmm5
421 ; SSE-NEXT:    pand %xmm9, %xmm5
422 ; SSE-NEXT:    pandn %xmm0, %xmm9
423 ; SSE-NEXT:    por %xmm5, %xmm9
424 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm4[0],xmm9[1],xmm4[1],xmm9[2],xmm4[2],xmm9[3],xmm4[3],xmm9[4],xmm4[4],xmm9[5],xmm4[5],xmm9[6],xmm4[6],xmm9[7],xmm4[7]
425 ; SSE-NEXT:    movdqa %xmm6, %xmm8
426 ; SSE-NEXT:    movss {{.*#+}} xmm8 = xmm0[0],xmm8[1,2,3]
427 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,0,65535,65535,0,65535,65535,65535]
428 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
429 ; SSE-NEXT:    movdqa %xmm11, %xmm10
430 ; SSE-NEXT:    movdqa %xmm11, %xmm1
431 ; SSE-NEXT:    pand %xmm5, %xmm10
432 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [65535,65535,0,65535,65535,65535,65535,65535]
433 ; SSE-NEXT:    movdqa %xmm6, %xmm4
434 ; SSE-NEXT:    pand %xmm12, %xmm4
435 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
436 ; SSE-NEXT:    pandn %xmm0, %xmm12
437 ; SSE-NEXT:    movaps %xmm0, %xmm14
438 ; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[1,0],xmm6[0,0]
439 ; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[2,0],xmm6[2,3]
440 ; SSE-NEXT:    pand %xmm5, %xmm0
441 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
442 ; SSE-NEXT:    pandn %xmm6, %xmm5
443 ; SSE-NEXT:    movdqa %xmm6, %xmm15
444 ; SSE-NEXT:    pxor %xmm0, %xmm0
445 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm15 = xmm15[8],xmm0[8],xmm15[9],xmm0[9],xmm15[10],xmm0[10],xmm15[11],xmm0[11],xmm15[12],xmm0[12],xmm15[13],xmm0[13],xmm15[14],xmm0[14],xmm15[15],xmm0[15]
446 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm9 = xmm9[0],xmm15[0],xmm9[1],xmm15[1],xmm9[2],xmm15[2],xmm9[3],xmm15[3]
447 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm9[0,1,2,3,6,5,6,7]
448 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[0,1,2,1]
449 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm6[0,1,2,3,4,4,5,6]
450 ; SSE-NEXT:    packuswb %xmm9, %xmm9
451 ; SSE-NEXT:    movdqa %xmm2, %xmm11
452 ; SSE-NEXT:    movdqa %xmm2, %xmm13
453 ; SSE-NEXT:    pandn %xmm9, %xmm13
454 ; SSE-NEXT:    por %xmm7, %xmm13
455 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,65535,65535,0,65535,65535,0,65535]
456 ; SSE-NEXT:    movdqa %xmm7, %xmm9
457 ; SSE-NEXT:    movdqa %xmm1, %xmm4
458 ; SSE-NEXT:    pandn %xmm1, %xmm9
459 ; SSE-NEXT:    movdqa %xmm3, %xmm2
460 ; SSE-NEXT:    pand %xmm7, %xmm3
461 ; SSE-NEXT:    por %xmm9, %xmm3
462 ; SSE-NEXT:    movdqa %xmm3, %xmm9
463 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm0[0],xmm9[1],xmm0[1],xmm9[2],xmm0[2],xmm9[3],xmm0[3],xmm9[4],xmm0[4],xmm9[5],xmm0[5],xmm9[6],xmm0[6],xmm9[7],xmm0[7]
464 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,0,65535]
465 ; SSE-NEXT:    movdqa %xmm0, %xmm1
466 ; SSE-NEXT:    pandn %xmm9, %xmm1
467 ; SSE-NEXT:    pxor %xmm6, %xmm6
468 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm6[8],xmm3[9],xmm6[9],xmm3[10],xmm6[10],xmm3[11],xmm6[11],xmm3[12],xmm6[12],xmm3[13],xmm6[13],xmm3[14],xmm6[14],xmm3[15],xmm6[15]
469 ; SSE-NEXT:    pand %xmm0, %xmm3
470 ; SSE-NEXT:    por %xmm1, %xmm3
471 ; 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]
472 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,0,65535,65535,65535,65535]
473 ; SSE-NEXT:    movdqa %xmm8, %xmm9
474 ; SSE-NEXT:    pand %xmm1, %xmm9
475 ; SSE-NEXT:    pandn %xmm15, %xmm1
476 ; SSE-NEXT:    por %xmm9, %xmm1
477 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
478 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
479 ; SSE-NEXT:    packuswb %xmm1, %xmm1
480 ; SSE-NEXT:    movdqa %xmm11, %xmm9
481 ; SSE-NEXT:    pandn %xmm1, %xmm9
482 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,3,2,3]
483 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,2,4,5,6,7]
484 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
485 ; SSE-NEXT:    packuswb %xmm1, %xmm1
486 ; SSE-NEXT:    pand %xmm11, %xmm1
487 ; SSE-NEXT:    por %xmm1, %xmm9
488 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
489 ; SSE-NEXT:    pandn %xmm2, %xmm1
490 ; SSE-NEXT:    por %xmm1, %xmm10
491 ; SSE-NEXT:    movdqa %xmm10, %xmm1
492 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
493 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm6[0],xmm10[1],xmm6[1],xmm10[2],xmm6[2],xmm10[3],xmm6[3],xmm10[4],xmm6[4],xmm10[5],xmm6[5],xmm10[6],xmm6[6],xmm10[7],xmm6[7]
494 ; SSE-NEXT:    pand %xmm0, %xmm10
495 ; SSE-NEXT:    pandn %xmm1, %xmm0
496 ; SSE-NEXT:    por %xmm10, %xmm0
497 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,1,3]
498 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
499 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,3,3]
500 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,0,3,4,5,6,7]
501 ; SSE-NEXT:    packuswb %xmm0, %xmm0
502 ; SSE-NEXT:    pand %xmm11, %xmm0
503 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]
504 ; SSE-NEXT:    pand %xmm1, %xmm8
505 ; SSE-NEXT:    pandn %xmm15, %xmm1
506 ; SSE-NEXT:    por %xmm8, %xmm1
507 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
508 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
509 ; SSE-NEXT:    packuswb %xmm1, %xmm1
510 ; SSE-NEXT:    movdqa %xmm11, %xmm8
511 ; SSE-NEXT:    pandn %xmm1, %xmm8
512 ; SSE-NEXT:    por %xmm0, %xmm8
513 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,0,65535,65535]
514 ; SSE-NEXT:    movdqa %xmm4, %xmm1
515 ; SSE-NEXT:    pand %xmm0, %xmm1
516 ; SSE-NEXT:    pandn %xmm2, %xmm0
517 ; SSE-NEXT:    movdqa %xmm2, %xmm10
518 ; SSE-NEXT:    por %xmm1, %xmm0
519 ; SSE-NEXT:    movdqa %xmm0, %xmm1
520 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
521 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm6[8],xmm0[9],xmm6[9],xmm0[10],xmm6[10],xmm0[11],xmm6[11],xmm0[12],xmm6[12],xmm0[13],xmm6[13],xmm0[14],xmm6[14],xmm0[15],xmm6[15]
522 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,0,65535,0,65535,65535,65535,65535]
523 ; SSE-NEXT:    pand %xmm3, %xmm0
524 ; SSE-NEXT:    pandn %xmm1, %xmm3
525 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
526 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rdi
527 ; SSE-NEXT:    por %xmm0, %xmm3
528 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm3[3,2,1,0,4,5,6,7]
529 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,7,7,7]
530 ; SSE-NEXT:    packuswb %xmm0, %xmm0
531 ; SSE-NEXT:    pand %xmm11, %xmm0
532 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
533 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm12 = xmm12[0],xmm6[0],xmm12[1],xmm6[1],xmm12[2],xmm6[2],xmm12[3],xmm6[3],xmm12[4],xmm6[4],xmm12[5],xmm6[5],xmm12[6],xmm6[6],xmm12[7],xmm6[7]
534 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm12[0,1,2,3,7,5,6,7]
535 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm12 = xmm12[4],xmm15[4],xmm12[5],xmm15[5],xmm12[6],xmm15[6],xmm12[7],xmm15[7]
536 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm12[0,3,2,3,4,5,6,7]
537 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,0]
538 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,4,7,6]
539 ; SSE-NEXT:    packuswb %xmm3, %xmm3
540 ; SSE-NEXT:    pandn %xmm3, %xmm11
541 ; SSE-NEXT:    por %xmm0, %xmm11
542 ; SSE-NEXT:    movdqa %xmm11, %xmm6
543 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,0,65535,65535,0,65535,65535]
544 ; SSE-NEXT:    movdqa %xmm4, %xmm2
545 ; SSE-NEXT:    movdqa %xmm4, %xmm3
546 ; SSE-NEXT:    pand %xmm0, %xmm3
547 ; SSE-NEXT:    movdqa %xmm10, %xmm11
548 ; SSE-NEXT:    pandn %xmm10, %xmm0
549 ; SSE-NEXT:    por %xmm3, %xmm0
550 ; SSE-NEXT:    movdqa %xmm0, %xmm3
551 ; SSE-NEXT:    pxor %xmm4, %xmm4
552 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm4[8],xmm3[9],xmm4[9],xmm3[10],xmm4[10],xmm3[11],xmm4[11],xmm3[12],xmm4[12],xmm3[13],xmm4[13],xmm3[14],xmm4[14],xmm3[15],xmm4[15]
553 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]
554 ; 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]
555 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
556 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
557 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
558 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
559 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,4,6,5]
560 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,65535,65535,65535,65535,0,65535]
561 ; SSE-NEXT:    pand %xmm3, %xmm1
562 ; SSE-NEXT:    pandn %xmm15, %xmm3
563 ; SSE-NEXT:    por %xmm1, %xmm3
564 ; SSE-NEXT:    packuswb %xmm3, %xmm0
565 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm0[0,3,2,3]
566 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm11[1,3,2,3]
567 ; SSE-NEXT:    movdqa %xmm11, %xmm3
568 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,2,2,3]
569 ; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
570 ; SSE-NEXT:    movdqa %xmm1, %xmm0
571 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm4[8],xmm0[9],xmm4[9],xmm0[10],xmm4[10],xmm0[11],xmm4[11],xmm0[12],xmm4[12],xmm0[13],xmm4[13],xmm0[14],xmm4[14],xmm0[15],xmm4[15]
572 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
573 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
574 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1],xmm1[2],xmm4[2],xmm1[3],xmm4[3],xmm1[4],xmm4[4],xmm1[5],xmm4[5],xmm1[6],xmm4[6],xmm1[7],xmm4[7]
575 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]
576 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,3,2,3,4,5,6,7]
577 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
578 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [0,65535,65535,65535,65535,65535,65535,0]
579 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm4[0],xmm14[1],xmm4[1],xmm14[2],xmm4[2],xmm14[3],xmm4[3],xmm14[4],xmm4[4],xmm14[5],xmm4[5],xmm14[6],xmm4[6],xmm14[7],xmm4[7]
580 ; SSE-NEXT:    pand %xmm0, %xmm14
581 ; SSE-NEXT:    pandn %xmm15, %xmm0
582 ; SSE-NEXT:    por %xmm14, %xmm0
583 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
584 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,4,7,6]
585 ; SSE-NEXT:    packuswb %xmm0, %xmm1
586 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm1[0,3,2,3]
587 ; SSE-NEXT:    movdqa %xmm2, %xmm0
588 ; SSE-NEXT:    pand %xmm7, %xmm0
589 ; SSE-NEXT:    pandn %xmm3, %xmm7
590 ; SSE-NEXT:    por %xmm0, %xmm7
591 ; SSE-NEXT:    movdqa %xmm7, %xmm0
592 ; 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]
593 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,6,7]
594 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm4[8],xmm7[9],xmm4[9],xmm7[10],xmm4[10],xmm7[11],xmm4[11],xmm7[12],xmm4[12],xmm7[13],xmm4[13],xmm7[14],xmm4[14],xmm7[15],xmm4[15]
595 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[0,1,2,1]
596 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,7,6,7]
597 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
598 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
599 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]
600 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,0,65535,65535,65535,65535,65535,65535]
601 ; SSE-NEXT:    pand %xmm1, %xmm5
602 ; SSE-NEXT:    pandn %xmm15, %xmm1
603 ; SSE-NEXT:    por %xmm5, %xmm1
604 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
605 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
606 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
607 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,5]
608 ; SSE-NEXT:    packuswb %xmm1, %xmm0
609 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
610 ; SSE-NEXT:    movq %xmm13, (%rsi)
611 ; SSE-NEXT:    movq %xmm9, (%rdx)
612 ; SSE-NEXT:    movq %xmm8, (%rcx)
613 ; SSE-NEXT:    movq %xmm6, (%r8)
614 ; SSE-NEXT:    movq %xmm10, (%r9)
615 ; SSE-NEXT:    movq %xmm11, (%rdi)
616 ; SSE-NEXT:    movq %xmm0, (%rax)
617 ; SSE-NEXT:    retq
619 ; AVX1-ONLY-LABEL: load_i8_stride7_vf8:
620 ; AVX1-ONLY:       # %bb.0:
621 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
622 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %r10
623 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm0
624 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm1
625 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm2
626 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm3
627 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm1[5,12,u,u,u,u,u,u,u,u,u,u,u]
628 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[0,7,14],zero,zero,xmm0[u,u,u,u,u,u,u,u,u,u,u]
629 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm5, %xmm4
630 ; AVX1-ONLY-NEXT:    vpalignr {{.*#+}} xmm5 = xmm2[3,4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2]
631 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm6 = [0,0,7,14,0,0,7,14,0,0,7,14,0,0,7,14]
632 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm5, %xmm5
633 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = [255,255,255,255,255,0,0,0,255,255,255,255,255,0,0,0]
634 ; AVX1-ONLY-NEXT:    # xmm7 = mem[0,0]
635 ; AVX1-ONLY-NEXT:    vpblendvb %xmm7, %xmm4, %xmm5, %xmm4
636 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm1[6,13,u,u,u,u,u,u,u,u,u,u,u]
637 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm0[1,8,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u,u,u]
638 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm8, %xmm5
639 ; AVX1-ONLY-NEXT:    vpalignr {{.*#+}} xmm8 = xmm2[4,5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3]
640 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm8, %xmm8
641 ; AVX1-ONLY-NEXT:    vpblendvb %xmm7, %xmm5, %xmm8, %xmm5
642 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm0[2,9],zero,zero,zero,xmm0[u,u,u,u,u,u,u,u,u,u,u]
643 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,xmm1[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
644 ; AVX1-ONLY-NEXT:    vpor %xmm8, %xmm9, %xmm8
645 ; AVX1-ONLY-NEXT:    vpalignr {{.*#+}} xmm9 = xmm2[5,6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4]
646 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm9, %xmm9
647 ; AVX1-ONLY-NEXT:    vpblendvb %xmm7, %xmm8, %xmm9, %xmm8
648 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm0[3,10],zero,zero,zero,xmm0[u,u,u,u,u,u,u,u,u,u,u]
649 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,xmm1[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
650 ; AVX1-ONLY-NEXT:    vpor %xmm9, %xmm10, %xmm9
651 ; AVX1-ONLY-NEXT:    vpalignr {{.*#+}} xmm10 = xmm2[6,7,8,9,10,11,12,13,14,15],xmm3[0,1,2,3,4,5]
652 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm10, %xmm6
653 ; AVX1-ONLY-NEXT:    vpblendvb %xmm7, %xmm9, %xmm6, %xmm6
654 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm3[u,u,u,u],zero,zero,zero,xmm3[5,u,u,u,u,u,u,u,u]
655 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm2[u,u,u,u,0,7,14],zero,xmm2[u,u,u,u,u,u,u,u]
656 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm9, %xmm7
657 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm9 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
658 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm0, %xmm10
659 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm1[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
660 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1],xmm10[2],xmm11[2],xmm10[3],xmm11[3]
661 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm10[0,1],xmm7[2,3],xmm10[4,5,6,7]
662 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm3[u,u,u,u],zero,zero,zero,xmm3[6,u,u,u,u,u,u,u,u]
663 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm2[u,u,u,u,1,8,15],zero,xmm2[u,u,u,u,u,u,u,u]
664 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm11, %xmm10
665 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm1[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
666 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm0[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
667 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm11 = xmm12[0],xmm11[0],xmm12[1],xmm11[1],xmm12[2],xmm11[2],xmm12[3],xmm11[3]
668 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm10 = xmm11[0,1],xmm10[2,3],xmm11[4,5,6,7]
669 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,0,7,u,u,u,u,u,u,u,u,u,u,u,u]
670 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,2,9,u,u,u,u,u,u,u,u,u,u,u,u]
671 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
672 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm1, %xmm1
673 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
674 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
675 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm2[2,3],xmm0[4,5,6,7]
676 ; AVX1-ONLY-NEXT:    vmovq %xmm4, (%rsi)
677 ; AVX1-ONLY-NEXT:    vmovq %xmm5, (%rdx)
678 ; AVX1-ONLY-NEXT:    vmovq %xmm8, (%rcx)
679 ; AVX1-ONLY-NEXT:    vmovq %xmm6, (%r8)
680 ; AVX1-ONLY-NEXT:    vmovq %xmm7, (%r9)
681 ; AVX1-ONLY-NEXT:    vmovq %xmm10, (%r10)
682 ; AVX1-ONLY-NEXT:    vmovq %xmm0, (%rax)
683 ; AVX1-ONLY-NEXT:    retq
685 ; AVX2-ONLY-LABEL: load_i8_stride7_vf8:
686 ; AVX2-ONLY:       # %bb.0:
687 ; AVX2-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
688 ; AVX2-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %r10
689 ; AVX2-ONLY-NEXT:    vmovdqa (%rdi), %ymm0
690 ; AVX2-ONLY-NEXT:    vmovdqa 32(%rdi), %ymm1
691 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,u,u,u,u,255,255,u,u>
692 ; AVX2-ONLY-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm2
693 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm2, %xmm3
694 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[5,12],zero,zero,xmm3[1,u,u,u,u,u,u,u,u]
695 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0,7,14],zero,zero,xmm2[3,10],zero,xmm2[u,u,u,u,u,u,u,u]
696 ; AVX2-ONLY-NEXT:    vpor %xmm3, %xmm2, %xmm2
697 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} ymm3 = ymm0[0],ymm1[1,2],ymm0[3,4],ymm1[5],ymm0[6,7,8],ymm1[9,10],ymm0[11,12],ymm1[13],ymm0[14,15]
698 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm3, %xmm4
699 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[6,13],zero,zero,xmm4[2,u,u,u,u,u,u,u,u]
700 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[1,8,15],zero,zero,xmm3[4,11],zero,xmm3[u,u,u,u,u,u,u,u]
701 ; AVX2-ONLY-NEXT:    vpor %xmm4, %xmm3, %xmm3
702 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm4 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,u,u,u,u,255,255>
703 ; AVX2-ONLY-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm4
704 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm4, %xmm5
705 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm5[0,7,14],zero,zero,xmm5[3,u,u,u,u,u,u,u,u]
706 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[2,9],zero,zero,zero,xmm4[5,12],zero,xmm4[u,u,u,u,u,u,u,u]
707 ; AVX2-ONLY-NEXT:    vpor %xmm5, %xmm4, %xmm4
708 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} ymm5 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6,7]
709 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm5, %xmm6
710 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm6[1,8,15],zero,zero,xmm6[4,u,u,u,u,u,u,u,u]
711 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[3,10],zero,zero,zero,xmm5[6,13],zero,xmm5[u,u,u,u,u,u,u,u]
712 ; AVX2-ONLY-NEXT:    vpor %xmm6, %xmm5, %xmm5
713 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm6 = <255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,u,u,u,u>
714 ; AVX2-ONLY-NEXT:    vpblendvb %ymm6, %ymm1, %ymm0, %ymm6
715 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm6, %xmm7
716 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm7[2,9],zero,zero,zero,xmm7[5,u,u,u,u,u,u,u,u]
717 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[4,11],zero,zero,xmm6[0,7,14],zero,xmm6[u,u,u,u,u,u,u,u]
718 ; AVX2-ONLY-NEXT:    vpor %xmm7, %xmm6, %xmm6
719 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} ymm7 = ymm1[0],ymm0[1,2],ymm1[3,4],ymm0[5,6],ymm1[7,8],ymm0[9,10],ymm1[11,12],ymm0[13,14],ymm1[15]
720 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm7, %xmm8
721 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm8[3,10],zero,zero,zero,xmm8[6,u,u,u,u,u,u,u,u]
722 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[5,12],zero,zero,xmm7[1,8,15],zero,xmm7[u,u,u,u,u,u,u,u]
723 ; AVX2-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm7
724 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm8 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,u,u>
725 ; AVX2-ONLY-NEXT:    vpblendvb %ymm8, %ymm1, %ymm0, %ymm0
726 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm0, %xmm1
727 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[4,11,0,7,u,u,u,u,u,u,u,u,u,u,u,u]
728 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,13,2,9,u,u,u,u,u,u,u,u,u,u,u,u]
729 ; AVX2-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
730 ; AVX2-ONLY-NEXT:    vmovq %xmm2, (%rsi)
731 ; AVX2-ONLY-NEXT:    vmovq %xmm3, (%rdx)
732 ; AVX2-ONLY-NEXT:    vmovq %xmm4, (%rcx)
733 ; AVX2-ONLY-NEXT:    vmovq %xmm5, (%r8)
734 ; AVX2-ONLY-NEXT:    vmovq %xmm6, (%r9)
735 ; AVX2-ONLY-NEXT:    vmovq %xmm7, (%r10)
736 ; AVX2-ONLY-NEXT:    vmovq %xmm0, (%rax)
737 ; AVX2-ONLY-NEXT:    vzeroupper
738 ; AVX2-ONLY-NEXT:    retq
740 ; AVX512F-LABEL: load_i8_stride7_vf8:
741 ; AVX512F:       # %bb.0:
742 ; AVX512F-NEXT:    movq {{[0-9]+}}(%rsp), %rax
743 ; AVX512F-NEXT:    movq {{[0-9]+}}(%rsp), %r10
744 ; AVX512F-NEXT:    vmovdqa (%rdi), %ymm0
745 ; AVX512F-NEXT:    vmovdqa 32(%rdi), %ymm1
746 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm2 = [65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,65535,65535,65535,65535]
747 ; AVX512F-NEXT:    vpternlogq $202, %ymm1, %ymm0, %ymm2
748 ; AVX512F-NEXT:    vextracti128 $1, %ymm2, %xmm3
749 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[5,12],zero,zero,xmm3[1,u,u,u,u,u,u,u,u]
750 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0,7,14],zero,zero,xmm2[3,10],zero,xmm2[u,u,u,u,u,u,u,u]
751 ; AVX512F-NEXT:    vpor %xmm3, %xmm2, %xmm2
752 ; AVX512F-NEXT:    vpblendw {{.*#+}} ymm3 = ymm0[0],ymm1[1,2],ymm0[3,4],ymm1[5],ymm0[6,7,8],ymm1[9,10],ymm0[11,12],ymm1[13],ymm0[14,15]
753 ; AVX512F-NEXT:    vextracti128 $1, %ymm3, %xmm4
754 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[6,13],zero,zero,xmm4[2,u,u,u,u,u,u,u,u]
755 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[1,8,15],zero,zero,xmm3[4,11],zero,xmm3[u,u,u,u,u,u,u,u]
756 ; AVX512F-NEXT:    vpor %xmm4, %xmm3, %xmm3
757 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm4 = [65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,65535,65535,65535]
758 ; AVX512F-NEXT:    vpternlogq $202, %ymm1, %ymm0, %ymm4
759 ; AVX512F-NEXT:    vextracti128 $1, %ymm4, %xmm5
760 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm5[0,7,14],zero,zero,xmm5[3,u,u,u,u,u,u,u,u]
761 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[2,9],zero,zero,zero,xmm4[5,12],zero,xmm4[u,u,u,u,u,u,u,u]
762 ; AVX512F-NEXT:    vpor %xmm5, %xmm4, %xmm4
763 ; AVX512F-NEXT:    vpblendd {{.*#+}} ymm5 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6,7]
764 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm6
765 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm6[1,8,15],zero,zero,xmm6[4,u,u,u,u,u,u,u,u]
766 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[3,10],zero,zero,zero,xmm5[6,13],zero,xmm5[u,u,u,u,u,u,u,u]
767 ; AVX512F-NEXT:    vpor %xmm6, %xmm5, %xmm5
768 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm6 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535]
769 ; AVX512F-NEXT:    vpternlogq $202, %ymm0, %ymm1, %ymm6
770 ; AVX512F-NEXT:    vextracti128 $1, %ymm6, %xmm7
771 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm7[2,9],zero,zero,zero,xmm7[5,u,u,u,u,u,u,u,u]
772 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[4,11],zero,zero,xmm6[0,7,14],zero,xmm6[u,u,u,u,u,u,u,u]
773 ; AVX512F-NEXT:    vpor %xmm7, %xmm6, %xmm6
774 ; AVX512F-NEXT:    vpblendw {{.*#+}} ymm7 = ymm1[0],ymm0[1,2],ymm1[3,4],ymm0[5,6],ymm1[7,8],ymm0[9,10],ymm1[11,12],ymm0[13,14],ymm1[15]
775 ; AVX512F-NEXT:    vextracti128 $1, %ymm7, %xmm8
776 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm8[3,10],zero,zero,zero,xmm8[6,u,u,u,u,u,u,u,u]
777 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[5,12],zero,zero,xmm7[1,8,15],zero,xmm7[u,u,u,u,u,u,u,u]
778 ; AVX512F-NEXT:    vpor %xmm7, %xmm8, %xmm7
779 ; AVX512F-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0
780 ; AVX512F-NEXT:    vextracti128 $1, %ymm0, %xmm1
781 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[4,11,0,7,u,u,u,u,u,u,u,u,u,u,u,u]
782 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,13,2,9,u,u,u,u,u,u,u,u,u,u,u,u]
783 ; AVX512F-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
784 ; AVX512F-NEXT:    vmovq %xmm2, (%rsi)
785 ; AVX512F-NEXT:    vmovq %xmm3, (%rdx)
786 ; AVX512F-NEXT:    vmovq %xmm4, (%rcx)
787 ; AVX512F-NEXT:    vmovq %xmm5, (%r8)
788 ; AVX512F-NEXT:    vmovq %xmm6, (%r9)
789 ; AVX512F-NEXT:    vmovq %xmm7, (%r10)
790 ; AVX512F-NEXT:    vmovq %xmm0, (%rax)
791 ; AVX512F-NEXT:    vzeroupper
792 ; AVX512F-NEXT:    retq
794 ; AVX512BW-LABEL: load_i8_stride7_vf8:
795 ; AVX512BW:       # %bb.0:
796 ; AVX512BW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
797 ; AVX512BW-NEXT:    movq {{[0-9]+}}(%rsp), %r10
798 ; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm1
799 ; AVX512BW-NEXT:    vmovdqa 32(%rdi), %ymm0
800 ; AVX512BW-NEXT:    movw $290, %di # imm = 0x122
801 ; AVX512BW-NEXT:    kmovd %edi, %k1
802 ; AVX512BW-NEXT:    vpblendmw %ymm0, %ymm1, %ymm2 {%k1}
803 ; AVX512BW-NEXT:    vextracti128 $1, %ymm2, %xmm3
804 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[5,12],zero,zero,xmm3[1,u,u,u,u,u,u,u,u]
805 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0,7,14],zero,zero,xmm2[3,10],zero,xmm2[u,u,u,u,u,u,u,u]
806 ; AVX512BW-NEXT:    vpor %xmm3, %xmm2, %xmm2
807 ; AVX512BW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm1[0],ymm0[1,2],ymm1[3,4],ymm0[5],ymm1[6,7,8],ymm0[9,10],ymm1[11,12],ymm0[13],ymm1[14,15]
808 ; AVX512BW-NEXT:    vextracti128 $1, %ymm3, %xmm4
809 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[6,13],zero,zero,xmm4[2,u,u,u,u,u,u,u,u]
810 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[1,8,15],zero,zero,xmm3[4,11],zero,xmm3[u,u,u,u,u,u,u,u]
811 ; AVX512BW-NEXT:    vpor %xmm4, %xmm3, %xmm3
812 ; AVX512BW-NEXT:    movw $580, %di # imm = 0x244
813 ; AVX512BW-NEXT:    kmovd %edi, %k1
814 ; AVX512BW-NEXT:    vpblendmw %ymm0, %ymm1, %ymm4 {%k1}
815 ; AVX512BW-NEXT:    vextracti128 $1, %ymm4, %xmm5
816 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm5[0,7,14],zero,zero,xmm5[3,u,u,u,u,u,u,u,u]
817 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[2,9],zero,zero,zero,xmm4[5,12],zero,xmm4[u,u,u,u,u,u,u,u]
818 ; AVX512BW-NEXT:    vpor %xmm5, %xmm4, %xmm4
819 ; AVX512BW-NEXT:    vpblendd {{.*#+}} ymm5 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4],ymm0[5],ymm1[6,7]
820 ; AVX512BW-NEXT:    vextracti128 $1, %ymm5, %xmm6
821 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm6[1,8,15],zero,zero,xmm6[4,u,u,u,u,u,u,u,u]
822 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[3,10],zero,zero,zero,xmm5[6,13],zero,xmm5[u,u,u,u,u,u,u,u]
823 ; AVX512BW-NEXT:    vpor %xmm6, %xmm5, %xmm5
824 ; AVX512BW-NEXT:    movw $4644, %di # imm = 0x1224
825 ; AVX512BW-NEXT:    kmovd %edi, %k1
826 ; AVX512BW-NEXT:    vpblendmw %ymm1, %ymm0, %ymm6 {%k1}
827 ; AVX512BW-NEXT:    vextracti128 $1, %ymm6, %xmm7
828 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm7[2,9],zero,zero,zero,xmm7[5,u,u,u,u,u,u,u,u]
829 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[4,11],zero,zero,xmm6[0,7,14],zero,xmm6[u,u,u,u,u,u,u,u]
830 ; AVX512BW-NEXT:    vpor %xmm7, %xmm6, %xmm6
831 ; AVX512BW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm0[0],ymm1[1,2],ymm0[3,4],ymm1[5,6],ymm0[7,8],ymm1[9,10],ymm0[11,12],ymm1[13,14],ymm0[15]
832 ; AVX512BW-NEXT:    vextracti128 $1, %ymm7, %xmm8
833 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm8[3,10],zero,zero,zero,xmm8[6,u,u,u,u,u,u,u,u]
834 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[5,12],zero,zero,xmm7[1,8,15],zero,xmm7[u,u,u,u,u,u,u,u]
835 ; AVX512BW-NEXT:    vpor %xmm7, %xmm8, %xmm7
836 ; AVX512BW-NEXT:    movw $9288, %di # imm = 0x2448
837 ; AVX512BW-NEXT:    kmovd %edi, %k1
838 ; AVX512BW-NEXT:    vmovdqu16 %ymm1, %ymm0 {%k1}
839 ; AVX512BW-NEXT:    vextracti128 $1, %ymm0, %xmm1
840 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[4,11,0,7,u,u,u,u,u,u,u,u,u,u,u,u]
841 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[6,13,2,9,u,u,u,u,u,u,u,u,u,u,u,u]
842 ; AVX512BW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
843 ; AVX512BW-NEXT:    vmovq %xmm2, (%rsi)
844 ; AVX512BW-NEXT:    vmovq %xmm3, (%rdx)
845 ; AVX512BW-NEXT:    vmovq %xmm4, (%rcx)
846 ; AVX512BW-NEXT:    vmovq %xmm5, (%r8)
847 ; AVX512BW-NEXT:    vmovq %xmm6, (%r9)
848 ; AVX512BW-NEXT:    vmovq %xmm7, (%r10)
849 ; AVX512BW-NEXT:    vmovq %xmm0, (%rax)
850 ; AVX512BW-NEXT:    vzeroupper
851 ; AVX512BW-NEXT:    retq
852   %wide.vec = load <56 x i8>, ptr %in.vec, align 64
853   %strided.vec0 = shufflevector <56 x i8> %wide.vec, <56 x i8> poison, <8 x i32> <i32 0, i32 7, i32 14, i32 21, i32 28, i32 35, i32 42, i32 49>
854   %strided.vec1 = shufflevector <56 x i8> %wide.vec, <56 x i8> poison, <8 x i32> <i32 1, i32 8, i32 15, i32 22, i32 29, i32 36, i32 43, i32 50>
855   %strided.vec2 = shufflevector <56 x i8> %wide.vec, <56 x i8> poison, <8 x i32> <i32 2, i32 9, i32 16, i32 23, i32 30, i32 37, i32 44, i32 51>
856   %strided.vec3 = shufflevector <56 x i8> %wide.vec, <56 x i8> poison, <8 x i32> <i32 3, i32 10, i32 17, i32 24, i32 31, i32 38, i32 45, i32 52>
857   %strided.vec4 = shufflevector <56 x i8> %wide.vec, <56 x i8> poison, <8 x i32> <i32 4, i32 11, i32 18, i32 25, i32 32, i32 39, i32 46, i32 53>
858   %strided.vec5 = shufflevector <56 x i8> %wide.vec, <56 x i8> poison, <8 x i32> <i32 5, i32 12, i32 19, i32 26, i32 33, i32 40, i32 47, i32 54>
859   %strided.vec6 = shufflevector <56 x i8> %wide.vec, <56 x i8> poison, <8 x i32> <i32 6, i32 13, i32 20, i32 27, i32 34, i32 41, i32 48, i32 55>
860   store <8 x i8> %strided.vec0, ptr %out.vec0, align 64
861   store <8 x i8> %strided.vec1, ptr %out.vec1, align 64
862   store <8 x i8> %strided.vec2, ptr %out.vec2, align 64
863   store <8 x i8> %strided.vec3, ptr %out.vec3, align 64
864   store <8 x i8> %strided.vec4, ptr %out.vec4, align 64
865   store <8 x i8> %strided.vec5, ptr %out.vec5, align 64
866   store <8 x i8> %strided.vec6, ptr %out.vec6, align 64
867   ret void
870 define void @load_i8_stride7_vf16(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5, ptr %out.vec6) nounwind {
871 ; SSE-LABEL: load_i8_stride7_vf16:
872 ; SSE:       # %bb.0:
873 ; SSE-NEXT:    subq $168, %rsp
874 ; SSE-NEXT:    movdqa 96(%rdi), %xmm15
875 ; SSE-NEXT:    movdqa 80(%rdi), %xmm4
876 ; SSE-NEXT:    movdqa 64(%rdi), %xmm7
877 ; SSE-NEXT:    movdqa (%rdi), %xmm6
878 ; SSE-NEXT:    movdqa 16(%rdi), %xmm3
879 ; SSE-NEXT:    movdqa 32(%rdi), %xmm1
880 ; SSE-NEXT:    movdqa 48(%rdi), %xmm8
881 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,0,65535,65535,65535,0,65535,65535]
882 ; SSE-NEXT:    movdqa %xmm2, %xmm0
883 ; SSE-NEXT:    pandn %xmm1, %xmm0
884 ; SSE-NEXT:    movdqa %xmm1, %xmm12
885 ; SSE-NEXT:    movdqa %xmm8, %xmm1
886 ; SSE-NEXT:    pand %xmm2, %xmm1
887 ; SSE-NEXT:    por %xmm0, %xmm1
888 ; SSE-NEXT:    pxor %xmm13, %xmm13
889 ; SSE-NEXT:    movdqa %xmm1, %xmm0
890 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm13[8],xmm0[9],xmm13[9],xmm0[10],xmm13[10],xmm0[11],xmm13[11],xmm0[12],xmm13[12],xmm0[13],xmm13[13],xmm0[14],xmm13[14],xmm0[15],xmm13[15]
891 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm13[0],xmm1[1],xmm13[1],xmm1[2],xmm13[2],xmm1[3],xmm13[3],xmm1[4],xmm13[4],xmm1[5],xmm13[5],xmm1[6],xmm13[6],xmm1[7],xmm13[7]
892 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
893 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
894 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
895 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,5,6]
896 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
897 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
898 ; SSE-NEXT:    packuswb %xmm0, %xmm1
899 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [255,255,255,255,255,0,0,0,0,0,255,255,255,255,255,255]
900 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,0,65535,65535,65535,0,65535]
901 ; SSE-NEXT:    movdqa %xmm10, %xmm0
902 ; SSE-NEXT:    pandn %xmm3, %xmm0
903 ; SSE-NEXT:    movdqa %xmm3, %xmm9
904 ; SSE-NEXT:    movdqa %xmm6, %xmm3
905 ; SSE-NEXT:    movdqa %xmm6, %xmm11
906 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
907 ; SSE-NEXT:    pand %xmm10, %xmm3
908 ; SSE-NEXT:    por %xmm0, %xmm3
909 ; SSE-NEXT:    movdqa %xmm3, %xmm0
910 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm13[8],xmm0[9],xmm13[9],xmm0[10],xmm13[10],xmm0[11],xmm13[11],xmm0[12],xmm13[12],xmm0[13],xmm13[13],xmm0[14],xmm13[14],xmm0[15],xmm13[15]
911 ; SSE-NEXT:    movdqa {{.*#+}} xmm14 = [65535,65535,65535,65535,0,65535,0,65535]
912 ; SSE-NEXT:    movdqa %xmm14, %xmm6
913 ; SSE-NEXT:    pandn %xmm0, %xmm6
914 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm13[0],xmm3[1],xmm13[1],xmm3[2],xmm13[2],xmm3[3],xmm13[3],xmm3[4],xmm13[4],xmm3[5],xmm13[5],xmm3[6],xmm13[6],xmm3[7],xmm13[7]
915 ; SSE-NEXT:    pand %xmm14, %xmm3
916 ; SSE-NEXT:    por %xmm6, %xmm3
917 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,2,1,3]
918 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
919 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,1,1]
920 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,1,4,5,6,7]
921 ; SSE-NEXT:    packuswb %xmm0, %xmm0
922 ; SSE-NEXT:    pand %xmm2, %xmm0
923 ; SSE-NEXT:    pandn %xmm1, %xmm2
924 ; SSE-NEXT:    por %xmm2, %xmm0
925 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,65535,0,65535,65535,0,65535]
926 ; SSE-NEXT:    movdqa %xmm3, %xmm1
927 ; SSE-NEXT:    pandn %xmm7, %xmm1
928 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
929 ; SSE-NEXT:    movdqa %xmm4, %xmm2
930 ; SSE-NEXT:    movdqa %xmm4, %xmm5
931 ; SSE-NEXT:    pand %xmm3, %xmm2
932 ; SSE-NEXT:    movdqa %xmm3, %xmm13
933 ; SSE-NEXT:    por %xmm1, %xmm2
934 ; SSE-NEXT:    movdqa %xmm2, %xmm1
935 ; SSE-NEXT:    pxor %xmm6, %xmm6
936 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
937 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,4,7]
938 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm6[8],xmm2[9],xmm6[9],xmm2[10],xmm6[10],xmm2[11],xmm6[11],xmm2[12],xmm6[12],xmm2[13],xmm6[13],xmm2[14],xmm6[14],xmm2[15],xmm6[15]
939 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
940 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7]
941 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
942 ; SSE-NEXT:    movdqa %xmm15, %xmm2
943 ; SSE-NEXT:    movdqa %xmm15, %xmm3
944 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm6[8],xmm3[9],xmm6[9],xmm3[10],xmm6[10],xmm3[11],xmm6[11],xmm3[12],xmm6[12],xmm3[13],xmm6[13],xmm3[14],xmm6[14],xmm3[15],xmm6[15]
945 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
946 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
947 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
948 ; SSE-NEXT:    pxor %xmm15, %xmm15
949 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
950 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
951 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]
952 ; SSE-NEXT:    packuswb %xmm2, %xmm2
953 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,65535,65535,65535,0]
954 ; SSE-NEXT:    movdqa %xmm4, %xmm3
955 ; SSE-NEXT:    pandn %xmm2, %xmm3
956 ; SSE-NEXT:    packuswb %xmm1, %xmm1
957 ; SSE-NEXT:    pand %xmm4, %xmm1
958 ; SSE-NEXT:    por %xmm1, %xmm3
959 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,65535,0,0,0]
960 ; SSE-NEXT:    pand %xmm1, %xmm0
961 ; SSE-NEXT:    pandn %xmm3, %xmm1
962 ; SSE-NEXT:    por %xmm0, %xmm1
963 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
964 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,0,65535,65535,0,65535,65535]
965 ; SSE-NEXT:    movdqa %xmm2, %xmm0
966 ; SSE-NEXT:    pandn %xmm12, %xmm0
967 ; SSE-NEXT:    movdqa %xmm8, %xmm1
968 ; SSE-NEXT:    pand %xmm2, %xmm1
969 ; SSE-NEXT:    por %xmm0, %xmm1
970 ; SSE-NEXT:    movdqa %xmm1, %xmm0
971 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm15[8],xmm0[9],xmm15[9],xmm0[10],xmm15[10],xmm0[11],xmm15[11],xmm0[12],xmm15[12],xmm0[13],xmm15[13],xmm0[14],xmm15[14],xmm0[15],xmm15[15]
972 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm15[0],xmm1[1],xmm15[1],xmm1[2],xmm15[2],xmm1[3],xmm15[3],xmm1[4],xmm15[4],xmm1[5],xmm15[5],xmm1[6],xmm15[6],xmm1[7],xmm15[7]
973 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,65535,65535]
974 ; SSE-NEXT:    pand %xmm2, %xmm1
975 ; SSE-NEXT:    pandn %xmm0, %xmm2
976 ; SSE-NEXT:    por %xmm1, %xmm2
977 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,1,2,1]
978 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
979 ; SSE-NEXT:    psrld $16, %xmm0
980 ; SSE-NEXT:    packuswb %xmm0, %xmm1
981 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255]
982 ; SSE-NEXT:    movdqa %xmm4, %xmm0
983 ; SSE-NEXT:    pandn %xmm1, %xmm0
984 ; SSE-NEXT:    movdqa %xmm13, %xmm1
985 ; SSE-NEXT:    pandn %xmm9, %xmm1
986 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
987 ; SSE-NEXT:    movdqa %xmm11, %xmm2
988 ; SSE-NEXT:    pand %xmm13, %xmm2
989 ; SSE-NEXT:    movdqa %xmm13, %xmm11
990 ; SSE-NEXT:    por %xmm1, %xmm2
991 ; SSE-NEXT:    movdqa %xmm2, %xmm1
992 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm15[0],xmm1[1],xmm15[1],xmm1[2],xmm15[2],xmm1[3],xmm15[3],xmm1[4],xmm15[4],xmm1[5],xmm15[5],xmm1[6],xmm15[6],xmm1[7],xmm15[7]
993 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [65535,0,65535,65535,65535,65535,0,65535]
994 ; SSE-NEXT:    movdqa %xmm6, %xmm3
995 ; SSE-NEXT:    pandn %xmm1, %xmm3
996 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm15[8],xmm2[9],xmm15[9],xmm2[10],xmm15[10],xmm2[11],xmm15[11],xmm2[12],xmm15[12],xmm2[13],xmm15[13],xmm2[14],xmm15[14],xmm2[15],xmm15[15]
997 ; SSE-NEXT:    pand %xmm6, %xmm2
998 ; SSE-NEXT:    por %xmm3, %xmm2
999 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,3,2,3]
1000 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,2,4,5,6,7]
1001 ; SSE-NEXT:    pshufhw {{.*#+}} xmm13 = xmm1[0,1,2,3,5,5,5,5]
1002 ; SSE-NEXT:    packuswb %xmm13, %xmm13
1003 ; SSE-NEXT:    pand %xmm4, %xmm13
1004 ; SSE-NEXT:    por %xmm0, %xmm13
1005 ; SSE-NEXT:    movdqa %xmm10, %xmm0
1006 ; SSE-NEXT:    pandn %xmm5, %xmm0
1007 ; SSE-NEXT:    movdqa %xmm5, %xmm6
1008 ; SSE-NEXT:    movdqa %xmm7, %xmm1
1009 ; SSE-NEXT:    pand %xmm10, %xmm1
1010 ; SSE-NEXT:    por %xmm0, %xmm1
1011 ; SSE-NEXT:    movdqa %xmm1, %xmm0
1012 ; SSE-NEXT:    pxor %xmm2, %xmm2
1013 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]
1014 ; 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]
1015 ; SSE-NEXT:    pand %xmm14, %xmm1
1016 ; SSE-NEXT:    pandn %xmm0, %xmm14
1017 ; SSE-NEXT:    por %xmm1, %xmm14
1018 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1019 ; SSE-NEXT:    movdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1020 ; SSE-NEXT:    movdqa %xmm12, %xmm0
1021 ; SSE-NEXT:    pand %xmm10, %xmm0
1022 ; SSE-NEXT:    pandn %xmm8, %xmm10
1023 ; SSE-NEXT:    por %xmm0, %xmm10
1024 ; SSE-NEXT:    movdqa {{.*#+}} xmm14 = [65535,0,65535,65535,0,65535,65535,65535]
1025 ; SSE-NEXT:    movdqa %xmm9, %xmm7
1026 ; SSE-NEXT:    pand %xmm14, %xmm7
1027 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1028 ; SSE-NEXT:    movdqa %xmm6, %xmm15
1029 ; SSE-NEXT:    pand %xmm14, %xmm15
1030 ; SSE-NEXT:    movdqa %xmm11, %xmm3
1031 ; SSE-NEXT:    pandn %xmm8, %xmm3
1032 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1033 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm8[0,2,2,3]
1034 ; SSE-NEXT:    movdqa %xmm8, %xmm4
1035 ; SSE-NEXT:    pand %xmm14, %xmm8
1036 ; SSE-NEXT:    movdqa %xmm14, %xmm9
1037 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1038 ; SSE-NEXT:    pandn %xmm12, %xmm14
1039 ; SSE-NEXT:    por %xmm8, %xmm14
1040 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1041 ; SSE-NEXT:    movdqa %xmm0, %xmm5
1042 ; SSE-NEXT:    pslld $16, %xmm5
1043 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
1044 ; SSE-NEXT:    movdqa %xmm8, %xmm3
1045 ; SSE-NEXT:    psrldq {{.*#+}} xmm3 = xmm3[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
1046 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]
1047 ; SSE-NEXT:    movdqa %xmm8, %xmm1
1048 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1049 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1050 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1051 ; SSE-NEXT:    pxor %xmm1, %xmm1
1052 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm10 = xmm10[0],xmm1[0],xmm10[1],xmm1[1],xmm10[2],xmm1[2],xmm10[3],xmm1[3],xmm10[4],xmm1[4],xmm10[5],xmm1[5],xmm10[6],xmm1[6],xmm10[7],xmm1[7]
1053 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm10[0,1,2,3,7,5,6,7]
1054 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,0]
1055 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm2[0,1,2,3,6,4,6,5]
1056 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [65535,65535,65535,65535,65535,65535,0,65535]
1057 ; SSE-NEXT:    pand %xmm12, %xmm10
1058 ; SSE-NEXT:    movdqa %xmm8, %xmm2
1059 ; SSE-NEXT:    pand %xmm12, %xmm2
1060 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1061 ; SSE-NEXT:    movdqa %xmm12, (%rsp) # 16-byte Spill
1062 ; SSE-NEXT:    pandn %xmm0, %xmm12
1063 ; SSE-NEXT:    movdqa %xmm0, %xmm2
1064 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1065 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm1[0],xmm14[1],xmm1[1],xmm14[2],xmm1[2],xmm14[3],xmm1[3],xmm14[4],xmm1[4],xmm14[5],xmm1[5],xmm14[6],xmm1[6],xmm14[7],xmm1[7]
1066 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,0,65535,65535,65535,65535,65535,65535]
1067 ; SSE-NEXT:    pand %xmm0, %xmm14
1068 ; SSE-NEXT:    pand %xmm0, %xmm2
1069 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1070 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1071 ; SSE-NEXT:    pandn %xmm8, %xmm0
1072 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1073 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm5[0],xmm8[1],xmm5[1],xmm8[2],xmm5[2],xmm8[3],xmm5[3]
1074 ; SSE-NEXT:    packuswb %xmm8, %xmm5
1075 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,65535,65535,0]
1076 ; SSE-NEXT:    movdqa %xmm0, %xmm8
1077 ; SSE-NEXT:    pandn %xmm5, %xmm8
1078 ; SSE-NEXT:    pshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
1079 ; SSE-NEXT:    # xmm5 = mem[0,3,2,3]
1080 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,0,3,2,4,5,6,7]
1081 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,4,6,7]
1082 ; SSE-NEXT:    packuswb %xmm5, %xmm5
1083 ; SSE-NEXT:    pand %xmm0, %xmm5
1084 ; SSE-NEXT:    por %xmm5, %xmm8
1085 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
1086 ; SSE-NEXT:    movdqa %xmm5, %xmm0
1087 ; SSE-NEXT:    pandn %xmm8, %xmm0
1088 ; SSE-NEXT:    pand %xmm5, %xmm13
1089 ; SSE-NEXT:    por %xmm13, %xmm0
1090 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1091 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,0,65535]
1092 ; SSE-NEXT:    movdqa %xmm2, %xmm8
1093 ; SSE-NEXT:    pandn %xmm6, %xmm8
1094 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1095 ; SSE-NEXT:    pand %xmm2, %xmm0
1096 ; SSE-NEXT:    por %xmm8, %xmm0
1097 ; SSE-NEXT:    movdqa %xmm0, %xmm8
1098 ; SSE-NEXT:    pxor %xmm6, %xmm6
1099 ; 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]
1100 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [65535,0,65535,65535,65535,65535,0,65535]
1101 ; SSE-NEXT:    movdqa %xmm13, %xmm1
1102 ; SSE-NEXT:    pandn %xmm8, %xmm1
1103 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm6[8],xmm0[9],xmm6[9],xmm0[10],xmm6[10],xmm0[11],xmm6[11],xmm0[12],xmm6[12],xmm0[13],xmm6[13],xmm0[14],xmm6[14],xmm0[15],xmm6[15]
1104 ; SSE-NEXT:    pxor %xmm8, %xmm8
1105 ; SSE-NEXT:    pand %xmm13, %xmm0
1106 ; SSE-NEXT:    por %xmm1, %xmm0
1107 ; SSE-NEXT:    packuswb %xmm3, %xmm1
1108 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [65535,65535,65535,65535,65535,65535,65535,0]
1109 ; SSE-NEXT:    movdqa %xmm6, %xmm3
1110 ; SSE-NEXT:    pandn %xmm1, %xmm3
1111 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
1112 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,3,4,5,6,7]
1113 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
1114 ; SSE-NEXT:    packuswb %xmm0, %xmm0
1115 ; SSE-NEXT:    pand %xmm6, %xmm0
1116 ; SSE-NEXT:    por %xmm0, %xmm3
1117 ; SSE-NEXT:    movdqa %xmm5, %xmm0
1118 ; SSE-NEXT:    pandn %xmm3, %xmm0
1119 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
1120 ; SSE-NEXT:    pandn %xmm6, %xmm9
1121 ; SSE-NEXT:    por %xmm9, %xmm7
1122 ; SSE-NEXT:    movdqa %xmm7, %xmm1
1123 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm8[8],xmm1[9],xmm8[9],xmm1[10],xmm8[10],xmm1[11],xmm8[11],xmm1[12],xmm8[12],xmm1[13],xmm8[13],xmm1[14],xmm8[14],xmm1[15],xmm8[15]
1124 ; SSE-NEXT:    movdqa %xmm13, %xmm3
1125 ; SSE-NEXT:    pandn %xmm1, %xmm3
1126 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3],xmm7[4],xmm8[4],xmm7[5],xmm8[5],xmm7[6],xmm8[6],xmm7[7],xmm8[7]
1127 ; SSE-NEXT:    pand %xmm13, %xmm7
1128 ; SSE-NEXT:    por %xmm3, %xmm7
1129 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1130 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm9[1,3,2,3]
1131 ; SSE-NEXT:    punpckldq {{.*#+}} xmm11 = xmm11[0],xmm1[0],xmm11[1],xmm1[1]
1132 ; SSE-NEXT:    movdqa %xmm11, %xmm1
1133 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm8[8],xmm1[9],xmm8[9],xmm1[10],xmm8[10],xmm1[11],xmm8[11],xmm1[12],xmm8[12],xmm1[13],xmm8[13],xmm1[14],xmm8[14],xmm1[15],xmm8[15]
1134 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm8[0],xmm11[1],xmm8[1],xmm11[2],xmm8[2],xmm11[3],xmm8[3],xmm11[4],xmm8[4],xmm11[5],xmm8[5],xmm11[6],xmm8[6],xmm11[7],xmm8[7]
1135 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,65535,65535,0,65535,65535,65535]
1136 ; SSE-NEXT:    pand %xmm3, %xmm11
1137 ; SSE-NEXT:    pandn %xmm1, %xmm3
1138 ; SSE-NEXT:    por %xmm11, %xmm3
1139 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
1140 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
1141 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,1,1]
1142 ; SSE-NEXT:    packuswb %xmm1, %xmm3
1143 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [255,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255]
1144 ; SSE-NEXT:    movdqa %xmm13, %xmm8
1145 ; SSE-NEXT:    pandn %xmm3, %xmm8
1146 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[0,2,1,3]
1147 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
1148 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,3,3]
1149 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,0,3,4,5,6,7]
1150 ; SSE-NEXT:    packuswb %xmm1, %xmm1
1151 ; SSE-NEXT:    pand %xmm13, %xmm1
1152 ; SSE-NEXT:    por %xmm1, %xmm8
1153 ; SSE-NEXT:    pand %xmm5, %xmm8
1154 ; SSE-NEXT:    por %xmm0, %xmm8
1155 ; SSE-NEXT:    movdqa %xmm2, %xmm0
1156 ; SSE-NEXT:    pandn %xmm9, %xmm0
1157 ; SSE-NEXT:    pand %xmm2, %xmm4
1158 ; SSE-NEXT:    por %xmm0, %xmm4
1159 ; SSE-NEXT:    movdqa %xmm4, %xmm0
1160 ; SSE-NEXT:    pxor %xmm1, %xmm1
1161 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
1162 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3],xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]
1163 ; SSE-NEXT:    pxor %xmm2, %xmm2
1164 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm0[4],xmm4[5],xmm0[5],xmm4[6],xmm0[6],xmm4[7],xmm0[7]
1165 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm4[0,3,2,3,4,5,6,7]
1166 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
1167 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm1[0,1,2,3,4,4,7,6]
1168 ; SSE-NEXT:    psrlq $48, %xmm0
1169 ; SSE-NEXT:    packuswb %xmm0, %xmm3
1170 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,0,65535,65535,65535,0,65535,65535]
1171 ; SSE-NEXT:    movdqa %xmm1, %xmm0
1172 ; SSE-NEXT:    movdqa %xmm6, %xmm7
1173 ; SSE-NEXT:    pandn %xmm6, %xmm0
1174 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1175 ; SSE-NEXT:    movdqa %xmm9, %xmm4
1176 ; SSE-NEXT:    pand %xmm1, %xmm4
1177 ; SSE-NEXT:    por %xmm0, %xmm4
1178 ; SSE-NEXT:    movdqa %xmm4, %xmm0
1179 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
1180 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,0,65535,0,65535,65535,65535,65535]
1181 ; SSE-NEXT:    movdqa %xmm1, %xmm6
1182 ; SSE-NEXT:    pandn %xmm0, %xmm6
1183 ; 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]
1184 ; SSE-NEXT:    pand %xmm1, %xmm4
1185 ; SSE-NEXT:    por %xmm6, %xmm4
1186 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm4[3,2,1,0,4,5,6,7]
1187 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm0[0,1,2,3,7,7,7,7]
1188 ; SSE-NEXT:    packuswb %xmm4, %xmm4
1189 ; SSE-NEXT:    pand %xmm13, %xmm4
1190 ; SSE-NEXT:    pandn %xmm3, %xmm13
1191 ; SSE-NEXT:    por %xmm13, %xmm4
1192 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
1193 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1194 ; SSE-NEXT:    pandn %xmm6, %xmm0
1195 ; SSE-NEXT:    por %xmm0, %xmm15
1196 ; SSE-NEXT:    movdqa %xmm15, %xmm0
1197 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]
1198 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm2[0],xmm15[1],xmm2[1],xmm15[2],xmm2[2],xmm15[3],xmm2[3],xmm15[4],xmm2[4],xmm15[5],xmm2[5],xmm15[6],xmm2[6],xmm15[7],xmm2[7]
1199 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,0,65535,65535,65535,65535,0,65535]
1200 ; SSE-NEXT:    pand %xmm3, %xmm15
1201 ; SSE-NEXT:    pandn %xmm0, %xmm3
1202 ; SSE-NEXT:    por %xmm15, %xmm3
1203 ; SSE-NEXT:    movdqa %xmm3, %xmm11
1204 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
1205 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm13[2,1,2,3,4,5,6,7]
1206 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
1207 ; SSE-NEXT:    packuswb %xmm0, %xmm0
1208 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,65535,65535,65535,65535,0]
1209 ; SSE-NEXT:    movdqa %xmm2, %xmm3
1210 ; SSE-NEXT:    pandn %xmm0, %xmm3
1211 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm11[0,2,1,0,4,5,6,7]
1212 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,6,6,7]
1213 ; SSE-NEXT:    packuswb %xmm0, %xmm0
1214 ; SSE-NEXT:    pand %xmm2, %xmm0
1215 ; SSE-NEXT:    por %xmm0, %xmm3
1216 ; SSE-NEXT:    movdqa %xmm5, %xmm15
1217 ; SSE-NEXT:    pandn %xmm3, %xmm15
1218 ; SSE-NEXT:    pand %xmm5, %xmm4
1219 ; SSE-NEXT:    por %xmm4, %xmm15
1220 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,0,65535,65535,0,65535,65535]
1221 ; SSE-NEXT:    movdqa %xmm0, %xmm3
1222 ; SSE-NEXT:    pandn %xmm7, %xmm3
1223 ; SSE-NEXT:    movdqa %xmm9, %xmm4
1224 ; SSE-NEXT:    pand %xmm0, %xmm4
1225 ; SSE-NEXT:    por %xmm3, %xmm4
1226 ; SSE-NEXT:    movdqa %xmm4, %xmm3
1227 ; SSE-NEXT:    pxor %xmm0, %xmm0
1228 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm0[8],xmm3[9],xmm0[9],xmm3[10],xmm0[10],xmm3[11],xmm0[11],xmm3[12],xmm0[12],xmm3[13],xmm0[13],xmm3[14],xmm0[14],xmm3[15],xmm0[15]
1229 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[3,1,2,3,4,5,6,7]
1230 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3],xmm4[4],xmm0[4],xmm4[5],xmm0[5],xmm4[6],xmm0[6],xmm4[7],xmm0[7]
1231 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,1,2,3]
1232 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7]
1233 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
1234 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1235 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm0[8],xmm2[9],xmm0[9],xmm2[10],xmm0[10],xmm2[11],xmm0[11],xmm2[12],xmm0[12],xmm2[13],xmm0[13],xmm2[14],xmm0[14],xmm2[15],xmm0[15]
1236 ; SSE-NEXT:    movdqa (%rsp), %xmm3 # 16-byte Reload
1237 ; SSE-NEXT:    pandn %xmm2, %xmm3
1238 ; SSE-NEXT:    por %xmm3, %xmm10
1239 ; SSE-NEXT:    packuswb %xmm2, %xmm10
1240 ; SSE-NEXT:    packuswb %xmm4, %xmm4
1241 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm10[0,1,3,3]
1242 ; SSE-NEXT:    movss {{.*#+}} xmm2 = xmm4[0],xmm2[1,2,3]
1243 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
1244 ; SSE-NEXT:    movdqa %xmm7, %xmm3
1245 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,0,65535,65535,65535,0,65535,65535]
1246 ; SSE-NEXT:    pand %xmm4, %xmm3
1247 ; SSE-NEXT:    pandn %xmm6, %xmm4
1248 ; SSE-NEXT:    movdqa %xmm6, %xmm11
1249 ; SSE-NEXT:    por %xmm3, %xmm4
1250 ; SSE-NEXT:    movdqa %xmm4, %xmm3
1251 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
1252 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm0[8],xmm4[9],xmm0[9],xmm4[10],xmm0[10],xmm4[11],xmm0[11],xmm4[12],xmm0[12],xmm4[13],xmm0[13],xmm4[14],xmm0[14],xmm4[15],xmm0[15]
1253 ; SSE-NEXT:    pxor %xmm10, %xmm10
1254 ; SSE-NEXT:    pand %xmm1, %xmm4
1255 ; SSE-NEXT:    pandn %xmm3, %xmm1
1256 ; SSE-NEXT:    por %xmm4, %xmm1
1257 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]
1258 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
1259 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
1260 ; SSE-NEXT:    packuswb %xmm1, %xmm1
1261 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,65535,65535,0]
1262 ; SSE-NEXT:    pand %xmm0, %xmm1
1263 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm13[0,1,2,1]
1264 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
1265 ; SSE-NEXT:    packuswb %xmm3, %xmm3
1266 ; SSE-NEXT:    pandn %xmm3, %xmm0
1267 ; SSE-NEXT:    por %xmm1, %xmm0
1268 ; SSE-NEXT:    movdqa %xmm5, %xmm1
1269 ; SSE-NEXT:    pandn %xmm0, %xmm1
1270 ; SSE-NEXT:    andps %xmm5, %xmm2
1271 ; SSE-NEXT:    por %xmm2, %xmm1
1272 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
1273 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [65535,65535,65535,0,65535,65535,0,65535]
1274 ; SSE-NEXT:    pand %xmm13, %xmm2
1275 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
1276 ; SSE-NEXT:    movdqa %xmm2, %xmm3
1277 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm10[8],xmm3[9],xmm10[9],xmm3[10],xmm10[10],xmm3[11],xmm10[11],xmm3[12],xmm10[12],xmm3[13],xmm10[13],xmm3[14],xmm10[14],xmm3[15],xmm10[15]
1278 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3],xmm2[4],xmm10[4],xmm2[5],xmm10[5],xmm2[6],xmm10[6],xmm2[7],xmm10[7]
1279 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [0,65535,65535,65535,65535,65535,65535,0]
1280 ; SSE-NEXT:    pand %xmm4, %xmm2
1281 ; SSE-NEXT:    pandn %xmm3, %xmm4
1282 ; SSE-NEXT:    por %xmm2, %xmm4
1283 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[0,1,0,3]
1284 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm2[0,1,2,3,5,4,7,6]
1285 ; SSE-NEXT:    psrldq {{.*#+}} xmm3 = xmm3[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
1286 ; SSE-NEXT:    packuswb %xmm3, %xmm6
1287 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm9[0,2,2,3]
1288 ; SSE-NEXT:    pand %xmm13, %xmm9
1289 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
1290 ; SSE-NEXT:    pandn %xmm3, %xmm13
1291 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,3,2,3]
1292 ; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
1293 ; SSE-NEXT:    movdqa %xmm2, %xmm3
1294 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm10[8],xmm3[9],xmm10[9],xmm3[10],xmm10[10],xmm3[11],xmm10[11],xmm3[12],xmm10[12],xmm3[13],xmm10[13],xmm3[14],xmm10[14],xmm3[15],xmm10[15]
1295 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[2,1,2,3]
1296 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7]
1297 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3],xmm2[4],xmm10[4],xmm2[5],xmm10[5],xmm2[6],xmm10[6],xmm2[7],xmm10[7]
1298 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,1,2,3]
1299 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[1,3,2,3,4,5,6,7]
1300 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
1301 ; SSE-NEXT:    packuswb %xmm2, %xmm2
1302 ; SSE-NEXT:    movss {{.*#+}} xmm6 = xmm2[0],xmm6[1,2,3]
1303 ; SSE-NEXT:    movdqa %xmm7, %xmm2
1304 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1305 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,0,65535,65535,0,65535,65535]
1306 ; SSE-NEXT:    pand %xmm3, %xmm2
1307 ; SSE-NEXT:    pandn %xmm11, %xmm3
1308 ; SSE-NEXT:    por %xmm2, %xmm3
1309 ; SSE-NEXT:    movdqa %xmm3, %xmm2
1310 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3],xmm2[4],xmm10[4],xmm2[5],xmm10[5],xmm2[6],xmm10[6],xmm2[7],xmm10[7]
1311 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm10[8],xmm3[9],xmm10[9],xmm3[10],xmm10[10],xmm3[11],xmm10[11],xmm3[12],xmm10[12],xmm3[13],xmm10[13],xmm3[14],xmm10[14],xmm3[15],xmm10[15]
1312 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,0,65535,0,65535,65535,65535]
1313 ; SSE-NEXT:    pand %xmm4, %xmm3
1314 ; SSE-NEXT:    pandn %xmm2, %xmm4
1315 ; SSE-NEXT:    por %xmm3, %xmm4
1316 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
1317 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm12[0,1,0,3]
1318 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,7,6]
1319 ; SSE-NEXT:    packuswb %xmm2, %xmm2
1320 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0]
1321 ; SSE-NEXT:    movdqa %xmm3, %xmm7
1322 ; SSE-NEXT:    pandn %xmm2, %xmm7
1323 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[2,1,0,3]
1324 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,0,3,2,4,5,6,7]
1325 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,5,5,5]
1326 ; SSE-NEXT:    packuswb %xmm2, %xmm2
1327 ; SSE-NEXT:    pand %xmm3, %xmm2
1328 ; SSE-NEXT:    por %xmm2, %xmm7
1329 ; SSE-NEXT:    movdqa %xmm5, %xmm2
1330 ; SSE-NEXT:    pandn %xmm7, %xmm2
1331 ; SSE-NEXT:    andps %xmm5, %xmm6
1332 ; SSE-NEXT:    por %xmm6, %xmm2
1333 ; SSE-NEXT:    movdqa %xmm13, %xmm7
1334 ; SSE-NEXT:    por %xmm9, %xmm7
1335 ; SSE-NEXT:    movdqa %xmm7, %xmm4
1336 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm10[0],xmm4[1],xmm10[1],xmm4[2],xmm10[2],xmm4[3],xmm10[3],xmm4[4],xmm10[4],xmm4[5],xmm10[5],xmm4[6],xmm10[6],xmm4[7],xmm10[7]
1337 ; SSE-NEXT:    pshufhw {{.*#+}} xmm6 = xmm4[0,1,2,3,6,4,6,7]
1338 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm10[8],xmm7[9],xmm10[9],xmm7[10],xmm10[10],xmm7[11],xmm10[11],xmm7[12],xmm10[12],xmm7[13],xmm10[13],xmm7[14],xmm10[14],xmm7[15],xmm10[15]
1339 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm7[0,1,2,1]
1340 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,7,6,7]
1341 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm6 = xmm6[4],xmm4[4],xmm6[5],xmm4[5],xmm6[6],xmm4[6],xmm6[7],xmm4[7]
1342 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
1343 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm10[8],xmm4[9],xmm10[9],xmm4[10],xmm10[10],xmm4[11],xmm10[11],xmm4[12],xmm10[12],xmm4[13],xmm10[13],xmm4[14],xmm10[14],xmm4[15],xmm10[15]
1344 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
1345 ; SSE-NEXT:    pandn %xmm4, %xmm9
1346 ; SSE-NEXT:    movdqa %xmm4, %xmm7
1347 ; SSE-NEXT:    por %xmm9, %xmm14
1348 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm14[0,2,1,3]
1349 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,7,6,7]
1350 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,1,2,0]
1351 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,7,6,5]
1352 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[3,3,3,3]
1353 ; SSE-NEXT:    packuswb %xmm7, %xmm4
1354 ; SSE-NEXT:    packuswb %xmm6, %xmm6
1355 ; SSE-NEXT:    movss {{.*#+}} xmm4 = xmm6[0],xmm4[1,2,3]
1356 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
1357 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Folded Reload
1358 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm11[1,3,2,3]
1359 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm0[0,2,2,3]
1360 ; SSE-NEXT:    punpckldq {{.*#+}} xmm7 = xmm7[0],xmm6[0],xmm7[1],xmm6[1]
1361 ; SSE-NEXT:    movdqa %xmm7, %xmm6
1362 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm10[0],xmm6[1],xmm10[1],xmm6[2],xmm10[2],xmm6[3],xmm10[3],xmm6[4],xmm10[4],xmm6[5],xmm10[5],xmm6[6],xmm10[6],xmm6[7],xmm10[7]
1363 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm10[8],xmm7[9],xmm10[9],xmm7[10],xmm10[10],xmm7[11],xmm10[11],xmm7[12],xmm10[12],xmm7[13],xmm10[13],xmm7[14],xmm10[14],xmm7[15],xmm10[15]
1364 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,65535,0,65535,0,65535,65535]
1365 ; SSE-NEXT:    pand %xmm9, %xmm7
1366 ; SSE-NEXT:    pandn %xmm6, %xmm9
1367 ; SSE-NEXT:    por %xmm7, %xmm9
1368 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm9[2,1,1,1]
1369 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[0,1,0,3,4,5,6,7]
1370 ; SSE-NEXT:    packuswb %xmm6, %xmm6
1371 ; SSE-NEXT:    pand %xmm3, %xmm6
1372 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm12[0,1,0,3]
1373 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,4,7]
1374 ; SSE-NEXT:    packuswb %xmm7, %xmm7
1375 ; SSE-NEXT:    pandn %xmm7, %xmm3
1376 ; SSE-NEXT:    por %xmm3, %xmm6
1377 ; SSE-NEXT:    andps %xmm5, %xmm4
1378 ; SSE-NEXT:    pandn %xmm6, %xmm5
1379 ; SSE-NEXT:    por %xmm4, %xmm5
1380 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
1381 ; SSE-NEXT:    movaps %xmm3, (%rsi)
1382 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1383 ; SSE-NEXT:    movaps %xmm0, (%rdx)
1384 ; SSE-NEXT:    movdqa %xmm8, (%rcx)
1385 ; SSE-NEXT:    movdqa %xmm15, (%r8)
1386 ; SSE-NEXT:    movdqa %xmm1, (%r9)
1387 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1388 ; SSE-NEXT:    movdqa %xmm2, (%rax)
1389 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1390 ; SSE-NEXT:    movdqa %xmm5, (%rax)
1391 ; SSE-NEXT:    addq $168, %rsp
1392 ; SSE-NEXT:    retq
1394 ; AVX1-ONLY-LABEL: load_i8_stride7_vf16:
1395 ; AVX1-ONLY:       # %bb.0:
1396 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm2
1397 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm7
1398 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm3
1399 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm4
1400 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,zero,xmm7[5,12,u,u,u,u,u,u,u,u,u,u,u]
1401 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm2[0,7,14],zero,zero,xmm2[u,u,u,u,u,u,u,u,u,u,u]
1402 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
1403 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm3[u,u,u,u,u,3,10],zero,zero,zero,xmm3[u,u,u,u,u,u]
1404 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm4[u,u,u,u,u],zero,zero,xmm4[1,8,15,u,u,u,u,u,u]
1405 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm5, %xmm1
1406 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm5 = <255,255,255,255,255,0,0,0,0,0,u,u,u,u,u,u>
1407 ; AVX1-ONLY-NEXT:    vpblendvb %xmm5, %xmm0, %xmm1, %xmm0
1408 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1409 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rdi), %xmm1
1410 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm5
1411 ; AVX1-ONLY-NEXT:    vmovdqa 96(%rdi), %xmm6
1412 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,zero,xmm7[6,13,u,u,u,u,u,u,u,u,u,u,u]
1413 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm2[1,8,15],zero,zero,xmm2[u,u,u,u,u,u,u,u,u,u,u]
1414 ; AVX1-ONLY-NEXT:    vpor %xmm8, %xmm9, %xmm8
1415 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm4[u,u,u,u,u],zero,zero,xmm4[2,9,u,u,u,u,u,u,u]
1416 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm3[u,u,u,u,u,4,11],zero,zero,xmm3[u,u,u,u,u,u,u]
1417 ; AVX1-ONLY-NEXT:    vpor %xmm9, %xmm10, %xmm9
1418 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm11 = <255,255,255,255,255,0,0,0,0,u,u,u,u,u,u,u>
1419 ; AVX1-ONLY-NEXT:    vpblendvb %xmm11, %xmm8, %xmm9, %xmm8
1420 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm1[u,u,u,u,5,12,u,u,u,u,u,u,u,u,u,u]
1421 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm5[u,u,u,u,u,0,7,14,u,u,u,u,u,u,u,u]
1422 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm9 = xmm10[0],xmm9[0],xmm10[1],xmm9[1]
1423 ; AVX1-ONLY-NEXT:    vpxor %xmm12, %xmm12, %xmm12
1424 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5,6],xmm12[7]
1425 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm6[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zero,xmm6[3,10]
1426 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm9, %xmm10
1427 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm9 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
1428 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm8, %xmm10, %xmm0
1429 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1430 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm2[2,9],zero,zero,zero,xmm2[u,u,u,u,u,u,u,u,u,u,u]
1431 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = zero,zero,xmm7[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
1432 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm13, %xmm10
1433 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm4[u,u,u,u,u],zero,zero,xmm4[3,10,u,u,u,u,u,u,u]
1434 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm3[u,u,u,u,u,5,12],zero,zero,xmm3[u,u,u,u,u,u,u]
1435 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm14, %xmm13
1436 ; AVX1-ONLY-NEXT:    vpblendvb %xmm11, %xmm10, %xmm13, %xmm10
1437 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm1[u,u,u,u,u,u,u,u,u,u,u,u,6,13,u,u]
1438 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm5[u,u,u,u,u,u,u,u,u,u,u,u,u,1,8,15]
1439 ; AVX1-ONLY-NEXT:    vpunpckhdq {{.*#+}} xmm13 = xmm14[2],xmm13[2],xmm14[3],xmm13[3]
1440 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5,6],xmm12[7]
1441 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm6[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zero,xmm6[4,11]
1442 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm13, %xmm13
1443 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm10, %xmm13, %xmm10
1444 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm2[3,10],zero,zero,zero,xmm2[u,u,u,u,u,u,u,u,u,u,u]
1445 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,xmm7[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
1446 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm14, %xmm13
1447 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm4[u,u,u,u,u],zero,zero,xmm4[4,11,u,u,u,u,u,u,u]
1448 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm15 = xmm3[u,u,u,u,u,6,13],zero,zero,xmm3[u,u,u,u,u,u,u]
1449 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm15, %xmm14
1450 ; AVX1-ONLY-NEXT:    vpblendvb %xmm11, %xmm13, %xmm14, %xmm11
1451 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm5[u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm5[u,u]
1452 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm1[u,u,u,u,u,u,u,u,u],zero,zero,xmm1[0,7,14,u,u]
1453 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm14, %xmm13
1454 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5,6],xmm12[7]
1455 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm6[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zero,xmm6[5,12]
1456 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm13, %xmm13
1457 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm11, %xmm13, %xmm11
1458 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm13 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
1459 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm2, %xmm14
1460 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm15 = xmm7[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
1461 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm14 = xmm14[0],xmm15[0],xmm14[1],xmm15[1],xmm14[2],xmm15[2],xmm14[3],xmm15[3]
1462 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm15 = xmm4[u,u,u,u],zero,zero,zero,xmm4[5,12,u,u,u,u,u,u,u]
1463 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm3[u,u,u,u,0,7,14],zero,zero,xmm3[u,u,u,u,u,u,u]
1464 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm15, %xmm0
1465 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm14[0,1],xmm0[2,3,4,5,6,7]
1466 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm5[u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm5[u,u]
1467 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm15 = xmm1[u,u,u,u,u,u,u,u,u],zero,zero,xmm1[1,8,15,u,u]
1468 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm15, %xmm14
1469 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm12 = xmm14[0,1,2,3,4,5,6],xmm12[7]
1470 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm6[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zero,xmm6[6,13]
1471 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm12, %xmm12
1472 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm0, %xmm12, %xmm12
1473 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm7[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
1474 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm2[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
1475 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm14[0],xmm0[0],xmm14[1],xmm0[1],xmm14[2],xmm0[2],xmm14[3],xmm0[3]
1476 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm4[u,u,u,u],zero,zero,zero,xmm4[6,13,u,u,u,u,u,u,u]
1477 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm15 = xmm3[u,u,u,u,1,8,15],zero,zero,xmm3[u,u,u,u,u,u,u]
1478 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm15, %xmm14
1479 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm14[2,3,4,5,6,7]
1480 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm1[u,u,u,u,u,u,u,u,u],zero,zero,xmm1[2,9,u,u,u]
1481 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm15 = xmm5[u,u,u,u,u,u,u,u,u,4,11],zero,zero,xmm5[u,u,u]
1482 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm15, %xmm14
1483 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm15 = [0,9,10,11,12,128,128,128,0,9,10,11,12,128,128,128]
1484 ; AVX1-ONLY-NEXT:    # xmm15 = mem[0,0]
1485 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm14, %xmm14
1486 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm6[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,xmm6[0,7,14]
1487 ; AVX1-ONLY-NEXT:    vpor %xmm8, %xmm14, %xmm8
1488 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm0, %xmm8, %xmm0
1489 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm7, %xmm7
1490 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
1491 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1],xmm2[2],xmm7[2],xmm2[3],xmm7[3]
1492 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,2,9],zero,zero,zero,xmm3[u,u,u,u,u,u,u]
1493 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u],zero,zero,xmm4[0,7,14,u,u,u,u,u,u,u]
1494 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
1495 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm3[2,3,4,5,6,7]
1496 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm1[u,u,u,u,u,u,u,u,u],zero,zero,xmm1[3,10,u,u,u]
1497 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm5[u,u,u,u,u,u,u,u,u,5,12],zero,zero,xmm5[u,u,u]
1498 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
1499 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm3, %xmm3
1500 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,xmm6[1,8,15]
1501 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm3, %xmm3
1502 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm2, %xmm3, %xmm2
1503 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,4,11,u,u,u,u,u,u,u,u,u,u]
1504 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm5[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
1505 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
1506 ; AVX1-ONLY-NEXT:    vpalignr {{.*#+}} xmm1 = xmm1[10,11,12,13,14,15],xmm6[0,1,2,3,4,5,6,7,8,9]
1507 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u,u,u,u,u,u,0,1,2,3,8,15]
1508 ; AVX1-ONLY-NEXT:    vpblendw $31, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
1509 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,1,2,3,4],xmm1[5,6,7]
1510 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, (%rsi)
1511 ; AVX1-ONLY-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1512 ; AVX1-ONLY-NEXT:    vmovaps %xmm1, (%rdx)
1513 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, (%rcx)
1514 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, (%r8)
1515 ; AVX1-ONLY-NEXT:    vmovdqa %xmm12, (%r9)
1516 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1517 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, (%rax)
1518 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1519 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, (%rax)
1520 ; AVX1-ONLY-NEXT:    retq
1522 ; AVX2-ONLY-LABEL: load_i8_stride7_vf16:
1523 ; AVX2-ONLY:       # %bb.0:
1524 ; AVX2-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1525 ; AVX2-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %r10
1526 ; AVX2-ONLY-NEXT:    vmovdqa (%rdi), %ymm0
1527 ; AVX2-ONLY-NEXT:    vmovdqa 32(%rdi), %ymm1
1528 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
1529 ; AVX2-ONLY-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm2
1530 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm2, %xmm3
1531 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,zero,xmm3[5,12],zero,zero,xmm3[1,8,15,u,u,u,u,u,u]
1532 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[0,7,14],zero,zero,xmm2[3,10],zero,zero,zero,xmm2[u,u,u,u,u,u]
1533 ; AVX2-ONLY-NEXT:    vpor %xmm3, %xmm2, %xmm3
1534 ; AVX2-ONLY-NEXT:    vmovdqa 96(%rdi), %xmm9
1535 ; AVX2-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm10
1536 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} xmm2 = xmm9[0],xmm10[1],xmm9[2],xmm10[3]
1537 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm2[u,u,u,u,u,u,u,u,u,u,6,13],zero,zero,xmm2[2,9]
1538 ; AVX2-ONLY-NEXT:    vmovdqa 80(%rdi), %xmm2
1539 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm2[u,u,u,u,u,u,u,u,u,u],zero,zero,xmm2[4,11],zero,zero
1540 ; AVX2-ONLY-NEXT:    vpor %xmm5, %xmm4, %xmm4
1541 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4],xmm4[5,6,7]
1542 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm4 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
1543 ; AVX2-ONLY-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm4
1544 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm4, %xmm5
1545 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm5[6,13],zero,zero,xmm5[2,9,u,u,u,u,u,u,u]
1546 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[1,8,15],zero,zero,xmm4[4,11],zero,zero,xmm4[u,u,u,u,u,u,u]
1547 ; AVX2-ONLY-NEXT:    vpor %xmm5, %xmm4, %xmm6
1548 ; AVX2-ONLY-NEXT:    vmovdqa 96(%rdi), %xmm4
1549 ; AVX2-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm5
1550 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm5[0],xmm4[1],xmm5[2,3,4],xmm4[5],xmm5[6,7]
1551 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,u,u,0,7,14],zero,zero,xmm7[3,10]
1552 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm2[u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[5,12],zero,zero
1553 ; AVX2-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm8
1554 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} xmm7 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
1555 ; AVX2-ONLY-NEXT:    vpblendvb %xmm7, %xmm6, %xmm8, %xmm6
1556 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm8 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
1557 ; AVX2-ONLY-NEXT:    vpblendvb %ymm8, %ymm0, %ymm1, %ymm8
1558 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm8[2,9],zero,zero,zero,xmm8[5,12],zero,zero,xmm8[u,u,u,u,u,u,u]
1559 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm8, %xmm8
1560 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm8[0,7,14],zero,zero,xmm8[3,10,u,u,u,u,u,u,u]
1561 ; AVX2-ONLY-NEXT:    vpor %xmm11, %xmm8, %xmm8
1562 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm11 = xmm5[0,1],xmm4[2],xmm5[3,4],xmm4[5],xmm5[6,7]
1563 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,u,u,u,u,u,u,u,1,8,15],zero,zero,xmm11[4,11]
1564 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm2[u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[6,13],zero,zero
1565 ; AVX2-ONLY-NEXT:    vpor %xmm12, %xmm11, %xmm11
1566 ; AVX2-ONLY-NEXT:    vpblendvb %xmm7, %xmm8, %xmm11, %xmm8
1567 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm11 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
1568 ; AVX2-ONLY-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm11
1569 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm11[3,10],zero,zero,zero,xmm11[6,13],zero,zero,xmm11[u,u,u,u,u,u,u]
1570 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm11, %xmm11
1571 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm11[1,8,15],zero,zero,xmm11[4,11,u,u,u,u,u,u,u]
1572 ; AVX2-ONLY-NEXT:    vpor %xmm12, %xmm11, %xmm11
1573 ; AVX2-ONLY-NEXT:    vpblendd {{.*#+}} xmm10 = xmm10[0],xmm9[1],xmm10[2],xmm9[3]
1574 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm10[u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm10[5,12]
1575 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm2[u,u,u,u,u,u,u,u,u],zero,zero,xmm2[0,7,14],zero,zero
1576 ; AVX2-ONLY-NEXT:    vpor %xmm12, %xmm9, %xmm9
1577 ; AVX2-ONLY-NEXT:    vpblendvb %xmm7, %xmm11, %xmm9, %xmm9
1578 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm11 = <255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u>
1579 ; AVX2-ONLY-NEXT:    vpblendvb %ymm11, %ymm1, %ymm0, %ymm11
1580 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm11, %xmm12
1581 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,xmm12[2,9],zero,zero,zero,xmm12[5,12,u,u,u,u,u,u,u]
1582 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[4,11],zero,zero,xmm11[0,7,14],zero,zero,xmm11[u,u,u,u,u,u,u]
1583 ; AVX2-ONLY-NEXT:    vpor %xmm12, %xmm11, %xmm11
1584 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm10[6,13]
1585 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm2[u,u,u,u,u,u,u,u,u],zero,zero,xmm2[1,8,15],zero,zero
1586 ; AVX2-ONLY-NEXT:    vpor %xmm12, %xmm10, %xmm10
1587 ; AVX2-ONLY-NEXT:    vpblendvb %xmm7, %xmm11, %xmm10, %xmm10
1588 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm11 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
1589 ; AVX2-ONLY-NEXT:    vpblendvb %ymm11, %ymm1, %ymm0, %ymm11
1590 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm11, %xmm12
1591 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,xmm12[3,10],zero,zero,zero,xmm12[6,13,u,u,u,u,u,u,u]
1592 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[5,12],zero,zero,xmm11[1,8,15],zero,zero,xmm11[u,u,u,u,u,u,u]
1593 ; AVX2-ONLY-NEXT:    vpor %xmm12, %xmm11, %xmm11
1594 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm12 = xmm4[0],xmm5[1,2],xmm4[3],xmm5[4,5,6],xmm4[7]
1595 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u,u,u,u,u,u,u,u,4,11],zero,zero,xmm12[0,7,14]
1596 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm2[u,u,u,u,u,u,u,u,u],zero,zero,xmm2[2,9],zero,zero,zero
1597 ; AVX2-ONLY-NEXT:    vpor %xmm13, %xmm12, %xmm12
1598 ; AVX2-ONLY-NEXT:    vpblendvb %xmm7, %xmm11, %xmm12, %xmm11
1599 ; AVX2-ONLY-NEXT:    vmovdqa {{.*#+}} ymm12 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
1600 ; AVX2-ONLY-NEXT:    vpblendvb %ymm12, %ymm1, %ymm0, %ymm0
1601 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[6,13],zero,zero,xmm0[2,9],zero,zero,zero,xmm0[u,u,u,u,u,u,u]
1602 ; AVX2-ONLY-NEXT:    vextracti128 $1, %ymm0, %xmm0
1603 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14,u,u,u,u,u,u,u]
1604 ; AVX2-ONLY-NEXT:    vpor %xmm1, %xmm0, %xmm0
1605 ; AVX2-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm4[0],xmm5[1,2,3],xmm4[4],xmm5[5,6],xmm4[7]
1606 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u,u,u,u,u,5,12],zero,zero,xmm1[1,8,15]
1607 ; AVX2-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,u,u],zero,zero,xmm2[3,10],zero,zero,zero
1608 ; AVX2-ONLY-NEXT:    vpor %xmm2, %xmm1, %xmm1
1609 ; AVX2-ONLY-NEXT:    vpblendvb %xmm7, %xmm0, %xmm1, %xmm0
1610 ; AVX2-ONLY-NEXT:    vmovdqa %xmm3, (%rsi)
1611 ; AVX2-ONLY-NEXT:    vmovdqa %xmm6, (%rdx)
1612 ; AVX2-ONLY-NEXT:    vmovdqa %xmm8, (%rcx)
1613 ; AVX2-ONLY-NEXT:    vmovdqa %xmm9, (%r8)
1614 ; AVX2-ONLY-NEXT:    vmovdqa %xmm10, (%r9)
1615 ; AVX2-ONLY-NEXT:    vmovdqa %xmm11, (%r10)
1616 ; AVX2-ONLY-NEXT:    vmovdqa %xmm0, (%rax)
1617 ; AVX2-ONLY-NEXT:    vzeroupper
1618 ; AVX2-ONLY-NEXT:    retq
1620 ; AVX512F-LABEL: load_i8_stride7_vf16:
1621 ; AVX512F:       # %bb.0:
1622 ; AVX512F-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1623 ; AVX512F-NEXT:    movq {{[0-9]+}}(%rsp), %r10
1624 ; AVX512F-NEXT:    vmovdqa 80(%rdi), %xmm0
1625 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[u,u,u,u,u,u,u,u,u,u],zero,zero,xmm0[4,11],zero,zero
1626 ; AVX512F-NEXT:    vmovdqa (%rdi), %ymm1
1627 ; AVX512F-NEXT:    vmovdqa 32(%rdi), %ymm2
1628 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm5 = [65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0]
1629 ; AVX512F-NEXT:    vpternlogq $202, %ymm2, %ymm1, %ymm5
1630 ; AVX512F-NEXT:    vextracti128 $1, %ymm5, %xmm4
1631 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[5,12],zero,zero,xmm4[1,8,15,u,u,u,u,u,u]
1632 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm6 = xmm4[0,1,2,3,4],xmm3[5,6,7]
1633 ; AVX512F-NEXT:    vmovdqa 96(%rdi), %xmm3
1634 ; AVX512F-NEXT:    vmovdqa 64(%rdi), %xmm4
1635 ; AVX512F-NEXT:    vpblendd {{.*#+}} xmm7 = xmm3[0],xmm4[1],xmm3[2],xmm4[3]
1636 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,u,u,u,6,13],zero,zero,xmm7[2,9]
1637 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[0,7,14],zero,zero,xmm5[3,10],zero,zero,zero,xmm5[u,u,u,u,u,u]
1638 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0,1,2,3,4],xmm7[5,6,7]
1639 ; AVX512F-NEXT:    vpor %xmm6, %xmm5, %xmm5
1640 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm8 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535]
1641 ; AVX512F-NEXT:    vmovdqa %ymm8, %ymm6
1642 ; AVX512F-NEXT:    vpternlogq $202, %ymm2, %ymm1, %ymm6
1643 ; AVX512F-NEXT:    vextracti128 $1, %ymm6, %xmm7
1644 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm7[6,13],zero,zero,xmm7[2,9,u,u,u,u,u,u,u]
1645 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[1,8,15],zero,zero,xmm6[4,11],zero,zero,xmm6[u,u,u,u,u,u,u]
1646 ; AVX512F-NEXT:    vpor %xmm7, %xmm6, %xmm9
1647 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm6 = xmm4[0],xmm3[1],xmm4[2,3,4],xmm3[5],xmm4[6,7]
1648 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,u,u,u,u,u,0,7,14],zero,zero,xmm6[3,10]
1649 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm7 = xmm0[u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm0[5,12],zero,zero
1650 ; AVX512F-NEXT:    vpor %xmm7, %xmm6, %xmm6
1651 ; AVX512F-NEXT:    vmovdqa {{.*#+}} xmm7 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
1652 ; AVX512F-NEXT:    vpternlogq $184, %xmm9, %xmm7, %xmm6
1653 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm9 = [65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535]
1654 ; AVX512F-NEXT:    vmovdqa %ymm9, %ymm10
1655 ; AVX512F-NEXT:    vpternlogq $202, %ymm2, %ymm1, %ymm10
1656 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm11 = xmm10[2,9],zero,zero,zero,xmm10[5,12],zero,zero,xmm10[u,u,u,u,u,u,u]
1657 ; AVX512F-NEXT:    vextracti128 $1, %ymm10, %xmm10
1658 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,xmm10[0,7,14],zero,zero,xmm10[3,10,u,u,u,u,u,u,u]
1659 ; AVX512F-NEXT:    vpor %xmm11, %xmm10, %xmm10
1660 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm11 = xmm4[0,1],xmm3[2],xmm4[3,4],xmm3[5],xmm4[6,7]
1661 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,u,u,u,u,u,u,u,1,8,15],zero,zero,xmm11[4,11]
1662 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm12 = xmm0[u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm0[6,13],zero,zero
1663 ; AVX512F-NEXT:    vpor %xmm12, %xmm11, %xmm11
1664 ; AVX512F-NEXT:    vpternlogq $184, %xmm10, %xmm7, %xmm11
1665 ; AVX512F-NEXT:    vmovdqa {{.*#+}} ymm10 = [65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535]
1666 ; AVX512F-NEXT:    vmovdqa %ymm10, %ymm12
1667 ; AVX512F-NEXT:    vpternlogq $202, %ymm2, %ymm1, %ymm12
1668 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm13 = xmm12[3,10],zero,zero,zero,xmm12[6,13],zero,zero,xmm12[u,u,u,u,u,u,u]
1669 ; AVX512F-NEXT:    vextracti128 $1, %ymm12, %xmm12
1670 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,xmm12[1,8,15],zero,zero,xmm12[4,11,u,u,u,u,u,u,u]
1671 ; AVX512F-NEXT:    vpor %xmm13, %xmm12, %xmm12
1672 ; AVX512F-NEXT:    vpblendd {{.*#+}} xmm13 = xmm4[0],xmm3[1],xmm4[2],xmm3[3]
1673 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm14 = xmm13[u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm13[5,12]
1674 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm15 = xmm0[u,u,u,u,u,u,u,u,u],zero,zero,xmm0[0,7,14],zero,zero
1675 ; AVX512F-NEXT:    vpor %xmm15, %xmm14, %xmm14
1676 ; AVX512F-NEXT:    vpternlogq $184, %xmm12, %xmm7, %xmm14
1677 ; AVX512F-NEXT:    vpternlogq $202, %ymm1, %ymm2, %ymm8
1678 ; AVX512F-NEXT:    vextracti128 $1, %ymm8, %xmm12
1679 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,xmm12[2,9],zero,zero,zero,xmm12[5,12,u,u,u,u,u,u,u]
1680 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[4,11],zero,zero,xmm8[0,7,14],zero,zero,xmm8[u,u,u,u,u,u,u]
1681 ; AVX512F-NEXT:    vpor %xmm12, %xmm8, %xmm8
1682 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm12 = xmm13[u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm13[6,13]
1683 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm13 = xmm0[u,u,u,u,u,u,u,u,u],zero,zero,xmm0[1,8,15],zero,zero
1684 ; AVX512F-NEXT:    vpor %xmm13, %xmm12, %xmm12
1685 ; AVX512F-NEXT:    vpternlogq $184, %xmm8, %xmm7, %xmm12
1686 ; AVX512F-NEXT:    vpternlogq $202, %ymm1, %ymm2, %ymm9
1687 ; AVX512F-NEXT:    vextracti128 $1, %ymm9, %xmm8
1688 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm8[3,10],zero,zero,zero,xmm8[6,13,u,u,u,u,u,u,u]
1689 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[5,12],zero,zero,xmm9[1,8,15],zero,zero,xmm9[u,u,u,u,u,u,u]
1690 ; AVX512F-NEXT:    vpor %xmm8, %xmm9, %xmm8
1691 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm9 = xmm3[0],xmm4[1,2],xmm3[3],xmm4[4,5,6],xmm3[7]
1692 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u,u,u,u,u,4,11],zero,zero,xmm9[0,7,14]
1693 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm13 = xmm0[u,u,u,u,u,u,u,u,u],zero,zero,xmm0[2,9],zero,zero,zero
1694 ; AVX512F-NEXT:    vpor %xmm13, %xmm9, %xmm9
1695 ; AVX512F-NEXT:    vpternlogq $184, %xmm8, %xmm7, %xmm9
1696 ; AVX512F-NEXT:    vpternlogq $202, %ymm1, %ymm2, %ymm10
1697 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm1 = xmm10[6,13],zero,zero,xmm10[2,9],zero,zero,zero,xmm10[u,u,u,u,u,u,u]
1698 ; AVX512F-NEXT:    vextracti128 $1, %ymm10, %xmm2
1699 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[4,11],zero,zero,xmm2[0,7,14,u,u,u,u,u,u,u]
1700 ; AVX512F-NEXT:    vpor %xmm1, %xmm2, %xmm1
1701 ; AVX512F-NEXT:    vpblendw {{.*#+}} xmm2 = xmm3[0],xmm4[1,2,3],xmm3[4],xmm4[5,6],xmm3[7]
1702 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,u,u,5,12],zero,zero,xmm2[1,8,15]
1703 ; AVX512F-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u,u,u],zero,zero,xmm0[3,10],zero,zero,zero
1704 ; AVX512F-NEXT:    vpor %xmm0, %xmm2, %xmm0
1705 ; AVX512F-NEXT:    vpternlogq $184, %xmm1, %xmm7, %xmm0
1706 ; AVX512F-NEXT:    vmovdqa %xmm5, (%rsi)
1707 ; AVX512F-NEXT:    vmovdqa %xmm6, (%rdx)
1708 ; AVX512F-NEXT:    vmovdqa %xmm11, (%rcx)
1709 ; AVX512F-NEXT:    vmovdqa %xmm14, (%r8)
1710 ; AVX512F-NEXT:    vmovdqa %xmm12, (%r9)
1711 ; AVX512F-NEXT:    vmovdqa %xmm9, (%r10)
1712 ; AVX512F-NEXT:    vmovdqa %xmm0, (%rax)
1713 ; AVX512F-NEXT:    vzeroupper
1714 ; AVX512F-NEXT:    retq
1716 ; AVX512BW-LABEL: load_i8_stride7_vf16:
1717 ; AVX512BW:       # %bb.0:
1718 ; AVX512BW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1719 ; AVX512BW-NEXT:    movq {{[0-9]+}}(%rsp), %r10
1720 ; AVX512BW-NEXT:    vmovdqa 96(%rdi), %xmm0
1721 ; AVX512BW-NEXT:    vmovdqa 64(%rdi), %xmm1
1722 ; AVX512BW-NEXT:    vpblendd {{.*#+}} xmm2 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
1723 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm2[u,u,u,u,u,u,u,u,u,u,6,13],zero,zero,xmm2[2,9]
1724 ; AVX512BW-NEXT:    vmovdqa (%rdi), %ymm3
1725 ; AVX512BW-NEXT:    vmovdqa 32(%rdi), %ymm2
1726 ; AVX512BW-NEXT:    movw $-28382, %r11w # imm = 0x9122
1727 ; AVX512BW-NEXT:    kmovd %r11d, %k1
1728 ; AVX512BW-NEXT:    vpblendmw %ymm2, %ymm3, %ymm5 {%k1}
1729 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm5[0,7,14],zero,zero,xmm5[3,10],zero,zero,zero,xmm5[u,u,u,u,u,u]
1730 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm4 = xmm6[0,1,2,3,4],xmm4[5,6,7]
1731 ; AVX512BW-NEXT:    vextracti128 $1, %ymm5, %xmm5
1732 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm5[5,12],zero,zero,xmm5[1,8,15,u,u,u,u,u,u]
1733 ; AVX512BW-NEXT:    vmovdqa 80(%rdi), %xmm5
1734 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm5[u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[4,11],zero,zero
1735 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm6 = xmm6[0,1,2,3,4],xmm7[5,6,7]
1736 ; AVX512BW-NEXT:    vpor %xmm6, %xmm4, %xmm4
1737 ; AVX512BW-NEXT:    movw $4644, %di # imm = 0x1224
1738 ; AVX512BW-NEXT:    kmovd %edi, %k2
1739 ; AVX512BW-NEXT:    vpblendmw %ymm2, %ymm3, %ymm6 {%k2}
1740 ; AVX512BW-NEXT:    vextracti128 $1, %ymm6, %xmm7
1741 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm7[6,13],zero,zero,xmm7[2,9,u,u,u,u,u,u,u]
1742 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[1,8,15],zero,zero,xmm6[4,11],zero,zero,xmm6[u,u,u,u,u,u,u]
1743 ; AVX512BW-NEXT:    vpor %xmm7, %xmm6, %xmm6
1744 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm7 = xmm1[0],xmm0[1],xmm1[2,3,4],xmm0[5],xmm1[6,7]
1745 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,u,u,0,7,14],zero,zero,xmm7[3,10]
1746 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm5[u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[5,12],zero,zero
1747 ; AVX512BW-NEXT:    vpor %xmm7, %xmm8, %xmm7
1748 ; AVX512BW-NEXT:    movw $-512, %di # imm = 0xFE00
1749 ; AVX512BW-NEXT:    kmovd %edi, %k1
1750 ; AVX512BW-NEXT:    vmovdqu8 %xmm7, %xmm6 {%k1}
1751 ; AVX512BW-NEXT:    movw $8772, %di # imm = 0x2244
1752 ; AVX512BW-NEXT:    kmovd %edi, %k3
1753 ; AVX512BW-NEXT:    vpblendmw %ymm2, %ymm3, %ymm7 {%k3}
1754 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm7[2,9],zero,zero,zero,xmm7[5,12],zero,zero,xmm7[u,u,u,u,u,u,u]
1755 ; AVX512BW-NEXT:    vextracti128 $1, %ymm7, %xmm7
1756 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm7[0,7,14],zero,zero,xmm7[3,10,u,u,u,u,u,u,u]
1757 ; AVX512BW-NEXT:    vpor %xmm7, %xmm8, %xmm7
1758 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm8 = xmm1[0,1],xmm0[2],xmm1[3,4],xmm0[5],xmm1[6,7]
1759 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,u,u,1,8,15],zero,zero,xmm8[4,11]
1760 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm5[u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[6,13],zero,zero
1761 ; AVX512BW-NEXT:    vpor %xmm9, %xmm8, %xmm8
1762 ; AVX512BW-NEXT:    vmovdqu8 %xmm8, %xmm7 {%k1}
1763 ; AVX512BW-NEXT:    movw $9288, %di # imm = 0x2448
1764 ; AVX512BW-NEXT:    kmovd %edi, %k4
1765 ; AVX512BW-NEXT:    vpblendmw %ymm2, %ymm3, %ymm8 {%k4}
1766 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm8[3,10],zero,zero,zero,xmm8[6,13],zero,zero,xmm8[u,u,u,u,u,u,u]
1767 ; AVX512BW-NEXT:    vextracti128 $1, %ymm8, %xmm8
1768 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm8[1,8,15],zero,zero,xmm8[4,11,u,u,u,u,u,u,u]
1769 ; AVX512BW-NEXT:    vpor %xmm9, %xmm8, %xmm8
1770 ; AVX512BW-NEXT:    vpblendd {{.*#+}} xmm9 = xmm1[0],xmm0[1],xmm1[2],xmm0[3]
1771 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm9[u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm9[5,12]
1772 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm5[u,u,u,u,u,u,u,u,u],zero,zero,xmm5[0,7,14],zero,zero
1773 ; AVX512BW-NEXT:    vpor %xmm11, %xmm10, %xmm10
1774 ; AVX512BW-NEXT:    vmovdqu8 %xmm10, %xmm8 {%k1}
1775 ; AVX512BW-NEXT:    vpblendmw %ymm3, %ymm2, %ymm10 {%k2}
1776 ; AVX512BW-NEXT:    vextracti128 $1, %ymm10, %xmm11
1777 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm11[2,9],zero,zero,zero,xmm11[5,12,u,u,u,u,u,u,u]
1778 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[4,11],zero,zero,xmm10[0,7,14],zero,zero,xmm10[u,u,u,u,u,u,u]
1779 ; AVX512BW-NEXT:    vpor %xmm11, %xmm10, %xmm10
1780 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm9[6,13]
1781 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm5[u,u,u,u,u,u,u,u,u],zero,zero,xmm5[1,8,15],zero,zero
1782 ; AVX512BW-NEXT:    vpor %xmm11, %xmm9, %xmm9
1783 ; AVX512BW-NEXT:    vmovdqu8 %xmm9, %xmm10 {%k1}
1784 ; AVX512BW-NEXT:    vpblendmw %ymm3, %ymm2, %ymm9 {%k3}
1785 ; AVX512BW-NEXT:    vextracti128 $1, %ymm9, %xmm11
1786 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm11[3,10],zero,zero,zero,xmm11[6,13,u,u,u,u,u,u,u]
1787 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[5,12],zero,zero,xmm9[1,8,15],zero,zero,xmm9[u,u,u,u,u,u,u]
1788 ; AVX512BW-NEXT:    vpor %xmm11, %xmm9, %xmm9
1789 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm11 = xmm0[0],xmm1[1,2],xmm0[3],xmm1[4,5,6],xmm0[7]
1790 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,u,u,u,u,u,u,u,4,11],zero,zero,xmm11[0,7,14]
1791 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm5[u,u,u,u,u,u,u,u,u],zero,zero,xmm5[2,9],zero,zero,zero
1792 ; AVX512BW-NEXT:    vpor %xmm12, %xmm11, %xmm11
1793 ; AVX512BW-NEXT:    vmovdqu8 %xmm11, %xmm9 {%k1}
1794 ; AVX512BW-NEXT:    vmovdqu16 %ymm3, %ymm2 {%k4}
1795 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[6,13],zero,zero,xmm2[2,9],zero,zero,zero,xmm2[u,u,u,u,u,u,u]
1796 ; AVX512BW-NEXT:    vextracti128 $1, %ymm2, %xmm2
1797 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[4,11],zero,zero,xmm2[0,7,14,u,u,u,u,u,u,u]
1798 ; AVX512BW-NEXT:    vpor %xmm3, %xmm2, %xmm2
1799 ; AVX512BW-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3],xmm0[4],xmm1[5,6],xmm0[7]
1800 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u,u,u,5,12],zero,zero,xmm0[1,8,15]
1801 ; AVX512BW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm5[u,u,u,u,u,u,u,u,u],zero,zero,xmm5[3,10],zero,zero,zero
1802 ; AVX512BW-NEXT:    vpor %xmm1, %xmm0, %xmm0
1803 ; AVX512BW-NEXT:    vmovdqu8 %xmm0, %xmm2 {%k1}
1804 ; AVX512BW-NEXT:    vmovdqa %xmm4, (%rsi)
1805 ; AVX512BW-NEXT:    vmovdqa %xmm6, (%rdx)
1806 ; AVX512BW-NEXT:    vmovdqa %xmm7, (%rcx)
1807 ; AVX512BW-NEXT:    vmovdqa %xmm8, (%r8)
1808 ; AVX512BW-NEXT:    vmovdqa %xmm10, (%r9)
1809 ; AVX512BW-NEXT:    vmovdqa %xmm9, (%r10)
1810 ; AVX512BW-NEXT:    vmovdqa %xmm2, (%rax)
1811 ; AVX512BW-NEXT:    vzeroupper
1812 ; AVX512BW-NEXT:    retq
1813   %wide.vec = load <112 x i8>, ptr %in.vec, align 64
1814   %strided.vec0 = shufflevector <112 x i8> %wide.vec, <112 x i8> poison, <16 x i32> <i32 0, i32 7, i32 14, i32 21, i32 28, i32 35, i32 42, i32 49, i32 56, i32 63, i32 70, i32 77, i32 84, i32 91, i32 98, i32 105>
1815   %strided.vec1 = shufflevector <112 x i8> %wide.vec, <112 x i8> poison, <16 x i32> <i32 1, i32 8, i32 15, i32 22, i32 29, i32 36, i32 43, i32 50, i32 57, i32 64, i32 71, i32 78, i32 85, i32 92, i32 99, i32 106>
1816   %strided.vec2 = shufflevector <112 x i8> %wide.vec, <112 x i8> poison, <16 x i32> <i32 2, i32 9, i32 16, i32 23, i32 30, i32 37, i32 44, i32 51, i32 58, i32 65, i32 72, i32 79, i32 86, i32 93, i32 100, i32 107>
1817   %strided.vec3 = shufflevector <112 x i8> %wide.vec, <112 x i8> poison, <16 x i32> <i32 3, i32 10, i32 17, i32 24, i32 31, i32 38, i32 45, i32 52, i32 59, i32 66, i32 73, i32 80, i32 87, i32 94, i32 101, i32 108>
1818   %strided.vec4 = shufflevector <112 x i8> %wide.vec, <112 x i8> poison, <16 x i32> <i32 4, i32 11, i32 18, i32 25, i32 32, i32 39, i32 46, i32 53, i32 60, i32 67, i32 74, i32 81, i32 88, i32 95, i32 102, i32 109>
1819   %strided.vec5 = shufflevector <112 x i8> %wide.vec, <112 x i8> poison, <16 x i32> <i32 5, i32 12, i32 19, i32 26, i32 33, i32 40, i32 47, i32 54, i32 61, i32 68, i32 75, i32 82, i32 89, i32 96, i32 103, i32 110>
1820   %strided.vec6 = shufflevector <112 x i8> %wide.vec, <112 x i8> poison, <16 x i32> <i32 6, i32 13, i32 20, i32 27, i32 34, i32 41, i32 48, i32 55, i32 62, i32 69, i32 76, i32 83, i32 90, i32 97, i32 104, i32 111>
1821   store <16 x i8> %strided.vec0, ptr %out.vec0, align 64
1822   store <16 x i8> %strided.vec1, ptr %out.vec1, align 64
1823   store <16 x i8> %strided.vec2, ptr %out.vec2, align 64
1824   store <16 x i8> %strided.vec3, ptr %out.vec3, align 64
1825   store <16 x i8> %strided.vec4, ptr %out.vec4, align 64
1826   store <16 x i8> %strided.vec5, ptr %out.vec5, align 64
1827   store <16 x i8> %strided.vec6, ptr %out.vec6, align 64
1828   ret void
1831 define void @load_i8_stride7_vf32(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5, ptr %out.vec6) nounwind {
1832 ; SSE-LABEL: load_i8_stride7_vf32:
1833 ; SSE:       # %bb.0:
1834 ; SSE-NEXT:    subq $648, %rsp # imm = 0x288
1835 ; SSE-NEXT:    movdqa 208(%rdi), %xmm14
1836 ; SSE-NEXT:    movdqa 192(%rdi), %xmm5
1837 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1838 ; SSE-NEXT:    movdqa 176(%rdi), %xmm6
1839 ; SSE-NEXT:    movdqa 112(%rdi), %xmm4
1840 ; SSE-NEXT:    movdqa 128(%rdi), %xmm3
1841 ; SSE-NEXT:    movdqa 160(%rdi), %xmm7
1842 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1843 ; SSE-NEXT:    movdqa 144(%rdi), %xmm1
1844 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1845 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,0,65535,65535,65535,0,65535,65535]
1846 ; SSE-NEXT:    movdqa %xmm2, %xmm0
1847 ; SSE-NEXT:    pandn %xmm1, %xmm0
1848 ; SSE-NEXT:    movdqa %xmm7, %xmm1
1849 ; SSE-NEXT:    pand %xmm2, %xmm1
1850 ; SSE-NEXT:    movdqa %xmm2, %xmm9
1851 ; SSE-NEXT:    por %xmm0, %xmm1
1852 ; SSE-NEXT:    pxor %xmm10, %xmm10
1853 ; SSE-NEXT:    movdqa %xmm1, %xmm0
1854 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm10[8],xmm0[9],xmm10[9],xmm0[10],xmm10[10],xmm0[11],xmm10[11],xmm0[12],xmm10[12],xmm0[13],xmm10[13],xmm0[14],xmm10[14],xmm0[15],xmm10[15]
1855 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm10[0],xmm1[1],xmm10[1],xmm1[2],xmm10[2],xmm1[3],xmm10[3],xmm1[4],xmm10[4],xmm1[5],xmm10[5],xmm1[6],xmm10[6],xmm1[7],xmm10[7]
1856 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
1857 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
1858 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
1859 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm1[0,1,2,3,4,4,5,6]
1860 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
1861 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
1862 ; SSE-NEXT:    packuswb %xmm0, %xmm2
1863 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [255,255,255,255,255,0,0,0,0,0,255,255,255,255,255,255]
1864 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,65535,0,65535,65535,65535,0,65535]
1865 ; SSE-NEXT:    movdqa %xmm7, %xmm1
1866 ; SSE-NEXT:    pandn %xmm3, %xmm1
1867 ; SSE-NEXT:    movdqa %xmm3, %xmm11
1868 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1869 ; SSE-NEXT:    movdqa %xmm4, %xmm3
1870 ; SSE-NEXT:    movdqa %xmm4, %xmm12
1871 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1872 ; SSE-NEXT:    pand %xmm7, %xmm3
1873 ; SSE-NEXT:    movdqa %xmm7, %xmm8
1874 ; SSE-NEXT:    por %xmm1, %xmm3
1875 ; SSE-NEXT:    movdqa %xmm3, %xmm1
1876 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm10[8],xmm1[9],xmm10[9],xmm1[10],xmm10[10],xmm1[11],xmm10[11],xmm1[12],xmm10[12],xmm1[13],xmm10[13],xmm1[14],xmm10[14],xmm1[15],xmm10[15]
1877 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,65535,65535,65535,0,65535,0,65535]
1878 ; SSE-NEXT:    movdqa %xmm7, %xmm4
1879 ; SSE-NEXT:    pandn %xmm1, %xmm4
1880 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm10[0],xmm3[1],xmm10[1],xmm3[2],xmm10[2],xmm3[3],xmm10[3],xmm3[4],xmm10[4],xmm3[5],xmm10[5],xmm3[6],xmm10[6],xmm3[7],xmm10[7]
1881 ; SSE-NEXT:    pand %xmm7, %xmm3
1882 ; SSE-NEXT:    movdqa %xmm7, %xmm15
1883 ; SSE-NEXT:    por %xmm4, %xmm3
1884 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,2,1,3]
1885 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
1886 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,1,1]
1887 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
1888 ; SSE-NEXT:    packuswb %xmm1, %xmm1
1889 ; SSE-NEXT:    pand %xmm0, %xmm1
1890 ; SSE-NEXT:    movdqa %xmm0, %xmm3
1891 ; SSE-NEXT:    pandn %xmm2, %xmm3
1892 ; SSE-NEXT:    por %xmm3, %xmm1
1893 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,65535,65535,0,65535,65535,0,65535]
1894 ; SSE-NEXT:    movdqa %xmm7, %xmm2
1895 ; SSE-NEXT:    pandn %xmm6, %xmm2
1896 ; SSE-NEXT:    movdqa %xmm6, %xmm13
1897 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1898 ; SSE-NEXT:    movdqa %xmm5, %xmm3
1899 ; SSE-NEXT:    pand %xmm7, %xmm3
1900 ; SSE-NEXT:    por %xmm2, %xmm3
1901 ; SSE-NEXT:    movdqa %xmm3, %xmm2
1902 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3],xmm2[4],xmm10[4],xmm2[5],xmm10[5],xmm2[6],xmm10[6],xmm2[7],xmm10[7]
1903 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,4,7]
1904 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm10[8],xmm3[9],xmm10[9],xmm3[10],xmm10[10],xmm3[11],xmm10[11],xmm3[12],xmm10[12],xmm3[13],xmm10[13],xmm3[14],xmm10[14],xmm3[15],xmm10[15]
1905 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
1906 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,7,7]
1907 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
1908 ; SSE-NEXT:    movdqa %xmm14, %xmm3
1909 ; SSE-NEXT:    movdqa %xmm14, %xmm4
1910 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm10[8],xmm4[9],xmm10[9],xmm4[10],xmm10[10],xmm4[11],xmm10[11],xmm4[12],xmm10[12],xmm4[13],xmm10[13],xmm4[14],xmm10[14],xmm4[15],xmm10[15]
1911 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1912 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm10[0],xmm3[1],xmm10[1],xmm3[2],xmm10[2],xmm3[3],xmm10[3],xmm3[4],xmm10[4],xmm3[5],xmm10[5],xmm3[6],xmm10[6],xmm3[7],xmm10[7]
1913 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1914 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
1915 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
1916 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
1917 ; SSE-NEXT:    packuswb %xmm3, %xmm3
1918 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,65535,65535,65535,65535,65535,65535,0]
1919 ; SSE-NEXT:    movdqa %xmm5, %xmm4
1920 ; SSE-NEXT:    pandn %xmm3, %xmm4
1921 ; SSE-NEXT:    packuswb %xmm2, %xmm2
1922 ; SSE-NEXT:    pand %xmm5, %xmm2
1923 ; SSE-NEXT:    movdqa %xmm5, %xmm6
1924 ; SSE-NEXT:    por %xmm2, %xmm4
1925 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,65535,65535,65535,65535,0,0,0]
1926 ; SSE-NEXT:    movdqa %xmm5, %xmm2
1927 ; SSE-NEXT:    pandn %xmm4, %xmm2
1928 ; SSE-NEXT:    pand %xmm5, %xmm1
1929 ; SSE-NEXT:    por %xmm1, %xmm2
1930 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1931 ; SSE-NEXT:    movdqa 32(%rdi), %xmm2
1932 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1933 ; SSE-NEXT:    movdqa %xmm9, %xmm1
1934 ; SSE-NEXT:    pandn %xmm2, %xmm1
1935 ; SSE-NEXT:    movdqa 48(%rdi), %xmm2
1936 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1937 ; SSE-NEXT:    pand %xmm9, %xmm2
1938 ; SSE-NEXT:    por %xmm1, %xmm2
1939 ; SSE-NEXT:    movdqa %xmm2, %xmm1
1940 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm10[8],xmm1[9],xmm10[9],xmm1[10],xmm10[10],xmm1[11],xmm10[11],xmm1[12],xmm10[12],xmm1[13],xmm10[13],xmm1[14],xmm10[14],xmm1[15],xmm10[15]
1941 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3],xmm2[4],xmm10[4],xmm2[5],xmm10[5],xmm2[6],xmm10[6],xmm2[7],xmm10[7]
1942 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
1943 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,6,7]
1944 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
1945 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]
1946 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
1947 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
1948 ; SSE-NEXT:    packuswb %xmm1, %xmm2
1949 ; SSE-NEXT:    movdqa 16(%rdi), %xmm3
1950 ; SSE-NEXT:    movdqa %xmm8, %xmm1
1951 ; SSE-NEXT:    pandn %xmm3, %xmm1
1952 ; SSE-NEXT:    movdqa %xmm3, %xmm14
1953 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1954 ; SSE-NEXT:    movdqa (%rdi), %xmm4
1955 ; SSE-NEXT:    movdqa %xmm4, %xmm3
1956 ; SSE-NEXT:    movdqa %xmm4, %xmm9
1957 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1958 ; SSE-NEXT:    pand %xmm8, %xmm3
1959 ; SSE-NEXT:    por %xmm1, %xmm3
1960 ; SSE-NEXT:    movdqa %xmm3, %xmm1
1961 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm10[8],xmm1[9],xmm10[9],xmm1[10],xmm10[10],xmm1[11],xmm10[11],xmm1[12],xmm10[12],xmm1[13],xmm10[13],xmm1[14],xmm10[14],xmm1[15],xmm10[15]
1962 ; SSE-NEXT:    movdqa %xmm15, %xmm4
1963 ; SSE-NEXT:    pandn %xmm1, %xmm4
1964 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm10[0],xmm3[1],xmm10[1],xmm3[2],xmm10[2],xmm3[3],xmm10[3],xmm3[4],xmm10[4],xmm3[5],xmm10[5],xmm3[6],xmm10[6],xmm3[7],xmm10[7]
1965 ; SSE-NEXT:    pand %xmm15, %xmm3
1966 ; SSE-NEXT:    por %xmm4, %xmm3
1967 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,2,1,3]
1968 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
1969 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,1,1]
1970 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
1971 ; SSE-NEXT:    packuswb %xmm1, %xmm1
1972 ; SSE-NEXT:    pand %xmm0, %xmm1
1973 ; SSE-NEXT:    pandn %xmm2, %xmm0
1974 ; SSE-NEXT:    por %xmm0, %xmm1
1975 ; SSE-NEXT:    movdqa 64(%rdi), %xmm2
1976 ; SSE-NEXT:    movdqa %xmm7, %xmm0
1977 ; SSE-NEXT:    pandn %xmm2, %xmm0
1978 ; SSE-NEXT:    movdqa %xmm2, %xmm15
1979 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1980 ; SSE-NEXT:    movdqa 80(%rdi), %xmm8
1981 ; SSE-NEXT:    movdqa %xmm8, %xmm2
1982 ; SSE-NEXT:    pand %xmm7, %xmm2
1983 ; SSE-NEXT:    por %xmm0, %xmm2
1984 ; SSE-NEXT:    movdqa %xmm2, %xmm0
1985 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3],xmm0[4],xmm10[4],xmm0[5],xmm10[5],xmm0[6],xmm10[6],xmm0[7],xmm10[7]
1986 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,4,7]
1987 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm10[8],xmm2[9],xmm10[9],xmm2[10],xmm10[10],xmm2[11],xmm10[11],xmm2[12],xmm10[12],xmm2[13],xmm10[13],xmm2[14],xmm10[14],xmm2[15],xmm10[15]
1988 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
1989 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7]
1990 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
1991 ; SSE-NEXT:    movdqa 96(%rdi), %xmm2
1992 ; SSE-NEXT:    movdqa %xmm2, %xmm3
1993 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm10[8],xmm3[9],xmm10[9],xmm3[10],xmm10[10],xmm3[11],xmm10[11],xmm3[12],xmm10[12],xmm3[13],xmm10[13],xmm3[14],xmm10[14],xmm3[15],xmm10[15]
1994 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1995 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm10[0],xmm2[1],xmm10[1],xmm2[2],xmm10[2],xmm2[3],xmm10[3],xmm2[4],xmm10[4],xmm2[5],xmm10[5],xmm2[6],xmm10[6],xmm2[7],xmm10[7]
1996 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1997 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
1998 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
1999 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]
2000 ; SSE-NEXT:    packuswb %xmm2, %xmm2
2001 ; SSE-NEXT:    movdqa %xmm6, %xmm3
2002 ; SSE-NEXT:    pandn %xmm2, %xmm3
2003 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2004 ; SSE-NEXT:    pand %xmm6, %xmm0
2005 ; SSE-NEXT:    por %xmm0, %xmm3
2006 ; SSE-NEXT:    pand %xmm5, %xmm1
2007 ; SSE-NEXT:    pandn %xmm3, %xmm5
2008 ; SSE-NEXT:    por %xmm1, %xmm5
2009 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2010 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,0,65535,65535,0,65535,65535]
2011 ; SSE-NEXT:    movdqa %xmm2, %xmm0
2012 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2013 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2014 ; SSE-NEXT:    pand %xmm2, %xmm1
2015 ; SSE-NEXT:    por %xmm0, %xmm1
2016 ; SSE-NEXT:    movdqa %xmm1, %xmm2
2017 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm10[8],xmm2[9],xmm10[9],xmm2[10],xmm10[10],xmm2[11],xmm10[11],xmm2[12],xmm10[12],xmm2[13],xmm10[13],xmm2[14],xmm10[14],xmm2[15],xmm10[15]
2018 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,0,65535,65535,65535,65535]
2019 ; SSE-NEXT:    movdqa %xmm0, %xmm3
2020 ; SSE-NEXT:    pandn %xmm2, %xmm3
2021 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm10[0],xmm1[1],xmm10[1],xmm1[2],xmm10[2],xmm1[3],xmm10[3],xmm1[4],xmm10[4],xmm1[5],xmm10[5],xmm1[6],xmm10[6],xmm1[7],xmm10[7]
2022 ; SSE-NEXT:    pand %xmm0, %xmm1
2023 ; SSE-NEXT:    por %xmm3, %xmm1
2024 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
2025 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
2026 ; SSE-NEXT:    psrld $16, %xmm2
2027 ; SSE-NEXT:    packuswb %xmm2, %xmm1
2028 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [255,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255]
2029 ; SSE-NEXT:    movdqa %xmm5, %xmm2
2030 ; SSE-NEXT:    pandn %xmm1, %xmm2
2031 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2032 ; SSE-NEXT:    pandn %xmm11, %xmm1
2033 ; SSE-NEXT:    movdqa %xmm12, %xmm3
2034 ; SSE-NEXT:    pand %xmm7, %xmm3
2035 ; SSE-NEXT:    movdqa %xmm7, %xmm12
2036 ; SSE-NEXT:    por %xmm1, %xmm3
2037 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2038 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm10[0],xmm1[1],xmm10[1],xmm1[2],xmm10[2],xmm1[3],xmm10[3],xmm1[4],xmm10[4],xmm1[5],xmm10[5],xmm1[6],xmm10[6],xmm1[7],xmm10[7]
2039 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,0,65535,65535,65535,65535,0,65535]
2040 ; SSE-NEXT:    movdqa %xmm7, %xmm4
2041 ; SSE-NEXT:    pandn %xmm1, %xmm4
2042 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm10[8],xmm3[9],xmm10[9],xmm3[10],xmm10[10],xmm3[11],xmm10[11],xmm3[12],xmm10[12],xmm3[13],xmm10[13],xmm3[14],xmm10[14],xmm3[15],xmm10[15]
2043 ; SSE-NEXT:    pand %xmm7, %xmm3
2044 ; SSE-NEXT:    por %xmm4, %xmm3
2045 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,3,2,3]
2046 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,2,4,5,6,7]
2047 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
2048 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2049 ; SSE-NEXT:    pand %xmm5, %xmm1
2050 ; SSE-NEXT:    movdqa %xmm5, %xmm7
2051 ; SSE-NEXT:    por %xmm2, %xmm1
2052 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,0,65535,65535,65535,0,65535]
2053 ; SSE-NEXT:    movdqa %xmm4, %xmm2
2054 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
2055 ; SSE-NEXT:    movdqa %xmm13, %xmm3
2056 ; SSE-NEXT:    pand %xmm4, %xmm3
2057 ; SSE-NEXT:    movdqa %xmm4, %xmm13
2058 ; SSE-NEXT:    por %xmm2, %xmm3
2059 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2060 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm10[8],xmm2[9],xmm10[9],xmm2[10],xmm10[10],xmm2[11],xmm10[11],xmm2[12],xmm10[12],xmm2[13],xmm10[13],xmm2[14],xmm10[14],xmm2[15],xmm10[15]
2061 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [65535,65535,65535,65535,0,65535,0,65535]
2062 ; SSE-NEXT:    movdqa %xmm11, %xmm4
2063 ; SSE-NEXT:    pandn %xmm2, %xmm4
2064 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm10[0],xmm3[1],xmm10[1],xmm3[2],xmm10[2],xmm3[3],xmm10[3],xmm3[4],xmm10[4],xmm3[5],xmm10[5],xmm3[6],xmm10[6],xmm3[7],xmm10[7]
2065 ; SSE-NEXT:    pand %xmm11, %xmm3
2066 ; SSE-NEXT:    por %xmm4, %xmm3
2067 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2068 ; SSE-NEXT:    pslld $16, %xmm2
2069 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
2070 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]
2071 ; SSE-NEXT:    packuswb %xmm4, %xmm2
2072 ; SSE-NEXT:    movdqa %xmm6, %xmm4
2073 ; SSE-NEXT:    pandn %xmm2, %xmm4
2074 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm3[0,3,2,3]
2075 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,0,3,2,4,5,6,7]
2076 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]
2077 ; SSE-NEXT:    packuswb %xmm2, %xmm2
2078 ; SSE-NEXT:    pand %xmm6, %xmm2
2079 ; SSE-NEXT:    por %xmm2, %xmm4
2080 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
2081 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2082 ; SSE-NEXT:    pandn %xmm4, %xmm2
2083 ; SSE-NEXT:    pand %xmm3, %xmm1
2084 ; SSE-NEXT:    por %xmm1, %xmm2
2085 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2086 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,65535,0,65535,65535,0,65535,65535]
2087 ; SSE-NEXT:    movdqa %xmm5, %xmm1
2088 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2089 ; SSE-NEXT:    pandn %xmm6, %xmm1
2090 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
2091 ; SSE-NEXT:    movdqa %xmm10, %xmm2
2092 ; SSE-NEXT:    pand %xmm5, %xmm2
2093 ; SSE-NEXT:    por %xmm1, %xmm2
2094 ; SSE-NEXT:    movdqa %xmm2, %xmm1
2095 ; SSE-NEXT:    pxor %xmm3, %xmm3
2096 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm3[8],xmm1[9],xmm3[9],xmm1[10],xmm3[10],xmm1[11],xmm3[11],xmm1[12],xmm3[12],xmm1[13],xmm3[13],xmm1[14],xmm3[14],xmm1[15],xmm3[15]
2097 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
2098 ; SSE-NEXT:    pxor %xmm5, %xmm5
2099 ; SSE-NEXT:    pand %xmm0, %xmm2
2100 ; SSE-NEXT:    pandn %xmm1, %xmm0
2101 ; SSE-NEXT:    por %xmm2, %xmm0
2102 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
2103 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,7,6]
2104 ; SSE-NEXT:    psrld $16, %xmm1
2105 ; SSE-NEXT:    packuswb %xmm1, %xmm0
2106 ; SSE-NEXT:    movdqa %xmm7, %xmm4
2107 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2108 ; SSE-NEXT:    pandn %xmm0, %xmm1
2109 ; SSE-NEXT:    movdqa %xmm12, %xmm0
2110 ; SSE-NEXT:    pandn %xmm14, %xmm0
2111 ; SSE-NEXT:    movdqa %xmm9, %xmm2
2112 ; SSE-NEXT:    pand %xmm12, %xmm2
2113 ; SSE-NEXT:    por %xmm0, %xmm2
2114 ; SSE-NEXT:    movdqa %xmm2, %xmm0
2115 ; 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]
2116 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,0,65535,65535,65535,65535,0,65535]
2117 ; SSE-NEXT:    movdqa %xmm7, %xmm3
2118 ; SSE-NEXT:    pandn %xmm0, %xmm3
2119 ; 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]
2120 ; SSE-NEXT:    pand %xmm7, %xmm2
2121 ; SSE-NEXT:    por %xmm3, %xmm2
2122 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,3,2,3]
2123 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,0,3,2,4,5,6,7]
2124 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
2125 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2126 ; SSE-NEXT:    pand %xmm4, %xmm0
2127 ; SSE-NEXT:    por %xmm1, %xmm0
2128 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2129 ; SSE-NEXT:    movdqa %xmm13, %xmm0
2130 ; SSE-NEXT:    pandn %xmm8, %xmm0
2131 ; SSE-NEXT:    movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2132 ; SSE-NEXT:    movdqa %xmm15, %xmm1
2133 ; SSE-NEXT:    pand %xmm13, %xmm1
2134 ; SSE-NEXT:    por %xmm0, %xmm1
2135 ; SSE-NEXT:    movdqa %xmm1, %xmm0
2136 ; SSE-NEXT:    pxor %xmm2, %xmm2
2137 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]
2138 ; 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]
2139 ; SSE-NEXT:    movdqa %xmm11, %xmm2
2140 ; SSE-NEXT:    pand %xmm11, %xmm1
2141 ; SSE-NEXT:    pandn %xmm0, %xmm2
2142 ; SSE-NEXT:    por %xmm1, %xmm2
2143 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2144 ; SSE-NEXT:    movdqa %xmm13, %xmm0
2145 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2146 ; SSE-NEXT:    pandn %xmm1, %xmm0
2147 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
2148 ; SSE-NEXT:    movdqa %xmm5, %xmm9
2149 ; SSE-NEXT:    pand %xmm13, %xmm9
2150 ; SSE-NEXT:    por %xmm0, %xmm9
2151 ; SSE-NEXT:    movdqa %xmm6, %xmm3
2152 ; SSE-NEXT:    movdqa %xmm6, %xmm0
2153 ; SSE-NEXT:    pand %xmm13, %xmm0
2154 ; SSE-NEXT:    pandn %xmm10, %xmm13
2155 ; SSE-NEXT:    por %xmm0, %xmm13
2156 ; SSE-NEXT:    movdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2157 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,0,65535,65535,0,65535,65535,65535]
2158 ; SSE-NEXT:    movdqa %xmm2, %xmm0
2159 ; SSE-NEXT:    pandn %xmm5, %xmm0
2160 ; SSE-NEXT:    movdqa %xmm12, %xmm7
2161 ; SSE-NEXT:    movdqa %xmm12, %xmm5
2162 ; SSE-NEXT:    pandn %xmm1, %xmm5
2163 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2164 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm1[0,2,2,3]
2165 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2166 ; SSE-NEXT:    pand %xmm2, %xmm1
2167 ; SSE-NEXT:    por %xmm0, %xmm1
2168 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2169 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2170 ; SSE-NEXT:    pand %xmm2, %xmm13
2171 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
2172 ; SSE-NEXT:    pand %xmm2, %xmm12
2173 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
2174 ; SSE-NEXT:    pand %xmm2, %xmm14
2175 ; SSE-NEXT:    pand %xmm2, %xmm8
2176 ; SSE-NEXT:    movdqa %xmm8, (%rsp) # 16-byte Spill
2177 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2178 ; SSE-NEXT:    pandn %xmm10, %xmm1
2179 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2180 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm10[0,2,2,3]
2181 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2182 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2183 ; SSE-NEXT:    pand %xmm2, %xmm10
2184 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2185 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2186 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2187 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2188 ; SSE-NEXT:    pandn %xmm3, %xmm2
2189 ; SSE-NEXT:    por %xmm10, %xmm2
2190 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2191 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [65535,0,65535,65535,65535,65535,65535,65535]
2192 ; SSE-NEXT:    movdqa %xmm7, %xmm1
2193 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2194 ; SSE-NEXT:    pandn %xmm2, %xmm1
2195 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2196 ; SSE-NEXT:    movdqa %xmm2, %xmm5
2197 ; SSE-NEXT:    movdqa %xmm2, %xmm3
2198 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2199 ; SSE-NEXT:    movdqa %xmm6, %xmm8
2200 ; SSE-NEXT:    pslld $16, %xmm8
2201 ; SSE-NEXT:    psrldq {{.*#+}} xmm5 = xmm5[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
2202 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2203 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3]
2204 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2205 ; SSE-NEXT:    movdqa %xmm1, %xmm15
2206 ; SSE-NEXT:    psrldq {{.*#+}} xmm15 = xmm15[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
2207 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm15 = xmm15[0],xmm6[0],xmm15[1],xmm6[1],xmm15[2],xmm6[2],xmm15[3],xmm6[3]
2208 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
2209 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2210 ; SSE-NEXT:    movdqa %xmm0, %xmm3
2211 ; SSE-NEXT:    movdqa %xmm1, %xmm0
2212 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm6[4],xmm0[5],xmm6[5],xmm0[6],xmm6[6],xmm0[7],xmm6[7]
2213 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2214 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2215 ; SSE-NEXT:    pxor %xmm10, %xmm10
2216 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm10[0],xmm9[1],xmm10[1],xmm9[2],xmm10[2],xmm9[3],xmm10[3],xmm9[4],xmm10[4],xmm9[5],xmm10[5],xmm9[6],xmm10[6],xmm9[7],xmm10[7]
2217 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,7,5,6,7]
2218 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[0,1,2,0]
2219 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm9[0,1,2,3,6,4,6,5]
2220 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,65535,65535,0,65535]
2221 ; SSE-NEXT:    pand %xmm4, %xmm0
2222 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2223 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2224 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2225 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3],xmm0[4],xmm10[4],xmm0[5],xmm10[5],xmm0[6],xmm10[6],xmm0[7],xmm10[7]
2226 ; SSE-NEXT:    pxor %xmm9, %xmm9
2227 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm0[0,1,2,3,7,5,6,7]
2228 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,1,2,0]
2229 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,6,4,6,5]
2230 ; SSE-NEXT:    movdqa %xmm4, %xmm0
2231 ; SSE-NEXT:    pand %xmm4, %xmm10
2232 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2233 ; SSE-NEXT:    pandn %xmm3, %xmm4
2234 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2235 ; SSE-NEXT:    pand %xmm0, %xmm2
2236 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2237 ; SSE-NEXT:    movdqa %xmm1, %xmm4
2238 ; SSE-NEXT:    pand %xmm0, %xmm4
2239 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2240 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2241 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2242 ; SSE-NEXT:    movdqa %xmm6, %xmm4
2243 ; SSE-NEXT:    pandn %xmm6, %xmm0
2244 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2245 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2246 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2247 ; 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]
2248 ; SSE-NEXT:    pand %xmm7, %xmm0
2249 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2250 ; SSE-NEXT:    pand %xmm7, %xmm3
2251 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2252 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2253 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2254 ; 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]
2255 ; SSE-NEXT:    pand %xmm7, %xmm6
2256 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2257 ; SSE-NEXT:    pand %xmm7, %xmm4
2258 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2259 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2260 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2261 ; SSE-NEXT:    pandn %xmm1, %xmm7
2262 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2263 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3]
2264 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2265 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,65535,65535,0]
2266 ; SSE-NEXT:    movdqa %xmm0, %xmm10
2267 ; SSE-NEXT:    pandn %xmm1, %xmm10
2268 ; SSE-NEXT:    pshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
2269 ; SSE-NEXT:    # xmm1 = mem[0,3,2,3]
2270 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,0,3,2,4,5,6,7]
2271 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,4,6,7]
2272 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2273 ; SSE-NEXT:    pand %xmm0, %xmm1
2274 ; SSE-NEXT:    movdqa %xmm0, %xmm2
2275 ; SSE-NEXT:    por %xmm1, %xmm10
2276 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
2277 ; SSE-NEXT:    movdqa %xmm0, %xmm3
2278 ; SSE-NEXT:    pandn %xmm10, %xmm3
2279 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2280 ; SSE-NEXT:    pand %xmm0, %xmm1
2281 ; SSE-NEXT:    movdqa %xmm0, %xmm8
2282 ; SSE-NEXT:    por %xmm1, %xmm3
2283 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2284 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,0,65535,65535,0,65535]
2285 ; SSE-NEXT:    movdqa %xmm0, %xmm1
2286 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
2287 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
2288 ; SSE-NEXT:    pand %xmm0, %xmm10
2289 ; SSE-NEXT:    por %xmm1, %xmm10
2290 ; SSE-NEXT:    movdqa %xmm10, %xmm1
2291 ; 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]
2292 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,0,65535,65535,65535,65535,0,65535]
2293 ; SSE-NEXT:    movdqa %xmm3, %xmm0
2294 ; SSE-NEXT:    pandn %xmm1, %xmm0
2295 ; 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]
2296 ; SSE-NEXT:    pand %xmm3, %xmm10
2297 ; SSE-NEXT:    por %xmm0, %xmm10
2298 ; SSE-NEXT:    packuswb %xmm5, %xmm0
2299 ; SSE-NEXT:    movdqa %xmm2, %xmm1
2300 ; SSE-NEXT:    pandn %xmm0, %xmm1
2301 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm10[0,3,2,3]
2302 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,3,4,5,6,7]
2303 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
2304 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2305 ; SSE-NEXT:    pand %xmm2, %xmm0
2306 ; SSE-NEXT:    por %xmm0, %xmm1
2307 ; SSE-NEXT:    movdqa %xmm8, %xmm0
2308 ; SSE-NEXT:    pandn %xmm1, %xmm0
2309 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2310 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
2311 ; SSE-NEXT:    por %xmm1, %xmm13
2312 ; SSE-NEXT:    movdqa %xmm13, %xmm1
2313 ; SSE-NEXT:    pxor %xmm6, %xmm6
2314 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
2315 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2316 ; SSE-NEXT:    pandn %xmm1, %xmm2
2317 ; 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]
2318 ; SSE-NEXT:    pand %xmm3, %xmm13
2319 ; SSE-NEXT:    movdqa %xmm3, %xmm5
2320 ; SSE-NEXT:    por %xmm2, %xmm13
2321 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2322 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm7[1,3,2,3]
2323 ; SSE-NEXT:    punpckldq {{.*#+}} xmm11 = xmm11[0],xmm1[0],xmm11[1],xmm1[1]
2324 ; SSE-NEXT:    movdqa %xmm11, %xmm2
2325 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm6[8],xmm2[9],xmm6[9],xmm2[10],xmm6[10],xmm2[11],xmm6[11],xmm2[12],xmm6[12],xmm2[13],xmm6[13],xmm2[14],xmm6[14],xmm2[15],xmm6[15]
2326 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535,0,65535,65535,65535]
2327 ; SSE-NEXT:    movdqa %xmm1, %xmm10
2328 ; SSE-NEXT:    pandn %xmm2, %xmm10
2329 ; 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]
2330 ; SSE-NEXT:    pand %xmm1, %xmm11
2331 ; SSE-NEXT:    por %xmm10, %xmm11
2332 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm11[0,1,2,1]
2333 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
2334 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,1,1]
2335 ; SSE-NEXT:    packuswb %xmm2, %xmm3
2336 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255]
2337 ; SSE-NEXT:    movdqa %xmm6, %xmm4
2338 ; SSE-NEXT:    pandn %xmm3, %xmm4
2339 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm13[0,2,1,3]
2340 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]
2341 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,3,3]
2342 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,0,3,4,5,6,7]
2343 ; SSE-NEXT:    packuswb %xmm2, %xmm2
2344 ; SSE-NEXT:    pand %xmm6, %xmm2
2345 ; SSE-NEXT:    movdqa %xmm6, %xmm13
2346 ; SSE-NEXT:    por %xmm2, %xmm4
2347 ; SSE-NEXT:    pand %xmm8, %xmm4
2348 ; SSE-NEXT:    por %xmm0, %xmm4
2349 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2350 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,65535,0,65535,65535,0,65535]
2351 ; SSE-NEXT:    movdqa %xmm10, %xmm0
2352 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2353 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2354 ; SSE-NEXT:    pand %xmm10, %xmm2
2355 ; SSE-NEXT:    por %xmm0, %xmm2
2356 ; SSE-NEXT:    movdqa %xmm2, %xmm0
2357 ; SSE-NEXT:    pxor %xmm6, %xmm6
2358 ; 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]
2359 ; SSE-NEXT:    movdqa %xmm5, %xmm11
2360 ; SSE-NEXT:    movdqa %xmm5, %xmm3
2361 ; SSE-NEXT:    pandn %xmm0, %xmm3
2362 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm6[8],xmm2[9],xmm6[9],xmm2[10],xmm6[10],xmm2[11],xmm6[11],xmm2[12],xmm6[12],xmm2[13],xmm6[13],xmm2[14],xmm6[14],xmm2[15],xmm6[15]
2363 ; SSE-NEXT:    pand %xmm5, %xmm2
2364 ; SSE-NEXT:    por %xmm3, %xmm2
2365 ; SSE-NEXT:    packuswb %xmm15, %xmm0
2366 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,65535,65535,65535,65535,65535,65535,0]
2367 ; SSE-NEXT:    movdqa %xmm4, %xmm3
2368 ; SSE-NEXT:    pandn %xmm0, %xmm3
2369 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,3,2,3]
2370 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,3,4,5,6,7]
2371 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
2372 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2373 ; SSE-NEXT:    pand %xmm4, %xmm0
2374 ; SSE-NEXT:    por %xmm0, %xmm3
2375 ; SSE-NEXT:    movdqa %xmm8, %xmm0
2376 ; SSE-NEXT:    movdqa %xmm8, %xmm15
2377 ; SSE-NEXT:    pandn %xmm3, %xmm0
2378 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
2379 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2380 ; SSE-NEXT:    pandn %xmm5, %xmm2
2381 ; SSE-NEXT:    por %xmm2, %xmm12
2382 ; SSE-NEXT:    movdqa %xmm12, %xmm2
2383 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm6[8],xmm2[9],xmm6[9],xmm2[10],xmm6[10],xmm2[11],xmm6[11],xmm2[12],xmm6[12],xmm2[13],xmm6[13],xmm2[14],xmm6[14],xmm2[15],xmm6[15]
2384 ; SSE-NEXT:    movdqa %xmm11, %xmm3
2385 ; SSE-NEXT:    pandn %xmm2, %xmm3
2386 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm12 = xmm12[0],xmm6[0],xmm12[1],xmm6[1],xmm12[2],xmm6[2],xmm12[3],xmm6[3],xmm12[4],xmm6[4],xmm12[5],xmm6[5],xmm12[6],xmm6[6],xmm12[7],xmm6[7]
2387 ; SSE-NEXT:    pand %xmm11, %xmm12
2388 ; SSE-NEXT:    por %xmm3, %xmm12
2389 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2390 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm8[1,3,2,3]
2391 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2392 ; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
2393 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2394 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm6[8],xmm2[9],xmm6[9],xmm2[10],xmm6[10],xmm2[11],xmm6[11],xmm2[12],xmm6[12],xmm2[13],xmm6[13],xmm2[14],xmm6[14],xmm2[15],xmm6[15]
2395 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3],xmm3[4],xmm6[4],xmm3[5],xmm6[5],xmm3[6],xmm6[6],xmm3[7],xmm6[7]
2396 ; SSE-NEXT:    pand %xmm1, %xmm3
2397 ; SSE-NEXT:    pandn %xmm2, %xmm1
2398 ; SSE-NEXT:    por %xmm3, %xmm1
2399 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
2400 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
2401 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,1,1]
2402 ; SSE-NEXT:    packuswb %xmm2, %xmm1
2403 ; SSE-NEXT:    movdqa %xmm13, %xmm2
2404 ; SSE-NEXT:    pandn %xmm1, %xmm2
2405 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm12[0,2,1,3]
2406 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
2407 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,3,3]
2408 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,0,3,4,5,6,7]
2409 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2410 ; SSE-NEXT:    pand %xmm13, %xmm1
2411 ; SSE-NEXT:    por %xmm1, %xmm2
2412 ; SSE-NEXT:    pand %xmm15, %xmm2
2413 ; SSE-NEXT:    por %xmm0, %xmm2
2414 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2415 ; SSE-NEXT:    movdqa %xmm10, %xmm0
2416 ; SSE-NEXT:    pandn %xmm7, %xmm0
2417 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2418 ; SSE-NEXT:    pand %xmm10, %xmm2
2419 ; SSE-NEXT:    por %xmm0, %xmm2
2420 ; SSE-NEXT:    movdqa %xmm2, %xmm0
2421 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm6[8],xmm0[9],xmm6[9],xmm0[10],xmm6[10],xmm0[11],xmm6[11],xmm0[12],xmm6[12],xmm0[13],xmm6[13],xmm0[14],xmm6[14],xmm0[15],xmm6[15]
2422 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
2423 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
2424 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm2[0,3,2,3,4,5,6,7]
2425 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
2426 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
2427 ; SSE-NEXT:    psrlq $48, %xmm0
2428 ; SSE-NEXT:    packuswb %xmm0, %xmm1
2429 ; SSE-NEXT:    movdqa %xmm13, %xmm0
2430 ; SSE-NEXT:    pandn %xmm1, %xmm0
2431 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,0,65535,65535,65535,0,65535,65535]
2432 ; SSE-NEXT:    movdqa %xmm3, %xmm1
2433 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
2434 ; SSE-NEXT:    pandn %xmm9, %xmm1
2435 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2436 ; SSE-NEXT:    movdqa %xmm7, %xmm2
2437 ; SSE-NEXT:    pand %xmm3, %xmm2
2438 ; SSE-NEXT:    por %xmm1, %xmm2
2439 ; SSE-NEXT:    movdqa %xmm2, %xmm1
2440 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
2441 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [65535,0,65535,0,65535,65535,65535,65535]
2442 ; SSE-NEXT:    movdqa %xmm4, %xmm3
2443 ; SSE-NEXT:    pandn %xmm1, %xmm3
2444 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm6[8],xmm2[9],xmm6[9],xmm2[10],xmm6[10],xmm2[11],xmm6[11],xmm2[12],xmm6[12],xmm2[13],xmm6[13],xmm2[14],xmm6[14],xmm2[15],xmm6[15]
2445 ; SSE-NEXT:    pand %xmm4, %xmm2
2446 ; SSE-NEXT:    por %xmm3, %xmm2
2447 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm2[3,2,1,0,4,5,6,7]
2448 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,7,7,7]
2449 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2450 ; SSE-NEXT:    pand %xmm13, %xmm1
2451 ; SSE-NEXT:    por %xmm0, %xmm1
2452 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
2453 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2454 ; SSE-NEXT:    pandn %xmm12, %xmm0
2455 ; SSE-NEXT:    por %xmm0, %xmm14
2456 ; SSE-NEXT:    movdqa %xmm14, %xmm0
2457 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm6[8],xmm0[9],xmm6[9],xmm0[10],xmm6[10],xmm0[11],xmm6[11],xmm0[12],xmm6[12],xmm0[13],xmm6[13],xmm0[14],xmm6[14],xmm0[15],xmm6[15]
2458 ; SSE-NEXT:    movdqa %xmm11, %xmm2
2459 ; SSE-NEXT:    pandn %xmm0, %xmm2
2460 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm14 = xmm14[0],xmm6[0],xmm14[1],xmm6[1],xmm14[2],xmm6[2],xmm14[3],xmm6[3],xmm14[4],xmm6[4],xmm14[5],xmm6[5],xmm14[6],xmm6[6],xmm14[7],xmm6[7]
2461 ; SSE-NEXT:    pand %xmm11, %xmm14
2462 ; SSE-NEXT:    por %xmm2, %xmm14
2463 ; SSE-NEXT:    pshuflw $230, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2464 ; SSE-NEXT:    # xmm0 = mem[2,1,2,3,4,5,6,7]
2465 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
2466 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2467 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,65535,65535,65535,65535,65535,0]
2468 ; SSE-NEXT:    movdqa %xmm10, %xmm2
2469 ; SSE-NEXT:    pandn %xmm0, %xmm2
2470 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm14[0,2,1,0,4,5,6,7]
2471 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,6,6,7]
2472 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2473 ; SSE-NEXT:    pand %xmm10, %xmm0
2474 ; SSE-NEXT:    por %xmm0, %xmm2
2475 ; SSE-NEXT:    movdqa %xmm15, %xmm0
2476 ; SSE-NEXT:    pandn %xmm2, %xmm0
2477 ; SSE-NEXT:    pand %xmm15, %xmm1
2478 ; SSE-NEXT:    por %xmm1, %xmm0
2479 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2480 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [65535,65535,65535,0,65535,65535,0,65535]
2481 ; SSE-NEXT:    movdqa %xmm11, %xmm0
2482 ; SSE-NEXT:    pandn %xmm8, %xmm0
2483 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2484 ; SSE-NEXT:    pand %xmm11, %xmm1
2485 ; SSE-NEXT:    por %xmm0, %xmm1
2486 ; SSE-NEXT:    movdqa %xmm1, %xmm0
2487 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm6[8],xmm0[9],xmm6[9],xmm0[10],xmm6[10],xmm0[11],xmm6[11],xmm0[12],xmm6[12],xmm0[13],xmm6[13],xmm0[14],xmm6[14],xmm0[15],xmm6[15]
2488 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
2489 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
2490 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
2491 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
2492 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
2493 ; SSE-NEXT:    psrlq $48, %xmm0
2494 ; SSE-NEXT:    packuswb %xmm0, %xmm1
2495 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [65535,0,65535,65535,65535,0,65535,65535]
2496 ; SSE-NEXT:    movdqa %xmm8, %xmm0
2497 ; SSE-NEXT:    movdqa %xmm5, %xmm11
2498 ; SSE-NEXT:    pandn %xmm5, %xmm0
2499 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2500 ; SSE-NEXT:    movdqa %xmm3, %xmm2
2501 ; SSE-NEXT:    pand %xmm8, %xmm2
2502 ; SSE-NEXT:    por %xmm0, %xmm2
2503 ; SSE-NEXT:    movdqa %xmm2, %xmm0
2504 ; 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]
2505 ; SSE-NEXT:    movdqa %xmm4, %xmm5
2506 ; SSE-NEXT:    pandn %xmm0, %xmm5
2507 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm6[8],xmm2[9],xmm6[9],xmm2[10],xmm6[10],xmm2[11],xmm6[11],xmm2[12],xmm6[12],xmm2[13],xmm6[13],xmm2[14],xmm6[14],xmm2[15],xmm6[15]
2508 ; SSE-NEXT:    pand %xmm4, %xmm2
2509 ; SSE-NEXT:    por %xmm5, %xmm2
2510 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm2[3,2,1,0,4,5,6,7]
2511 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,7,7,7]
2512 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2513 ; SSE-NEXT:    pand %xmm13, %xmm0
2514 ; SSE-NEXT:    pandn %xmm1, %xmm13
2515 ; SSE-NEXT:    por %xmm13, %xmm0
2516 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2517 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
2518 ; SSE-NEXT:    pandn %xmm8, %xmm1
2519 ; SSE-NEXT:    movdqa (%rsp), %xmm5 # 16-byte Reload
2520 ; SSE-NEXT:    por %xmm1, %xmm5
2521 ; SSE-NEXT:    movdqa %xmm5, %xmm1
2522 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
2523 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3],xmm5[4],xmm6[4],xmm5[5],xmm6[5],xmm5[6],xmm6[6],xmm5[7],xmm6[7]
2524 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,0,65535,65535,65535,65535,0,65535]
2525 ; SSE-NEXT:    pand %xmm2, %xmm5
2526 ; SSE-NEXT:    pandn %xmm1, %xmm2
2527 ; SSE-NEXT:    por %xmm5, %xmm2
2528 ; SSE-NEXT:    movdqa %xmm2, %xmm5
2529 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2530 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm13[2,1,2,3,4,5,6,7]
2531 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,0,0]
2532 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2533 ; SSE-NEXT:    movdqa %xmm10, %xmm2
2534 ; SSE-NEXT:    pandn %xmm1, %xmm2
2535 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm5[0,2,1,0,4,5,6,7]
2536 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,6,6,7]
2537 ; SSE-NEXT:    packuswb %xmm1, %xmm1
2538 ; SSE-NEXT:    pand %xmm10, %xmm1
2539 ; SSE-NEXT:    por %xmm1, %xmm2
2540 ; SSE-NEXT:    movdqa %xmm15, %xmm1
2541 ; SSE-NEXT:    pandn %xmm2, %xmm1
2542 ; SSE-NEXT:    pand %xmm15, %xmm0
2543 ; SSE-NEXT:    movdqa %xmm15, %xmm14
2544 ; SSE-NEXT:    por %xmm0, %xmm1
2545 ; SSE-NEXT:    movdqa %xmm1, (%rsp) # 16-byte Spill
2546 ; SSE-NEXT:    movdqa {{.*#+}} xmm15 = [65535,65535,0,65535,65535,0,65535,65535]
2547 ; SSE-NEXT:    movdqa %xmm15, %xmm0
2548 ; SSE-NEXT:    pandn %xmm9, %xmm0
2549 ; SSE-NEXT:    movdqa %xmm7, %xmm2
2550 ; SSE-NEXT:    pand %xmm15, %xmm2
2551 ; SSE-NEXT:    por %xmm0, %xmm2
2552 ; SSE-NEXT:    movdqa %xmm2, %xmm0
2553 ; SSE-NEXT:    pxor %xmm1, %xmm1
2554 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
2555 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
2556 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2557 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[2,1,2,3]
2558 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7]
2559 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
2560 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2561 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
2562 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
2563 ; SSE-NEXT:    pandn %xmm0, %xmm6
2564 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
2565 ; SSE-NEXT:    por %xmm6, %xmm5
2566 ; SSE-NEXT:    packuswb %xmm0, %xmm5
2567 ; SSE-NEXT:    packuswb %xmm2, %xmm2
2568 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,1,3,3]
2569 ; SSE-NEXT:    movss {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3]
2570 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,0,65535,65535,65535,0,65535,65535]
2571 ; SSE-NEXT:    movdqa %xmm9, %xmm2
2572 ; SSE-NEXT:    pandn %xmm12, %xmm2
2573 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
2574 ; SSE-NEXT:    movdqa %xmm7, %xmm5
2575 ; SSE-NEXT:    pand %xmm9, %xmm5
2576 ; SSE-NEXT:    por %xmm2, %xmm5
2577 ; SSE-NEXT:    movdqa %xmm5, %xmm2
2578 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
2579 ; SSE-NEXT:    movdqa %xmm4, %xmm6
2580 ; SSE-NEXT:    pandn %xmm2, %xmm6
2581 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm1[8],xmm5[9],xmm1[9],xmm5[10],xmm1[10],xmm5[11],xmm1[11],xmm5[12],xmm1[12],xmm5[13],xmm1[13],xmm5[14],xmm1[14],xmm5[15],xmm1[15]
2582 ; SSE-NEXT:    pand %xmm4, %xmm5
2583 ; SSE-NEXT:    por %xmm6, %xmm5
2584 ; SSE-NEXT:    pshufd $100, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
2585 ; SSE-NEXT:    # xmm2 = mem[0,1,2,1]
2586 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]
2587 ; SSE-NEXT:    packuswb %xmm2, %xmm2
2588 ; SSE-NEXT:    movdqa %xmm10, %xmm6
2589 ; SSE-NEXT:    pandn %xmm2, %xmm6
2590 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm5[0,1,0,3]
2591 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,3,2,1,4,5,6,7]
2592 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]
2593 ; SSE-NEXT:    packuswb %xmm2, %xmm2
2594 ; SSE-NEXT:    pand %xmm10, %xmm2
2595 ; SSE-NEXT:    por %xmm2, %xmm6
2596 ; SSE-NEXT:    movdqa %xmm14, %xmm1
2597 ; SSE-NEXT:    pandn %xmm6, %xmm14
2598 ; SSE-NEXT:    andps %xmm1, %xmm0
2599 ; SSE-NEXT:    movdqa %xmm1, %xmm6
2600 ; SSE-NEXT:    por %xmm0, %xmm14
2601 ; SSE-NEXT:    movdqa %xmm15, %xmm1
2602 ; SSE-NEXT:    movdqa %xmm15, %xmm0
2603 ; SSE-NEXT:    movdqa %xmm11, %xmm15
2604 ; SSE-NEXT:    pandn %xmm11, %xmm0
2605 ; SSE-NEXT:    pand %xmm1, %xmm3
2606 ; SSE-NEXT:    por %xmm0, %xmm3
2607 ; SSE-NEXT:    movdqa %xmm3, %xmm0
2608 ; SSE-NEXT:    pxor %xmm1, %xmm1
2609 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
2610 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
2611 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3],xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]
2612 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm3[2,1,2,3]
2613 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[0,2,2,3,4,5,6,7]
2614 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3]
2615 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2616 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
2617 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2618 ; SSE-NEXT:    pandn %xmm0, %xmm3
2619 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2620 ; SSE-NEXT:    por %xmm3, %xmm2
2621 ; SSE-NEXT:    packuswb %xmm0, %xmm2
2622 ; SSE-NEXT:    packuswb %xmm5, %xmm5
2623 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,1,3,3]
2624 ; SSE-NEXT:    movss {{.*#+}} xmm0 = xmm5[0],xmm0[1,2,3]
2625 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2626 ; SSE-NEXT:    movdqa %xmm2, %xmm5
2627 ; SSE-NEXT:    movdqa %xmm2, %xmm3
2628 ; SSE-NEXT:    movdqa %xmm9, %xmm2
2629 ; SSE-NEXT:    pand %xmm9, %xmm5
2630 ; SSE-NEXT:    pandn %xmm8, %xmm2
2631 ; SSE-NEXT:    movdqa %xmm8, %xmm9
2632 ; SSE-NEXT:    por %xmm5, %xmm2
2633 ; SSE-NEXT:    movdqa %xmm2, %xmm5
2634 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],xmm1[3],xmm5[4],xmm1[4],xmm5[5],xmm1[5],xmm5[6],xmm1[6],xmm5[7],xmm1[7]
2635 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm1[8],xmm2[9],xmm1[9],xmm2[10],xmm1[10],xmm2[11],xmm1[11],xmm2[12],xmm1[12],xmm2[13],xmm1[13],xmm2[14],xmm1[14],xmm2[15],xmm1[15]
2636 ; SSE-NEXT:    pand %xmm4, %xmm2
2637 ; SSE-NEXT:    pandn %xmm5, %xmm4
2638 ; SSE-NEXT:    por %xmm2, %xmm4
2639 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,1,0,3]
2640 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,1,4,5,6,7]
2641 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,7,6,7]
2642 ; SSE-NEXT:    packuswb %xmm4, %xmm4
2643 ; SSE-NEXT:    pand %xmm10, %xmm4
2644 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm13[0,1,2,1]
2645 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,4,7]
2646 ; SSE-NEXT:    packuswb %xmm5, %xmm5
2647 ; SSE-NEXT:    pandn %xmm5, %xmm10
2648 ; SSE-NEXT:    por %xmm4, %xmm10
2649 ; SSE-NEXT:    movdqa %xmm6, %xmm4
2650 ; SSE-NEXT:    pandn %xmm10, %xmm4
2651 ; SSE-NEXT:    andps %xmm6, %xmm0
2652 ; SSE-NEXT:    por %xmm0, %xmm4
2653 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2654 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,65535,0,65535,65535,0,65535]
2655 ; SSE-NEXT:    pand %xmm2, %xmm0
2656 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2657 ; SSE-NEXT:    movdqa %xmm0, %xmm5
2658 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm1[8],xmm5[9],xmm1[9],xmm5[10],xmm1[10],xmm5[11],xmm1[11],xmm5[12],xmm1[12],xmm5[13],xmm1[13],xmm5[14],xmm1[14],xmm5[15],xmm1[15]
2659 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [0,65535,65535,65535,65535,65535,65535,0]
2660 ; SSE-NEXT:    movdqa %xmm10, %xmm6
2661 ; SSE-NEXT:    pandn %xmm5, %xmm6
2662 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2663 ; SSE-NEXT:    pand %xmm10, %xmm0
2664 ; SSE-NEXT:    por %xmm6, %xmm0
2665 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
2666 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm0[0,1,2,3,5,4,7,6]
2667 ; SSE-NEXT:    psrldq {{.*#+}} xmm5 = xmm5[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
2668 ; SSE-NEXT:    packuswb %xmm5, %xmm8
2669 ; SSE-NEXT:    movdqa %xmm2, %xmm11
2670 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2671 ; SSE-NEXT:    pandn %xmm0, %xmm11
2672 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,3,2,3]
2673 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
2674 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm13[0,2,2,3]
2675 ; SSE-NEXT:    punpckldq {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]
2676 ; SSE-NEXT:    movdqa %xmm5, %xmm0
2677 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
2678 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
2679 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
2680 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],xmm1[3],xmm5[4],xmm1[4],xmm5[5],xmm1[5],xmm5[6],xmm1[6],xmm5[7],xmm1[7]
2681 ; SSE-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[2,1,2,3]
2682 ; SSE-NEXT:    pshuflw {{.*#+}} xmm5 = xmm5[1,3,2,3,4,5,6,7]
2683 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1],xmm5[2],xmm0[2],xmm5[3],xmm0[3]
2684 ; SSE-NEXT:    packuswb %xmm5, %xmm5
2685 ; SSE-NEXT:    movss {{.*#+}} xmm8 = xmm5[0],xmm8[1,2,3]
2686 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [65535,65535,0,65535,65535,0,65535,65535]
2687 ; SSE-NEXT:    movdqa %xmm6, %xmm0
2688 ; SSE-NEXT:    pandn %xmm12, %xmm0
2689 ; SSE-NEXT:    movdqa %xmm7, %xmm5
2690 ; SSE-NEXT:    pand %xmm6, %xmm5
2691 ; SSE-NEXT:    por %xmm0, %xmm5
2692 ; SSE-NEXT:    movdqa %xmm5, %xmm0
2693 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2694 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [65535,65535,0,65535,0,65535,65535,65535]
2695 ; SSE-NEXT:    movdqa %xmm6, %xmm7
2696 ; SSE-NEXT:    pandn %xmm0, %xmm7
2697 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm1[8],xmm5[9],xmm1[9],xmm5[10],xmm1[10],xmm5[11],xmm1[11],xmm5[12],xmm1[12],xmm5[13],xmm1[13],xmm5[14],xmm1[14],xmm5[15],xmm1[15]
2698 ; SSE-NEXT:    pand %xmm6, %xmm5
2699 ; SSE-NEXT:    por %xmm7, %xmm5
2700 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2701 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2702 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
2703 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,7,6]
2704 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2705 ; SSE-NEXT:    movdqa {{.*#+}} xmm7 = [255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0]
2706 ; SSE-NEXT:    movdqa %xmm7, %xmm12
2707 ; SSE-NEXT:    pandn %xmm0, %xmm12
2708 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[2,1,0,3]
2709 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,3,2,4,5,6,7]
2710 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
2711 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2712 ; SSE-NEXT:    pand %xmm7, %xmm0
2713 ; SSE-NEXT:    por %xmm0, %xmm12
2714 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
2715 ; SSE-NEXT:    movdqa %xmm0, %xmm5
2716 ; SSE-NEXT:    pandn %xmm12, %xmm5
2717 ; SSE-NEXT:    andps %xmm0, %xmm8
2718 ; SSE-NEXT:    por %xmm8, %xmm5
2719 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2720 ; SSE-NEXT:    pand %xmm2, %xmm0
2721 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2722 ; SSE-NEXT:    movdqa %xmm0, %xmm12
2723 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm12 = xmm12[8],xmm1[8],xmm12[9],xmm1[9],xmm12[10],xmm1[10],xmm12[11],xmm1[11],xmm12[12],xmm1[12],xmm12[13],xmm1[13],xmm12[14],xmm1[14],xmm12[15],xmm1[15]
2724 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2725 ; SSE-NEXT:    pand %xmm10, %xmm0
2726 ; SSE-NEXT:    pandn %xmm12, %xmm10
2727 ; SSE-NEXT:    por %xmm0, %xmm10
2728 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm10[0,1,0,3]
2729 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm0[0,1,2,3,5,4,7,6]
2730 ; SSE-NEXT:    psrldq {{.*#+}} xmm12 = xmm12[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
2731 ; SSE-NEXT:    packuswb %xmm12, %xmm8
2732 ; SSE-NEXT:    movdqa %xmm13, %xmm12
2733 ; SSE-NEXT:    pand %xmm2, %xmm12
2734 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
2735 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm10[0,2,2,3]
2736 ; SSE-NEXT:    pand %xmm2, %xmm10
2737 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2738 ; SSE-NEXT:    pandn %xmm15, %xmm2
2739 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm15[1,3,2,3]
2740 ; SSE-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1]
2741 ; SSE-NEXT:    movdqa %xmm0, %xmm10
2742 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm10 = xmm10[8],xmm1[8],xmm10[9],xmm1[9],xmm10[10],xmm1[10],xmm10[11],xmm1[11],xmm10[12],xmm1[12],xmm10[13],xmm1[13],xmm10[14],xmm1[14],xmm10[15],xmm1[15]
2743 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[2,1,2,3]
2744 ; SSE-NEXT:    pshuflw {{.*#+}} xmm10 = xmm10[0,2,2,3,4,5,6,7]
2745 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2746 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,1,2,3]
2747 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,3,2,3,4,5,6,7]
2748 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm10[0],xmm0[1],xmm10[1],xmm0[2],xmm10[2],xmm0[3],xmm10[3]
2749 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2750 ; SSE-NEXT:    movss {{.*#+}} xmm8 = xmm0[0],xmm8[1,2,3]
2751 ; SSE-NEXT:    movdqa %xmm3, %xmm13
2752 ; SSE-NEXT:    movdqa %xmm3, %xmm0
2753 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [65535,65535,0,65535,65535,0,65535,65535]
2754 ; SSE-NEXT:    pand %xmm3, %xmm0
2755 ; SSE-NEXT:    pandn %xmm9, %xmm3
2756 ; SSE-NEXT:    movdqa %xmm9, %xmm15
2757 ; SSE-NEXT:    por %xmm0, %xmm3
2758 ; SSE-NEXT:    movdqa %xmm3, %xmm0
2759 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2760 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm1[8],xmm3[9],xmm1[9],xmm3[10],xmm1[10],xmm3[11],xmm1[11],xmm3[12],xmm1[12],xmm3[13],xmm1[13],xmm3[14],xmm1[14],xmm3[15],xmm1[15]
2761 ; SSE-NEXT:    pand %xmm6, %xmm3
2762 ; SSE-NEXT:    pandn %xmm0, %xmm6
2763 ; SSE-NEXT:    por %xmm3, %xmm6
2764 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2765 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2766 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
2767 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,7,6]
2768 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2769 ; SSE-NEXT:    movdqa %xmm7, %xmm9
2770 ; SSE-NEXT:    pandn %xmm0, %xmm9
2771 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm6[2,1,0,3]
2772 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,3,2,4,5,6,7]
2773 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
2774 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2775 ; SSE-NEXT:    pand %xmm7, %xmm0
2776 ; SSE-NEXT:    por %xmm0, %xmm9
2777 ; SSE-NEXT:    movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
2778 ; SSE-NEXT:    movdqa %xmm3, %xmm6
2779 ; SSE-NEXT:    pandn %xmm9, %xmm6
2780 ; SSE-NEXT:    andps %xmm3, %xmm8
2781 ; SSE-NEXT:    por %xmm8, %xmm6
2782 ; SSE-NEXT:    movdqa %xmm12, %xmm1
2783 ; SSE-NEXT:    por %xmm11, %xmm1
2784 ; SSE-NEXT:    movdqa %xmm1, %xmm0
2785 ; SSE-NEXT:    pxor %xmm9, %xmm9
2786 ; 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]
2787 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,6,7]
2788 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm9[8],xmm1[9],xmm9[9],xmm1[10],xmm9[10],xmm1[11],xmm9[11],xmm1[12],xmm9[12],xmm1[13],xmm9[13],xmm1[14],xmm9[14],xmm1[15],xmm9[15]
2789 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm1[0,1,2,1]
2790 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,7,6,7]
2791 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],xmm8[7]
2792 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2793 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm9[8],xmm8[9],xmm9[9],xmm8[10],xmm9[10],xmm8[11],xmm9[11],xmm8[12],xmm9[12],xmm8[13],xmm9[13],xmm8[14],xmm9[14],xmm8[15],xmm9[15]
2794 ; SSE-NEXT:    pxor %xmm1, %xmm1
2795 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
2796 ; SSE-NEXT:    pandn %xmm8, %xmm10
2797 ; SSE-NEXT:    movdqa %xmm8, %xmm9
2798 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
2799 ; SSE-NEXT:    por %xmm10, %xmm8
2800 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,2,1,3]
2801 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,7,6,7]
2802 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,1,2,0]
2803 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm8[0,1,2,3,4,7,6,5]
2804 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm9[3,3,3,3]
2805 ; SSE-NEXT:    packuswb %xmm8, %xmm10
2806 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2807 ; SSE-NEXT:    movss {{.*#+}} xmm10 = xmm0[0],xmm10[1,2,3]
2808 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2809 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2810 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
2811 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,4,7]
2812 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2813 ; SSE-NEXT:    movdqa %xmm7, %xmm8
2814 ; SSE-NEXT:    pandn %xmm0, %xmm8
2815 ; SSE-NEXT:    pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
2816 ; SSE-NEXT:    # xmm0 = mem[1,3,2,3]
2817 ; SSE-NEXT:    pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Folded Reload
2818 ; SSE-NEXT:    # xmm11 = mem[0,2,2,3]
2819 ; SSE-NEXT:    punpckldq {{.*#+}} xmm11 = xmm11[0],xmm0[0],xmm11[1],xmm0[1]
2820 ; SSE-NEXT:    movdqa %xmm11, %xmm0
2821 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
2822 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,65535,0,65535,0,65535,65535]
2823 ; SSE-NEXT:    movdqa %xmm9, %xmm12
2824 ; SSE-NEXT:    pandn %xmm0, %xmm12
2825 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8],xmm1[8],xmm11[9],xmm1[9],xmm11[10],xmm1[10],xmm11[11],xmm1[11],xmm11[12],xmm1[12],xmm11[13],xmm1[13],xmm11[14],xmm1[14],xmm11[15],xmm1[15]
2826 ; SSE-NEXT:    pand %xmm9, %xmm11
2827 ; SSE-NEXT:    por %xmm12, %xmm11
2828 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm11[2,1,1,1]
2829 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,3,4,5,6,7]
2830 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2831 ; SSE-NEXT:    pand %xmm7, %xmm0
2832 ; SSE-NEXT:    por %xmm8, %xmm0
2833 ; SSE-NEXT:    movaps %xmm3, %xmm1
2834 ; SSE-NEXT:    movdqa %xmm3, %xmm8
2835 ; SSE-NEXT:    pandn %xmm0, %xmm8
2836 ; SSE-NEXT:    andps %xmm3, %xmm10
2837 ; SSE-NEXT:    por %xmm10, %xmm8
2838 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
2839 ; SSE-NEXT:    movdqa %xmm2, %xmm0
2840 ; SSE-NEXT:    pxor %xmm11, %xmm11
2841 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm11[0],xmm0[1],xmm11[1],xmm0[2],xmm11[2],xmm0[3],xmm11[3],xmm0[4],xmm11[4],xmm0[5],xmm11[5],xmm0[6],xmm11[6],xmm0[7],xmm11[7]
2842 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,6,7]
2843 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm11[8],xmm2[9],xmm11[9],xmm2[10],xmm11[10],xmm2[11],xmm11[11],xmm2[12],xmm11[12],xmm2[13],xmm11[13],xmm2[14],xmm11[14],xmm2[15],xmm11[15]
2844 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm2[0,1,2,1]
2845 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,5,7,6,7]
2846 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm10[4],xmm0[5],xmm10[5],xmm0[6],xmm10[6],xmm0[7],xmm10[7]
2847 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2848 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm11[8],xmm2[9],xmm11[9],xmm2[10],xmm11[10],xmm2[11],xmm11[11],xmm2[12],xmm11[12],xmm2[13],xmm11[13],xmm2[14],xmm11[14],xmm2[15],xmm11[15]
2849 ; SSE-NEXT:    pxor %xmm12, %xmm12
2850 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
2851 ; SSE-NEXT:    pandn %xmm2, %xmm10
2852 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
2853 ; SSE-NEXT:    por %xmm10, %xmm3
2854 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm3[0,2,1,3]
2855 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,7,6,7]
2856 ; SSE-NEXT:    pshufd {{.*#+}} xmm10 = xmm10[0,1,2,0]
2857 ; SSE-NEXT:    pshufhw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,7,6,5]
2858 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm2[3,3,3,3]
2859 ; SSE-NEXT:    packuswb %xmm11, %xmm10
2860 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2861 ; SSE-NEXT:    movss {{.*#+}} xmm10 = xmm0[0],xmm10[1,2,3]
2862 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
2863 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
2864 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm15[1,3,2,3]
2865 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm13[0,2,2,3]
2866 ; SSE-NEXT:    punpckldq {{.*#+}} xmm11 = xmm11[0],xmm0[0],xmm11[1],xmm0[1]
2867 ; SSE-NEXT:    movdqa %xmm11, %xmm0
2868 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm12[0],xmm0[1],xmm12[1],xmm0[2],xmm12[2],xmm0[3],xmm12[3],xmm0[4],xmm12[4],xmm0[5],xmm12[5],xmm0[6],xmm12[6],xmm0[7],xmm12[7]
2869 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8],xmm12[8],xmm11[9],xmm12[9],xmm11[10],xmm12[10],xmm11[11],xmm12[11],xmm11[12],xmm12[12],xmm11[13],xmm12[13],xmm11[14],xmm12[14],xmm11[15],xmm12[15]
2870 ; SSE-NEXT:    pand %xmm9, %xmm11
2871 ; SSE-NEXT:    pandn %xmm0, %xmm9
2872 ; SSE-NEXT:    por %xmm11, %xmm9
2873 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm9[2,1,1,1]
2874 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,3,4,5,6,7]
2875 ; SSE-NEXT:    packuswb %xmm0, %xmm0
2876 ; SSE-NEXT:    pand %xmm7, %xmm0
2877 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm2[0,1,0,3]
2878 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm9[0,1,2,3,4,5,4,7]
2879 ; SSE-NEXT:    packuswb %xmm9, %xmm9
2880 ; SSE-NEXT:    pandn %xmm9, %xmm7
2881 ; SSE-NEXT:    por %xmm7, %xmm0
2882 ; SSE-NEXT:    andps %xmm1, %xmm10
2883 ; SSE-NEXT:    andnps %xmm0, %xmm1
2884 ; SSE-NEXT:    orps %xmm10, %xmm1
2885 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2886 ; SSE-NEXT:    movaps %xmm0, (%rsi)
2887 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2888 ; SSE-NEXT:    movaps %xmm0, 16(%rsi)
2889 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2890 ; SSE-NEXT:    movaps %xmm0, (%rdx)
2891 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2892 ; SSE-NEXT:    movaps %xmm0, 16(%rdx)
2893 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2894 ; SSE-NEXT:    movaps %xmm0, (%rcx)
2895 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2896 ; SSE-NEXT:    movaps %xmm0, 16(%rcx)
2897 ; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload
2898 ; SSE-NEXT:    movaps %xmm0, (%r8)
2899 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
2900 ; SSE-NEXT:    movaps %xmm0, 16(%r8)
2901 ; SSE-NEXT:    movdqa %xmm4, (%r9)
2902 ; SSE-NEXT:    movdqa %xmm14, 16(%r9)
2903 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
2904 ; SSE-NEXT:    movdqa %xmm6, (%rax)
2905 ; SSE-NEXT:    movdqa %xmm5, 16(%rax)
2906 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
2907 ; SSE-NEXT:    movaps %xmm1, (%rax)
2908 ; SSE-NEXT:    movdqa %xmm8, 16(%rax)
2909 ; SSE-NEXT:    addq $648, %rsp # imm = 0x288
2910 ; SSE-NEXT:    retq
2912 ; AVX1-ONLY-LABEL: load_i8_stride7_vf32:
2913 ; AVX1-ONLY:       # %bb.0:
2914 ; AVX1-ONLY-NEXT:    subq $200, %rsp
2915 ; AVX1-ONLY-NEXT:    vmovdqa 176(%rdi), %xmm7
2916 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm7[u,u,u,u,u,u,u],zero,zero,zero,xmm7[6,13,u,u,u,u]
2917 ; AVX1-ONLY-NEXT:    vmovdqa 160(%rdi), %xmm6
2918 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm6[u,u,u,u,u,u,u,1,8,15],zero,zero,xmm6[u,u,u,u]
2919 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm1
2920 ; AVX1-ONLY-NEXT:    vmovdqa 144(%rdi), %xmm8
2921 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm8[u,u,u],zero,zero,xmm8[3,10,u,u,u,u,u,u,u,u,u]
2922 ; AVX1-ONLY-NEXT:    vmovdqa 128(%rdi), %xmm9
2923 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm9[u,u,u,5,12],zero,zero,xmm9[u,u,u,u,u,u,u,u,u]
2924 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm2
2925 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <u,u,u,0,0,0,0,255,255,255,255,255,u,u,u,u>
2926 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
2927 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2928 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm3
2929 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm11
2930 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm15
2931 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm4
2932 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm11[5,12,u,u,u,u,u,u,u,u,u,u,u]
2933 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm3[0,7,14],zero,zero,xmm3[u,u,u,u,u,u,u,u,u,u,u]
2934 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm10
2935 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
2936 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm15[u,u,u,u,u,3,10],zero,zero,zero,xmm15[u,u,u,u,u,u]
2937 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm4[u,u,u,u,u],zero,zero,xmm4[1,8,15,u,u,u,u,u,u]
2938 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
2939 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm3 = <255,255,255,255,255,0,0,0,0,0,u,u,u,u,u,u>
2940 ; AVX1-ONLY-NEXT:    vpblendvb %xmm3, %xmm1, %xmm2, %xmm1
2941 ; AVX1-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2942 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm6[u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm6[u,u,u,u]
2943 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm7[u,u,u,u,u,u,u],zero,zero,xmm7[0,7,14,u,u,u,u]
2944 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
2945 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm8[u,u,u],zero,zero,xmm8[4,11,u,u,u,u,u,u,u,u,u]
2946 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm9[u,u,u,6,13],zero,zero,xmm9[u,u,u,u,u,u,u,u,u]
2947 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
2948 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm0
2949 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2950 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,zero,xmm11[6,13,u,u,u,u,u,u,u,u,u,u,u]
2951 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm10[1,8,15],zero,zero,xmm10[u,u,u,u,u,u,u,u,u,u,u]
2952 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm1
2953 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm4[u,u,u,u,u],zero,zero,xmm4[2,9,u,u,u,u,u,u,u]
2954 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm15[u,u,u,u,u,4,11],zero,zero,xmm15[u,u,u,u,u,u,u]
2955 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm2
2956 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <255,255,255,255,255,0,0,0,0,u,u,u,u,u,u,u>
2957 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
2958 ; AVX1-ONLY-NEXT:    vmovdqu %ymm1, (%rsp) # 32-byte Spill
2959 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm8[u,u],zero,zero,zero,xmm8[5,12,u,u,u,u,u,u,u,u,u]
2960 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm9[u,u,0,7,14],zero,zero,xmm9[u,u,u,u,u,u,u,u,u]
2961 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
2962 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm6[u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm6[u,u,u,u]
2963 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm7[u,u,u,u,u,u,u],zero,zero,xmm7[1,8,15,u,u,u,u]
2964 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
2965 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm3 = <u,u,255,255,255,255,255,0,0,0,0,0,u,u,u,u>
2966 ; AVX1-ONLY-NEXT:    vpblendvb %xmm3, %xmm1, %xmm2, %xmm1
2967 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2968 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm10[2,9],zero,zero,zero,xmm10[u,u,u,u,u,u,u,u,u,u,u]
2969 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2970 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm11[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
2971 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
2972 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
2973 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm4[u,u,u,u,u],zero,zero,xmm4[3,10,u,u,u,u,u,u,u]
2974 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm15[u,u,u,u,u,5,12],zero,zero,xmm15[u,u,u,u,u,u,u]
2975 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
2976 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm1
2977 ; AVX1-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2978 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm10[3,10],zero,zero,zero,xmm10[u,u,u,u,u,u,u,u,u,u,u]
2979 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm11[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
2980 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
2981 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm4[u,u,u,u,u],zero,zero,xmm4[4,11,u,u,u,u,u,u,u]
2982 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm15[u,u,u,u,u,6,13],zero,zero,xmm15[u,u,u,u,u,u,u]
2983 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
2984 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm0
2985 ; AVX1-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
2986 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm8[u,u],zero,zero,zero,xmm8[6,13,u,u,u,u,u,u,u,u,u]
2987 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm9[u,u,1,8,15],zero,zero,xmm9[u,u,u,u,u,u,u,u,u]
2988 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm1
2989 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm7[u,u,u,u,u,u,u],zero,zero,xmm7[2,9,u,u,u,u,u]
2990 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm6[u,u,u,u,u,u,u,4,11],zero,zero,xmm6[u,u,u,u,u]
2991 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm2
2992 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm0 = <u,u,255,255,255,255,255,0,0,0,0,u,u,u,u,u>
2993 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm2, %xmm2
2994 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm9[u,u,2,9],zero,zero,zero,xmm9[u,u,u,u,u,u,u,u,u]
2995 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm8[u,u],zero,zero,xmm8[0,7,14,u,u,u,u,u,u,u,u,u]
2996 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm3, %xmm1
2997 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm7[u,u,u,u,u,u,u],zero,zero,xmm7[3,10,u,u,u,u,u]
2998 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,u,u,u,u,5,12],zero,zero,xmm6[u,u,u,u,u]
2999 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
3000 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm3, %xmm3
3001 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm9[u,u,3,10],zero,zero,zero,xmm9[u,u,u,u,u,u,u,u,u]
3002 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm8[u,u],zero,zero,xmm8[1,8,15,u,u,u,u,u,u,u,u,u]
3003 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm4, %xmm1
3004 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm7[u,u,u,u,u,u,u],zero,zero,xmm7[4,11,u,u,u,u,u]
3005 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm6[u,u,u,u,u,u,u,6,13],zero,zero,xmm6[u,u,u,u,u]
3006 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm12, %xmm4
3007 ; AVX1-ONLY-NEXT:    vpblendvb %xmm0, %xmm1, %xmm4, %xmm4
3008 ; AVX1-ONLY-NEXT:    vmovdqa 192(%rdi), %xmm5
3009 ; AVX1-ONLY-NEXT:    vmovdqa 208(%rdi), %xmm1
3010 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm1[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm1[5,12]
3011 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm5[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
3012 ; AVX1-ONLY-NEXT:    vpor %xmm12, %xmm13, %xmm13
3013 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm12 = <u,u,255,255,255,255,255,255,255,255,255,0,0,0,0,0>
3014 ; AVX1-ONLY-NEXT:    vpblendvb %xmm12, %xmm2, %xmm13, %xmm0
3015 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3016 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm1[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm1[6,13]
3017 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm5[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
3018 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm14, %xmm2
3019 ; AVX1-ONLY-NEXT:    vpblendvb %xmm12, %xmm3, %xmm2, %xmm0
3020 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3021 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm5[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
3022 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm1[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm1[0,7,14]
3023 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
3024 ; AVX1-ONLY-NEXT:    vpblendvb %xmm12, %xmm4, %xmm2, %xmm0
3025 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3026 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm8[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3027 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm9[u,u,4,11,u,u,u,u,u,u,u,u,u,u,u,u]
3028 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
3029 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm7[u,u,u,u,u,u],zero,zero,zero,xmm7[5,12,u,u,u,u,u]
3030 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,u,u,u,0,7,14],zero,zero,xmm6[u,u,u,u,u]
3031 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
3032 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm3[0],xmm2[1,2],xmm3[3,4,5,6,7]
3033 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm5[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
3034 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm1[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm1[1,8,15]
3035 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
3036 ; AVX1-ONLY-NEXT:    vpblendvb %xmm12, %xmm2, %xmm3, %xmm0
3037 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
3038 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm10 = [0,0,4,11,0,0,4,11,0,0,4,11,0,0,4,11]
3039 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm5, %xmm2
3040 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm1[u,u,u,u,u,u,2,9,u,u,u,u,u,u,u,u]
3041 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
3042 ; AVX1-ONLY-NEXT:    vpblendw $63, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2, %xmm3 # 16-byte Folded Reload
3043 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,1,2,3,4,5],xmm2[6,7]
3044 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm7 = [0,0,6,13,0,0,6,13,0,0,6,13,0,0,6,13]
3045 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm6
3046 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm6, %xmm2
3047 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rdi), %xmm9
3048 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm9[u,u,u,u,4,11,u,u,u,u,u,u,u,u,u,u]
3049 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1]
3050 ; AVX1-ONLY-NEXT:    vmovdqa 96(%rdi), %xmm8
3051 ; AVX1-ONLY-NEXT:    vpalignr {{.*#+}} xmm2 = xmm2[10,11,12,13,14,15],xmm8[0,1,2,3,4,5,6,7,8,9]
3052 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm2[u,u,u,u,u,u,u,u,u,u,0,1,2,3,8,15]
3053 ; AVX1-ONLY-NEXT:    vmovdqa 112(%rdi), %xmm2
3054 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm2[0,7,14,u,u,u,u,u,u,u,u,u,u,u,u,u]
3055 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm13, %ymm12, %ymm12
3056 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm13 = [65535,65535,65535,65535,65535,0,0,0,0,0,65535,65535,65535,65535,65535,65535]
3057 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm13, %ymm0 # 32-byte Folded Reload
3058 ; AVX1-ONLY-NEXT:    vandnps %ymm12, %ymm13, %ymm12
3059 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm12, %ymm0
3060 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm3
3061 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm12 = [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]
3062 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm12, %ymm3
3063 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm12, %ymm0
3064 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm0, %ymm0
3065 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3066 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm1[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
3067 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm5[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
3068 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]
3069 ; AVX1-ONLY-NEXT:    vpblendw $63, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm4 # 16-byte Folded Reload
3070 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,1,2,3,4,5],xmm0[6,7]
3071 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm9[u,u,u,u,5,12,u,u,u,u,u,u,u,u,u,u]
3072 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm6[u,u,u,u,u,0,7,14,u,u,u,u,u,u,u,u]
3073 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm13 = xmm13[0],xmm3[0],xmm13[1],xmm3[1]
3074 ; AVX1-ONLY-NEXT:    vpxor %xmm3, %xmm3, %xmm3
3075 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm13 = xmm13[0,1,2,3,4,5,6],xmm3[7]
3076 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm8[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zero,xmm8[3,10]
3077 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm13, %xmm13
3078 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm2[1,8,15,u,u,u,u,u,u,u,u,u,u,u,u,u]
3079 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm14, %ymm13, %ymm13
3080 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm14 = [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]
3081 ; AVX1-ONLY-NEXT:    vandnps (%rsp), %ymm14, %ymm0 # 32-byte Folded Reload
3082 ; AVX1-ONLY-NEXT:    vandps %ymm14, %ymm13, %ymm13
3083 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm13, %ymm0
3084 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm4
3085 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm12, %ymm4
3086 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm12, %ymm0
3087 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm0, %ymm0
3088 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3089 ; AVX1-ONLY-NEXT:    vpshufb %xmm10, %xmm1, %xmm0
3090 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm5, %xmm1
3091 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
3092 ; AVX1-ONLY-NEXT:    vpblendw $63, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload
3093 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,1,2,3,4,5],xmm0[6,7]
3094 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm9[u,u,u,u,u,u,u,u,u,u,u,u,6,13,u,u]
3095 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,u,u,u,u,u,u,u,u,u,u,1,8,15]
3096 ; AVX1-ONLY-NEXT:    vpunpckhdq {{.*#+}} xmm1 = xmm4[2],xmm1[2],xmm4[3],xmm1[3]
3097 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6],xmm3[7]
3098 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm8[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zero,xmm8[4,11]
3099 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm1, %xmm1
3100 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm12 = [2,9,0,0,2,9,0,0,2,9,0,0,2,9,0,0]
3101 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm2, %xmm4
3102 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm4, %ymm1, %ymm4
3103 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm1 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
3104 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm5 # 32-byte Folded Reload
3105 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm1, %ymm4
3106 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm5, %ymm4
3107 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm5
3108 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm13 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0]
3109 ; AVX1-ONLY-NEXT:    vandnps %ymm5, %ymm13, %ymm5
3110 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm13, %ymm4
3111 ; AVX1-ONLY-NEXT:    vorps %ymm5, %ymm4, %ymm0
3112 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3113 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm6[u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm6[u,u]
3114 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm9[u,u,u,u,u,u,u,u,u],zero,zero,xmm9[0,7,14,u,u]
3115 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm7, %xmm4
3116 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6],xmm3[7]
3117 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm8[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zero,xmm8[5,12]
3118 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm4, %xmm7
3119 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [3,10,0,0,3,10,0,0,3,10,0,0,3,10,0,0]
3120 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm2, %xmm10
3121 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm10, %ymm7, %ymm7
3122 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
3123 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm1, %ymm7
3124 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm10, %ymm7
3125 ; AVX1-ONLY-NEXT:    vandps %ymm7, %ymm13, %ymm7
3126 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm10 # 16-byte Folded Reload
3127 ; AVX1-ONLY-NEXT:    vandnps %ymm10, %ymm13, %ymm10
3128 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm10, %ymm0
3129 ; AVX1-ONLY-NEXT:    vmovups %ymm0, (%rsp) # 32-byte Spill
3130 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm11, %xmm7
3131 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm14 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
3132 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
3133 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm5, %xmm10
3134 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm10[0],xmm7[0],xmm10[1],xmm7[1],xmm10[2],xmm7[2],xmm10[3],xmm7[3]
3135 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
3136 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm0[u,u,u,u],zero,zero,zero,xmm0[5,12,u,u,u,u,u,u,u]
3137 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm15[u,u,u,u,0,7,14],zero,zero,xmm15[u,u,u,u,u,u,u]
3138 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm12, %xmm10
3139 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm7[0,1],xmm10[2,3,4,5,6,7]
3140 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm6[u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm6[u,u]
3141 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm9[u,u,u,u,u,u,u,u,u],zero,zero,xmm9[1,8,15,u,u]
3142 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm12, %xmm10
3143 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm10[0,1,2,3,4,5,6],xmm3[7]
3144 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm8[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,zero,xmm8[6,13]
3145 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm10, %xmm3
3146 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm2, %xmm10
3147 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm10, %ymm3, %ymm3
3148 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm7, %ymm7
3149 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm1, %ymm3
3150 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm7, %ymm3
3151 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm13, %ymm3
3152 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm7 # 16-byte Folded Reload
3153 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm13, %ymm7
3154 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm3, %ymm3
3155 ; AVX1-ONLY-NEXT:    vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3156 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm11, %xmm4
3157 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm7 = [5,12,0,0,5,12,0,0,5,12,0,0,5,12,0,0]
3158 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm5, %xmm10
3159 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm3
3160 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm10[0],xmm4[0],xmm10[1],xmm4[1],xmm10[2],xmm4[2],xmm10[3],xmm4[3]
3161 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm0[u,u,u,u],zero,zero,zero,xmm0[6,13,u,u,u,u,u,u,u]
3162 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm15[u,u,u,u,1,8,15],zero,zero,xmm15[u,u,u,u,u,u,u]
3163 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm12, %xmm10
3164 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm10[2,3,4,5,6,7]
3165 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm9[u,u,u,u,u,u,u,u,u],zero,zero,xmm9[2,9,u,u,u]
3166 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm12 = xmm6[u,u,u,u,u,u,u,u,u,4,11],zero,zero,xmm6[u,u,u]
3167 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm12, %xmm10
3168 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm12 = [0,9,10,11,12,128,128,128,0,9,10,11,12,128,128,128]
3169 ; AVX1-ONLY-NEXT:    # xmm12 = mem[0,0]
3170 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm10, %xmm10
3171 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm5 = xmm8[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,xmm8[0,7,14]
3172 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm10, %xmm5
3173 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm2, %xmm7
3174 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm5, %ymm5
3175 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm4, %ymm4
3176 ; AVX1-ONLY-NEXT:    vandnps %ymm5, %ymm1, %ymm5
3177 ; AVX1-ONLY-NEXT:    vorps %ymm5, %ymm4, %ymm4
3178 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm13, %ymm4
3179 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm5 # 16-byte Folded Reload
3180 ; AVX1-ONLY-NEXT:    vandnps %ymm5, %ymm13, %ymm5
3181 ; AVX1-ONLY-NEXT:    vorps %ymm5, %ymm4, %ymm4
3182 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm11, %xmm5
3183 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm7 = [6,13,0,0,6,13,0,0,6,13,0,0,6,13,0,0]
3184 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm3, %xmm10
3185 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm10[0],xmm5[0],xmm10[1],xmm5[1],xmm10[2],xmm5[2],xmm10[3],xmm5[3]
3186 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm10 = xmm15[u,u,u,u,2,9],zero,zero,zero,xmm15[u,u,u,u,u,u,u]
3187 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm0[u,u,u,u],zero,zero,xmm0[0,7,14,u,u,u,u,u,u,u]
3188 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm11, %xmm10
3189 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm5 = xmm5[0,1],xmm10[2,3,4,5,6,7]
3190 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm2, %xmm2
3191 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm9[u,u,u,u,u,u,u,u,u],zero,zero,xmm9[3,10,u,u,u]
3192 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,u,u,u,u,u,5,12],zero,zero,xmm6[u,u,u]
3193 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm6, %xmm6
3194 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm6, %xmm6
3195 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm8[u,u,u,u,u,u,u,u,u],zero,zero,zero,zero,xmm8[1,8,15]
3196 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm6, %xmm6
3197 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm6, %ymm2
3198 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm5, %ymm5
3199 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm1, %ymm1
3200 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm5, %ymm1
3201 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm13, %ymm1
3202 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 # 16-byte Folded Reload
3203 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm13, %ymm0
3204 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm0
3205 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3206 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%rsi)
3207 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3208 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%rdx)
3209 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3210 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%rcx)
3211 ; AVX1-ONLY-NEXT:    vmovups (%rsp), %ymm1 # 32-byte Reload
3212 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%r8)
3213 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
3214 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%r9)
3215 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3216 ; AVX1-ONLY-NEXT:    vmovaps %ymm4, (%rax)
3217 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3218 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, (%rax)
3219 ; AVX1-ONLY-NEXT:    addq $200, %rsp
3220 ; AVX1-ONLY-NEXT:    vzeroupper
3221 ; AVX1-ONLY-NEXT:    retq
3223 ; AVX2-SLOW-LABEL: load_i8_stride7_vf32:
3224 ; AVX2-SLOW:       # %bb.0:
3225 ; AVX2-SLOW-NEXT:    subq $72, %rsp
3226 ; AVX2-SLOW-NEXT:    vmovdqa 160(%rdi), %ymm10
3227 ; AVX2-SLOW-NEXT:    vmovdqa 128(%rdi), %ymm11
3228 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %ymm6
3229 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm7
3230 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rdi), %ymm13
3231 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rdi), %ymm3
3232 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm15 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
3233 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm6, %ymm7, %ymm0
3234 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm1
3235 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[5,12],zero,zero,xmm1[1,8,15,u,u,u,u,u,u]
3236 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,7,14],zero,zero,xmm0[3,10],zero,zero,zero,xmm0[u,u,u,u,u,u]
3237 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm0, %xmm0
3238 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
3239 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm3, %ymm13, %ymm1
3240 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, %ymm14
3241 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm4
3242 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm4[2],ymm1[3,4],ymm4[5],ymm1[6,7,8,9],ymm4[10],ymm1[11,12],ymm4[13],ymm1[14,15]
3243 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
3244 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm4 = <255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,u,u,u,u,u,u,u,u,u,u,u,u>
3245 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm0
3246 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
3247 ; AVX2-SLOW-NEXT:    vpblendvb %ymm1, %ymm10, %ymm11, %ymm1
3248 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm4
3249 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u],zero,zero,xmm4[3,10],zero,zero,zero,xmm4[6,13,u,u,u,u]
3250 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,5,12],zero,zero,xmm1[1,8,15],zero,zero,xmm1[u,u,u,u]
3251 ; AVX2-SLOW-NEXT:    vpor %xmm4, %xmm1, %xmm1
3252 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
3253 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm6, %ymm7, %ymm4
3254 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm5
3255 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm5[6,13],zero,zero,xmm5[2,9,u,u,u,u,u,u,u]
3256 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[1,8,15],zero,zero,xmm4[4,11],zero,zero,xmm4[u,u,u,u,u,u,u]
3257 ; AVX2-SLOW-NEXT:    vpor %xmm5, %xmm4, %xmm4
3258 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm13, %ymm3, %ymm5
3259 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm8
3260 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm8[2],ymm5[3,4,5],ymm8[6],ymm5[7,8,9],ymm8[10],ymm5[11,12,13],ymm8[14],ymm5[15]
3261 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u,u,u,u,u,u,0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
3262 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = <0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,u,u,u,u,u,u,u,u,u,u,u,u,u>
3263 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm5, %ymm4, %ymm8
3264 ; AVX2-SLOW-NEXT:    vmovdqa 192(%rdi), %xmm4
3265 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm4[u,u,u,u,u,u,4,11,u,u,u,u,u,u,u,u]
3266 ; AVX2-SLOW-NEXT:    vmovdqa 208(%rdi), %xmm5
3267 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm5[u,u,u,u,u,u,2,9,u,u,u,u,u,u,u,u]
3268 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm9 = xmm9[0],xmm12[0],xmm9[1],xmm12[1],xmm9[2],xmm12[2],xmm9[3],xmm12[3]
3269 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3270 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
3271 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm9[7]
3272 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = [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]
3273 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm0, %ymm1, %ymm0
3274 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3275 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm10, %ymm11, %ymm0
3276 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[u,u,u,6,13],zero,zero,xmm0[2,9],zero,zero,zero,xmm0[u,u,u,u]
3277 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
3278 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u],zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14,u,u,u,u]
3279 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm0, %xmm0
3280 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm5[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
3281 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
3282 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm12[0],xmm1[0],xmm12[1],xmm1[1],xmm12[2],xmm1[2],xmm12[3],xmm1[3]
3283 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
3284 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3285 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm1[7]
3286 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm8, %ymm0, %ymm0
3287 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, (%rsp) # 32-byte Spill
3288 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm11, %ymm10, %ymm0
3289 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm1
3290 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u],zero,zero,zero,xmm1[6,13],zero,zero,xmm1[2,9,u,u,u,u,u]
3291 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,1,8,15],zero,zero,xmm0[4,11],zero,zero,xmm0[u,u,u,u,u]
3292 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm0, %xmm0
3293 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[5,12]
3294 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm4[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
3295 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm8, %xmm1
3296 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm8
3297 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3298 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
3299 ; AVX2-SLOW-NEXT:    # ymm0 = mem[0,1,0,1]
3300 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm8, %ymm1, %ymm1
3301 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3302 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
3303 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm11, %ymm10, %ymm1
3304 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[u,u,2,9],zero,zero,zero,xmm1[5,12],zero,zero,xmm1[u,u,u,u,u]
3305 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm1
3306 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u],zero,zero,xmm1[0,7,14],zero,zero,xmm1[3,10,u,u,u,u,u]
3307 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm8, %xmm1
3308 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[6,13]
3309 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
3310 ; AVX2-SLOW-NEXT:    vpor %xmm8, %xmm12, %xmm8
3311 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3312 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
3313 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm1, %ymm8, %ymm1
3314 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3315 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
3316 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm11, %ymm10, %ymm1
3317 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm1[u,u,3,10],zero,zero,zero,xmm1[6,13],zero,zero,xmm1[u,u,u,u,u]
3318 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm1
3319 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u],zero,zero,xmm1[1,8,15],zero,zero,xmm1[4,11,u,u,u,u,u]
3320 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm12, %xmm1
3321 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
3322 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[0,7,14]
3323 ; AVX2-SLOW-NEXT:    vpor %xmm12, %xmm14, %xmm12
3324 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3325 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
3326 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm1, %ymm12, %ymm1
3327 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3328 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm11, %ymm10, %ymm14
3329 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm12 = <255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u>
3330 ; AVX2-SLOW-NEXT:    vpblendvb %ymm12, %ymm10, %ymm11, %ymm10
3331 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm10, %xmm11
3332 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u],zero,zero,xmm11[2,9],zero,zero,zero,xmm11[5,12,u,u,u,u,u]
3333 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,4,11],zero,zero,xmm10[0,7,14],zero,zero,xmm10[u,u,u,u,u]
3334 ; AVX2-SLOW-NEXT:    vpor %xmm11, %xmm10, %xmm10
3335 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm4[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
3336 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[1,8,15]
3337 ; AVX2-SLOW-NEXT:    vpor %xmm11, %xmm15, %xmm11
3338 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
3339 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
3340 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm10, %ymm11, %ymm0
3341 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3342 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
3343 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm7, %ymm6, %ymm10
3344 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm6, %ymm7, %ymm11
3345 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm15
3346 ; AVX2-SLOW-NEXT:    vpblendvb %ymm12, %ymm7, %ymm6, %ymm1
3347 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
3348 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm7, %ymm6, %ymm6
3349 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
3350 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm13, %ymm3, %ymm0
3351 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm13, %ymm3, %ymm9
3352 ; AVX2-SLOW-NEXT:    vpblendvb %ymm8, %ymm13, %ymm3, %ymm8
3353 ; AVX2-SLOW-NEXT:    vpblendvb %ymm12, %ymm3, %ymm13, %ymm7
3354 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm3, %ymm13, %ymm2
3355 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm11[2,9],zero,zero,zero,xmm11[5,12],zero,zero,xmm11[u,u,u,u,u,u,u]
3356 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm11, %xmm11
3357 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm11[0,7,14],zero,zero,xmm11[3,10,u,u,u,u,u,u,u]
3358 ; AVX2-SLOW-NEXT:    vpor %xmm3, %xmm11, %xmm3
3359 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm11
3360 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm11[3],ymm0[4,5],ymm11[6],ymm0[7,8,9,10],ymm11[11],ymm0[12,13],ymm11[14],ymm0[15]
3361 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,1,8,15,6,13,4,11,18,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3362 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm11 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
3363 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm3, %ymm0, %ymm0
3364 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm15[3,10],zero,zero,zero,xmm15[6,13],zero,zero,xmm15[u,u,u,u,u,u,u]
3365 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm15, %xmm13
3366 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = zero,zero,xmm13[1,8,15],zero,zero,xmm13[4,11,u,u,u,u,u,u,u]
3367 ; AVX2-SLOW-NEXT:    vpor %xmm3, %xmm13, %xmm3
3368 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm9, %xmm13
3369 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm9 = ymm13[0],ymm9[1,2],ymm13[3],ymm9[4,5,6],ymm13[7,8],ymm9[9,10],ymm13[11],ymm9[12,13,14],ymm13[15]
3370 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,2,9,0,7,14,5,12,19,26,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3371 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm3, %ymm9, %ymm3
3372 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm9
3373 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,xmm9[2,9],zero,zero,zero,xmm9[5,12,u,u,u,u,u,u,u]
3374 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[4,11],zero,zero,xmm1[0,7,14],zero,zero,xmm1[u,u,u,u,u,u,u]
3375 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm9, %xmm1
3376 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm9
3377 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1,2,3],ymm9[4],ymm8[5,6],ymm9[7,8],ymm8[9,10,11],ymm9[12],ymm8[13,14],ymm9[15]
3378 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,u,u,u,u,u,3,10,1,8,15,6,13,20,27,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3379 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm1, %ymm8, %ymm9
3380 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm6, %xmm1
3381 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,xmm1[3,10],zero,zero,zero,xmm1[6,13,u,u,u,u,u,u,u]
3382 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[5,12],zero,zero,xmm6[1,8,15],zero,zero,xmm6[u,u,u,u,u,u,u]
3383 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm6, %xmm1
3384 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm6
3385 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm6 = ymm7[0],ymm6[1],ymm7[2,3],ymm6[4],ymm7[5,6,7,8],ymm6[9],ymm7[10,11],ymm6[12],ymm7[13,14,15]
3386 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,4,11,2,9,0,7,14,21,28,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3387 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm1, %ymm6, %ymm1
3388 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm10[6,13],zero,zero,xmm10[2,9],zero,zero,zero,xmm10[u,u,u,u,u,u,u]
3389 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm10, %xmm7
3390 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm7[4,11],zero,zero,xmm7[0,7,14,u,u,u,u,u,u,u]
3391 ; AVX2-SLOW-NEXT:    vpor %xmm6, %xmm7, %xmm6
3392 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm7
3393 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm7[1],ymm2[2,3,4],ymm7[5],ymm2[6,7,8],ymm7[9],ymm2[10,11,12],ymm7[13],ymm2[14,15]
3394 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,5,12,3,10,1,8,15,22,29,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3395 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm6, %ymm2, %ymm2
3396 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm14, %xmm6
3397 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,zero,xmm6[5,12],zero,zero,xmm6[1,8,15,u,u,u,u]
3398 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm14[u,u,0,7,14],zero,zero,xmm14[3,10],zero,zero,zero,xmm14[u,u,u,u]
3399 ; AVX2-SLOW-NEXT:    vpor %xmm6, %xmm7, %xmm6
3400 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u,u,4,11,u,u,u,u,u,u,u,u]
3401 ; AVX2-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
3402 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]
3403 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm5
3404 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
3405 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm4 = ymm5[0,1,2,3,4,5,6],ymm4[7]
3406 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm0[0],ymm4[1,2,3,4,5,6,7],ymm0[8],ymm4[9,10,11,12,13,14,15]
3407 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5,6,7]
3408 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm4 # 32-byte Folded Reload
3409 ; AVX2-SLOW-NEXT:    # ymm4 = ymm3[0],mem[1,2,3,4,5,6,7],ymm3[8],mem[9,10,11,12,13,14,15]
3410 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4,5,6,7]
3411 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9, %ymm4 # 32-byte Folded Reload
3412 ; AVX2-SLOW-NEXT:    # ymm4 = ymm9[0],mem[1,2,3,4,5,6,7],ymm9[8],mem[9,10,11,12,13,14,15]
3413 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm4 = ymm9[0,1,2,3],ymm4[4,5,6,7]
3414 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm5 # 32-byte Folded Reload
3415 ; AVX2-SLOW-NEXT:    # ymm5 = ymm1[0],mem[1,2,3,4,5,6,7],ymm1[8],mem[9,10,11,12,13,14,15]
3416 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm5[4,5,6,7]
3417 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm5 # 32-byte Folded Reload
3418 ; AVX2-SLOW-NEXT:    # ymm5 = ymm2[0],mem[1,2,3,4,5,6,7],ymm2[8],mem[9,10,11,12,13,14,15]
3419 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm5[4,5,6,7]
3420 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3421 ; AVX2-SLOW-NEXT:    vmovaps %ymm5, (%rsi)
3422 ; AVX2-SLOW-NEXT:    vmovups (%rsp), %ymm5 # 32-byte Reload
3423 ; AVX2-SLOW-NEXT:    vmovaps %ymm5, (%rdx)
3424 ; AVX2-SLOW-NEXT:    vmovdqa %ymm0, (%rcx)
3425 ; AVX2-SLOW-NEXT:    vmovdqa %ymm3, (%r8)
3426 ; AVX2-SLOW-NEXT:    vmovdqa %ymm4, (%r9)
3427 ; AVX2-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3428 ; AVX2-SLOW-NEXT:    vmovdqa %ymm1, (%rax)
3429 ; AVX2-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3430 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, (%rax)
3431 ; AVX2-SLOW-NEXT:    addq $72, %rsp
3432 ; AVX2-SLOW-NEXT:    vzeroupper
3433 ; AVX2-SLOW-NEXT:    retq
3435 ; AVX2-FAST-LABEL: load_i8_stride7_vf32:
3436 ; AVX2-FAST:       # %bb.0:
3437 ; AVX2-FAST-NEXT:    subq $40, %rsp
3438 ; AVX2-FAST-NEXT:    vmovdqa 192(%rdi), %ymm7
3439 ; AVX2-FAST-NEXT:    vmovdqa 160(%rdi), %ymm8
3440 ; AVX2-FAST-NEXT:    vmovdqa 128(%rdi), %ymm9
3441 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %ymm5
3442 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdi), %ymm6
3443 ; AVX2-FAST-NEXT:    vmovdqa 64(%rdi), %ymm3
3444 ; AVX2-FAST-NEXT:    vmovdqa 96(%rdi), %ymm4
3445 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
3446 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm5, %ymm6, %ymm0
3447 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, %ymm13
3448 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm1
3449 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[5,12],zero,zero,xmm1[1,8,15,u,u,u,u,u,u]
3450 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,7,14],zero,zero,xmm0[3,10],zero,zero,zero,xmm0[u,u,u,u,u,u]
3451 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm0, %xmm0
3452 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
3453 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm4, %ymm3, %ymm1
3454 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm2
3455 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]
3456 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
3457 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,u,u,u,u,u,u,u,u,u,u,u,u>
3458 ; AVX2-FAST-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
3459 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
3460 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm8, %ymm9, %ymm1
3461 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm2
3462 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u],zero,zero,xmm2[3,10],zero,zero,zero,xmm2[6,13,u,u,u,u]
3463 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,5,12],zero,zero,xmm1[1,8,15],zero,zero,xmm1[u,u,u,u]
3464 ; AVX2-FAST-NEXT:    vpor %xmm2, %xmm1, %xmm1
3465 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3466 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm2 = [1,2,4,6,1,2,4,6]
3467 ; AVX2-FAST-NEXT:    # ymm2 = mem[0,1,0,1]
3468 ; AVX2-FAST-NEXT:    vpermd %ymm7, %ymm2, %ymm2
3469 ; AVX2-FAST-NEXT:    vmovdqa %ymm7, %ymm10
3470 ; AVX2-FAST-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3471 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,23,26,29]
3472 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm2[7]
3473 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [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]
3474 ; AVX2-FAST-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
3475 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, (%rsp) # 32-byte Spill
3476 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
3477 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm5, %ymm6, %ymm0
3478 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, %ymm12
3479 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm1
3480 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[6,13],zero,zero,xmm1[2,9,u,u,u,u,u,u,u]
3481 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[1,8,15],zero,zero,xmm0[4,11],zero,zero,xmm0[u,u,u,u,u,u,u]
3482 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm0, %xmm0
3483 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm3, %ymm4, %ymm1
3484 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm7
3485 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm7[2],ymm1[3,4,5],ymm7[6],ymm1[7,8,9],ymm7[10],ymm1[11,12,13],ymm7[14],ymm1[15]
3486 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
3487 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,u,u,u,u,u,u,u,u,u,u,u,u,u>
3488 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm1, %ymm0, %ymm0
3489 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm8, %ymm9, %ymm1
3490 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm1[u,u,u,6,13],zero,zero,xmm1[2,9],zero,zero,zero,xmm1[u,u,u,u]
3491 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm1
3492 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u],zero,zero,xmm1[4,11],zero,zero,xmm1[0,7,14,u,u,u,u]
3493 ; AVX2-FAST-NEXT:    vpor %xmm7, %xmm1, %xmm1
3494 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3495 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [1,3,4,6,1,3,4,6]
3496 ; AVX2-FAST-NEXT:    # ymm7 = mem[0,1,0,1]
3497 ; AVX2-FAST-NEXT:    vpermd %ymm10, %ymm7, %ymm7
3498 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,20,27,30]
3499 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm7[7]
3500 ; AVX2-FAST-NEXT:    vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
3501 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3502 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm9, %ymm8, %ymm0
3503 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm1
3504 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u],zero,zero,zero,xmm1[6,13],zero,zero,xmm1[2,9,u,u,u,u,u]
3505 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,1,8,15],zero,zero,xmm0[4,11],zero,zero,xmm0[u,u,u,u,u]
3506 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm0, %xmm1
3507 ; AVX2-FAST-NEXT:    vmovdqa 208(%rdi), %xmm2
3508 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[5,12]
3509 ; AVX2-FAST-NEXT:    vmovdqa 192(%rdi), %xmm0
3510 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm0[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
3511 ; AVX2-FAST-NEXT:    vpor %xmm7, %xmm10, %xmm7
3512 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm10
3513 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
3514 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm1 = [0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
3515 ; AVX2-FAST-NEXT:    # ymm1 = mem[0,1,0,1]
3516 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm10, %ymm7, %ymm7
3517 ; AVX2-FAST-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3518 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm13 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
3519 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm9, %ymm8, %ymm7
3520 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm7[u,u,2,9],zero,zero,zero,xmm7[5,12],zero,zero,xmm7[u,u,u,u,u]
3521 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm7, %xmm7
3522 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u],zero,zero,xmm7[0,7,14],zero,zero,xmm7[3,10,u,u,u,u,u]
3523 ; AVX2-FAST-NEXT:    vpor %xmm7, %xmm10, %xmm7
3524 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[6,13]
3525 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm0[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
3526 ; AVX2-FAST-NEXT:    vpor %xmm10, %xmm14, %xmm10
3527 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
3528 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
3529 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm7, %ymm10, %ymm7
3530 ; AVX2-FAST-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3531 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm10 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
3532 ; AVX2-FAST-NEXT:    vpblendvb %ymm10, %ymm9, %ymm8, %ymm7
3533 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm7[u,u,3,10],zero,zero,zero,xmm7[6,13],zero,zero,xmm7[u,u,u,u,u]
3534 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm7, %xmm7
3535 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u],zero,zero,xmm7[1,8,15],zero,zero,xmm7[4,11,u,u,u,u,u]
3536 ; AVX2-FAST-NEXT:    vpor %xmm7, %xmm15, %xmm7
3537 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm0[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
3538 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm2[0,7,14]
3539 ; AVX2-FAST-NEXT:    vpor %xmm15, %xmm12, %xmm12
3540 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
3541 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
3542 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm7, %ymm12, %ymm15
3543 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
3544 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm9, %ymm8, %ymm12
3545 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u>
3546 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm8, %ymm9, %ymm8
3547 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm8, %xmm9
3548 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[u,u],zero,zero,xmm9[2,9],zero,zero,zero,xmm9[5,12,u,u,u,u,u]
3549 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,4,11],zero,zero,xmm8[0,7,14],zero,zero,xmm8[u,u,u,u,u]
3550 ; AVX2-FAST-NEXT:    vpor %xmm9, %xmm8, %xmm8
3551 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
3552 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm2[1,8,15]
3553 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm2, %xmm0
3554 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm2
3555 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
3556 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm2, %ymm0, %ymm14
3557 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm6, %ymm5, %ymm11
3558 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm5, %ymm6, %ymm2
3559 ; AVX2-FAST-NEXT:    vpblendvb %ymm10, %ymm5, %ymm6, %ymm8
3560 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm6, %ymm5, %ymm9
3561 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
3562 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm6, %ymm5, %ymm5
3563 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
3564 ; AVX2-FAST-NEXT:    vpblendvb %ymm0, %ymm3, %ymm4, %ymm0
3565 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm3, %ymm4, %ymm13
3566 ; AVX2-FAST-NEXT:    vpblendvb %ymm10, %ymm3, %ymm4, %ymm10
3567 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm4, %ymm3, %ymm6
3568 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm4, %ymm3, %ymm3
3569 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = xmm2[2,9],zero,zero,zero,xmm2[5,12],zero,zero,xmm2[u,u,u,u,u,u,u]
3570 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm2
3571 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[0,7,14],zero,zero,xmm2[3,10,u,u,u,u,u,u,u]
3572 ; AVX2-FAST-NEXT:    vpor %xmm4, %xmm2, %xmm2
3573 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm4
3574 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm4[3],ymm0[4,5],ymm4[6],ymm0[7,8,9,10],ymm4[11],ymm0[12,13],ymm4[14],ymm0[15]
3575 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,1,8,15,6,13,4,11,18,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3576 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm7 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
3577 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm2, %ymm0, %ymm2
3578 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm8[3,10],zero,zero,zero,xmm8[6,13],zero,zero,xmm8[u,u,u,u,u,u,u]
3579 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm8, %xmm4
3580 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,xmm4[1,8,15],zero,zero,xmm4[4,11,u,u,u,u,u,u,u]
3581 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm4, %xmm0
3582 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm13, %xmm4
3583 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0],ymm13[1,2],ymm4[3],ymm13[4,5,6],ymm4[7,8],ymm13[9,10],ymm4[11],ymm13[12,13,14],ymm4[15]
3584 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,2,9,0,7,14,5,12,19,26,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3585 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm0, %ymm4, %ymm4
3586 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm9, %xmm0
3587 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[2,9],zero,zero,zero,xmm0[5,12,u,u,u,u,u,u,u]
3588 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm9[4,11],zero,zero,xmm9[0,7,14],zero,zero,xmm9[u,u,u,u,u,u,u]
3589 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm8, %xmm0
3590 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm10, %xmm8
3591 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm8 = ymm8[0],ymm10[1,2,3],ymm8[4],ymm10[5,6],ymm8[7,8],ymm10[9,10,11],ymm8[12],ymm10[13,14],ymm8[15]
3592 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,u,u,u,u,u,3,10,1,8,15,6,13,20,27,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3593 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm0, %ymm8, %ymm0
3594 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm5, %xmm8
3595 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm8[3,10],zero,zero,zero,xmm8[6,13,u,u,u,u,u,u,u]
3596 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[5,12],zero,zero,xmm5[1,8,15],zero,zero,xmm5[u,u,u,u,u,u,u]
3597 ; AVX2-FAST-NEXT:    vpor %xmm5, %xmm8, %xmm5
3598 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm8
3599 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm6[0],ymm8[1],ymm6[2,3],ymm8[4],ymm6[5,6,7,8],ymm8[9],ymm6[10,11],ymm8[12],ymm6[13,14,15]
3600 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,4,11,2,9,0,7,14,21,28,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3601 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm5, %ymm6, %ymm5
3602 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm11[6,13],zero,zero,xmm11[2,9],zero,zero,zero,xmm11[u,u,u,u,u,u,u]
3603 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm1
3604 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,xmm1[4,11],zero,zero,xmm1[0,7,14,u,u,u,u,u,u,u]
3605 ; AVX2-FAST-NEXT:    vpor %xmm6, %xmm1, %xmm1
3606 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm6
3607 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm6[1],ymm3[2,3,4],ymm6[5],ymm3[6,7,8],ymm6[9],ymm3[10,11,12],ymm6[13],ymm3[14,15]
3608 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,5,12,3,10,1,8,15,22,29,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3609 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm1, %ymm3, %ymm1
3610 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm12, %xmm3
3611 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u],zero,zero,zero,xmm3[5,12],zero,zero,xmm3[1,8,15,u,u,u,u]
3612 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm12[u,u,0,7,14],zero,zero,xmm12[3,10],zero,zero,zero,xmm12[u,u,u,u]
3613 ; AVX2-FAST-NEXT:    vpor %xmm3, %xmm6, %xmm3
3614 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm6 = [1,3,5,6,1,3,5,6]
3615 ; AVX2-FAST-NEXT:    # ymm6 = mem[0,1,0,1]
3616 ; AVX2-FAST-NEXT:    vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm6 # 32-byte Folded Reload
3617 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
3618 ; AVX2-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,21,24,31]
3619 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5,6],ymm6[7]
3620 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm2[0],ymm3[1,2,3,4,5,6,7],ymm2[8],ymm3[9,10,11,12,13,14,15]
3621 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm3[4,5,6,7]
3622 ; AVX2-FAST-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm3 # 32-byte Folded Reload
3623 ; AVX2-FAST-NEXT:    # ymm3 = ymm4[0],mem[1,2,3,4,5,6,7],ymm4[8],mem[9,10,11,12,13,14,15]
3624 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
3625 ; AVX2-FAST-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 32-byte Folded Reload
3626 ; AVX2-FAST-NEXT:    # ymm4 = ymm0[0],mem[1,2,3,4,5,6,7],ymm0[8],mem[9,10,11,12,13,14,15]
3627 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5,6,7]
3628 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm5[0],ymm15[1,2,3,4,5,6,7],ymm5[8],ymm15[9,10,11,12,13,14,15]
3629 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm4 = ymm5[0,1,2,3],ymm4[4,5,6,7]
3630 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm1[0],ymm14[1,2,3,4,5,6,7],ymm1[8],ymm14[9,10,11,12,13,14,15]
3631 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm5[4,5,6,7]
3632 ; AVX2-FAST-NEXT:    vmovups (%rsp), %ymm5 # 32-byte Reload
3633 ; AVX2-FAST-NEXT:    vmovaps %ymm5, (%rsi)
3634 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3635 ; AVX2-FAST-NEXT:    vmovaps %ymm5, (%rdx)
3636 ; AVX2-FAST-NEXT:    vmovdqa %ymm2, (%rcx)
3637 ; AVX2-FAST-NEXT:    vmovdqa %ymm3, (%r8)
3638 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, (%r9)
3639 ; AVX2-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3640 ; AVX2-FAST-NEXT:    vmovdqa %ymm4, (%rax)
3641 ; AVX2-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3642 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, (%rax)
3643 ; AVX2-FAST-NEXT:    addq $40, %rsp
3644 ; AVX2-FAST-NEXT:    vzeroupper
3645 ; AVX2-FAST-NEXT:    retq
3647 ; AVX2-FAST-PERLANE-LABEL: load_i8_stride7_vf32:
3648 ; AVX2-FAST-PERLANE:       # %bb.0:
3649 ; AVX2-FAST-PERLANE-NEXT:    subq $72, %rsp
3650 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 160(%rdi), %ymm10
3651 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 128(%rdi), %ymm11
3652 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %ymm6
3653 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdi), %ymm7
3654 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rdi), %ymm13
3655 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rdi), %ymm3
3656 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm15 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
3657 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm6, %ymm7, %ymm0
3658 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm1
3659 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[5,12],zero,zero,xmm1[1,8,15,u,u,u,u,u,u]
3660 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,7,14],zero,zero,xmm0[3,10],zero,zero,zero,xmm0[u,u,u,u,u,u]
3661 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm0, %xmm0
3662 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
3663 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm3, %ymm13, %ymm1
3664 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, %ymm14
3665 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm4
3666 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm4[2],ymm1[3,4],ymm4[5],ymm1[6,7,8,9],ymm4[10],ymm1[11,12],ymm4[13],ymm1[14,15]
3667 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm1 = ymm1[u,u,u,u,u,u,u,u,u,u,6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
3668 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm4 = <255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,u,u,u,u,u,u,u,u,u,u,u,u>
3669 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm0
3670 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm1 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
3671 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm1, %ymm10, %ymm11, %ymm1
3672 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm4
3673 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u],zero,zero,xmm4[3,10],zero,zero,zero,xmm4[6,13,u,u,u,u]
3674 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,5,12],zero,zero,xmm1[1,8,15],zero,zero,xmm1[u,u,u,u]
3675 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm4, %xmm1, %xmm1
3676 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
3677 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm6, %ymm7, %ymm4
3678 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm4, %xmm5
3679 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm5[6,13],zero,zero,xmm5[2,9,u,u,u,u,u,u,u]
3680 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[1,8,15],zero,zero,xmm4[4,11],zero,zero,xmm4[u,u,u,u,u,u,u]
3681 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm5, %xmm4, %xmm4
3682 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm13, %ymm3, %ymm5
3683 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm5, %xmm8
3684 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm8[2],ymm5[3,4,5],ymm8[6],ymm5[7,8,9],ymm8[10],ymm5[11,12,13],ymm8[14],ymm5[15]
3685 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u,u,u,u,u,u,0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
3686 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm8 = <0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,u,u,u,u,u,u,u,u,u,u,u,u,u>
3687 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm5, %ymm4, %ymm8
3688 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 192(%rdi), %xmm4
3689 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm9 = xmm4[u,u,u,u,u,u,4,11,u,u,u,u,u,u,u,u]
3690 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 208(%rdi), %xmm5
3691 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm12 = xmm5[u,u,u,u,u,u,2,9,u,u,u,u,u,u,u,u]
3692 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm9 = xmm9[0],xmm12[0],xmm9[1],xmm12[1],xmm9[2],xmm12[2],xmm9[3],xmm12[3]
3693 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3694 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
3695 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm9[7]
3696 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = [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]
3697 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm0, %ymm1, %ymm0
3698 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3699 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm10, %ymm11, %ymm0
3700 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm0[u,u,u,6,13],zero,zero,xmm0[2,9],zero,zero,zero,xmm0[u,u,u,u]
3701 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm0
3702 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u],zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14,u,u,u,u]
3703 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm0, %xmm0
3704 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm5[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
3705 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
3706 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm12[0],xmm1[0],xmm12[1],xmm1[1],xmm12[2],xmm1[2],xmm12[3],xmm1[3]
3707 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
3708 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3709 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm1[7]
3710 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm8, %ymm0, %ymm0
3711 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, (%rsp) # 32-byte Spill
3712 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm11, %ymm10, %ymm0
3713 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm1
3714 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u],zero,zero,zero,xmm1[6,13],zero,zero,xmm1[2,9,u,u,u,u,u]
3715 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,1,8,15],zero,zero,xmm0[4,11],zero,zero,xmm0[u,u,u,u,u]
3716 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm0, %xmm0
3717 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[5,12]
3718 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm8 = xmm4[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
3719 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm8, %xmm1
3720 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm8
3721 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3722 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
3723 ; AVX2-FAST-PERLANE-NEXT:    # ymm0 = mem[0,1,0,1]
3724 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm8, %ymm1, %ymm1
3725 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3726 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
3727 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm11, %ymm10, %ymm1
3728 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[u,u,2,9],zero,zero,zero,xmm1[5,12],zero,zero,xmm1[u,u,u,u,u]
3729 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm1
3730 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u],zero,zero,xmm1[0,7,14],zero,zero,xmm1[3,10,u,u,u,u,u]
3731 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm8, %xmm1
3732 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm8 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[6,13]
3733 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
3734 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm8, %xmm12, %xmm8
3735 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3736 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
3737 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm1, %ymm8, %ymm1
3738 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3739 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm8 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
3740 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm11, %ymm10, %ymm1
3741 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm12 = xmm1[u,u,3,10],zero,zero,zero,xmm1[6,13],zero,zero,xmm1[u,u,u,u,u]
3742 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm1
3743 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u],zero,zero,xmm1[1,8,15],zero,zero,xmm1[4,11,u,u,u,u,u]
3744 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm12, %xmm1
3745 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
3746 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm14 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[0,7,14]
3747 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm12, %xmm14, %xmm12
3748 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3749 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
3750 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm1, %ymm12, %ymm1
3751 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3752 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm11, %ymm10, %ymm14
3753 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm12 = <255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u>
3754 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm10, %ymm11, %ymm10
3755 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm10, %xmm11
3756 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u],zero,zero,xmm11[2,9],zero,zero,zero,xmm11[5,12,u,u,u,u,u]
3757 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,4,11],zero,zero,xmm10[0,7,14],zero,zero,xmm10[u,u,u,u,u]
3758 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm11, %xmm10, %xmm10
3759 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm11 = xmm4[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
3760 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm15 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[1,8,15]
3761 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm11, %xmm15, %xmm11
3762 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
3763 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
3764 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm10, %ymm11, %ymm0
3765 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
3766 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm0 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
3767 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm7, %ymm6, %ymm10
3768 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm6, %ymm7, %ymm11
3769 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm6, %ymm7, %ymm15
3770 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm7, %ymm6, %ymm1
3771 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
3772 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm7, %ymm6, %ymm6
3773 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm0 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
3774 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm13, %ymm3, %ymm0
3775 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm13, %ymm3, %ymm9
3776 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm8, %ymm13, %ymm3, %ymm8
3777 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm12, %ymm3, %ymm13, %ymm7
3778 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm3, %ymm13, %ymm2
3779 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm3 = xmm11[2,9],zero,zero,zero,xmm11[5,12],zero,zero,xmm11[u,u,u,u,u,u,u]
3780 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm11, %xmm11
3781 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm11[0,7,14],zero,zero,xmm11[3,10,u,u,u,u,u,u,u]
3782 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm3, %xmm11, %xmm3
3783 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm11
3784 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm11[3],ymm0[4,5],ymm11[6],ymm0[7,8,9,10],ymm11[11],ymm0[12,13],ymm11[14],ymm0[15]
3785 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,1,8,15,6,13,4,11,18,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3786 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm11 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
3787 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm3, %ymm0, %ymm0
3788 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm3 = xmm15[3,10],zero,zero,zero,xmm15[6,13],zero,zero,xmm15[u,u,u,u,u,u,u]
3789 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm15, %xmm13
3790 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm13 = zero,zero,xmm13[1,8,15],zero,zero,xmm13[4,11,u,u,u,u,u,u,u]
3791 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm3, %xmm13, %xmm3
3792 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm9, %xmm13
3793 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm9 = ymm13[0],ymm9[1,2],ymm13[3],ymm9[4,5,6],ymm13[7,8],ymm9[9,10],ymm13[11],ymm9[12,13,14],ymm13[15]
3794 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,2,9,0,7,14,5,12,19,26,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3795 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm3, %ymm9, %ymm3
3796 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm9
3797 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,xmm9[2,9],zero,zero,zero,xmm9[5,12,u,u,u,u,u,u,u]
3798 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[4,11],zero,zero,xmm1[0,7,14],zero,zero,xmm1[u,u,u,u,u,u,u]
3799 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm9, %xmm1
3800 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm8, %xmm9
3801 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1,2,3],ymm9[4],ymm8[5,6],ymm9[7,8],ymm8[9,10,11],ymm9[12],ymm8[13,14],ymm9[15]
3802 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,u,u,u,u,u,3,10,1,8,15,6,13,20,27,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3803 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm1, %ymm8, %ymm9
3804 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm6, %xmm1
3805 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,xmm1[3,10],zero,zero,zero,xmm1[6,13,u,u,u,u,u,u,u]
3806 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[5,12],zero,zero,xmm6[1,8,15],zero,zero,xmm6[u,u,u,u,u,u,u]
3807 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm6, %xmm1
3808 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm7, %xmm6
3809 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm6 = ymm7[0],ymm6[1],ymm7[2,3],ymm6[4],ymm7[5,6,7,8],ymm6[9],ymm7[10,11],ymm6[12],ymm7[13,14,15]
3810 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,4,11,2,9,0,7,14,21,28,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3811 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm1, %ymm6, %ymm1
3812 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm6 = xmm10[6,13],zero,zero,xmm10[2,9],zero,zero,zero,xmm10[u,u,u,u,u,u,u]
3813 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm10, %xmm7
3814 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm7[4,11],zero,zero,xmm7[0,7,14,u,u,u,u,u,u,u]
3815 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm6, %xmm7, %xmm6
3816 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm2, %xmm7
3817 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm7[1],ymm2[2,3,4],ymm7[5],ymm2[6,7,8],ymm7[9],ymm2[10,11,12],ymm7[13],ymm2[14,15]
3818 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,5,12,3,10,1,8,15,22,29,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
3819 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm6, %ymm2, %ymm2
3820 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm14, %xmm6
3821 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,zero,xmm6[5,12],zero,zero,xmm6[1,8,15,u,u,u,u]
3822 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm7 = xmm14[u,u,0,7,14],zero,zero,xmm14[3,10],zero,zero,zero,xmm14[u,u,u,u]
3823 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm6, %xmm7, %xmm6
3824 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u,u,4,11,u,u,u,u,u,u,u,u]
3825 ; AVX2-FAST-PERLANE-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
3826 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]
3827 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm5
3828 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
3829 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm4 = ymm5[0,1,2,3,4,5,6],ymm4[7]
3830 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm4 = ymm0[0],ymm4[1,2,3,4,5,6,7],ymm0[8],ymm4[9,10,11,12,13,14,15]
3831 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5,6,7]
3832 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm4 # 32-byte Folded Reload
3833 ; AVX2-FAST-PERLANE-NEXT:    # ymm4 = ymm3[0],mem[1,2,3,4,5,6,7],ymm3[8],mem[9,10,11,12,13,14,15]
3834 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4,5,6,7]
3835 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9, %ymm4 # 32-byte Folded Reload
3836 ; AVX2-FAST-PERLANE-NEXT:    # ymm4 = ymm9[0],mem[1,2,3,4,5,6,7],ymm9[8],mem[9,10,11,12,13,14,15]
3837 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm4 = ymm9[0,1,2,3],ymm4[4,5,6,7]
3838 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm5 # 32-byte Folded Reload
3839 ; AVX2-FAST-PERLANE-NEXT:    # ymm5 = ymm1[0],mem[1,2,3,4,5,6,7],ymm1[8],mem[9,10,11,12,13,14,15]
3840 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm5[4,5,6,7]
3841 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm5 # 32-byte Folded Reload
3842 ; AVX2-FAST-PERLANE-NEXT:    # ymm5 = ymm2[0],mem[1,2,3,4,5,6,7],ymm2[8],mem[9,10,11,12,13,14,15]
3843 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm5[4,5,6,7]
3844 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
3845 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm5, (%rsi)
3846 ; AVX2-FAST-PERLANE-NEXT:    vmovups (%rsp), %ymm5 # 32-byte Reload
3847 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm5, (%rdx)
3848 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm0, (%rcx)
3849 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm3, (%r8)
3850 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm4, (%r9)
3851 ; AVX2-FAST-PERLANE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3852 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm1, (%rax)
3853 ; AVX2-FAST-PERLANE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3854 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, (%rax)
3855 ; AVX2-FAST-PERLANE-NEXT:    addq $72, %rsp
3856 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
3857 ; AVX2-FAST-PERLANE-NEXT:    retq
3859 ; AVX512F-SLOW-LABEL: load_i8_stride7_vf32:
3860 ; AVX512F-SLOW:       # %bb.0:
3861 ; AVX512F-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
3862 ; AVX512F-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %r10
3863 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = [65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535]
3864 ; AVX512F-SLOW-NEXT:    vmovdqa 128(%rdi), %ymm2
3865 ; AVX512F-SLOW-NEXT:    vmovdqa 160(%rdi), %ymm3
3866 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm0, %ymm1
3867 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm2, %ymm3, %ymm1
3868 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm4
3869 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u],zero,zero,xmm4[3,10],zero,zero,zero,xmm4[6,13,u,u,u,u]
3870 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,5,12],zero,zero,xmm1[1,8,15],zero,zero,xmm1[u,u,u,u]
3871 ; AVX512F-SLOW-NEXT:    vpor %xmm4, %xmm1, %xmm1
3872 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
3873 ; AVX512F-SLOW-NEXT:    vmovdqa 192(%rdi), %xmm4
3874 ; AVX512F-SLOW-NEXT:    vpbroadcastd {{.*#+}} xmm5 = [0,0,4,11,0,0,4,11,0,0,4,11,0,0,4,11]
3875 ; AVX512F-SLOW-NEXT:    vpshufb %xmm5, %xmm4, %xmm6
3876 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm5, %xmm20
3877 ; AVX512F-SLOW-NEXT:    vmovdqa 208(%rdi), %xmm5
3878 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm5[u,u,u,u,u,u,2,9,u,u,u,u,u,u,u,u]
3879 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1],xmm6[2],xmm7[2],xmm6[3],xmm7[3]
3880 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
3881 ; AVX512F-SLOW-NEXT:    vpblendd {{.*#+}} ymm12 = ymm1[0,1,2,3,4,5,6],ymm6[7]
3882 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = [65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0]
3883 ; AVX512F-SLOW-NEXT:    vmovdqa (%rdi), %ymm6
3884 ; AVX512F-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm7
3885 ; AVX512F-SLOW-NEXT:    vmovdqa 64(%rdi), %ymm1
3886 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm14, %ymm9
3887 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm7, %ymm6, %ymm9
3888 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm9, %xmm10
3889 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,zero,xmm10[5,12],zero,zero,xmm10[1,8,15,u,u,u,u,u,u]
3890 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[0,7,14],zero,zero,xmm9[3,10],zero,zero,zero,xmm9[u,u,u,u,u,u]
3891 ; AVX512F-SLOW-NEXT:    vpor %xmm10, %xmm9, %xmm13
3892 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = [65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535]
3893 ; AVX512F-SLOW-NEXT:    vmovdqa 96(%rdi), %ymm9
3894 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm11, %ymm15
3895 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm1, %ymm9, %ymm15
3896 ; AVX512F-SLOW-NEXT:    vmovdqa 80(%rdi), %xmm10
3897 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm15 = ymm15[0,1],ymm10[2],ymm15[3,4],ymm10[5],ymm15[6,7,8,9],ymm10[10],ymm15[11,12],ymm10[13],ymm15[14,15]
3898 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm15[6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
3899 ; AVX512F-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm13, %ymm8
3900 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm16 = [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]
3901 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %ymm12, %ymm16, %ymm8
3902 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm8, %ymm18
3903 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm11, %ymm12
3904 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm2, %ymm3, %ymm12
3905 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm12[u,u,u,6,13],zero,zero,xmm12[2,9],zero,zero,zero,xmm12[u,u,u,u]
3906 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm12, %xmm12
3907 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u,u],zero,zero,xmm12[4,11],zero,zero,xmm12[0,7,14,u,u,u,u]
3908 ; AVX512F-SLOW-NEXT:    vpor %xmm13, %xmm12, %xmm12
3909 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
3910 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm5[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
3911 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm4[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
3912 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm8[0],xmm13[0],xmm8[1],xmm13[1],xmm8[2],xmm13[2],xmm8[3],xmm13[3]
3913 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
3914 ; AVX512F-SLOW-NEXT:    vpblendd {{.*#+}} ymm8 = ymm12[0,1,2,3,4,5,6],ymm8[7]
3915 ; AVX512F-SLOW-NEXT:    vmovdqa {{.*#+}} ymm13 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535]
3916 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm13, %ymm12
3917 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm7, %ymm6, %ymm12
3918 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm12, %xmm15
3919 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,zero,xmm15[6,13],zero,zero,xmm15[2,9,u,u,u,u,u,u,u]
3920 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[1,8,15],zero,zero,xmm12[4,11],zero,zero,xmm12[u,u,u,u,u,u,u]
3921 ; AVX512F-SLOW-NEXT:    vpor %xmm15, %xmm12, %xmm15
3922 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm14, %ymm12
3923 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm9, %ymm1, %ymm12
3924 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm12 = ymm12[0,1],ymm10[2],ymm12[3,4,5],ymm10[6],ymm12[7,8,9],ymm10[10],ymm12[11,12,13],ymm10[14],ymm12[15]
3925 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm12 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm12[0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
3926 ; AVX512F-SLOW-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm15, %ymm12
3927 ; AVX512F-SLOW-NEXT:    vpternlogq $226, %ymm8, %ymm16, %ymm12
3928 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm12, %ymm19
3929 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm0, %ymm8
3930 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm7, %ymm6, %ymm8
3931 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm8[2,9],zero,zero,zero,xmm8[5,12],zero,zero,xmm8[u,u,u,u,u,u,u]
3932 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm8
3933 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm8[0,7,14],zero,zero,xmm8[3,10,u,u,u,u,u,u,u]
3934 ; AVX512F-SLOW-NEXT:    vpor %xmm15, %xmm8, %xmm8
3935 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm13, %ymm15
3936 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm9, %ymm1, %ymm15
3937 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm15 = ymm15[0,1,2],ymm10[3],ymm15[4,5],ymm10[6],ymm15[7,8,9,10],ymm10[11],ymm15[12,13],ymm10[14],ymm15[15]
3938 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm15 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm15[1,8,15,6,13,4,11,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
3939 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm17 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
3940 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %ymm17, %ymm8, %ymm15
3941 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm3, %ymm2, %ymm14
3942 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm14, %xmm8
3943 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u],zero,zero,zero,xmm8[5,12],zero,zero,xmm8[1,8,15,u,u,u,u]
3944 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[u,u,0,7,14],zero,zero,xmm14[3,10],zero,zero,zero,xmm14[u,u,u,u]
3945 ; AVX512F-SLOW-NEXT:    vpor %xmm8, %xmm14, %xmm8
3946 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
3947 ; AVX512F-SLOW-NEXT:    vmovdqa64 %xmm20, %xmm12
3948 ; AVX512F-SLOW-NEXT:    vpshufb %xmm12, %xmm5, %xmm14
3949 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
3950 ; AVX512F-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm12 = xmm12[0],xmm14[0],xmm12[1],xmm14[1],xmm12[2],xmm14[2],xmm12[3],xmm14[3]
3951 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
3952 ; AVX512F-SLOW-NEXT:    vpblendd {{.*#+}} ymm8 = ymm8[0,1,2,3,4,5,6],ymm12[7]
3953 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm15[0],ymm8[1,2,3,4,5,6,7],ymm15[8],ymm8[9,10,11,12,13,14,15]
3954 ; AVX512F-SLOW-NEXT:    vpblendd {{.*#+}} ymm8 = ymm15[0,1,2,3],ymm8[4,5,6,7]
3955 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm8, %ymm20
3956 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm13, %ymm8
3957 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm3, %ymm2, %ymm8
3958 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm12
3959 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u],zero,zero,zero,xmm12[6,13],zero,zero,xmm12[2,9,u,u,u,u,u]
3960 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,1,8,15],zero,zero,xmm8[4,11],zero,zero,xmm8[u,u,u,u,u]
3961 ; AVX512F-SLOW-NEXT:    vpor %xmm12, %xmm8, %xmm8
3962 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
3963 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[5,12]
3964 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm4[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
3965 ; AVX512F-SLOW-NEXT:    vpor %xmm12, %xmm14, %xmm12
3966 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
3967 ; AVX512F-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm16 = [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]
3968 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %ymm8, %ymm16, %ymm12
3969 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm11, %ymm8
3970 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm7, %ymm6, %ymm8
3971 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm8[3,10],zero,zero,zero,xmm8[6,13],zero,zero,xmm8[u,u,u,u,u,u,u]
3972 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm8
3973 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,xmm8[1,8,15],zero,zero,xmm8[4,11,u,u,u,u,u,u,u]
3974 ; AVX512F-SLOW-NEXT:    vpor %xmm14, %xmm8, %xmm8
3975 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm0, %ymm14
3976 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm9, %ymm1, %ymm14
3977 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm14 = ymm10[0],ymm14[1,2],ymm10[3],ymm14[4,5,6],ymm10[7,8],ymm14[9,10],ymm10[11],ymm14[12,13,14],ymm10[15]
3978 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm14 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm14[2,9,0,7,14,5,12,19,26],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
3979 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %ymm17, %ymm8, %ymm14
3980 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm14[0],ymm12[1,2,3,4,5,6,7],ymm14[8],ymm12[9,10,11,12,13,14,15]
3981 ; AVX512F-SLOW-NEXT:    vpblendd {{.*#+}} ymm8 = ymm14[0,1,2,3],ymm8[4,5,6,7]
3982 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm8, %ymm21
3983 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm0, %ymm8
3984 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm3, %ymm2, %ymm8
3985 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm8[u,u,2,9],zero,zero,zero,xmm8[5,12],zero,zero,xmm8[u,u,u,u,u]
3986 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm8
3987 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u],zero,zero,xmm8[0,7,14],zero,zero,xmm8[3,10,u,u,u,u,u]
3988 ; AVX512F-SLOW-NEXT:    vpor %xmm12, %xmm8, %xmm8
3989 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
3990 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm5[6,13]
3991 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm4[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
3992 ; AVX512F-SLOW-NEXT:    vpor %xmm12, %xmm14, %xmm12
3993 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
3994 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %ymm8, %ymm16, %ymm12
3995 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm13, %ymm8
3996 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm6, %ymm7, %ymm8
3997 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm14
3998 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,xmm14[2,9],zero,zero,zero,xmm14[5,12,u,u,u,u,u,u,u]
3999 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[4,11],zero,zero,xmm8[0,7,14],zero,zero,xmm8[u,u,u,u,u,u,u]
4000 ; AVX512F-SLOW-NEXT:    vpor %xmm14, %xmm8, %xmm8
4001 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm11, %ymm14
4002 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm9, %ymm1, %ymm14
4003 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm14 = ymm10[0],ymm14[1,2,3],ymm10[4],ymm14[5,6],ymm10[7,8],ymm14[9,10,11],ymm10[12],ymm14[13,14],ymm10[15]
4004 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm14 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm14[3,10,1,8,15,6,13,20,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4005 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %ymm17, %ymm8, %ymm14
4006 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm14[0],ymm12[1,2,3,4,5,6,7],ymm14[8],ymm12[9,10,11,12,13,14,15]
4007 ; AVX512F-SLOW-NEXT:    vpblendd {{.*#+}} ymm14 = ymm14[0,1,2,3],ymm8[4,5,6,7]
4008 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm11, %ymm8
4009 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm3, %ymm2, %ymm8
4010 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm8[u,u,3,10],zero,zero,zero,xmm8[6,13],zero,zero,xmm8[u,u,u,u,u]
4011 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm8
4012 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u],zero,zero,xmm8[1,8,15],zero,zero,xmm8[4,11,u,u,u,u,u]
4013 ; AVX512F-SLOW-NEXT:    vpor %xmm12, %xmm8, %xmm8
4014 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
4015 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
4016 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[0,7,14]
4017 ; AVX512F-SLOW-NEXT:    vpor %xmm12, %xmm15, %xmm12
4018 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
4019 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %ymm8, %ymm16, %ymm12
4020 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm0, %ymm8
4021 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm6, %ymm7, %ymm8
4022 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm15
4023 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,xmm15[3,10],zero,zero,zero,xmm15[6,13,u,u,u,u,u,u,u]
4024 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[5,12],zero,zero,xmm8[1,8,15],zero,zero,xmm8[u,u,u,u,u,u,u]
4025 ; AVX512F-SLOW-NEXT:    vpor %xmm15, %xmm8, %xmm8
4026 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm13, %ymm15
4027 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm1, %ymm9, %ymm15
4028 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm15 = ymm15[0],ymm10[1],ymm15[2,3],ymm10[4],ymm15[5,6,7,8],ymm10[9],ymm15[10,11],ymm10[12],ymm15[13,14,15]
4029 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm15 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm15[4,11,2,9,0,7,14,21,28],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4030 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %ymm17, %ymm8, %ymm15
4031 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm8 = ymm15[0],ymm12[1,2,3,4,5,6,7],ymm15[8],ymm12[9,10,11,12,13,14,15]
4032 ; AVX512F-SLOW-NEXT:    vpblendd {{.*#+}} ymm8 = ymm15[0,1,2,3],ymm8[4,5,6,7]
4033 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm2, %ymm3, %ymm13
4034 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm2
4035 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u],zero,zero,xmm2[2,9],zero,zero,zero,xmm2[5,12,u,u,u,u,u]
4036 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm13[u,u,4,11],zero,zero,xmm13[0,7,14],zero,zero,xmm13[u,u,u,u,u]
4037 ; AVX512F-SLOW-NEXT:    vpor %xmm2, %xmm3, %xmm2
4038 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
4039 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm4[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
4040 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[1,8,15]
4041 ; AVX512F-SLOW-NEXT:    vpor %xmm3, %xmm4, %xmm3
4042 ; AVX512F-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
4043 ; AVX512F-SLOW-NEXT:    vpternlogq $184, %ymm2, %ymm16, %ymm3
4044 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm6, %ymm7, %ymm11
4045 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm11[6,13],zero,zero,xmm11[2,9],zero,zero,zero,xmm11[u,u,u,u,u,u,u]
4046 ; AVX512F-SLOW-NEXT:    vextracti128 $1, %ymm11, %xmm4
4047 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,xmm4[4,11],zero,zero,xmm4[0,7,14,u,u,u,u,u,u,u]
4048 ; AVX512F-SLOW-NEXT:    vpor %xmm2, %xmm4, %xmm2
4049 ; AVX512F-SLOW-NEXT:    vpternlogq $202, %ymm1, %ymm9, %ymm0
4050 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm10[1],ymm0[2,3,4],ymm10[5],ymm0[6,7,8],ymm10[9],ymm0[10,11,12],ymm10[13],ymm0[14,15]
4051 ; AVX512F-SLOW-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[5,12,3,10,1,8,15,22,29],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4052 ; AVX512F-SLOW-NEXT:    vpternlogq $248, %ymm17, %ymm2, %ymm0
4053 ; AVX512F-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0],ymm3[1,2,3,4,5,6,7],ymm0[8],ymm3[9,10,11,12,13,14,15]
4054 ; AVX512F-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
4055 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm18, (%rsi)
4056 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm19, (%rdx)
4057 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm20, (%rcx)
4058 ; AVX512F-SLOW-NEXT:    vmovdqa64 %ymm21, (%r8)
4059 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm14, (%r9)
4060 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm8, (%r10)
4061 ; AVX512F-SLOW-NEXT:    vmovdqa %ymm0, (%rax)
4062 ; AVX512F-SLOW-NEXT:    vzeroupper
4063 ; AVX512F-SLOW-NEXT:    retq
4065 ; AVX512F-FAST-LABEL: load_i8_stride7_vf32:
4066 ; AVX512F-FAST:       # %bb.0:
4067 ; AVX512F-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
4068 ; AVX512F-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %r10
4069 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = [65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535]
4070 ; AVX512F-FAST-NEXT:    vmovdqa 128(%rdi), %ymm2
4071 ; AVX512F-FAST-NEXT:    vmovdqa 160(%rdi), %ymm3
4072 ; AVX512F-FAST-NEXT:    vmovdqa %ymm0, %ymm1
4073 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm2, %ymm3, %ymm1
4074 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm4
4075 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u],zero,zero,xmm4[3,10],zero,zero,zero,xmm4[6,13,u,u,u,u]
4076 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,5,12],zero,zero,xmm1[1,8,15],zero,zero,xmm1[u,u,u,u]
4077 ; AVX512F-FAST-NEXT:    vpor %xmm4, %xmm1, %xmm1
4078 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
4079 ; AVX512F-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [1,2,4,6,1,2,4,6]
4080 ; AVX512F-FAST-NEXT:    # ymm4 = mem[0,1,0,1]
4081 ; AVX512F-FAST-NEXT:    vmovdqa 192(%rdi), %ymm12
4082 ; AVX512F-FAST-NEXT:    vpermd %ymm12, %ymm4, %ymm4
4083 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,23,26,29]
4084 ; AVX512F-FAST-NEXT:    vpblendd {{.*#+}} ymm6 = ymm1[0,1,2,3,4,5,6],ymm4[7]
4085 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm13 = [65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0]
4086 ; AVX512F-FAST-NEXT:    vmovdqa (%rdi), %ymm4
4087 ; AVX512F-FAST-NEXT:    vmovdqa 32(%rdi), %ymm5
4088 ; AVX512F-FAST-NEXT:    vmovdqa 64(%rdi), %ymm1
4089 ; AVX512F-FAST-NEXT:    vmovdqa %ymm13, %ymm7
4090 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm5, %ymm4, %ymm7
4091 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm7, %xmm8
4092 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = zero,zero,zero,xmm8[5,12],zero,zero,xmm8[1,8,15,u,u,u,u,u,u]
4093 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[0,7,14],zero,zero,xmm7[3,10],zero,zero,zero,xmm7[u,u,u,u,u,u]
4094 ; AVX512F-FAST-NEXT:    vpor %xmm7, %xmm8, %xmm10
4095 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm9 = [65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535]
4096 ; AVX512F-FAST-NEXT:    vmovdqa 96(%rdi), %ymm7
4097 ; AVX512F-FAST-NEXT:    vmovdqa %ymm9, %ymm11
4098 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm1, %ymm7, %ymm11
4099 ; AVX512F-FAST-NEXT:    vmovdqa 80(%rdi), %xmm8
4100 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm11 = ymm11[0,1],ymm8[2],ymm11[3,4],ymm8[5],ymm11[6,7,8,9],ymm8[10],ymm11[11,12],ymm8[13],ymm11[14,15]
4101 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm11[6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
4102 ; AVX512F-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm10, %ymm11
4103 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm16 = [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]
4104 ; AVX512F-FAST-NEXT:    vpternlogq $226, %ymm6, %ymm16, %ymm11
4105 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm11, %ymm18
4106 ; AVX512F-FAST-NEXT:    vmovdqa %ymm9, %ymm6
4107 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm2, %ymm3, %ymm6
4108 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm6[u,u,u,6,13],zero,zero,xmm6[2,9],zero,zero,zero,xmm6[u,u,u,u]
4109 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
4110 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u],zero,zero,xmm6[4,11],zero,zero,xmm6[0,7,14,u,u,u,u]
4111 ; AVX512F-FAST-NEXT:    vpor %xmm6, %xmm10, %xmm6
4112 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
4113 ; AVX512F-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm10 = [1,3,4,6,1,3,4,6]
4114 ; AVX512F-FAST-NEXT:    # ymm10 = mem[0,1,0,1]
4115 ; AVX512F-FAST-NEXT:    vpermd %ymm12, %ymm10, %ymm10
4116 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,20,27,30]
4117 ; AVX512F-FAST-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3,4,5,6],ymm10[7]
4118 ; AVX512F-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535]
4119 ; AVX512F-FAST-NEXT:    vmovdqa %ymm11, %ymm10
4120 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm5, %ymm4, %ymm10
4121 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm10, %xmm14
4122 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,zero,xmm14[6,13],zero,zero,xmm14[2,9,u,u,u,u,u,u,u]
4123 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[1,8,15],zero,zero,xmm10[4,11],zero,zero,xmm10[u,u,u,u,u,u,u]
4124 ; AVX512F-FAST-NEXT:    vpor %xmm14, %xmm10, %xmm14
4125 ; AVX512F-FAST-NEXT:    vmovdqa %ymm13, %ymm10
4126 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm7, %ymm1, %ymm10
4127 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm10 = ymm10[0,1],ymm8[2],ymm10[3,4,5],ymm8[6],ymm10[7,8,9],ymm8[10],ymm10[11,12,13],ymm8[14],ymm10[15]
4128 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
4129 ; AVX512F-FAST-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm14, %ymm10
4130 ; AVX512F-FAST-NEXT:    vpternlogq $226, %ymm6, %ymm16, %ymm10
4131 ; AVX512F-FAST-NEXT:    vmovdqa %ymm0, %ymm6
4132 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm5, %ymm4, %ymm6
4133 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm6[2,9],zero,zero,zero,xmm6[5,12],zero,zero,xmm6[u,u,u,u,u,u,u]
4134 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
4135 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm6[0,7,14],zero,zero,xmm6[3,10,u,u,u,u,u,u,u]
4136 ; AVX512F-FAST-NEXT:    vpor %xmm6, %xmm14, %xmm6
4137 ; AVX512F-FAST-NEXT:    vmovdqa %ymm11, %ymm14
4138 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm7, %ymm1, %ymm14
4139 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm14 = ymm14[0,1,2],ymm8[3],ymm14[4,5],ymm8[6],ymm14[7,8,9,10],ymm8[11],ymm14[12,13],ymm8[14],ymm14[15]
4140 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm14 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm14[1,8,15,6,13,4,11,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4141 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm17 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
4142 ; AVX512F-FAST-NEXT:    vpternlogq $248, %ymm17, %ymm6, %ymm14
4143 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm3, %ymm2, %ymm13
4144 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm13, %xmm6
4145 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,zero,xmm6[5,12],zero,zero,xmm6[1,8,15,u,u,u,u]
4146 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u,0,7,14],zero,zero,xmm13[3,10],zero,zero,zero,xmm13[u,u,u,u]
4147 ; AVX512F-FAST-NEXT:    vpor %xmm6, %xmm13, %xmm6
4148 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
4149 ; AVX512F-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm13 = [1,3,5,6,1,3,5,6]
4150 ; AVX512F-FAST-NEXT:    # ymm13 = mem[0,1,0,1]
4151 ; AVX512F-FAST-NEXT:    vpermd %ymm12, %ymm13, %ymm12
4152 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm12 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,21,24,31]
4153 ; AVX512F-FAST-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3,4,5,6],ymm12[7]
4154 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm14[0],ymm6[1,2,3,4,5,6,7],ymm14[8],ymm6[9,10,11,12,13,14,15]
4155 ; AVX512F-FAST-NEXT:    vpblendd {{.*#+}} ymm6 = ymm14[0,1,2,3],ymm6[4,5,6,7]
4156 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm6, %ymm19
4157 ; AVX512F-FAST-NEXT:    vmovdqa %ymm11, %ymm6
4158 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm3, %ymm2, %ymm6
4159 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm12
4160 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u],zero,zero,zero,xmm12[6,13],zero,zero,xmm12[2,9,u,u,u,u,u]
4161 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,1,8,15],zero,zero,xmm6[4,11],zero,zero,xmm6[u,u,u,u,u]
4162 ; AVX512F-FAST-NEXT:    vpor %xmm6, %xmm12, %xmm6
4163 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
4164 ; AVX512F-FAST-NEXT:    vmovdqa 208(%rdi), %xmm14
4165 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm14[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm14[5,12]
4166 ; AVX512F-FAST-NEXT:    vmovdqa 192(%rdi), %xmm12
4167 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm12[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
4168 ; AVX512F-FAST-NEXT:    vpor %xmm13, %xmm15, %xmm13
4169 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
4170 ; AVX512F-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm16 = [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]
4171 ; AVX512F-FAST-NEXT:    vpternlogq $184, %ymm6, %ymm16, %ymm13
4172 ; AVX512F-FAST-NEXT:    vmovdqa %ymm9, %ymm6
4173 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm5, %ymm4, %ymm6
4174 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm6[3,10],zero,zero,zero,xmm6[6,13],zero,zero,xmm6[u,u,u,u,u,u,u]
4175 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
4176 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm6[1,8,15],zero,zero,xmm6[4,11,u,u,u,u,u,u,u]
4177 ; AVX512F-FAST-NEXT:    vpor %xmm6, %xmm15, %xmm6
4178 ; AVX512F-FAST-NEXT:    vmovdqa %ymm0, %ymm15
4179 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm7, %ymm1, %ymm15
4180 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm15 = ymm8[0],ymm15[1,2],ymm8[3],ymm15[4,5,6],ymm8[7,8],ymm15[9,10],ymm8[11],ymm15[12,13,14],ymm8[15]
4181 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm15 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm15[2,9,0,7,14,5,12,19,26],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4182 ; AVX512F-FAST-NEXT:    vpternlogq $248, %ymm17, %ymm6, %ymm15
4183 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm15[0],ymm13[1,2,3,4,5,6,7],ymm15[8],ymm13[9,10,11,12,13,14,15]
4184 ; AVX512F-FAST-NEXT:    vpblendd {{.*#+}} ymm6 = ymm15[0,1,2,3],ymm6[4,5,6,7]
4185 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm6, %ymm20
4186 ; AVX512F-FAST-NEXT:    vmovdqa %ymm0, %ymm6
4187 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm3, %ymm2, %ymm6
4188 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm6[u,u,2,9],zero,zero,zero,xmm6[5,12],zero,zero,xmm6[u,u,u,u,u]
4189 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
4190 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,xmm6[0,7,14],zero,zero,xmm6[3,10,u,u,u,u,u]
4191 ; AVX512F-FAST-NEXT:    vpor %xmm6, %xmm13, %xmm6
4192 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
4193 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm14[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm14[6,13]
4194 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm12[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
4195 ; AVX512F-FAST-NEXT:    vpor %xmm13, %xmm15, %xmm13
4196 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
4197 ; AVX512F-FAST-NEXT:    vpternlogq $184, %ymm6, %ymm16, %ymm13
4198 ; AVX512F-FAST-NEXT:    vmovdqa %ymm11, %ymm6
4199 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm4, %ymm5, %ymm6
4200 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm15
4201 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,xmm15[2,9],zero,zero,zero,xmm15[5,12,u,u,u,u,u,u,u]
4202 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[4,11],zero,zero,xmm6[0,7,14],zero,zero,xmm6[u,u,u,u,u,u,u]
4203 ; AVX512F-FAST-NEXT:    vpor %xmm6, %xmm15, %xmm6
4204 ; AVX512F-FAST-NEXT:    vmovdqa %ymm9, %ymm15
4205 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm7, %ymm1, %ymm15
4206 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm15 = ymm8[0],ymm15[1,2,3],ymm8[4],ymm15[5,6],ymm8[7,8],ymm15[9,10,11],ymm8[12],ymm15[13,14],ymm8[15]
4207 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm15 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm15[3,10,1,8,15,6,13,20,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4208 ; AVX512F-FAST-NEXT:    vpternlogq $248, %ymm17, %ymm6, %ymm15
4209 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm15[0],ymm13[1,2,3,4,5,6,7],ymm15[8],ymm13[9,10,11,12,13,14,15]
4210 ; AVX512F-FAST-NEXT:    vpblendd {{.*#+}} ymm6 = ymm15[0,1,2,3],ymm6[4,5,6,7]
4211 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm6, %ymm21
4212 ; AVX512F-FAST-NEXT:    vmovdqa %ymm9, %ymm6
4213 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm3, %ymm2, %ymm6
4214 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm6[u,u,3,10],zero,zero,zero,xmm6[6,13],zero,zero,xmm6[u,u,u,u,u]
4215 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
4216 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,xmm6[1,8,15],zero,zero,xmm6[4,11,u,u,u,u,u]
4217 ; AVX512F-FAST-NEXT:    vpor %xmm6, %xmm15, %xmm6
4218 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
4219 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm12[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
4220 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm14[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm14[0,7,14]
4221 ; AVX512F-FAST-NEXT:    vpor %xmm15, %xmm13, %xmm13
4222 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
4223 ; AVX512F-FAST-NEXT:    vpternlogq $184, %ymm6, %ymm16, %ymm13
4224 ; AVX512F-FAST-NEXT:    vmovdqa %ymm0, %ymm6
4225 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm4, %ymm5, %ymm6
4226 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm15
4227 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,xmm15[3,10],zero,zero,zero,xmm15[6,13,u,u,u,u,u,u,u]
4228 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[5,12],zero,zero,xmm6[1,8,15],zero,zero,xmm6[u,u,u,u,u,u,u]
4229 ; AVX512F-FAST-NEXT:    vpor %xmm6, %xmm15, %xmm6
4230 ; AVX512F-FAST-NEXT:    vmovdqa %ymm11, %ymm15
4231 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm1, %ymm7, %ymm15
4232 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm15 = ymm15[0],ymm8[1],ymm15[2,3],ymm8[4],ymm15[5,6,7,8],ymm8[9],ymm15[10,11],ymm8[12],ymm15[13,14,15]
4233 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm15 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm15[4,11,2,9,0,7,14,21,28],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4234 ; AVX512F-FAST-NEXT:    vpternlogq $248, %ymm17, %ymm6, %ymm15
4235 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm15[0],ymm13[1,2,3,4,5,6,7],ymm15[8],ymm13[9,10,11,12,13,14,15]
4236 ; AVX512F-FAST-NEXT:    vpblendd {{.*#+}} ymm6 = ymm15[0,1,2,3],ymm6[4,5,6,7]
4237 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm2, %ymm3, %ymm11
4238 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm2
4239 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u],zero,zero,xmm2[2,9],zero,zero,zero,xmm2[5,12,u,u,u,u,u]
4240 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm11[u,u,4,11],zero,zero,xmm11[0,7,14],zero,zero,xmm11[u,u,u,u,u]
4241 ; AVX512F-FAST-NEXT:    vpor %xmm2, %xmm3, %xmm2
4242 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
4243 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm12[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
4244 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm14[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm14[1,8,15]
4245 ; AVX512F-FAST-NEXT:    vpor %xmm3, %xmm11, %xmm3
4246 ; AVX512F-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
4247 ; AVX512F-FAST-NEXT:    vpternlogq $184, %ymm2, %ymm16, %ymm3
4248 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm4, %ymm5, %ymm9
4249 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm9[6,13],zero,zero,xmm9[2,9],zero,zero,zero,xmm9[u,u,u,u,u,u,u]
4250 ; AVX512F-FAST-NEXT:    vextracti128 $1, %ymm9, %xmm4
4251 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,xmm4[4,11],zero,zero,xmm4[0,7,14,u,u,u,u,u,u,u]
4252 ; AVX512F-FAST-NEXT:    vpor %xmm2, %xmm4, %xmm2
4253 ; AVX512F-FAST-NEXT:    vpternlogq $202, %ymm1, %ymm7, %ymm0
4254 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0],ymm8[1],ymm0[2,3,4],ymm8[5],ymm0[6,7,8],ymm8[9],ymm0[10,11,12],ymm8[13],ymm0[14,15]
4255 ; AVX512F-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[5,12,3,10,1,8,15,22,29],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
4256 ; AVX512F-FAST-NEXT:    vpternlogq $248, %ymm17, %ymm2, %ymm0
4257 ; AVX512F-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0],ymm3[1,2,3,4,5,6,7],ymm0[8],ymm3[9,10,11,12,13,14,15]
4258 ; AVX512F-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
4259 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm18, (%rsi)
4260 ; AVX512F-FAST-NEXT:    vmovdqa %ymm10, (%rdx)
4261 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm19, (%rcx)
4262 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm20, (%r8)
4263 ; AVX512F-FAST-NEXT:    vmovdqa64 %ymm21, (%r9)
4264 ; AVX512F-FAST-NEXT:    vmovdqa %ymm6, (%r10)
4265 ; AVX512F-FAST-NEXT:    vmovdqa %ymm0, (%rax)
4266 ; AVX512F-FAST-NEXT:    vzeroupper
4267 ; AVX512F-FAST-NEXT:    retq
4269 ; AVX512BW-SLOW-LABEL: load_i8_stride7_vf32:
4270 ; AVX512BW-SLOW:       # %bb.0:
4271 ; AVX512BW-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
4272 ; AVX512BW-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %r10
4273 ; AVX512BW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <16,9,2,19,20,13,6,23,24,u,26,27,28,u,30,31>
4274 ; AVX512BW-SLOW-NEXT:    vmovdqa64 64(%rdi), %zmm1
4275 ; AVX512BW-SLOW-NEXT:    vpermw %zmm1, %zmm0, %zmm0
4276 ; AVX512BW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <16,9,2,19,12,5,22,23,24,u,26,27,u,29,30,31>
4277 ; AVX512BW-SLOW-NEXT:    vpermw %zmm1, %zmm2, %zmm4
4278 ; AVX512BW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <8,1,2,19,12,5,22,15,u,9,26,11,u,29,14,u>
4279 ; AVX512BW-SLOW-NEXT:    vpermw %zmm1, %zmm2, %zmm5
4280 ; AVX512BW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <8,1,18,11,4,5,22,15,u,25,10,u,12,29,14,u>
4281 ; AVX512BW-SLOW-NEXT:    vpermw %zmm1, %zmm2, %zmm11
4282 ; AVX512BW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <0,1,18,11,4,21,14,7,8,25,10,u,28,13,u,15>
4283 ; AVX512BW-SLOW-NEXT:    vpermw %zmm1, %zmm2, %zmm12
4284 ; AVX512BW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <0,17,10,3,4,21,14,7,24,9,u,11,28,13,u,31>
4285 ; AVX512BW-SLOW-NEXT:    vpermw %zmm1, %zmm2, %zmm10
4286 ; AVX512BW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <16,17,10,3,20,13,6,23,24,25,u,27,28,u,30,31>
4287 ; AVX512BW-SLOW-NEXT:    vpermw %zmm1, %zmm2, %zmm6
4288 ; AVX512BW-SLOW-NEXT:    vmovdqa (%rdi), %ymm3
4289 ; AVX512BW-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm2
4290 ; AVX512BW-SLOW-NEXT:    movw $-28382, %r11w # imm = 0x9122
4291 ; AVX512BW-SLOW-NEXT:    kmovd %r11d, %k5
4292 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm2, %ymm3, %ymm1 {%k5}
4293 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm7
4294 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm7[5,12],zero,zero,xmm7[1,8,15,u,u,u,u,u,u]
4295 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,7,14],zero,zero,xmm1[3,10],zero,zero,zero,xmm1[u,u,u,u,u,u]
4296 ; AVX512BW-SLOW-NEXT:    vpor %xmm7, %xmm1, %xmm1
4297 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,u,6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
4298 ; AVX512BW-SLOW-NEXT:    movw $992, %r11w # imm = 0x3E0
4299 ; AVX512BW-SLOW-NEXT:    kmovd %r11d, %k1
4300 ; AVX512BW-SLOW-NEXT:    vmovdqu16 %ymm6, %ymm1 {%k1}
4301 ; AVX512BW-SLOW-NEXT:    vmovdqa 128(%rdi), %ymm7
4302 ; AVX512BW-SLOW-NEXT:    vmovdqa 160(%rdi), %ymm6
4303 ; AVX512BW-SLOW-NEXT:    movw $8772, %r11w # imm = 0x2244
4304 ; AVX512BW-SLOW-NEXT:    kmovd %r11d, %k1
4305 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm7, %ymm6, %ymm8 {%k1}
4306 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm9
4307 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[u,u,u],zero,zero,xmm9[3,10],zero,zero,zero,xmm9[6,13,u,u,u,u]
4308 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,5,12],zero,zero,xmm8[1,8,15],zero,zero,xmm8[u,u,u,u]
4309 ; AVX512BW-SLOW-NEXT:    vpor %xmm9, %xmm8, %xmm8
4310 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm13
4311 ; AVX512BW-SLOW-NEXT:    vmovdqa 192(%rdi), %xmm8
4312 ; AVX512BW-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm14 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
4313 ; AVX512BW-SLOW-NEXT:    vpshufb %xmm14, %xmm8, %xmm15
4314 ; AVX512BW-SLOW-NEXT:    vmovdqa 208(%rdi), %xmm9
4315 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm16 = xmm9[u,u,u,u,u,u,2,9,u,u,u,u,u,u,u,u]
4316 ; AVX512BW-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm15 = xmm15[0],xmm16[0],xmm15[1],xmm16[1],xmm15[2],xmm16[2],xmm15[3],xmm16[3]
4317 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm15, %ymm0, %ymm15
4318 ; AVX512BW-SLOW-NEXT:    vpblendd {{.*#+}} ymm13 = ymm13[0,1,2,3,4,5,6],ymm15[7]
4319 ; AVX512BW-SLOW-NEXT:    movl $-524288, %edi # imm = 0xFFF80000
4320 ; AVX512BW-SLOW-NEXT:    kmovd %edi, %k4
4321 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm13, %ymm1 {%k4}
4322 ; AVX512BW-SLOW-NEXT:    movw $4644, %di # imm = 0x1224
4323 ; AVX512BW-SLOW-NEXT:    kmovd %edi, %k2
4324 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm2, %ymm3, %ymm13 {%k2}
4325 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm15
4326 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,zero,xmm15[6,13],zero,zero,xmm15[2,9,u,u,u,u,u,u,u]
4327 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[1,8,15],zero,zero,xmm13[4,11],zero,zero,xmm13[u,u,u,u,u,u,u]
4328 ; AVX512BW-SLOW-NEXT:    vpor %xmm15, %xmm13, %xmm13
4329 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
4330 ; AVX512BW-SLOW-NEXT:    movl $511, %edi # imm = 0x1FF
4331 ; AVX512BW-SLOW-NEXT:    kmovd %edi, %k3
4332 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm13, %ymm10 {%k3}
4333 ; AVX512BW-SLOW-NEXT:    movw $9288, %di # imm = 0x2448
4334 ; AVX512BW-SLOW-NEXT:    kmovd %edi, %k3
4335 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm7, %ymm6, %ymm13 {%k3}
4336 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm13[u,u,u,6,13],zero,zero,xmm13[2,9],zero,zero,zero,xmm13[u,u,u,u]
4337 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm13
4338 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u,u],zero,zero,xmm13[4,11],zero,zero,xmm13[0,7,14,u,u,u,u]
4339 ; AVX512BW-SLOW-NEXT:    vpor %xmm15, %xmm13, %xmm13
4340 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
4341 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm9[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
4342 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm16 = xmm8[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
4343 ; AVX512BW-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm15 = xmm16[0],xmm15[0],xmm16[1],xmm15[1],xmm16[2],xmm15[2],xmm16[3],xmm15[3]
4344 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm15, %ymm0, %ymm15
4345 ; AVX512BW-SLOW-NEXT:    vpblendd {{.*#+}} ymm13 = ymm13[0,1,2,3,4,5,6],ymm15[7]
4346 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm13, %ymm10 {%k4}
4347 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm2, %ymm3, %ymm13 {%k1}
4348 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm13[2,9],zero,zero,zero,xmm13[5,12],zero,zero,xmm13[u,u,u,u,u,u,u]
4349 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm13
4350 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = zero,zero,xmm13[0,7,14],zero,zero,xmm13[3,10,u,u,u,u,u,u,u]
4351 ; AVX512BW-SLOW-NEXT:    vpor %xmm15, %xmm13, %xmm13
4352 ; AVX512BW-SLOW-NEXT:    movl $261632, %edi # imm = 0x3FE00
4353 ; AVX512BW-SLOW-NEXT:    kmovd %edi, %k4
4354 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm13 {%k4} = ymm12[u,u,u,u,u,u,u,u,u,1,8,15,6,13,4,11,18,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4355 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm6, %ymm7, %ymm12 {%k5}
4356 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm12, %xmm15
4357 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm15[u,u],zero,zero,zero,xmm15[5,12],zero,zero,xmm15[1,8,15,u,u,u,u]
4358 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u,0,7,14],zero,zero,xmm12[3,10],zero,zero,zero,xmm12[u,u,u,u]
4359 ; AVX512BW-SLOW-NEXT:    vpor %xmm15, %xmm12, %xmm12
4360 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
4361 ; AVX512BW-SLOW-NEXT:    vpshufb %xmm14, %xmm9, %xmm14
4362 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm8[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
4363 ; AVX512BW-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm14 = xmm15[0],xmm14[0],xmm15[1],xmm14[1],xmm15[2],xmm14[2],xmm15[3],xmm14[3]
4364 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
4365 ; AVX512BW-SLOW-NEXT:    vpblendd {{.*#+}} ymm12 = ymm12[0,1,2,3,4,5,6],ymm14[7]
4366 ; AVX512BW-SLOW-NEXT:    vpblendw {{.*#+}} ymm12 = ymm13[0],ymm12[1,2,3,4,5,6,7],ymm13[8],ymm12[9,10,11,12,13,14,15]
4367 ; AVX512BW-SLOW-NEXT:    vpblendd {{.*#+}} ymm12 = ymm13[0,1,2,3],ymm12[4,5,6,7]
4368 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm6, %ymm7, %ymm13 {%k2}
4369 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm14
4370 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[u,u],zero,zero,zero,xmm14[6,13],zero,zero,xmm14[2,9,u,u,u,u,u]
4371 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u,1,8,15],zero,zero,xmm13[4,11],zero,zero,xmm13[u,u,u,u,u]
4372 ; AVX512BW-SLOW-NEXT:    vpor %xmm14, %xmm13, %xmm13
4373 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
4374 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm9[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm9[5,12]
4375 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm8[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
4376 ; AVX512BW-SLOW-NEXT:    vpor %xmm14, %xmm15, %xmm14
4377 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
4378 ; AVX512BW-SLOW-NEXT:    movl $-134217728, %edi # imm = 0xF8000000
4379 ; AVX512BW-SLOW-NEXT:    kmovd %edi, %k5
4380 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm14, %ymm13 {%k5}
4381 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm2, %ymm3, %ymm14 {%k3}
4382 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm14[3,10],zero,zero,zero,xmm14[6,13],zero,zero,xmm14[u,u,u,u,u,u,u]
4383 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm14, %xmm14
4384 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,xmm14[1,8,15],zero,zero,xmm14[4,11,u,u,u,u,u,u,u]
4385 ; AVX512BW-SLOW-NEXT:    vpor %xmm15, %xmm14, %xmm14
4386 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm14 {%k4} = ymm11[u,u,u,u,u,u,u,u,u,2,9,0,7,14,5,12,19,26,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4387 ; AVX512BW-SLOW-NEXT:    vpblendw {{.*#+}} ymm11 = ymm14[0],ymm13[1,2,3,4,5,6,7],ymm14[8],ymm13[9,10,11,12,13,14,15]
4388 ; AVX512BW-SLOW-NEXT:    vpblendd {{.*#+}} ymm11 = ymm14[0,1,2,3],ymm11[4,5,6,7]
4389 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm6, %ymm7, %ymm13 {%k1}
4390 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm13[u,u,2,9],zero,zero,zero,xmm13[5,12],zero,zero,xmm13[u,u,u,u,u]
4391 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm13
4392 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u],zero,zero,xmm13[0,7,14],zero,zero,xmm13[3,10,u,u,u,u,u]
4393 ; AVX512BW-SLOW-NEXT:    vpor %xmm14, %xmm13, %xmm13
4394 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
4395 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm9[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm9[6,13]
4396 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm8[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
4397 ; AVX512BW-SLOW-NEXT:    vpor %xmm14, %xmm15, %xmm14
4398 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
4399 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm14, %ymm13 {%k5}
4400 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm3, %ymm2, %ymm14 {%k2}
4401 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm14, %xmm15
4402 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,xmm15[2,9],zero,zero,zero,xmm15[5,12,u,u,u,u,u,u,u]
4403 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[4,11],zero,zero,xmm14[0,7,14],zero,zero,xmm14[u,u,u,u,u,u,u]
4404 ; AVX512BW-SLOW-NEXT:    vpor %xmm15, %xmm14, %xmm14
4405 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm14 {%k4} = ymm5[u,u,u,u,u,u,u,u,u,3,10,1,8,15,6,13,20,27,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4406 ; AVX512BW-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm14[0],ymm13[1,2,3,4,5,6,7],ymm14[8],ymm13[9,10,11,12,13,14,15]
4407 ; AVX512BW-SLOW-NEXT:    vpblendd {{.*#+}} ymm5 = ymm14[0,1,2,3],ymm5[4,5,6,7]
4408 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm6, %ymm7, %ymm13 {%k3}
4409 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm13[u,u,3,10],zero,zero,zero,xmm13[6,13],zero,zero,xmm13[u,u,u,u,u]
4410 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm13
4411 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u],zero,zero,xmm13[1,8,15],zero,zero,xmm13[4,11,u,u,u,u,u]
4412 ; AVX512BW-SLOW-NEXT:    vpor %xmm14, %xmm13, %xmm13
4413 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
4414 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm8[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
4415 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm9[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm9[0,7,14]
4416 ; AVX512BW-SLOW-NEXT:    vpor %xmm14, %xmm15, %xmm14
4417 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
4418 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm14, %ymm13 {%k5}
4419 ; AVX512BW-SLOW-NEXT:    vpblendmw %ymm3, %ymm2, %ymm14 {%k1}
4420 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm14, %xmm15
4421 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,xmm15[3,10],zero,zero,zero,xmm15[6,13,u,u,u,u,u,u,u]
4422 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[5,12],zero,zero,xmm14[1,8,15],zero,zero,xmm14[u,u,u,u,u,u,u]
4423 ; AVX512BW-SLOW-NEXT:    vpor %xmm15, %xmm14, %xmm14
4424 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm14 {%k4} = ymm4[u,u,u,u,u,u,u,u,u,4,11,2,9,0,7,14,21,28,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4425 ; AVX512BW-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm14[0],ymm13[1,2,3,4,5,6,7],ymm14[8],ymm13[9,10,11,12,13,14,15]
4426 ; AVX512BW-SLOW-NEXT:    vpblendd {{.*#+}} ymm4 = ymm14[0,1,2,3],ymm4[4,5,6,7]
4427 ; AVX512BW-SLOW-NEXT:    vmovdqu16 %ymm7, %ymm6 {%k2}
4428 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm6, %xmm7
4429 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u],zero,zero,xmm7[2,9],zero,zero,zero,xmm7[5,12,u,u,u,u,u]
4430 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,4,11],zero,zero,xmm6[0,7,14],zero,zero,xmm6[u,u,u,u,u]
4431 ; AVX512BW-SLOW-NEXT:    vpor %xmm7, %xmm6, %xmm6
4432 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
4433 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm8[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
4434 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm9[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm9[1,8,15]
4435 ; AVX512BW-SLOW-NEXT:    vpor %xmm7, %xmm8, %xmm7
4436 ; AVX512BW-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
4437 ; AVX512BW-SLOW-NEXT:    vmovdqu8 %ymm7, %ymm6 {%k5}
4438 ; AVX512BW-SLOW-NEXT:    vmovdqu16 %ymm3, %ymm2 {%k3}
4439 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[6,13],zero,zero,xmm2[2,9],zero,zero,zero,xmm2[u,u,u,u,u,u,u]
4440 ; AVX512BW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
4441 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[4,11],zero,zero,xmm2[0,7,14,u,u,u,u,u,u,u]
4442 ; AVX512BW-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
4443 ; AVX512BW-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 {%k4} = ymm0[u,u,u,u,u,u,u,u,u,5,12,3,10,1,8,15,22,29,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4444 ; AVX512BW-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm2[0],ymm6[1,2,3,4,5,6,7],ymm2[8],ymm6[9,10,11,12,13,14,15]
4445 ; AVX512BW-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
4446 ; AVX512BW-SLOW-NEXT:    vmovdqa %ymm1, (%rsi)
4447 ; AVX512BW-SLOW-NEXT:    vmovdqa %ymm10, (%rdx)
4448 ; AVX512BW-SLOW-NEXT:    vmovdqa %ymm12, (%rcx)
4449 ; AVX512BW-SLOW-NEXT:    vmovdqa %ymm11, (%r8)
4450 ; AVX512BW-SLOW-NEXT:    vmovdqa %ymm5, (%r9)
4451 ; AVX512BW-SLOW-NEXT:    vmovdqa %ymm4, (%r10)
4452 ; AVX512BW-SLOW-NEXT:    vmovdqa %ymm0, (%rax)
4453 ; AVX512BW-SLOW-NEXT:    vzeroupper
4454 ; AVX512BW-SLOW-NEXT:    retq
4456 ; AVX512BW-FAST-LABEL: load_i8_stride7_vf32:
4457 ; AVX512BW-FAST:       # %bb.0:
4458 ; AVX512BW-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
4459 ; AVX512BW-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %r10
4460 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = [16,9,2,19,20,13,6,23,24,17,26,27,28,21,30,31]
4461 ; AVX512BW-FAST-NEXT:    vmovdqa64 64(%rdi), %zmm1
4462 ; AVX512BW-FAST-NEXT:    vpermw %zmm1, %zmm0, %zmm0
4463 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [16,9,2,19,12,5,22,23,24,17,26,27,20,29,30,31]
4464 ; AVX512BW-FAST-NEXT:    vpermw %zmm1, %zmm2, %zmm4
4465 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [8,1,2,19,12,5,22,15,0,9,26,11,4,29,14,7]
4466 ; AVX512BW-FAST-NEXT:    vpermw %zmm1, %zmm2, %zmm5
4467 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [8,1,18,11,4,5,22,15,0,25,10,3,12,29,14,7]
4468 ; AVX512BW-FAST-NEXT:    vpermw %zmm1, %zmm2, %zmm9
4469 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,1,18,11,4,21,14,7,8,25,10,3,28,13,6,15]
4470 ; AVX512BW-FAST-NEXT:    vpermw %zmm1, %zmm2, %zmm10
4471 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [0,17,10,3,4,21,14,7,24,9,2,11,28,13,6,31]
4472 ; AVX512BW-FAST-NEXT:    vpermw %zmm1, %zmm2, %zmm8
4473 ; AVX512BW-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = [16,17,10,3,20,13,6,23,24,25,18,27,28,21,30,31]
4474 ; AVX512BW-FAST-NEXT:    vpermw %zmm1, %zmm2, %zmm6
4475 ; AVX512BW-FAST-NEXT:    vmovdqa (%rdi), %ymm3
4476 ; AVX512BW-FAST-NEXT:    vmovdqa 32(%rdi), %ymm2
4477 ; AVX512BW-FAST-NEXT:    movw $-28382, %r11w # imm = 0x9122
4478 ; AVX512BW-FAST-NEXT:    kmovd %r11d, %k5
4479 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm2, %ymm3, %ymm1 {%k5}
4480 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm7
4481 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm7[5,12],zero,zero,xmm7[1,8,15,u,u,u,u,u,u]
4482 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,7,14],zero,zero,xmm1[3,10],zero,zero,zero,xmm1[u,u,u,u,u,u]
4483 ; AVX512BW-FAST-NEXT:    vpor %xmm7, %xmm1, %xmm1
4484 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,u,6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
4485 ; AVX512BW-FAST-NEXT:    movw $992, %r11w # imm = 0x3E0
4486 ; AVX512BW-FAST-NEXT:    kmovd %r11d, %k1
4487 ; AVX512BW-FAST-NEXT:    vmovdqu16 %ymm6, %ymm1 {%k1}
4488 ; AVX512BW-FAST-NEXT:    vmovdqa 128(%rdi), %ymm7
4489 ; AVX512BW-FAST-NEXT:    vmovdqa 160(%rdi), %ymm6
4490 ; AVX512BW-FAST-NEXT:    movw $8772, %r11w # imm = 0x2244
4491 ; AVX512BW-FAST-NEXT:    kmovd %r11d, %k1
4492 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm7, %ymm6, %ymm11 {%k1}
4493 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm12
4494 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u,u],zero,zero,xmm12[3,10],zero,zero,zero,xmm12[6,13,u,u,u,u]
4495 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,u,5,12],zero,zero,xmm11[1,8,15],zero,zero,xmm11[u,u,u,u]
4496 ; AVX512BW-FAST-NEXT:    vpor %xmm12, %xmm11, %xmm11
4497 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
4498 ; AVX512BW-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm12 = [1,2,4,6,1,2,4,6]
4499 ; AVX512BW-FAST-NEXT:    # ymm12 = mem[0,1,0,1]
4500 ; AVX512BW-FAST-NEXT:    vmovdqa 192(%rdi), %ymm13
4501 ; AVX512BW-FAST-NEXT:    vpermd %ymm13, %ymm12, %ymm12
4502 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm12 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,23,26,29]
4503 ; AVX512BW-FAST-NEXT:    vpblendd {{.*#+}} ymm11 = ymm11[0,1,2,3,4,5,6],ymm12[7]
4504 ; AVX512BW-FAST-NEXT:    movl $-524288, %r11d # imm = 0xFFF80000
4505 ; AVX512BW-FAST-NEXT:    kmovd %r11d, %k4
4506 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm11, %ymm1 {%k4}
4507 ; AVX512BW-FAST-NEXT:    movw $4644, %r11w # imm = 0x1224
4508 ; AVX512BW-FAST-NEXT:    kmovd %r11d, %k2
4509 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm2, %ymm3, %ymm11 {%k2}
4510 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm12
4511 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,zero,xmm12[6,13],zero,zero,xmm12[2,9,u,u,u,u,u,u,u]
4512 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[1,8,15],zero,zero,xmm11[4,11],zero,zero,xmm11[u,u,u,u,u,u,u]
4513 ; AVX512BW-FAST-NEXT:    vpor %xmm12, %xmm11, %xmm11
4514 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = ymm8[u,u,u,u,u,u,u,u,u,0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
4515 ; AVX512BW-FAST-NEXT:    movl $511, %r11d # imm = 0x1FF
4516 ; AVX512BW-FAST-NEXT:    kmovd %r11d, %k3
4517 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm11, %ymm8 {%k3}
4518 ; AVX512BW-FAST-NEXT:    movw $9288, %r11w # imm = 0x2448
4519 ; AVX512BW-FAST-NEXT:    kmovd %r11d, %k3
4520 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm7, %ymm6, %ymm11 {%k3}
4521 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm11[u,u,u,6,13],zero,zero,xmm11[2,9],zero,zero,zero,xmm11[u,u,u,u]
4522 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm11
4523 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,u],zero,zero,xmm11[4,11],zero,zero,xmm11[0,7,14,u,u,u,u]
4524 ; AVX512BW-FAST-NEXT:    vpor %xmm12, %xmm11, %xmm11
4525 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
4526 ; AVX512BW-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm12 = [1,3,4,6,1,3,4,6]
4527 ; AVX512BW-FAST-NEXT:    # ymm12 = mem[0,1,0,1]
4528 ; AVX512BW-FAST-NEXT:    vpermd %ymm13, %ymm12, %ymm12
4529 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm12 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,20,27,30]
4530 ; AVX512BW-FAST-NEXT:    vpblendd {{.*#+}} ymm11 = ymm11[0,1,2,3,4,5,6],ymm12[7]
4531 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm11, %ymm8 {%k4}
4532 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm2, %ymm3, %ymm11 {%k1}
4533 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm11[2,9],zero,zero,zero,xmm11[5,12],zero,zero,xmm11[u,u,u,u,u,u,u]
4534 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm11
4535 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm11[0,7,14],zero,zero,xmm11[3,10,u,u,u,u,u,u,u]
4536 ; AVX512BW-FAST-NEXT:    vpor %xmm12, %xmm11, %xmm11
4537 ; AVX512BW-FAST-NEXT:    movl $261632, %r11d # imm = 0x3FE00
4538 ; AVX512BW-FAST-NEXT:    kmovd %r11d, %k4
4539 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm11 {%k4} = ymm10[u,u,u,u,u,u,u,u,u,1,8,15,6,13,4,11,18,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4540 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm6, %ymm7, %ymm10 {%k5}
4541 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm10, %xmm12
4542 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u],zero,zero,zero,xmm12[5,12],zero,zero,xmm12[1,8,15,u,u,u,u]
4543 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,0,7,14],zero,zero,xmm10[3,10],zero,zero,zero,xmm10[u,u,u,u]
4544 ; AVX512BW-FAST-NEXT:    vpor %xmm12, %xmm10, %xmm10
4545 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
4546 ; AVX512BW-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm12 = [1,3,5,6,1,3,5,6]
4547 ; AVX512BW-FAST-NEXT:    # ymm12 = mem[0,1,0,1]
4548 ; AVX512BW-FAST-NEXT:    vpermd %ymm13, %ymm12, %ymm12
4549 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm12 = ymm12[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,21,24,31]
4550 ; AVX512BW-FAST-NEXT:    vpblendd {{.*#+}} ymm10 = ymm10[0,1,2,3,4,5,6],ymm12[7]
4551 ; AVX512BW-FAST-NEXT:    vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1,2,3,4,5,6,7],ymm11[8],ymm10[9,10,11,12,13,14,15]
4552 ; AVX512BW-FAST-NEXT:    vpblendd {{.*#+}} ymm10 = ymm11[0,1,2,3],ymm10[4,5,6,7]
4553 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm6, %ymm7, %ymm11 {%k2}
4554 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm12
4555 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u],zero,zero,zero,xmm12[6,13],zero,zero,xmm12[2,9,u,u,u,u,u]
4556 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,1,8,15],zero,zero,xmm11[4,11],zero,zero,xmm11[u,u,u,u,u]
4557 ; AVX512BW-FAST-NEXT:    vpor %xmm12, %xmm11, %xmm11
4558 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm13
4559 ; AVX512BW-FAST-NEXT:    vmovdqa 208(%rdi), %xmm11
4560 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm11[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm11[5,12]
4561 ; AVX512BW-FAST-NEXT:    vmovdqa 192(%rdi), %xmm12
4562 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm12[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
4563 ; AVX512BW-FAST-NEXT:    vpor %xmm14, %xmm15, %xmm14
4564 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
4565 ; AVX512BW-FAST-NEXT:    movl $-134217728, %edi # imm = 0xF8000000
4566 ; AVX512BW-FAST-NEXT:    kmovd %edi, %k5
4567 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm14, %ymm13 {%k5}
4568 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm2, %ymm3, %ymm14 {%k3}
4569 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm14[3,10],zero,zero,zero,xmm14[6,13],zero,zero,xmm14[u,u,u,u,u,u,u]
4570 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm14, %xmm14
4571 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,xmm14[1,8,15],zero,zero,xmm14[4,11,u,u,u,u,u,u,u]
4572 ; AVX512BW-FAST-NEXT:    vpor %xmm15, %xmm14, %xmm14
4573 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm14 {%k4} = ymm9[u,u,u,u,u,u,u,u,u,2,9,0,7,14,5,12,19,26,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4574 ; AVX512BW-FAST-NEXT:    vpblendw {{.*#+}} ymm9 = ymm14[0],ymm13[1,2,3,4,5,6,7],ymm14[8],ymm13[9,10,11,12,13,14,15]
4575 ; AVX512BW-FAST-NEXT:    vpblendd {{.*#+}} ymm9 = ymm14[0,1,2,3],ymm9[4,5,6,7]
4576 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm6, %ymm7, %ymm13 {%k1}
4577 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm13[u,u,2,9],zero,zero,zero,xmm13[5,12],zero,zero,xmm13[u,u,u,u,u]
4578 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm13, %xmm13
4579 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u],zero,zero,xmm13[0,7,14],zero,zero,xmm13[3,10,u,u,u,u,u]
4580 ; AVX512BW-FAST-NEXT:    vpor %xmm14, %xmm13, %xmm13
4581 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
4582 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm11[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm11[6,13]
4583 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm12[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
4584 ; AVX512BW-FAST-NEXT:    vpor %xmm14, %xmm15, %xmm14
4585 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
4586 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm14, %ymm13 {%k5}
4587 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm3, %ymm2, %ymm14 {%k2}
4588 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm14, %xmm15
4589 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,xmm15[2,9],zero,zero,zero,xmm15[5,12,u,u,u,u,u,u,u]
4590 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[4,11],zero,zero,xmm14[0,7,14],zero,zero,xmm14[u,u,u,u,u,u,u]
4591 ; AVX512BW-FAST-NEXT:    vpor %xmm15, %xmm14, %xmm14
4592 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm14 {%k4} = ymm5[u,u,u,u,u,u,u,u,u,3,10,1,8,15,6,13,20,27,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4593 ; AVX512BW-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm14[0],ymm13[1,2,3,4,5,6,7],ymm14[8],ymm13[9,10,11,12,13,14,15]
4594 ; AVX512BW-FAST-NEXT:    vpblendd {{.*#+}} ymm5 = ymm14[0,1,2,3],ymm5[4,5,6,7]
4595 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm6, %ymm7, %ymm13 {%k3}
4596 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm13[u,u,3,10],zero,zero,zero,xmm13[6,13],zero,zero,xmm13[u,u,u,u,u]
4597 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm13, %xmm13
4598 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u],zero,zero,xmm13[1,8,15],zero,zero,xmm13[4,11,u,u,u,u,u]
4599 ; AVX512BW-FAST-NEXT:    vpor %xmm14, %xmm13, %xmm13
4600 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
4601 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm12[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
4602 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm11[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm11[0,7,14]
4603 ; AVX512BW-FAST-NEXT:    vpor %xmm14, %xmm15, %xmm14
4604 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
4605 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm14, %ymm13 {%k5}
4606 ; AVX512BW-FAST-NEXT:    vpblendmw %ymm3, %ymm2, %ymm14 {%k1}
4607 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm14, %xmm15
4608 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,xmm15[3,10],zero,zero,zero,xmm15[6,13,u,u,u,u,u,u,u]
4609 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[5,12],zero,zero,xmm14[1,8,15],zero,zero,xmm14[u,u,u,u,u,u,u]
4610 ; AVX512BW-FAST-NEXT:    vpor %xmm15, %xmm14, %xmm14
4611 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm14 {%k4} = ymm4[u,u,u,u,u,u,u,u,u,4,11,2,9,0,7,14,21,28,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4612 ; AVX512BW-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm14[0],ymm13[1,2,3,4,5,6,7],ymm14[8],ymm13[9,10,11,12,13,14,15]
4613 ; AVX512BW-FAST-NEXT:    vpblendd {{.*#+}} ymm4 = ymm14[0,1,2,3],ymm4[4,5,6,7]
4614 ; AVX512BW-FAST-NEXT:    vmovdqu16 %ymm7, %ymm6 {%k2}
4615 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm7
4616 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u],zero,zero,xmm7[2,9],zero,zero,zero,xmm7[5,12,u,u,u,u,u]
4617 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,4,11],zero,zero,xmm6[0,7,14],zero,zero,xmm6[u,u,u,u,u]
4618 ; AVX512BW-FAST-NEXT:    vpor %xmm7, %xmm6, %xmm6
4619 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
4620 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm12[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
4621 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm11[1,8,15]
4622 ; AVX512BW-FAST-NEXT:    vpor %xmm7, %xmm11, %xmm7
4623 ; AVX512BW-FAST-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
4624 ; AVX512BW-FAST-NEXT:    vmovdqu8 %ymm7, %ymm6 {%k5}
4625 ; AVX512BW-FAST-NEXT:    vmovdqu16 %ymm3, %ymm2 {%k3}
4626 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[6,13],zero,zero,xmm2[2,9],zero,zero,zero,xmm2[u,u,u,u,u,u,u]
4627 ; AVX512BW-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm2
4628 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[4,11],zero,zero,xmm2[0,7,14,u,u,u,u,u,u,u]
4629 ; AVX512BW-FAST-NEXT:    vpor %xmm3, %xmm2, %xmm2
4630 ; AVX512BW-FAST-NEXT:    vpshufb {{.*#+}} ymm2 {%k4} = ymm0[u,u,u,u,u,u,u,u,u,5,12,3,10,1,8,15,22,29,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
4631 ; AVX512BW-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm2[0],ymm6[1,2,3,4,5,6,7],ymm2[8],ymm6[9,10,11,12,13,14,15]
4632 ; AVX512BW-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
4633 ; AVX512BW-FAST-NEXT:    vmovdqa %ymm1, (%rsi)
4634 ; AVX512BW-FAST-NEXT:    vmovdqa %ymm8, (%rdx)
4635 ; AVX512BW-FAST-NEXT:    vmovdqa %ymm10, (%rcx)
4636 ; AVX512BW-FAST-NEXT:    vmovdqa %ymm9, (%r8)
4637 ; AVX512BW-FAST-NEXT:    vmovdqa %ymm5, (%r9)
4638 ; AVX512BW-FAST-NEXT:    vmovdqa %ymm4, (%r10)
4639 ; AVX512BW-FAST-NEXT:    vmovdqa %ymm0, (%rax)
4640 ; AVX512BW-FAST-NEXT:    vzeroupper
4641 ; AVX512BW-FAST-NEXT:    retq
4642   %wide.vec = load <224 x i8>, ptr %in.vec, align 64
4643   %strided.vec0 = shufflevector <224 x i8> %wide.vec, <224 x i8> poison, <32 x i32> <i32 0, i32 7, i32 14, i32 21, i32 28, i32 35, i32 42, i32 49, i32 56, i32 63, i32 70, i32 77, i32 84, i32 91, i32 98, i32 105, i32 112, i32 119, i32 126, i32 133, i32 140, i32 147, i32 154, i32 161, i32 168, i32 175, i32 182, i32 189, i32 196, i32 203, i32 210, i32 217>
4644   %strided.vec1 = shufflevector <224 x i8> %wide.vec, <224 x i8> poison, <32 x i32> <i32 1, i32 8, i32 15, i32 22, i32 29, i32 36, i32 43, i32 50, i32 57, i32 64, i32 71, i32 78, i32 85, i32 92, i32 99, i32 106, i32 113, i32 120, i32 127, i32 134, i32 141, i32 148, i32 155, i32 162, i32 169, i32 176, i32 183, i32 190, i32 197, i32 204, i32 211, i32 218>
4645   %strided.vec2 = shufflevector <224 x i8> %wide.vec, <224 x i8> poison, <32 x i32> <i32 2, i32 9, i32 16, i32 23, i32 30, i32 37, i32 44, i32 51, i32 58, i32 65, i32 72, i32 79, i32 86, i32 93, i32 100, i32 107, i32 114, i32 121, i32 128, i32 135, i32 142, i32 149, i32 156, i32 163, i32 170, i32 177, i32 184, i32 191, i32 198, i32 205, i32 212, i32 219>
4646   %strided.vec3 = shufflevector <224 x i8> %wide.vec, <224 x i8> poison, <32 x i32> <i32 3, i32 10, i32 17, i32 24, i32 31, i32 38, i32 45, i32 52, i32 59, i32 66, i32 73, i32 80, i32 87, i32 94, i32 101, i32 108, i32 115, i32 122, i32 129, i32 136, i32 143, i32 150, i32 157, i32 164, i32 171, i32 178, i32 185, i32 192, i32 199, i32 206, i32 213, i32 220>
4647   %strided.vec4 = shufflevector <224 x i8> %wide.vec, <224 x i8> poison, <32 x i32> <i32 4, i32 11, i32 18, i32 25, i32 32, i32 39, i32 46, i32 53, i32 60, i32 67, i32 74, i32 81, i32 88, i32 95, i32 102, i32 109, i32 116, i32 123, i32 130, i32 137, i32 144, i32 151, i32 158, i32 165, i32 172, i32 179, i32 186, i32 193, i32 200, i32 207, i32 214, i32 221>
4648   %strided.vec5 = shufflevector <224 x i8> %wide.vec, <224 x i8> poison, <32 x i32> <i32 5, i32 12, i32 19, i32 26, i32 33, i32 40, i32 47, i32 54, i32 61, i32 68, i32 75, i32 82, i32 89, i32 96, i32 103, i32 110, i32 117, i32 124, i32 131, i32 138, i32 145, i32 152, i32 159, i32 166, i32 173, i32 180, i32 187, i32 194, i32 201, i32 208, i32 215, i32 222>
4649   %strided.vec6 = shufflevector <224 x i8> %wide.vec, <224 x i8> poison, <32 x i32> <i32 6, i32 13, i32 20, i32 27, i32 34, i32 41, i32 48, i32 55, i32 62, i32 69, i32 76, i32 83, i32 90, i32 97, i32 104, i32 111, i32 118, i32 125, i32 132, i32 139, i32 146, i32 153, i32 160, i32 167, i32 174, i32 181, i32 188, i32 195, i32 202, i32 209, i32 216, i32 223>
4650   store <32 x i8> %strided.vec0, ptr %out.vec0, align 64
4651   store <32 x i8> %strided.vec1, ptr %out.vec1, align 64
4652   store <32 x i8> %strided.vec2, ptr %out.vec2, align 64
4653   store <32 x i8> %strided.vec3, ptr %out.vec3, align 64
4654   store <32 x i8> %strided.vec4, ptr %out.vec4, align 64
4655   store <32 x i8> %strided.vec5, ptr %out.vec5, align 64
4656   store <32 x i8> %strided.vec6, ptr %out.vec6, align 64
4657   ret void
4660 define void @load_i8_stride7_vf64(ptr %in.vec, ptr %out.vec0, ptr %out.vec1, ptr %out.vec2, ptr %out.vec3, ptr %out.vec4, ptr %out.vec5, ptr %out.vec6) nounwind {
4661 ; SSE-LABEL: load_i8_stride7_vf64:
4662 ; SSE:       # %bb.0:
4663 ; SSE-NEXT:    subq $1528, %rsp # imm = 0x5F8
4664 ; SSE-NEXT:    movdqa 208(%rdi), %xmm12
4665 ; SSE-NEXT:    movdqa 192(%rdi), %xmm5
4666 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4667 ; SSE-NEXT:    movdqa 176(%rdi), %xmm8
4668 ; SSE-NEXT:    movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4669 ; SSE-NEXT:    movdqa 112(%rdi), %xmm4
4670 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4671 ; SSE-NEXT:    movdqa 128(%rdi), %xmm3
4672 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4673 ; SSE-NEXT:    movdqa 160(%rdi), %xmm6
4674 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4675 ; SSE-NEXT:    movdqa 144(%rdi), %xmm1
4676 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4677 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,0,65535,65535,65535,0,65535,65535]
4678 ; SSE-NEXT:    movdqa %xmm2, %xmm0
4679 ; SSE-NEXT:    pandn %xmm1, %xmm0
4680 ; SSE-NEXT:    movdqa %xmm6, %xmm1
4681 ; SSE-NEXT:    pand %xmm2, %xmm1
4682 ; SSE-NEXT:    movdqa %xmm2, %xmm7
4683 ; SSE-NEXT:    por %xmm0, %xmm1
4684 ; SSE-NEXT:    pxor %xmm6, %xmm6
4685 ; SSE-NEXT:    movdqa %xmm1, %xmm0
4686 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm6[8],xmm0[9],xmm6[9],xmm0[10],xmm6[10],xmm0[11],xmm6[11],xmm0[12],xmm6[12],xmm0[13],xmm6[13],xmm0[14],xmm6[14],xmm0[15],xmm6[15]
4687 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
4688 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
4689 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
4690 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
4691 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm1[0,1,2,3,4,4,5,6]
4692 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,3,2,3]
4693 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,3,2,3,4,5,6,7]
4694 ; SSE-NEXT:    packuswb %xmm0, %xmm2
4695 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [255,255,255,255,255,0,0,0,0,0,255,255,255,255,255,255]
4696 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [65535,65535,0,65535,65535,65535,0,65535]
4697 ; SSE-NEXT:    movdqa %xmm11, %xmm1
4698 ; SSE-NEXT:    pandn %xmm3, %xmm1
4699 ; SSE-NEXT:    movdqa %xmm4, %xmm3
4700 ; SSE-NEXT:    pand %xmm11, %xmm3
4701 ; SSE-NEXT:    por %xmm1, %xmm3
4702 ; SSE-NEXT:    movdqa %xmm3, %xmm1
4703 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
4704 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,65535,65535,0,65535,0,65535]
4705 ; SSE-NEXT:    movdqa %xmm10, %xmm4
4706 ; SSE-NEXT:    pandn %xmm1, %xmm4
4707 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3],xmm3[4],xmm6[4],xmm3[5],xmm6[5],xmm3[6],xmm6[6],xmm3[7],xmm6[7]
4708 ; SSE-NEXT:    pand %xmm10, %xmm3
4709 ; SSE-NEXT:    por %xmm4, %xmm3
4710 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,2,1,3]
4711 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
4712 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,1,1]
4713 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
4714 ; SSE-NEXT:    packuswb %xmm1, %xmm1
4715 ; SSE-NEXT:    pand %xmm0, %xmm1
4716 ; SSE-NEXT:    movdqa %xmm0, %xmm3
4717 ; SSE-NEXT:    pandn %xmm2, %xmm3
4718 ; SSE-NEXT:    por %xmm3, %xmm1
4719 ; SSE-NEXT:    movdqa {{.*#+}} xmm9 = [65535,65535,65535,0,65535,65535,0,65535]
4720 ; SSE-NEXT:    movdqa %xmm9, %xmm2
4721 ; SSE-NEXT:    pandn %xmm8, %xmm2
4722 ; SSE-NEXT:    movdqa %xmm5, %xmm3
4723 ; SSE-NEXT:    pand %xmm9, %xmm3
4724 ; SSE-NEXT:    por %xmm2, %xmm3
4725 ; SSE-NEXT:    movdqa %xmm3, %xmm2
4726 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
4727 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,4,7]
4728 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm6[8],xmm3[9],xmm6[9],xmm3[10],xmm6[10],xmm3[11],xmm6[11],xmm3[12],xmm6[12],xmm3[13],xmm6[13],xmm3[14],xmm6[14],xmm3[15],xmm6[15]
4729 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
4730 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,7,7]
4731 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
4732 ; SSE-NEXT:    movdqa %xmm12, %xmm3
4733 ; SSE-NEXT:    movdqa %xmm12, %xmm4
4734 ; 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]
4735 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4736 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3],xmm3[4],xmm6[4],xmm3[5],xmm6[5],xmm3[6],xmm6[6],xmm3[7],xmm6[7]
4737 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4738 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
4739 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
4740 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
4741 ; SSE-NEXT:    packuswb %xmm3, %xmm3
4742 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [65535,65535,65535,65535,65535,65535,65535,0]
4743 ; SSE-NEXT:    movdqa %xmm12, %xmm4
4744 ; SSE-NEXT:    pandn %xmm3, %xmm4
4745 ; SSE-NEXT:    packuswb %xmm2, %xmm2
4746 ; SSE-NEXT:    pand %xmm12, %xmm2
4747 ; SSE-NEXT:    por %xmm2, %xmm4
4748 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [65535,65535,65535,65535,65535,0,0,0]
4749 ; SSE-NEXT:    movdqa %xmm8, %xmm2
4750 ; SSE-NEXT:    pandn %xmm4, %xmm2
4751 ; SSE-NEXT:    pand %xmm8, %xmm1
4752 ; SSE-NEXT:    por %xmm1, %xmm2
4753 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4754 ; SSE-NEXT:    movdqa 256(%rdi), %xmm2
4755 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4756 ; SSE-NEXT:    movdqa %xmm7, %xmm1
4757 ; SSE-NEXT:    pandn %xmm2, %xmm1
4758 ; SSE-NEXT:    movdqa 272(%rdi), %xmm2
4759 ; SSE-NEXT:    movdqa %xmm2, (%rsp) # 16-byte Spill
4760 ; SSE-NEXT:    pand %xmm7, %xmm2
4761 ; SSE-NEXT:    por %xmm1, %xmm2
4762 ; SSE-NEXT:    movdqa %xmm2, %xmm1
4763 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
4764 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
4765 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
4766 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,6,7]
4767 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
4768 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]
4769 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
4770 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
4771 ; SSE-NEXT:    packuswb %xmm1, %xmm2
4772 ; SSE-NEXT:    movdqa %xmm0, %xmm3
4773 ; SSE-NEXT:    pandn %xmm2, %xmm3
4774 ; SSE-NEXT:    movdqa 240(%rdi), %xmm2
4775 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4776 ; SSE-NEXT:    movdqa %xmm11, %xmm1
4777 ; SSE-NEXT:    pandn %xmm2, %xmm1
4778 ; SSE-NEXT:    movdqa 224(%rdi), %xmm2
4779 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4780 ; SSE-NEXT:    pand %xmm11, %xmm2
4781 ; SSE-NEXT:    por %xmm1, %xmm2
4782 ; SSE-NEXT:    movdqa %xmm2, %xmm1
4783 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
4784 ; SSE-NEXT:    movdqa %xmm10, %xmm4
4785 ; SSE-NEXT:    pandn %xmm1, %xmm4
4786 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
4787 ; SSE-NEXT:    pand %xmm10, %xmm2
4788 ; SSE-NEXT:    por %xmm4, %xmm2
4789 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,2,1,3]
4790 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
4791 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,1,1]
4792 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
4793 ; SSE-NEXT:    packuswb %xmm1, %xmm1
4794 ; SSE-NEXT:    pand %xmm0, %xmm1
4795 ; SSE-NEXT:    por %xmm3, %xmm1
4796 ; SSE-NEXT:    movdqa 288(%rdi), %xmm3
4797 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4798 ; SSE-NEXT:    movdqa %xmm9, %xmm2
4799 ; SSE-NEXT:    pandn %xmm3, %xmm2
4800 ; SSE-NEXT:    movdqa 304(%rdi), %xmm3
4801 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4802 ; SSE-NEXT:    pand %xmm9, %xmm3
4803 ; SSE-NEXT:    por %xmm2, %xmm3
4804 ; SSE-NEXT:    movdqa %xmm3, %xmm2
4805 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
4806 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,4,7]
4807 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm6[8],xmm3[9],xmm6[9],xmm3[10],xmm6[10],xmm3[11],xmm6[11],xmm3[12],xmm6[12],xmm3[13],xmm6[13],xmm3[14],xmm6[14],xmm3[15],xmm6[15]
4808 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
4809 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,7,7]
4810 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
4811 ; SSE-NEXT:    movdqa 320(%rdi), %xmm3
4812 ; SSE-NEXT:    movdqa %xmm3, %xmm4
4813 ; 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]
4814 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4815 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3],xmm3[4],xmm6[4],xmm3[5],xmm6[5],xmm3[6],xmm6[6],xmm3[7],xmm6[7]
4816 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4817 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
4818 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
4819 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
4820 ; SSE-NEXT:    packuswb %xmm3, %xmm3
4821 ; SSE-NEXT:    movdqa %xmm12, %xmm4
4822 ; SSE-NEXT:    pandn %xmm3, %xmm4
4823 ; SSE-NEXT:    packuswb %xmm2, %xmm2
4824 ; SSE-NEXT:    pand %xmm12, %xmm2
4825 ; SSE-NEXT:    por %xmm2, %xmm4
4826 ; SSE-NEXT:    movdqa %xmm8, %xmm2
4827 ; SSE-NEXT:    pandn %xmm4, %xmm2
4828 ; SSE-NEXT:    pand %xmm8, %xmm1
4829 ; SSE-NEXT:    por %xmm1, %xmm2
4830 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4831 ; SSE-NEXT:    movdqa 368(%rdi), %xmm2
4832 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4833 ; SSE-NEXT:    movdqa %xmm7, %xmm1
4834 ; SSE-NEXT:    pandn %xmm2, %xmm1
4835 ; SSE-NEXT:    movdqa 384(%rdi), %xmm2
4836 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4837 ; SSE-NEXT:    pand %xmm7, %xmm2
4838 ; SSE-NEXT:    por %xmm1, %xmm2
4839 ; SSE-NEXT:    movdqa %xmm2, %xmm1
4840 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
4841 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
4842 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
4843 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,6,7]
4844 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
4845 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]
4846 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
4847 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
4848 ; SSE-NEXT:    packuswb %xmm1, %xmm2
4849 ; SSE-NEXT:    movdqa %xmm0, %xmm3
4850 ; SSE-NEXT:    pandn %xmm2, %xmm3
4851 ; SSE-NEXT:    movdqa 352(%rdi), %xmm2
4852 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4853 ; SSE-NEXT:    movdqa %xmm11, %xmm1
4854 ; SSE-NEXT:    pandn %xmm2, %xmm1
4855 ; SSE-NEXT:    movdqa 336(%rdi), %xmm2
4856 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4857 ; SSE-NEXT:    pand %xmm11, %xmm2
4858 ; SSE-NEXT:    por %xmm1, %xmm2
4859 ; SSE-NEXT:    movdqa %xmm2, %xmm1
4860 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
4861 ; SSE-NEXT:    movdqa %xmm10, %xmm4
4862 ; SSE-NEXT:    pandn %xmm1, %xmm4
4863 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
4864 ; SSE-NEXT:    pand %xmm10, %xmm2
4865 ; SSE-NEXT:    por %xmm4, %xmm2
4866 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,2,1,3]
4867 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
4868 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,1,1]
4869 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
4870 ; SSE-NEXT:    packuswb %xmm1, %xmm1
4871 ; SSE-NEXT:    pand %xmm0, %xmm1
4872 ; SSE-NEXT:    por %xmm3, %xmm1
4873 ; SSE-NEXT:    movdqa 400(%rdi), %xmm3
4874 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4875 ; SSE-NEXT:    movdqa %xmm9, %xmm2
4876 ; SSE-NEXT:    pandn %xmm3, %xmm2
4877 ; SSE-NEXT:    movdqa 416(%rdi), %xmm14
4878 ; SSE-NEXT:    movdqa %xmm14, %xmm3
4879 ; SSE-NEXT:    movdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4880 ; SSE-NEXT:    pand %xmm9, %xmm3
4881 ; SSE-NEXT:    por %xmm2, %xmm3
4882 ; SSE-NEXT:    movdqa %xmm3, %xmm2
4883 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
4884 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,4,7]
4885 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm6[8],xmm3[9],xmm6[9],xmm3[10],xmm6[10],xmm3[11],xmm6[11],xmm3[12],xmm6[12],xmm3[13],xmm6[13],xmm3[14],xmm6[14],xmm3[15],xmm6[15]
4886 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
4887 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,7,7]
4888 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
4889 ; SSE-NEXT:    movdqa 432(%rdi), %xmm3
4890 ; SSE-NEXT:    movdqa %xmm3, %xmm4
4891 ; 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]
4892 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4893 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1],xmm3[2],xmm6[2],xmm3[3],xmm6[3],xmm3[4],xmm6[4],xmm3[5],xmm6[5],xmm3[6],xmm6[6],xmm3[7],xmm6[7]
4894 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4895 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
4896 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[0,1,2,1]
4897 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
4898 ; SSE-NEXT:    packuswb %xmm3, %xmm3
4899 ; SSE-NEXT:    movdqa %xmm12, %xmm4
4900 ; SSE-NEXT:    pandn %xmm3, %xmm4
4901 ; SSE-NEXT:    packuswb %xmm2, %xmm2
4902 ; SSE-NEXT:    pand %xmm12, %xmm2
4903 ; SSE-NEXT:    por %xmm2, %xmm4
4904 ; SSE-NEXT:    movdqa %xmm8, %xmm2
4905 ; SSE-NEXT:    pandn %xmm4, %xmm2
4906 ; SSE-NEXT:    pand %xmm8, %xmm1
4907 ; SSE-NEXT:    por %xmm1, %xmm2
4908 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4909 ; SSE-NEXT:    movdqa 32(%rdi), %xmm15
4910 ; SSE-NEXT:    movdqa %xmm7, %xmm1
4911 ; SSE-NEXT:    pandn %xmm15, %xmm1
4912 ; SSE-NEXT:    movdqa 48(%rdi), %xmm2
4913 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4914 ; SSE-NEXT:    pand %xmm7, %xmm2
4915 ; SSE-NEXT:    por %xmm1, %xmm2
4916 ; SSE-NEXT:    movdqa %xmm2, %xmm1
4917 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
4918 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
4919 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
4920 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,6,5,6,7]
4921 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
4922 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,5,6]
4923 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,2,3]
4924 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
4925 ; SSE-NEXT:    packuswb %xmm1, %xmm2
4926 ; SSE-NEXT:    movdqa 16(%rdi), %xmm3
4927 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4928 ; SSE-NEXT:    movdqa %xmm11, %xmm1
4929 ; SSE-NEXT:    pandn %xmm3, %xmm1
4930 ; SSE-NEXT:    movdqa (%rdi), %xmm4
4931 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4932 ; SSE-NEXT:    pand %xmm11, %xmm4
4933 ; SSE-NEXT:    por %xmm1, %xmm4
4934 ; SSE-NEXT:    movdqa %xmm4, %xmm1
4935 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm6[8],xmm1[9],xmm6[9],xmm1[10],xmm6[10],xmm1[11],xmm6[11],xmm1[12],xmm6[12],xmm1[13],xmm6[13],xmm1[14],xmm6[14],xmm1[15],xmm6[15]
4936 ; SSE-NEXT:    movdqa %xmm10, %xmm5
4937 ; SSE-NEXT:    pandn %xmm1, %xmm5
4938 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3],xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]
4939 ; SSE-NEXT:    pand %xmm10, %xmm4
4940 ; SSE-NEXT:    por %xmm5, %xmm4
4941 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[0,2,1,3]
4942 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
4943 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,3,1,1]
4944 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
4945 ; SSE-NEXT:    packuswb %xmm1, %xmm1
4946 ; SSE-NEXT:    pand %xmm0, %xmm1
4947 ; SSE-NEXT:    pandn %xmm2, %xmm0
4948 ; SSE-NEXT:    por %xmm0, %xmm1
4949 ; SSE-NEXT:    movdqa 64(%rdi), %xmm2
4950 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4951 ; SSE-NEXT:    movdqa %xmm9, %xmm0
4952 ; SSE-NEXT:    pandn %xmm2, %xmm0
4953 ; SSE-NEXT:    movdqa 80(%rdi), %xmm2
4954 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4955 ; SSE-NEXT:    pand %xmm9, %xmm2
4956 ; SSE-NEXT:    por %xmm0, %xmm2
4957 ; SSE-NEXT:    movdqa %xmm2, %xmm0
4958 ; SSE-NEXT:    pxor %xmm5, %xmm5
4959 ; 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]
4960 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,4,7]
4961 ; 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]
4962 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
4963 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,7,7]
4964 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
4965 ; SSE-NEXT:    movdqa 96(%rdi), %xmm2
4966 ; SSE-NEXT:    movdqa %xmm2, %xmm3
4967 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm5[8],xmm3[9],xmm5[9],xmm3[10],xmm5[10],xmm3[11],xmm5[11],xmm3[12],xmm5[12],xmm3[13],xmm5[13],xmm3[14],xmm5[14],xmm3[15],xmm5[15]
4968 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4969 ; 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]
4970 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4971 ; SSE-NEXT:    pxor %xmm7, %xmm7
4972 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
4973 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
4974 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]
4975 ; SSE-NEXT:    packuswb %xmm2, %xmm2
4976 ; SSE-NEXT:    movdqa %xmm12, %xmm4
4977 ; SSE-NEXT:    pandn %xmm2, %xmm4
4978 ; SSE-NEXT:    packuswb %xmm0, %xmm0
4979 ; SSE-NEXT:    pand %xmm12, %xmm0
4980 ; SSE-NEXT:    por %xmm0, %xmm4
4981 ; SSE-NEXT:    pand %xmm8, %xmm1
4982 ; SSE-NEXT:    pandn %xmm4, %xmm8
4983 ; SSE-NEXT:    por %xmm1, %xmm8
4984 ; SSE-NEXT:    movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
4985 ; SSE-NEXT:    movdqa {{.*#+}} xmm2 = [65535,65535,0,65535,65535,0,65535,65535]
4986 ; SSE-NEXT:    movdqa %xmm2, %xmm0
4987 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
4988 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
4989 ; SSE-NEXT:    pand %xmm2, %xmm1
4990 ; SSE-NEXT:    movdqa %xmm2, %xmm13
4991 ; SSE-NEXT:    por %xmm0, %xmm1
4992 ; SSE-NEXT:    movdqa %xmm1, %xmm2
4993 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm7[8],xmm2[9],xmm7[9],xmm2[10],xmm7[10],xmm2[11],xmm7[11],xmm2[12],xmm7[12],xmm2[13],xmm7[13],xmm2[14],xmm7[14],xmm2[15],xmm7[15]
4994 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,0,65535,65535,65535,65535]
4995 ; SSE-NEXT:    movdqa %xmm0, %xmm4
4996 ; SSE-NEXT:    pandn %xmm2, %xmm4
4997 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1],xmm1[2],xmm7[2],xmm1[3],xmm7[3],xmm1[4],xmm7[4],xmm1[5],xmm7[5],xmm1[6],xmm7[6],xmm1[7],xmm7[7]
4998 ; SSE-NEXT:    pand %xmm0, %xmm1
4999 ; SSE-NEXT:    por %xmm4, %xmm1
5000 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
5001 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
5002 ; SSE-NEXT:    psrld $16, %xmm2
5003 ; SSE-NEXT:    packuswb %xmm2, %xmm1
5004 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255]
5005 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5006 ; SSE-NEXT:    movdqa %xmm4, %xmm8
5007 ; SSE-NEXT:    pandn %xmm1, %xmm2
5008 ; SSE-NEXT:    movdqa %xmm9, %xmm1
5009 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5010 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
5011 ; SSE-NEXT:    pand %xmm9, %xmm4
5012 ; SSE-NEXT:    por %xmm1, %xmm4
5013 ; SSE-NEXT:    movdqa %xmm4, %xmm1
5014 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1],xmm1[2],xmm7[2],xmm1[3],xmm7[3],xmm1[4],xmm7[4],xmm1[5],xmm7[5],xmm1[6],xmm7[6],xmm1[7],xmm7[7]
5015 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [65535,0,65535,65535,65535,65535,0,65535]
5016 ; SSE-NEXT:    movdqa %xmm6, %xmm5
5017 ; SSE-NEXT:    pandn %xmm1, %xmm5
5018 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm7[8],xmm4[9],xmm7[9],xmm4[10],xmm7[10],xmm4[11],xmm7[11],xmm4[12],xmm7[12],xmm4[13],xmm7[13],xmm4[14],xmm7[14],xmm4[15],xmm7[15]
5019 ; SSE-NEXT:    pand %xmm6, %xmm4
5020 ; SSE-NEXT:    por %xmm5, %xmm4
5021 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[0,3,2,3]
5022 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,2,4,5,6,7]
5023 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
5024 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5025 ; SSE-NEXT:    pand %xmm8, %xmm1
5026 ; SSE-NEXT:    por %xmm2, %xmm1
5027 ; SSE-NEXT:    movdqa %xmm11, %xmm2
5028 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
5029 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
5030 ; SSE-NEXT:    pand %xmm11, %xmm4
5031 ; SSE-NEXT:    por %xmm2, %xmm4
5032 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5033 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm7[8],xmm2[9],xmm7[9],xmm2[10],xmm7[10],xmm2[11],xmm7[11],xmm2[12],xmm7[12],xmm2[13],xmm7[13],xmm2[14],xmm7[14],xmm2[15],xmm7[15]
5034 ; SSE-NEXT:    movdqa %xmm10, %xmm5
5035 ; SSE-NEXT:    pandn %xmm2, %xmm5
5036 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm7[0],xmm4[1],xmm7[1],xmm4[2],xmm7[2],xmm4[3],xmm7[3],xmm4[4],xmm7[4],xmm4[5],xmm7[5],xmm4[6],xmm7[6],xmm4[7],xmm7[7]
5037 ; SSE-NEXT:    pand %xmm10, %xmm4
5038 ; SSE-NEXT:    por %xmm5, %xmm4
5039 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5040 ; SSE-NEXT:    pslld $16, %xmm2
5041 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
5042 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]
5043 ; SSE-NEXT:    packuswb %xmm5, %xmm2
5044 ; SSE-NEXT:    movdqa %xmm12, %xmm5
5045 ; SSE-NEXT:    pandn %xmm2, %xmm5
5046 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[0,3,2,3]
5047 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,0,3,2,4,5,6,7]
5048 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]
5049 ; SSE-NEXT:    packuswb %xmm2, %xmm2
5050 ; SSE-NEXT:    pand %xmm12, %xmm2
5051 ; SSE-NEXT:    por %xmm2, %xmm5
5052 ; SSE-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
5053 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5054 ; SSE-NEXT:    pandn %xmm5, %xmm2
5055 ; SSE-NEXT:    pand %xmm4, %xmm1
5056 ; SSE-NEXT:    movdqa %xmm4, %xmm3
5057 ; SSE-NEXT:    por %xmm1, %xmm2
5058 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5059 ; SSE-NEXT:    movdqa %xmm13, %xmm1
5060 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5061 ; SSE-NEXT:    movdqa (%rsp), %xmm2 # 16-byte Reload
5062 ; SSE-NEXT:    pand %xmm13, %xmm2
5063 ; SSE-NEXT:    por %xmm1, %xmm2
5064 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5065 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm7[8],xmm1[9],xmm7[9],xmm1[10],xmm7[10],xmm1[11],xmm7[11],xmm1[12],xmm7[12],xmm1[13],xmm7[13],xmm1[14],xmm7[14],xmm1[15],xmm7[15]
5066 ; SSE-NEXT:    movdqa %xmm0, %xmm4
5067 ; SSE-NEXT:    pandn %xmm1, %xmm4
5068 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1],xmm2[2],xmm7[2],xmm2[3],xmm7[3],xmm2[4],xmm7[4],xmm2[5],xmm7[5],xmm2[6],xmm7[6],xmm2[7],xmm7[7]
5069 ; SSE-NEXT:    pand %xmm0, %xmm2
5070 ; SSE-NEXT:    por %xmm4, %xmm2
5071 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
5072 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,7,6]
5073 ; SSE-NEXT:    psrld $16, %xmm1
5074 ; SSE-NEXT:    packuswb %xmm1, %xmm2
5075 ; SSE-NEXT:    movdqa %xmm8, %xmm4
5076 ; SSE-NEXT:    pandn %xmm2, %xmm4
5077 ; SSE-NEXT:    movdqa %xmm9, %xmm1
5078 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5079 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5080 ; SSE-NEXT:    pand %xmm9, %xmm2
5081 ; SSE-NEXT:    por %xmm1, %xmm2
5082 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5083 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1],xmm1[2],xmm7[2],xmm1[3],xmm7[3],xmm1[4],xmm7[4],xmm1[5],xmm7[5],xmm1[6],xmm7[6],xmm1[7],xmm7[7]
5084 ; SSE-NEXT:    movdqa %xmm6, %xmm5
5085 ; SSE-NEXT:    pandn %xmm1, %xmm5
5086 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm7[8],xmm2[9],xmm7[9],xmm2[10],xmm7[10],xmm2[11],xmm7[11],xmm2[12],xmm7[12],xmm2[13],xmm7[13],xmm2[14],xmm7[14],xmm2[15],xmm7[15]
5087 ; SSE-NEXT:    pand %xmm6, %xmm2
5088 ; SSE-NEXT:    por %xmm5, %xmm2
5089 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,3,2,3]
5090 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,2,4,5,6,7]
5091 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
5092 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5093 ; SSE-NEXT:    pand %xmm8, %xmm1
5094 ; SSE-NEXT:    por %xmm4, %xmm1
5095 ; SSE-NEXT:    movdqa %xmm11, %xmm2
5096 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
5097 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
5098 ; SSE-NEXT:    pand %xmm11, %xmm4
5099 ; SSE-NEXT:    por %xmm2, %xmm4
5100 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5101 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm7[8],xmm2[9],xmm7[9],xmm2[10],xmm7[10],xmm2[11],xmm7[11],xmm2[12],xmm7[12],xmm2[13],xmm7[13],xmm2[14],xmm7[14],xmm2[15],xmm7[15]
5102 ; SSE-NEXT:    movdqa %xmm10, %xmm5
5103 ; SSE-NEXT:    pandn %xmm2, %xmm5
5104 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm7[0],xmm4[1],xmm7[1],xmm4[2],xmm7[2],xmm4[3],xmm7[3],xmm4[4],xmm7[4],xmm4[5],xmm7[5],xmm4[6],xmm7[6],xmm4[7],xmm7[7]
5105 ; SSE-NEXT:    pand %xmm10, %xmm4
5106 ; SSE-NEXT:    por %xmm5, %xmm4
5107 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5108 ; SSE-NEXT:    pslld $16, %xmm2
5109 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
5110 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]
5111 ; SSE-NEXT:    packuswb %xmm5, %xmm2
5112 ; SSE-NEXT:    movdqa %xmm12, %xmm5
5113 ; SSE-NEXT:    pandn %xmm2, %xmm5
5114 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[0,3,2,3]
5115 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,0,3,2,4,5,6,7]
5116 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]
5117 ; SSE-NEXT:    packuswb %xmm2, %xmm2
5118 ; SSE-NEXT:    pand %xmm12, %xmm2
5119 ; SSE-NEXT:    por %xmm2, %xmm5
5120 ; SSE-NEXT:    movdqa %xmm3, %xmm2
5121 ; SSE-NEXT:    pandn %xmm5, %xmm2
5122 ; SSE-NEXT:    pand %xmm3, %xmm1
5123 ; SSE-NEXT:    por %xmm1, %xmm2
5124 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5125 ; SSE-NEXT:    movdqa %xmm13, %xmm1
5126 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5127 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5128 ; SSE-NEXT:    pand %xmm13, %xmm2
5129 ; SSE-NEXT:    por %xmm1, %xmm2
5130 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5131 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm7[8],xmm1[9],xmm7[9],xmm1[10],xmm7[10],xmm1[11],xmm7[11],xmm1[12],xmm7[12],xmm1[13],xmm7[13],xmm1[14],xmm7[14],xmm1[15],xmm7[15]
5132 ; SSE-NEXT:    movdqa %xmm0, %xmm4
5133 ; SSE-NEXT:    pandn %xmm1, %xmm4
5134 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1],xmm2[2],xmm7[2],xmm2[3],xmm7[3],xmm2[4],xmm7[4],xmm2[5],xmm7[5],xmm2[6],xmm7[6],xmm2[7],xmm7[7]
5135 ; SSE-NEXT:    pand %xmm0, %xmm2
5136 ; SSE-NEXT:    por %xmm4, %xmm2
5137 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,2,1]
5138 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,4,7,6]
5139 ; SSE-NEXT:    psrld $16, %xmm1
5140 ; SSE-NEXT:    packuswb %xmm1, %xmm2
5141 ; SSE-NEXT:    movdqa %xmm8, %xmm4
5142 ; SSE-NEXT:    pandn %xmm2, %xmm4
5143 ; SSE-NEXT:    movdqa %xmm9, %xmm1
5144 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5145 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5146 ; SSE-NEXT:    pand %xmm9, %xmm2
5147 ; SSE-NEXT:    por %xmm1, %xmm2
5148 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5149 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1],xmm1[2],xmm7[2],xmm1[3],xmm7[3],xmm1[4],xmm7[4],xmm1[5],xmm7[5],xmm1[6],xmm7[6],xmm1[7],xmm7[7]
5150 ; SSE-NEXT:    movdqa %xmm6, %xmm5
5151 ; SSE-NEXT:    pandn %xmm1, %xmm5
5152 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm7[8],xmm2[9],xmm7[9],xmm2[10],xmm7[10],xmm2[11],xmm7[11],xmm2[12],xmm7[12],xmm2[13],xmm7[13],xmm2[14],xmm7[14],xmm2[15],xmm7[15]
5153 ; SSE-NEXT:    pand %xmm6, %xmm2
5154 ; SSE-NEXT:    por %xmm5, %xmm2
5155 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,3,2,3]
5156 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[1,0,3,2,4,5,6,7]
5157 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
5158 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5159 ; SSE-NEXT:    pand %xmm8, %xmm1
5160 ; SSE-NEXT:    por %xmm4, %xmm1
5161 ; SSE-NEXT:    movdqa %xmm11, %xmm2
5162 ; SSE-NEXT:    pandn %xmm14, %xmm2
5163 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
5164 ; SSE-NEXT:    pand %xmm11, %xmm4
5165 ; SSE-NEXT:    por %xmm2, %xmm4
5166 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5167 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm7[8],xmm2[9],xmm7[9],xmm2[10],xmm7[10],xmm2[11],xmm7[11],xmm2[12],xmm7[12],xmm2[13],xmm7[13],xmm2[14],xmm7[14],xmm2[15],xmm7[15]
5168 ; SSE-NEXT:    movdqa %xmm10, %xmm5
5169 ; SSE-NEXT:    pandn %xmm2, %xmm5
5170 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm7[0],xmm4[1],xmm7[1],xmm4[2],xmm7[2],xmm4[3],xmm7[3],xmm4[4],xmm7[4],xmm4[5],xmm7[5],xmm4[6],xmm7[6],xmm4[7],xmm7[7]
5171 ; SSE-NEXT:    pand %xmm10, %xmm4
5172 ; SSE-NEXT:    por %xmm5, %xmm4
5173 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5174 ; SSE-NEXT:    pslld $16, %xmm2
5175 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
5176 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]
5177 ; SSE-NEXT:    packuswb %xmm5, %xmm2
5178 ; SSE-NEXT:    movdqa %xmm12, %xmm5
5179 ; SSE-NEXT:    pandn %xmm2, %xmm5
5180 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[0,3,2,3]
5181 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,0,3,2,4,5,6,7]
5182 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,5,4,6,7]
5183 ; SSE-NEXT:    packuswb %xmm2, %xmm2
5184 ; SSE-NEXT:    pand %xmm12, %xmm2
5185 ; SSE-NEXT:    por %xmm2, %xmm5
5186 ; SSE-NEXT:    movdqa %xmm3, %xmm2
5187 ; SSE-NEXT:    pandn %xmm5, %xmm2
5188 ; SSE-NEXT:    pand %xmm3, %xmm1
5189 ; SSE-NEXT:    por %xmm1, %xmm2
5190 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5191 ; SSE-NEXT:    movdqa %xmm13, %xmm1
5192 ; SSE-NEXT:    pandn %xmm15, %xmm1
5193 ; SSE-NEXT:    movdqa %xmm15, %xmm3
5194 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
5195 ; SSE-NEXT:    movdqa %xmm15, %xmm2
5196 ; SSE-NEXT:    pand %xmm13, %xmm2
5197 ; SSE-NEXT:    por %xmm1, %xmm2
5198 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5199 ; SSE-NEXT:    pxor %xmm4, %xmm4
5200 ; 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]
5201 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7]
5202 ; SSE-NEXT:    pxor %xmm5, %xmm5
5203 ; SSE-NEXT:    pand %xmm0, %xmm2
5204 ; SSE-NEXT:    pandn %xmm1, %xmm0
5205 ; SSE-NEXT:    por %xmm2, %xmm0
5206 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
5207 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,4,7,6]
5208 ; SSE-NEXT:    psrld $16, %xmm1
5209 ; SSE-NEXT:    packuswb %xmm1, %xmm0
5210 ; SSE-NEXT:    movdqa %xmm8, %xmm1
5211 ; SSE-NEXT:    pandn %xmm0, %xmm1
5212 ; SSE-NEXT:    movdqa %xmm9, %xmm0
5213 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
5214 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5215 ; SSE-NEXT:    pand %xmm9, %xmm2
5216 ; SSE-NEXT:    movdqa %xmm9, %xmm12
5217 ; SSE-NEXT:    por %xmm0, %xmm2
5218 ; SSE-NEXT:    movdqa %xmm2, %xmm0
5219 ; 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]
5220 ; SSE-NEXT:    movdqa %xmm6, %xmm4
5221 ; SSE-NEXT:    pandn %xmm0, %xmm4
5222 ; 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]
5223 ; SSE-NEXT:    pand %xmm6, %xmm2
5224 ; SSE-NEXT:    por %xmm4, %xmm2
5225 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,3,2,3]
5226 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[1,0,3,2,4,5,6,7]
5227 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,5,5,5]
5228 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5229 ; SSE-NEXT:    pand %xmm8, %xmm0
5230 ; SSE-NEXT:    por %xmm1, %xmm0
5231 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5232 ; SSE-NEXT:    movdqa %xmm11, %xmm0
5233 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
5234 ; SSE-NEXT:    pandn %xmm14, %xmm0
5235 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
5236 ; SSE-NEXT:    pand %xmm11, %xmm1
5237 ; SSE-NEXT:    por %xmm0, %xmm1
5238 ; SSE-NEXT:    movdqa %xmm1, %xmm0
5239 ; SSE-NEXT:    pxor %xmm2, %xmm2
5240 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]
5241 ; 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]
5242 ; SSE-NEXT:    pand %xmm10, %xmm1
5243 ; SSE-NEXT:    pandn %xmm0, %xmm10
5244 ; SSE-NEXT:    por %xmm1, %xmm10
5245 ; SSE-NEXT:    movdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5246 ; SSE-NEXT:    movdqa %xmm11, %xmm0
5247 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
5248 ; SSE-NEXT:    pandn %xmm7, %xmm0
5249 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5250 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5251 ; SSE-NEXT:    pand %xmm11, %xmm1
5252 ; SSE-NEXT:    por %xmm0, %xmm1
5253 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5254 ; SSE-NEXT:    movdqa %xmm11, %xmm0
5255 ; SSE-NEXT:    movdqa (%rsp), %xmm8 # 16-byte Reload
5256 ; SSE-NEXT:    pandn %xmm8, %xmm0
5257 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
5258 ; SSE-NEXT:    movdqa %xmm5, %xmm1
5259 ; SSE-NEXT:    pand %xmm11, %xmm1
5260 ; SSE-NEXT:    por %xmm0, %xmm1
5261 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5262 ; SSE-NEXT:    movdqa %xmm11, %xmm0
5263 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
5264 ; SSE-NEXT:    pandn %xmm9, %xmm0
5265 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
5266 ; SSE-NEXT:    movdqa %xmm1, %xmm4
5267 ; SSE-NEXT:    pand %xmm11, %xmm4
5268 ; SSE-NEXT:    por %xmm0, %xmm4
5269 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5270 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5271 ; SSE-NEXT:    movdqa %xmm3, %xmm0
5272 ; SSE-NEXT:    pand %xmm11, %xmm0
5273 ; SSE-NEXT:    movdqa %xmm15, %xmm6
5274 ; SSE-NEXT:    pandn %xmm15, %xmm11
5275 ; SSE-NEXT:    por %xmm0, %xmm11
5276 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5277 ; SSE-NEXT:    movdqa {{.*#+}} xmm15 = [65535,0,65535,65535,0,65535,65535,65535]
5278 ; SSE-NEXT:    movdqa %xmm15, %xmm0
5279 ; SSE-NEXT:    pandn %xmm2, %xmm0
5280 ; SSE-NEXT:    movdqa %xmm12, %xmm2
5281 ; SSE-NEXT:    movdqa %xmm7, %xmm4
5282 ; SSE-NEXT:    pandn %xmm7, %xmm2
5283 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5284 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm7[0,2,2,3]
5285 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5286 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5287 ; SSE-NEXT:    pand %xmm15, %xmm4
5288 ; SSE-NEXT:    por %xmm0, %xmm4
5289 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5290 ; SSE-NEXT:    movdqa %xmm15, %xmm0
5291 ; SSE-NEXT:    pandn %xmm5, %xmm0
5292 ; SSE-NEXT:    movdqa %xmm12, %xmm2
5293 ; SSE-NEXT:    movdqa %xmm8, %xmm4
5294 ; SSE-NEXT:    pandn %xmm8, %xmm2
5295 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5296 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm8[0,2,2,3]
5297 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5298 ; SSE-NEXT:    movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5299 ; SSE-NEXT:    pand %xmm15, %xmm4
5300 ; SSE-NEXT:    por %xmm0, %xmm4
5301 ; SSE-NEXT:    movdqa %xmm4, (%rsp) # 16-byte Spill
5302 ; SSE-NEXT:    movdqa %xmm15, %xmm0
5303 ; SSE-NEXT:    pandn %xmm1, %xmm0
5304 ; SSE-NEXT:    movdqa %xmm12, %xmm2
5305 ; SSE-NEXT:    movdqa %xmm12, %xmm1
5306 ; SSE-NEXT:    movdqa %xmm9, %xmm4
5307 ; SSE-NEXT:    pandn %xmm9, %xmm1
5308 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5309 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm9[0,2,2,3]
5310 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5311 ; SSE-NEXT:    movdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5312 ; SSE-NEXT:    pand %xmm15, %xmm4
5313 ; SSE-NEXT:    por %xmm0, %xmm4
5314 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5315 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
5316 ; SSE-NEXT:    pand %xmm15, %xmm9
5317 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
5318 ; SSE-NEXT:    pand %xmm15, %xmm12
5319 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5320 ; SSE-NEXT:    pand %xmm15, %xmm0
5321 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5322 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5323 ; SSE-NEXT:    pand %xmm15, %xmm0
5324 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5325 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5326 ; SSE-NEXT:    pand %xmm15, %xmm0
5327 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5328 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5329 ; SSE-NEXT:    pand %xmm15, %xmm0
5330 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5331 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5332 ; SSE-NEXT:    pand %xmm15, %xmm0
5333 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5334 ; SSE-NEXT:    movdqa %xmm14, %xmm0
5335 ; SSE-NEXT:    pand %xmm15, %xmm0
5336 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5337 ; SSE-NEXT:    movdqa %xmm2, %xmm4
5338 ; SSE-NEXT:    movdqa %xmm6, %xmm0
5339 ; SSE-NEXT:    pandn %xmm6, %xmm4
5340 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5341 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm6[0,2,2,3]
5342 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5343 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5344 ; SSE-NEXT:    pand %xmm15, %xmm0
5345 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5346 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5347 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5348 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5349 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5350 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5351 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5352 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5353 ; SSE-NEXT:    pandn %xmm3, %xmm15
5354 ; SSE-NEXT:    por %xmm0, %xmm15
5355 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5356 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,0,65535,65535,65535,65535,65535,65535]
5357 ; SSE-NEXT:    movdqa %xmm1, %xmm2
5358 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
5359 ; SSE-NEXT:    pandn %xmm7, %xmm2
5360 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5361 ; SSE-NEXT:    movdqa %xmm7, %xmm10
5362 ; SSE-NEXT:    movdqa %xmm7, %xmm4
5363 ; SSE-NEXT:    movdqa %xmm1, %xmm2
5364 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
5365 ; SSE-NEXT:    pandn %xmm6, %xmm2
5366 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5367 ; SSE-NEXT:    movdqa %xmm6, %xmm8
5368 ; SSE-NEXT:    movdqa %xmm1, %xmm2
5369 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
5370 ; SSE-NEXT:    pandn %xmm5, %xmm2
5371 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5372 ; SSE-NEXT:    movdqa %xmm5, %xmm1
5373 ; SSE-NEXT:    movdqa %xmm5, %xmm11
5374 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5375 ; SSE-NEXT:    movdqa %xmm3, %xmm13
5376 ; SSE-NEXT:    pslld $16, %xmm13
5377 ; SSE-NEXT:    psrldq {{.*#+}} xmm10 = xmm10[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
5378 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
5379 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm10 = xmm10[0],xmm14[0],xmm10[1],xmm14[1],xmm10[2],xmm14[2],xmm10[3],xmm14[3]
5380 ; SSE-NEXT:    movdqa %xmm6, %xmm0
5381 ; SSE-NEXT:    psrldq {{.*#+}} xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
5382 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
5383 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm15[0],xmm0[1],xmm15[1],xmm0[2],xmm15[2],xmm0[3],xmm15[3]
5384 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5385 ; SSE-NEXT:    psrldq {{.*#+}} xmm1 = xmm1[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
5386 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5387 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
5388 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5389 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
5390 ; SSE-NEXT:    movdqa %xmm1, %xmm2
5391 ; SSE-NEXT:    psrldq {{.*#+}} xmm2 = xmm2[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
5392 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
5393 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5394 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm14[4],xmm4[5],xmm14[5],xmm4[6],xmm14[6],xmm4[7],xmm14[7]
5395 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5396 ; SSE-NEXT:    movdqa %xmm14, %xmm4
5397 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm8 = xmm8[4],xmm15[4],xmm8[5],xmm15[5],xmm8[6],xmm15[6],xmm8[7],xmm15[7]
5398 ; SSE-NEXT:    movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5399 ; SSE-NEXT:    movdqa %xmm15, %xmm8
5400 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm11 = xmm11[4],xmm0[4],xmm11[5],xmm0[5],xmm11[6],xmm0[6],xmm11[7],xmm0[7]
5401 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5402 ; SSE-NEXT:    movdqa %xmm0, %xmm11
5403 ; SSE-NEXT:    movdqa %xmm1, %xmm0
5404 ; SSE-NEXT:    movdqa %xmm1, %xmm2
5405 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
5406 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5407 ; SSE-NEXT:    movdqa %xmm3, %xmm1
5408 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5409 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5410 ; SSE-NEXT:    pxor %xmm0, %xmm0
5411 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
5412 ; SSE-NEXT:    pshufhw {{.*#+}} xmm14 = xmm3[0,1,2,3,7,5,6,7]
5413 ; SSE-NEXT:    pshufd {{.*#+}} xmm14 = xmm14[0,1,2,0]
5414 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm14[0,1,2,3,6,4,6,5]
5415 ; SSE-NEXT:    movdqa {{.*#+}} xmm14 = [65535,65535,65535,65535,65535,65535,0,65535]
5416 ; SSE-NEXT:    pand %xmm14, %xmm3
5417 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5418 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5419 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5420 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
5421 ; SSE-NEXT:    pshufhw {{.*#+}} xmm15 = xmm3[0,1,2,3,7,5,6,7]
5422 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm15[0,1,2,0]
5423 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm15[0,1,2,3,6,4,6,5]
5424 ; SSE-NEXT:    pand %xmm14, %xmm3
5425 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5426 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
5427 ; SSE-NEXT:    movdqa %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5428 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm0[0],xmm15[1],xmm0[1],xmm15[2],xmm0[2],xmm15[3],xmm0[3],xmm15[4],xmm0[4],xmm15[5],xmm0[5],xmm15[6],xmm0[6],xmm15[7],xmm0[7]
5429 ; SSE-NEXT:    pxor %xmm3, %xmm3
5430 ; SSE-NEXT:    pshufhw {{.*#+}} xmm15 = xmm15[0,1,2,3,7,5,6,7]
5431 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm15[0,1,2,0]
5432 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm15[0,1,2,3,6,4,6,5]
5433 ; SSE-NEXT:    pand %xmm14, %xmm0
5434 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5435 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5436 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5437 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
5438 ; SSE-NEXT:    pshufhw {{.*#+}} xmm15 = xmm0[0,1,2,3,7,5,6,7]
5439 ; SSE-NEXT:    pshufd {{.*#+}} xmm15 = xmm15[0,1,2,0]
5440 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm15[0,1,2,3,6,4,6,5]
5441 ; SSE-NEXT:    movdqa %xmm14, %xmm0
5442 ; SSE-NEXT:    pand %xmm14, %xmm3
5443 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5444 ; SSE-NEXT:    movdqa %xmm14, %xmm3
5445 ; SSE-NEXT:    pandn %xmm4, %xmm3
5446 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5447 ; SSE-NEXT:    pand %xmm14, %xmm7
5448 ; SSE-NEXT:    movdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5449 ; SSE-NEXT:    movdqa %xmm14, %xmm3
5450 ; SSE-NEXT:    pandn %xmm8, %xmm3
5451 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5452 ; SSE-NEXT:    pand %xmm14, %xmm6
5453 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5454 ; SSE-NEXT:    movdqa %xmm0, %xmm3
5455 ; SSE-NEXT:    movdqa %xmm11, %xmm6
5456 ; SSE-NEXT:    pandn %xmm11, %xmm3
5457 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5458 ; SSE-NEXT:    pand %xmm0, %xmm5
5459 ; SSE-NEXT:    movdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5460 ; SSE-NEXT:    movdqa %xmm2, %xmm3
5461 ; SSE-NEXT:    pand %xmm0, %xmm3
5462 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5463 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5464 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5465 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5466 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5467 ; SSE-NEXT:    pandn %xmm1, %xmm0
5468 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5469 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5470 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5471 ; SSE-NEXT:    pxor %xmm0, %xmm0
5472 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
5473 ; SSE-NEXT:    movdqa {{.*#+}} xmm11 = [65535,0,65535,65535,65535,65535,65535,65535]
5474 ; SSE-NEXT:    pand %xmm11, %xmm3
5475 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5476 ; SSE-NEXT:    pand %xmm11, %xmm4
5477 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5478 ; SSE-NEXT:    movdqa (%rsp), %xmm3 # 16-byte Reload
5479 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5480 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
5481 ; SSE-NEXT:    pand %xmm11, %xmm3
5482 ; SSE-NEXT:    movdqa %xmm3, (%rsp) # 16-byte Spill
5483 ; SSE-NEXT:    pand %xmm11, %xmm8
5484 ; SSE-NEXT:    movdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5485 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5486 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5487 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
5488 ; SSE-NEXT:    pxor %xmm8, %xmm8
5489 ; SSE-NEXT:    pand %xmm11, %xmm3
5490 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5491 ; SSE-NEXT:    pand %xmm11, %xmm6
5492 ; SSE-NEXT:    movdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5493 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5494 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5495 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],xmm8[3],xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],xmm8[7]
5496 ; SSE-NEXT:    pand %xmm11, %xmm0
5497 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5498 ; SSE-NEXT:    pand %xmm11, %xmm1
5499 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5500 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5501 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5502 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5503 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5504 ; SSE-NEXT:    pandn %xmm2, %xmm11
5505 ; SSE-NEXT:    movdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5506 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm13[0],xmm2[1],xmm13[1],xmm2[2],xmm13[2],xmm2[3],xmm13[3]
5507 ; SSE-NEXT:    packuswb %xmm2, %xmm3
5508 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,65535,65535,65535,0]
5509 ; SSE-NEXT:    movdqa %xmm0, %xmm15
5510 ; SSE-NEXT:    pandn %xmm3, %xmm15
5511 ; SSE-NEXT:    pshufd $236, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
5512 ; SSE-NEXT:    # xmm3 = mem[0,3,2,3]
5513 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,0,3,2,4,5,6,7]
5514 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,5,4,6,7]
5515 ; SSE-NEXT:    packuswb %xmm3, %xmm3
5516 ; SSE-NEXT:    pand %xmm0, %xmm3
5517 ; SSE-NEXT:    movdqa %xmm0, %xmm4
5518 ; SSE-NEXT:    por %xmm3, %xmm15
5519 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
5520 ; SSE-NEXT:    movdqa %xmm0, %xmm3
5521 ; SSE-NEXT:    pandn %xmm15, %xmm3
5522 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5523 ; SSE-NEXT:    pand %xmm0, %xmm2
5524 ; SSE-NEXT:    movdqa %xmm0, %xmm13
5525 ; SSE-NEXT:    por %xmm2, %xmm3
5526 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5527 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,0,65535,65535,0,65535]
5528 ; SSE-NEXT:    movdqa %xmm0, %xmm3
5529 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
5530 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
5531 ; SSE-NEXT:    pand %xmm0, %xmm15
5532 ; SSE-NEXT:    movdqa %xmm0, %xmm5
5533 ; SSE-NEXT:    por %xmm3, %xmm15
5534 ; SSE-NEXT:    movdqa %xmm15, %xmm3
5535 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3],xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[7],xmm8[7]
5536 ; SSE-NEXT:    movdqa {{.*#+}} xmm14 = [65535,0,65535,65535,65535,65535,0,65535]
5537 ; SSE-NEXT:    movdqa %xmm14, %xmm0
5538 ; SSE-NEXT:    pandn %xmm3, %xmm0
5539 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm15 = xmm15[8],xmm8[8],xmm15[9],xmm8[9],xmm15[10],xmm8[10],xmm15[11],xmm8[11],xmm15[12],xmm8[12],xmm15[13],xmm8[13],xmm15[14],xmm8[14],xmm15[15],xmm8[15]
5540 ; SSE-NEXT:    pand %xmm14, %xmm15
5541 ; SSE-NEXT:    por %xmm0, %xmm15
5542 ; SSE-NEXT:    packuswb %xmm10, %xmm0
5543 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5544 ; SSE-NEXT:    pandn %xmm0, %xmm2
5545 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm15[0,3,2,3]
5546 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,3,4,5,6,7]
5547 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,5,6,7]
5548 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5549 ; SSE-NEXT:    pand %xmm4, %xmm0
5550 ; SSE-NEXT:    por %xmm0, %xmm2
5551 ; SSE-NEXT:    movdqa %xmm13, %xmm3
5552 ; SSE-NEXT:    pandn %xmm2, %xmm3
5553 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5554 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
5555 ; SSE-NEXT:    por %xmm0, %xmm9
5556 ; SSE-NEXT:    movdqa %xmm9, %xmm0
5557 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]
5558 ; SSE-NEXT:    movdqa %xmm14, %xmm2
5559 ; SSE-NEXT:    pandn %xmm0, %xmm2
5560 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3],xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]
5561 ; SSE-NEXT:    pand %xmm14, %xmm9
5562 ; SSE-NEXT:    por %xmm2, %xmm9
5563 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
5564 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm7[1,3,2,3]
5565 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
5566 ; SSE-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
5567 ; SSE-NEXT:    movdqa %xmm1, %xmm2
5568 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5569 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [65535,65535,65535,65535,0,65535,65535,65535]
5570 ; SSE-NEXT:    movdqa %xmm0, %xmm15
5571 ; SSE-NEXT:    pandn %xmm2, %xmm15
5572 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5573 ; SSE-NEXT:    pand %xmm0, %xmm1
5574 ; SSE-NEXT:    por %xmm15, %xmm1
5575 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm1[0,1,2,1]
5576 ; SSE-NEXT:    pshufhw {{.*#+}} xmm11 = xmm11[0,1,2,3,4,5,4,7]
5577 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,1,1]
5578 ; SSE-NEXT:    packuswb %xmm2, %xmm11
5579 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,255,255,255,255,0,0,0,0,255,255,255,255,255,255,255]
5580 ; SSE-NEXT:    movdqa %xmm6, %xmm2
5581 ; SSE-NEXT:    pandn %xmm11, %xmm2
5582 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm9[0,2,1,3]
5583 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
5584 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,3,3]
5585 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[2,1,0,3,4,5,6,7]
5586 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5587 ; SSE-NEXT:    pand %xmm6, %xmm1
5588 ; SSE-NEXT:    por %xmm1, %xmm2
5589 ; SSE-NEXT:    pand %xmm13, %xmm2
5590 ; SSE-NEXT:    por %xmm3, %xmm2
5591 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5592 ; SSE-NEXT:    movdqa %xmm5, %xmm15
5593 ; SSE-NEXT:    movdqa %xmm5, %xmm1
5594 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5595 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5596 ; SSE-NEXT:    pand %xmm5, %xmm2
5597 ; SSE-NEXT:    por %xmm1, %xmm2
5598 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5599 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5600 ; SSE-NEXT:    movdqa %xmm14, %xmm3
5601 ; SSE-NEXT:    pandn %xmm1, %xmm3
5602 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5603 ; SSE-NEXT:    pand %xmm14, %xmm2
5604 ; SSE-NEXT:    por %xmm3, %xmm2
5605 ; SSE-NEXT:    packuswb {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5606 ; SSE-NEXT:    movdqa %xmm4, %xmm3
5607 ; SSE-NEXT:    pandn %xmm1, %xmm3
5608 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,3,2,3]
5609 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]
5610 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
5611 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5612 ; SSE-NEXT:    pand %xmm4, %xmm1
5613 ; SSE-NEXT:    movdqa %xmm4, %xmm10
5614 ; SSE-NEXT:    por %xmm1, %xmm3
5615 ; SSE-NEXT:    movdqa %xmm13, %xmm1
5616 ; SSE-NEXT:    pandn %xmm3, %xmm1
5617 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5618 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
5619 ; SSE-NEXT:    por %xmm2, %xmm12
5620 ; SSE-NEXT:    movdqa %xmm12, %xmm2
5621 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5622 ; SSE-NEXT:    movdqa %xmm14, %xmm3
5623 ; SSE-NEXT:    pandn %xmm2, %xmm3
5624 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm12 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3],xmm12[4],xmm8[4],xmm12[5],xmm8[5],xmm12[6],xmm8[6],xmm12[7],xmm8[7]
5625 ; SSE-NEXT:    pand %xmm14, %xmm12
5626 ; SSE-NEXT:    por %xmm3, %xmm12
5627 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
5628 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm11[1,3,2,3]
5629 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
5630 ; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
5631 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5632 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5633 ; SSE-NEXT:    movdqa %xmm0, %xmm3
5634 ; SSE-NEXT:    pandn %xmm2, %xmm3
5635 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],xmm8[3],xmm4[4],xmm8[4],xmm4[5],xmm8[5],xmm4[6],xmm8[6],xmm4[7],xmm8[7]
5636 ; SSE-NEXT:    pand %xmm0, %xmm4
5637 ; SSE-NEXT:    por %xmm3, %xmm4
5638 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[0,1,2,1]
5639 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
5640 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,1,1]
5641 ; SSE-NEXT:    packuswb %xmm2, %xmm3
5642 ; SSE-NEXT:    movdqa %xmm6, %xmm4
5643 ; SSE-NEXT:    pandn %xmm3, %xmm4
5644 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm12[0,2,1,3]
5645 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]
5646 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,3,3]
5647 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,0,3,4,5,6,7]
5648 ; SSE-NEXT:    packuswb %xmm2, %xmm2
5649 ; SSE-NEXT:    pand %xmm6, %xmm2
5650 ; SSE-NEXT:    por %xmm2, %xmm4
5651 ; SSE-NEXT:    pand %xmm13, %xmm4
5652 ; SSE-NEXT:    por %xmm1, %xmm4
5653 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5654 ; SSE-NEXT:    movdqa %xmm5, %xmm1
5655 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5656 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5657 ; SSE-NEXT:    pand %xmm5, %xmm2
5658 ; SSE-NEXT:    por %xmm1, %xmm2
5659 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5660 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5661 ; SSE-NEXT:    movdqa %xmm14, %xmm3
5662 ; SSE-NEXT:    pandn %xmm1, %xmm3
5663 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5664 ; SSE-NEXT:    pand %xmm14, %xmm2
5665 ; SSE-NEXT:    por %xmm3, %xmm2
5666 ; SSE-NEXT:    packuswb {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5667 ; SSE-NEXT:    movdqa %xmm10, %xmm3
5668 ; SSE-NEXT:    pandn %xmm1, %xmm3
5669 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,3,2,3]
5670 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]
5671 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
5672 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5673 ; SSE-NEXT:    pand %xmm10, %xmm1
5674 ; SSE-NEXT:    por %xmm1, %xmm3
5675 ; SSE-NEXT:    movdqa %xmm13, %xmm1
5676 ; SSE-NEXT:    pandn %xmm3, %xmm1
5677 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5678 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
5679 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
5680 ; SSE-NEXT:    por %xmm2, %xmm4
5681 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5682 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5683 ; SSE-NEXT:    movdqa %xmm14, %xmm3
5684 ; SSE-NEXT:    pandn %xmm2, %xmm3
5685 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],xmm8[3],xmm4[4],xmm8[4],xmm4[5],xmm8[5],xmm4[6],xmm8[6],xmm4[7],xmm8[7]
5686 ; SSE-NEXT:    pand %xmm14, %xmm4
5687 ; SSE-NEXT:    por %xmm3, %xmm4
5688 ; SSE-NEXT:    movdqa %xmm4, %xmm5
5689 ; SSE-NEXT:    pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
5690 ; SSE-NEXT:    # xmm2 = mem[1,3,2,3]
5691 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
5692 ; SSE-NEXT:    punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
5693 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5694 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5695 ; SSE-NEXT:    movdqa %xmm0, %xmm3
5696 ; SSE-NEXT:    pandn %xmm2, %xmm3
5697 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],xmm8[3],xmm4[4],xmm8[4],xmm4[5],xmm8[5],xmm4[6],xmm8[6],xmm4[7],xmm8[7]
5698 ; SSE-NEXT:    pand %xmm0, %xmm4
5699 ; SSE-NEXT:    por %xmm3, %xmm4
5700 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[0,1,2,1]
5701 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
5702 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,1,1]
5703 ; SSE-NEXT:    packuswb %xmm2, %xmm3
5704 ; SSE-NEXT:    movdqa %xmm6, %xmm4
5705 ; SSE-NEXT:    pandn %xmm3, %xmm4
5706 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm5[0,2,1,3]
5707 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]
5708 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,3,3]
5709 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[2,1,0,3,4,5,6,7]
5710 ; SSE-NEXT:    packuswb %xmm2, %xmm2
5711 ; SSE-NEXT:    pand %xmm6, %xmm2
5712 ; SSE-NEXT:    por %xmm2, %xmm4
5713 ; SSE-NEXT:    pand %xmm13, %xmm4
5714 ; SSE-NEXT:    por %xmm1, %xmm4
5715 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5716 ; SSE-NEXT:    movdqa %xmm15, %xmm1
5717 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5718 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5719 ; SSE-NEXT:    pand %xmm15, %xmm2
5720 ; SSE-NEXT:    por %xmm1, %xmm2
5721 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5722 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5723 ; SSE-NEXT:    movdqa %xmm14, %xmm3
5724 ; SSE-NEXT:    pandn %xmm1, %xmm3
5725 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5726 ; SSE-NEXT:    pand %xmm14, %xmm2
5727 ; SSE-NEXT:    por %xmm3, %xmm2
5728 ; SSE-NEXT:    packuswb {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5729 ; SSE-NEXT:    movdqa %xmm10, %xmm3
5730 ; SSE-NEXT:    pandn %xmm1, %xmm3
5731 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,3,2,3]
5732 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]
5733 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,5,6,7]
5734 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5735 ; SSE-NEXT:    pand %xmm10, %xmm1
5736 ; SSE-NEXT:    por %xmm1, %xmm3
5737 ; SSE-NEXT:    movdqa %xmm13, %xmm1
5738 ; SSE-NEXT:    pandn %xmm3, %xmm1
5739 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5740 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
5741 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
5742 ; SSE-NEXT:    por %xmm2, %xmm4
5743 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5744 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5745 ; SSE-NEXT:    movdqa %xmm14, %xmm3
5746 ; SSE-NEXT:    pandn %xmm2, %xmm3
5747 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1],xmm4[2],xmm8[2],xmm4[3],xmm8[3],xmm4[4],xmm8[4],xmm4[5],xmm8[5],xmm4[6],xmm8[6],xmm4[7],xmm8[7]
5748 ; SSE-NEXT:    pand %xmm14, %xmm4
5749 ; SSE-NEXT:    por %xmm3, %xmm4
5750 ; SSE-NEXT:    pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
5751 ; SSE-NEXT:    # xmm2 = mem[1,3,2,3]
5752 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5753 ; SSE-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
5754 ; SSE-NEXT:    movdqa %xmm3, %xmm2
5755 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5756 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3],xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[7],xmm8[7]
5757 ; SSE-NEXT:    pand %xmm0, %xmm3
5758 ; SSE-NEXT:    pandn %xmm2, %xmm0
5759 ; SSE-NEXT:    por %xmm3, %xmm0
5760 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,2,1]
5761 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,4,7]
5762 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,1,1]
5763 ; SSE-NEXT:    packuswb %xmm2, %xmm0
5764 ; SSE-NEXT:    movdqa %xmm6, %xmm2
5765 ; SSE-NEXT:    pandn %xmm0, %xmm2
5766 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[0,2,1,3]
5767 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,7,6,7]
5768 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,3,3]
5769 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[2,1,0,3,4,5,6,7]
5770 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5771 ; SSE-NEXT:    pand %xmm6, %xmm0
5772 ; SSE-NEXT:    por %xmm0, %xmm2
5773 ; SSE-NEXT:    pand %xmm13, %xmm2
5774 ; SSE-NEXT:    por %xmm1, %xmm2
5775 ; SSE-NEXT:    movdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5776 ; SSE-NEXT:    movdqa %xmm15, %xmm9
5777 ; SSE-NEXT:    movdqa %xmm15, %xmm0
5778 ; SSE-NEXT:    pandn %xmm7, %xmm0
5779 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
5780 ; SSE-NEXT:    pand %xmm15, %xmm1
5781 ; SSE-NEXT:    por %xmm0, %xmm1
5782 ; SSE-NEXT:    movdqa %xmm1, %xmm0
5783 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]
5784 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5785 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
5786 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
5787 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
5788 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
5789 ; SSE-NEXT:    psrlq $48, %xmm0
5790 ; SSE-NEXT:    packuswb %xmm0, %xmm1
5791 ; SSE-NEXT:    movdqa %xmm6, %xmm0
5792 ; SSE-NEXT:    pandn %xmm1, %xmm0
5793 ; SSE-NEXT:    movdqa {{.*#+}} xmm12 = [65535,0,65535,65535,65535,0,65535,65535]
5794 ; SSE-NEXT:    movdqa %xmm12, %xmm1
5795 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5796 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5797 ; SSE-NEXT:    pand %xmm12, %xmm2
5798 ; SSE-NEXT:    por %xmm1, %xmm2
5799 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5800 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5801 ; SSE-NEXT:    movdqa {{.*#+}} xmm5 = [65535,0,65535,0,65535,65535,65535,65535]
5802 ; SSE-NEXT:    movdqa %xmm5, %xmm3
5803 ; SSE-NEXT:    pandn %xmm1, %xmm3
5804 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5805 ; SSE-NEXT:    pand %xmm5, %xmm2
5806 ; SSE-NEXT:    por %xmm3, %xmm2
5807 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm2[3,2,1,0,4,5,6,7]
5808 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,7,7,7]
5809 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5810 ; SSE-NEXT:    pand %xmm6, %xmm1
5811 ; SSE-NEXT:    por %xmm0, %xmm1
5812 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5813 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
5814 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5815 ; SSE-NEXT:    por %xmm0, %xmm3
5816 ; SSE-NEXT:    movdqa %xmm3, %xmm0
5817 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]
5818 ; SSE-NEXT:    movdqa %xmm14, %xmm2
5819 ; SSE-NEXT:    pandn %xmm0, %xmm2
5820 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3],xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[7],xmm8[7]
5821 ; SSE-NEXT:    pand %xmm14, %xmm3
5822 ; SSE-NEXT:    por %xmm2, %xmm3
5823 ; SSE-NEXT:    pshuflw $230, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
5824 ; SSE-NEXT:    # xmm0 = mem[2,1,2,3,4,5,6,7]
5825 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
5826 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5827 ; SSE-NEXT:    movdqa %xmm10, %xmm7
5828 ; SSE-NEXT:    movdqa %xmm10, %xmm2
5829 ; SSE-NEXT:    pandn %xmm0, %xmm2
5830 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm3[0,2,1,0,4,5,6,7]
5831 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,6,6,7]
5832 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5833 ; SSE-NEXT:    pand %xmm10, %xmm0
5834 ; SSE-NEXT:    por %xmm0, %xmm2
5835 ; SSE-NEXT:    movdqa %xmm13, %xmm10
5836 ; SSE-NEXT:    movdqa %xmm13, %xmm0
5837 ; SSE-NEXT:    pandn %xmm2, %xmm0
5838 ; SSE-NEXT:    pand %xmm13, %xmm1
5839 ; SSE-NEXT:    por %xmm1, %xmm0
5840 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5841 ; SSE-NEXT:    movdqa %xmm15, %xmm0
5842 ; SSE-NEXT:    pandn %xmm11, %xmm0
5843 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
5844 ; SSE-NEXT:    pand %xmm15, %xmm1
5845 ; SSE-NEXT:    por %xmm0, %xmm1
5846 ; SSE-NEXT:    movdqa %xmm1, %xmm0
5847 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]
5848 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5849 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
5850 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
5851 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
5852 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
5853 ; SSE-NEXT:    psrlq $48, %xmm0
5854 ; SSE-NEXT:    packuswb %xmm0, %xmm1
5855 ; SSE-NEXT:    movdqa %xmm6, %xmm0
5856 ; SSE-NEXT:    pandn %xmm1, %xmm0
5857 ; SSE-NEXT:    movdqa %xmm12, %xmm1
5858 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
5859 ; SSE-NEXT:    pandn %xmm15, %xmm1
5860 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
5861 ; SSE-NEXT:    movdqa %xmm4, %xmm2
5862 ; SSE-NEXT:    pand %xmm12, %xmm2
5863 ; SSE-NEXT:    por %xmm1, %xmm2
5864 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5865 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5866 ; SSE-NEXT:    movdqa %xmm5, %xmm3
5867 ; SSE-NEXT:    pandn %xmm1, %xmm3
5868 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5869 ; SSE-NEXT:    pand %xmm5, %xmm2
5870 ; SSE-NEXT:    por %xmm3, %xmm2
5871 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm2[3,2,1,0,4,5,6,7]
5872 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,7,7,7]
5873 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5874 ; SSE-NEXT:    pand %xmm6, %xmm1
5875 ; SSE-NEXT:    por %xmm0, %xmm1
5876 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5877 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
5878 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5879 ; SSE-NEXT:    por %xmm0, %xmm3
5880 ; SSE-NEXT:    movdqa %xmm3, %xmm0
5881 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]
5882 ; SSE-NEXT:    movdqa %xmm14, %xmm2
5883 ; SSE-NEXT:    pandn %xmm0, %xmm2
5884 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3],xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[7],xmm8[7]
5885 ; SSE-NEXT:    pand %xmm14, %xmm3
5886 ; SSE-NEXT:    por %xmm2, %xmm3
5887 ; SSE-NEXT:    pshuflw $230, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
5888 ; SSE-NEXT:    # xmm0 = mem[2,1,2,3,4,5,6,7]
5889 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
5890 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5891 ; SSE-NEXT:    movdqa %xmm7, %xmm2
5892 ; SSE-NEXT:    pandn %xmm0, %xmm2
5893 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm3[0,2,1,0,4,5,6,7]
5894 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,6,6,7]
5895 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5896 ; SSE-NEXT:    pand %xmm7, %xmm0
5897 ; SSE-NEXT:    por %xmm0, %xmm2
5898 ; SSE-NEXT:    movdqa %xmm13, %xmm0
5899 ; SSE-NEXT:    pandn %xmm2, %xmm0
5900 ; SSE-NEXT:    pand %xmm13, %xmm1
5901 ; SSE-NEXT:    por %xmm1, %xmm0
5902 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5903 ; SSE-NEXT:    movdqa %xmm9, %xmm0
5904 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
5905 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
5906 ; SSE-NEXT:    pand %xmm9, %xmm1
5907 ; SSE-NEXT:    movdqa %xmm9, %xmm13
5908 ; SSE-NEXT:    por %xmm0, %xmm1
5909 ; SSE-NEXT:    movdqa %xmm1, %xmm0
5910 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]
5911 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5912 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
5913 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,3,4,5,6,7]
5914 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
5915 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
5916 ; SSE-NEXT:    psrlq $48, %xmm0
5917 ; SSE-NEXT:    packuswb %xmm0, %xmm1
5918 ; SSE-NEXT:    movdqa %xmm6, %xmm0
5919 ; SSE-NEXT:    pandn %xmm1, %xmm0
5920 ; SSE-NEXT:    movdqa %xmm12, %xmm1
5921 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
5922 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
5923 ; SSE-NEXT:    movdqa %xmm9, %xmm2
5924 ; SSE-NEXT:    pand %xmm12, %xmm2
5925 ; SSE-NEXT:    por %xmm1, %xmm2
5926 ; SSE-NEXT:    movdqa %xmm2, %xmm1
5927 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[1],xmm8[1],xmm1[2],xmm8[2],xmm1[3],xmm8[3],xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
5928 ; SSE-NEXT:    movdqa %xmm5, %xmm3
5929 ; SSE-NEXT:    pandn %xmm1, %xmm3
5930 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5931 ; SSE-NEXT:    pand %xmm5, %xmm2
5932 ; SSE-NEXT:    por %xmm3, %xmm2
5933 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm2[3,2,1,0,4,5,6,7]
5934 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,7,7,7]
5935 ; SSE-NEXT:    packuswb %xmm1, %xmm1
5936 ; SSE-NEXT:    pand %xmm6, %xmm1
5937 ; SSE-NEXT:    por %xmm0, %xmm1
5938 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
5939 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
5940 ; SSE-NEXT:    pandn %xmm11, %xmm0
5941 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
5942 ; SSE-NEXT:    por %xmm0, %xmm3
5943 ; SSE-NEXT:    movdqa %xmm3, %xmm0
5944 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]
5945 ; SSE-NEXT:    movdqa %xmm14, %xmm2
5946 ; SSE-NEXT:    pandn %xmm0, %xmm2
5947 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3],xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[7],xmm8[7]
5948 ; SSE-NEXT:    pand %xmm14, %xmm3
5949 ; SSE-NEXT:    por %xmm2, %xmm3
5950 ; SSE-NEXT:    pshuflw $230, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
5951 ; SSE-NEXT:    # xmm0 = mem[2,1,2,3,4,5,6,7]
5952 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
5953 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5954 ; SSE-NEXT:    movdqa %xmm7, %xmm2
5955 ; SSE-NEXT:    pandn %xmm0, %xmm2
5956 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm3[0,2,1,0,4,5,6,7]
5957 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,6,6,7]
5958 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5959 ; SSE-NEXT:    pand %xmm7, %xmm0
5960 ; SSE-NEXT:    por %xmm0, %xmm2
5961 ; SSE-NEXT:    movdqa %xmm10, %xmm0
5962 ; SSE-NEXT:    pandn %xmm2, %xmm0
5963 ; SSE-NEXT:    pand %xmm10, %xmm1
5964 ; SSE-NEXT:    por %xmm1, %xmm0
5965 ; SSE-NEXT:    movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
5966 ; SSE-NEXT:    movdqa %xmm13, %xmm0
5967 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
5968 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5969 ; SSE-NEXT:    pand %xmm13, %xmm2
5970 ; SSE-NEXT:    por %xmm0, %xmm2
5971 ; SSE-NEXT:    movdqa %xmm2, %xmm0
5972 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15]
5973 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1],xmm2[2],xmm8[2],xmm2[3],xmm8[3],xmm2[4],xmm8[4],xmm2[5],xmm8[5],xmm2[6],xmm8[6],xmm2[7],xmm8[7]
5974 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
5975 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm2[0,3,2,3,4,5,6,7]
5976 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
5977 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,4,7,6]
5978 ; SSE-NEXT:    psrlq $48, %xmm0
5979 ; SSE-NEXT:    packuswb %xmm0, %xmm1
5980 ; SSE-NEXT:    movdqa %xmm12, %xmm0
5981 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
5982 ; SSE-NEXT:    pandn %xmm13, %xmm0
5983 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
5984 ; SSE-NEXT:    pand %xmm12, %xmm2
5985 ; SSE-NEXT:    por %xmm0, %xmm2
5986 ; SSE-NEXT:    movdqa %xmm2, %xmm0
5987 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1],xmm0[2],xmm8[2],xmm0[3],xmm8[3],xmm0[4],xmm8[4],xmm0[5],xmm8[5],xmm0[6],xmm8[6],xmm0[7],xmm8[7]
5988 ; SSE-NEXT:    movdqa %xmm5, %xmm3
5989 ; SSE-NEXT:    pandn %xmm0, %xmm3
5990 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm8[8],xmm2[9],xmm8[9],xmm2[10],xmm8[10],xmm2[11],xmm8[11],xmm2[12],xmm8[12],xmm2[13],xmm8[13],xmm2[14],xmm8[14],xmm2[15],xmm8[15]
5991 ; SSE-NEXT:    pand %xmm5, %xmm2
5992 ; SSE-NEXT:    por %xmm3, %xmm2
5993 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm2[3,2,1,0,4,5,6,7]
5994 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,7,7,7,7]
5995 ; SSE-NEXT:    packuswb %xmm0, %xmm0
5996 ; SSE-NEXT:    pand %xmm6, %xmm0
5997 ; SSE-NEXT:    pandn %xmm1, %xmm6
5998 ; SSE-NEXT:    por %xmm6, %xmm0
5999 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
6000 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6001 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6002 ; SSE-NEXT:    por %xmm1, %xmm3
6003 ; SSE-NEXT:    movdqa %xmm3, %xmm1
6004 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm8[8],xmm1[9],xmm8[9],xmm1[10],xmm8[10],xmm1[11],xmm8[11],xmm1[12],xmm8[12],xmm1[13],xmm8[13],xmm1[14],xmm8[14],xmm1[15],xmm8[15]
6005 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3],xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[7],xmm8[7]
6006 ; SSE-NEXT:    pand %xmm14, %xmm3
6007 ; SSE-NEXT:    pandn %xmm1, %xmm14
6008 ; SSE-NEXT:    por %xmm3, %xmm14
6009 ; SSE-NEXT:    pshuflw $230, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6010 ; SSE-NEXT:    # xmm1 = mem[2,1,2,3,4,5,6,7]
6011 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,0,0]
6012 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6013 ; SSE-NEXT:    movdqa %xmm7, %xmm2
6014 ; SSE-NEXT:    pandn %xmm1, %xmm2
6015 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm14[0,2,1,0,4,5,6,7]
6016 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,7,6,6,7]
6017 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6018 ; SSE-NEXT:    pand %xmm7, %xmm1
6019 ; SSE-NEXT:    por %xmm1, %xmm2
6020 ; SSE-NEXT:    movdqa %xmm10, %xmm1
6021 ; SSE-NEXT:    pandn %xmm2, %xmm1
6022 ; SSE-NEXT:    pand %xmm10, %xmm0
6023 ; SSE-NEXT:    por %xmm0, %xmm1
6024 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6025 ; SSE-NEXT:    movdqa {{.*#+}} xmm8 = [65535,65535,0,65535,65535,0,65535,65535]
6026 ; SSE-NEXT:    movdqa %xmm8, %xmm0
6027 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
6028 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
6029 ; SSE-NEXT:    pand %xmm8, %xmm1
6030 ; SSE-NEXT:    por %xmm0, %xmm1
6031 ; SSE-NEXT:    movdqa %xmm1, %xmm0
6032 ; SSE-NEXT:    pxor %xmm2, %xmm2
6033 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]
6034 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
6035 ; 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]
6036 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,1,2,3]
6037 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7]
6038 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
6039 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6040 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]
6041 ; SSE-NEXT:    pxor %xmm6, %xmm6
6042 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6043 ; SSE-NEXT:    pandn %xmm0, %xmm3
6044 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
6045 ; SSE-NEXT:    por %xmm3, %xmm2
6046 ; SSE-NEXT:    packuswb %xmm0, %xmm2
6047 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6048 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,1,3,3]
6049 ; SSE-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]
6050 ; SSE-NEXT:    movdqa %xmm12, %xmm1
6051 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6052 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
6053 ; SSE-NEXT:    movdqa %xmm14, %xmm2
6054 ; SSE-NEXT:    pand %xmm12, %xmm2
6055 ; SSE-NEXT:    por %xmm1, %xmm2
6056 ; SSE-NEXT:    movdqa %xmm2, %xmm1
6057 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3],xmm1[4],xmm6[4],xmm1[5],xmm6[5],xmm1[6],xmm6[6],xmm1[7],xmm6[7]
6058 ; SSE-NEXT:    movdqa %xmm5, %xmm3
6059 ; SSE-NEXT:    pandn %xmm1, %xmm3
6060 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm6[8],xmm2[9],xmm6[9],xmm2[10],xmm6[10],xmm2[11],xmm6[11],xmm2[12],xmm6[12],xmm2[13],xmm6[13],xmm2[14],xmm6[14],xmm2[15],xmm6[15]
6061 ; SSE-NEXT:    pand %xmm5, %xmm2
6062 ; SSE-NEXT:    por %xmm3, %xmm2
6063 ; SSE-NEXT:    pshufd $100, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6064 ; SSE-NEXT:    # xmm1 = mem[0,1,2,1]
6065 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
6066 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6067 ; SSE-NEXT:    movdqa %xmm7, %xmm3
6068 ; SSE-NEXT:    pandn %xmm1, %xmm3
6069 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,1,0,3]
6070 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,3,2,1,4,5,6,7]
6071 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
6072 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6073 ; SSE-NEXT:    pand %xmm7, %xmm1
6074 ; SSE-NEXT:    por %xmm1, %xmm3
6075 ; SSE-NEXT:    movdqa %xmm10, %xmm1
6076 ; SSE-NEXT:    pandn %xmm3, %xmm1
6077 ; SSE-NEXT:    andps %xmm10, %xmm0
6078 ; SSE-NEXT:    por %xmm0, %xmm1
6079 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6080 ; SSE-NEXT:    movdqa %xmm8, %xmm0
6081 ; SSE-NEXT:    pandn %xmm15, %xmm0
6082 ; SSE-NEXT:    pand %xmm8, %xmm4
6083 ; SSE-NEXT:    por %xmm0, %xmm4
6084 ; SSE-NEXT:    movdqa %xmm4, %xmm0
6085 ; SSE-NEXT:    pxor %xmm1, %xmm1
6086 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
6087 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
6088 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3],xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]
6089 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[2,1,2,3]
6090 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7]
6091 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
6092 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6093 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
6094 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
6095 ; SSE-NEXT:    pandn %xmm0, %xmm4
6096 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6097 ; SSE-NEXT:    por %xmm4, %xmm3
6098 ; SSE-NEXT:    packuswb %xmm0, %xmm3
6099 ; SSE-NEXT:    packuswb %xmm2, %xmm2
6100 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,1,3,3]
6101 ; SSE-NEXT:    movss {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3]
6102 ; SSE-NEXT:    movdqa %xmm12, %xmm2
6103 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
6104 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
6105 ; SSE-NEXT:    movdqa %xmm15, %xmm3
6106 ; SSE-NEXT:    pand %xmm12, %xmm3
6107 ; SSE-NEXT:    por %xmm2, %xmm3
6108 ; SSE-NEXT:    movdqa %xmm3, %xmm2
6109 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
6110 ; SSE-NEXT:    movdqa %xmm5, %xmm4
6111 ; SSE-NEXT:    pandn %xmm2, %xmm4
6112 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm1[8],xmm3[9],xmm1[9],xmm3[10],xmm1[10],xmm3[11],xmm1[11],xmm3[12],xmm1[12],xmm3[13],xmm1[13],xmm3[14],xmm1[14],xmm3[15],xmm1[15]
6113 ; SSE-NEXT:    pand %xmm5, %xmm3
6114 ; SSE-NEXT:    por %xmm4, %xmm3
6115 ; SSE-NEXT:    pshufd $100, {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
6116 ; SSE-NEXT:    # xmm2 = mem[0,1,2,1]
6117 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,4,7]
6118 ; SSE-NEXT:    packuswb %xmm2, %xmm2
6119 ; SSE-NEXT:    movdqa %xmm7, %xmm4
6120 ; SSE-NEXT:    pandn %xmm2, %xmm4
6121 ; SSE-NEXT:    pshufd {{.*#+}} xmm2 = xmm3[0,1,0,3]
6122 ; SSE-NEXT:    pshuflw {{.*#+}} xmm2 = xmm2[0,3,2,1,4,5,6,7]
6123 ; SSE-NEXT:    pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,7,6,7]
6124 ; SSE-NEXT:    packuswb %xmm2, %xmm2
6125 ; SSE-NEXT:    pand %xmm7, %xmm2
6126 ; SSE-NEXT:    por %xmm2, %xmm4
6127 ; SSE-NEXT:    movdqa %xmm10, %xmm1
6128 ; SSE-NEXT:    pandn %xmm4, %xmm1
6129 ; SSE-NEXT:    andps %xmm10, %xmm0
6130 ; SSE-NEXT:    por %xmm0, %xmm1
6131 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6132 ; SSE-NEXT:    movdqa %xmm8, %xmm0
6133 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
6134 ; SSE-NEXT:    pand %xmm8, %xmm9
6135 ; SSE-NEXT:    por %xmm0, %xmm9
6136 ; SSE-NEXT:    movdqa %xmm9, %xmm0
6137 ; SSE-NEXT:    pxor %xmm1, %xmm1
6138 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
6139 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
6140 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm1[0],xmm9[1],xmm1[1],xmm9[2],xmm1[2],xmm9[3],xmm1[3],xmm9[4],xmm1[4],xmm9[5],xmm1[5],xmm9[6],xmm1[6],xmm9[7],xmm1[7]
6141 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm9[2,1,2,3]
6142 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7]
6143 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3]
6144 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6145 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
6146 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
6147 ; SSE-NEXT:    pandn %xmm0, %xmm4
6148 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
6149 ; SSE-NEXT:    por %xmm4, %xmm2
6150 ; SSE-NEXT:    packuswb %xmm0, %xmm2
6151 ; SSE-NEXT:    packuswb %xmm3, %xmm3
6152 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,1,3,3]
6153 ; SSE-NEXT:    movss {{.*#+}} xmm0 = xmm3[0],xmm0[1,2,3]
6154 ; SSE-NEXT:    movdqa %xmm12, %xmm3
6155 ; SSE-NEXT:    pandn %xmm11, %xmm3
6156 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
6157 ; SSE-NEXT:    movdqa %xmm2, %xmm4
6158 ; SSE-NEXT:    pand %xmm12, %xmm4
6159 ; SSE-NEXT:    por %xmm3, %xmm4
6160 ; SSE-NEXT:    movdqa %xmm4, %xmm3
6161 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3],xmm3[4],xmm1[4],xmm3[5],xmm1[5],xmm3[6],xmm1[6],xmm3[7],xmm1[7]
6162 ; SSE-NEXT:    movdqa %xmm5, %xmm6
6163 ; SSE-NEXT:    pandn %xmm3, %xmm6
6164 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm1[8],xmm4[9],xmm1[9],xmm4[10],xmm1[10],xmm4[11],xmm1[11],xmm4[12],xmm1[12],xmm4[13],xmm1[13],xmm4[14],xmm1[14],xmm4[15],xmm1[15]
6165 ; SSE-NEXT:    pand %xmm5, %xmm4
6166 ; SSE-NEXT:    por %xmm6, %xmm4
6167 ; SSE-NEXT:    pshufd $100, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
6168 ; SSE-NEXT:    # xmm3 = mem[0,1,2,1]
6169 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,4,7]
6170 ; SSE-NEXT:    packuswb %xmm3, %xmm3
6171 ; SSE-NEXT:    movdqa %xmm7, %xmm6
6172 ; SSE-NEXT:    pandn %xmm3, %xmm6
6173 ; SSE-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[0,1,0,3]
6174 ; SSE-NEXT:    pshuflw {{.*#+}} xmm3 = xmm3[0,3,2,1,4,5,6,7]
6175 ; SSE-NEXT:    pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,7,6,7]
6176 ; SSE-NEXT:    packuswb %xmm3, %xmm3
6177 ; SSE-NEXT:    pand %xmm7, %xmm3
6178 ; SSE-NEXT:    por %xmm3, %xmm6
6179 ; SSE-NEXT:    movdqa %xmm10, %xmm1
6180 ; SSE-NEXT:    pandn %xmm6, %xmm1
6181 ; SSE-NEXT:    andps %xmm10, %xmm0
6182 ; SSE-NEXT:    por %xmm0, %xmm1
6183 ; SSE-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6184 ; SSE-NEXT:    movdqa %xmm8, %xmm0
6185 ; SSE-NEXT:    pandn %xmm13, %xmm0
6186 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
6187 ; SSE-NEXT:    pand %xmm8, %xmm4
6188 ; SSE-NEXT:    por %xmm0, %xmm4
6189 ; SSE-NEXT:    movdqa %xmm4, %xmm0
6190 ; SSE-NEXT:    pxor %xmm1, %xmm1
6191 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
6192 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[3,1,2,3,4,5,6,7]
6193 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3],xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]
6194 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,1,2,3]
6195 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7]
6196 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm0[0],xmm4[1],xmm0[1],xmm4[2],xmm0[2],xmm4[3],xmm0[3]
6197 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6198 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm1[8],xmm0[9],xmm1[9],xmm0[10],xmm1[10],xmm0[11],xmm1[11],xmm0[12],xmm1[12],xmm0[13],xmm1[13],xmm0[14],xmm1[14],xmm0[15],xmm1[15]
6199 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
6200 ; SSE-NEXT:    pandn %xmm0, %xmm6
6201 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6202 ; SSE-NEXT:    por %xmm6, %xmm3
6203 ; SSE-NEXT:    packuswb %xmm0, %xmm3
6204 ; SSE-NEXT:    packuswb %xmm4, %xmm4
6205 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,1,3,3]
6206 ; SSE-NEXT:    movss {{.*#+}} xmm0 = xmm4[0],xmm0[1,2,3]
6207 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
6208 ; SSE-NEXT:    movdqa %xmm12, %xmm3
6209 ; SSE-NEXT:    pand %xmm12, %xmm4
6210 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
6211 ; SSE-NEXT:    por %xmm4, %xmm3
6212 ; SSE-NEXT:    movdqa %xmm3, %xmm4
6213 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3],xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]
6214 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm1[8],xmm3[9],xmm1[9],xmm3[10],xmm1[10],xmm3[11],xmm1[11],xmm3[12],xmm1[12],xmm3[13],xmm1[13],xmm3[14],xmm1[14],xmm3[15],xmm1[15]
6215 ; SSE-NEXT:    pxor %xmm12, %xmm12
6216 ; SSE-NEXT:    pand %xmm5, %xmm3
6217 ; SSE-NEXT:    pandn %xmm4, %xmm5
6218 ; SSE-NEXT:    por %xmm3, %xmm5
6219 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[0,1,0,3]
6220 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,1,4,5,6,7]
6221 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,7,6,7]
6222 ; SSE-NEXT:    packuswb %xmm4, %xmm4
6223 ; SSE-NEXT:    pand %xmm7, %xmm4
6224 ; SSE-NEXT:    pshufd $100, {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Folded Reload
6225 ; SSE-NEXT:    # xmm5 = mem[0,1,2,1]
6226 ; SSE-NEXT:    pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,4,5,4,7]
6227 ; SSE-NEXT:    packuswb %xmm5, %xmm5
6228 ; SSE-NEXT:    pandn %xmm5, %xmm7
6229 ; SSE-NEXT:    por %xmm4, %xmm7
6230 ; SSE-NEXT:    movdqa %xmm10, %xmm3
6231 ; SSE-NEXT:    pandn %xmm7, %xmm3
6232 ; SSE-NEXT:    andps %xmm10, %xmm0
6233 ; SSE-NEXT:    por %xmm0, %xmm3
6234 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6235 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
6236 ; SSE-NEXT:    movdqa {{.*#+}} xmm13 = [65535,65535,65535,0,65535,65535,0,65535]
6237 ; SSE-NEXT:    pand %xmm13, %xmm4
6238 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
6239 ; SSE-NEXT:    movdqa %xmm4, %xmm6
6240 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm6 = xmm6[8],xmm12[8],xmm6[9],xmm12[9],xmm6[10],xmm12[10],xmm6[11],xmm12[11],xmm6[12],xmm12[12],xmm6[13],xmm12[13],xmm6[14],xmm12[14],xmm6[15],xmm12[15]
6241 ; SSE-NEXT:    movdqa {{.*#+}} xmm0 = [0,65535,65535,65535,65535,65535,65535,0]
6242 ; SSE-NEXT:    movdqa %xmm0, %xmm7
6243 ; SSE-NEXT:    pandn %xmm6, %xmm7
6244 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm12[0],xmm4[1],xmm12[1],xmm4[2],xmm12[2],xmm4[3],xmm12[3],xmm4[4],xmm12[4],xmm4[5],xmm12[5],xmm4[6],xmm12[6],xmm4[7],xmm12[7]
6245 ; SSE-NEXT:    pand %xmm0, %xmm4
6246 ; SSE-NEXT:    por %xmm7, %xmm4
6247 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[0,1,0,3]
6248 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm4[0,1,2,3,5,4,7,6]
6249 ; SSE-NEXT:    psrldq {{.*#+}} xmm6 = xmm6[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
6250 ; SSE-NEXT:    packuswb %xmm6, %xmm7
6251 ; SSE-NEXT:    movdqa %xmm13, %xmm3
6252 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
6253 ; SSE-NEXT:    pandn %xmm1, %xmm3
6254 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6255 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm1[1,3,2,3]
6256 ; SSE-NEXT:    pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Folded Reload
6257 ; SSE-NEXT:    # xmm6 = mem[0,2,2,3]
6258 ; SSE-NEXT:    punpckldq {{.*#+}} xmm6 = xmm6[0],xmm4[0],xmm6[1],xmm4[1]
6259 ; SSE-NEXT:    movdqa %xmm6, %xmm4
6260 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm12[8],xmm4[9],xmm12[9],xmm4[10],xmm12[10],xmm4[11],xmm12[11],xmm4[12],xmm12[12],xmm4[13],xmm12[13],xmm4[14],xmm12[14],xmm4[15],xmm12[15]
6261 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[2,1,2,3]
6262 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7]
6263 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm12[0],xmm6[1],xmm12[1],xmm6[2],xmm12[2],xmm6[3],xmm12[3],xmm6[4],xmm12[4],xmm6[5],xmm12[5],xmm6[6],xmm12[6],xmm6[7],xmm12[7]
6264 ; SSE-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[2,1,2,3]
6265 ; SSE-NEXT:    pshuflw {{.*#+}} xmm6 = xmm6[1,3,2,3,4,5,6,7]
6266 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3]
6267 ; SSE-NEXT:    packuswb %xmm6, %xmm6
6268 ; SSE-NEXT:    movss {{.*#+}} xmm7 = xmm6[0],xmm7[1,2,3]
6269 ; SSE-NEXT:    movdqa %xmm8, %xmm1
6270 ; SSE-NEXT:    movdqa %xmm8, %xmm4
6271 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
6272 ; SSE-NEXT:    movdqa %xmm14, %xmm8
6273 ; SSE-NEXT:    pand %xmm1, %xmm8
6274 ; SSE-NEXT:    movdqa %xmm1, %xmm14
6275 ; SSE-NEXT:    por %xmm4, %xmm8
6276 ; SSE-NEXT:    movdqa %xmm8, %xmm4
6277 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm12[0],xmm4[1],xmm12[1],xmm4[2],xmm12[2],xmm4[3],xmm12[3],xmm4[4],xmm12[4],xmm4[5],xmm12[5],xmm4[6],xmm12[6],xmm4[7],xmm12[7]
6278 ; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [65535,65535,0,65535,0,65535,65535,65535]
6279 ; SSE-NEXT:    movdqa %xmm1, %xmm6
6280 ; SSE-NEXT:    pandn %xmm4, %xmm6
6281 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm12[8],xmm8[9],xmm12[9],xmm8[10],xmm12[10],xmm8[11],xmm12[11],xmm8[12],xmm12[12],xmm8[13],xmm12[13],xmm8[14],xmm12[14],xmm8[15],xmm12[15]
6282 ; SSE-NEXT:    pand %xmm1, %xmm8
6283 ; SSE-NEXT:    por %xmm6, %xmm8
6284 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6285 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
6286 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm3[0,1,0,3]
6287 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,4,7,6]
6288 ; SSE-NEXT:    packuswb %xmm4, %xmm4
6289 ; SSE-NEXT:    movdqa {{.*#+}} xmm6 = [255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0]
6290 ; SSE-NEXT:    movdqa %xmm6, %xmm9
6291 ; SSE-NEXT:    pandn %xmm4, %xmm9
6292 ; SSE-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[2,1,0,3]
6293 ; SSE-NEXT:    pshuflw {{.*#+}} xmm4 = xmm4[0,0,3,2,4,5,6,7]
6294 ; SSE-NEXT:    pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,5,5,5,5]
6295 ; SSE-NEXT:    packuswb %xmm4, %xmm4
6296 ; SSE-NEXT:    pand %xmm6, %xmm4
6297 ; SSE-NEXT:    por %xmm4, %xmm9
6298 ; SSE-NEXT:    movdqa %xmm10, %xmm3
6299 ; SSE-NEXT:    pandn %xmm9, %xmm3
6300 ; SSE-NEXT:    andps %xmm10, %xmm7
6301 ; SSE-NEXT:    movdqa %xmm10, %xmm5
6302 ; SSE-NEXT:    por %xmm7, %xmm3
6303 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6304 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
6305 ; SSE-NEXT:    movdqa %xmm13, %xmm10
6306 ; SSE-NEXT:    pand %xmm13, %xmm7
6307 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
6308 ; SSE-NEXT:    movdqa %xmm7, %xmm8
6309 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm12[8],xmm8[9],xmm12[9],xmm8[10],xmm12[10],xmm8[11],xmm12[11],xmm8[12],xmm12[12],xmm8[13],xmm12[13],xmm8[14],xmm12[14],xmm8[15],xmm12[15]
6310 ; SSE-NEXT:    movdqa %xmm0, %xmm9
6311 ; SSE-NEXT:    pandn %xmm8, %xmm9
6312 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm12[0],xmm7[1],xmm12[1],xmm7[2],xmm12[2],xmm7[3],xmm12[3],xmm7[4],xmm12[4],xmm7[5],xmm12[5],xmm7[6],xmm12[6],xmm7[7],xmm12[7]
6313 ; SSE-NEXT:    pand %xmm0, %xmm7
6314 ; SSE-NEXT:    por %xmm9, %xmm7
6315 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[0,1,0,3]
6316 ; SSE-NEXT:    pshufhw {{.*#+}} xmm9 = xmm7[0,1,2,3,5,4,7,6]
6317 ; SSE-NEXT:    psrldq {{.*#+}} xmm8 = xmm8[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
6318 ; SSE-NEXT:    packuswb %xmm8, %xmm9
6319 ; SSE-NEXT:    movdqa %xmm13, %xmm4
6320 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6321 ; SSE-NEXT:    pandn %xmm3, %xmm4
6322 ; SSE-NEXT:    movdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6323 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm3[1,3,2,3]
6324 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
6325 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm4[0,2,2,3]
6326 ; SSE-NEXT:    punpckldq {{.*#+}} xmm8 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]
6327 ; SSE-NEXT:    movdqa %xmm8, %xmm7
6328 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm7 = xmm7[8],xmm12[8],xmm7[9],xmm12[9],xmm7[10],xmm12[10],xmm7[11],xmm12[11],xmm7[12],xmm12[12],xmm7[13],xmm12[13],xmm7[14],xmm12[14],xmm7[15],xmm12[15]
6329 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[2,1,2,3]
6330 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[0,2,2,3,4,5,6,7]
6331 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3],xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7],xmm12[7]
6332 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[2,1,2,3]
6333 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[1,3,2,3,4,5,6,7]
6334 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]
6335 ; SSE-NEXT:    packuswb %xmm8, %xmm8
6336 ; SSE-NEXT:    movss {{.*#+}} xmm9 = xmm8[0],xmm9[1,2,3]
6337 ; SSE-NEXT:    movdqa %xmm14, %xmm7
6338 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Folded Reload
6339 ; SSE-NEXT:    movdqa %xmm15, %xmm8
6340 ; SSE-NEXT:    pand %xmm14, %xmm8
6341 ; SSE-NEXT:    por %xmm7, %xmm8
6342 ; SSE-NEXT:    movdqa %xmm8, %xmm7
6343 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm12[0],xmm7[1],xmm12[1],xmm7[2],xmm12[2],xmm7[3],xmm12[3],xmm7[4],xmm12[4],xmm7[5],xmm12[5],xmm7[6],xmm12[6],xmm7[7],xmm12[7]
6344 ; SSE-NEXT:    movdqa %xmm1, %xmm13
6345 ; SSE-NEXT:    pandn %xmm7, %xmm13
6346 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm12[8],xmm8[9],xmm12[9],xmm8[10],xmm12[10],xmm8[11],xmm12[11],xmm8[12],xmm12[12],xmm8[13],xmm12[13],xmm8[14],xmm12[14],xmm8[15],xmm12[15]
6347 ; SSE-NEXT:    pand %xmm1, %xmm8
6348 ; SSE-NEXT:    por %xmm13, %xmm8
6349 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6350 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
6351 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm3[0,1,0,3]
6352 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,4,7,6]
6353 ; SSE-NEXT:    packuswb %xmm7, %xmm7
6354 ; SSE-NEXT:    movdqa %xmm6, %xmm13
6355 ; SSE-NEXT:    pandn %xmm7, %xmm13
6356 ; SSE-NEXT:    pshufd {{.*#+}} xmm7 = xmm8[2,1,0,3]
6357 ; SSE-NEXT:    pshuflw {{.*#+}} xmm7 = xmm7[0,0,3,2,4,5,6,7]
6358 ; SSE-NEXT:    pshufhw {{.*#+}} xmm7 = xmm7[0,1,2,3,5,5,5,5]
6359 ; SSE-NEXT:    packuswb %xmm7, %xmm7
6360 ; SSE-NEXT:    pand %xmm6, %xmm7
6361 ; SSE-NEXT:    por %xmm7, %xmm13
6362 ; SSE-NEXT:    movdqa %xmm5, %xmm7
6363 ; SSE-NEXT:    pandn %xmm13, %xmm7
6364 ; SSE-NEXT:    andps %xmm5, %xmm9
6365 ; SSE-NEXT:    por %xmm9, %xmm7
6366 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
6367 ; SSE-NEXT:    pand %xmm10, %xmm8
6368 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
6369 ; SSE-NEXT:    movdqa %xmm8, %xmm9
6370 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm9 = xmm9[8],xmm12[8],xmm9[9],xmm12[9],xmm9[10],xmm12[10],xmm9[11],xmm12[11],xmm9[12],xmm12[12],xmm9[13],xmm12[13],xmm9[14],xmm12[14],xmm9[15],xmm12[15]
6371 ; SSE-NEXT:    movdqa %xmm0, %xmm13
6372 ; SSE-NEXT:    pandn %xmm9, %xmm13
6373 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3],xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7],xmm12[7]
6374 ; SSE-NEXT:    pand %xmm0, %xmm8
6375 ; SSE-NEXT:    por %xmm13, %xmm8
6376 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,1,0,3]
6377 ; SSE-NEXT:    pshufhw {{.*#+}} xmm15 = xmm8[0,1,2,3,5,4,7,6]
6378 ; SSE-NEXT:    psrldq {{.*#+}} xmm9 = xmm9[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
6379 ; SSE-NEXT:    packuswb %xmm9, %xmm15
6380 ; SSE-NEXT:    movdqa %xmm10, %xmm13
6381 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6382 ; SSE-NEXT:    pandn %xmm3, %xmm13
6383 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm3[1,3,2,3]
6384 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6385 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm3[0,2,2,3]
6386 ; SSE-NEXT:    punpckldq {{.*#+}} xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1]
6387 ; SSE-NEXT:    movdqa %xmm9, %xmm8
6388 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm12[8],xmm8[9],xmm12[9],xmm8[10],xmm12[10],xmm8[11],xmm12[11],xmm8[12],xmm12[12],xmm8[13],xmm12[13],xmm8[14],xmm12[14],xmm8[15],xmm12[15]
6389 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[2,1,2,3]
6390 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[0,2,2,3,4,5,6,7]
6391 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm12[0],xmm9[1],xmm12[1],xmm9[2],xmm12[2],xmm9[3],xmm12[3],xmm9[4],xmm12[4],xmm9[5],xmm12[5],xmm9[6],xmm12[6],xmm9[7],xmm12[7]
6392 ; SSE-NEXT:    pshufd {{.*#+}} xmm9 = xmm9[2,1,2,3]
6393 ; SSE-NEXT:    pshuflw {{.*#+}} xmm9 = xmm9[1,3,2,3,4,5,6,7]
6394 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3]
6395 ; SSE-NEXT:    packuswb %xmm9, %xmm9
6396 ; SSE-NEXT:    movss {{.*#+}} xmm15 = xmm9[0],xmm15[1,2,3]
6397 ; SSE-NEXT:    movdqa %xmm14, %xmm8
6398 ; SSE-NEXT:    pandn %xmm11, %xmm8
6399 ; SSE-NEXT:    movdqa %xmm2, %xmm9
6400 ; SSE-NEXT:    pand %xmm14, %xmm9
6401 ; SSE-NEXT:    por %xmm8, %xmm9
6402 ; SSE-NEXT:    movdqa %xmm9, %xmm8
6403 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3],xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7],xmm12[7]
6404 ; SSE-NEXT:    movdqa %xmm1, %xmm11
6405 ; SSE-NEXT:    pandn %xmm8, %xmm11
6406 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm9 = xmm9[8],xmm12[8],xmm9[9],xmm12[9],xmm9[10],xmm12[10],xmm9[11],xmm12[11],xmm9[12],xmm12[12],xmm9[13],xmm12[13],xmm9[14],xmm12[14],xmm9[15],xmm12[15]
6407 ; SSE-NEXT:    pand %xmm1, %xmm9
6408 ; SSE-NEXT:    por %xmm11, %xmm9
6409 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
6410 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
6411 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm2[0,1,0,3]
6412 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,7,6]
6413 ; SSE-NEXT:    packuswb %xmm8, %xmm8
6414 ; SSE-NEXT:    movdqa %xmm6, %xmm11
6415 ; SSE-NEXT:    pandn %xmm8, %xmm11
6416 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm9[2,1,0,3]
6417 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[0,0,3,2,4,5,6,7]
6418 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,5,5,5]
6419 ; SSE-NEXT:    packuswb %xmm8, %xmm8
6420 ; SSE-NEXT:    pand %xmm6, %xmm8
6421 ; SSE-NEXT:    por %xmm8, %xmm11
6422 ; SSE-NEXT:    movdqa %xmm5, %xmm9
6423 ; SSE-NEXT:    pandn %xmm11, %xmm9
6424 ; SSE-NEXT:    andps %xmm5, %xmm15
6425 ; SSE-NEXT:    por %xmm15, %xmm9
6426 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
6427 ; SSE-NEXT:    pand %xmm10, %xmm8
6428 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
6429 ; SSE-NEXT:    movdqa %xmm8, %xmm11
6430 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8],xmm12[8],xmm11[9],xmm12[9],xmm11[10],xmm12[10],xmm11[11],xmm12[11],xmm11[12],xmm12[12],xmm11[13],xmm12[13],xmm11[14],xmm12[14],xmm11[15],xmm12[15]
6431 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3],xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7],xmm12[7]
6432 ; SSE-NEXT:    pand %xmm0, %xmm8
6433 ; SSE-NEXT:    pandn %xmm11, %xmm0
6434 ; SSE-NEXT:    por %xmm8, %xmm0
6435 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
6436 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,4,7,6]
6437 ; SSE-NEXT:    psrldq {{.*#+}} xmm11 = xmm11[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
6438 ; SSE-NEXT:    packuswb %xmm11, %xmm0
6439 ; SSE-NEXT:    movdqa %xmm10, %xmm2
6440 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
6441 ; SSE-NEXT:    pand %xmm10, %xmm15
6442 ; SSE-NEXT:    pand %xmm10, %xmm4
6443 ; SSE-NEXT:    pand %xmm10, %xmm3
6444 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6445 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6446 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm3[0,2,2,3]
6447 ; SSE-NEXT:    pand %xmm10, %xmm3
6448 ; SSE-NEXT:    movdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6449 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6450 ; SSE-NEXT:    pandn %xmm3, %xmm2
6451 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm3[1,3,2,3]
6452 ; SSE-NEXT:    punpckldq {{.*#+}} xmm8 = xmm8[0],xmm11[0],xmm8[1],xmm11[1]
6453 ; SSE-NEXT:    movdqa %xmm8, %xmm11
6454 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm11 = xmm11[8],xmm12[8],xmm11[9],xmm12[9],xmm11[10],xmm12[10],xmm11[11],xmm12[11],xmm11[12],xmm12[12],xmm11[13],xmm12[13],xmm11[14],xmm12[14],xmm11[15],xmm12[15]
6455 ; SSE-NEXT:    pshufd {{.*#+}} xmm11 = xmm11[2,1,2,3]
6456 ; SSE-NEXT:    pshuflw {{.*#+}} xmm11 = xmm11[0,2,2,3,4,5,6,7]
6457 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3],xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7],xmm12[7]
6458 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[2,1,2,3]
6459 ; SSE-NEXT:    pshuflw {{.*#+}} xmm8 = xmm8[1,3,2,3,4,5,6,7]
6460 ; SSE-NEXT:    punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm11[0],xmm8[1],xmm11[1],xmm8[2],xmm11[2],xmm8[3],xmm11[3]
6461 ; SSE-NEXT:    packuswb %xmm8, %xmm8
6462 ; SSE-NEXT:    movss {{.*#+}} xmm0 = xmm8[0],xmm0[1,2,3]
6463 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
6464 ; SSE-NEXT:    movdqa %xmm14, %xmm3
6465 ; SSE-NEXT:    pand %xmm14, %xmm8
6466 ; SSE-NEXT:    pandn {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
6467 ; SSE-NEXT:    por %xmm8, %xmm3
6468 ; SSE-NEXT:    movdqa %xmm3, %xmm8
6469 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm12[0],xmm8[1],xmm12[1],xmm8[2],xmm12[2],xmm8[3],xmm12[3],xmm8[4],xmm12[4],xmm8[5],xmm12[5],xmm8[6],xmm12[6],xmm8[7],xmm12[7]
6470 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm12[8],xmm3[9],xmm12[9],xmm3[10],xmm12[10],xmm3[11],xmm12[11],xmm3[12],xmm12[12],xmm3[13],xmm12[13],xmm3[14],xmm12[14],xmm3[15],xmm12[15]
6471 ; SSE-NEXT:    pand %xmm1, %xmm3
6472 ; SSE-NEXT:    pandn %xmm8, %xmm1
6473 ; SSE-NEXT:    por %xmm3, %xmm1
6474 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
6475 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Folded Reload
6476 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm3[0,1,0,3]
6477 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,4,7,6]
6478 ; SSE-NEXT:    packuswb %xmm8, %xmm8
6479 ; SSE-NEXT:    movdqa %xmm6, %xmm14
6480 ; SSE-NEXT:    pandn %xmm8, %xmm14
6481 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,1,0,3]
6482 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,0,3,2,4,5,6,7]
6483 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,5,5,5]
6484 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6485 ; SSE-NEXT:    pand %xmm6, %xmm1
6486 ; SSE-NEXT:    por %xmm1, %xmm14
6487 ; SSE-NEXT:    movdqa %xmm5, %xmm11
6488 ; SSE-NEXT:    pandn %xmm14, %xmm11
6489 ; SSE-NEXT:    andps %xmm5, %xmm0
6490 ; SSE-NEXT:    por %xmm0, %xmm11
6491 ; SSE-NEXT:    movdqa %xmm15, %xmm1
6492 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6493 ; SSE-NEXT:    movdqa %xmm1, %xmm0
6494 ; SSE-NEXT:    pxor %xmm3, %xmm3
6495 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
6496 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,6,4,6,7]
6497 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm3[8],xmm1[9],xmm3[9],xmm1[10],xmm3[10],xmm1[11],xmm3[11],xmm1[12],xmm3[12],xmm1[13],xmm3[13],xmm1[14],xmm3[14],xmm1[15],xmm3[15]
6498 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,1]
6499 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,5,7,6,7]
6500 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm0 = xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
6501 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
6502 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm3[8],xmm1[9],xmm3[9],xmm1[10],xmm3[10],xmm1[11],xmm3[11],xmm1[12],xmm3[12],xmm1[13],xmm3[13],xmm1[14],xmm3[14],xmm1[15],xmm3[15]
6503 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
6504 ; SSE-NEXT:    pandn %xmm1, %xmm10
6505 ; SSE-NEXT:    movdqa %xmm1, %xmm8
6506 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
6507 ; SSE-NEXT:    por %xmm10, %xmm1
6508 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,1,3]
6509 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7]
6510 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,2,0]
6511 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,5]
6512 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[3,3,3,3]
6513 ; SSE-NEXT:    packuswb %xmm8, %xmm1
6514 ; SSE-NEXT:    packuswb %xmm0, %xmm0
6515 ; SSE-NEXT:    movss {{.*#+}} xmm1 = xmm0[0],xmm1[1,2,3]
6516 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6517 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
6518 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,3]
6519 ; SSE-NEXT:    pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,4,7]
6520 ; SSE-NEXT:    packuswb %xmm0, %xmm0
6521 ; SSE-NEXT:    movdqa %xmm6, %xmm8
6522 ; SSE-NEXT:    pandn %xmm0, %xmm8
6523 ; SSE-NEXT:    pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
6524 ; SSE-NEXT:    # xmm0 = mem[1,3,2,3]
6525 ; SSE-NEXT:    pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload
6526 ; SSE-NEXT:    # xmm14 = mem[0,2,2,3]
6527 ; SSE-NEXT:    punpckldq {{.*#+}} xmm14 = xmm14[0],xmm0[0],xmm14[1],xmm0[1]
6528 ; SSE-NEXT:    movdqa %xmm14, %xmm0
6529 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
6530 ; SSE-NEXT:    movdqa {{.*#+}} xmm10 = [65535,65535,65535,0,65535,0,65535,65535]
6531 ; SSE-NEXT:    movdqa %xmm10, %xmm15
6532 ; SSE-NEXT:    pandn %xmm0, %xmm15
6533 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm14 = xmm14[8],xmm3[8],xmm14[9],xmm3[9],xmm14[10],xmm3[10],xmm14[11],xmm3[11],xmm14[12],xmm3[12],xmm14[13],xmm3[13],xmm14[14],xmm3[14],xmm14[15],xmm3[15]
6534 ; SSE-NEXT:    pand %xmm10, %xmm14
6535 ; SSE-NEXT:    por %xmm15, %xmm14
6536 ; SSE-NEXT:    pshufd {{.*#+}} xmm0 = xmm14[2,1,1,1]
6537 ; SSE-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,1,0,3,4,5,6,7]
6538 ; SSE-NEXT:    packuswb %xmm0, %xmm14
6539 ; SSE-NEXT:    pand %xmm6, %xmm14
6540 ; SSE-NEXT:    por %xmm8, %xmm14
6541 ; SSE-NEXT:    movdqa %xmm5, %xmm3
6542 ; SSE-NEXT:    pandn %xmm14, %xmm3
6543 ; SSE-NEXT:    andps %xmm5, %xmm1
6544 ; SSE-NEXT:    por %xmm1, %xmm3
6545 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Folded Reload
6546 ; SSE-NEXT:    movdqa %xmm4, %xmm1
6547 ; SSE-NEXT:    pxor %xmm0, %xmm0
6548 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
6549 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,4,6,7]
6550 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm0[8],xmm4[9],xmm0[9],xmm4[10],xmm0[10],xmm4[11],xmm0[11],xmm4[12],xmm0[12],xmm4[13],xmm0[13],xmm4[14],xmm0[14],xmm4[15],xmm0[15]
6551 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm4[0,1,2,1]
6552 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,7,6,7]
6553 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
6554 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
6555 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm4 = xmm4[8],xmm0[8],xmm4[9],xmm0[9],xmm4[10],xmm0[10],xmm4[11],xmm0[11],xmm4[12],xmm0[12],xmm4[13],xmm0[13],xmm4[14],xmm0[14],xmm4[15],xmm0[15]
6556 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
6557 ; SSE-NEXT:    pandn %xmm4, %xmm12
6558 ; SSE-NEXT:    movdqa (%rsp), %xmm8 # 16-byte Reload
6559 ; SSE-NEXT:    por %xmm12, %xmm8
6560 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,2,1,3]
6561 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,7,6,7]
6562 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,1,2,0]
6563 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,7,6,5]
6564 ; SSE-NEXT:    pshufd {{.*#+}} xmm12 = xmm4[3,3,3,3]
6565 ; SSE-NEXT:    packuswb %xmm12, %xmm8
6566 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6567 ; SSE-NEXT:    movss {{.*#+}} xmm8 = xmm1[0],xmm8[1,2,3]
6568 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
6569 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6570 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]
6571 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
6572 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6573 ; SSE-NEXT:    movdqa %xmm6, %xmm12
6574 ; SSE-NEXT:    pandn %xmm1, %xmm12
6575 ; SSE-NEXT:    pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6576 ; SSE-NEXT:    # xmm1 = mem[1,3,2,3]
6577 ; SSE-NEXT:    pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload
6578 ; SSE-NEXT:    # xmm14 = mem[0,2,2,3]
6579 ; SSE-NEXT:    punpckldq {{.*#+}} xmm14 = xmm14[0],xmm1[0],xmm14[1],xmm1[1]
6580 ; SSE-NEXT:    movdqa %xmm14, %xmm1
6581 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
6582 ; SSE-NEXT:    movdqa %xmm10, %xmm15
6583 ; SSE-NEXT:    pandn %xmm1, %xmm15
6584 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm14 = xmm14[8],xmm0[8],xmm14[9],xmm0[9],xmm14[10],xmm0[10],xmm14[11],xmm0[11],xmm14[12],xmm0[12],xmm14[13],xmm0[13],xmm14[14],xmm0[14],xmm14[15],xmm0[15]
6585 ; SSE-NEXT:    pand %xmm10, %xmm14
6586 ; SSE-NEXT:    por %xmm15, %xmm14
6587 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm14[2,1,1,1]
6588 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]
6589 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6590 ; SSE-NEXT:    pand %xmm6, %xmm1
6591 ; SSE-NEXT:    por %xmm12, %xmm1
6592 ; SSE-NEXT:    movdqa %xmm5, %xmm12
6593 ; SSE-NEXT:    pandn %xmm1, %xmm12
6594 ; SSE-NEXT:    andps %xmm5, %xmm8
6595 ; SSE-NEXT:    movdqa %xmm5, %xmm4
6596 ; SSE-NEXT:    por %xmm8, %xmm12
6597 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6598 ; SSE-NEXT:    por %xmm13, %xmm0
6599 ; SSE-NEXT:    movdqa %xmm0, %xmm1
6600 ; SSE-NEXT:    pxor %xmm13, %xmm13
6601 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm13[0],xmm1[1],xmm13[1],xmm1[2],xmm13[2],xmm1[3],xmm13[3],xmm1[4],xmm13[4],xmm1[5],xmm13[5],xmm1[6],xmm13[6],xmm1[7],xmm13[7]
6602 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,4,6,7]
6603 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm13[8],xmm0[9],xmm13[9],xmm0[10],xmm13[10],xmm0[11],xmm13[11],xmm0[12],xmm13[12],xmm0[13],xmm13[13],xmm0[14],xmm13[14],xmm0[15],xmm13[15]
6604 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm0[0,1,2,1]
6605 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,7,6,7]
6606 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
6607 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
6608 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm5 = xmm5[8],xmm13[8],xmm5[9],xmm13[9],xmm5[10],xmm13[10],xmm5[11],xmm13[11],xmm5[12],xmm13[12],xmm5[13],xmm13[13],xmm5[14],xmm13[14],xmm5[15],xmm13[15]
6609 ; SSE-NEXT:    pxor %xmm0, %xmm0
6610 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
6611 ; SSE-NEXT:    pandn %xmm5, %xmm13
6612 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
6613 ; SSE-NEXT:    por %xmm13, %xmm8
6614 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,2,1,3]
6615 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,7,6,7]
6616 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,1,2,0]
6617 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,7,6,5]
6618 ; SSE-NEXT:    pshufd {{.*#+}} xmm13 = xmm5[3,3,3,3]
6619 ; SSE-NEXT:    packuswb %xmm13, %xmm8
6620 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6621 ; SSE-NEXT:    movss {{.*#+}} xmm8 = xmm1[0],xmm8[1,2,3]
6622 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
6623 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6624 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,3]
6625 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,4,7]
6626 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6627 ; SSE-NEXT:    movdqa %xmm6, %xmm13
6628 ; SSE-NEXT:    pandn %xmm1, %xmm13
6629 ; SSE-NEXT:    pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6630 ; SSE-NEXT:    # xmm1 = mem[1,3,2,3]
6631 ; SSE-NEXT:    pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Folded Reload
6632 ; SSE-NEXT:    # xmm14 = mem[0,2,2,3]
6633 ; SSE-NEXT:    punpckldq {{.*#+}} xmm14 = xmm14[0],xmm1[0],xmm14[1],xmm1[1]
6634 ; SSE-NEXT:    movdqa %xmm14, %xmm1
6635 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
6636 ; SSE-NEXT:    movdqa %xmm10, %xmm15
6637 ; SSE-NEXT:    pandn %xmm1, %xmm15
6638 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm14 = xmm14[8],xmm0[8],xmm14[9],xmm0[9],xmm14[10],xmm0[10],xmm14[11],xmm0[11],xmm14[12],xmm0[12],xmm14[13],xmm0[13],xmm14[14],xmm0[14],xmm14[15],xmm0[15]
6639 ; SSE-NEXT:    pand %xmm10, %xmm14
6640 ; SSE-NEXT:    por %xmm15, %xmm14
6641 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm14[2,1,1,1]
6642 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]
6643 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6644 ; SSE-NEXT:    pand %xmm6, %xmm1
6645 ; SSE-NEXT:    por %xmm13, %xmm1
6646 ; SSE-NEXT:    movdqa %xmm4, %xmm0
6647 ; SSE-NEXT:    movdqa %xmm4, %xmm13
6648 ; SSE-NEXT:    pandn %xmm1, %xmm13
6649 ; SSE-NEXT:    andps %xmm4, %xmm8
6650 ; SSE-NEXT:    por %xmm8, %xmm13
6651 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
6652 ; SSE-NEXT:    movdqa %xmm2, %xmm1
6653 ; SSE-NEXT:    pxor %xmm14, %xmm14
6654 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm14[0],xmm1[1],xmm14[1],xmm1[2],xmm14[2],xmm1[3],xmm14[3],xmm1[4],xmm14[4],xmm1[5],xmm14[5],xmm1[6],xmm14[6],xmm1[7],xmm14[7]
6655 ; SSE-NEXT:    pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,6,4,6,7]
6656 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm14[8],xmm2[9],xmm14[9],xmm2[10],xmm14[10],xmm2[11],xmm14[11],xmm2[12],xmm14[12],xmm2[13],xmm14[13],xmm2[14],xmm14[14],xmm2[15],xmm14[15]
6657 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm2[0,1,2,1]
6658 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,5,7,6,7]
6659 ; SSE-NEXT:    punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm8[4],xmm1[5],xmm8[5],xmm1[6],xmm8[6],xmm1[7],xmm8[7]
6660 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
6661 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm14[8],xmm2[9],xmm14[9],xmm2[10],xmm14[10],xmm2[11],xmm14[11],xmm2[12],xmm14[12],xmm2[13],xmm14[13],xmm2[14],xmm14[14],xmm2[15],xmm14[15]
6662 ; SSE-NEXT:    pxor %xmm15, %xmm15
6663 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
6664 ; SSE-NEXT:    pandn %xmm2, %xmm5
6665 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
6666 ; SSE-NEXT:    por %xmm5, %xmm4
6667 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm4[0,2,1,3]
6668 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,7,6,7]
6669 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm8[0,1,2,0]
6670 ; SSE-NEXT:    pshufhw {{.*#+}} xmm14 = xmm8[0,1,2,3,4,7,6,5]
6671 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm2[3,3,3,3]
6672 ; SSE-NEXT:    packuswb %xmm8, %xmm14
6673 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6674 ; SSE-NEXT:    movss {{.*#+}} xmm14 = xmm1[0],xmm14[1,2,3]
6675 ; SSE-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
6676 ; SSE-NEXT:    por {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload
6677 ; SSE-NEXT:    pshufd $237, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
6678 ; SSE-NEXT:    # xmm1 = mem[1,3,2,3]
6679 ; SSE-NEXT:    pshufd $232, {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Folded Reload
6680 ; SSE-NEXT:    # xmm8 = mem[0,2,2,3]
6681 ; SSE-NEXT:    punpckldq {{.*#+}} xmm8 = xmm8[0],xmm1[0],xmm8[1],xmm1[1]
6682 ; SSE-NEXT:    movdqa %xmm8, %xmm1
6683 ; SSE-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm15[0],xmm1[1],xmm15[1],xmm1[2],xmm15[2],xmm1[3],xmm15[3],xmm1[4],xmm15[4],xmm1[5],xmm15[5],xmm1[6],xmm15[6],xmm1[7],xmm15[7]
6684 ; SSE-NEXT:    punpckhbw {{.*#+}} xmm8 = xmm8[8],xmm15[8],xmm8[9],xmm15[9],xmm8[10],xmm15[10],xmm8[11],xmm15[11],xmm8[12],xmm15[12],xmm8[13],xmm15[13],xmm8[14],xmm15[14],xmm8[15],xmm15[15]
6685 ; SSE-NEXT:    pand %xmm10, %xmm8
6686 ; SSE-NEXT:    pandn %xmm1, %xmm10
6687 ; SSE-NEXT:    por %xmm8, %xmm10
6688 ; SSE-NEXT:    pshufd {{.*#+}} xmm1 = xmm10[2,1,1,1]
6689 ; SSE-NEXT:    pshuflw {{.*#+}} xmm1 = xmm1[0,1,0,3,4,5,6,7]
6690 ; SSE-NEXT:    packuswb %xmm1, %xmm1
6691 ; SSE-NEXT:    pand %xmm6, %xmm1
6692 ; SSE-NEXT:    pshufd {{.*#+}} xmm8 = xmm2[0,1,0,3]
6693 ; SSE-NEXT:    pshufhw {{.*#+}} xmm8 = xmm8[0,1,2,3,4,5,4,7]
6694 ; SSE-NEXT:    packuswb %xmm8, %xmm8
6695 ; SSE-NEXT:    pandn %xmm8, %xmm6
6696 ; SSE-NEXT:    por %xmm6, %xmm1
6697 ; SSE-NEXT:    andps %xmm0, %xmm14
6698 ; SSE-NEXT:    pandn %xmm1, %xmm0
6699 ; SSE-NEXT:    por %xmm14, %xmm0
6700 ; SSE-NEXT:    movdqa %xmm0, %xmm1
6701 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6702 ; SSE-NEXT:    movaps %xmm0, (%rsi)
6703 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6704 ; SSE-NEXT:    movaps %xmm0, 48(%rsi)
6705 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6706 ; SSE-NEXT:    movaps %xmm0, 32(%rsi)
6707 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6708 ; SSE-NEXT:    movaps %xmm0, 16(%rsi)
6709 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6710 ; SSE-NEXT:    movaps %xmm0, (%rdx)
6711 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6712 ; SSE-NEXT:    movaps %xmm0, 48(%rdx)
6713 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6714 ; SSE-NEXT:    movaps %xmm0, 32(%rdx)
6715 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6716 ; SSE-NEXT:    movaps %xmm0, 16(%rdx)
6717 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6718 ; SSE-NEXT:    movaps %xmm0, (%rcx)
6719 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6720 ; SSE-NEXT:    movaps %xmm0, 48(%rcx)
6721 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6722 ; SSE-NEXT:    movaps %xmm0, 32(%rcx)
6723 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6724 ; SSE-NEXT:    movaps %xmm0, 16(%rcx)
6725 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6726 ; SSE-NEXT:    movaps %xmm0, (%r8)
6727 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6728 ; SSE-NEXT:    movaps %xmm0, 48(%r8)
6729 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6730 ; SSE-NEXT:    movaps %xmm0, 32(%r8)
6731 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6732 ; SSE-NEXT:    movaps %xmm0, 16(%r8)
6733 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6734 ; SSE-NEXT:    movaps %xmm0, (%r9)
6735 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6736 ; SSE-NEXT:    movaps %xmm0, 48(%r9)
6737 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6738 ; SSE-NEXT:    movaps %xmm0, 32(%r9)
6739 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6740 ; SSE-NEXT:    movaps %xmm0, 16(%r9)
6741 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
6742 ; SSE-NEXT:    movdqa %xmm11, (%rax)
6743 ; SSE-NEXT:    movdqa %xmm9, 48(%rax)
6744 ; SSE-NEXT:    movdqa %xmm7, 32(%rax)
6745 ; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6746 ; SSE-NEXT:    movaps %xmm0, 16(%rax)
6747 ; SSE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
6748 ; SSE-NEXT:    movdqa %xmm1, (%rax)
6749 ; SSE-NEXT:    movdqa %xmm13, 48(%rax)
6750 ; SSE-NEXT:    movdqa %xmm12, 32(%rax)
6751 ; SSE-NEXT:    movdqa %xmm3, 16(%rax)
6752 ; SSE-NEXT:    addq $1528, %rsp # imm = 0x5F8
6753 ; SSE-NEXT:    retq
6755 ; AVX1-ONLY-LABEL: load_i8_stride7_vf64:
6756 ; AVX1-ONLY:       # %bb.0:
6757 ; AVX1-ONLY-NEXT:    subq $744, %rsp # imm = 0x2E8
6758 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [128,128,6,13,0,0,0,128,128,128,6,13,0,0,0,128]
6759 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
6760 ; AVX1-ONLY-NEXT:    vmovdqa 16(%rdi), %xmm3
6761 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6762 ; AVX1-ONLY-NEXT:    vmovdqa 176(%rdi), %xmm2
6763 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm2, %xmm1
6764 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm10
6765 ; AVX1-ONLY-NEXT:    vmovdqa 48(%rdi), %xmm8
6766 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6767 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [128,128,128,5,12,0,0,0,128,128,128,5,12,0,0,0]
6768 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
6769 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm3, %xmm4
6770 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [0,7,14,128,128,0,0,0,0,7,14,128,128,0,0,0]
6771 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
6772 ; AVX1-ONLY-NEXT:    vmovdqa (%rdi), %xmm5
6773 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6774 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm5, %xmm5
6775 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm5, %xmm7
6776 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [128,128,0,0,0,3,10,128,128,128,0,0,0,3,10,128]
6777 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
6778 ; AVX1-ONLY-NEXT:    vmovdqa 32(%rdi), %xmm5
6779 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6780 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm5, %xmm6
6781 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = [8,15,0,0,0,128,128,1,8,15,0,0,0,128,128,1]
6782 ; AVX1-ONLY-NEXT:    # xmm5 = mem[0,0]
6783 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm8, %xmm8
6784 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm8, %xmm8
6785 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm6 = <255,255,255,255,255,0,0,0,0,0,u,u,u,u,u,u>
6786 ; AVX1-ONLY-NEXT:    vpblendvb %xmm6, %xmm7, %xmm8, %xmm7
6787 ; AVX1-ONLY-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
6788 ; AVX1-ONLY-NEXT:    vmovdqa 240(%rdi), %xmm7
6789 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6790 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm7, %xmm2
6791 ; AVX1-ONLY-NEXT:    vmovdqa 224(%rdi), %xmm7
6792 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6793 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm7, %xmm3
6794 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
6795 ; AVX1-ONLY-NEXT:    vmovdqa 256(%rdi), %xmm3
6796 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6797 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm3, %xmm3
6798 ; AVX1-ONLY-NEXT:    vmovdqa 272(%rdi), %xmm4
6799 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6800 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
6801 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
6802 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [8,15,128,128,0,0,0,1,8,15,128,128,0,0,0,1]
6803 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
6804 ; AVX1-ONLY-NEXT:    vpblendvb %xmm6, %xmm2, %xmm3, %xmm2
6805 ; AVX1-ONLY-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
6806 ; AVX1-ONLY-NEXT:    vmovdqa 160(%rdi), %xmm3
6807 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm3, %xmm2
6808 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm7
6809 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm2
6810 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm3 = [128,3,10,128,128,3,10,128,128,3,10,128,128,3,10,128]
6811 ; AVX1-ONLY-NEXT:    vmovdqa 144(%rdi), %xmm5
6812 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm5, %xmm1
6813 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm12
6814 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm5 = [12,128,128,5,12,128,128,5,12,128,128,5,12,128,128,5]
6815 ; AVX1-ONLY-NEXT:    vmovdqa 128(%rdi), %xmm6
6816 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm6, %xmm9
6817 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, %xmm14
6818 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm9, %xmm9
6819 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm15 = <u,u,u,0,0,0,0,255,255,255,255,255,u,u,u,u>
6820 ; AVX1-ONLY-NEXT:    vpblendvb %xmm15, %xmm2, %xmm9, %xmm2
6821 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6822 ; AVX1-ONLY-NEXT:    vmovdqa 400(%rdi), %xmm2
6823 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm2, %xmm0
6824 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm9
6825 ; AVX1-ONLY-NEXT:    vmovdqa 384(%rdi), %xmm6
6826 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm6, %xmm2
6827 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm0
6828 ; AVX1-ONLY-NEXT:    vmovdqa 368(%rdi), %xmm8
6829 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm8, %xmm2
6830 ; AVX1-ONLY-NEXT:    vmovdqa 352(%rdi), %xmm11
6831 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm11, %xmm3
6832 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
6833 ; AVX1-ONLY-NEXT:    vpblendvb %xmm15, %xmm0, %xmm2, %xmm0
6834 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6835 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [9,128,128,128,0,0,0,2,9,128,128,128,0,0,0,2]
6836 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
6837 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm7, %xmm3
6838 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, %xmm1
6839 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6840 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [128,0,7,14,0,0,0,128,128,0,7,14,0,0,0,128]
6841 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
6842 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6843 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm10, %xmm4
6844 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm5
6845 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm3 = [128,4,11,128,128,4,11,128,128,4,11,128,128,4,11,128]
6846 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm12, %xmm13
6847 ; AVX1-ONLY-NEXT:    vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6848 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [13,128,128,6,13,128,128,6,13,128,128,6,13,128,128,6]
6849 ; AVX1-ONLY-NEXT:    vmovdqa %xmm14, %xmm7
6850 ; AVX1-ONLY-NEXT:    vmovdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6851 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm14, %xmm14
6852 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm14, %xmm13
6853 ; AVX1-ONLY-NEXT:    vpblendvb %xmm15, %xmm5, %xmm13, %xmm5
6854 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6855 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, (%rsp) # 16-byte Spill
6856 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm6, %xmm0
6857 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6858 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm9, %xmm2
6859 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm0
6860 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6861 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm8, %xmm2
6862 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6863 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm11, %xmm3
6864 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
6865 ; AVX1-ONLY-NEXT:    vpblendvb %xmm15, %xmm0, %xmm2, %xmm0
6866 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6867 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [0,0,128,128,128,5,12,0,0,0,128,128,128,5,12,0]
6868 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
6869 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm12, %xmm2
6870 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm12 = [0,0,0,7,14,128,128,0,0,0,0,7,14,128,128,0]
6871 ; AVX1-ONLY-NEXT:    # xmm12 = mem[0,0]
6872 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm7, %xmm3
6873 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm5
6874 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [10,128,128,128,0,0,0,3,10,128,128,128,0,0,0,3]
6875 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
6876 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm1, %xmm4
6877 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [128,1,8,15,0,0,0,128,128,1,8,15,0,0,0,128]
6878 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
6879 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm10, %xmm13
6880 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm13, %xmm13
6881 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm4 = <u,u,255,255,255,255,255,0,0,0,0,0,u,u,u,u>
6882 ; AVX1-ONLY-NEXT:    vpblendvb %xmm4, %xmm5, %xmm13, %xmm5
6883 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6884 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm8, %xmm0
6885 ; AVX1-ONLY-NEXT:    vpshufb %xmm12, %xmm11, %xmm1
6886 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
6887 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm6, %xmm1
6888 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm9, %xmm2
6889 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
6890 ; AVX1-ONLY-NEXT:    vpblendvb %xmm4, %xmm0, %xmm1, %xmm0
6891 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6892 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm14 = [128,128,128,6,13,0,0,0,128,128,128,6,13,0,0,0]
6893 ; AVX1-ONLY-NEXT:    # xmm14 = mem[0,0]
6894 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
6895 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm11, %xmm0
6896 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [1,8,15,128,128,0,0,0,1,8,15,128,128,0,0,0]
6897 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
6898 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
6899 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm10, %xmm3
6900 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm3, %xmm3
6901 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [9,128,128,2,9,128,128,2,9,128,128,2,9,128,128,2]
6902 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
6903 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm15, %xmm0
6904 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm5 = [128,4,11,128,128,4,11,128,128,4,11,128,128,4,11,128]
6905 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
6906 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm7, %xmm13
6907 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm13, %xmm13
6908 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm9 = <255,255,255,255,255,0,0,0,0,u,u,u,u,u,u,u>
6909 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm3, %xmm13, %xmm0
6910 ; AVX1-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
6911 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
6912 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm1, %xmm0
6913 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
6914 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm13, %xmm2
6915 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm2, %xmm14
6916 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
6917 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm8, %xmm2
6918 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
6919 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm0, %xmm3
6920 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
6921 ; AVX1-ONLY-NEXT:    vpblendvb %xmm9, %xmm14, %xmm2, %xmm2
6922 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, %xmm12
6923 ; AVX1-ONLY-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
6924 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm9 = [2,9,128,128,128,0,0,0,2,9,128,128,128,0,0,0]
6925 ; AVX1-ONLY-NEXT:    # xmm9 = mem[0,0]
6926 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm10, %xmm2
6927 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [128,128,0,7,14,0,0,0,128,128,0,7,14,0,0,0]
6928 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
6929 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm11, %xmm4
6930 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm4, %xmm2
6931 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [10,128,128,3,10,128,128,3,10,128,128,3,10,128,128,3]
6932 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm15, %xmm5
6933 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm6 = [128,5,12,128,128,5,12,128,128,5,12,128,128,5,12,128]
6934 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm7, %xmm14
6935 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm14, %xmm5
6936 ; AVX1-ONLY-NEXT:    vmovdqa %xmm12, %xmm14
6937 ; AVX1-ONLY-NEXT:    vpblendvb %xmm12, %xmm2, %xmm5, %xmm2
6938 ; AVX1-ONLY-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
6939 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm13, %xmm5
6940 ; AVX1-ONLY-NEXT:    vmovdqa %xmm13, %xmm9
6941 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm1, %xmm2
6942 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, %xmm12
6943 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm2, %xmm1
6944 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm8, %xmm2
6945 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm0, %xmm3
6946 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
6947 ; AVX1-ONLY-NEXT:    vpblendvb %xmm14, %xmm1, %xmm2, %xmm1
6948 ; AVX1-ONLY-NEXT:    vmovdqa %xmm14, %xmm6
6949 ; AVX1-ONLY-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
6950 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [3,10,128,128,128,0,0,0,3,10,128,128,128,0,0,0]
6951 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
6952 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm10, %xmm3
6953 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [128,128,1,8,15,0,0,0,128,128,1,8,15,0,0,0]
6954 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
6955 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm11, %xmm4
6956 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm5
6957 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm3 = [11,128,128,4,11,128,128,4,11,128,128,4,11,128,128,4]
6958 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm15, %xmm13
6959 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [128,6,13,128,128,6,13,128,128,6,13,128,128,6,13,128]
6960 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm7, %xmm14
6961 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm14, %xmm13
6962 ; AVX1-ONLY-NEXT:    vpblendvb %xmm6, %xmm5, %xmm13, %xmm5
6963 ; AVX1-ONLY-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
6964 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm9, %xmm1
6965 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm12, %xmm2
6966 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
6967 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm8, %xmm2
6968 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm0, %xmm3
6969 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm3, %xmm2
6970 ; AVX1-ONLY-NEXT:    vpblendvb %xmm6, %xmm1, %xmm2, %xmm0
6971 ; AVX1-ONLY-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
6972 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [0,0,128,128,128,6,13,0,0,0,128,128,128,6,13,0]
6973 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
6974 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
6975 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm11, %xmm1
6976 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [0,0,1,8,15,128,128,0,0,0,1,8,15,128,128,0]
6977 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
6978 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
6979 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm14, %xmm2
6980 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
6981 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [128,2,9,128,128,2,9,128,128,2,9,128,128,2,9,128]
6982 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
6983 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm8, %xmm2
6984 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm5 = [11,128,128,4,11,128,128,4,11,128,128,4,11,128,128,4]
6985 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
6986 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm12, %xmm13
6987 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm13, %xmm13
6988 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm2 = <u,u,255,255,255,255,255,0,0,0,0,u,u,u,u,u>
6989 ; AVX1-ONLY-NEXT:    vpblendvb %xmm2, %xmm1, %xmm13, %xmm1
6990 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
6991 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
6992 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm7, %xmm0
6993 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
6994 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm10, %xmm1
6995 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
6996 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
6997 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm9, %xmm1
6998 ; AVX1-ONLY-NEXT:    vmovdqa (%rsp), %xmm6 # 16-byte Reload
6999 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm6, %xmm3
7000 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm3, %xmm1
7001 ; AVX1-ONLY-NEXT:    vpblendvb %xmm2, %xmm0, %xmm1, %xmm0
7002 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7003 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [0,0,2,9,128,128,128,0,0,0,2,9,128,128,128,0]
7004 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
7005 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm14, %xmm0
7006 ; AVX1-ONLY-NEXT:    vmovdqa %xmm14, %xmm15
7007 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [0,0,128,128,0,7,14,0,0,0,128,128,0,7,14,0]
7008 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
7009 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm11, %xmm4
7010 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm4, %xmm5
7011 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm4 = [128,3,10,128,128,3,10,128,128,3,10,128,128,3,10,128]
7012 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm8, %xmm13
7013 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, %xmm11
7014 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm0 = [12,128,128,5,12,128,128,5,12,128,128,5,12,128,128,5]
7015 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm12, %xmm14
7016 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm14, %xmm13
7017 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm8
7018 ; AVX1-ONLY-NEXT:    vpblendvb %xmm2, %xmm5, %xmm13, %xmm2
7019 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7020 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm10, %xmm1
7021 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, %xmm2
7022 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm7, %xmm3
7023 ; AVX1-ONLY-NEXT:    vmovdqa %xmm7, %xmm10
7024 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm3, %xmm1
7025 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm9, %xmm3
7026 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm6, %xmm0
7027 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm0, %xmm0
7028 ; AVX1-ONLY-NEXT:    vpblendvb %xmm8, %xmm1, %xmm0, %xmm14
7029 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [0,0,3,10,128,128,128,0,0,0,3,10,128,128,128,0]
7030 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
7031 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm15, %xmm0
7032 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [0,0,128,128,1,8,15,0,0,0,128,128,1,8,15,0]
7033 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
7034 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
7035 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm7, %xmm4
7036 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm4, %xmm4
7037 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm13 = [128,4,11,128,128,4,11,128,128,4,11,128,128,4,11,128]
7038 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm11, %xmm5
7039 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm0 = [13,128,128,6,13,128,128,6,13,128,128,6,13,128,128,6]
7040 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm12, %xmm11
7041 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm11, %xmm5
7042 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, %xmm11
7043 ; AVX1-ONLY-NEXT:    vpblendvb %xmm8, %xmm4, %xmm5, %xmm8
7044 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm2, %xmm1
7045 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm10, %xmm3
7046 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm3, %xmm1
7047 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm9, %xmm3
7048 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm6, %xmm0
7049 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, %xmm9
7050 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm0, %xmm0
7051 ; AVX1-ONLY-NEXT:    vpblendvb %xmm11, %xmm1, %xmm0, %xmm2
7052 ; AVX1-ONLY-NEXT:    vmovdqa 208(%rdi), %xmm1
7053 ; AVX1-ONLY-NEXT:    vmovdqa 192(%rdi), %xmm0
7054 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [0,0,0,128,128,128,5,12,0,0,0,128,128,128,5,12]
7055 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
7056 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm1, %xmm4
7057 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, %xmm6
7058 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm11 = [0,0,0,0,7,14,128,128,0,0,0,0,7,14,128,128]
7059 ; AVX1-ONLY-NEXT:    # xmm11 = mem[0,0]
7060 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm0, %xmm13
7061 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, %xmm5
7062 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm13, %xmm4
7063 ; AVX1-ONLY-NEXT:    vmovdqa {{.*#+}} xmm13 = <u,u,255,255,255,255,255,255,255,255,255,0,0,0,0,0>
7064 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, {{[-0-9]+}}(%r{{[sb]}}p), %xmm4, %xmm0 # 16-byte Folded Reload
7065 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7066 ; AVX1-ONLY-NEXT:    vmovdqa 432(%rdi), %xmm1
7067 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm1, %xmm0
7068 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, %xmm4
7069 ; AVX1-ONLY-NEXT:    vmovdqa 416(%rdi), %xmm3
7070 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm3, %xmm11
7071 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm11, %xmm0
7072 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload
7073 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7074 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [0,0,0,128,128,128,6,13,0,0,0,128,128,128,6,13]
7075 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
7076 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm6, %xmm11
7077 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [0,0,0,1,8,15,128,128,0,0,0,1,8,15,128,128]
7078 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
7079 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm5, %xmm15
7080 ; AVX1-ONLY-NEXT:    vpor %xmm11, %xmm15, %xmm11
7081 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, {{[-0-9]+}}(%r{{[sb]}}p), %xmm11, %xmm10 # 16-byte Folded Reload
7082 ; AVX1-ONLY-NEXT:    vmovdqa %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7083 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm4, %xmm1
7084 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm3, %xmm0
7085 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm0, %xmm0
7086 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, %xmm14, %xmm0, %xmm0
7087 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7088 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [0,0,0,2,9,128,128,128,0,0,0,2,9,128,128,128]
7089 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
7090 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm5, %xmm1
7091 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm11 = [0,0,0,128,128,0,7,14,0,0,0,128,128,0,7,14]
7092 ; AVX1-ONLY-NEXT:    # xmm11 = mem[0,0]
7093 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm6, %xmm14
7094 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm14, %xmm1
7095 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, %xmm8, %xmm1, %xmm1
7096 ; AVX1-ONLY-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7097 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm3, %xmm0
7098 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm4, %xmm1
7099 ; AVX1-ONLY-NEXT:    vpor %xmm0, %xmm1, %xmm0
7100 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, %xmm2, %xmm0, %xmm0
7101 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7102 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm0 = [2,9,0,0,2,9,0,0,2,9,0,0,2,9,0,0]
7103 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm7, %xmm1
7104 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, %xmm14
7105 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm0 = [0,0,4,11,0,0,4,11,0,0,4,11,0,0,4,11]
7106 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
7107 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm2, %xmm2
7108 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
7109 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm1 = [128,5,12,0,0,0,128,128,128,5,12,0,0,0,128,128]
7110 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,0]
7111 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
7112 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm2, %xmm8
7113 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [14,128,128,0,0,0,0,7,14,128,128,0,0,0,0,7]
7114 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
7115 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm12, %xmm10
7116 ; AVX1-ONLY-NEXT:    vpor %xmm8, %xmm10, %xmm8
7117 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm8 = xmm8[0],xmm7[1,2],xmm8[3,4,5,6,7]
7118 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = [0,0,0,3,10,128,128,128,0,0,0,3,10,128,128,128]
7119 ; AVX1-ONLY-NEXT:    # xmm7 = mem[0,0]
7120 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm5, %xmm10
7121 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7122 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm11 = [0,0,0,128,128,1,8,15,0,0,0,128,128,1,8,15]
7123 ; AVX1-ONLY-NEXT:    # xmm11 = mem[0,0]
7124 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm6, %xmm12
7125 ; AVX1-ONLY-NEXT:    vpor %xmm10, %xmm12, %xmm10
7126 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, %xmm8, %xmm10, %xmm8
7127 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7128 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
7129 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm8, %xmm0
7130 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
7131 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm8, %xmm8
7132 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1]
7133 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
7134 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm8, %xmm1
7135 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm9, %xmm2
7136 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
7137 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2],xmm1[3,4,5,6,7]
7138 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm3, %xmm1
7139 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, %xmm8
7140 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7141 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm4, %xmm2
7142 ; AVX1-ONLY-NEXT:    vpor %xmm1, %xmm2, %xmm1
7143 ; AVX1-ONLY-NEXT:    vpblendvb %xmm13, %xmm0, %xmm1, %xmm0
7144 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, (%rsp) # 16-byte Spill
7145 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm14 = [0,0,2,9,0,0,2,9,0,0,2,9,0,0,2,9]
7146 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, %xmm13
7147 ; AVX1-ONLY-NEXT:    vmovdqa %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7148 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm6, %xmm1
7149 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm0 = [0,0,4,11,0,0,4,11,0,0,4,11,0,0,4,11]
7150 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm5, %xmm2
7151 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, %xmm5
7152 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
7153 ; AVX1-ONLY-NEXT:    vpblendw $63, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
7154 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,1,2,3,4,5],xmm1[6,7]
7155 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm15 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
7156 ; AVX1-ONLY-NEXT:    vmovdqa 80(%rdi), %xmm4
7157 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm4, %xmm7
7158 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7159 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm2 = [0,0,6,13,0,0,6,13,0,0,6,13,0,0,6,13]
7160 ; AVX1-ONLY-NEXT:    vmovdqa 64(%rdi), %xmm0
7161 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7162 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm0, %xmm10
7163 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, %xmm6
7164 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm7 = xmm10[0],xmm7[0],xmm10[1],xmm7[1]
7165 ; AVX1-ONLY-NEXT:    vmovdqa 96(%rdi), %xmm0
7166 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7167 ; AVX1-ONLY-NEXT:    vpalignr {{.*#+}} xmm7 = xmm7[10,11,12,13,14,15],xmm0[0,1,2,3,4,5,6,7,8,9]
7168 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm11 = [0,0,0,1,2,3,8,15,0,0,0,1,2,3,8,15]
7169 ; AVX1-ONLY-NEXT:    # xmm11 = mem[0,0]
7170 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm7, %xmm10
7171 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm0 = [0,7,14,0,0,7,14,0,0,7,14,0,0,7,14,0]
7172 ; AVX1-ONLY-NEXT:    vmovdqa 112(%rdi), %xmm2
7173 ; AVX1-ONLY-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7174 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm2, %xmm12
7175 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm12, %ymm10, %ymm10
7176 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm2 = [65535,65535,65535,65535,65535,0,0,0,0,0,65535,65535,65535,65535,65535,65535]
7177 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm12 # 32-byte Folded Reload
7178 ; AVX1-ONLY-NEXT:    vandnps %ymm10, %ymm2, %ymm10
7179 ; AVX1-ONLY-NEXT:    vorps %ymm10, %ymm12, %ymm10
7180 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm1
7181 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm12 = [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]
7182 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm12, %ymm1
7183 ; AVX1-ONLY-NEXT:    vandps %ymm12, %ymm10, %ymm10
7184 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm10, %ymm1
7185 ; AVX1-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7186 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm8, %xmm1
7187 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm3, %xmm10
7188 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, %xmm5
7189 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7190 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm10[0],xmm1[0],xmm10[1],xmm1[1],xmm10[2],xmm1[2],xmm10[3],xmm1[3]
7191 ; AVX1-ONLY-NEXT:    vpblendw $63, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
7192 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,1,2,3,4,5],xmm1[6,7]
7193 ; AVX1-ONLY-NEXT:    vmovdqa 304(%rdi), %xmm3
7194 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7195 ; AVX1-ONLY-NEXT:    vpshufb %xmm15, %xmm3, %xmm14
7196 ; AVX1-ONLY-NEXT:    vmovdqa 288(%rdi), %xmm3
7197 ; AVX1-ONLY-NEXT:    vmovdqa %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7198 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm3, %xmm15
7199 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm14 = xmm15[0],xmm14[0],xmm15[1],xmm14[1]
7200 ; AVX1-ONLY-NEXT:    vmovdqa 320(%rdi), %xmm9
7201 ; AVX1-ONLY-NEXT:    vpalignr {{.*#+}} xmm14 = xmm14[10,11,12,13,14,15],xmm9[0,1,2,3,4,5,6,7,8,9]
7202 ; AVX1-ONLY-NEXT:    vmovdqa %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7203 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm14, %xmm11
7204 ; AVX1-ONLY-NEXT:    vmovdqa 336(%rdi), %xmm8
7205 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm8, %xmm0
7206 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7207 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm11, %ymm0
7208 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm11 # 32-byte Folded Reload
7209 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm2, %ymm0
7210 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm11, %ymm0
7211 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm1
7212 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm12, %ymm1
7213 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm12, %ymm0
7214 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
7215 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7216 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm13[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
7217 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload
7218 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm6[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
7219 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm11[0],xmm1[0],xmm11[1],xmm1[1],xmm11[2],xmm1[2],xmm11[3],xmm1[3]
7220 ; AVX1-ONLY-NEXT:    vpblendw $63, {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm1 # 16-byte Folded Reload
7221 ; AVX1-ONLY-NEXT:    # xmm1 = mem[0,1,2,3,4,5],xmm1[6,7]
7222 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm11 = xmm4[u,u,u,u,5,12,u,u,u,u,u,u,u,u,u,u]
7223 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm7 = [0,0,7,14,0,0,7,14,0,0,7,14,0,0,7,14]
7224 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
7225 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm15, %xmm10
7226 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm10 = xmm10[0],xmm11[0],xmm10[1],xmm11[1]
7227 ; AVX1-ONLY-NEXT:    vxorps %xmm0, %xmm0, %xmm0
7228 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm10 = xmm10[0,1,2,3,4,5,6],xmm0[7]
7229 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm2 = [0,128,128,128,128,128,3,10,0,128,128,128,128,128,3,10]
7230 ; AVX1-ONLY-NEXT:    # xmm2 = mem[0,0]
7231 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload
7232 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm4, %xmm11
7233 ; AVX1-ONLY-NEXT:    vpor %xmm11, %xmm10, %xmm10
7234 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
7235 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm14 = xmm3[1,8,15,u,u,u,u,u,u,u,u,u,u,u,u,u]
7236 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm14, %ymm10, %ymm10
7237 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm14 = [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]
7238 ; AVX1-ONLY-NEXT:    vandnps {{[-0-9]+}}(%r{{[sb]}}p), %ymm14, %ymm0 # 32-byte Folded Reload
7239 ; AVX1-ONLY-NEXT:    vandps %ymm14, %ymm10, %ymm10
7240 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm10, %ymm0
7241 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm1
7242 ; AVX1-ONLY-NEXT:    vandnps %ymm1, %ymm12, %ymm1
7243 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm12, %ymm0
7244 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm0, %ymm0
7245 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7246 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
7247 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm0 = xmm13[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
7248 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm5[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
7249 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
7250 ; AVX1-ONLY-NEXT:    vpblendw $63, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload
7251 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,1,2,3,4,5],xmm0[6,7]
7252 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
7253 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm5[u,u,u,u,5,12,u,u,u,u,u,u,u,u,u,u]
7254 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
7255 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm11, %xmm7
7256 ; AVX1-ONLY-NEXT:    vpunpckldq {{.*#+}} xmm1 = xmm7[0],xmm1[0],xmm7[1],xmm1[1]
7257 ; AVX1-ONLY-NEXT:    vpxor %xmm7, %xmm7, %xmm7
7258 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6],xmm7[7]
7259 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm9, %xmm2
7260 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm1, %xmm1
7261 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm8[1,8,15,u,u,u,u,u,u,u,u,u,u,u,u,u]
7262 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
7263 ; AVX1-ONLY-NEXT:    vandnps {{[-0-9]+}}(%r{{[sb]}}p), %ymm14, %ymm2 # 32-byte Folded Reload
7264 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm14, %ymm1
7265 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm1, %ymm1
7266 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
7267 ; AVX1-ONLY-NEXT:    vandnps %ymm0, %ymm12, %ymm0
7268 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm12, %ymm1
7269 ; AVX1-ONLY-NEXT:    vorps %ymm0, %ymm1, %ymm0
7270 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7271 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm2 = [0,0,4,11,0,0,4,11,0,0,4,11,0,0,4,11]
7272 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
7273 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
7274 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm1 = [0,0,6,13,0,0,6,13,0,0,6,13,0,0,6,13]
7275 ; AVX1-ONLY-NEXT:    vpshufb %xmm1, %xmm6, %xmm1
7276 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
7277 ; AVX1-ONLY-NEXT:    vpblendw $63, {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload
7278 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,1,2,3,4,5],xmm0[6,7]
7279 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
7280 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm1 = xmm10[u,u,u,u,u,u,u,u,u,u,u,u,6,13,u,u]
7281 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm14 = [0,1,8,15,0,1,8,15,0,1,8,15,0,1,8,15]
7282 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm15, %xmm6
7283 ; AVX1-ONLY-NEXT:    vpunpckhdq {{.*#+}} xmm1 = xmm6[2],xmm1[2],xmm6[3],xmm1[3]
7284 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6],xmm7[7]
7285 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [0,128,128,128,128,128,4,11,0,128,128,128,128,128,4,11]
7286 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
7287 ; AVX1-ONLY-NEXT:    vmovdqa %xmm4, %xmm12
7288 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm4, %xmm7
7289 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm1, %xmm1
7290 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm9 = [2,9,0,0,2,9,0,0,2,9,0,0,2,9,0,0]
7291 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm3, %xmm7
7292 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm1, %ymm7
7293 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm1 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
7294 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm8 # 32-byte Folded Reload
7295 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm1, %ymm7
7296 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm8, %ymm7
7297 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm8
7298 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm15 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0]
7299 ; AVX1-ONLY-NEXT:    vandnps %ymm8, %ymm15, %ymm8
7300 ; AVX1-ONLY-NEXT:    vandps %ymm7, %ymm15, %ymm7
7301 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm8, %ymm0
7302 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7303 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm13, %xmm4
7304 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
7305 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
7306 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
7307 ; AVX1-ONLY-NEXT:    vpblendw $63, {{[-0-9]+}}(%r{{[sb]}}p), %xmm3, %xmm3 # 16-byte Folded Reload
7308 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,1,2,3,4,5],xmm3[6,7]
7309 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm0
7310 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm2 = xmm5[u,u,u,u,u,u,u,u,u,u,u,u,6,13,u,u]
7311 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, %xmm1
7312 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm11, %xmm4
7313 ; AVX1-ONLY-NEXT:    vpunpckhdq {{.*#+}} xmm2 = xmm4[2],xmm2[2],xmm4[3],xmm2[3]
7314 ; AVX1-ONLY-NEXT:    vxorps %xmm7, %xmm7, %xmm7
7315 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm7[7]
7316 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
7317 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm13, %xmm4
7318 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm2, %xmm2
7319 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
7320 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm14, %xmm4
7321 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm4, %ymm2, %ymm2
7322 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm5 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
7323 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm5, %ymm4 # 32-byte Folded Reload
7324 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm5, %ymm2
7325 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm4, %ymm2
7326 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm3, %ymm0, %ymm3
7327 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm15, %ymm3
7328 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm15, %ymm2
7329 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm2, %ymm2
7330 ; AVX1-ONLY-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7331 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm3 = [0,2,9,128,128,128,0,0,0,2,9,128,128,128,0,0]
7332 ; AVX1-ONLY-NEXT:    # xmm3 = mem[0,0]
7333 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
7334 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm9, %xmm2
7335 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [0,128,128,0,7,14,0,0,0,128,128,0,7,14,0,0]
7336 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
7337 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm10, %xmm5
7338 ; AVX1-ONLY-NEXT:    vpor %xmm2, %xmm5, %xmm2
7339 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,5,6],xmm7[7]
7340 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = [0,128,128,128,128,128,5,12,0,128,128,128,128,128,5,12]
7341 ; AVX1-ONLY-NEXT:    # xmm5 = mem[0,0]
7342 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm12, %xmm6
7343 ; AVX1-ONLY-NEXT:    vmovdqa %xmm12, %xmm11
7344 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm2, %xmm6
7345 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm8 = [3,10,0,0,3,10,0,0,3,10,0,0,3,10,0,0]
7346 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
7347 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm2, %xmm7
7348 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm7, %ymm6, %ymm6
7349 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm12 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
7350 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm7 # 32-byte Folded Reload
7351 ; AVX1-ONLY-NEXT:    vandnps %ymm6, %ymm12, %ymm6
7352 ; AVX1-ONLY-NEXT:    vorps %ymm6, %ymm7, %ymm6
7353 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm7 # 16-byte Folded Reload
7354 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm15, %ymm7
7355 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm15, %ymm6
7356 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm6, %ymm6
7357 ; AVX1-ONLY-NEXT:    vmovups %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7358 ; AVX1-ONLY-NEXT:    vpshufb %xmm3, %xmm1, %xmm3
7359 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm0, %xmm4
7360 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm4, %xmm3
7361 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,5,6],mem[7]
7362 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm13, %xmm4
7363 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm3, %xmm3
7364 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm14, %xmm4
7365 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm4, %ymm3, %ymm3
7366 ; AVX1-ONLY-NEXT:    vandps {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm4 # 32-byte Folded Reload
7367 ; AVX1-ONLY-NEXT:    vandnps %ymm3, %ymm12, %ymm3
7368 ; AVX1-ONLY-NEXT:    vorps %ymm3, %ymm4, %ymm3
7369 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 16-byte Folded Reload
7370 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm15, %ymm4
7371 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm15, %ymm3
7372 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm3, %ymm0
7373 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7374 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
7375 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm14 = [2,9,0,0,2,9,0,0,2,9,0,0,2,9,0,0]
7376 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm8, %xmm3
7377 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm0 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
7378 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
7379 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm13, %xmm4
7380 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
7381 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [12,0,0,0,128,128,128,5,12,0,0,0,128,128,128,5]
7382 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
7383 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
7384 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm12, %xmm5
7385 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [128,0,0,0,0,7,14,128,128,0,0,0,0,7,14,128]
7386 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
7387 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
7388 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm1, %xmm7
7389 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm7, %xmm5
7390 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm5[2,3,4,5,6,7]
7391 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm7 = xmm9[u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm9[u,u]
7392 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm5 = [0,128,128,1,8,15,0,0,0,128,128,1,8,15,0,0]
7393 ; AVX1-ONLY-NEXT:    # xmm5 = mem[0,0]
7394 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm10, %xmm9
7395 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm9, %xmm7
7396 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm7 = xmm7[0,1,2,3,4,5,6],mem[7]
7397 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm9 = [0,128,128,128,128,128,6,13,0,128,128,128,128,128,6,13]
7398 ; AVX1-ONLY-NEXT:    # xmm9 = mem[0,0]
7399 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm11, %xmm10
7400 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm10, %xmm7
7401 ; AVX1-ONLY-NEXT:    vmovdqa %xmm0, %xmm11
7402 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm2, %xmm10
7403 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm10, %ymm7, %ymm7
7404 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm0 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
7405 ; AVX1-ONLY-NEXT:    vandps %ymm0, %ymm3, %ymm3
7406 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm0, %ymm7
7407 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm3, %ymm3
7408 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm7 # 16-byte Folded Reload
7409 ; AVX1-ONLY-NEXT:    vandnps %ymm7, %ymm15, %ymm7
7410 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm15, %ymm3
7411 ; AVX1-ONLY-NEXT:    vorps %ymm7, %ymm3, %ymm0
7412 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7413 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
7414 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm10, %xmm3
7415 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
7416 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm14, %xmm7
7417 ; AVX1-ONLY-NEXT:    vmovdqa %xmm11, %xmm2
7418 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3]
7419 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
7420 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm11, %xmm4
7421 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload
7422 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm7, %xmm6
7423 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm6, %xmm4
7424 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm3 = xmm3[0,1],xmm4[2,3,4,5,6,7]
7425 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
7426 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm0[u,u]
7427 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
7428 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm0, %xmm5
7429 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm5, %xmm4
7430 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,5,6],mem[7]
7431 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
7432 ; AVX1-ONLY-NEXT:    vpshufb %xmm9, %xmm5, %xmm5
7433 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm4, %xmm4
7434 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
7435 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm5, %xmm5
7436 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm5, %ymm4, %ymm4
7437 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm2 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
7438 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm3, %ymm3
7439 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm2, %ymm4
7440 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm3, %ymm3
7441 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 16-byte Folded Reload
7442 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm15, %ymm4
7443 ; AVX1-ONLY-NEXT:    vandps %ymm3, %ymm15, %ymm3
7444 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm3, %ymm3
7445 ; AVX1-ONLY-NEXT:    vmovups %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7446 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm2 = [3,10,0,0,3,10,0,0,3,10,0,0,3,10,0,0]
7447 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm8, %xmm3
7448 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm5 = [5,12,0,0,5,12,0,0,5,12,0,0,5,12,0,0]
7449 ; AVX1-ONLY-NEXT:    vpshufb %xmm5, %xmm13, %xmm4
7450 ; AVX1-ONLY-NEXT:    vmovdqa %xmm5, %xmm8
7451 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
7452 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm4 = [13,0,0,0,128,128,128,6,13,0,0,0,128,128,128,6]
7453 ; AVX1-ONLY-NEXT:    # xmm4 = mem[0,0]
7454 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm12, %xmm5
7455 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [128,0,0,0,1,8,15,128,128,0,0,0,1,8,15,128]
7456 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
7457 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm1, %xmm7
7458 ; AVX1-ONLY-NEXT:    vpor %xmm5, %xmm7, %xmm5
7459 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm5 = xmm3[0,1],xmm5[2,3,4,5,6,7]
7460 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
7461 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm1[u,u,u,u,u,u,u,u,u],zero,zero,xmm1[2,9,u,u,u]
7462 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
7463 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm12[u,u,u,u,u,u,u,u,u,4,11],zero,zero,xmm12[u,u,u]
7464 ; AVX1-ONLY-NEXT:    vpor %xmm3, %xmm9, %xmm9
7465 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u,u,u,u,u,9,10,11,12],zero,zero,zero
7466 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm7 = [0,128,128,128,128,0,7,14,0,128,128,128,128,0,7,14]
7467 ; AVX1-ONLY-NEXT:    # xmm7 = mem[0,0]
7468 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
7469 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm1, %xmm13
7470 ; AVX1-ONLY-NEXT:    vpor %xmm13, %xmm9, %xmm9
7471 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
7472 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm3, %xmm13
7473 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm13, %ymm9, %ymm9
7474 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm1 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
7475 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm5, %ymm5
7476 ; AVX1-ONLY-NEXT:    vandnps %ymm9, %ymm1, %ymm9
7477 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, %ymm13
7478 ; AVX1-ONLY-NEXT:    vorps %ymm5, %ymm9, %ymm5
7479 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 16-byte Folded Reload
7480 ; AVX1-ONLY-NEXT:    vandnps %ymm9, %ymm15, %ymm9
7481 ; AVX1-ONLY-NEXT:    vandps %ymm5, %ymm15, %ymm5
7482 ; AVX1-ONLY-NEXT:    vorps %ymm5, %ymm9, %ymm1
7483 ; AVX1-ONLY-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7484 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm10, %xmm2
7485 ; AVX1-ONLY-NEXT:    vpshufb %xmm8, %xmm14, %xmm9
7486 ; AVX1-ONLY-NEXT:    vmovdqa %xmm8, %xmm14
7487 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm2 = xmm9[0],xmm2[0],xmm9[1],xmm2[1],xmm9[2],xmm2[2],xmm9[3],xmm2[3]
7488 ; AVX1-ONLY-NEXT:    vpshufb %xmm4, %xmm11, %xmm4
7489 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload
7490 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm8, %xmm6
7491 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm6, %xmm4
7492 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,3,4,5,6,7]
7493 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[u,u,u,u,u,u,u,u,u],zero,zero,xmm0[2,9,u,u,u]
7494 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload
7495 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm6 = xmm10[u,u,u,u,u,u,u,u,u,4,11],zero,zero,xmm10[u,u,u]
7496 ; AVX1-ONLY-NEXT:    vpor %xmm4, %xmm6, %xmm4
7497 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm11 = [0,9,10,11,12,128,128,128,0,9,10,11,12,128,128,128]
7498 ; AVX1-ONLY-NEXT:    # xmm11 = mem[0,0]
7499 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm4, %xmm4
7500 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
7501 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm1, %xmm6
7502 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm4, %xmm4
7503 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload
7504 ; AVX1-ONLY-NEXT:    vpshufb %xmm14, %xmm5, %xmm6
7505 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm6, %ymm4, %ymm4
7506 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm13, %ymm2
7507 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm13, %ymm4
7508 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm2, %ymm2
7509 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm4 # 16-byte Folded Reload
7510 ; AVX1-ONLY-NEXT:    vandnps %ymm4, %ymm15, %ymm4
7511 ; AVX1-ONLY-NEXT:    vandps %ymm2, %ymm15, %ymm2
7512 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm2, %ymm0
7513 ; AVX1-ONLY-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7514 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
7515 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[4,11,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
7516 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm2 = [6,13,0,0,6,13,0,0,6,13,0,0,6,13,0,0]
7517 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
7518 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm0, %xmm6
7519 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm6[0],xmm4[0],xmm6[1],xmm4[1],xmm6[2],xmm4[2],xmm6[3],xmm4[3]
7520 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm6 = [128,0,0,0,2,9,128,128,128,0,0,0,2,9,128,128]
7521 ; AVX1-ONLY-NEXT:    # xmm6 = mem[0,0]
7522 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
7523 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm0, %xmm7
7524 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm0 = [14,0,0,0,128,128,0,7,14,0,0,0,128,128,0,7]
7525 ; AVX1-ONLY-NEXT:    # xmm0 = mem[0,0]
7526 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
7527 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm9, %xmm9
7528 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm9, %xmm7
7529 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm4 = xmm4[0,1],xmm7[2,3,4,5,6,7]
7530 ; AVX1-ONLY-NEXT:    vbroadcastss {{.*#+}} xmm7 = [10,128,128,3,10,128,128,3,10,128,128,3,10,128,128,3]
7531 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
7532 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm9, %xmm9
7533 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm13 = xmm12[u,u,u,u,u,u,u,u,u,5,12],zero,zero,xmm12[u,u,u]
7534 ; AVX1-ONLY-NEXT:    vpor %xmm9, %xmm13, %xmm9
7535 ; AVX1-ONLY-NEXT:    vpshufb %xmm11, %xmm9, %xmm9
7536 ; AVX1-ONLY-NEXT:    vmovddup {{.*#+}} xmm13 = [0,128,128,128,128,1,8,15,0,128,128,128,128,1,8,15]
7537 ; AVX1-ONLY-NEXT:    # xmm13 = mem[0,0]
7538 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
7539 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm11, %xmm14
7540 ; AVX1-ONLY-NEXT:    vpor %xmm14, %xmm9, %xmm9
7541 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm3, %xmm14
7542 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm14, %ymm9, %ymm9
7543 ; AVX1-ONLY-NEXT:    vmovaps {{.*#+}} ymm11 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
7544 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm11, %ymm4
7545 ; AVX1-ONLY-NEXT:    vandnps %ymm9, %ymm11, %ymm9
7546 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm9, %ymm4
7547 ; AVX1-ONLY-NEXT:    vinsertf128 $1, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm9 # 16-byte Folded Reload
7548 ; AVX1-ONLY-NEXT:    vandnps %ymm9, %ymm15, %ymm9
7549 ; AVX1-ONLY-NEXT:    vandps %ymm4, %ymm15, %ymm4
7550 ; AVX1-ONLY-NEXT:    vorps %ymm4, %ymm9, %ymm4
7551 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
7552 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm9 = xmm3[4,11,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
7553 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
7554 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm3, %xmm12
7555 ; AVX1-ONLY-NEXT:    vpunpcklwd {{.*#+}} xmm9 = xmm12[0],xmm9[0],xmm12[1],xmm9[1],xmm12[2],xmm9[2],xmm12[3],xmm9[3]
7556 ; AVX1-ONLY-NEXT:    vpshufb %xmm6, %xmm8, %xmm6
7557 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload
7558 ; AVX1-ONLY-NEXT:    vpshufb %xmm0, %xmm3, %xmm8
7559 ; AVX1-ONLY-NEXT:    vpor %xmm6, %xmm8, %xmm6
7560 ; AVX1-ONLY-NEXT:    vpblendw {{.*#+}} xmm6 = xmm9[0,1],xmm6[2,3,4,5,6,7]
7561 ; AVX1-ONLY-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
7562 ; AVX1-ONLY-NEXT:    vpshufb %xmm7, %xmm0, %xmm7
7563 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm8 = xmm10[u,u,u,u,u,u,u,u,u,5,12],zero,zero,xmm10[u,u,u]
7564 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm8, %xmm7
7565 ; AVX1-ONLY-NEXT:    vpshufb {{.*#+}} xmm3 = xmm7[u,u,u,u,u,u,u,u,u,9,10,11,12],zero,zero,zero
7566 ; AVX1-ONLY-NEXT:    vpshufb %xmm13, %xmm1, %xmm7
7567 ; AVX1-ONLY-NEXT:    vpor %xmm7, %xmm3, %xmm3
7568 ; AVX1-ONLY-NEXT:    vpshufb %xmm2, %xmm5, %xmm2
7569 ; AVX1-ONLY-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2
7570 ; AVX1-ONLY-NEXT:    vandps %ymm6, %ymm11, %ymm3
7571 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm11, %ymm1
7572 ; AVX1-ONLY-NEXT:    vorps %ymm1, %ymm3, %ymm1
7573 ; AVX1-ONLY-NEXT:    vinsertf128 $1, (%rsp), %ymm0, %ymm2 # 16-byte Folded Reload
7574 ; AVX1-ONLY-NEXT:    vandnps %ymm2, %ymm15, %ymm2
7575 ; AVX1-ONLY-NEXT:    vandps %ymm1, %ymm15, %ymm0
7576 ; AVX1-ONLY-NEXT:    vorps %ymm2, %ymm0, %ymm0
7577 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7578 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 32(%rsi)
7579 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7580 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%rsi)
7581 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7582 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 32(%rdx)
7583 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7584 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%rdx)
7585 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7586 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 32(%rcx)
7587 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7588 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%rcx)
7589 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7590 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 32(%r8)
7591 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7592 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%r8)
7593 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7594 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 32(%r9)
7595 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7596 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%r9)
7597 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
7598 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7599 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, 32(%rax)
7600 ; AVX1-ONLY-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7601 ; AVX1-ONLY-NEXT:    vmovaps %ymm1, (%rax)
7602 ; AVX1-ONLY-NEXT:    movq {{[0-9]+}}(%rsp), %rax
7603 ; AVX1-ONLY-NEXT:    vmovaps %ymm0, 32(%rax)
7604 ; AVX1-ONLY-NEXT:    vmovaps %ymm4, (%rax)
7605 ; AVX1-ONLY-NEXT:    addq $744, %rsp # imm = 0x2E8
7606 ; AVX1-ONLY-NEXT:    vzeroupper
7607 ; AVX1-ONLY-NEXT:    retq
7609 ; AVX2-SLOW-LABEL: load_i8_stride7_vf64:
7610 ; AVX2-SLOW:       # %bb.0:
7611 ; AVX2-SLOW-NEXT:    subq $760, %rsp # imm = 0x2F8
7612 ; AVX2-SLOW-NEXT:    vmovdqa 320(%rdi), %ymm6
7613 ; AVX2-SLOW-NEXT:    vmovdqa 224(%rdi), %ymm7
7614 ; AVX2-SLOW-NEXT:    vmovdqa 256(%rdi), %ymm8
7615 ; AVX2-SLOW-NEXT:    vmovdqa (%rdi), %ymm1
7616 ; AVX2-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm2
7617 ; AVX2-SLOW-NEXT:    vmovdqa 64(%rdi), %ymm4
7618 ; AVX2-SLOW-NEXT:    vmovdqa 96(%rdi), %ymm5
7619 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm3 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
7620 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm1, %ymm2, %ymm0
7621 ; AVX2-SLOW-NEXT:    vmovdqa %ymm3, %ymm13
7622 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, %ymm10
7623 ; AVX2-SLOW-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7624 ; AVX2-SLOW-NEXT:    vmovdqa %ymm1, %ymm12
7625 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7626 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm2
7627 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm1 = <128,128,128,5,12,128,128,1,8,15,u,u,u,u,u,u>
7628 ; AVX2-SLOW-NEXT:    vpshufb %xmm1, %xmm2, %xmm3
7629 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm2 = <0,7,14,128,128,3,10,128,128,128,u,u,u,u,u,u>
7630 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
7631 ; AVX2-SLOW-NEXT:    vpor %xmm3, %xmm0, %xmm0
7632 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
7633 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm5, %ymm4, %ymm3
7634 ; AVX2-SLOW-NEXT:    vmovdqa %ymm9, %ymm14
7635 ; AVX2-SLOW-NEXT:    vmovdqa %ymm5, %ymm9
7636 ; AVX2-SLOW-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7637 ; AVX2-SLOW-NEXT:    vmovdqa %ymm4, %ymm11
7638 ; AVX2-SLOW-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7639 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm4
7640 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]
7641 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,7,14,0,0,0,0,0,0,0,6,13,4,11,2,9,0,7,14,0,0,0,0,0,0,0,6,13,4,11,2,9]
7642 ; AVX2-SLOW-NEXT:    # ymm3 = mem[0,1,0,1]
7643 ; AVX2-SLOW-NEXT:    vpshufb %ymm3, %ymm4, %ymm5
7644 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0]
7645 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm0, %ymm5, %ymm0
7646 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7647 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm7, %ymm8, %ymm5
7648 ; AVX2-SLOW-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7649 ; AVX2-SLOW-NEXT:    vmovdqa %ymm7, %ymm0
7650 ; AVX2-SLOW-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7651 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm7
7652 ; AVX2-SLOW-NEXT:    vpshufb %xmm1, %xmm7, %xmm1
7653 ; AVX2-SLOW-NEXT:    vmovdqa 288(%rdi), %ymm7
7654 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm5, %xmm2
7655 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm2, %xmm1
7656 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, %ymm6, %ymm7, %ymm2
7657 ; AVX2-SLOW-NEXT:    vmovdqa %ymm7, %ymm15
7658 ; AVX2-SLOW-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7659 ; AVX2-SLOW-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7660 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm5
7661 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm5[2],ymm2[3,4],ymm5[5],ymm2[6,7,8,9],ymm5[10],ymm2[11,12],ymm5[13],ymm2[14,15]
7662 ; AVX2-SLOW-NEXT:    vpshufb %ymm3, %ymm2, %ymm2
7663 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm1, %ymm2, %ymm1
7664 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7665 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm11, %ymm9, %ymm2
7666 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
7667 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm2[0,1],ymm3[2],ymm2[3,4,5],ymm3[6],ymm2[7,8,9],ymm3[10],ymm2[11,12,13],ymm3[14],ymm2[15]
7668 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
7669 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm12, %ymm10, %ymm5
7670 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, %ymm1
7671 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm3
7672 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm2 = <128,128,128,6,13,128,128,2,9,u,u,u,u,u,u,u>
7673 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm3, %xmm7
7674 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm3 = <1,8,15,128,128,4,11,128,128,u,u,u,u,u,u,u>
7675 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm5, %xmm5
7676 ; AVX2-SLOW-NEXT:    vpor %xmm7, %xmm5, %xmm5
7677 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [1,8,15,0,0,0,0,0,0,0,7,14,5,12,3,10,1,8,15,0,0,0,0,0,0,0,7,14,5,12,3,10]
7678 ; AVX2-SLOW-NEXT:    # ymm7 = mem[0,1,0,1]
7679 ; AVX2-SLOW-NEXT:    vpshufb %ymm7, %ymm4, %ymm4
7680 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = <0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,u,u,u,u,u,u,u,u,u,u,u,u,u>
7681 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm4, %ymm5, %ymm4
7682 ; AVX2-SLOW-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7683 ; AVX2-SLOW-NEXT:    vpblendvb %ymm13, %ymm15, %ymm6, %ymm4
7684 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm5
7685 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4,5],ymm5[6],ymm4[7,8,9],ymm5[10],ymm4[11,12,13],ymm5[14],ymm4[15]
7686 ; AVX2-SLOW-NEXT:    vpshufb %ymm7, %ymm4, %ymm4
7687 ; AVX2-SLOW-NEXT:    vpblendvb %ymm1, %ymm0, %ymm8, %ymm5
7688 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm7
7689 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm7, %xmm2
7690 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm5, %xmm3
7691 ; AVX2-SLOW-NEXT:    vpor %xmm2, %xmm3, %xmm2
7692 ; AVX2-SLOW-NEXT:    vpblendvb %ymm9, %ymm4, %ymm2, %ymm0
7693 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7694 ; AVX2-SLOW-NEXT:    vmovdqa 160(%rdi), %ymm9
7695 ; AVX2-SLOW-NEXT:    vmovdqa 128(%rdi), %ymm3
7696 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm4 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
7697 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm9, %ymm3, %ymm2
7698 ; AVX2-SLOW-NEXT:    vmovdqa %ymm3, %ymm15
7699 ; AVX2-SLOW-NEXT:    vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7700 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
7701 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,u,128,128,3,10,128,128,128,6,13,u,u,u,u>
7702 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm3, %xmm3
7703 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,5,12,128,128,1,8,15,128,128,u,u,u,u>
7704 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm2, %xmm2
7705 ; AVX2-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
7706 ; AVX2-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm12 = [2,9,2,9,2,9,2,9,2,9,2,9,2,9,2,9]
7707 ; AVX2-SLOW-NEXT:    vmovdqa 208(%rdi), %xmm5
7708 ; AVX2-SLOW-NEXT:    vpshufb %xmm12, %xmm5, %xmm3
7709 ; AVX2-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm6 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
7710 ; AVX2-SLOW-NEXT:    vmovdqa 192(%rdi), %xmm1
7711 ; AVX2-SLOW-NEXT:    vpshufb %xmm6, %xmm1, %xmm10
7712 ; AVX2-SLOW-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7713 ; AVX2-SLOW-NEXT:    vmovdqa %xmm6, %xmm11
7714 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm10[0],xmm3[0],xmm10[1],xmm3[1],xmm10[2],xmm3[2],xmm10[3],xmm3[3]
7715 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
7716 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
7717 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5,6],ymm3[7]
7718 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm14 = [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]
7719 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm0 # 32-byte Folded Reload
7720 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7721 ; AVX2-SLOW-NEXT:    vmovdqa 384(%rdi), %ymm2
7722 ; AVX2-SLOW-NEXT:    vmovdqa 352(%rdi), %ymm3
7723 ; AVX2-SLOW-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm0
7724 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, %ymm4
7725 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm6
7726 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm6, %xmm6
7727 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm0, %xmm0
7728 ; AVX2-SLOW-NEXT:    vpor %xmm6, %xmm0, %xmm0
7729 ; AVX2-SLOW-NEXT:    vmovdqa 432(%rdi), %xmm13
7730 ; AVX2-SLOW-NEXT:    vpshufb %xmm12, %xmm13, %xmm6
7731 ; AVX2-SLOW-NEXT:    vmovdqa 416(%rdi), %xmm2
7732 ; AVX2-SLOW-NEXT:    vpshufb %xmm11, %xmm2, %xmm8
7733 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3]
7734 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
7735 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
7736 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm6[7]
7737 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
7738 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7739 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
7740 ; AVX2-SLOW-NEXT:    vpblendvb %ymm7, %ymm9, %ymm15, %ymm0
7741 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm10 = <u,u,u,6,13,128,128,2,9,128,128,128,u,u,u,u>
7742 ; AVX2-SLOW-NEXT:    vpshufb %xmm10, %xmm0, %xmm6
7743 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
7744 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,u,128,128,4,11,128,128,0,7,14,u,u,u,u>
7745 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm0, %xmm0
7746 ; AVX2-SLOW-NEXT:    vpor %xmm6, %xmm0, %xmm0
7747 ; AVX2-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm6 = [3,10,3,10,3,10,3,10,3,10,3,10,3,10,3,10]
7748 ; AVX2-SLOW-NEXT:    vpshufb %xmm6, %xmm5, %xmm9
7749 ; AVX2-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm12 = [5,12,5,12,5,12,5,12,5,12,5,12,5,12,5,12]
7750 ; AVX2-SLOW-NEXT:    vpshufb %xmm12, %xmm1, %xmm11
7751 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm9 = xmm11[0],xmm9[0],xmm11[1],xmm9[1],xmm11[2],xmm9[2],xmm11[3],xmm9[3]
7752 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
7753 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
7754 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm9[7]
7755 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
7756 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7757 ; AVX2-SLOW-NEXT:    vpblendvb %ymm7, %ymm4, %ymm3, %ymm0
7758 ; AVX2-SLOW-NEXT:    vmovdqa %ymm3, %ymm11
7759 ; AVX2-SLOW-NEXT:    vpshufb %xmm10, %xmm0, %xmm1
7760 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
7761 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm0, %xmm0
7762 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm0, %xmm0
7763 ; AVX2-SLOW-NEXT:    vpshufb %xmm6, %xmm13, %xmm1
7764 ; AVX2-SLOW-NEXT:    vpshufb %xmm12, %xmm2, %xmm6
7765 ; AVX2-SLOW-NEXT:    vmovdqa %xmm2, %xmm12
7766 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm6[0],xmm1[0],xmm6[1],xmm1[1],xmm6[2],xmm1[2],xmm6[3],xmm1[3]
7767 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
7768 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
7769 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm1[7]
7770 ; AVX2-SLOW-NEXT:    vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
7771 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7772 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
7773 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm3, %ymm4, %ymm0
7774 ; AVX2-SLOW-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7775 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm1
7776 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm6 = <u,u,128,128,128,6,13,128,128,2,9,u,u,u,u,u>
7777 ; AVX2-SLOW-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
7778 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,1,8,15,128,128,4,11,128,128,u,u,u,u,u>
7779 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm0, %xmm0
7780 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm0, %xmm0
7781 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} xmm1 = [0,0,0,128,128,128,5,12,0,0,0,128,128,128,5,12]
7782 ; AVX2-SLOW-NEXT:    vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7783 ; AVX2-SLOW-NEXT:    vpshufb %xmm1, %xmm13, %xmm8
7784 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} xmm9 = [0,0,0,0,7,14,128,128,0,0,0,0,7,14,128,128]
7785 ; AVX2-SLOW-NEXT:    vpshufb %xmm9, %xmm12, %xmm10
7786 ; AVX2-SLOW-NEXT:    vmovdqa %xmm12, %xmm3
7787 ; AVX2-SLOW-NEXT:    vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
7788 ; AVX2-SLOW-NEXT:    vpor %xmm8, %xmm10, %xmm8
7789 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm10
7790 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
7791 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
7792 ; AVX2-SLOW-NEXT:    # ymm0 = mem[0,1,0,1]
7793 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm10, %ymm8, %ymm8
7794 ; AVX2-SLOW-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7795 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload
7796 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm15, %ymm12, %ymm8
7797 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm10
7798 ; AVX2-SLOW-NEXT:    vpshufb %xmm6, %xmm10, %xmm6
7799 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm8, %xmm7
7800 ; AVX2-SLOW-NEXT:    vpor %xmm6, %xmm7, %xmm6
7801 ; AVX2-SLOW-NEXT:    vpshufb %xmm1, %xmm5, %xmm1
7802 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
7803 ; AVX2-SLOW-NEXT:    vpshufb %xmm9, %xmm14, %xmm7
7804 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm7, %xmm1
7805 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
7806 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
7807 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm6, %ymm1, %ymm1
7808 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7809 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
7810 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm11, %ymm4, %ymm1
7811 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm6 = <u,u,2,9,128,128,128,5,12,128,128,u,u,u,u,u>
7812 ; AVX2-SLOW-NEXT:    vpshufb %xmm6, %xmm1, %xmm7
7813 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm1
7814 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,128,128,0,7,14,128,128,3,10,u,u,u,u,u>
7815 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
7816 ; AVX2-SLOW-NEXT:    vpor %xmm7, %xmm1, %xmm1
7817 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} xmm7 = [0,0,0,128,128,128,6,13,0,0,0,128,128,128,6,13]
7818 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm13, %xmm9
7819 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} xmm10 = [0,0,0,1,8,15,128,128,0,0,0,1,8,15,128,128]
7820 ; AVX2-SLOW-NEXT:    vpshufb %xmm10, %xmm3, %xmm11
7821 ; AVX2-SLOW-NEXT:    vpor %xmm9, %xmm11, %xmm9
7822 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
7823 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
7824 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm1, %ymm9, %ymm1
7825 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7826 ; AVX2-SLOW-NEXT:    vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7827 ; AVX2-SLOW-NEXT:    vpblendvb %ymm2, %ymm15, %ymm12, %ymm1
7828 ; AVX2-SLOW-NEXT:    vmovdqa %ymm12, %ymm2
7829 ; AVX2-SLOW-NEXT:    vpshufb %xmm6, %xmm1, %xmm6
7830 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm1
7831 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
7832 ; AVX2-SLOW-NEXT:    vpor %xmm6, %xmm1, %xmm1
7833 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm5, %xmm6
7834 ; AVX2-SLOW-NEXT:    vmovdqa %xmm5, %xmm13
7835 ; AVX2-SLOW-NEXT:    vpshufb %xmm10, %xmm14, %xmm7
7836 ; AVX2-SLOW-NEXT:    vpor %xmm6, %xmm7, %xmm6
7837 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
7838 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
7839 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm1, %ymm6, %ymm1
7840 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7841 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm6 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
7842 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
7843 ; AVX2-SLOW-NEXT:    vpblendvb %ymm6, %ymm3, %ymm4, %ymm1
7844 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm5 = <u,u,3,10,128,128,128,6,13,128,128,u,u,u,u,u>
7845 ; AVX2-SLOW-NEXT:    vpshufb %xmm5, %xmm1, %xmm7
7846 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm1
7847 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,128,128,1,8,15,128,128,4,11,u,u,u,u,u>
7848 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
7849 ; AVX2-SLOW-NEXT:    vpor %xmm7, %xmm1, %xmm1
7850 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} xmm7 = [0,0,0,2,9,128,128,128,0,0,0,2,9,128,128,128]
7851 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
7852 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm12, %xmm9
7853 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} xmm10 = [0,0,0,128,128,0,7,14,0,0,0,128,128,0,7,14]
7854 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
7855 ; AVX2-SLOW-NEXT:    vpshufb %xmm10, %xmm14, %xmm11
7856 ; AVX2-SLOW-NEXT:    vpor %xmm9, %xmm11, %xmm9
7857 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
7858 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
7859 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm1, %ymm9, %ymm1
7860 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7861 ; AVX2-SLOW-NEXT:    vpblendvb %ymm6, %ymm15, %ymm2, %ymm1
7862 ; AVX2-SLOW-NEXT:    vpshufb %xmm5, %xmm1, %xmm6
7863 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm1
7864 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
7865 ; AVX2-SLOW-NEXT:    vpor %xmm6, %xmm1, %xmm1
7866 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
7867 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm11, %xmm6
7868 ; AVX2-SLOW-NEXT:    vpshufb %xmm10, %xmm13, %xmm7
7869 ; AVX2-SLOW-NEXT:    vmovdqa %xmm13, (%rsp) # 16-byte Spill
7870 ; AVX2-SLOW-NEXT:    vpor %xmm6, %xmm7, %xmm6
7871 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
7872 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
7873 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm1, %ymm6, %ymm1
7874 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7875 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
7876 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm3, %ymm4, %ymm2
7877 ; AVX2-SLOW-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7878 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm15 = <255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u>
7879 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm4, %ymm3, %ymm1
7880 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm2
7881 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm3 = <u,u,128,128,2,9,128,128,128,5,12,u,u,u,u,u>
7882 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
7883 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm6 = <u,u,4,11,128,128,0,7,14,128,128,u,u,u,u,u>
7884 ; AVX2-SLOW-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
7885 ; AVX2-SLOW-NEXT:    vpor %xmm2, %xmm1, %xmm1
7886 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [0,0,0,3,10,128,128,128,0,0,0,3,10,128,128,128]
7887 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm12, %xmm7
7888 ; AVX2-SLOW-NEXT:    vpbroadcastq {{.*#+}} xmm8 = [0,0,0,128,128,1,8,15,0,0,0,128,128,1,8,15]
7889 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm14, %xmm9
7890 ; AVX2-SLOW-NEXT:    vpor %xmm7, %xmm9, %xmm7
7891 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
7892 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
7893 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm1, %ymm7, %ymm1
7894 ; AVX2-SLOW-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7895 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
7896 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
7897 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm4, %ymm1, %ymm5
7898 ; AVX2-SLOW-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7899 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm1, %ymm4, %ymm1
7900 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm4
7901 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm4, %xmm3
7902 ; AVX2-SLOW-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
7903 ; AVX2-SLOW-NEXT:    vpor %xmm3, %xmm1, %xmm1
7904 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm11, %xmm2
7905 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm13, %xmm3
7906 ; AVX2-SLOW-NEXT:    vpor %xmm2, %xmm3, %xmm2
7907 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
7908 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
7909 ; AVX2-SLOW-NEXT:    vpblendvb %ymm0, %ymm1, %ymm2, %ymm0
7910 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7911 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
7912 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
7913 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
7914 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm0, %ymm2, %ymm1
7915 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
7916 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm0, %ymm2, %ymm12
7917 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm2, %ymm0, %ymm13
7918 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
7919 ; AVX2-SLOW-NEXT:    vpblendvb %ymm7, %ymm2, %ymm0, %ymm3
7920 ; AVX2-SLOW-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7921 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm3 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
7922 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm2, %ymm0, %ymm0
7923 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7924 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
7925 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
7926 ; AVX2-SLOW-NEXT:    vpblendvb %ymm3, %ymm2, %ymm0, %ymm3
7927 ; AVX2-SLOW-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7928 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm0, %ymm2, %ymm3
7929 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm0, %ymm2, %ymm14
7930 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm2, %ymm0, %ymm4
7931 ; AVX2-SLOW-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7932 ; AVX2-SLOW-NEXT:    vpblendvb %ymm7, %ymm2, %ymm0, %ymm0
7933 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7934 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
7935 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
7936 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
7937 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm6, %ymm2, %ymm0
7938 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm6, %ymm2, %ymm4
7939 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm6, %ymm2, %ymm9
7940 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm2, %ymm6, %ymm8
7941 ; AVX2-SLOW-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7942 ; AVX2-SLOW-NEXT:    vpblendvb %ymm7, %ymm2, %ymm6, %ymm2
7943 ; AVX2-SLOW-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7944 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
7945 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
7946 ; AVX2-SLOW-NEXT:    vpblendvb %ymm10, %ymm7, %ymm8, %ymm2
7947 ; AVX2-SLOW-NEXT:    vpblendvb %ymm11, %ymm7, %ymm8, %ymm6
7948 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm7, %ymm8, %ymm10
7949 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm8, %ymm7, %ymm5
7950 ; AVX2-SLOW-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7951 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
7952 ; AVX2-SLOW-NEXT:    vpblendvb %ymm5, %ymm8, %ymm7, %ymm11
7953 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm8 = <2,9,128,128,128,5,12,128,128,u,u,u,u,u,u,u>
7954 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm1, %xmm15
7955 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm1
7956 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm7 = <128,128,0,7,14,128,128,3,10,u,u,u,u,u,u,u>
7957 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
7958 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm15, %xmm1
7959 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm15
7960 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm15[3],ymm0[4,5],ymm15[6],ymm0[7,8,9,10],ymm15[11],ymm0[12,13],ymm15[14],ymm0[15]
7961 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [2,9,0,0,0,0,0,0,0,1,8,15,6,13,4,11,2,9,0,0,0,0,0,0,0,1,8,15,6,13,4,11]
7962 ; AVX2-SLOW-NEXT:    # ymm5 = mem[0,1,0,1]
7963 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm0, %ymm0
7964 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm15 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
7965 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm1, %ymm0, %ymm0
7966 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7967 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm3, %xmm0
7968 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm1
7969 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
7970 ; AVX2-SLOW-NEXT:    vpor %xmm0, %xmm1, %xmm0
7971 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm1
7972 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]
7973 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm1, %ymm1
7974 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm0, %ymm1, %ymm0
7975 ; AVX2-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
7976 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm0 = <3,10,128,128,128,6,13,128,128,u,u,u,u,u,u,u>
7977 ; AVX2-SLOW-NEXT:    vpshufb %xmm0, %xmm12, %xmm1
7978 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm12, %xmm2
7979 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm3 = <128,128,1,8,15,128,128,4,11,u,u,u,u,u,u,u>
7980 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
7981 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm2, %xmm1
7982 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm2
7983 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm4[1,2],ymm2[3],ymm4[4,5,6],ymm2[7,8],ymm4[9,10],ymm2[11],ymm4[12,13,14],ymm2[15]
7984 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [3,10,0,0,0,0,0,0,0,2,9,0,7,14,5,12,3,10,0,0,0,0,0,0,0,2,9,0,7,14,5,12]
7985 ; AVX2-SLOW-NEXT:    # ymm4 = mem[0,1,0,1]
7986 ; AVX2-SLOW-NEXT:    vpshufb %ymm4, %ymm2, %ymm2
7987 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm1, %ymm2, %ymm12
7988 ; AVX2-SLOW-NEXT:    vpshufb %xmm0, %xmm14, %xmm0
7989 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm14, %xmm1
7990 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
7991 ; AVX2-SLOW-NEXT:    vpor %xmm0, %xmm1, %xmm0
7992 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm6, %xmm1
7993 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm6[1,2],ymm1[3],ymm6[4,5,6],ymm1[7,8],ymm6[9,10],ymm1[11],ymm6[12,13,14],ymm1[15]
7994 ; AVX2-SLOW-NEXT:    vpshufb %ymm4, %ymm1, %ymm1
7995 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm0, %ymm1, %ymm14
7996 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm0
7997 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm1 = <128,128,2,9,128,128,128,5,12,u,u,u,u,u,u,u>
7998 ; AVX2-SLOW-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
7999 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm2 = <4,11,128,128,0,7,14,128,128,u,u,u,u,u,u,u>
8000 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm13, %xmm3
8001 ; AVX2-SLOW-NEXT:    vpor %xmm0, %xmm3, %xmm0
8002 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm9, %xmm3
8003 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm9[1,2,3],ymm3[4],ymm9[5,6],ymm3[7,8],ymm9[9,10,11],ymm3[12],ymm9[13,14],ymm3[15]
8004 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [4,11,0,0,0,0,0,0,0,3,10,1,8,15,6,13,4,11,0,0,0,0,0,0,0,3,10,1,8,15,6,13]
8005 ; AVX2-SLOW-NEXT:    # ymm4 = mem[0,1,0,1]
8006 ; AVX2-SLOW-NEXT:    vpshufb %ymm4, %ymm3, %ymm3
8007 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm0, %ymm3, %ymm6
8008 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
8009 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm0
8010 ; AVX2-SLOW-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
8011 ; AVX2-SLOW-NEXT:    vpshufb %xmm2, %xmm3, %xmm1
8012 ; AVX2-SLOW-NEXT:    vpor %xmm0, %xmm1, %xmm0
8013 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm10, %xmm1
8014 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm10[1,2,3],ymm1[4],ymm10[5,6],ymm1[7,8],ymm10[9,10,11],ymm1[12],ymm10[13,14],ymm1[15]
8015 ; AVX2-SLOW-NEXT:    vpshufb %ymm4, %ymm1, %ymm1
8016 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm0, %ymm1, %ymm0
8017 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
8018 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm1
8019 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm3 = <128,128,3,10,128,128,128,6,13,u,u,u,u,u,u,u>
8020 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
8021 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm4 = <5,12,128,128,1,8,15,128,128,u,u,u,u,u,u,u>
8022 ; AVX2-SLOW-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
8023 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm2, %xmm1
8024 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
8025 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm2
8026 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm5[0],ymm2[1],ymm5[2,3],ymm2[4],ymm5[5,6,7,8],ymm2[9],ymm5[10,11],ymm2[12],ymm5[13,14,15]
8027 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [5,12,0,0,0,0,0,0,0,4,11,2,9,0,7,14,5,12,0,0,0,0,0,0,0,4,11,2,9,0,7,14]
8028 ; AVX2-SLOW-NEXT:    # ymm5 = mem[0,1,0,1]
8029 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm2, %ymm2
8030 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm1, %ymm2, %ymm2
8031 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
8032 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm1
8033 ; AVX2-SLOW-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
8034 ; AVX2-SLOW-NEXT:    vpshufb %xmm4, %xmm7, %xmm3
8035 ; AVX2-SLOW-NEXT:    vpor %xmm1, %xmm3, %xmm1
8036 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
8037 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm3
8038 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1],ymm4[2,3],ymm3[4],ymm4[5,6,7,8],ymm3[9],ymm4[10,11],ymm3[12],ymm4[13,14,15]
8039 ; AVX2-SLOW-NEXT:    vpshufb %ymm5, %ymm3, %ymm3
8040 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm1, %ymm3, %ymm1
8041 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm4 = <6,13,128,128,2,9,128,128,128,u,u,u,u,u,u,u>
8042 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
8043 ; AVX2-SLOW-NEXT:    vpshufb %xmm4, %xmm5, %xmm3
8044 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm5
8045 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm7 = <128,128,4,11,128,128,0,7,14,u,u,u,u,u,u,u>
8046 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm5, %xmm5
8047 ; AVX2-SLOW-NEXT:    vpor %xmm3, %xmm5, %xmm3
8048 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
8049 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm8, %xmm5
8050 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm8[0],ymm5[1],ymm8[2,3,4],ymm5[5],ymm8[6,7,8],ymm5[9],ymm8[10,11,12],ymm5[13],ymm8[14,15]
8051 ; AVX2-SLOW-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [6,13,0,0,0,0,0,0,0,5,12,3,10,1,8,15,6,13,0,0,0,0,0,0,0,5,12,3,10,1,8,15]
8052 ; AVX2-SLOW-NEXT:    # ymm8 = mem[0,1,0,1]
8053 ; AVX2-SLOW-NEXT:    vpshufb %ymm8, %ymm5, %ymm5
8054 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm3, %ymm5, %ymm3
8055 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
8056 ; AVX2-SLOW-NEXT:    vpshufb %xmm4, %xmm5, %xmm4
8057 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm5
8058 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm5, %xmm5
8059 ; AVX2-SLOW-NEXT:    vpor %xmm4, %xmm5, %xmm4
8060 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm11, %xmm5
8061 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm11[0],ymm5[1],ymm11[2,3,4],ymm5[5],ymm11[6,7,8],ymm5[9],ymm11[10,11,12],ymm5[13],ymm11[14,15]
8062 ; AVX2-SLOW-NEXT:    vpshufb %ymm8, %ymm5, %ymm5
8063 ; AVX2-SLOW-NEXT:    vpblendvb %ymm15, %ymm4, %ymm5, %ymm4
8064 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
8065 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm9, %xmm5
8066 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,128,128,128,5,12,128,128,1,8,15,u,u,u,u>
8067 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm5, %xmm5
8068 ; AVX2-SLOW-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,0,7,14,128,128,3,10,128,128,128,u,u,u,u>
8069 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm9, %xmm9
8070 ; AVX2-SLOW-NEXT:    vpor %xmm5, %xmm9, %xmm5
8071 ; AVX2-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm13 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
8072 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
8073 ; AVX2-SLOW-NEXT:    vpshufb %xmm13, %xmm9, %xmm9
8074 ; AVX2-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm10 = [6,13,6,13,6,13,6,13,6,13,6,13,6,13,6,13]
8075 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
8076 ; AVX2-SLOW-NEXT:    vpshufb %xmm10, %xmm11, %xmm11
8077 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm9 = xmm11[0],xmm9[0],xmm11[1],xmm9[1],xmm11[2],xmm9[2],xmm11[3],xmm9[3]
8078 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
8079 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
8080 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3,4,5,6],ymm9[7]
8081 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
8082 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm9[0],ymm5[1,2,3,4,5,6,7],ymm9[8],ymm5[9,10,11,12,13,14,15]
8083 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm5 = ymm9[0,1,2,3],ymm5[4,5,6,7]
8084 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload
8085 ; AVX2-SLOW-NEXT:    vextracti128 $1, %ymm11, %xmm9
8086 ; AVX2-SLOW-NEXT:    vpshufb %xmm7, %xmm9, %xmm7
8087 ; AVX2-SLOW-NEXT:    vpshufb %xmm8, %xmm11, %xmm8
8088 ; AVX2-SLOW-NEXT:    vpor %xmm7, %xmm8, %xmm7
8089 ; AVX2-SLOW-NEXT:    vmovdqa (%rsp), %xmm8 # 16-byte Reload
8090 ; AVX2-SLOW-NEXT:    vpshufb %xmm13, %xmm8, %xmm8
8091 ; AVX2-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
8092 ; AVX2-SLOW-NEXT:    vpshufb %xmm10, %xmm9, %xmm9
8093 ; AVX2-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3]
8094 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
8095 ; AVX2-SLOW-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
8096 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3,4,5,6],ymm8[7]
8097 ; AVX2-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
8098 ; AVX2-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1,2,3,4,5,6,7],ymm8[8],ymm7[9,10,11,12,13,14,15]
8099 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm7 = ymm8[0,1,2,3],ymm7[4,5,6,7]
8100 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm8 # 32-byte Folded Reload
8101 ; AVX2-SLOW-NEXT:    # ymm8 = ymm12[0],mem[1,2,3,4,5,6,7],ymm12[8],mem[9,10,11,12,13,14,15]
8102 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm8 = ymm12[0,1,2,3],ymm8[4,5,6,7]
8103 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14, %ymm9 # 32-byte Folded Reload
8104 ; AVX2-SLOW-NEXT:    # ymm9 = ymm14[0],mem[1,2,3,4,5,6,7],ymm14[8],mem[9,10,11,12,13,14,15]
8105 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm9 = ymm14[0,1,2,3],ymm9[4,5,6,7]
8106 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm10 # 32-byte Folded Reload
8107 ; AVX2-SLOW-NEXT:    # ymm10 = ymm6[0],mem[1,2,3,4,5,6,7],ymm6[8],mem[9,10,11,12,13,14,15]
8108 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm10[4,5,6,7]
8109 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm10 # 32-byte Folded Reload
8110 ; AVX2-SLOW-NEXT:    # ymm10 = ymm0[0],mem[1,2,3,4,5,6,7],ymm0[8],mem[9,10,11,12,13,14,15]
8111 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm10[4,5,6,7]
8112 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm10 # 32-byte Folded Reload
8113 ; AVX2-SLOW-NEXT:    # ymm10 = ymm2[0],mem[1,2,3,4,5,6,7],ymm2[8],mem[9,10,11,12,13,14,15]
8114 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm10[4,5,6,7]
8115 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
8116 ; AVX2-SLOW-NEXT:    # ymm10 = ymm1[0],mem[1,2,3,4,5,6,7],ymm1[8],mem[9,10,11,12,13,14,15]
8117 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm10[4,5,6,7]
8118 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm10 # 32-byte Folded Reload
8119 ; AVX2-SLOW-NEXT:    # ymm10 = ymm3[0],mem[1,2,3,4,5,6,7],ymm3[8],mem[9,10,11,12,13,14,15]
8120 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm10[4,5,6,7]
8121 ; AVX2-SLOW-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm10 # 32-byte Folded Reload
8122 ; AVX2-SLOW-NEXT:    # ymm10 = ymm4[0],mem[1,2,3,4,5,6,7],ymm4[8],mem[9,10,11,12,13,14,15]
8123 ; AVX2-SLOW-NEXT:    vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm10[4,5,6,7]
8124 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
8125 ; AVX2-SLOW-NEXT:    vmovaps %ymm10, 32(%rsi)
8126 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
8127 ; AVX2-SLOW-NEXT:    vmovaps %ymm10, (%rsi)
8128 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
8129 ; AVX2-SLOW-NEXT:    vmovaps %ymm10, 32(%rdx)
8130 ; AVX2-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
8131 ; AVX2-SLOW-NEXT:    vmovaps %ymm10, (%rdx)
8132 ; AVX2-SLOW-NEXT:    vmovdqa %ymm5, 32(%rcx)
8133 ; AVX2-SLOW-NEXT:    vmovdqa %ymm7, (%rcx)
8134 ; AVX2-SLOW-NEXT:    vmovdqa %ymm8, 32(%r8)
8135 ; AVX2-SLOW-NEXT:    vmovdqa %ymm9, (%r8)
8136 ; AVX2-SLOW-NEXT:    vmovdqa %ymm6, 32(%r9)
8137 ; AVX2-SLOW-NEXT:    vmovdqa %ymm0, (%r9)
8138 ; AVX2-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
8139 ; AVX2-SLOW-NEXT:    vmovdqa %ymm2, 32(%rax)
8140 ; AVX2-SLOW-NEXT:    vmovdqa %ymm1, (%rax)
8141 ; AVX2-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
8142 ; AVX2-SLOW-NEXT:    vmovdqa %ymm3, 32(%rax)
8143 ; AVX2-SLOW-NEXT:    vmovdqa %ymm4, (%rax)
8144 ; AVX2-SLOW-NEXT:    addq $760, %rsp # imm = 0x2F8
8145 ; AVX2-SLOW-NEXT:    vzeroupper
8146 ; AVX2-SLOW-NEXT:    retq
8148 ; AVX2-FAST-LABEL: load_i8_stride7_vf64:
8149 ; AVX2-FAST:       # %bb.0:
8150 ; AVX2-FAST-NEXT:    subq $776, %rsp # imm = 0x308
8151 ; AVX2-FAST-NEXT:    vmovdqa 320(%rdi), %ymm15
8152 ; AVX2-FAST-NEXT:    vmovdqa 224(%rdi), %ymm6
8153 ; AVX2-FAST-NEXT:    vmovdqa 256(%rdi), %ymm10
8154 ; AVX2-FAST-NEXT:    vmovdqa (%rdi), %ymm1
8155 ; AVX2-FAST-NEXT:    vmovdqa 32(%rdi), %ymm12
8156 ; AVX2-FAST-NEXT:    vmovdqa 64(%rdi), %ymm4
8157 ; AVX2-FAST-NEXT:    vmovdqa 96(%rdi), %ymm5
8158 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm3 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
8159 ; AVX2-FAST-NEXT:    vpblendvb %ymm3, %ymm1, %ymm12, %ymm0
8160 ; AVX2-FAST-NEXT:    vmovdqa %ymm3, %ymm7
8161 ; AVX2-FAST-NEXT:    vmovdqu %ymm12, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8162 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, %ymm13
8163 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8164 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm2
8165 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm1 = <128,128,128,5,12,128,128,1,8,15,u,u,u,u,u,u>
8166 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm2, %xmm3
8167 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm2 = <0,7,14,128,128,3,10,128,128,128,u,u,u,u,u,u>
8168 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
8169 ; AVX2-FAST-NEXT:    vpor %xmm3, %xmm0, %xmm0
8170 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm14 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
8171 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm5, %ymm4, %ymm3
8172 ; AVX2-FAST-NEXT:    vmovdqa %ymm5, %ymm9
8173 ; AVX2-FAST-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8174 ; AVX2-FAST-NEXT:    vmovdqa %ymm4, %ymm11
8175 ; AVX2-FAST-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8176 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm4
8177 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]
8178 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,7,14,0,0,0,0,0,0,0,6,13,4,11,2,9,0,7,14,0,0,0,0,0,0,0,6,13,4,11,2,9]
8179 ; AVX2-FAST-NEXT:    # ymm3 = mem[0,1,0,1]
8180 ; AVX2-FAST-NEXT:    vpshufb %ymm3, %ymm4, %ymm5
8181 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0]
8182 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm0, %ymm5, %ymm0
8183 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8184 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm6, %ymm10, %ymm5
8185 ; AVX2-FAST-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8186 ; AVX2-FAST-NEXT:    vmovdqa %ymm6, %ymm7
8187 ; AVX2-FAST-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8188 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm5, %xmm6
8189 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm6, %xmm1
8190 ; AVX2-FAST-NEXT:    vmovdqa 288(%rdi), %ymm6
8191 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm5, %xmm2
8192 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm2, %xmm1
8193 ; AVX2-FAST-NEXT:    vmovdqa %ymm15, %ymm0
8194 ; AVX2-FAST-NEXT:    vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8195 ; AVX2-FAST-NEXT:    vpblendvb %ymm14, %ymm15, %ymm6, %ymm2
8196 ; AVX2-FAST-NEXT:    vmovdqa %ymm6, %ymm8
8197 ; AVX2-FAST-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8198 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm5
8199 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm5[2],ymm2[3,4],ymm5[5],ymm2[6,7,8,9],ymm5[10],ymm2[11,12],ymm5[13],ymm2[14,15]
8200 ; AVX2-FAST-NEXT:    vpshufb %ymm3, %ymm2, %ymm2
8201 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm1, %ymm2, %ymm1
8202 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8203 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm15 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
8204 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm11, %ymm9, %ymm2
8205 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm3
8206 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm2[0,1],ymm3[2],ymm2[3,4,5],ymm3[6],ymm2[7,8,9],ymm3[10],ymm2[11,12,13],ymm3[14],ymm2[15]
8207 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
8208 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm13, %ymm12, %ymm4
8209 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, %ymm9
8210 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm5
8211 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm2 = <128,128,128,6,13,128,128,2,9,u,u,u,u,u,u,u>
8212 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm5, %xmm5
8213 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm6 = <1,8,15,128,128,4,11,128,128,u,u,u,u,u,u,u>
8214 ; AVX2-FAST-NEXT:    vpshufb %xmm6, %xmm4, %xmm4
8215 ; AVX2-FAST-NEXT:    vpor %xmm5, %xmm4, %xmm4
8216 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [1,8,15,0,0,0,0,0,0,0,7,14,5,12,3,10,1,8,15,0,0,0,0,0,0,0,7,14,5,12,3,10]
8217 ; AVX2-FAST-NEXT:    # ymm5 = mem[0,1,0,1]
8218 ; AVX2-FAST-NEXT:    vpshufb %ymm5, %ymm3, %ymm3
8219 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = <0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,u,u,u,u,u,u,u,u,u,u,u,u,u>
8220 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm3, %ymm4, %ymm3
8221 ; AVX2-FAST-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8222 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm8, %ymm0, %ymm3
8223 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm8
8224 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1],ymm8[2],ymm3[3,4,5],ymm8[6],ymm3[7,8,9],ymm8[10],ymm3[11,12,13],ymm8[14],ymm3[15]
8225 ; AVX2-FAST-NEXT:    vpshufb %ymm5, %ymm3, %ymm3
8226 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm7, %ymm10, %ymm5
8227 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm5, %xmm8
8228 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm8, %xmm2
8229 ; AVX2-FAST-NEXT:    vpshufb %xmm6, %xmm5, %xmm5
8230 ; AVX2-FAST-NEXT:    vpor %xmm2, %xmm5, %xmm2
8231 ; AVX2-FAST-NEXT:    vpblendvb %ymm1, %ymm3, %ymm2, %ymm5
8232 ; AVX2-FAST-NEXT:    vmovdqa 160(%rdi), %ymm1
8233 ; AVX2-FAST-NEXT:    vmovdqa 128(%rdi), %ymm3
8234 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
8235 ; AVX2-FAST-NEXT:    vpblendvb %ymm0, %ymm1, %ymm3, %ymm2
8236 ; AVX2-FAST-NEXT:    vmovdqa %ymm3, %ymm12
8237 ; AVX2-FAST-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8238 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, %ymm10
8239 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8240 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, %ymm9
8241 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm3
8242 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,128,128,3,10,128,128,128,6,13,u,u,u,u>
8243 ; AVX2-FAST-NEXT:    vpshufb %xmm7, %xmm3, %xmm3
8244 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm11 = <u,u,u,5,12,128,128,1,8,15,128,128,u,u,u,u>
8245 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm2, %xmm2
8246 ; AVX2-FAST-NEXT:    vpor %xmm3, %xmm2, %xmm2
8247 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
8248 ; AVX2-FAST-NEXT:    vmovdqa 192(%rdi), %ymm0
8249 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [1,2,0,2,1,2,4,6]
8250 ; AVX2-FAST-NEXT:    vpermd %ymm0, %ymm4, %ymm3
8251 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, %ymm8
8252 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8253 ; AVX2-FAST-NEXT:    vpbroadcastd {{.*#+}} ymm1 = [0,7,10,13,0,7,10,13,0,7,10,13,0,7,10,13,0,7,10,13,0,7,10,13,0,7,10,13,0,7,10,13]
8254 ; AVX2-FAST-NEXT:    vpshufb %ymm1, %ymm3, %ymm3
8255 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5,6],ymm3[7]
8256 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = [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]
8257 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm0 # 32-byte Folded Reload
8258 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8259 ; AVX2-FAST-NEXT:    vmovdqa 384(%rdi), %ymm2
8260 ; AVX2-FAST-NEXT:    vmovdqa 352(%rdi), %ymm3
8261 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm2, %ymm3, %ymm0
8262 ; AVX2-FAST-NEXT:    vmovdqa %ymm3, %ymm14
8263 ; AVX2-FAST-NEXT:    vmovdqa %ymm2, %ymm3
8264 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm13
8265 ; AVX2-FAST-NEXT:    vpshufb %xmm7, %xmm13, %xmm7
8266 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm0, %xmm0
8267 ; AVX2-FAST-NEXT:    vpor %xmm7, %xmm0, %xmm0
8268 ; AVX2-FAST-NEXT:    vmovdqa 416(%rdi), %ymm7
8269 ; AVX2-FAST-NEXT:    vpermd %ymm7, %ymm4, %ymm4
8270 ; AVX2-FAST-NEXT:    vmovdqa %ymm7, %ymm9
8271 ; AVX2-FAST-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8272 ; AVX2-FAST-NEXT:    vpshufb %ymm1, %ymm4, %ymm1
8273 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
8274 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm1[7]
8275 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
8276 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8277 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm13 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
8278 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm10, %ymm12, %ymm0
8279 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm1 = <u,u,u,6,13,128,128,2,9,128,128,128,u,u,u,u>
8280 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm0, %xmm4
8281 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm0
8282 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,128,128,4,11,128,128,0,7,14,u,u,u,u>
8283 ; AVX2-FAST-NEXT:    vpshufb %xmm7, %xmm0, %xmm0
8284 ; AVX2-FAST-NEXT:    vpor %xmm4, %xmm0, %xmm0
8285 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
8286 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = [1,3,0,2,1,3,4,6]
8287 ; AVX2-FAST-NEXT:    vpermd %ymm8, %ymm4, %ymm11
8288 ; AVX2-FAST-NEXT:    vpbroadcastd {{.*#+}} ymm12 = [1,4,11,14,1,4,11,14,1,4,11,14,1,4,11,14,1,4,11,14,1,4,11,14,1,4,11,14,1,4,11,14]
8289 ; AVX2-FAST-NEXT:    vpshufb %ymm12, %ymm11, %ymm11
8290 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm11[7]
8291 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
8292 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8293 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm2, %ymm14, %ymm0
8294 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm0, %xmm1
8295 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm0
8296 ; AVX2-FAST-NEXT:    vpshufb %xmm7, %xmm0, %xmm0
8297 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm0, %xmm0
8298 ; AVX2-FAST-NEXT:    vpermd %ymm9, %ymm4, %ymm1
8299 ; AVX2-FAST-NEXT:    vpshufb %ymm12, %ymm1, %ymm1
8300 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
8301 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm1[7]
8302 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm5, %ymm0, %ymm0
8303 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8304 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
8305 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm14, %ymm2, %ymm0
8306 ; AVX2-FAST-NEXT:    vmovdqu %ymm14, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8307 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm1
8308 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm4 = <u,u,128,128,128,6,13,128,128,2,9,u,u,u,u,u>
8309 ; AVX2-FAST-NEXT:    vpshufb %xmm4, %xmm1, %xmm1
8310 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm6 = <u,u,1,8,15,128,128,4,11,128,128,u,u,u,u,u>
8311 ; AVX2-FAST-NEXT:    vpshufb %xmm6, %xmm0, %xmm0
8312 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm0, %xmm0
8313 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} xmm10 = [0,0,0,128,128,128,5,12,0,0,0,128,128,128,5,12]
8314 ; AVX2-FAST-NEXT:    vmovdqa 432(%rdi), %xmm5
8315 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm5, %xmm1
8316 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} xmm11 = [0,0,0,0,7,14,128,128,0,0,0,0,7,14,128,128]
8317 ; AVX2-FAST-NEXT:    vmovdqa 416(%rdi), %xmm15
8318 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm15, %xmm12
8319 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm12, %xmm1
8320 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm12
8321 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8322 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm9 = [0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
8323 ; AVX2-FAST-NEXT:    # ymm9 = mem[0,1,0,1]
8324 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm12, %ymm1, %ymm1
8325 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8326 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
8327 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm1 # 32-byte Folded Reload
8328 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm12
8329 ; AVX2-FAST-NEXT:    vpshufb %xmm4, %xmm12, %xmm4
8330 ; AVX2-FAST-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
8331 ; AVX2-FAST-NEXT:    vpor %xmm4, %xmm1, %xmm6
8332 ; AVX2-FAST-NEXT:    vmovdqa 208(%rdi), %xmm2
8333 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm2, %xmm10
8334 ; AVX2-FAST-NEXT:    vmovdqa %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
8335 ; AVX2-FAST-NEXT:    vmovdqa 192(%rdi), %xmm8
8336 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm8, %xmm11
8337 ; AVX2-FAST-NEXT:    vpor %xmm10, %xmm11, %xmm10
8338 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
8339 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
8340 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm6, %ymm10, %ymm1
8341 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8342 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
8343 ; AVX2-FAST-NEXT:    vpblendvb %ymm0, %ymm14, %ymm3, %ymm6
8344 ; AVX2-FAST-NEXT:    vmovdqa %ymm3, %ymm14
8345 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, %ymm3
8346 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm10 = <u,u,2,9,128,128,128,5,12,128,128,u,u,u,u,u>
8347 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm6, %xmm11
8348 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
8349 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm12 = <u,u,128,128,0,7,14,128,128,3,10,u,u,u,u,u>
8350 ; AVX2-FAST-NEXT:    vpshufb %xmm12, %xmm6, %xmm6
8351 ; AVX2-FAST-NEXT:    vpor %xmm6, %xmm11, %xmm6
8352 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} xmm11 = [0,0,0,128,128,128,6,13,0,0,0,128,128,128,6,13]
8353 ; AVX2-FAST-NEXT:    vmovdqa %xmm5, (%rsp) # 16-byte Spill
8354 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm5, %xmm13
8355 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} xmm1 = [0,0,0,1,8,15,128,128,0,0,0,1,8,15,128,128]
8356 ; AVX2-FAST-NEXT:    vmovdqa %xmm15, %xmm7
8357 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm15, %xmm15
8358 ; AVX2-FAST-NEXT:    vpor %xmm13, %xmm15, %xmm13
8359 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
8360 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
8361 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm6, %ymm13, %ymm0
8362 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8363 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
8364 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
8365 ; AVX2-FAST-NEXT:    vpblendvb %ymm3, %ymm4, %ymm0, %ymm6
8366 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm6, %xmm10
8367 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
8368 ; AVX2-FAST-NEXT:    vpshufb %xmm12, %xmm6, %xmm6
8369 ; AVX2-FAST-NEXT:    vpor %xmm6, %xmm10, %xmm6
8370 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm2, %xmm10
8371 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm8, %xmm1
8372 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm10, %xmm1
8373 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
8374 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8375 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm6, %ymm1, %ymm1
8376 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8377 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
8378 ; AVX2-FAST-NEXT:    vmovdqa %ymm14, %ymm3
8379 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
8380 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm2, %ymm14, %ymm1
8381 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm14 = <u,u,3,10,128,128,128,6,13,128,128,u,u,u,u,u>
8382 ; AVX2-FAST-NEXT:    vpshufb %xmm14, %xmm1, %xmm10
8383 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm1
8384 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm12 = <u,u,128,128,1,8,15,128,128,4,11,u,u,u,u,u>
8385 ; AVX2-FAST-NEXT:    vpshufb %xmm12, %xmm1, %xmm1
8386 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm10, %xmm1
8387 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} xmm10 = [0,0,0,2,9,128,128,128,0,0,0,2,9,128,128,128]
8388 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm7, %xmm13
8389 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} xmm15 = [0,0,0,128,128,0,7,14,0,0,0,128,128,0,7,14]
8390 ; AVX2-FAST-NEXT:    vpshufb %xmm15, %xmm5, %xmm11
8391 ; AVX2-FAST-NEXT:    vpor %xmm13, %xmm11, %xmm11
8392 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8393 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
8394 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm1, %ymm11, %ymm1
8395 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8396 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm4, %ymm0, %ymm1
8397 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, %ymm13
8398 ; AVX2-FAST-NEXT:    vpshufb %xmm14, %xmm1, %xmm6
8399 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm1
8400 ; AVX2-FAST-NEXT:    vpshufb %xmm12, %xmm1, %xmm1
8401 ; AVX2-FAST-NEXT:    vpor %xmm6, %xmm1, %xmm1
8402 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm8, %xmm6
8403 ; AVX2-FAST-NEXT:    vmovdqa %xmm8, %xmm14
8404 ; AVX2-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
8405 ; AVX2-FAST-NEXT:    vpshufb %xmm15, %xmm0, %xmm10
8406 ; AVX2-FAST-NEXT:    vpor %xmm6, %xmm10, %xmm6
8407 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8408 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
8409 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm1, %ymm6, %ymm0
8410 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8411 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm12 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
8412 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm2, %ymm3, %ymm1
8413 ; AVX2-FAST-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8414 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = <255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u>
8415 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm3, %ymm2, %ymm1
8416 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm2
8417 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm3 = <u,u,128,128,2,9,128,128,128,5,12,u,u,u,u,u>
8418 ; AVX2-FAST-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
8419 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm10 = <u,u,4,11,128,128,0,7,14,128,128,u,u,u,u,u>
8420 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm1, %xmm1
8421 ; AVX2-FAST-NEXT:    vpor %xmm2, %xmm1, %xmm1
8422 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [0,0,0,3,10,128,128,128,0,0,0,3,10,128,128,128]
8423 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm7, %xmm5
8424 ; AVX2-FAST-NEXT:    vpbroadcastq {{.*#+}} xmm11 = [0,0,0,128,128,1,8,15,0,0,0,128,128,1,8,15]
8425 ; AVX2-FAST-NEXT:    vmovdqa (%rsp), %xmm0 # 16-byte Reload
8426 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm0, %xmm8
8427 ; AVX2-FAST-NEXT:    vpor %xmm5, %xmm8, %xmm5
8428 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8429 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
8430 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm1, %ymm5, %ymm0
8431 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, (%rsp) # 32-byte Spill
8432 ; AVX2-FAST-NEXT:    vmovdqa %ymm4, %ymm0
8433 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm4, %ymm13, %ymm4
8434 ; AVX2-FAST-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8435 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm13, %ymm0, %ymm1
8436 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm5
8437 ; AVX2-FAST-NEXT:    vpshufb %xmm3, %xmm5, %xmm3
8438 ; AVX2-FAST-NEXT:    vpshufb %xmm10, %xmm1, %xmm1
8439 ; AVX2-FAST-NEXT:    vpor %xmm3, %xmm1, %xmm1
8440 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm14, %xmm2
8441 ; AVX2-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
8442 ; AVX2-FAST-NEXT:    vpshufb %xmm11, %xmm0, %xmm3
8443 ; AVX2-FAST-NEXT:    vpor %xmm2, %xmm3, %xmm2
8444 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8445 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
8446 ; AVX2-FAST-NEXT:    vpblendvb %ymm9, %ymm1, %ymm2, %ymm0
8447 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8448 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
8449 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
8450 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm12 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
8451 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm0, %ymm1, %ymm11
8452 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm4 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
8453 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm9
8454 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm1, %ymm0, %ymm10
8455 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm5 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
8456 ; AVX2-FAST-NEXT:    vpblendvb %ymm5, %ymm1, %ymm0, %ymm2
8457 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8458 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
8459 ; AVX2-FAST-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
8460 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8461 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
8462 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
8463 ; AVX2-FAST-NEXT:    vpblendvb %ymm2, %ymm1, %ymm0, %ymm2
8464 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8465 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm0, %ymm1, %ymm3
8466 ; AVX2-FAST-NEXT:    vpblendvb %ymm4, %ymm0, %ymm1, %ymm8
8467 ; AVX2-FAST-NEXT:    vmovdqa %ymm4, %ymm15
8468 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm1, %ymm0, %ymm2
8469 ; AVX2-FAST-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8470 ; AVX2-FAST-NEXT:    vpblendvb %ymm5, %ymm1, %ymm0, %ymm0
8471 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8472 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
8473 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
8474 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
8475 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm2, %ymm0, %ymm1
8476 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm2, %ymm0, %ymm4
8477 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm2, %ymm0, %ymm14
8478 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm0, %ymm2, %ymm13
8479 ; AVX2-FAST-NEXT:    vmovdqu %ymm13, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8480 ; AVX2-FAST-NEXT:    vpblendvb %ymm5, %ymm0, %ymm2, %ymm0
8481 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8482 ; AVX2-FAST-NEXT:    vmovdqa %ymm5, %ymm13
8483 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
8484 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
8485 ; AVX2-FAST-NEXT:    vpblendvb %ymm7, %ymm0, %ymm5, %ymm2
8486 ; AVX2-FAST-NEXT:    vpblendvb %ymm12, %ymm0, %ymm5, %ymm12
8487 ; AVX2-FAST-NEXT:    vpblendvb %ymm15, %ymm0, %ymm5, %ymm15
8488 ; AVX2-FAST-NEXT:    vpblendvb %ymm6, %ymm5, %ymm0, %ymm6
8489 ; AVX2-FAST-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8490 ; AVX2-FAST-NEXT:    vpblendvb %ymm13, %ymm5, %ymm0, %ymm0
8491 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8492 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm7 = <2,9,128,128,128,5,12,128,128,u,u,u,u,u,u,u>
8493 ; AVX2-FAST-NEXT:    vpshufb %xmm7, %xmm11, %xmm0
8494 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm11
8495 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm6 = <128,128,0,7,14,128,128,3,10,u,u,u,u,u,u,u>
8496 ; AVX2-FAST-NEXT:    vpshufb %xmm6, %xmm11, %xmm11
8497 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm11, %xmm0
8498 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm11
8499 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0,1,2],ymm11[3],ymm1[4,5],ymm11[6],ymm1[7,8,9,10],ymm11[11],ymm1[12,13],ymm11[14],ymm1[15]
8500 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [2,9,0,0,0,0,0,0,0,1,8,15,6,13,4,11,2,9,0,0,0,0,0,0,0,1,8,15,6,13,4,11]
8501 ; AVX2-FAST-NEXT:    # ymm5 = mem[0,1,0,1]
8502 ; AVX2-FAST-NEXT:    vpshufb %ymm5, %ymm1, %ymm1
8503 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm11 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
8504 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm0
8505 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8506 ; AVX2-FAST-NEXT:    vpshufb %xmm7, %xmm3, %xmm0
8507 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm1
8508 ; AVX2-FAST-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
8509 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm1, %xmm0
8510 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm1
8511 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]
8512 ; AVX2-FAST-NEXT:    vpshufb %ymm5, %ymm1, %ymm1
8513 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm0
8514 ; AVX2-FAST-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8515 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm0 = <3,10,128,128,128,6,13,128,128,u,u,u,u,u,u,u>
8516 ; AVX2-FAST-NEXT:    vpshufb %xmm0, %xmm9, %xmm1
8517 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm9, %xmm2
8518 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm3 = <128,128,1,8,15,128,128,4,11,u,u,u,u,u,u,u>
8519 ; AVX2-FAST-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
8520 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm2, %xmm1
8521 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm2
8522 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm4[1,2],ymm2[3],ymm4[4,5,6],ymm2[7,8],ymm4[9,10],ymm2[11],ymm4[12,13,14],ymm2[15]
8523 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [3,10,0,0,0,0,0,0,0,2,9,0,7,14,5,12,3,10,0,0,0,0,0,0,0,2,9,0,7,14,5,12]
8524 ; AVX2-FAST-NEXT:    # ymm4 = mem[0,1,0,1]
8525 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm2, %ymm2
8526 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm1, %ymm2, %ymm9
8527 ; AVX2-FAST-NEXT:    vpshufb %xmm0, %xmm8, %xmm0
8528 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm8, %xmm1
8529 ; AVX2-FAST-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
8530 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm1, %xmm0
8531 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm12, %xmm1
8532 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm12[1,2],ymm1[3],ymm12[4,5,6],ymm1[7,8],ymm12[9,10],ymm1[11],ymm12[12,13,14],ymm1[15]
8533 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm1, %ymm1
8534 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm12
8535 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm10, %xmm0
8536 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm1 = <128,128,2,9,128,128,128,5,12,u,u,u,u,u,u,u>
8537 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
8538 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm2 = <4,11,128,128,0,7,14,128,128,u,u,u,u,u,u,u>
8539 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm10, %xmm3
8540 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm3, %xmm0
8541 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm14, %xmm3
8542 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm14[1,2,3],ymm3[4],ymm14[5,6],ymm3[7,8],ymm14[9,10,11],ymm3[12],ymm14[13,14],ymm3[15]
8543 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [4,11,0,0,0,0,0,0,0,3,10,1,8,15,6,13,4,11,0,0,0,0,0,0,0,3,10,1,8,15,6,13]
8544 ; AVX2-FAST-NEXT:    # ymm4 = mem[0,1,0,1]
8545 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm3, %ymm3
8546 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm0, %ymm3, %ymm14
8547 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
8548 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm0
8549 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
8550 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm3, %xmm1
8551 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm1, %xmm0
8552 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm15, %xmm1
8553 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm15[1,2,3],ymm1[4],ymm15[5,6],ymm1[7,8],ymm15[9,10,11],ymm1[12],ymm15[13,14],ymm1[15]
8554 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm1, %ymm1
8555 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm0, %ymm1, %ymm15
8556 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
8557 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm0
8558 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm1 = <128,128,3,10,128,128,128,6,13,u,u,u,u,u,u,u>
8559 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
8560 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm2 = <5,12,128,128,1,8,15,128,128,u,u,u,u,u,u,u>
8561 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm3, %xmm3
8562 ; AVX2-FAST-NEXT:    vpor %xmm0, %xmm3, %xmm0
8563 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
8564 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm3
8565 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1],ymm4[2,3],ymm3[4],ymm4[5,6,7,8],ymm3[9],ymm4[10,11],ymm3[12],ymm4[13,14,15]
8566 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [5,12,0,0,0,0,0,0,0,4,11,2,9,0,7,14,5,12,0,0,0,0,0,0,0,4,11,2,9,0,7,14]
8567 ; AVX2-FAST-NEXT:    # ymm4 = mem[0,1,0,1]
8568 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm3, %ymm3
8569 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm0, %ymm3, %ymm0
8570 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
8571 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm5, %xmm3
8572 ; AVX2-FAST-NEXT:    vpshufb %xmm1, %xmm3, %xmm1
8573 ; AVX2-FAST-NEXT:    vpshufb %xmm2, %xmm5, %xmm2
8574 ; AVX2-FAST-NEXT:    vpor %xmm1, %xmm2, %xmm1
8575 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
8576 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm2
8577 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm3[0],ymm2[1],ymm3[2,3],ymm2[4],ymm3[5,6,7,8],ymm2[9],ymm3[10,11],ymm2[12],ymm3[13,14,15]
8578 ; AVX2-FAST-NEXT:    vpshufb %ymm4, %ymm2, %ymm2
8579 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm1, %ymm2, %ymm1
8580 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm3 = <6,13,128,128,2,9,128,128,128,u,u,u,u,u,u,u>
8581 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
8582 ; AVX2-FAST-NEXT:    vpshufb %xmm3, %xmm4, %xmm2
8583 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm4
8584 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm5 = <128,128,4,11,128,128,0,7,14,u,u,u,u,u,u,u>
8585 ; AVX2-FAST-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
8586 ; AVX2-FAST-NEXT:    vpor %xmm2, %xmm4, %xmm2
8587 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
8588 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm4
8589 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm6[0],ymm4[1],ymm6[2,3,4],ymm4[5],ymm6[6,7,8],ymm4[9],ymm6[10,11,12],ymm4[13],ymm6[14,15]
8590 ; AVX2-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm6 = [6,13,0,0,0,0,0,0,0,5,12,3,10,1,8,15,6,13,0,0,0,0,0,0,0,5,12,3,10,1,8,15]
8591 ; AVX2-FAST-NEXT:    # ymm6 = mem[0,1,0,1]
8592 ; AVX2-FAST-NEXT:    vpshufb %ymm6, %ymm4, %ymm4
8593 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm2, %ymm4, %ymm2
8594 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
8595 ; AVX2-FAST-NEXT:    vpshufb %xmm3, %xmm4, %xmm3
8596 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm4
8597 ; AVX2-FAST-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
8598 ; AVX2-FAST-NEXT:    vpor %xmm3, %xmm4, %xmm3
8599 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
8600 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm5, %xmm4
8601 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm5[0],ymm4[1],ymm5[2,3,4],ymm4[5],ymm5[6,7,8],ymm4[9],ymm5[10,11,12],ymm4[13],ymm5[14,15]
8602 ; AVX2-FAST-NEXT:    vpshufb %ymm6, %ymm4, %ymm4
8603 ; AVX2-FAST-NEXT:    vpblendvb %ymm11, %ymm3, %ymm4, %ymm3
8604 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
8605 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm7, %xmm4
8606 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm5 = <u,u,128,128,128,5,12,128,128,1,8,15,u,u,u,u>
8607 ; AVX2-FAST-NEXT:    vpshufb %xmm5, %xmm4, %xmm4
8608 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} xmm6 = <u,u,0,7,14,128,128,3,10,128,128,128,u,u,u,u>
8609 ; AVX2-FAST-NEXT:    vpshufb %xmm6, %xmm7, %xmm7
8610 ; AVX2-FAST-NEXT:    vpor %xmm4, %xmm7, %xmm4
8611 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
8612 ; AVX2-FAST-NEXT:    vmovdqa {{.*#+}} ymm7 = [1,3,1,2,1,3,5,6]
8613 ; AVX2-FAST-NEXT:    vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm8 # 32-byte Folded Reload
8614 ; AVX2-FAST-NEXT:    vpbroadcastd {{.*#+}} ymm10 = [2,5,8,15,2,5,8,15,2,5,8,15,2,5,8,15,2,5,8,15,2,5,8,15,2,5,8,15,2,5,8,15]
8615 ; AVX2-FAST-NEXT:    vpshufb %ymm10, %ymm8, %ymm8
8616 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3,4,5,6],ymm8[7]
8617 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
8618 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm4 = ymm8[0],ymm4[1,2,3,4,5,6,7],ymm8[8],ymm4[9,10,11,12,13,14,15]
8619 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm4 = ymm8[0,1,2,3],ymm4[4,5,6,7]
8620 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload
8621 ; AVX2-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm8
8622 ; AVX2-FAST-NEXT:    vpshufb %xmm5, %xmm8, %xmm5
8623 ; AVX2-FAST-NEXT:    vpshufb %xmm6, %xmm11, %xmm6
8624 ; AVX2-FAST-NEXT:    vpor %xmm5, %xmm6, %xmm5
8625 ; AVX2-FAST-NEXT:    vpermd {{[-0-9]+}}(%r{{[sb]}}p), %ymm7, %ymm6 # 32-byte Folded Reload
8626 ; AVX2-FAST-NEXT:    vpshufb %ymm10, %ymm6, %ymm6
8627 ; AVX2-FAST-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
8628 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3,4,5,6],ymm6[7]
8629 ; AVX2-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
8630 ; AVX2-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm6[0],ymm5[1,2,3,4,5,6,7],ymm6[8],ymm5[9,10,11,12,13,14,15]
8631 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
8632 ; AVX2-FAST-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm9, %ymm6 # 32-byte Folded Reload
8633 ; AVX2-FAST-NEXT:    # ymm6 = ymm9[0],mem[1,2,3,4,5,6,7],ymm9[8],mem[9,10,11,12,13,14,15]
8634 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm6 = ymm9[0,1,2,3],ymm6[4,5,6,7]
8635 ; AVX2-FAST-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm7 # 32-byte Folded Reload
8636 ; AVX2-FAST-NEXT:    # ymm7 = ymm12[0],mem[1,2,3,4,5,6,7],ymm12[8],mem[9,10,11,12,13,14,15]
8637 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm7 = ymm12[0,1,2,3],ymm7[4,5,6,7]
8638 ; AVX2-FAST-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14, %ymm8 # 32-byte Folded Reload
8639 ; AVX2-FAST-NEXT:    # ymm8 = ymm14[0],mem[1,2,3,4,5,6,7],ymm14[8],mem[9,10,11,12,13,14,15]
8640 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm8 = ymm14[0,1,2,3],ymm8[4,5,6,7]
8641 ; AVX2-FAST-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm15, %ymm9 # 32-byte Folded Reload
8642 ; AVX2-FAST-NEXT:    # ymm9 = ymm15[0],mem[1,2,3,4,5,6,7],ymm15[8],mem[9,10,11,12,13,14,15]
8643 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm9 = ymm15[0,1,2,3],ymm9[4,5,6,7]
8644 ; AVX2-FAST-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm10 # 32-byte Folded Reload
8645 ; AVX2-FAST-NEXT:    # ymm10 = ymm0[0],mem[1,2,3,4,5,6,7],ymm0[8],mem[9,10,11,12,13,14,15]
8646 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm10[4,5,6,7]
8647 ; AVX2-FAST-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
8648 ; AVX2-FAST-NEXT:    # ymm10 = ymm1[0],mem[1,2,3,4,5,6,7],ymm1[8],mem[9,10,11,12,13,14,15]
8649 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm10[4,5,6,7]
8650 ; AVX2-FAST-NEXT:    vpblendw $254, (%rsp), %ymm2, %ymm10 # 32-byte Folded Reload
8651 ; AVX2-FAST-NEXT:    # ymm10 = ymm2[0],mem[1,2,3,4,5,6,7],ymm2[8],mem[9,10,11,12,13,14,15]
8652 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm10[4,5,6,7]
8653 ; AVX2-FAST-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm10 # 32-byte Folded Reload
8654 ; AVX2-FAST-NEXT:    # ymm10 = ymm3[0],mem[1,2,3,4,5,6,7],ymm3[8],mem[9,10,11,12,13,14,15]
8655 ; AVX2-FAST-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm10[4,5,6,7]
8656 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
8657 ; AVX2-FAST-NEXT:    vmovaps %ymm10, 32(%rsi)
8658 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
8659 ; AVX2-FAST-NEXT:    vmovaps %ymm10, (%rsi)
8660 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
8661 ; AVX2-FAST-NEXT:    vmovaps %ymm10, 32(%rdx)
8662 ; AVX2-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
8663 ; AVX2-FAST-NEXT:    vmovaps %ymm10, (%rdx)
8664 ; AVX2-FAST-NEXT:    vmovdqa %ymm4, 32(%rcx)
8665 ; AVX2-FAST-NEXT:    vmovdqa %ymm5, (%rcx)
8666 ; AVX2-FAST-NEXT:    vmovdqa %ymm6, 32(%r8)
8667 ; AVX2-FAST-NEXT:    vmovdqa %ymm7, (%r8)
8668 ; AVX2-FAST-NEXT:    vmovdqa %ymm8, 32(%r9)
8669 ; AVX2-FAST-NEXT:    vmovdqa %ymm9, (%r9)
8670 ; AVX2-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
8671 ; AVX2-FAST-NEXT:    vmovdqa %ymm0, 32(%rax)
8672 ; AVX2-FAST-NEXT:    vmovdqa %ymm1, (%rax)
8673 ; AVX2-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
8674 ; AVX2-FAST-NEXT:    vmovdqa %ymm2, 32(%rax)
8675 ; AVX2-FAST-NEXT:    vmovdqa %ymm3, (%rax)
8676 ; AVX2-FAST-NEXT:    addq $776, %rsp # imm = 0x308
8677 ; AVX2-FAST-NEXT:    vzeroupper
8678 ; AVX2-FAST-NEXT:    retq
8680 ; AVX2-FAST-PERLANE-LABEL: load_i8_stride7_vf64:
8681 ; AVX2-FAST-PERLANE:       # %bb.0:
8682 ; AVX2-FAST-PERLANE-NEXT:    subq $760, %rsp # imm = 0x2F8
8683 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 320(%rdi), %ymm6
8684 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 224(%rdi), %ymm7
8685 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 256(%rdi), %ymm8
8686 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rdi), %ymm1
8687 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 32(%rdi), %ymm2
8688 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 64(%rdi), %ymm4
8689 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 96(%rdi), %ymm5
8690 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm3 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
8691 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm3, %ymm1, %ymm2, %ymm0
8692 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm3, %ymm13
8693 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, %ymm10
8694 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8695 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm1, %ymm12
8696 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8697 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm2
8698 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm1 = <128,128,128,5,12,128,128,1,8,15,u,u,u,u,u,u>
8699 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm1, %xmm2, %xmm3
8700 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm2 = <0,7,14,128,128,3,10,128,128,128,u,u,u,u,u,u>
8701 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm0, %xmm0
8702 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm3, %xmm0, %xmm0
8703 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
8704 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm5, %ymm4, %ymm3
8705 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm9, %ymm14
8706 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm5, %ymm9
8707 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8708 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm4, %ymm11
8709 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8710 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm3, %xmm4
8711 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm4 = ymm3[0,1],ymm4[2],ymm3[3,4],ymm4[5],ymm3[6,7,8,9],ymm4[10],ymm3[11,12],ymm4[13],ymm3[14,15]
8712 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [0,7,14,0,0,0,0,0,0,0,6,13,4,11,2,9,0,7,14,0,0,0,0,0,0,0,6,13,4,11,2,9]
8713 ; AVX2-FAST-PERLANE-NEXT:    # ymm3 = mem[0,1,0,1]
8714 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm3, %ymm4, %ymm5
8715 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0]
8716 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm0, %ymm5, %ymm0
8717 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8718 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm13, %ymm7, %ymm8, %ymm5
8719 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8720 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm7, %ymm0
8721 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8722 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm5, %xmm7
8723 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm1, %xmm7, %xmm1
8724 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 288(%rdi), %ymm7
8725 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm5, %xmm2
8726 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm2, %xmm1
8727 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, %ymm6, %ymm7, %ymm2
8728 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm7, %ymm15
8729 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm7, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8730 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm6, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8731 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm2, %xmm5
8732 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm5[2],ymm2[3,4],ymm5[5],ymm2[6,7,8,9],ymm5[10],ymm2[11,12],ymm5[13],ymm2[14,15]
8733 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm3, %ymm2, %ymm2
8734 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm1, %ymm2, %ymm1
8735 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8736 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm13, %ymm11, %ymm9, %ymm2
8737 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm2, %xmm3
8738 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm4 = ymm2[0,1],ymm3[2],ymm2[3,4,5],ymm3[6],ymm2[7,8,9],ymm3[10],ymm2[11,12,13],ymm3[14],ymm2[15]
8739 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
8740 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm12, %ymm10, %ymm5
8741 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, %ymm1
8742 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm5, %xmm3
8743 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm2 = <128,128,128,6,13,128,128,2,9,u,u,u,u,u,u,u>
8744 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm3, %xmm7
8745 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm3 = <1,8,15,128,128,4,11,128,128,u,u,u,u,u,u,u>
8746 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm5, %xmm5
8747 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm7, %xmm5, %xmm5
8748 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [1,8,15,0,0,0,0,0,0,0,7,14,5,12,3,10,1,8,15,0,0,0,0,0,0,0,7,14,5,12,3,10]
8749 ; AVX2-FAST-PERLANE-NEXT:    # ymm7 = mem[0,1,0,1]
8750 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm7, %ymm4, %ymm4
8751 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm9 = <0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,u,u,u,u,u,u,u,u,u,u,u,u,u>
8752 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm4, %ymm5, %ymm4
8753 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8754 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm13, %ymm15, %ymm6, %ymm4
8755 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm4, %xmm5
8756 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm5[2],ymm4[3,4,5],ymm5[6],ymm4[7,8,9],ymm5[10],ymm4[11,12,13],ymm5[14],ymm4[15]
8757 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm7, %ymm4, %ymm4
8758 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm1, %ymm0, %ymm8, %ymm5
8759 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm5, %xmm7
8760 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm7, %xmm2
8761 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm5, %xmm3
8762 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm2, %xmm3, %xmm2
8763 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm9, %ymm4, %ymm2, %ymm0
8764 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8765 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 160(%rdi), %ymm9
8766 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 128(%rdi), %ymm3
8767 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm4 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
8768 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm9, %ymm3, %ymm2
8769 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm3, %ymm15
8770 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8771 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm2, %xmm3
8772 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,u,128,128,3,10,128,128,128,6,13,u,u,u,u>
8773 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm3, %xmm3
8774 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,u,5,12,128,128,1,8,15,128,128,u,u,u,u>
8775 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm2, %xmm2
8776 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm3, %xmm2, %xmm2
8777 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastw {{.*#+}} xmm12 = [2,9,2,9,2,9,2,9,2,9,2,9,2,9,2,9]
8778 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 208(%rdi), %xmm5
8779 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm12, %xmm5, %xmm3
8780 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastw {{.*#+}} xmm6 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
8781 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 192(%rdi), %xmm1
8782 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm6, %xmm1, %xmm10
8783 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
8784 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm6, %xmm11
8785 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm10[0],xmm3[0],xmm10[1],xmm3[1],xmm10[2],xmm3[2],xmm10[3],xmm3[3]
8786 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
8787 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
8788 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5,6],ymm3[7]
8789 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm14 = [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]
8790 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm0 # 32-byte Folded Reload
8791 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8792 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 384(%rdi), %ymm2
8793 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 352(%rdi), %ymm3
8794 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm4, %ymm2, %ymm3, %ymm0
8795 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, %ymm4
8796 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm6
8797 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm6, %xmm6
8798 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm0, %xmm0
8799 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm6, %xmm0, %xmm0
8800 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 432(%rdi), %xmm13
8801 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm12, %xmm13, %xmm6
8802 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa 416(%rdi), %xmm2
8803 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm11, %xmm2, %xmm8
8804 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3]
8805 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
8806 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
8807 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm6[7]
8808 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
8809 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8810 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm7 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
8811 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm9, %ymm15, %ymm0
8812 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm10 = <u,u,u,6,13,128,128,2,9,128,128,128,u,u,u,u>
8813 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm0, %xmm6
8814 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm0
8815 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,u,128,128,4,11,128,128,0,7,14,u,u,u,u>
8816 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm0, %xmm0
8817 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm6, %xmm0, %xmm0
8818 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastw {{.*#+}} xmm6 = [3,10,3,10,3,10,3,10,3,10,3,10,3,10,3,10]
8819 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm6, %xmm5, %xmm9
8820 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastw {{.*#+}} xmm12 = [5,12,5,12,5,12,5,12,5,12,5,12,5,12,5,12]
8821 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm12, %xmm1, %xmm11
8822 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm9 = xmm11[0],xmm9[0],xmm11[1],xmm9[1],xmm11[2],xmm9[2],xmm11[3],xmm9[3]
8823 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
8824 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
8825 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm9[7]
8826 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
8827 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8828 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm4, %ymm3, %ymm0
8829 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm3, %ymm11
8830 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm0, %xmm1
8831 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm0
8832 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm0, %xmm0
8833 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm0, %xmm0
8834 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm6, %xmm13, %xmm1
8835 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm12, %xmm2, %xmm6
8836 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm2, %xmm12
8837 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm6[0],xmm1[0],xmm6[1],xmm1[1],xmm6[2],xmm1[2],xmm6[3],xmm1[3]
8838 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
8839 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8840 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm1[7]
8841 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm14, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload
8842 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8843 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
8844 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm3, %ymm4, %ymm0
8845 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8846 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm1
8847 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm6 = <u,u,128,128,128,6,13,128,128,2,9,u,u,u,u,u>
8848 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
8849 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,1,8,15,128,128,4,11,128,128,u,u,u,u,u>
8850 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm0, %xmm0
8851 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm0, %xmm0
8852 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} xmm1 = [0,0,0,128,128,128,5,12,0,0,0,128,128,128,5,12]
8853 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
8854 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm1, %xmm13, %xmm8
8855 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} xmm9 = [0,0,0,0,7,14,128,128,0,0,0,0,7,14,128,128]
8856 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm9, %xmm12, %xmm10
8857 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm12, %xmm3
8858 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
8859 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm8, %xmm10, %xmm8
8860 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm10
8861 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
8862 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm0 = [0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0,0,0]
8863 ; AVX2-FAST-PERLANE-NEXT:    # ymm0 = mem[0,1,0,1]
8864 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm10, %ymm8, %ymm8
8865 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8866 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm12 # 32-byte Reload
8867 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm15, %ymm12, %ymm8
8868 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm8, %xmm10
8869 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm6, %xmm10, %xmm6
8870 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm8, %xmm7
8871 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm6, %xmm7, %xmm6
8872 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm1, %xmm5, %xmm1
8873 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
8874 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm9, %xmm14, %xmm7
8875 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm7, %xmm1
8876 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
8877 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8878 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm6, %ymm1, %ymm1
8879 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8880 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm2 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
8881 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm11, %ymm4, %ymm1
8882 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm6 = <u,u,2,9,128,128,128,5,12,128,128,u,u,u,u,u>
8883 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm6, %xmm1, %xmm7
8884 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm1
8885 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,128,128,0,7,14,128,128,3,10,u,u,u,u,u>
8886 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
8887 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm7, %xmm1, %xmm1
8888 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} xmm7 = [0,0,0,128,128,128,6,13,0,0,0,128,128,128,6,13]
8889 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm13, %xmm9
8890 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} xmm10 = [0,0,0,1,8,15,128,128,0,0,0,1,8,15,128,128]
8891 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm3, %xmm11
8892 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm9, %xmm11, %xmm9
8893 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8894 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
8895 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm1, %ymm9, %ymm1
8896 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8897 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm15, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8898 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm2, %ymm15, %ymm12, %ymm1
8899 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm12, %ymm2
8900 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm6, %xmm1, %xmm6
8901 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm1
8902 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
8903 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm6, %xmm1, %xmm1
8904 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm5, %xmm6
8905 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm5, %xmm13
8906 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm14, %xmm7
8907 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm6, %xmm7, %xmm6
8908 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8909 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
8910 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm1, %ymm6, %ymm1
8911 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8912 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm6 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
8913 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
8914 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm3, %ymm4, %ymm1
8915 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm5 = <u,u,3,10,128,128,128,6,13,128,128,u,u,u,u,u>
8916 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm5, %xmm1, %xmm7
8917 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm1
8918 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,128,128,1,8,15,128,128,4,11,u,u,u,u,u>
8919 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
8920 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm7, %xmm1, %xmm1
8921 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} xmm7 = [0,0,0,2,9,128,128,128,0,0,0,2,9,128,128,128]
8922 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload
8923 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm12, %xmm9
8924 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} xmm10 = [0,0,0,128,128,0,7,14,0,0,0,128,128,0,7,14]
8925 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload
8926 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm14, %xmm11
8927 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm9, %xmm11, %xmm9
8928 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8929 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
8930 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm1, %ymm9, %ymm1
8931 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8932 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm6, %ymm15, %ymm2, %ymm1
8933 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm5, %xmm1, %xmm6
8934 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm1
8935 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm1, %xmm1
8936 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm6, %xmm1, %xmm1
8937 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
8938 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm11, %xmm6
8939 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm13, %xmm7
8940 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %xmm13, (%rsp) # 16-byte Spill
8941 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm6, %xmm7, %xmm6
8942 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8943 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
8944 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm1, %ymm6, %ymm1
8945 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8946 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0>
8947 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm3, %ymm4, %ymm2
8948 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8949 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm15 = <255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u>
8950 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm4, %ymm3, %ymm1
8951 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm2
8952 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm3 = <u,u,128,128,2,9,128,128,128,5,12,u,u,u,u,u>
8953 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
8954 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm6 = <u,u,4,11,128,128,0,7,14,128,128,u,u,u,u,u>
8955 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
8956 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm2, %xmm1, %xmm1
8957 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [0,0,0,3,10,128,128,128,0,0,0,3,10,128,128,128]
8958 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm12, %xmm7
8959 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastq {{.*#+}} xmm8 = [0,0,0,128,128,1,8,15,0,0,0,128,128,1,8,15]
8960 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm14, %xmm9
8961 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm7, %xmm9, %xmm7
8962 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8963 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
8964 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm1, %ymm7, %ymm1
8965 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8966 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 # 32-byte Reload
8967 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
8968 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm4, %ymm1, %ymm5
8969 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8970 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm1, %ymm4, %ymm1
8971 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm4
8972 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm4, %xmm3
8973 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm6, %xmm1, %xmm1
8974 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm3, %xmm1, %xmm1
8975 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm11, %xmm2
8976 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm13, %xmm3
8977 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm2, %xmm3, %xmm2
8978 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
8979 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
8980 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm0, %ymm1, %ymm2, %ymm0
8981 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8982 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
8983 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
8984 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm11 = <u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255>
8985 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm0, %ymm2, %ymm1
8986 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm5 = <u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255>
8987 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm0, %ymm2, %ymm12
8988 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm2, %ymm0, %ymm13
8989 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm7 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
8990 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm2, %ymm0, %ymm3
8991 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8992 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm3 = <u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255>
8993 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm3, %ymm2, %ymm0, %ymm0
8994 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8995 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
8996 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
8997 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm3, %ymm2, %ymm0, %ymm3
8998 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm3, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
8999 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm0, %ymm2, %ymm3
9000 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm0, %ymm2, %ymm14
9001 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm2, %ymm0, %ymm4
9002 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm4, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
9003 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm2, %ymm0, %ymm0
9004 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
9005 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
9006 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm6 # 32-byte Reload
9007 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm10 = <255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u,0,0,u,u,255,255,0,0,u,u,255,255,u,u>
9008 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm6, %ymm2, %ymm0
9009 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm6, %ymm2, %ymm4
9010 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm6, %ymm2, %ymm9
9011 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm2, %ymm6, %ymm8
9012 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm8, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
9013 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm7, %ymm2, %ymm6, %ymm2
9014 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
9015 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
9016 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
9017 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm10, %ymm7, %ymm8, %ymm2
9018 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm11, %ymm7, %ymm8, %ymm6
9019 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm7, %ymm8, %ymm10
9020 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm8, %ymm7, %ymm5
9021 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm5, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
9022 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} ymm5 = <255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u,0,0,u,u,255,255,u,u,0,0,255,255,u,u>
9023 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm5, %ymm8, %ymm7, %ymm11
9024 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm8 = <2,9,128,128,128,5,12,128,128,u,u,u,u,u,u,u>
9025 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm1, %xmm15
9026 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm1, %xmm1
9027 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm7 = <128,128,0,7,14,128,128,3,10,u,u,u,u,u,u,u>
9028 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
9029 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm15, %xmm1
9030 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm0, %xmm15
9031 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm0 = ymm0[0,1,2],ymm15[3],ymm0[4,5],ymm15[6],ymm0[7,8,9,10],ymm15[11],ymm0[12,13],ymm15[14],ymm0[15]
9032 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [2,9,0,0,0,0,0,0,0,1,8,15,6,13,4,11,2,9,0,0,0,0,0,0,0,1,8,15,6,13,4,11]
9033 ; AVX2-FAST-PERLANE-NEXT:    # ymm5 = mem[0,1,0,1]
9034 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm5, %ymm0, %ymm0
9035 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm15 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0]
9036 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm1, %ymm0, %ymm0
9037 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
9038 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm3, %xmm0
9039 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm3, %xmm1
9040 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm1, %xmm1
9041 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm0, %xmm1, %xmm0
9042 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm2, %xmm1
9043 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5],ymm1[6],ymm2[7,8,9,10],ymm1[11],ymm2[12,13],ymm1[14],ymm2[15]
9044 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm5, %ymm1, %ymm1
9045 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm0, %ymm1, %ymm0
9046 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
9047 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm0 = <3,10,128,128,128,6,13,128,128,u,u,u,u,u,u,u>
9048 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm0, %xmm12, %xmm1
9049 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm12, %xmm2
9050 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm3 = <128,128,1,8,15,128,128,4,11,u,u,u,u,u,u,u>
9051 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
9052 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm2, %xmm1
9053 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm4, %xmm2
9054 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm4[1,2],ymm2[3],ymm4[4,5,6],ymm2[7,8],ymm4[9,10],ymm2[11],ymm4[12,13,14],ymm2[15]
9055 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [3,10,0,0,0,0,0,0,0,2,9,0,7,14,5,12,3,10,0,0,0,0,0,0,0,2,9,0,7,14,5,12]
9056 ; AVX2-FAST-PERLANE-NEXT:    # ymm4 = mem[0,1,0,1]
9057 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm4, %ymm2, %ymm2
9058 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm1, %ymm2, %ymm12
9059 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm0, %xmm14, %xmm0
9060 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm14, %xmm1
9061 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
9062 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm0, %xmm1, %xmm0
9063 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm6, %xmm1
9064 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm6[1,2],ymm1[3],ymm6[4,5,6],ymm1[7,8],ymm6[9,10],ymm1[11],ymm6[12,13,14],ymm1[15]
9065 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm4, %ymm1, %ymm1
9066 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm0, %ymm1, %ymm14
9067 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm13, %xmm0
9068 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm1 = <128,128,2,9,128,128,128,5,12,u,u,u,u,u,u,u>
9069 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
9070 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm2 = <4,11,128,128,0,7,14,128,128,u,u,u,u,u,u,u>
9071 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm13, %xmm3
9072 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm0, %xmm3, %xmm0
9073 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm9, %xmm3
9074 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm9[1,2,3],ymm3[4],ymm9[5,6],ymm3[7,8],ymm9[9,10,11],ymm3[12],ymm9[13,14],ymm3[15]
9075 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm4 = [4,11,0,0,0,0,0,0,0,3,10,1,8,15,6,13,4,11,0,0,0,0,0,0,0,3,10,1,8,15,6,13]
9076 ; AVX2-FAST-PERLANE-NEXT:    # ymm4 = mem[0,1,0,1]
9077 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm4, %ymm3, %ymm3
9078 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm0, %ymm3, %ymm6
9079 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm3 # 32-byte Reload
9080 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm3, %xmm0
9081 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm1, %xmm0, %xmm0
9082 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm2, %xmm3, %xmm1
9083 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm0, %xmm1, %xmm0
9084 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm10, %xmm1
9085 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm10[1,2,3],ymm1[4],ymm10[5,6],ymm1[7,8],ymm10[9,10,11],ymm1[12],ymm10[13,14],ymm1[15]
9086 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm4, %ymm1, %ymm1
9087 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm0, %ymm1, %ymm0
9088 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm2 # 32-byte Reload
9089 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm2, %xmm1
9090 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm3 = <128,128,3,10,128,128,128,6,13,u,u,u,u,u,u,u>
9091 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
9092 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm4 = <5,12,128,128,1,8,15,128,128,u,u,u,u,u,u,u>
9093 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm4, %xmm2, %xmm2
9094 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm2, %xmm1
9095 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
9096 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm5, %xmm2
9097 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm2 = ymm5[0],ymm2[1],ymm5[2,3],ymm2[4],ymm5[5,6,7,8],ymm2[9],ymm5[10,11],ymm2[12],ymm5[13,14,15]
9098 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [5,12,0,0,0,0,0,0,0,4,11,2,9,0,7,14,5,12,0,0,0,0,0,0,0,4,11,2,9,0,7,14]
9099 ; AVX2-FAST-PERLANE-NEXT:    # ymm5 = mem[0,1,0,1]
9100 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm5, %ymm2, %ymm2
9101 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm1, %ymm2, %ymm2
9102 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm7 # 32-byte Reload
9103 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm7, %xmm1
9104 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
9105 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm4, %xmm7, %xmm3
9106 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm1, %xmm3, %xmm1
9107 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm4 # 32-byte Reload
9108 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm4, %xmm3
9109 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm3 = ymm4[0],ymm3[1],ymm4[2,3],ymm3[4],ymm4[5,6,7,8],ymm3[9],ymm4[10,11],ymm3[12],ymm4[13,14,15]
9110 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm5, %ymm3, %ymm3
9111 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm1, %ymm3, %ymm1
9112 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm4 = <6,13,128,128,2,9,128,128,128,u,u,u,u,u,u,u>
9113 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
9114 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm4, %xmm5, %xmm3
9115 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm5, %xmm5
9116 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm7 = <128,128,4,11,128,128,0,7,14,u,u,u,u,u,u,u>
9117 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm5, %xmm5
9118 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm3, %xmm5, %xmm3
9119 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
9120 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm8, %xmm5
9121 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm5 = ymm8[0],ymm5[1],ymm8[2,3,4],ymm5[5],ymm8[6,7,8],ymm5[9],ymm8[10,11,12],ymm5[13],ymm8[14,15]
9122 ; AVX2-FAST-PERLANE-NEXT:    vbroadcasti128 {{.*#+}} ymm8 = [6,13,0,0,0,0,0,0,0,5,12,3,10,1,8,15,6,13,0,0,0,0,0,0,0,5,12,3,10,1,8,15]
9123 ; AVX2-FAST-PERLANE-NEXT:    # ymm8 = mem[0,1,0,1]
9124 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm8, %ymm5, %ymm5
9125 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm3, %ymm5, %ymm3
9126 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm5 # 32-byte Reload
9127 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm4, %xmm5, %xmm4
9128 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm5, %xmm5
9129 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm5, %xmm5
9130 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm4, %xmm5, %xmm4
9131 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm11, %xmm5
9132 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm5 = ymm11[0],ymm5[1],ymm11[2,3,4],ymm5[5],ymm11[6,7,8],ymm5[9],ymm11[10,11,12],ymm5[13],ymm11[14,15]
9133 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %ymm8, %ymm5, %ymm5
9134 ; AVX2-FAST-PERLANE-NEXT:    vpblendvb %ymm15, %ymm4, %ymm5, %ymm4
9135 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
9136 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm9, %xmm5
9137 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm7 = <u,u,128,128,128,5,12,128,128,1,8,15,u,u,u,u>
9138 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm5, %xmm5
9139 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{.*#+}} xmm8 = <u,u,0,7,14,128,128,3,10,128,128,128,u,u,u,u>
9140 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm9, %xmm9
9141 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm5, %xmm9, %xmm5
9142 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastw {{.*#+}} xmm13 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
9143 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
9144 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm13, %xmm9, %xmm9
9145 ; AVX2-FAST-PERLANE-NEXT:    vpbroadcastw {{.*#+}} xmm10 = [6,13,6,13,6,13,6,13,6,13,6,13,6,13,6,13]
9146 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload
9147 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm11, %xmm11
9148 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm9 = xmm11[0],xmm9[0],xmm11[1],xmm9[1],xmm11[2],xmm9[2],xmm11[3],xmm9[3]
9149 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9150 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
9151 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3,4,5,6],ymm9[7]
9152 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm9 # 32-byte Reload
9153 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm5 = ymm9[0],ymm5[1,2,3,4,5,6,7],ymm9[8],ymm5[9,10,11,12,13,14,15]
9154 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm5 = ymm9[0,1,2,3],ymm5[4,5,6,7]
9155 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm11 # 32-byte Reload
9156 ; AVX2-FAST-PERLANE-NEXT:    vextracti128 $1, %ymm11, %xmm9
9157 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm7, %xmm9, %xmm7
9158 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm8, %xmm11, %xmm8
9159 ; AVX2-FAST-PERLANE-NEXT:    vpor %xmm7, %xmm8, %xmm7
9160 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa (%rsp), %xmm8 # 16-byte Reload
9161 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm13, %xmm8, %xmm8
9162 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload
9163 ; AVX2-FAST-PERLANE-NEXT:    vpshufb %xmm10, %xmm9, %xmm9
9164 ; AVX2-FAST-PERLANE-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3]
9165 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
9166 ; AVX2-FAST-PERLANE-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
9167 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm7 = ymm7[0,1,2,3,4,5,6],ymm8[7]
9168 ; AVX2-FAST-PERLANE-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
9169 ; AVX2-FAST-PERLANE-NEXT:    vpblendw {{.*#+}} ymm7 = ymm8[0],ymm7[1,2,3,4,5,6,7],ymm8[8],ymm7[9,10,11,12,13,14,15]
9170 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm7 = ymm8[0,1,2,3],ymm7[4,5,6,7]
9171 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm12, %ymm8 # 32-byte Folded Reload
9172 ; AVX2-FAST-PERLANE-NEXT:    # ymm8 = ymm12[0],mem[1,2,3,4,5,6,7],ymm12[8],mem[9,10,11,12,13,14,15]
9173 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm8 = ymm12[0,1,2,3],ymm8[4,5,6,7]
9174 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm14, %ymm9 # 32-byte Folded Reload
9175 ; AVX2-FAST-PERLANE-NEXT:    # ymm9 = ymm14[0],mem[1,2,3,4,5,6,7],ymm14[8],mem[9,10,11,12,13,14,15]
9176 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm9 = ymm14[0,1,2,3],ymm9[4,5,6,7]
9177 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm6, %ymm10 # 32-byte Folded Reload
9178 ; AVX2-FAST-PERLANE-NEXT:    # ymm10 = ymm6[0],mem[1,2,3,4,5,6,7],ymm6[8],mem[9,10,11,12,13,14,15]
9179 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm6 = ymm6[0,1,2,3],ymm10[4,5,6,7]
9180 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm10 # 32-byte Folded Reload
9181 ; AVX2-FAST-PERLANE-NEXT:    # ymm10 = ymm0[0],mem[1,2,3,4,5,6,7],ymm0[8],mem[9,10,11,12,13,14,15]
9182 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm10[4,5,6,7]
9183 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm2, %ymm10 # 32-byte Folded Reload
9184 ; AVX2-FAST-PERLANE-NEXT:    # ymm10 = ymm2[0],mem[1,2,3,4,5,6,7],ymm2[8],mem[9,10,11,12,13,14,15]
9185 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm10[4,5,6,7]
9186 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm10 # 32-byte Folded Reload
9187 ; AVX2-FAST-PERLANE-NEXT:    # ymm10 = ymm1[0],mem[1,2,3,4,5,6,7],ymm1[8],mem[9,10,11,12,13,14,15]
9188 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm10[4,5,6,7]
9189 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm3, %ymm10 # 32-byte Folded Reload
9190 ; AVX2-FAST-PERLANE-NEXT:    # ymm10 = ymm3[0],mem[1,2,3,4,5,6,7],ymm3[8],mem[9,10,11,12,13,14,15]
9191 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm10[4,5,6,7]
9192 ; AVX2-FAST-PERLANE-NEXT:    vpblendw $254, {{[-0-9]+}}(%r{{[sb]}}p), %ymm4, %ymm10 # 32-byte Folded Reload
9193 ; AVX2-FAST-PERLANE-NEXT:    # ymm10 = ymm4[0],mem[1,2,3,4,5,6,7],ymm4[8],mem[9,10,11,12,13,14,15]
9194 ; AVX2-FAST-PERLANE-NEXT:    vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3],ymm10[4,5,6,7]
9195 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
9196 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm10, 32(%rsi)
9197 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
9198 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm10, (%rsi)
9199 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
9200 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm10, 32(%rdx)
9201 ; AVX2-FAST-PERLANE-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
9202 ; AVX2-FAST-PERLANE-NEXT:    vmovaps %ymm10, (%rdx)
9203 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm5, 32(%rcx)
9204 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm7, (%rcx)
9205 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm8, 32(%r8)
9206 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm9, (%r8)
9207 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm6, 32(%r9)
9208 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm0, (%r9)
9209 ; AVX2-FAST-PERLANE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
9210 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm2, 32(%rax)
9211 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm1, (%rax)
9212 ; AVX2-FAST-PERLANE-NEXT:    movq {{[0-9]+}}(%rsp), %rax
9213 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm3, 32(%rax)
9214 ; AVX2-FAST-PERLANE-NEXT:    vmovdqa %ymm4, (%rax)
9215 ; AVX2-FAST-PERLANE-NEXT:    addq $760, %rsp # imm = 0x2F8
9216 ; AVX2-FAST-PERLANE-NEXT:    vzeroupper
9217 ; AVX2-FAST-PERLANE-NEXT:    retq
9219 ; AVX512F-ONLY-SLOW-LABEL: load_i8_stride7_vf64:
9220 ; AVX512F-ONLY-SLOW:       # %bb.0:
9221 ; AVX512F-ONLY-SLOW-NEXT:    subq $72, %rsp
9222 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = [65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0]
9223 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 (%rdi), %ymm17
9224 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm15
9225 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 64(%rdi), %ymm24
9226 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm0
9227 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm12
9228 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm15, %ymm17, %ymm0
9229 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm1
9230 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[5,12],zero,zero,xmm1[1,8,15,u,u,u,u,u,u]
9231 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,7,14],zero,zero,xmm0[3,10],zero,zero,zero,xmm0[u,u,u,u,u,u]
9232 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm1, %xmm0, %xmm1
9233 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = [65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535]
9234 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 96(%rdi), %ymm19
9235 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm2
9236 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm24, %ymm19, %ymm2
9237 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa 80(%rdi), %xmm0
9238 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm0[2],ymm2[3,4],ymm0[5],ymm2[6,7,8,9],ymm0[10],ymm2[11,12],ymm0[13],ymm2[14,15]
9239 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[6,13,4,11,2,9,16,23,30,u],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9240 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm2
9241 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = [65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535]
9242 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 128(%rdi), %ymm31
9243 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 160(%rdi), %ymm29
9244 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm4
9245 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm31, %ymm29, %ymm4
9246 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm5
9247 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u],zero,zero,xmm5[3,10],zero,zero,zero,xmm5[6,13,u,u,u,u]
9248 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,5,12],zero,zero,xmm4[1,8,15],zero,zero,xmm4[u,u,u,u]
9249 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm4, %xmm4
9250 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
9251 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa 192(%rdi), %xmm5
9252 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm5[u,u,u,u,u,u,4,11,u,u,u,u,u,u,u,u]
9253 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %xmm5, %xmm6
9254 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa 208(%rdi), %xmm5
9255 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm5[u,u,u,u,u,u,2,9,u,u,u,u,u,u,u,u]
9256 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %xmm5, %xmm23
9257 ; AVX512F-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm7[0],xmm9[0],xmm7[1],xmm9[1],xmm7[2],xmm9[2],xmm7[3],xmm9[3]
9258 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
9259 ; AVX512F-ONLY-SLOW-NEXT:    vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3,4,5,6],ymm7[7]
9260 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa 240(%rdi), %xmm14
9261 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm14[5,12,u,u,u,u,u,u,u,u,u,u,u]
9262 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa 224(%rdi), %xmm8
9263 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm8[0,7,14],zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
9264 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm9, %xmm7
9265 ; AVX512F-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm7, %zmm4, %zmm7
9266 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm26 = [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,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]
9267 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %zmm2, %zmm26, %zmm7
9268 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 288(%rdi), %ymm20
9269 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 256(%rdi), %ymm27
9270 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm4
9271 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm20, %ymm27, %ymm4
9272 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm4[u,u,u,u,u,3,10],zero,zero,zero,xmm4[6,13],zero,zero,xmm4[u,u]
9273 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm4
9274 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u],zero,zero,xmm4[1,8,15],zero,zero,xmm4[4,11,u,u]
9275 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm4, %xmm9, %xmm9
9276 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 352(%rdi), %ymm18
9277 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 320(%rdi), %ymm16
9278 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm10
9279 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm18, %ymm16, %ymm10
9280 ; AVX512F-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm10[2,3,0,1]
9281 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm10[0,1],ymm13[2],ymm10[3,4,5],ymm13[6],ymm10[7,8,9],ymm13[10],ymm10[11,12,13],ymm13[14],ymm10[15]
9282 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[2,9,16,23,30,21,28,19,26,u,u,u,u,u,u,u,u,u]
9283 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm28 = [65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,65535,65535,65535,65535]
9284 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm28, %ymm9, %ymm10
9285 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535]
9286 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 416(%rdi), %ymm21
9287 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 384(%rdi), %ymm22
9288 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm13
9289 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm21, %ymm22, %ymm13
9290 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm5
9291 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u,u,u],zero,zero,zero,xmm5[6,13],zero,zero,xmm5[2,9]
9292 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,u,u,u,u,1,8,15],zero,zero,xmm13[4,11],zero,zero
9293 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm13, %xmm5
9294 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9295 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm3 = [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]
9296 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %ymm10, %ymm3, %ymm5
9297 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm5, %zmm0, %zmm2
9298 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm30 = [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,0,0,0,0,0,0]
9299 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %zmm7, %zmm30, %zmm2
9300 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqu64 %zmm2, (%rsp) # 64-byte Spill
9301 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm5
9302 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm15, %ymm17, %ymm5
9303 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm7
9304 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm7[6,13],zero,zero,xmm7[2,9,u,u,u,u,u,u,u]
9305 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[1,8,15],zero,zero,xmm5[4,11],zero,zero,xmm5[u,u,u,u,u,u,u]
9306 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm5, %xmm5
9307 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm12, %ymm4
9308 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm12, %ymm7
9309 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm19, %ymm24, %ymm7
9310 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm7[0,1],ymm0[2],ymm7[3,4,5],ymm0[6],ymm7[7,8,9],ymm0[10],ymm7[11,12,13],ymm0[14],ymm7[15]
9311 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
9312 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm5, %ymm7
9313 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm5
9314 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm31, %ymm29, %ymm5
9315 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm5[u,u,u,6,13],zero,zero,xmm5[2,9],zero,zero,zero,xmm5[u,u,u,u]
9316 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm5
9317 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u],zero,zero,xmm5[4,11],zero,zero,xmm5[0,7,14,u,u,u,u]
9318 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm10, %xmm5
9319 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9320 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %xmm23, %xmm2
9321 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm2[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
9322 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm6[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
9323 ; AVX512F-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm10 = xmm13[0],xmm10[0],xmm13[1],xmm10[1],xmm13[2],xmm10[2],xmm13[3],xmm10[3]
9324 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
9325 ; AVX512F-ONLY-SLOW-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3,4,5,6],ymm10[7]
9326 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,zero,xmm14[6,13,u,u,u,u,u,u,u,u,u,u,u]
9327 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm8[1,8,15],zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
9328 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm10, %xmm13, %xmm10
9329 ; AVX512F-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm10, %zmm5, %zmm5
9330 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %zmm7, %zmm26, %zmm5
9331 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm7
9332 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm27, %ymm20, %ymm7
9333 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm10
9334 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u],zero,zero,xmm10[2,9],zero,zero,zero,xmm10[5,12,u,u]
9335 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,4,11],zero,zero,xmm7[0,7,14],zero,zero,xmm7[u,u]
9336 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm10, %xmm7
9337 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm10
9338 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm18, %ymm16, %ymm10
9339 ; AVX512F-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm10[2,3,0,1]
9340 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm10[0,1,2],ymm13[3],ymm10[4,5],ymm13[6],ymm10[7,8,9,10],ymm13[11],ymm10[12,13],ymm13[14],ymm10[15]
9341 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[3,10,17,24,31,22,29,20,27,u,u,u,u,u,u,u,u,u]
9342 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm28, %ymm7, %ymm10
9343 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm7
9344 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm21, %ymm22, %ymm7
9345 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm7[u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm7[5,12],zero,zero
9346 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm7
9347 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u],zero,zero,xmm7[0,7,14],zero,zero,xmm7[3,10]
9348 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm13, %xmm7
9349 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
9350 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %ymm10, %ymm3, %ymm7
9351 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm7, %zmm0, %zmm7
9352 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %zmm5, %zmm30, %zmm7
9353 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqu64 %zmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
9354 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm5
9355 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm15, %ymm17, %ymm5
9356 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm5[2,9],zero,zero,zero,xmm5[5,12],zero,zero,xmm5[u,u,u,u,u,u,u]
9357 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm5
9358 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm5[0,7,14],zero,zero,xmm5[3,10,u,u,u,u,u,u,u]
9359 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm5, %xmm5
9360 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm7
9361 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm19, %ymm24, %ymm7
9362 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm7[0,1,2],ymm0[3],ymm7[4,5],ymm0[6],ymm7[7,8,9,10],ymm0[11],ymm7[12,13],ymm0[14],ymm7[15]
9363 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqu %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
9364 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[1,8,15,6,13,4,11,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9365 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm26 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
9366 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm26, %ymm5, %ymm7
9367 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm4, %ymm5
9368 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %ymm4, %ymm23
9369 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm29, %ymm31, %ymm5
9370 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm10
9371 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u],zero,zero,zero,xmm10[5,12],zero,zero,xmm10[1,8,15,u,u,u,u]
9372 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,0,7,14],zero,zero,xmm5[3,10],zero,zero,zero,xmm5[u,u,u,u]
9373 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm10, %xmm5
9374 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9375 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm2[u,u,u,u,u,u,4,11,u,u,u,u,u,u,u,u]
9376 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm6[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
9377 ; AVX512F-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm10 = xmm13[0],xmm10[0],xmm13[1],xmm10[1],xmm13[2],xmm10[2],xmm13[3],xmm10[3]
9378 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
9379 ; AVX512F-ONLY-SLOW-NEXT:    vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3,4,5,6],ymm10[7]
9380 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
9381 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm8[2,9],zero,zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
9382 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %xmm14, %xmm4
9383 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
9384 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = zero,zero,xmm14[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
9385 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm10, %xmm13, %xmm10
9386 ; AVX512F-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm10, %zmm5, %zmm5
9387 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm14 = [0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
9388 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $226, %zmm7, %zmm14, %zmm5
9389 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm7
9390 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm27, %ymm20, %ymm7
9391 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm10
9392 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u],zero,zero,xmm10[3,10],zero,zero,zero,xmm10[6,13,u,u]
9393 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,5,12],zero,zero,xmm7[1,8,15],zero,zero,xmm7[u,u]
9394 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm10, %xmm7
9395 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm10
9396 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm16, %ymm18, %ymm10
9397 ; AVX512F-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm10[2,3,0,1]
9398 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm13[0],ymm10[1,2],ymm13[3],ymm10[4,5,6],ymm13[7,8],ymm10[9,10],ymm13[11],ymm10[12,13,14],ymm13[15]
9399 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[4,11,18,25,16,23,30,21,28,u,u,u,u,u,u,u,u,u]
9400 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm28, %ymm7, %ymm10
9401 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm7
9402 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm21, %ymm22, %ymm7
9403 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm7[u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm7[6,13],zero,zero
9404 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm7
9405 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u],zero,zero,xmm7[1,8,15],zero,zero,xmm7[4,11]
9406 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm13, %xmm7
9407 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
9408 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %ymm10, %ymm3, %ymm7
9409 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm7, %zmm0, %zmm25
9410 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %zmm5, %zmm30, %zmm25
9411 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm5
9412 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm15, %ymm17, %ymm5
9413 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm5[3,10],zero,zero,zero,xmm5[6,13],zero,zero,xmm5[u,u,u,u,u,u,u]
9414 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm5
9415 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm5[1,8,15],zero,zero,xmm5[4,11,u,u,u,u,u,u,u]
9416 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm5, %xmm5
9417 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm7
9418 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm19, %ymm24, %ymm7
9419 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm0[0],ymm7[1,2],ymm0[3],ymm7[4,5,6],ymm0[7,8],ymm7[9,10],ymm0[11],ymm7[12,13,14],ymm0[15]
9420 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[2,9,0,7,14,5,12,19,26],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9421 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm26, %ymm5, %ymm7
9422 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm5
9423 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm29, %ymm31, %ymm5
9424 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm10
9425 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u],zero,zero,zero,xmm10[6,13],zero,zero,xmm10[2,9,u,u,u,u,u]
9426 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,1,8,15],zero,zero,xmm5[4,11],zero,zero,xmm5[u,u,u,u,u]
9427 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm10, %xmm5
9428 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm2[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm2[5,12]
9429 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %xmm2, %xmm12
9430 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm6[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
9431 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm10, %xmm13, %xmm10
9432 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9433 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
9434 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm5, %ymm10
9435 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm8[3,10],zero,zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
9436 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = zero,zero,xmm4[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
9437 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm13, %xmm5
9438 ; AVX512F-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm5, %zmm10, %zmm5
9439 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $226, %zmm7, %zmm14, %zmm5
9440 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm7
9441 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm27, %ymm20, %ymm7
9442 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm7[u,u,u,u,u,6,13],zero,zero,xmm7[2,9],zero,zero,zero,xmm7[u,u]
9443 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm7
9444 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u],zero,zero,xmm7[4,11],zero,zero,xmm7[0,7,14,u,u]
9445 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm10, %xmm7
9446 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm10
9447 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm16, %ymm18, %ymm10
9448 ; AVX512F-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm10[2,3,0,1]
9449 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm13[0],ymm10[1,2,3],ymm13[4],ymm10[5,6],ymm13[7,8],ymm10[9,10,11],ymm13[12],ymm10[13,14],ymm13[15]
9450 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[5,12,19,26,17,24,31,22,29,u,u,u,u,u,u,u,u,u]
9451 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm28, %ymm7, %ymm10
9452 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm7
9453 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm22, %ymm21, %ymm7
9454 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm13
9455 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,u,u,u,u],zero,zero,xmm13[2,9],zero,zero,zero,xmm13[5,12]
9456 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,4,11],zero,zero,xmm7[0,7,14],zero,zero
9457 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm13, %xmm7
9458 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
9459 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %ymm10, %ymm3, %ymm7
9460 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm7, %zmm0, %zmm26
9461 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %zmm5, %zmm30, %zmm26
9462 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm5
9463 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm17, %ymm15, %ymm5
9464 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm7
9465 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm7[2,9],zero,zero,zero,xmm7[5,12,u,u,u,u,u,u,u]
9466 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[4,11],zero,zero,xmm5[0,7,14],zero,zero,xmm5[u,u,u,u,u,u,u]
9467 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm5, %xmm2
9468 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %ymm23, %ymm5
9469 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm20, %ymm27, %ymm5
9470 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm7
9471 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u],zero,zero,zero,xmm7[5,12],zero,zero,xmm7[1,8,15,u,u]
9472 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,0,7,14],zero,zero,xmm5[3,10],zero,zero,zero,xmm5[u,u]
9473 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm5, %xmm5
9474 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm7
9475 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm16, %ymm18, %ymm7
9476 ; AVX512F-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm10 = ymm7[2,3,0,1]
9477 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm7[0],ymm10[1],ymm7[2,3],ymm10[4],ymm7[5,6,7,8],ymm10[9],ymm7[10,11],ymm10[12],ymm7[13,14,15]
9478 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[6,13,20,27,18,25,16,23,30,u,u,u,u,u,u,u,u,u]
9479 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm28, %ymm5, %ymm7
9480 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm5
9481 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm22, %ymm21, %ymm5
9482 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm10
9483 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u,u,u],zero,zero,xmm10[3,10],zero,zero,zero,xmm10[6,13]
9484 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u,u,u,5,12],zero,zero,xmm5[1,8,15],zero,zero
9485 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm10, %xmm5
9486 ; AVX512F-ONLY-SLOW-NEXT:    vinserti32x4 $1, %xmm5, %ymm0, %ymm28
9487 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %ymm7, %ymm3, %ymm28
9488 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm5
9489 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm20, %ymm27, %ymm5
9490 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm7
9491 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u],zero,zero,zero,xmm7[6,13],zero,zero,xmm7[2,9,u,u,u]
9492 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,1,8,15],zero,zero,xmm5[4,11],zero,zero,xmm5[u,u,u]
9493 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm5, %xmm5
9494 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %ymm23, %ymm7
9495 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm18, %ymm16, %ymm7
9496 ; AVX512F-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm10 = ymm7[2,3,0,1]
9497 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm7 = ymm7[0],ymm10[1],ymm7[2,3,4],ymm10[5],ymm7[6,7,8],ymm10[9],ymm7[10,11,12],ymm10[13],ymm7[14,15]
9498 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[0,7,14,21,28,19,26,17,24,31,u,u,u,u,u,u,u,u,u]
9499 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm5, %ymm7
9500 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm5
9501 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm22, %ymm21, %ymm5
9502 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm5[u,u,u,u,u,u,u,6,13],zero,zero,xmm5[2,9],zero,zero,zero
9503 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm5
9504 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u,u,u],zero,zero,xmm5[4,11],zero,zero,xmm5[0,7,14]
9505 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm10, %xmm5
9506 ; AVX512F-ONLY-SLOW-NEXT:    vinserti32x4 $1, %xmm5, %ymm0, %ymm30
9507 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %ymm7, %ymm3, %ymm30
9508 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm5
9509 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm29, %ymm31, %ymm5
9510 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm5[u,u,2,9],zero,zero,zero,xmm5[5,12],zero,zero,xmm5[u,u,u,u,u]
9511 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm5
9512 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u],zero,zero,xmm5[0,7,14],zero,zero,xmm5[3,10,u,u,u,u,u]
9513 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm5, %xmm5
9514 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm10
9515 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm21, %ymm22, %ymm23
9516 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm1, %ymm13
9517 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm17, %ymm15, %ymm13
9518 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm11, %ymm7
9519 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm17, %ymm15, %ymm11
9520 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %xmm12, %xmm4
9521 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm15 = xmm12[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm12[6,13]
9522 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %xmm6, %xmm3
9523 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
9524 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm6, %xmm15, %xmm6
9525 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm19, %ymm24, %ymm10
9526 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $226, %ymm20, %ymm1, %ymm27
9527 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm9, %ymm15
9528 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm24, %ymm19, %ymm15
9529 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm24, %ymm19, %ymm1
9530 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm8 # 32-byte Reload
9531 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm8[0],ymm10[1,2,3],ymm8[4],ymm10[5,6],ymm8[7,8],ymm10[9,10,11],ymm8[12],ymm10[13,14],ymm8[15]
9532 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm14 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[3,10,1,8,15,6,13,20,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9533 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
9534 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm0, %ymm2, %ymm14
9535 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9536 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
9537 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm17 = [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]
9538 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %ymm5, %ymm17, %ymm6
9539 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm5
9540 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm5[3,10],zero,zero,zero,xmm5[6,13,u,u,u,u,u,u,u]
9541 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm13[5,12],zero,zero,xmm13[1,8,15],zero,zero,xmm13[u,u,u,u,u,u,u]
9542 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm10, %xmm5
9543 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm15[0],ymm8[1],ymm15[2,3],ymm8[4],ymm15[5,6,7,8],ymm8[9],ymm15[10,11],ymm8[12],ymm15[13,14,15]
9544 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm12 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[4,11,2,9,0,7,14,21,28],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9545 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm0, %ymm5, %ymm12
9546 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa %ymm0, %ymm2
9547 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm11[6,13],zero,zero,xmm11[2,9],zero,zero,zero,xmm11[u,u,u,u,u,u,u]
9548 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm11, %xmm0
9549 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14,u,u,u,u,u,u,u]
9550 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm0, %xmm5
9551 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0],ymm8[1],ymm1[2,3,4],ymm8[5],ymm1[6,7,8],ymm8[9],ymm1[10,11,12],ymm8[13],ymm1[14,15]
9552 ; AVX512F-ONLY-SLOW-NEXT:    vpbroadcastd {{.*#+}} xmm11 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
9553 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm0[5,12,3,10,1,8,15,22,29],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9554 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, %ymm2, %ymm5, %ymm0
9555 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
9556 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb %xmm11, %xmm2, %xmm1
9557 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
9558 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm15[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
9559 ; AVX512F-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3]
9560 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm1, %zmm6, %zmm10
9561 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm1 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
9562 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %zmm14, %zmm1, %zmm10
9563 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm29, %ymm31, %ymm7
9564 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm7[u,u,3,10],zero,zero,zero,xmm7[6,13],zero,zero,xmm7[u,u,u,u,u]
9565 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm6
9566 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,xmm6[1,8,15],zero,zero,xmm6[4,11,u,u,u,u,u]
9567 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm6, %xmm5
9568 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $226, %ymm18, %ymm9, %ymm16
9569 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $202, %ymm31, %ymm29, %ymm9
9570 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
9571 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm4[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm4[0,7,14]
9572 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm6, %xmm7, %xmm6
9573 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9574 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
9575 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %ymm5, %ymm17, %ymm6
9576 ; AVX512F-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm9, %xmm5
9577 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u],zero,zero,xmm5[2,9],zero,zero,zero,xmm5[5,12,u,u,u,u,u]
9578 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm9[u,u,4,11],zero,zero,xmm9[0,7,14],zero,zero,xmm9[u,u,u,u,u]
9579 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm7, %xmm5
9580 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm3[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
9581 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm4[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm4[1,8,15]
9582 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm8, %xmm7
9583 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9584 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
9585 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %ymm5, %ymm17, %ymm7
9586 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm15[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
9587 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm2[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
9588 ; AVX512F-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm8[0],xmm5[0],xmm8[1],xmm5[1],xmm8[2],xmm5[2],xmm8[3],xmm5[3]
9589 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm5, %zmm6, %zmm5
9590 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %zmm12, %zmm1, %zmm5
9591 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb %xmm11, %xmm15, %xmm6
9592 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm2[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
9593 ; AVX512F-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm8[0],xmm6[0],xmm8[1],xmm6[1],xmm8[2],xmm6[2],xmm8[3],xmm6[3]
9594 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm6, %zmm7, %zmm6
9595 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $184, %zmm0, %zmm1, %zmm6
9596 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm28, %zmm0, %zmm0
9597 ; AVX512F-ONLY-SLOW-NEXT:    movw $-512, %ax # imm = 0xFE00
9598 ; AVX512F-ONLY-SLOW-NEXT:    kmovw %eax, %k1
9599 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa32 %zmm0, %zmm10 {%k1}
9600 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm30, %zmm0, %zmm0
9601 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa32 %zmm0, %zmm5 {%k1}
9602 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %ymm27, %ymm1
9603 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm1[u,u,u,u,2,9],zero,zero,zero,xmm1[5,12],zero,zero,xmm1[u,u,u]
9604 ; AVX512F-ONLY-SLOW-NEXT:    vextracti32x4 $1, %ymm27, %xmm1
9605 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u],zero,zero,xmm1[0,7,14],zero,zero,xmm1[3,10,u,u,u]
9606 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm0, %xmm1, %xmm0
9607 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %ymm16, %ymm2
9608 ; AVX512F-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm1 = ymm16[2,3,0,1]
9609 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4],ymm1[5],ymm2[6,7,8,9],ymm1[10],ymm2[11,12],ymm1[13],ymm2[14,15]
9610 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm1[1,8,15,22,29,20,27,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9611 ; AVX512F-ONLY-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm1
9612 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %ymm23, %ymm2
9613 ; AVX512F-ONLY-SLOW-NEXT:    vextracti32x4 $1, %ymm23, %xmm0
9614 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u],zero,zero,zero,xmm0[5,12],zero,zero,xmm0[1,8,15]
9615 ; AVX512F-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,0,7,14],zero,zero,xmm2[3,10],zero,zero,zero
9616 ; AVX512F-ONLY-SLOW-NEXT:    vpor %xmm0, %xmm2, %xmm0
9617 ; AVX512F-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
9618 ; AVX512F-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7],ymm1[8,9,10],ymm0[11,12,13,14,15]
9619 ; AVX512F-ONLY-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
9620 ; AVX512F-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
9621 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa32 %zmm0, %zmm6 {%k1}
9622 ; AVX512F-ONLY-SLOW-NEXT:    vmovups (%rsp), %zmm0 # 64-byte Reload
9623 ; AVX512F-ONLY-SLOW-NEXT:    vmovaps %zmm0, (%rsi)
9624 ; AVX512F-ONLY-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload
9625 ; AVX512F-ONLY-SLOW-NEXT:    vmovaps %zmm0, (%rdx)
9626 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %zmm25, (%rcx)
9627 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %zmm26, (%r8)
9628 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %zmm10, (%r9)
9629 ; AVX512F-ONLY-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
9630 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %zmm5, (%rax)
9631 ; AVX512F-ONLY-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
9632 ; AVX512F-ONLY-SLOW-NEXT:    vmovdqa64 %zmm6, (%rax)
9633 ; AVX512F-ONLY-SLOW-NEXT:    addq $72, %rsp
9634 ; AVX512F-ONLY-SLOW-NEXT:    vzeroupper
9635 ; AVX512F-ONLY-SLOW-NEXT:    retq
9637 ; AVX512F-ONLY-FAST-LABEL: load_i8_stride7_vf64:
9638 ; AVX512F-ONLY-FAST:       # %bb.0:
9639 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm26 = [65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0]
9640 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa (%rdi), %ymm13
9641 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 32(%rdi), %ymm14
9642 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 64(%rdi), %ymm10
9643 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %ymm26, %ymm1
9644 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm14, %ymm13, %ymm1
9645 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm2
9646 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[5,12],zero,zero,xmm2[1,8,15,u,u,u,u,u,u]
9647 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,7,14],zero,zero,xmm1[3,10],zero,zero,zero,xmm1[u,u,u,u,u,u]
9648 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm2, %xmm1, %xmm1
9649 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm6 = [65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535]
9650 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 96(%rdi), %ymm12
9651 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm2
9652 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm10, %ymm12, %ymm2
9653 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 80(%rdi), %xmm3
9654 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm3[2],ymm2[3,4],ymm3[5],ymm2[6,7,8,9],ymm3[10],ymm2[11,12],ymm3[13],ymm2[14,15]
9655 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm3, %ymm9
9656 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[6,13,4,11,2,9,16,23,30,u],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9657 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm4
9658 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535]
9659 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 128(%rdi), %ymm30
9660 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 160(%rdi), %ymm31
9661 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm1
9662 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm1
9663 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm2
9664 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u],zero,zero,xmm2[3,10],zero,zero,zero,xmm2[6,13,u,u,u,u]
9665 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,5,12],zero,zero,xmm1[1,8,15],zero,zero,xmm1[u,u,u,u]
9666 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm2, %xmm1, %xmm1
9667 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
9668 ; AVX512F-ONLY-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [1,2,4,6,1,2,4,6]
9669 ; AVX512F-ONLY-FAST-NEXT:    # ymm3 = mem[0,1,0,1]
9670 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 192(%rdi), %ymm2
9671 ; AVX512F-ONLY-FAST-NEXT:    vpermd %ymm2, %ymm3, %ymm3
9672 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,23,26,29]
9673 ; AVX512F-ONLY-FAST-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm3[7]
9674 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 240(%rdi), %xmm3
9675 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm3[5,12,u,u,u,u,u,u,u,u,u,u,u]
9676 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %xmm3, %xmm21
9677 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 224(%rdi), %xmm3
9678 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm3[0,7,14],zero,zero,xmm3[u,u,u,u,u,u,u,u,u,u,u]
9679 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %xmm3, %xmm23
9680 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm7, %xmm5
9681 ; AVX512F-ONLY-FAST-NEXT:    vinserti32x4 $2, %xmm5, %zmm1, %zmm5
9682 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm17 = [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,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]
9683 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %zmm4, %zmm17, %zmm5
9684 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 288(%rdi), %ymm18
9685 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 256(%rdi), %ymm28
9686 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm4
9687 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm18, %ymm28, %ymm4
9688 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm4[u,u,u,u,u,3,10],zero,zero,zero,xmm4[6,13],zero,zero,xmm4[u,u]
9689 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm4
9690 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u],zero,zero,xmm4[1,8,15],zero,zero,xmm4[4,11,u,u]
9691 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm4, %xmm8, %xmm8
9692 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 352(%rdi), %ymm16
9693 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 320(%rdi), %ymm4
9694 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm15
9695 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm16, %ymm4, %ymm15
9696 ; AVX512F-ONLY-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm15[2,3,0,1]
9697 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm7 = ymm15[0,1],ymm7[2],ymm15[3,4,5],ymm7[6],ymm15[7,8,9],ymm7[10],ymm15[11,12,13],ymm7[14],ymm15[15]
9698 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[2,9,16,23,30,21,28,19,26,u,u,u,u,u,u,u,u,u]
9699 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm27 = [65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,65535,65535,65535,65535]
9700 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm8, %ymm7
9701 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm15 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535]
9702 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 416(%rdi), %ymm19
9703 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 384(%rdi), %ymm20
9704 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm8
9705 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm19, %ymm20, %ymm8
9706 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm8, %xmm3
9707 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,zero,xmm3[6,13],zero,zero,xmm3[2,9]
9708 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,1,8,15],zero,zero,xmm8[4,11],zero,zero
9709 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm3, %xmm8, %xmm3
9710 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
9711 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm22 = [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]
9712 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm7, %ymm22, %ymm3
9713 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm0
9714 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm29 = [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,0,0,0,0,0,0]
9715 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %zmm5, %zmm29, %zmm0
9716 ; AVX512F-ONLY-FAST-NEXT:    vmovdqu64 %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
9717 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm3
9718 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm14, %ymm13, %ymm3
9719 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm5
9720 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm5[6,13],zero,zero,xmm5[2,9,u,u,u,u,u,u,u]
9721 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[1,8,15],zero,zero,xmm3[4,11],zero,zero,xmm3[u,u,u,u,u,u,u]
9722 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm3, %xmm3
9723 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %ymm26, %ymm5
9724 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm12, %ymm10, %ymm5
9725 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm9[2],ymm5[3,4,5],ymm9[6],ymm5[7,8,9],ymm9[10],ymm5[11,12,13],ymm9[14],ymm5[15]
9726 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
9727 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm3, %ymm5
9728 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm3
9729 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm3
9730 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm3[u,u,u,6,13],zero,zero,xmm3[2,9],zero,zero,zero,xmm3[u,u,u,u]
9731 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
9732 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u],zero,zero,xmm3[4,11],zero,zero,xmm3[0,7,14,u,u,u,u]
9733 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm7, %xmm3, %xmm3
9734 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
9735 ; AVX512F-ONLY-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [1,3,4,6,1,3,4,6]
9736 ; AVX512F-ONLY-FAST-NEXT:    # ymm7 = mem[0,1,0,1]
9737 ; AVX512F-ONLY-FAST-NEXT:    vpermd %ymm2, %ymm7, %ymm7
9738 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,20,27,30]
9739 ; AVX512F-ONLY-FAST-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5,6],ymm7[7]
9740 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %xmm21, %xmm1
9741 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm1[6,13,u,u,u,u,u,u,u,u,u,u,u]
9742 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %xmm23, %xmm0
9743 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm0[1,8,15],zero,zero,xmm0[u,u,u,u,u,u,u,u,u,u,u]
9744 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm7, %xmm8, %xmm7
9745 ; AVX512F-ONLY-FAST-NEXT:    vinserti32x4 $2, %xmm7, %zmm3, %zmm3
9746 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %zmm5, %zmm17, %zmm3
9747 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm5
9748 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm28, %ymm18, %ymm5
9749 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm5, %xmm7
9750 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u],zero,zero,xmm7[2,9],zero,zero,zero,xmm7[5,12,u,u]
9751 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u,4,11],zero,zero,xmm5[0,7,14],zero,zero,xmm5[u,u]
9752 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm7, %xmm5, %xmm5
9753 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm7
9754 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm16, %ymm4, %ymm7
9755 ; AVX512F-ONLY-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm7[2,3,0,1]
9756 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm7 = ymm7[0,1,2],ymm8[3],ymm7[4,5],ymm8[6],ymm7[7,8,9,10],ymm8[11],ymm7[12,13],ymm8[14],ymm7[15]
9757 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[3,10,17,24,31,22,29,20,27,u,u,u,u,u,u,u,u,u]
9758 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm5, %ymm7
9759 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm5
9760 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm19, %ymm20, %ymm5
9761 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm5[u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm5[5,12],zero,zero
9762 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm5, %xmm5
9763 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u,u,u],zero,zero,xmm5[0,7,14],zero,zero,xmm5[3,10]
9764 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm8, %xmm5
9765 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9766 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm7, %ymm22, %ymm5
9767 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm5, %zmm0, %zmm17
9768 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %zmm3, %zmm29, %zmm17
9769 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm3
9770 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm14, %ymm13, %ymm3
9771 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm3[2,9],zero,zero,zero,xmm3[5,12],zero,zero,xmm3[u,u,u,u,u,u,u]
9772 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
9773 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm3[0,7,14],zero,zero,xmm3[3,10,u,u,u,u,u,u,u]
9774 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm3, %xmm3
9775 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm5
9776 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm12, %ymm10, %ymm5
9777 ; AVX512F-ONLY-FAST-NEXT:    vmovdqu %ymm9, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
9778 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0,1,2],ymm9[3],ymm5[4,5],ymm9[6],ymm5[7,8,9,10],ymm9[11],ymm5[12,13],ymm9[14],ymm5[15]
9779 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[1,8,15,6,13,4,11,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9780 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm23 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
9781 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm23, %ymm3, %ymm5
9782 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %ymm26, %ymm3
9783 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm3
9784 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm7
9785 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u],zero,zero,zero,xmm7[5,12],zero,zero,xmm7[1,8,15,u,u,u,u]
9786 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,0,7,14],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[u,u,u,u]
9787 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm7, %xmm3, %xmm3
9788 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
9789 ; AVX512F-ONLY-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [1,3,5,6,1,3,5,6]
9790 ; AVX512F-ONLY-FAST-NEXT:    # ymm7 = mem[0,1,0,1]
9791 ; AVX512F-ONLY-FAST-NEXT:    vpermd %ymm2, %ymm7, %ymm2
9792 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,21,24,31]
9793 ; AVX512F-ONLY-FAST-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5,6],ymm2[7]
9794 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[2,9],zero,zero,zero,xmm0[u,u,u,u,u,u,u,u,u,u,u]
9795 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
9796 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm1[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
9797 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm3, %xmm7, %xmm3
9798 ; AVX512F-ONLY-FAST-NEXT:    vinserti32x4 $2, %xmm3, %zmm2, %zmm2
9799 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm24 = [0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
9800 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $226, %zmm5, %zmm24, %zmm2
9801 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm3
9802 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm28, %ymm18, %ymm3
9803 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm5
9804 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u],zero,zero,xmm5[3,10],zero,zero,zero,xmm5[6,13,u,u]
9805 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,5,12],zero,zero,xmm3[1,8,15],zero,zero,xmm3[u,u]
9806 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm3, %xmm3
9807 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm5
9808 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm4, %ymm16, %ymm5
9809 ; AVX512F-ONLY-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm5[2,3,0,1]
9810 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm7[0],ymm5[1,2],ymm7[3],ymm5[4,5,6],ymm7[7,8],ymm5[9,10],ymm7[11],ymm5[12,13,14],ymm7[15]
9811 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[4,11,18,25,16,23,30,21,28,u,u,u,u,u,u,u,u,u]
9812 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm3, %ymm5
9813 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm3
9814 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm19, %ymm20, %ymm3
9815 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm3[u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm3[6,13],zero,zero
9816 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
9817 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[1,8,15],zero,zero,xmm3[4,11]
9818 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm7, %xmm3, %xmm3
9819 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
9820 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm5, %ymm22, %ymm3
9821 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm21
9822 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %zmm2, %zmm29, %zmm21
9823 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm2
9824 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm14, %ymm13, %ymm2
9825 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[3,10],zero,zero,zero,xmm2[6,13],zero,zero,xmm2[u,u,u,u,u,u,u]
9826 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm2
9827 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[1,8,15],zero,zero,xmm2[4,11,u,u,u,u,u,u,u]
9828 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm3, %xmm2, %xmm2
9829 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm3
9830 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm12, %ymm10, %ymm3
9831 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm9[0],ymm3[1,2],ymm9[3],ymm3[4,5,6],ymm9[7,8],ymm3[9,10],ymm9[11],ymm3[12,13,14],ymm9[15]
9832 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm3[2,9,0,7,14,5,12,19,26],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9833 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm23, %ymm2, %ymm3
9834 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm2
9835 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm2
9836 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm5
9837 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u],zero,zero,zero,xmm5[6,13],zero,zero,xmm5[2,9,u,u,u,u,u]
9838 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,1,8,15],zero,zero,xmm2[4,11],zero,zero,xmm2[u,u,u,u,u]
9839 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm2, %xmm5
9840 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 208(%rdi), %xmm7
9841 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm7[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm7[5,12]
9842 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa 192(%rdi), %xmm2
9843 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm2[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
9844 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm8, %xmm9, %xmm8
9845 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9846 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
9847 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm25 = [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]
9848 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm5, %ymm25, %ymm8
9849 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[3,10],zero,zero,zero,xmm0[u,u,u,u,u,u,u,u,u,u,u]
9850 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,xmm1[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
9851 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %xmm1, %xmm0
9852 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm9, %xmm5
9853 ; AVX512F-ONLY-FAST-NEXT:    vinserti32x4 $2, %xmm5, %zmm8, %zmm5
9854 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $226, %zmm3, %zmm24, %zmm5
9855 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm3
9856 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm28, %ymm18, %ymm3
9857 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm3[u,u,u,u,u,6,13],zero,zero,xmm3[2,9],zero,zero,zero,xmm3[u,u]
9858 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
9859 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u],zero,zero,xmm3[4,11],zero,zero,xmm3[0,7,14,u,u]
9860 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm3, %xmm8, %xmm3
9861 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm8
9862 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm4, %ymm16, %ymm8
9863 ; AVX512F-ONLY-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm8[2,3,0,1]
9864 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1,2,3],ymm9[4],ymm8[5,6],ymm9[7,8],ymm8[9,10,11],ymm9[12],ymm8[13,14],ymm9[15]
9865 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[5,12,19,26,17,24,31,22,29,u,u,u,u,u,u,u,u,u]
9866 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm3, %ymm8
9867 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm3
9868 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm20, %ymm19, %ymm3
9869 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm9
9870 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u,u,u],zero,zero,xmm9[2,9],zero,zero,zero,xmm9[5,12]
9871 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u,4,11],zero,zero,xmm3[0,7,14],zero,zero
9872 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm3, %xmm9, %xmm3
9873 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
9874 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm8, %ymm22, %ymm3
9875 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm24
9876 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %zmm5, %zmm29, %zmm24
9877 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm3
9878 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm13, %ymm14, %ymm3
9879 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm5
9880 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm5[2,9],zero,zero,zero,xmm5[5,12,u,u,u,u,u,u,u]
9881 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[4,11],zero,zero,xmm3[0,7,14],zero,zero,xmm3[u,u,u,u,u,u,u]
9882 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm3, %xmm1
9883 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %ymm26, %ymm3
9884 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm18, %ymm28, %ymm3
9885 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm5
9886 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u],zero,zero,zero,xmm5[5,12],zero,zero,xmm5[1,8,15,u,u]
9887 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,0,7,14],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[u,u]
9888 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm3, %xmm3
9889 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm5
9890 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm4, %ymm16, %ymm5
9891 ; AVX512F-ONLY-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm5[2,3,0,1]
9892 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0],ymm8[1],ymm5[2,3],ymm8[4],ymm5[5,6,7,8],ymm8[9],ymm5[10,11],ymm8[12],ymm5[13,14,15]
9893 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[6,13,20,27,18,25,16,23,30,u,u,u,u,u,u,u,u,u]
9894 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm3, %ymm5
9895 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm3
9896 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm20, %ymm19, %ymm3
9897 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm8
9898 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u],zero,zero,xmm8[3,10],zero,zero,zero,xmm8[6,13]
9899 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u,5,12],zero,zero,xmm3[1,8,15],zero,zero
9900 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm3, %xmm8, %xmm3
9901 ; AVX512F-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm3, %ymm0, %ymm27
9902 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm5, %ymm22, %ymm27
9903 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm3
9904 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm18, %ymm28, %ymm3
9905 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm5
9906 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u],zero,zero,zero,xmm5[6,13],zero,zero,xmm5[2,9,u,u,u]
9907 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,1,8,15],zero,zero,xmm3[4,11],zero,zero,xmm3[u,u,u]
9908 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm3, %xmm3
9909 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %ymm26, %ymm5
9910 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm16, %ymm4, %ymm5
9911 ; AVX512F-ONLY-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm5[2,3,0,1]
9912 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0],ymm8[1],ymm5[2,3,4],ymm8[5],ymm5[6,7,8],ymm8[9],ymm5[10,11,12],ymm8[13],ymm5[14,15]
9913 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[0,7,14,21,28,19,26,17,24,31,u,u,u,u,u,u,u,u,u]
9914 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm3, %ymm5
9915 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm3
9916 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm20, %ymm19, %ymm3
9917 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm3[u,u,u,u,u,u,u,6,13],zero,zero,xmm3[2,9],zero,zero,zero
9918 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
9919 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[4,11],zero,zero,xmm3[0,7,14]
9920 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm3, %xmm8, %xmm3
9921 ; AVX512F-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm3, %ymm0, %ymm29
9922 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm5, %ymm22, %ymm29
9923 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm3
9924 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm3
9925 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm3[u,u,2,9],zero,zero,zero,xmm3[5,12],zero,zero,xmm3[u,u,u,u,u]
9926 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
9927 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u],zero,zero,xmm3[0,7,14],zero,zero,xmm3[3,10,u,u,u,u,u]
9928 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm3, %xmm3
9929 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm8
9930 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm19, %ymm20, %ymm26
9931 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm11, %ymm9
9932 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm13, %ymm14, %ymm9
9933 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm6, %ymm5
9934 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm13, %ymm14, %ymm6
9935 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm7[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm7[6,13]
9936 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm2[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
9937 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm13, %xmm14, %xmm13
9938 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm12, %ymm10, %ymm8
9939 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $226, %ymm18, %ymm11, %ymm28
9940 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm15, %ymm14
9941 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm10, %ymm12, %ymm14
9942 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm10, %ymm12, %ymm11
9943 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm9, %xmm10
9944 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,xmm10[3,10],zero,zero,zero,xmm10[6,13,u,u,u,u,u,u,u]
9945 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[5,12],zero,zero,xmm9[1,8,15],zero,zero,xmm9[u,u,u,u,u,u,u]
9946 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm10, %xmm9, %xmm9
9947 ; AVX512F-ONLY-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm10 # 32-byte Reload
9948 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm8 = ymm10[0],ymm8[1,2,3],ymm10[4],ymm8[5,6],ymm10[7,8],ymm8[9,10,11],ymm10[12],ymm8[13,14],ymm10[15]
9949 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm12 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[3,10,1,8,15,6,13,20,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9950 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm23, %ymm1, %ymm12
9951 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
9952 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm8
9953 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm3, %ymm25, %ymm8
9954 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm14[0],ymm10[1],ymm14[2,3],ymm10[4],ymm14[5,6,7,8],ymm10[9],ymm14[10,11],ymm10[12],ymm14[13,14,15]
9955 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %ymm10, %ymm13
9956 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm3[4,11,2,9,0,7,14,21,28],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9957 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm23, %ymm9, %ymm10
9958 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm6[6,13],zero,zero,xmm6[2,9],zero,zero,zero,xmm6[u,u,u,u,u,u,u]
9959 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
9960 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm6[4,11],zero,zero,xmm6[0,7,14,u,u,u,u,u,u,u]
9961 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm3, %xmm6, %xmm3
9962 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm11[0],ymm13[1],ymm11[2,3,4],ymm13[5],ymm11[6,7,8],ymm13[9],ymm11[10,11,12],ymm13[13],ymm11[14,15]
9963 ; AVX512F-ONLY-FAST-NEXT:    vpbroadcastd {{.*#+}} xmm9 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
9964 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[5,12,3,10,1,8,15,22,29],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
9965 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, %ymm23, %ymm3, %ymm6
9966 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
9967 ; AVX512F-ONLY-FAST-NEXT:    vpshufb %xmm9, %xmm13, %xmm3
9968 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa %xmm0, %xmm14
9969 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm0[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
9970 ; AVX512F-ONLY-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm11[0],xmm3[1],xmm11[1],xmm3[2],xmm11[2],xmm3[3],xmm11[3]
9971 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm8, %zmm8
9972 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm3 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
9973 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %zmm12, %zmm3, %zmm8
9974 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm5
9975 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm5[u,u,3,10],zero,zero,zero,xmm5[6,13],zero,zero,xmm5[u,u,u,u,u]
9976 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm5, %xmm5
9977 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u],zero,zero,xmm5[1,8,15],zero,zero,xmm5[4,11,u,u,u,u,u]
9978 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm11, %xmm5
9979 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $226, %ymm16, %ymm15, %ymm4
9980 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm15
9981 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm2[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
9982 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm7[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm7[0,7,14]
9983 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm11, %xmm12, %xmm11
9984 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9985 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
9986 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm5, %ymm25, %ymm11
9987 ; AVX512F-ONLY-FAST-NEXT:    vextracti128 $1, %ymm15, %xmm5
9988 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u],zero,zero,xmm5[2,9],zero,zero,zero,xmm5[5,12,u,u,u,u,u]
9989 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm15[u,u,4,11],zero,zero,xmm15[0,7,14],zero,zero,xmm15[u,u,u,u,u]
9990 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm5, %xmm12, %xmm5
9991 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
9992 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm7[1,8,15]
9993 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm2, %xmm7, %xmm2
9994 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
9995 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
9996 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %ymm5, %ymm25, %ymm2
9997 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm14[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
9998 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm13[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
9999 ; AVX512F-ONLY-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm7[0],xmm5[0],xmm7[1],xmm5[1],xmm7[2],xmm5[2],xmm7[3],xmm5[3]
10000 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm5, %zmm11, %zmm5
10001 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %zmm10, %zmm3, %zmm5
10002 ; AVX512F-ONLY-FAST-NEXT:    vpshufb %xmm9, %xmm14, %xmm7
10003 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm13[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10004 ; AVX512F-ONLY-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3]
10005 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm2, %zmm2
10006 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $184, %zmm6, %zmm3, %zmm2
10007 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm27, %zmm0, %zmm3
10008 ; AVX512F-ONLY-FAST-NEXT:    movw $-512, %ax # imm = 0xFE00
10009 ; AVX512F-ONLY-FAST-NEXT:    kmovw %eax, %k1
10010 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa32 %zmm3, %zmm8 {%k1}
10011 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm29, %zmm0, %zmm3
10012 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa32 %zmm3, %zmm5 {%k1}
10013 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %ymm28, %ymm0
10014 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[u,u,u,u,2,9],zero,zero,zero,xmm0[5,12],zero,zero,xmm0[u,u,u]
10015 ; AVX512F-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm28, %xmm1
10016 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u],zero,zero,xmm1[0,7,14],zero,zero,xmm1[3,10,u,u,u]
10017 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm3, %xmm1, %xmm1
10018 ; AVX512F-ONLY-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm4[2,3,0,1]
10019 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm4[0,1],ymm3[2],ymm4[3,4],ymm3[5],ymm4[6,7,8,9],ymm3[10],ymm4[11,12],ymm3[13],ymm4[14,15]
10020 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm3[1,8,15,22,29,20,27,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10021 ; AVX512F-ONLY-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm3
10022 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %ymm26, %ymm0
10023 ; AVX512F-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm26, %xmm1
10024 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u,u],zero,zero,zero,xmm1[5,12],zero,zero,xmm1[1,8,15]
10025 ; AVX512F-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,0,7,14],zero,zero,xmm0[3,10],zero,zero,zero
10026 ; AVX512F-ONLY-FAST-NEXT:    vpor %xmm1, %xmm0, %xmm0
10027 ; AVX512F-ONLY-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
10028 ; AVX512F-ONLY-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm3[0,1,2],ymm0[3,4,5,6,7],ymm3[8,9,10],ymm0[11,12,13,14,15]
10029 ; AVX512F-ONLY-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
10030 ; AVX512F-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
10031 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa32 %zmm0, %zmm2 {%k1}
10032 ; AVX512F-ONLY-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload
10033 ; AVX512F-ONLY-FAST-NEXT:    vmovaps %zmm0, (%rsi)
10034 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %zmm17, (%rdx)
10035 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %zmm21, (%rcx)
10036 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %zmm24, (%r8)
10037 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %zmm8, (%r9)
10038 ; AVX512F-ONLY-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
10039 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %zmm5, (%rax)
10040 ; AVX512F-ONLY-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
10041 ; AVX512F-ONLY-FAST-NEXT:    vmovdqa64 %zmm2, (%rax)
10042 ; AVX512F-ONLY-FAST-NEXT:    vzeroupper
10043 ; AVX512F-ONLY-FAST-NEXT:    retq
10045 ; AVX512DQ-SLOW-LABEL: load_i8_stride7_vf64:
10046 ; AVX512DQ-SLOW:       # %bb.0:
10047 ; AVX512DQ-SLOW-NEXT:    subq $104, %rsp
10048 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm28 = [65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0]
10049 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 (%rdi), %ymm19
10050 ; AVX512DQ-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm14
10051 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 64(%rdi), %ymm27
10052 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm28, %ymm0
10053 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm14, %ymm19, %ymm0
10054 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm1
10055 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,zero,xmm1[5,12],zero,zero,xmm1[1,8,15,u,u,u,u,u,u]
10056 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[0,7,14],zero,zero,xmm0[3,10],zero,zero,zero,xmm0[u,u,u,u,u,u]
10057 ; AVX512DQ-SLOW-NEXT:    vpor %xmm1, %xmm0, %xmm0
10058 ; AVX512DQ-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = [65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535]
10059 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 96(%rdi), %ymm26
10060 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm1
10061 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm27, %ymm26, %ymm1
10062 ; AVX512DQ-SLOW-NEXT:    vmovdqa 80(%rdi), %xmm2
10063 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0,1],ymm2[2],ymm1[3,4],ymm2[5],ymm1[6,7,8,9],ymm2[10],ymm1[11,12],ymm2[13],ymm1[14,15]
10064 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm2, %ymm24
10065 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm1[6,13,4,11,2,9,16,23,30,u],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10066 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2
10067 ; AVX512DQ-SLOW-NEXT:    vmovdqa {{.*#+}} ymm15 = [65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535]
10068 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 128(%rdi), %ymm31
10069 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 160(%rdi), %ymm30
10070 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm0
10071 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm0
10072 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm4
10073 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u],zero,zero,xmm4[3,10],zero,zero,zero,xmm4[6,13,u,u,u,u]
10074 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,5,12],zero,zero,xmm0[1,8,15],zero,zero,xmm0[u,u,u,u]
10075 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm0, %xmm0
10076 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
10077 ; AVX512DQ-SLOW-NEXT:    vmovdqa 192(%rdi), %xmm4
10078 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm4[u,u,u,u,u,u,4,11,u,u,u,u,u,u,u,u]
10079 ; AVX512DQ-SLOW-NEXT:    vmovdqa %xmm4, %xmm6
10080 ; AVX512DQ-SLOW-NEXT:    vmovdqa 208(%rdi), %xmm4
10081 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm4[u,u,u,u,u,u,2,9,u,u,u,u,u,u,u,u]
10082 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %xmm4, %xmm23
10083 ; AVX512DQ-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1],xmm5[2],xmm9[2],xmm5[3],xmm9[3]
10084 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm5, %ymm0, %ymm5
10085 ; AVX512DQ-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm5[7]
10086 ; AVX512DQ-SLOW-NEXT:    vmovdqa 240(%rdi), %xmm12
10087 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm12[5,12,u,u,u,u,u,u,u,u,u,u,u]
10088 ; AVX512DQ-SLOW-NEXT:    vmovdqa 224(%rdi), %xmm8
10089 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm8[0,7,14],zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
10090 ; AVX512DQ-SLOW-NEXT:    vpor %xmm5, %xmm9, %xmm5
10091 ; AVX512DQ-SLOW-NEXT:    vinserti32x4 $2, %xmm5, %zmm0, %zmm0
10092 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm11 = [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,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]
10093 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %zmm2, %zmm11, %zmm0
10094 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 288(%rdi), %ymm20
10095 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 256(%rdi), %ymm17
10096 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm5
10097 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm20, %ymm17, %ymm5
10098 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm5[u,u,u,u,u,3,10],zero,zero,zero,xmm5[6,13],zero,zero,xmm5[u,u]
10099 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm5
10100 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u,u,u],zero,zero,xmm5[1,8,15],zero,zero,xmm5[4,11,u,u]
10101 ; AVX512DQ-SLOW-NEXT:    vpor %xmm5, %xmm9, %xmm9
10102 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 352(%rdi), %ymm18
10103 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 320(%rdi), %ymm16
10104 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm13
10105 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm18, %ymm16, %ymm13
10106 ; AVX512DQ-SLOW-NEXT:    vpermq {{.*#+}} ymm10 = ymm13[2,3,0,1]
10107 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm13[0,1],ymm10[2],ymm13[3,4,5],ymm10[6],ymm13[7,8,9],ymm10[10],ymm13[11,12,13],ymm10[14],ymm13[15]
10108 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[2,9,16,23,30,21,28,19,26,u,u,u,u,u,u,u,u,u]
10109 ; AVX512DQ-SLOW-NEXT:    vmovdqa {{.*#+}} ymm5 = [65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,65535,65535,65535,65535]
10110 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm5, %ymm9, %ymm10
10111 ; AVX512DQ-SLOW-NEXT:    vmovdqa {{.*#+}} ymm9 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535]
10112 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 416(%rdi), %ymm21
10113 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 384(%rdi), %ymm22
10114 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm13
10115 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm21, %ymm22, %ymm13
10116 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm4
10117 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,u,u],zero,zero,zero,xmm4[6,13],zero,zero,xmm4[2,9]
10118 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,u,u,u,u,1,8,15],zero,zero,xmm13[4,11],zero,zero
10119 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm13, %xmm4
10120 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
10121 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm25 = [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]
10122 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %ymm10, %ymm25, %ymm4
10123 ; AVX512DQ-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm0, %zmm2
10124 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm29 = [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,0,0,0,0,0,0]
10125 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %zmm0, %zmm29, %zmm2
10126 ; AVX512DQ-SLOW-NEXT:    vmovdqu64 %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
10127 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm0
10128 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm14, %ymm19, %ymm0
10129 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm4
10130 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[6,13],zero,zero,xmm4[2,9,u,u,u,u,u,u,u]
10131 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[1,8,15],zero,zero,xmm0[4,11],zero,zero,xmm0[u,u,u,u,u,u,u]
10132 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm0, %xmm0
10133 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm28, %ymm4
10134 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm26, %ymm27, %ymm4
10135 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm24, %ymm1
10136 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0,1],ymm1[2],ymm4[3,4,5],ymm1[6],ymm4[7,8,9],ymm1[10],ymm4[11,12,13],ymm1[14],ymm4[15]
10137 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
10138 ; AVX512DQ-SLOW-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm4
10139 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm0
10140 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm0
10141 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm0[u,u,u,6,13],zero,zero,xmm0[2,9],zero,zero,zero,xmm0[u,u,u,u]
10142 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
10143 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u],zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14,u,u,u,u]
10144 ; AVX512DQ-SLOW-NEXT:    vpor %xmm0, %xmm10, %xmm0
10145 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
10146 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %xmm23, %xmm2
10147 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm2[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
10148 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm6[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
10149 ; AVX512DQ-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm10 = xmm13[0],xmm10[0],xmm13[1],xmm10[1],xmm13[2],xmm10[2],xmm13[3],xmm10[3]
10150 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
10151 ; AVX512DQ-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm10[7]
10152 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,zero,xmm12[6,13,u,u,u,u,u,u,u,u,u,u,u]
10153 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm8[1,8,15],zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
10154 ; AVX512DQ-SLOW-NEXT:    vpor %xmm10, %xmm13, %xmm10
10155 ; AVX512DQ-SLOW-NEXT:    vinserti32x4 $2, %xmm10, %zmm0, %zmm0
10156 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %zmm4, %zmm11, %zmm0
10157 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm4
10158 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm17, %ymm20, %ymm4
10159 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm10
10160 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u],zero,zero,xmm10[2,9],zero,zero,zero,xmm10[5,12,u,u]
10161 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,4,11],zero,zero,xmm4[0,7,14],zero,zero,xmm4[u,u]
10162 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm10, %xmm4
10163 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm10
10164 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm18, %ymm16, %ymm10
10165 ; AVX512DQ-SLOW-NEXT:    vpermq {{.*#+}} ymm13 = ymm10[2,3,0,1]
10166 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm10[0,1,2],ymm13[3],ymm10[4,5],ymm13[6],ymm10[7,8,9,10],ymm13[11],ymm10[12,13],ymm13[14],ymm10[15]
10167 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[3,10,17,24,31,22,29,20,27,u,u,u,u,u,u,u,u,u]
10168 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm5, %ymm4, %ymm10
10169 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm4
10170 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm21, %ymm22, %ymm4
10171 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm4[u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm4[5,12],zero,zero
10172 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm4
10173 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,u,u],zero,zero,xmm4[0,7,14],zero,zero,xmm4[3,10]
10174 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm13, %xmm4
10175 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
10176 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %ymm10, %ymm25, %ymm4
10177 ; AVX512DQ-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm0, %zmm3
10178 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %zmm0, %zmm29, %zmm3
10179 ; AVX512DQ-SLOW-NEXT:    vmovdqu64 %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
10180 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm0
10181 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm14, %ymm19, %ymm0
10182 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[2,9],zero,zero,zero,xmm0[5,12],zero,zero,xmm0[u,u,u,u,u,u,u]
10183 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
10184 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[0,7,14],zero,zero,xmm0[3,10,u,u,u,u,u,u,u]
10185 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm0, %xmm0
10186 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm4
10187 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm26, %ymm27, %ymm4
10188 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0,1,2],ymm1[3],ymm4[4,5],ymm1[6],ymm4[7,8,9,10],ymm1[11],ymm4[12,13],ymm1[14],ymm4[15]
10189 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm24, %ymm11
10190 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[1,8,15,6,13,4,11,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10191 ; AVX512DQ-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
10192 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm1, %ymm0, %ymm4
10193 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm1, %ymm23
10194 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm28, %ymm0
10195 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm0
10196 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm10
10197 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u],zero,zero,zero,xmm10[5,12],zero,zero,xmm10[1,8,15,u,u,u,u]
10198 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,0,7,14],zero,zero,xmm0[3,10],zero,zero,zero,xmm0[u,u,u,u]
10199 ; AVX512DQ-SLOW-NEXT:    vpor %xmm0, %xmm10, %xmm0
10200 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
10201 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm2[u,u,u,u,u,u,4,11,u,u,u,u,u,u,u,u]
10202 ; AVX512DQ-SLOW-NEXT:    vmovdqa %xmm2, %xmm1
10203 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm6[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
10204 ; AVX512DQ-SLOW-NEXT:    vmovdqa %xmm6, %xmm3
10205 ; AVX512DQ-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm10 = xmm13[0],xmm10[0],xmm13[1],xmm10[1],xmm13[2],xmm10[2],xmm13[3],xmm10[3]
10206 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
10207 ; AVX512DQ-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm10[7]
10208 ; AVX512DQ-SLOW-NEXT:    vmovdqa %xmm8, %xmm2
10209 ; AVX512DQ-SLOW-NEXT:    vmovdqa %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
10210 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm8[2,9],zero,zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
10211 ; AVX512DQ-SLOW-NEXT:    vmovdqa %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
10212 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = zero,zero,xmm12[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
10213 ; AVX512DQ-SLOW-NEXT:    vpor %xmm10, %xmm13, %xmm10
10214 ; AVX512DQ-SLOW-NEXT:    vinserti32x4 $2, %xmm10, %zmm0, %zmm0
10215 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm10 = [0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
10216 ; AVX512DQ-SLOW-NEXT:    vpternlogq $226, %zmm4, %zmm10, %zmm0
10217 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm4
10218 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm17, %ymm20, %ymm4
10219 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm13
10220 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u,u,u,u],zero,zero,xmm13[3,10],zero,zero,zero,xmm13[6,13,u,u]
10221 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,5,12],zero,zero,xmm4[1,8,15],zero,zero,xmm4[u,u]
10222 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm13, %xmm4
10223 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm13
10224 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm16, %ymm18, %ymm13
10225 ; AVX512DQ-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm13[2,3,0,1]
10226 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm6 = ymm6[0],ymm13[1,2],ymm6[3],ymm13[4,5,6],ymm6[7,8],ymm13[9,10],ymm6[11],ymm13[12,13,14],ymm6[15]
10227 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[4,11,18,25,16,23,30,21,28,u,u,u,u,u,u,u,u,u]
10228 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm5, %ymm4, %ymm6
10229 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm4
10230 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm21, %ymm22, %ymm4
10231 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm4[u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm4[6,13],zero,zero
10232 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm4
10233 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,u,u],zero,zero,xmm4[1,8,15],zero,zero,xmm4[4,11]
10234 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm13, %xmm4
10235 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
10236 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %ymm6, %ymm25, %ymm4
10237 ; AVX512DQ-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm0, %zmm4
10238 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %zmm0, %zmm29, %zmm4
10239 ; AVX512DQ-SLOW-NEXT:    vmovdqu64 %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
10240 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm0
10241 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm14, %ymm19, %ymm0
10242 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[3,10],zero,zero,zero,xmm0[6,13],zero,zero,xmm0[u,u,u,u,u,u,u]
10243 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
10244 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[1,8,15],zero,zero,xmm0[4,11,u,u,u,u,u,u,u]
10245 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm0, %xmm0
10246 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm4
10247 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm26, %ymm27, %ymm4
10248 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm11[0],ymm4[1,2],ymm11[3],ymm4[4,5,6],ymm11[7,8],ymm4[9,10],ymm11[11],ymm4[12,13,14],ymm11[15]
10249 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[2,9,0,7,14,5,12,19,26],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10250 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm23, %ymm0, %ymm4
10251 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm0
10252 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm0
10253 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm6
10254 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,zero,xmm6[6,13],zero,zero,xmm6[2,9,u,u,u,u,u]
10255 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,1,8,15],zero,zero,xmm0[4,11],zero,zero,xmm0[u,u,u,u,u]
10256 ; AVX512DQ-SLOW-NEXT:    vpor %xmm6, %xmm0, %xmm0
10257 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm1[5,12]
10258 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm3[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
10259 ; AVX512DQ-SLOW-NEXT:    vpor %xmm6, %xmm13, %xmm6
10260 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
10261 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
10262 ; AVX512DQ-SLOW-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm6
10263 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm2[3,10],zero,zero,zero,xmm2[u,u,u,u,u,u,u,u,u,u,u]
10264 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = zero,zero,xmm12[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
10265 ; AVX512DQ-SLOW-NEXT:    vpor %xmm0, %xmm13, %xmm0
10266 ; AVX512DQ-SLOW-NEXT:    vinserti32x4 $2, %xmm0, %zmm6, %zmm0
10267 ; AVX512DQ-SLOW-NEXT:    vpternlogq $226, %zmm4, %zmm10, %zmm0
10268 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm4
10269 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm17, %ymm20, %ymm4
10270 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm4[u,u,u,u,u,6,13],zero,zero,xmm4[2,9],zero,zero,zero,xmm4[u,u]
10271 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm4
10272 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u],zero,zero,xmm4[4,11],zero,zero,xmm4[0,7,14,u,u]
10273 ; AVX512DQ-SLOW-NEXT:    vpor %xmm6, %xmm4, %xmm4
10274 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm6
10275 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm16, %ymm18, %ymm6
10276 ; AVX512DQ-SLOW-NEXT:    vpermq {{.*#+}} ymm10 = ymm6[2,3,0,1]
10277 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm6 = ymm10[0],ymm6[1,2,3],ymm10[4],ymm6[5,6],ymm10[7,8],ymm6[9,10,11],ymm10[12],ymm6[13,14],ymm10[15]
10278 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[5,12,19,26,17,24,31,22,29,u,u,u,u,u,u,u,u,u]
10279 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm5, %ymm4, %ymm6
10280 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm4
10281 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm22, %ymm21, %ymm4
10282 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm4, %xmm10
10283 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u,u,u],zero,zero,xmm10[2,9],zero,zero,zero,xmm10[5,12]
10284 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u,u,u,4,11],zero,zero,xmm4[0,7,14],zero,zero
10285 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm10, %xmm4
10286 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
10287 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %ymm6, %ymm25, %ymm4
10288 ; AVX512DQ-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm0, %zmm24
10289 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %zmm0, %zmm29, %zmm24
10290 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm28, %ymm0
10291 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm20, %ymm17, %ymm0
10292 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm4
10293 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u],zero,zero,zero,xmm4[5,12],zero,zero,xmm4[1,8,15,u,u]
10294 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,0,7,14],zero,zero,xmm0[3,10],zero,zero,zero,xmm0[u,u]
10295 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm0, %xmm0
10296 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm4
10297 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm16, %ymm18, %ymm4
10298 ; AVX512DQ-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm4[2,3,0,1]
10299 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0],ymm6[1],ymm4[2,3],ymm6[4],ymm4[5,6,7,8],ymm6[9],ymm4[10,11],ymm6[12],ymm4[13,14,15]
10300 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[6,13,20,27,18,25,16,23,30,u,u,u,u,u,u,u,u,u]
10301 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm5, %ymm0, %ymm4
10302 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm0
10303 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm22, %ymm21, %ymm0
10304 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm6
10305 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,u,u,u],zero,zero,xmm6[3,10],zero,zero,zero,xmm6[6,13]
10306 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u,5,12],zero,zero,xmm0[1,8,15],zero,zero
10307 ; AVX512DQ-SLOW-NEXT:    vpor %xmm6, %xmm0, %xmm0
10308 ; AVX512DQ-SLOW-NEXT:    vinserti32x4 $1, %xmm0, %ymm0, %ymm23
10309 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %ymm4, %ymm25, %ymm23
10310 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm0
10311 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm19, %ymm14, %ymm0
10312 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm4
10313 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,xmm4[2,9],zero,zero,zero,xmm4[5,12,u,u,u,u,u,u,u]
10314 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[4,11],zero,zero,xmm0[0,7,14],zero,zero,xmm0[u,u,u,u,u,u,u]
10315 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm0, %xmm2
10316 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm0
10317 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm20, %ymm17, %ymm0
10318 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm4
10319 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u],zero,zero,zero,xmm4[6,13],zero,zero,xmm4[2,9,u,u,u]
10320 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,1,8,15],zero,zero,xmm0[4,11],zero,zero,xmm0[u,u,u]
10321 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm0, %xmm0
10322 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm28, %ymm4
10323 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm18, %ymm16, %ymm4
10324 ; AVX512DQ-SLOW-NEXT:    vpermq {{.*#+}} ymm6 = ymm4[2,3,0,1]
10325 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm4 = ymm4[0],ymm6[1],ymm4[2,3,4],ymm6[5],ymm4[6,7,8],ymm6[9],ymm4[10,11,12],ymm6[13],ymm4[14,15]
10326 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm4[0,7,14,21,28,19,26,17,24,31,u,u,u,u,u,u,u,u,u]
10327 ; AVX512DQ-SLOW-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm4
10328 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm0
10329 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm22, %ymm21, %ymm0
10330 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm0[u,u,u,u,u,u,u,6,13],zero,zero,xmm0[2,9],zero,zero,zero
10331 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
10332 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u],zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14]
10333 ; AVX512DQ-SLOW-NEXT:    vpor %xmm6, %xmm0, %xmm0
10334 ; AVX512DQ-SLOW-NEXT:    vinserti32x4 $1, %xmm0, %ymm0, %ymm29
10335 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %ymm4, %ymm25, %ymm29
10336 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm0
10337 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm0
10338 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[u,u,2,9],zero,zero,zero,xmm0[5,12],zero,zero,xmm0[u,u,u,u,u]
10339 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
10340 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u],zero,zero,xmm0[0,7,14],zero,zero,xmm0[3,10,u,u,u,u,u]
10341 ; AVX512DQ-SLOW-NEXT:    vporq %xmm4, %xmm0, %xmm25
10342 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm10
10343 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm21, %ymm22, %ymm28
10344 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm15, %ymm13
10345 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm19, %ymm14, %ymm13
10346 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm7, %ymm0
10347 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm19, %ymm14, %ymm7
10348 ; AVX512DQ-SLOW-NEXT:    vmovdqa %xmm1, %xmm5
10349 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm1[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm1[6,13]
10350 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
10351 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm6, %xmm4
10352 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm26, %ymm27, %ymm10
10353 ; AVX512DQ-SLOW-NEXT:    vpternlogq $226, %ymm20, %ymm15, %ymm17
10354 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm9, %ymm6
10355 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm27, %ymm26, %ymm6
10356 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm27, %ymm26, %ymm15
10357 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm10 = ymm11[0],ymm10[1,2,3],ymm11[4],ymm10[5,6],ymm11[7,8],ymm10[9,10,11],ymm11[12],ymm10[13,14],ymm11[15]
10358 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm14 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm10[3,10,1,8,15,6,13,20,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10359 ; AVX512DQ-SLOW-NEXT:    vmovdqa {{.*#+}} ymm1 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
10360 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm1, %ymm2, %ymm14
10361 ; AVX512DQ-SLOW-NEXT:    vinserti32x4 $1, %xmm25, %ymm0, %ymm10
10362 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
10363 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 {{.*#+}} ymm19 = [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]
10364 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %ymm10, %ymm19, %ymm4
10365 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm13, %xmm10
10366 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,xmm10[3,10],zero,zero,zero,xmm10[6,13,u,u,u,u,u,u,u]
10367 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm13[5,12],zero,zero,xmm13[1,8,15],zero,zero,xmm13[u,u,u,u,u,u,u]
10368 ; AVX512DQ-SLOW-NEXT:    vpor %xmm10, %xmm12, %xmm12
10369 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm6 = ymm6[0],ymm11[1],ymm6[2,3],ymm11[4],ymm6[5,6,7,8],ymm11[9],ymm6[10,11],ymm11[12],ymm6[13,14,15]
10370 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[4,11,2,9,0,7,14,21,28],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10371 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm1, %ymm12, %ymm10
10372 ; AVX512DQ-SLOW-NEXT:    vmovdqa %ymm1, %ymm2
10373 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm7[6,13],zero,zero,xmm7[2,9],zero,zero,zero,xmm7[u,u,u,u,u,u,u]
10374 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm7, %xmm7
10375 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm7[4,11],zero,zero,xmm7[0,7,14,u,u,u,u,u,u,u]
10376 ; AVX512DQ-SLOW-NEXT:    vpor %xmm6, %xmm7, %xmm6
10377 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm15[0],ymm11[1],ymm15[2,3,4],ymm11[5],ymm15[6,7,8],ymm11[9],ymm15[10,11,12],ymm11[13],ymm15[14,15]
10378 ; AVX512DQ-SLOW-NEXT:    vpbroadcastd {{.*#+}} xmm12 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
10379 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm11 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm1[5,12,3,10,1,8,15,22,29],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10380 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, %ymm2, %ymm6, %ymm11
10381 ; AVX512DQ-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Reload
10382 ; AVX512DQ-SLOW-NEXT:    vpshufb %xmm12, %xmm2, %xmm1
10383 ; AVX512DQ-SLOW-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
10384 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm15[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10385 ; AVX512DQ-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[1],xmm6[1],xmm1[2],xmm6[2],xmm1[3],xmm6[3]
10386 ; AVX512DQ-SLOW-NEXT:    vinserti64x4 $1, %ymm1, %zmm4, %zmm7
10387 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 {{.*#+}} zmm1 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
10388 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %zmm14, %zmm1, %zmm7
10389 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm0
10390 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm0[u,u,3,10],zero,zero,zero,xmm0[6,13],zero,zero,xmm0[u,u,u,u,u]
10391 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
10392 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u],zero,zero,xmm0[1,8,15],zero,zero,xmm0[4,11,u,u,u,u,u]
10393 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm0, %xmm0
10394 ; AVX512DQ-SLOW-NEXT:    vpternlogq $226, %ymm18, %ymm9, %ymm16
10395 ; AVX512DQ-SLOW-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm9
10396 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm3[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
10397 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[0,7,14]
10398 ; AVX512DQ-SLOW-NEXT:    vpor %xmm4, %xmm6, %xmm4
10399 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
10400 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
10401 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %ymm0, %ymm19, %ymm4
10402 ; AVX512DQ-SLOW-NEXT:    vextracti128 $1, %ymm9, %xmm0
10403 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u],zero,zero,xmm0[2,9],zero,zero,zero,xmm0[5,12,u,u,u,u,u]
10404 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm9[u,u,4,11],zero,zero,xmm9[0,7,14],zero,zero,xmm9[u,u,u,u,u]
10405 ; AVX512DQ-SLOW-NEXT:    vpor %xmm0, %xmm6, %xmm0
10406 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
10407 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm5[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm5[1,8,15]
10408 ; AVX512DQ-SLOW-NEXT:    vpor %xmm6, %xmm8, %xmm6
10409 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
10410 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
10411 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %ymm0, %ymm19, %ymm6
10412 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm15[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10413 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm2[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10414 ; AVX512DQ-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm8[0],xmm0[0],xmm8[1],xmm0[1],xmm8[2],xmm0[2],xmm8[3],xmm0[3]
10415 ; AVX512DQ-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm4, %zmm0
10416 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %zmm10, %zmm1, %zmm0
10417 ; AVX512DQ-SLOW-NEXT:    vpshufb %xmm12, %xmm15, %xmm4
10418 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm2[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10419 ; AVX512DQ-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm4 = xmm8[0],xmm4[0],xmm8[1],xmm4[1],xmm8[2],xmm4[2],xmm8[3],xmm4[3]
10420 ; AVX512DQ-SLOW-NEXT:    vinserti64x4 $1, %ymm4, %zmm6, %zmm4
10421 ; AVX512DQ-SLOW-NEXT:    vpternlogq $184, %zmm11, %zmm1, %zmm4
10422 ; AVX512DQ-SLOW-NEXT:    movw $-512, %ax # imm = 0xFE00
10423 ; AVX512DQ-SLOW-NEXT:    kmovw %eax, %k1
10424 ; AVX512DQ-SLOW-NEXT:    vinserti32x8 $1, %ymm23, %zmm0, %zmm7 {%k1}
10425 ; AVX512DQ-SLOW-NEXT:    vinserti32x8 $1, %ymm29, %zmm0, %zmm0 {%k1}
10426 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm17, %ymm2
10427 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm2[u,u,u,u,2,9],zero,zero,zero,xmm2[5,12],zero,zero,xmm2[u,u,u]
10428 ; AVX512DQ-SLOW-NEXT:    vextracti32x4 $1, %ymm17, %xmm2
10429 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u],zero,zero,xmm2[0,7,14],zero,zero,xmm2[3,10,u,u,u]
10430 ; AVX512DQ-SLOW-NEXT:    vpor %xmm1, %xmm2, %xmm1
10431 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm16, %ymm3
10432 ; AVX512DQ-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm16[2,3,0,1]
10433 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7,8,9],ymm2[10],ymm3[11,12],ymm2[13],ymm3[14,15]
10434 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[1,8,15,22,29,20,27,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10435 ; AVX512DQ-SLOW-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm2
10436 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %ymm28, %ymm3
10437 ; AVX512DQ-SLOW-NEXT:    vextracti32x4 $1, %ymm28, %xmm1
10438 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u,u],zero,zero,zero,xmm1[5,12],zero,zero,xmm1[1,8,15]
10439 ; AVX512DQ-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,0,7,14],zero,zero,xmm3[3,10],zero,zero,zero
10440 ; AVX512DQ-SLOW-NEXT:    vpor %xmm1, %xmm3, %xmm1
10441 ; AVX512DQ-SLOW-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
10442 ; AVX512DQ-SLOW-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3,4,5,6,7],ymm2[8,9,10],ymm1[11,12,13,14,15]
10443 ; AVX512DQ-SLOW-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
10444 ; AVX512DQ-SLOW-NEXT:    vinserti32x8 $1, %ymm1, %zmm0, %zmm4 {%k1}
10445 ; AVX512DQ-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
10446 ; AVX512DQ-SLOW-NEXT:    vmovaps %zmm1, (%rsi)
10447 ; AVX512DQ-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
10448 ; AVX512DQ-SLOW-NEXT:    vmovaps %zmm1, (%rdx)
10449 ; AVX512DQ-SLOW-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 # 64-byte Reload
10450 ; AVX512DQ-SLOW-NEXT:    vmovaps %zmm1, (%rcx)
10451 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %zmm24, (%r8)
10452 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %zmm7, (%r9)
10453 ; AVX512DQ-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
10454 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %zmm0, (%rax)
10455 ; AVX512DQ-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
10456 ; AVX512DQ-SLOW-NEXT:    vmovdqa64 %zmm4, (%rax)
10457 ; AVX512DQ-SLOW-NEXT:    addq $104, %rsp
10458 ; AVX512DQ-SLOW-NEXT:    vzeroupper
10459 ; AVX512DQ-SLOW-NEXT:    retq
10461 ; AVX512DQ-FAST-LABEL: load_i8_stride7_vf64:
10462 ; AVX512DQ-FAST:       # %bb.0:
10463 ; AVX512DQ-FAST-NEXT:    pushq %rax
10464 ; AVX512DQ-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm22 = [65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0]
10465 ; AVX512DQ-FAST-NEXT:    vmovdqa (%rdi), %ymm13
10466 ; AVX512DQ-FAST-NEXT:    vmovdqa 32(%rdi), %ymm14
10467 ; AVX512DQ-FAST-NEXT:    vmovdqa64 64(%rdi), %ymm17
10468 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %ymm22, %ymm1
10469 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm14, %ymm13, %ymm1
10470 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm2
10471 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,zero,xmm2[5,12],zero,zero,xmm2[1,8,15,u,u,u,u,u,u]
10472 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,7,14],zero,zero,xmm1[3,10],zero,zero,zero,xmm1[u,u,u,u,u,u]
10473 ; AVX512DQ-FAST-NEXT:    vpor %xmm2, %xmm1, %xmm1
10474 ; AVX512DQ-FAST-NEXT:    vmovdqa {{.*#+}} ymm5 = [65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535]
10475 ; AVX512DQ-FAST-NEXT:    vmovdqa 96(%rdi), %ymm12
10476 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm2
10477 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm17, %ymm12, %ymm2
10478 ; AVX512DQ-FAST-NEXT:    vmovdqa 80(%rdi), %xmm10
10479 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0,1],ymm10[2],ymm2[3,4],ymm10[5],ymm2[6,7,8,9],ymm10[10],ymm2[11,12],ymm10[13],ymm2[14,15]
10480 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm2[6,13,4,11,2,9,16,23,30,u],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10481 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm4
10482 ; AVX512DQ-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535]
10483 ; AVX512DQ-FAST-NEXT:    vmovdqa64 128(%rdi), %ymm30
10484 ; AVX512DQ-FAST-NEXT:    vmovdqa64 160(%rdi), %ymm31
10485 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm1
10486 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm1
10487 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm2
10488 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u],zero,zero,xmm2[3,10],zero,zero,zero,xmm2[6,13,u,u,u,u]
10489 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,5,12],zero,zero,xmm1[1,8,15],zero,zero,xmm1[u,u,u,u]
10490 ; AVX512DQ-FAST-NEXT:    vpor %xmm2, %xmm1, %xmm1
10491 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm1, %ymm0, %ymm1
10492 ; AVX512DQ-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm3 = [1,2,4,6,1,2,4,6]
10493 ; AVX512DQ-FAST-NEXT:    # ymm3 = mem[0,1,0,1]
10494 ; AVX512DQ-FAST-NEXT:    vmovdqa 192(%rdi), %ymm2
10495 ; AVX512DQ-FAST-NEXT:    vpermd %ymm2, %ymm3, %ymm3
10496 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,23,26,29]
10497 ; AVX512DQ-FAST-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm3[7]
10498 ; AVX512DQ-FAST-NEXT:    vmovdqa 240(%rdi), %xmm0
10499 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm0[5,12,u,u,u,u,u,u,u,u,u,u,u]
10500 ; AVX512DQ-FAST-NEXT:    vmovdqa 224(%rdi), %xmm3
10501 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm3[0,7,14],zero,zero,xmm3[u,u,u,u,u,u,u,u,u,u,u]
10502 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %xmm3, %xmm21
10503 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm7, %xmm6
10504 ; AVX512DQ-FAST-NEXT:    vinserti32x4 $2, %xmm6, %zmm1, %zmm6
10505 ; AVX512DQ-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm24 = [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,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]
10506 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %zmm4, %zmm24, %zmm6
10507 ; AVX512DQ-FAST-NEXT:    vmovdqa64 288(%rdi), %ymm18
10508 ; AVX512DQ-FAST-NEXT:    vmovdqa64 256(%rdi), %ymm29
10509 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm4
10510 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm18, %ymm29, %ymm4
10511 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm4[u,u,u,u,u,3,10],zero,zero,zero,xmm4[6,13],zero,zero,xmm4[u,u]
10512 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm4
10513 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u,u],zero,zero,xmm4[1,8,15],zero,zero,xmm4[4,11,u,u]
10514 ; AVX512DQ-FAST-NEXT:    vpor %xmm4, %xmm8, %xmm8
10515 ; AVX512DQ-FAST-NEXT:    vmovdqa64 352(%rdi), %ymm16
10516 ; AVX512DQ-FAST-NEXT:    vmovdqa 320(%rdi), %ymm4
10517 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm15
10518 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm16, %ymm4, %ymm15
10519 ; AVX512DQ-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm15[2,3,0,1]
10520 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm7 = ymm15[0,1],ymm7[2],ymm15[3,4,5],ymm7[6],ymm15[7,8,9],ymm7[10],ymm15[11,12,13],ymm7[14],ymm15[15]
10521 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[2,9,16,23,30,21,28,19,26,u,u,u,u,u,u,u,u,u]
10522 ; AVX512DQ-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm27 = [65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,65535,65535,65535,65535]
10523 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm8, %ymm7
10524 ; AVX512DQ-FAST-NEXT:    vmovdqa {{.*#+}} ymm15 = [65535,65535,0,65535,65535,0,65535,65535,65535,0,65535,65535,0,65535,65535,65535]
10525 ; AVX512DQ-FAST-NEXT:    vmovdqa64 416(%rdi), %ymm19
10526 ; AVX512DQ-FAST-NEXT:    vmovdqa64 384(%rdi), %ymm20
10527 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm8
10528 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm19, %ymm20, %ymm8
10529 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm8, %xmm3
10530 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,zero,xmm3[6,13],zero,zero,xmm3[2,9]
10531 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,1,8,15],zero,zero,xmm8[4,11],zero,zero
10532 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm8, %xmm3
10533 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
10534 ; AVX512DQ-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm23 = [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]
10535 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %ymm7, %ymm23, %ymm3
10536 ; AVX512DQ-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm3
10537 ; AVX512DQ-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm28 = [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,0,0,0,0,0,0]
10538 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %zmm6, %zmm28, %zmm3
10539 ; AVX512DQ-FAST-NEXT:    vmovdqu64 %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill
10540 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm3
10541 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm14, %ymm13, %ymm3
10542 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm6
10543 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,zero,xmm6[6,13],zero,zero,xmm6[2,9,u,u,u,u,u,u,u]
10544 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[1,8,15],zero,zero,xmm3[4,11],zero,zero,xmm3[u,u,u,u,u,u,u]
10545 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm3, %xmm3
10546 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %ymm22, %ymm6
10547 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm12, %ymm17, %ymm6
10548 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm6[0,1],ymm10[2],ymm6[3,4,5],ymm10[6],ymm6[7,8,9],ymm10[10],ymm6[11,12,13],ymm10[14],ymm6[15]
10549 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
10550 ; AVX512DQ-FAST-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm3, %ymm6
10551 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm3
10552 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm3
10553 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm3[u,u,u,6,13],zero,zero,xmm3[2,9],zero,zero,zero,xmm3[u,u,u,u]
10554 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
10555 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u],zero,zero,xmm3[4,11],zero,zero,xmm3[0,7,14,u,u,u,u]
10556 ; AVX512DQ-FAST-NEXT:    vpor %xmm7, %xmm3, %xmm3
10557 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
10558 ; AVX512DQ-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [1,3,4,6,1,3,4,6]
10559 ; AVX512DQ-FAST-NEXT:    # ymm7 = mem[0,1,0,1]
10560 ; AVX512DQ-FAST-NEXT:    vpermd %ymm2, %ymm7, %ymm7
10561 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = ymm7[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,20,27,30]
10562 ; AVX512DQ-FAST-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5,6],ymm7[7]
10563 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,zero,xmm0[6,13,u,u,u,u,u,u,u,u,u,u,u]
10564 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %xmm21, %xmm1
10565 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm1[1,8,15],zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
10566 ; AVX512DQ-FAST-NEXT:    vpor %xmm7, %xmm8, %xmm7
10567 ; AVX512DQ-FAST-NEXT:    vinserti32x4 $2, %xmm7, %zmm3, %zmm3
10568 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %zmm6, %zmm24, %zmm3
10569 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm6
10570 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm29, %ymm18, %ymm6
10571 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm7
10572 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u],zero,zero,xmm7[2,9],zero,zero,zero,xmm7[5,12,u,u]
10573 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,u,4,11],zero,zero,xmm6[0,7,14],zero,zero,xmm6[u,u]
10574 ; AVX512DQ-FAST-NEXT:    vpor %xmm7, %xmm6, %xmm6
10575 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm7
10576 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm16, %ymm4, %ymm7
10577 ; AVX512DQ-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm7[2,3,0,1]
10578 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm7 = ymm7[0,1,2],ymm8[3],ymm7[4,5],ymm8[6],ymm7[7,8,9,10],ymm8[11],ymm7[12,13],ymm8[14],ymm7[15]
10579 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm7 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm7[3,10,17,24,31,22,29,20,27,u,u,u,u,u,u,u,u,u]
10580 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm6, %ymm7
10581 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm6
10582 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm19, %ymm20, %ymm6
10583 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm6[u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm6[5,12],zero,zero
10584 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
10585 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,u,u,u],zero,zero,xmm6[0,7,14],zero,zero,xmm6[3,10]
10586 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm8, %xmm6
10587 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
10588 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %ymm7, %ymm23, %ymm6
10589 ; AVX512DQ-FAST-NEXT:    vinserti64x4 $1, %ymm6, %zmm0, %zmm25
10590 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %zmm3, %zmm28, %zmm25
10591 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm3
10592 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm14, %ymm13, %ymm3
10593 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[2,9],zero,zero,zero,xmm3[5,12],zero,zero,xmm3[u,u,u,u,u,u,u]
10594 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
10595 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm3[0,7,14],zero,zero,xmm3[3,10,u,u,u,u,u,u,u]
10596 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm3, %xmm3
10597 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm6
10598 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm12, %ymm17, %ymm6
10599 ; AVX512DQ-FAST-NEXT:    vmovdqu %ymm10, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
10600 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm6[0,1,2],ymm10[3],ymm6[4,5],ymm10[6],ymm6[7,8,9,10],ymm10[11],ymm6[12,13],ymm10[14],ymm6[15]
10601 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[1,8,15,6,13,4,11,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10602 ; AVX512DQ-FAST-NEXT:    vmovdqa64 {{.*#+}} ymm26 = [255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
10603 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm26, %ymm3, %ymm6
10604 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %ymm22, %ymm3
10605 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm3
10606 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm7
10607 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u],zero,zero,zero,xmm7[5,12],zero,zero,xmm7[1,8,15,u,u,u,u]
10608 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,0,7,14],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[u,u,u,u]
10609 ; AVX512DQ-FAST-NEXT:    vpor %xmm7, %xmm3, %xmm3
10610 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
10611 ; AVX512DQ-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm7 = [1,3,5,6,1,3,5,6]
10612 ; AVX512DQ-FAST-NEXT:    # ymm7 = mem[0,1,0,1]
10613 ; AVX512DQ-FAST-NEXT:    vpermd %ymm2, %ymm7, %ymm2
10614 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,21,24,31]
10615 ; AVX512DQ-FAST-NEXT:    vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3,4,5,6],ymm2[7]
10616 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm1[2,9],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
10617 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %xmm21, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
10618 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = zero,zero,xmm0[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
10619 ; AVX512DQ-FAST-NEXT:    vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
10620 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm7, %xmm3
10621 ; AVX512DQ-FAST-NEXT:    vinserti32x4 $2, %xmm3, %zmm2, %zmm2
10622 ; AVX512DQ-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm24 = [0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
10623 ; AVX512DQ-FAST-NEXT:    vpternlogq $226, %zmm6, %zmm24, %zmm2
10624 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm3
10625 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm29, %ymm18, %ymm3
10626 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm6
10627 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u,u],zero,zero,xmm6[3,10],zero,zero,zero,xmm6[6,13,u,u]
10628 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,5,12],zero,zero,xmm3[1,8,15],zero,zero,xmm3[u,u]
10629 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm3, %xmm3
10630 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm6
10631 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm4, %ymm16, %ymm6
10632 ; AVX512DQ-FAST-NEXT:    vpermq {{.*#+}} ymm7 = ymm6[2,3,0,1]
10633 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm7[0],ymm6[1,2],ymm7[3],ymm6[4,5,6],ymm7[7,8],ymm6[9,10],ymm7[11],ymm6[12,13,14],ymm7[15]
10634 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[4,11,18,25,16,23,30,21,28,u,u,u,u,u,u,u,u,u]
10635 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm3, %ymm6
10636 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm3
10637 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm19, %ymm20, %ymm3
10638 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm3[u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm3[6,13],zero,zero
10639 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
10640 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[1,8,15],zero,zero,xmm3[4,11]
10641 ; AVX512DQ-FAST-NEXT:    vpor %xmm7, %xmm3, %xmm3
10642 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
10643 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %ymm6, %ymm23, %ymm3
10644 ; AVX512DQ-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm21
10645 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %zmm2, %zmm28, %zmm21
10646 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm2
10647 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm14, %ymm13, %ymm2
10648 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[3,10],zero,zero,zero,xmm2[6,13],zero,zero,xmm2[u,u,u,u,u,u,u]
10649 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm2
10650 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[1,8,15],zero,zero,xmm2[4,11,u,u,u,u,u,u,u]
10651 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm2, %xmm2
10652 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm3
10653 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm12, %ymm17, %ymm3
10654 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm10[0],ymm3[1,2],ymm10[3],ymm3[4,5,6],ymm10[7,8],ymm3[9,10],ymm10[11],ymm3[12,13,14],ymm10[15]
10655 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm3[2,9,0,7,14,5,12,19,26],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10656 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm26, %ymm2, %ymm3
10657 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm2
10658 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm2
10659 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm2, %xmm6
10660 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,zero,xmm6[6,13],zero,zero,xmm6[2,9,u,u,u,u,u]
10661 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,1,8,15],zero,zero,xmm2[4,11],zero,zero,xmm2[u,u,u,u,u]
10662 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm2, %xmm6
10663 ; AVX512DQ-FAST-NEXT:    vmovdqa 208(%rdi), %xmm7
10664 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm7[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm7[5,12]
10665 ; AVX512DQ-FAST-NEXT:    vmovdqa 192(%rdi), %xmm2
10666 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm2[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
10667 ; AVX512DQ-FAST-NEXT:    vpor %xmm8, %xmm9, %xmm8
10668 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
10669 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm8, %ymm0, %ymm8
10670 ; AVX512DQ-FAST-NEXT:    vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm6, %ymm8
10671 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm1[3,10],zero,zero,zero,xmm1[u,u,u,u,u,u,u,u,u,u,u]
10672 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,xmm0[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
10673 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm9, %xmm6
10674 ; AVX512DQ-FAST-NEXT:    vinserti32x4 $2, %xmm6, %zmm8, %zmm6
10675 ; AVX512DQ-FAST-NEXT:    vpternlogq $226, %zmm3, %zmm24, %zmm6
10676 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm3
10677 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm29, %ymm18, %ymm3
10678 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm3[u,u,u,u,u,6,13],zero,zero,xmm3[2,9],zero,zero,zero,xmm3[u,u]
10679 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
10680 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u],zero,zero,xmm3[4,11],zero,zero,xmm3[0,7,14,u,u]
10681 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm8, %xmm3
10682 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm8
10683 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm4, %ymm16, %ymm8
10684 ; AVX512DQ-FAST-NEXT:    vpermq {{.*#+}} ymm9 = ymm8[2,3,0,1]
10685 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm8 = ymm9[0],ymm8[1,2,3],ymm9[4],ymm8[5,6],ymm9[7,8],ymm8[9,10,11],ymm9[12],ymm8[13,14],ymm9[15]
10686 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[5,12,19,26,17,24,31,22,29,u,u,u,u,u,u,u,u,u]
10687 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm3, %ymm8
10688 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm3
10689 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm20, %ymm19, %ymm3
10690 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm9
10691 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm9[u,u,u,u,u,u,u],zero,zero,xmm9[2,9],zero,zero,zero,xmm9[5,12]
10692 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u,4,11],zero,zero,xmm3[0,7,14],zero,zero
10693 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm9, %xmm3
10694 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
10695 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %ymm8, %ymm23, %ymm3
10696 ; AVX512DQ-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm0, %zmm24
10697 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %zmm6, %zmm28, %zmm24
10698 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %ymm22, %ymm3
10699 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm18, %ymm29, %ymm3
10700 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm6
10701 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u],zero,zero,zero,xmm6[5,12],zero,zero,xmm6[1,8,15,u,u]
10702 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,0,7,14],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[u,u]
10703 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm3, %xmm3
10704 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm6
10705 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm4, %ymm16, %ymm6
10706 ; AVX512DQ-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
10707 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm6[0],ymm8[1],ymm6[2,3],ymm8[4],ymm6[5,6,7,8],ymm8[9],ymm6[10,11],ymm8[12],ymm6[13,14,15]
10708 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[6,13,20,27,18,25,16,23,30,u,u,u,u,u,u,u,u,u]
10709 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm27, %ymm3, %ymm6
10710 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm3
10711 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm20, %ymm19, %ymm3
10712 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm8
10713 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u],zero,zero,xmm8[3,10],zero,zero,zero,xmm8[6,13]
10714 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u,5,12],zero,zero,xmm3[1,8,15],zero,zero
10715 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm8, %xmm3
10716 ; AVX512DQ-FAST-NEXT:    vinserti32x4 $1, %xmm3, %ymm0, %ymm27
10717 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %ymm6, %ymm23, %ymm27
10718 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm3
10719 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm13, %ymm14, %ymm3
10720 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm6
10721 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = zero,zero,xmm6[2,9],zero,zero,zero,xmm6[5,12,u,u,u,u,u,u,u]
10722 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[4,11],zero,zero,xmm3[0,7,14],zero,zero,xmm3[u,u,u,u,u,u,u]
10723 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm3, %xmm1
10724 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm3
10725 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm18, %ymm29, %ymm3
10726 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm6
10727 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,u,u],zero,zero,zero,xmm6[6,13],zero,zero,xmm6[2,9,u,u,u]
10728 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,1,8,15],zero,zero,xmm3[4,11],zero,zero,xmm3[u,u,u]
10729 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm3, %xmm3
10730 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %ymm22, %ymm6
10731 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm16, %ymm4, %ymm6
10732 ; AVX512DQ-FAST-NEXT:    vpermq {{.*#+}} ymm8 = ymm6[2,3,0,1]
10733 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm6 = ymm6[0],ymm8[1],ymm6[2,3,4],ymm8[5],ymm6[6,7,8],ymm8[9],ymm6[10,11,12],ymm8[13],ymm6[14,15]
10734 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u],zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm6[0,7,14,21,28,19,26,17,24,31,u,u,u,u,u,u,u,u,u]
10735 ; AVX512DQ-FAST-NEXT:    vpternlogq $244, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm3, %ymm6
10736 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm3
10737 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm20, %ymm19, %ymm3
10738 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm3[u,u,u,u,u,u,u,6,13],zero,zero,xmm3[2,9],zero,zero,zero
10739 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
10740 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[4,11],zero,zero,xmm3[0,7,14]
10741 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm8, %xmm3
10742 ; AVX512DQ-FAST-NEXT:    vinserti32x4 $1, %xmm3, %ymm0, %ymm28
10743 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %ymm6, %ymm23, %ymm28
10744 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm3
10745 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm3
10746 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm3[u,u,2,9],zero,zero,zero,xmm3[5,12],zero,zero,xmm3[u,u,u,u,u]
10747 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
10748 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u],zero,zero,xmm3[0,7,14],zero,zero,xmm3[3,10,u,u,u,u,u]
10749 ; AVX512DQ-FAST-NEXT:    vporq %xmm6, %xmm3, %xmm23
10750 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm8
10751 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm19, %ymm20, %ymm22
10752 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm11, %ymm3
10753 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm13, %ymm14, %ymm3
10754 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm5, %ymm6
10755 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm13, %ymm14, %ymm5
10756 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm9 = xmm7[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm7[6,13]
10757 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm2[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
10758 ; AVX512DQ-FAST-NEXT:    vpor %xmm9, %xmm13, %xmm9
10759 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm12, %ymm17, %ymm8
10760 ; AVX512DQ-FAST-NEXT:    vpternlogq $226, %ymm18, %ymm11, %ymm29
10761 ; AVX512DQ-FAST-NEXT:    vmovdqa %ymm15, %ymm13
10762 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm17, %ymm12, %ymm13
10763 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm17, %ymm12, %ymm11
10764 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm10
10765 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = zero,zero,xmm10[3,10],zero,zero,zero,xmm10[6,13,u,u,u,u,u,u,u]
10766 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[5,12],zero,zero,xmm3[1,8,15],zero,zero,xmm3[u,u,u,u,u,u,u]
10767 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm10, %xmm3
10768 ; AVX512DQ-FAST-NEXT:    vmovdqu {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
10769 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm8 = ymm0[0],ymm8[1,2,3],ymm0[4],ymm8[5,6],ymm0[7,8],ymm8[9,10,11],ymm0[12],ymm8[13,14],ymm0[15]
10770 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm12 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[3,10,1,8,15,6,13,20,27],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10771 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm26, %ymm1, %ymm12
10772 ; AVX512DQ-FAST-NEXT:    vinserti32x4 $1, %xmm23, %ymm0, %ymm8
10773 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm14
10774 ; AVX512DQ-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [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]
10775 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %ymm8, %ymm1, %ymm14
10776 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm8 = ymm13[0],ymm0[1],ymm13[2,3],ymm0[4],ymm13[5,6,7,8],ymm0[9],ymm13[10,11],ymm0[12],ymm13[13,14,15]
10777 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm8 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm8[4,11,2,9,0,7,14,21,28],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10778 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm26, %ymm3, %ymm8
10779 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm5[6,13],zero,zero,xmm5[2,9],zero,zero,zero,xmm5[u,u,u,u,u,u,u]
10780 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm5, %xmm5
10781 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,xmm5[4,11],zero,zero,xmm5[0,7,14,u,u,u,u,u,u,u]
10782 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm5, %xmm3
10783 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm5 = ymm11[0],ymm0[1],ymm11[2,3,4],ymm0[5],ymm11[6,7,8],ymm0[9],ymm11[10,11,12],ymm0[13],ymm11[14,15]
10784 ; AVX512DQ-FAST-NEXT:    vpbroadcastd {{.*#+}} xmm10 = [4,11,0,0,4,11,0,0,4,11,0,0,4,11,0,0]
10785 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm5[5,12,3,10,1,8,15,22,29],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10786 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, %ymm26, %ymm3, %ymm9
10787 ; AVX512DQ-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
10788 ; AVX512DQ-FAST-NEXT:    vpshufb %xmm10, %xmm0, %xmm3
10789 ; AVX512DQ-FAST-NEXT:    vmovdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload
10790 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm13[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10791 ; AVX512DQ-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3]
10792 ; AVX512DQ-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm14, %zmm5
10793 ; AVX512DQ-FAST-NEXT:    vmovdqa64 {{.*#+}} zmm3 = [65535,65535,65535,65535,65535,65535,65535,65535,65535,0,0,0,0,0,0,0,0,0,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535]
10794 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %zmm12, %zmm3, %zmm5
10795 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm31, %ymm30, %ymm6
10796 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm6[u,u,3,10],zero,zero,zero,xmm6[6,13],zero,zero,xmm6[u,u,u,u,u]
10797 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm6
10798 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,xmm6[1,8,15],zero,zero,xmm6[4,11,u,u,u,u,u]
10799 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm11, %xmm6
10800 ; AVX512DQ-FAST-NEXT:    vpternlogq $226, %ymm16, %ymm15, %ymm4
10801 ; AVX512DQ-FAST-NEXT:    vpternlogq $202, %ymm30, %ymm31, %ymm15
10802 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm2[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
10803 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm7[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm7[0,7,14]
10804 ; AVX512DQ-FAST-NEXT:    vpor %xmm11, %xmm12, %xmm11
10805 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
10806 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
10807 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %ymm6, %ymm1, %ymm11
10808 ; AVX512DQ-FAST-NEXT:    vextracti128 $1, %ymm15, %xmm6
10809 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u],zero,zero,xmm6[2,9],zero,zero,zero,xmm6[5,12,u,u,u,u,u]
10810 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm15[u,u,4,11],zero,zero,xmm15[0,7,14],zero,zero,xmm15[u,u,u,u,u]
10811 ; AVX512DQ-FAST-NEXT:    vpor %xmm6, %xmm12, %xmm6
10812 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
10813 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm7[1,8,15]
10814 ; AVX512DQ-FAST-NEXT:    vpor %xmm2, %xmm7, %xmm2
10815 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
10816 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
10817 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %ymm6, %ymm1, %ymm2
10818 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm6 = xmm13[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10819 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm0[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10820 ; AVX512DQ-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm6 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3]
10821 ; AVX512DQ-FAST-NEXT:    vinserti64x4 $1, %ymm6, %zmm11, %zmm6
10822 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %zmm8, %zmm3, %zmm6
10823 ; AVX512DQ-FAST-NEXT:    vpshufb %xmm10, %xmm13, %xmm7
10824 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm8 = xmm0[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10825 ; AVX512DQ-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm7 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3]
10826 ; AVX512DQ-FAST-NEXT:    vinserti64x4 $1, %ymm7, %zmm2, %zmm2
10827 ; AVX512DQ-FAST-NEXT:    vpternlogq $184, %zmm9, %zmm3, %zmm2
10828 ; AVX512DQ-FAST-NEXT:    movw $-512, %ax # imm = 0xFE00
10829 ; AVX512DQ-FAST-NEXT:    kmovw %eax, %k1
10830 ; AVX512DQ-FAST-NEXT:    vinserti32x8 $1, %ymm27, %zmm0, %zmm5 {%k1}
10831 ; AVX512DQ-FAST-NEXT:    vinserti32x8 $1, %ymm28, %zmm0, %zmm6 {%k1}
10832 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %ymm29, %ymm0
10833 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm0[u,u,u,u,2,9],zero,zero,zero,xmm0[5,12],zero,zero,xmm0[u,u,u]
10834 ; AVX512DQ-FAST-NEXT:    vextracti32x4 $1, %ymm29, %xmm1
10835 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u],zero,zero,xmm1[0,7,14],zero,zero,xmm1[3,10,u,u,u]
10836 ; AVX512DQ-FAST-NEXT:    vpor %xmm3, %xmm1, %xmm1
10837 ; AVX512DQ-FAST-NEXT:    vpermq {{.*#+}} ymm3 = ymm4[2,3,0,1]
10838 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm3 = ymm4[0,1],ymm3[2],ymm4[3,4],ymm3[5],ymm4[6,7,8,9],ymm3[10],ymm4[11,12],ymm3[13],ymm4[14,15]
10839 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} ymm3 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,ymm3[1,8,15,22,29,20,27,18,25],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
10840 ; AVX512DQ-FAST-NEXT:    vpternlogq $248, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm3
10841 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %ymm22, %ymm0
10842 ; AVX512DQ-FAST-NEXT:    vextracti32x4 $1, %ymm22, %xmm1
10843 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[u,u,u,u,u,u],zero,zero,zero,xmm1[5,12],zero,zero,xmm1[1,8,15]
10844 ; AVX512DQ-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,0,7,14],zero,zero,xmm0[3,10],zero,zero,zero
10845 ; AVX512DQ-FAST-NEXT:    vpor %xmm1, %xmm0, %xmm0
10846 ; AVX512DQ-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
10847 ; AVX512DQ-FAST-NEXT:    vpblendw {{.*#+}} ymm0 = ymm3[0,1,2],ymm0[3,4,5,6,7],ymm3[8,9,10],ymm0[11,12,13,14,15]
10848 ; AVX512DQ-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
10849 ; AVX512DQ-FAST-NEXT:    vinserti32x8 $1, %ymm0, %zmm0, %zmm2 {%k1}
10850 ; AVX512DQ-FAST-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload
10851 ; AVX512DQ-FAST-NEXT:    vmovaps %zmm0, (%rsi)
10852 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %zmm25, (%rdx)
10853 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %zmm21, (%rcx)
10854 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %zmm24, (%r8)
10855 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %zmm5, (%r9)
10856 ; AVX512DQ-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
10857 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %zmm6, (%rax)
10858 ; AVX512DQ-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
10859 ; AVX512DQ-FAST-NEXT:    vmovdqa64 %zmm2, (%rax)
10860 ; AVX512DQ-FAST-NEXT:    popq %rax
10861 ; AVX512DQ-FAST-NEXT:    vzeroupper
10862 ; AVX512DQ-FAST-NEXT:    retq
10864 ; AVX512BW-ONLY-SLOW-LABEL: load_i8_stride7_vf64:
10865 ; AVX512BW-ONLY-SLOW:       # %bb.0:
10866 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 64(%rdi), %zmm25
10867 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <8,1,18,11,4,5,22,15,u,25,10,u,12,29,14,u>
10868 ; AVX512BW-ONLY-SLOW-NEXT:    vpermw %zmm25, %zmm0, %zmm18
10869 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <0,1,18,11,4,21,14,7,8,25,10,u,28,13,u,15>
10870 ; AVX512BW-ONLY-SLOW-NEXT:    vpermw %zmm25, %zmm0, %zmm24
10871 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <0,17,10,3,4,21,14,7,24,9,u,11,28,13,u,31>
10872 ; AVX512BW-ONLY-SLOW-NEXT:    vpermw %zmm25, %zmm0, %zmm9
10873 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <16,17,10,3,20,13,6,23,24,25,u,27,28,u,30,31>
10874 ; AVX512BW-ONLY-SLOW-NEXT:    vpermw %zmm25, %zmm0, %zmm0
10875 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa (%rdi), %ymm10
10876 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm1
10877 ; AVX512BW-ONLY-SLOW-NEXT:    movw $-28382, %ax # imm = 0x9122
10878 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k1
10879 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm1, %ymm10, %ymm3 {%k1}
10880 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %k1, %k2
10881 ; AVX512BW-ONLY-SLOW-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
10882 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm4
10883 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[5,12],zero,zero,xmm4[1,8,15,u,u,u,u,u,u]
10884 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0,7,14],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[u,u,u,u,u,u]
10885 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm4, %xmm3, %xmm16
10886 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
10887 ; AVX512BW-ONLY-SLOW-NEXT:    movw $992, %ax # imm = 0x3E0
10888 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k1
10889 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm0, %ymm16 {%k1}
10890 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 128(%rdi), %ymm11
10891 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 160(%rdi), %ymm6
10892 ; AVX512BW-ONLY-SLOW-NEXT:    movw $8772, %ax # imm = 0x2244
10893 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k6
10894 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm11, %ymm6, %ymm0 {%k6}
10895 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm3
10896 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[6,13,u,u,u,u]
10897 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,5,12],zero,zero,xmm0[1,8,15],zero,zero,xmm0[u,u,u,u]
10898 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm0, %xmm0
10899 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
10900 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 192(%rdi), %xmm7
10901 ; AVX512BW-ONLY-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm21 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
10902 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm21, %xmm7, %xmm3
10903 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 208(%rdi), %xmm8
10904 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm8[u,u,u,u,u,u,2,9,u,u,u,u,u,u,u,u]
10905 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
10906 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
10907 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm3[7]
10908 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 240(%rdi), %xmm26
10909 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm26[5,12,u,u,u,u,u,u,u,u,u,u,u]
10910 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 224(%rdi), %xmm4
10911 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[0,7,14],zero,zero,xmm4[u,u,u,u,u,u,u,u,u,u,u]
10912 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm5, %xmm12, %xmm5
10913 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm5, %zmm0, %zmm0
10914 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $137438429184, %rax # imm = 0x1FFFF80000
10915 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k5
10916 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm0, %zmm16 {%k5}
10917 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 288(%rdi), %ymm13
10918 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 256(%rdi), %ymm12
10919 ; AVX512BW-ONLY-SLOW-NEXT:    movw $9288, %ax # imm = 0x2448
10920 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k3
10921 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm13, %ymm12, %ymm0 {%k3}
10922 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[u,u,u,u,u,3,10],zero,zero,zero,xmm0[6,13],zero,zero,xmm0[u,u]
10923 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
10924 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u],zero,zero,xmm0[1,8,15],zero,zero,xmm0[4,11,u,u]
10925 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm5, %xmm0, %xmm19
10926 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 352(%rdi), %ymm17
10927 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 320(%rdi), %ymm0
10928 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm17, %ymm0, %ymm5 {%k6}
10929 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm15 = ymm5[2,3,0,1]
10930 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm15[2],ymm5[3,4,5],ymm15[6],ymm5[7,8,9],ymm15[10],ymm5[11,12,13],ymm15[14],ymm5[15]
10931 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,2,9,16,23,30,21,28,19,26,u,u,u,u,u,u,u,u,u]
10932 ; AVX512BW-ONLY-SLOW-NEXT:    movw $3968, %ax # imm = 0xF80
10933 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k7
10934 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm5, %ymm19 {%k7}
10935 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 416(%rdi), %ymm15
10936 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa 384(%rdi), %ymm5
10937 ; AVX512BW-ONLY-SLOW-NEXT:    movw $4644, %ax # imm = 0x1224
10938 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k4
10939 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm15, %ymm5, %ymm20 {%k4}
10940 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti32x4 $1, %ymm20, %xmm22
10941 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[u,u,u,u,u,u,u],zero,zero,zero,xmm22[6,13],zero,zero,xmm22[2,9]
10942 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[u,u,u,u,u,u,u,1,8,15],zero,zero,xmm20[4,11],zero,zero
10943 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm22, %xmm20, %xmm20
10944 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $1, %xmm20, %ymm0, %ymm20
10945 ; AVX512BW-ONLY-SLOW-NEXT:    movl $-8388608, %eax # imm = 0xFF800000
10946 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm1, %ymm10, %ymm22 {%k4}
10947 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti32x4 $1, %ymm22, %xmm23
10948 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm23 = zero,zero,zero,xmm23[6,13],zero,zero,xmm23[2,9,u,u,u,u,u,u,u]
10949 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[1,8,15],zero,zero,xmm22[4,11],zero,zero,xmm22[u,u,u,u,u,u,u]
10950 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm23, %xmm22, %xmm22
10951 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
10952 ; AVX512BW-ONLY-SLOW-NEXT:    movl $511, %edi # imm = 0x1FF
10953 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %edi, %k1
10954 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm22, %ymm9 {%k1}
10955 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm11, %ymm6, %ymm22 {%k3}
10956 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm23 = xmm22[u,u,u,6,13],zero,zero,xmm22[2,9],zero,zero,zero,xmm22[u,u,u,u]
10957 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti32x4 $1, %ymm22, %xmm22
10958 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[u,u,u],zero,zero,xmm22[4,11],zero,zero,xmm22[0,7,14,u,u,u,u]
10959 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm23, %xmm22, %xmm22
10960 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $1, %xmm22, %ymm0, %ymm14
10961 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm8[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
10962 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm23 = xmm7[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
10963 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm22 = xmm23[0],xmm22[0],xmm23[1],xmm22[1],xmm23[2],xmm22[2],xmm23[3],xmm22[3]
10964 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $1, %xmm22, %ymm0, %ymm2
10965 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendd {{.*#+}} ymm2 = ymm14[0,1,2,3,4,5,6],ymm2[7]
10966 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,zero,xmm26[6,13,u,u,u,u,u,u,u,u,u,u,u]
10967 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm4[1,8,15],zero,zero,xmm4[u,u,u,u,u,u,u,u,u,u,u]
10968 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm14, %xmm22, %xmm14
10969 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm14, %zmm2, %zmm2
10970 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm9 {%k5}
10971 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm1, %ymm10, %ymm2 {%k6}
10972 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm2[2,9],zero,zero,zero,xmm2[5,12],zero,zero,xmm2[u,u,u,u,u,u,u]
10973 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
10974 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[0,7,14],zero,zero,xmm2[3,10,u,u,u,u,u,u,u]
10975 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm2, %xmm14, %xmm2
10976 ; AVX512BW-ONLY-SLOW-NEXT:    movl $261632, %edi # imm = 0x3FE00
10977 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %edi, %k5
10978 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 {%k5} = ymm24[u,u,u,u,u,u,u,u,u,1,8,15,6,13,4,11,18,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
10979 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm6, %ymm11, %ymm14 {%k2}
10980 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti32x4 $1, %ymm14, %xmm22
10981 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[u,u],zero,zero,zero,xmm22[5,12],zero,zero,xmm22[1,8,15,u,u,u,u]
10982 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[u,u,0,7,14],zero,zero,xmm14[3,10],zero,zero,zero,xmm14[u,u,u,u]
10983 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm22, %xmm14, %xmm14
10984 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
10985 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm21, %xmm8, %xmm21
10986 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm7[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
10987 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm21 = xmm22[0],xmm21[0],xmm22[1],xmm21[1],xmm22[2],xmm21[2],xmm22[3],xmm21[3]
10988 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $1, %xmm21, %ymm0, %ymm3
10989 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendd {{.*#+}} ymm3 = ymm14[0,1,2,3,4,5,6],ymm3[7]
10990 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm4[2,9],zero,zero,zero,xmm4[u,u,u,u,u,u,u,u,u,u,u]
10991 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm21 = zero,zero,xmm26[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
10992 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm14, %xmm21, %xmm14
10993 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm14, %zmm3, %zmm22
10994 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %zmm2, %zmm22 {%k1}
10995 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm1, %ymm10, %ymm2 {%k3}
10996 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[3,10],zero,zero,zero,xmm2[6,13],zero,zero,xmm2[u,u,u,u,u,u,u]
10997 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
10998 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[1,8,15],zero,zero,xmm2[4,11,u,u,u,u,u,u,u]
10999 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11000 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 {%k5} = ymm18[u,u,u,u,u,u,u,u,u,2,9,0,7,14,5,12,19,26,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11001 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm6, %ymm11, %ymm3 {%k4}
11002 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti32x4 $1, %ymm3, %xmm18
11003 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u],zero,zero,zero,xmm18[6,13],zero,zero,xmm18[2,9,u,u,u,u,u]
11004 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,1,8,15],zero,zero,xmm3[4,11],zero,zero,xmm3[u,u,u,u,u]
11005 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm18, %xmm3, %xmm3
11006 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11007 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm18 = xmm8[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm8[5,12]
11008 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm21 = xmm7[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
11009 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm18, %xmm21, %xmm18
11010 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $1, %xmm18, %ymm0, %ymm18
11011 ; AVX512BW-ONLY-SLOW-NEXT:    movl $-134217728, %edi # imm = 0xF8000000
11012 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %edi, %k2
11013 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
11014 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm18, %ymm3 {%k2}
11015 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm18 = xmm4[3,10],zero,zero,zero,xmm4[u,u,u,u,u,u,u,u,u,u,u]
11016 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm21 = zero,zero,xmm26[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
11017 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm18, %xmm21, %xmm18
11018 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti32x4 $2, %xmm18, %zmm3, %zmm18
11019 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %zmm2, %zmm18 {%k1}
11020 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k2
11021 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm20, %ymm19 {%k2}
11022 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm19, %zmm0, %zmm2
11023 ; AVX512BW-ONLY-SLOW-NEXT:    movabsq $-137438953472, %rax # imm = 0xFFFFFFE000000000
11024 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %rax, %k1
11025 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm16 {%k1}
11026 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm12, %ymm13, %ymm2 {%k4}
11027 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11028 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u],zero,zero,xmm3[2,9],zero,zero,zero,xmm3[5,12,u,u]
11029 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,4,11],zero,zero,xmm2[0,7,14],zero,zero,xmm2[u,u]
11030 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11031 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm17, %ymm0, %ymm3 {%k3}
11032 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm3[2,3,0,1]
11033 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1,2],ymm14[3],ymm3[4,5],ymm14[6],ymm3[7,8,9,10],ymm14[11],ymm3[12,13],ymm14[14],ymm3[15]
11034 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,3,10,17,24,31,22,29,20,27,u,u,u,u,u,u,u,u,u]
11035 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm3, %ymm2 {%k7}
11036 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm15, %ymm5, %ymm3 {%k6}
11037 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm3[u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm3[5,12],zero,zero
11038 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm3
11039 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[0,7,14],zero,zero,xmm3[3,10]
11040 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm14, %xmm3
11041 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11042 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k2}
11043 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm2
11044 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm9 {%k1}
11045 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm12, %ymm13, %ymm2 {%k6}
11046 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11047 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[6,13,u,u]
11048 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,5,12],zero,zero,xmm2[1,8,15],zero,zero,xmm2[u,u]
11049 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11050 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm0, %ymm17, %ymm3 {%k4}
11051 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm3[2,3,0,1]
11052 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm14[0],ymm3[1,2],ymm14[3],ymm3[4,5,6],ymm14[7,8],ymm3[9,10],ymm14[11],ymm3[12,13,14],ymm14[15]
11053 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,4,11,18,25,16,23,30,21,28,u,u,u,u,u,u,u,u,u]
11054 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm3, %ymm2 {%k7}
11055 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm15, %ymm5, %ymm3 {%k3}
11056 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm3[u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm3[6,13],zero,zero
11057 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm3
11058 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[1,8,15],zero,zero,xmm3[4,11]
11059 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm14, %xmm3
11060 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11061 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k2}
11062 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm2
11063 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm22 {%k1}
11064 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm12, %ymm13, %ymm2 {%k3}
11065 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[u,u,u,u,u,6,13],zero,zero,xmm2[2,9],zero,zero,zero,xmm2[u,u]
11066 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
11067 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u],zero,zero,xmm2[4,11],zero,zero,xmm2[0,7,14,u,u]
11068 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11069 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm0, %ymm17, %ymm3 {%k6}
11070 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm3[2,3,0,1]
11071 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm14[0],ymm3[1,2,3],ymm14[4],ymm3[5,6],ymm14[7,8],ymm3[9,10,11],ymm14[12],ymm3[13,14],ymm14[15]
11072 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,5,12,19,26,17,24,31,22,29,u,u,u,u,u,u,u,u,u]
11073 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm3, %ymm2 {%k7}
11074 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm5, %ymm15, %ymm3 {%k4}
11075 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm14
11076 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[u,u,u,u,u,u,u],zero,zero,xmm14[2,9],zero,zero,zero,xmm14[5,12]
11077 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u,4,11],zero,zero,xmm3[0,7,14],zero,zero
11078 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm14, %xmm3
11079 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11080 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k2}
11081 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm2
11082 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm18 {%k1}
11083 ; AVX512BW-ONLY-SLOW-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload
11084 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm13, %ymm12, %ymm2 {%k1}
11085 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11086 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u],zero,zero,zero,xmm3[5,12],zero,zero,xmm3[1,8,15,u,u]
11087 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,0,7,14],zero,zero,xmm2[3,10],zero,zero,zero,xmm2[u,u]
11088 ; AVX512BW-ONLY-SLOW-NEXT:    vporq %xmm3, %xmm2, %xmm19
11089 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm0, %ymm17, %ymm2 {%k3}
11090 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm2[2,3,0,1]
11091 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5,6,7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13,14,15]
11092 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,6,13,20,27,18,25,16,23,30,u,u,u,u,u,u,u,u,u]
11093 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm2, %ymm19 {%k7}
11094 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm13, %ymm12, %ymm2 {%k4}
11095 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11096 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u],zero,zero,zero,xmm3[6,13],zero,zero,xmm3[2,9,u,u,u]
11097 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,1,8,15],zero,zero,xmm2[4,11],zero,zero,xmm2[u,u,u]
11098 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11099 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm17, %ymm0, %ymm3 {%k1}
11100 ; AVX512BW-ONLY-SLOW-NEXT:    kmovq %k1, %k7
11101 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm3[2,3,0,1]
11102 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm14[1],ymm3[2,3,4],ymm14[5],ymm3[6,7,8],ymm14[9],ymm3[10,11,12],ymm14[13],ymm3[14,15]
11103 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm20 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,0,7,14,21,28,19,26,17,24,31,u,u,u,u,u,u,u,u,u]
11104 ; AVX512BW-ONLY-SLOW-NEXT:    movl $8176, %eax # imm = 0x1FF0
11105 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k1
11106 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm2, %ymm20 {%k1}
11107 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm5, %ymm15, %ymm2 {%k6}
11108 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11109 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[6,13]
11110 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,5,12],zero,zero,xmm2[1,8,15],zero,zero
11111 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11112 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
11113 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm2, %ymm19 {%k2}
11114 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm5, %ymm15, %ymm2 {%k3}
11115 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[u,u,u,u,u,u,u,6,13],zero,zero,xmm2[2,9],zero,zero,zero
11116 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
11117 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u],zero,zero,xmm2[4,11],zero,zero,xmm2[0,7,14]
11118 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11119 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
11120 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm2, %ymm20 {%k2}
11121 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm6, %ymm11, %ymm2 {%k6}
11122 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm10, %ymm1, %ymm21 {%k6}
11123 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm17, %ymm0 {%k4}
11124 ; AVX512BW-ONLY-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm0[2,3,0,1]
11125 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm0[0,1],ymm3[2],ymm0[3,4],ymm3[5],ymm0[6,7,8,9],ymm3[10],ymm0[11,12],ymm3[13],ymm0[14,15]
11126 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm13, %ymm12 {%k6}
11127 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm12[u,u,u,u,2,9],zero,zero,zero,xmm12[5,12],zero,zero,xmm12[u,u,u]
11128 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm12, %xmm12
11129 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u,u,u],zero,zero,xmm12[0,7,14],zero,zero,xmm12[3,10,u,u,u]
11130 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm0, %xmm12, %xmm0
11131 ; AVX512BW-ONLY-SLOW-NEXT:    movl $4186112, %eax # imm = 0x3FE000
11132 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k1
11133 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm0 {%k1} = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,1,8,15,22,29,20,27,18,25,u,u,u,u,u,u,u,u,u,u]
11134 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm15, %ymm5 {%k7}
11135 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm10, %ymm1, %ymm12 {%k4}
11136 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendmw %ymm6, %ymm11, %ymm3 {%k3}
11137 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm10, %ymm1 {%k3}
11138 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %ymm11, %ymm6 {%k4}
11139 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm2[u,u,2,9],zero,zero,zero,xmm2[5,12],zero,zero,xmm2[u,u,u,u,u]
11140 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
11141 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u],zero,zero,xmm2[0,7,14],zero,zero,xmm2[3,10,u,u,u,u,u]
11142 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm2, %xmm10, %xmm2
11143 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
11144 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm8[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm8[6,13]
11145 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm7[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
11146 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm10, %xmm11, %xmm10
11147 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
11148 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 4-byte Reload
11149 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm10, %ymm2 {%k1}
11150 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm3[u,u,3,10],zero,zero,zero,xmm3[6,13],zero,zero,xmm3[u,u,u,u,u]
11151 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm3
11152 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u],zero,zero,xmm3[1,8,15],zero,zero,xmm3[4,11,u,u,u,u,u]
11153 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm10, %xmm3
11154 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11155 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm7[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
11156 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm8[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm8[0,7,14]
11157 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm10, %xmm11, %xmm10
11158 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm10, %ymm0, %ymm10
11159 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm10, %ymm3 {%k1}
11160 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm6, %xmm10
11161 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u],zero,zero,xmm10[2,9],zero,zero,zero,xmm10[5,12,u,u,u,u,u]
11162 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,4,11],zero,zero,xmm6[0,7,14],zero,zero,xmm6[u,u,u,u,u]
11163 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm6, %xmm10, %xmm6
11164 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
11165 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
11166 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm8[1,8,15]
11167 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm7, %xmm8, %xmm7
11168 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
11169 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu8 %ymm7, %ymm6 {%k1}
11170 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = <16,9,2,19,20,13,6,23,24,u,26,27,28,u,30,31>
11171 ; AVX512BW-ONLY-SLOW-NEXT:    vpermw %zmm25, %zmm7, %zmm7
11172 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = <16,9,2,19,12,5,22,23,24,u,26,27,u,29,30,31>
11173 ; AVX512BW-ONLY-SLOW-NEXT:    vpermw %zmm25, %zmm8, %zmm8
11174 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa {{.*#+}} ymm10 = <8,1,2,19,12,5,22,15,u,9,26,11,u,29,14,u>
11175 ; AVX512BW-ONLY-SLOW-NEXT:    vpermw %zmm25, %zmm10, %zmm10
11176 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm12, %xmm11
11177 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm11[2,9],zero,zero,zero,xmm11[5,12,u,u,u,u,u,u,u]
11178 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[4,11],zero,zero,xmm12[0,7,14],zero,zero,xmm12[u,u,u,u,u,u,u]
11179 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm11, %xmm12, %xmm11
11180 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm11 {%k5} = ymm10[u,u,u,u,u,u,u,u,u,3,10,1,8,15,6,13,20,27,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11181 ; AVX512BW-ONLY-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm10 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
11182 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm10, %xmm4, %xmm12
11183 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm26[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11184 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm12 = xmm12[0],xmm13[0],xmm12[1],xmm13[1],xmm12[2],xmm13[2],xmm12[3],xmm13[3]
11185 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm12, %zmm2, %zmm2
11186 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %zmm2, %zmm11 {%k5}
11187 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm19, %zmm0, %zmm2
11188 ; AVX512BW-ONLY-SLOW-NEXT:    movw $-512, %ax # imm = 0xFE00
11189 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti32x4 $1, %ymm21, %xmm12
11190 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,xmm12[3,10],zero,zero,zero,xmm12[6,13,u,u,u,u,u,u,u]
11191 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm21[5,12],zero,zero,xmm21[1,8,15],zero,zero,xmm21[u,u,u,u,u,u,u]
11192 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm12, %xmm13, %xmm12
11193 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm12 {%k5} = ymm8[u,u,u,u,u,u,u,u,u,4,11,2,9,0,7,14,21,28,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11194 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm26[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11195 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm4[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11196 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm13[0],xmm8[0],xmm13[1],xmm8[1],xmm13[2],xmm8[2],xmm13[3],xmm8[3]
11197 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm8, %zmm3, %zmm3
11198 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %zmm3, %zmm12 {%k5}
11199 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm1[6,13],zero,zero,xmm1[2,9],zero,zero,zero,xmm1[u,u,u,u,u,u,u]
11200 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm1
11201 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,xmm1[4,11],zero,zero,xmm1[0,7,14,u,u,u,u,u,u,u]
11202 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm3, %xmm1, %xmm1
11203 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} ymm1 {%k5} = ymm7[u,u,u,u,u,u,u,u,u,5,12,3,10,1,8,15,22,29,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11204 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb %xmm10, %xmm26, %xmm3
11205 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11206 ; AVX512BW-ONLY-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
11207 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm6, %zmm3
11208 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqu16 %zmm3, %zmm1 {%k5}
11209 ; AVX512BW-ONLY-SLOW-NEXT:    kmovd %eax, %k1
11210 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa32 %zmm2, %zmm11 {%k1}
11211 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm20, %zmm0, %zmm2
11212 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa32 %zmm2, %zmm12 {%k1}
11213 ; AVX512BW-ONLY-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm2
11214 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u],zero,zero,zero,xmm2[5,12],zero,zero,xmm2[1,8,15]
11215 ; AVX512BW-ONLY-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm5[u,u,u,u,u,u,0,7,14],zero,zero,xmm5[3,10],zero,zero,zero
11216 ; AVX512BW-ONLY-SLOW-NEXT:    vpor %xmm2, %xmm3, %xmm2
11217 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
11218 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm0[0,1,2],ymm2[3,4,5,6,7],ymm0[8,9,10],ymm2[11,12,13,14,15]
11219 ; AVX512BW-ONLY-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7]
11220 ; AVX512BW-ONLY-SLOW-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
11221 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa32 %zmm0, %zmm1 {%k1}
11222 ; AVX512BW-ONLY-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
11223 ; AVX512BW-ONLY-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rdi
11224 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm16, (%rsi)
11225 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm9, (%rdx)
11226 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm22, (%rcx)
11227 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm18, (%r8)
11228 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm11, (%r9)
11229 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm12, (%rdi)
11230 ; AVX512BW-ONLY-SLOW-NEXT:    vmovdqa64 %zmm1, (%rax)
11231 ; AVX512BW-ONLY-SLOW-NEXT:    vzeroupper
11232 ; AVX512BW-ONLY-SLOW-NEXT:    retq
11234 ; AVX512BW-ONLY-FAST-LABEL: load_i8_stride7_vf64:
11235 ; AVX512BW-ONLY-FAST:       # %bb.0:
11236 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 320(%rdi), %zmm26
11237 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 64(%rdi), %zmm2
11238 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [24,17,2,19,28,21,6,31,16,9,26,27,20,13,30,23]
11239 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm26, %zmm1, %zmm16
11240 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [8,1,18,11,4,5,22,15,0,25,10,3,12,29,14,7]
11241 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm2, %zmm1, %zmm24
11242 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [24,17,2,27,20,5,22,31,16,9,26,19,12,29,30,23]
11243 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm26, %zmm1, %zmm17
11244 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,1,18,11,4,21,14,7,8,25,10,3,28,13,6,15]
11245 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm2, %zmm1, %zmm25
11246 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,1,2,11,4,5,14,7,8,9,26,19,12,29,22,15]
11247 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm26, %zmm1, %zmm18
11248 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,17,10,3,4,21,14,7,24,9,2,11,28,13,6,31]
11249 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm2, %zmm1, %zmm9
11250 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,1,10,3,4,5,14,7,8,25,18,11,12,29,22,15]
11251 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm26, %zmm1, %zmm6
11252 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [16,17,10,3,20,13,6,23,24,25,18,27,28,21,30,31]
11253 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm2, %zmm1, %zmm4
11254 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa (%rdi), %ymm12
11255 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa 32(%rdi), %ymm3
11256 ; AVX512BW-ONLY-FAST-NEXT:    movw $-28382, %ax # imm = 0x9122
11257 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %eax, %k1
11258 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm3, %ymm12, %ymm1 {%k1}
11259 ; AVX512BW-ONLY-FAST-NEXT:    kmovq %k1, %k2
11260 ; AVX512BW-ONLY-FAST-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
11261 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm5
11262 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm5[5,12],zero,zero,xmm5[1,8,15,u,u,u,u,u,u]
11263 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,7,14],zero,zero,xmm1[3,10],zero,zero,zero,xmm1[u,u,u,u,u,u]
11264 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm5, %xmm1, %xmm1
11265 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
11266 ; AVX512BW-ONLY-FAST-NEXT:    movw $992, %ax # imm = 0x3E0
11267 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %eax, %k1
11268 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm4, %ymm1 {%k1}
11269 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa 128(%rdi), %ymm13
11270 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa 160(%rdi), %ymm11
11271 ; AVX512BW-ONLY-FAST-NEXT:    movw $8772, %ax # imm = 0x2244
11272 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %eax, %k1
11273 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm13, %ymm11, %ymm4 {%k1}
11274 ; AVX512BW-ONLY-FAST-NEXT:    kmovq %k1, %k3
11275 ; AVX512BW-ONLY-FAST-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
11276 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm5
11277 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u],zero,zero,xmm5[3,10],zero,zero,zero,xmm5[6,13,u,u,u,u]
11278 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,5,12],zero,zero,xmm4[1,8,15],zero,zero,xmm4[u,u,u,u]
11279 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm5, %xmm4, %xmm4
11280 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
11281 ; AVX512BW-ONLY-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [1,2,4,6,1,2,4,6]
11282 ; AVX512BW-ONLY-FAST-NEXT:    # ymm5 = mem[0,1,0,1]
11283 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 192(%rdi), %ymm19
11284 ; AVX512BW-ONLY-FAST-NEXT:    vpermd %ymm19, %ymm5, %ymm5
11285 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,23,26,29]
11286 ; AVX512BW-ONLY-FAST-NEXT:    vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3,4,5,6],ymm5[7]
11287 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa 240(%rdi), %xmm7
11288 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm7[5,12,u,u,u,u,u,u,u,u,u,u,u]
11289 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa 224(%rdi), %xmm8
11290 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm8[0,7,14],zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
11291 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm5, %xmm10, %xmm5
11292 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $2, %xmm5, %zmm4, %zmm4
11293 ; AVX512BW-ONLY-FAST-NEXT:    movabsq $137438429184, %rax # imm = 0x1FFFF80000
11294 ; AVX512BW-ONLY-FAST-NEXT:    kmovq %rax, %k5
11295 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %zmm4, %zmm1 {%k5}
11296 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa 288(%rdi), %ymm5
11297 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa 256(%rdi), %ymm4
11298 ; AVX512BW-ONLY-FAST-NEXT:    movw $9288, %ax # imm = 0x2448
11299 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %eax, %k6
11300 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm5, %ymm4, %ymm10 {%k6}
11301 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm10[u,u,u,u,u,3,10],zero,zero,zero,xmm10[6,13],zero,zero,xmm10[u,u]
11302 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm10, %xmm10
11303 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u],zero,zero,xmm10[1,8,15],zero,zero,xmm10[4,11,u,u]
11304 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm20, %xmm10, %xmm21
11305 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,2,9,16,23,30,21,28,19,26,u,u,u,u,u,u,u,u,u]
11306 ; AVX512BW-ONLY-FAST-NEXT:    movw $3968, %ax # imm = 0xF80
11307 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %eax, %k7
11308 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm6, %ymm21 {%k7}
11309 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa 416(%rdi), %ymm10
11310 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa 384(%rdi), %ymm6
11311 ; AVX512BW-ONLY-FAST-NEXT:    movw $4644, %ax # imm = 0x1224
11312 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %eax, %k4
11313 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm10, %ymm6, %ymm20 {%k4}
11314 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm20, %xmm22
11315 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[u,u,u,u,u,u,u],zero,zero,zero,xmm22[6,13],zero,zero,xmm22[2,9]
11316 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[u,u,u,u,u,u,u,1,8,15],zero,zero,xmm20[4,11],zero,zero
11317 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm22, %xmm20, %xmm20
11318 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm20, %ymm0, %ymm22
11319 ; AVX512BW-ONLY-FAST-NEXT:    movl $-8388608, %eax # imm = 0xFF800000
11320 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm3, %ymm12, %ymm20 {%k4}
11321 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm20, %xmm23
11322 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm23 = zero,zero,zero,xmm23[6,13],zero,zero,xmm23[2,9,u,u,u,u,u,u,u]
11323 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[1,8,15],zero,zero,xmm20[4,11],zero,zero,xmm20[u,u,u,u,u,u,u]
11324 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm23, %xmm20, %xmm20
11325 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
11326 ; AVX512BW-ONLY-FAST-NEXT:    movl $511, %r10d # imm = 0x1FF
11327 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %r10d, %k1
11328 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm20, %ymm9 {%k1}
11329 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm13, %ymm11, %ymm20 {%k6}
11330 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm23 = xmm20[u,u,u,6,13],zero,zero,xmm20[2,9],zero,zero,zero,xmm20[u,u,u,u]
11331 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm20, %xmm20
11332 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[u,u,u],zero,zero,xmm20[4,11],zero,zero,xmm20[0,7,14,u,u,u,u]
11333 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm23, %xmm20, %xmm20
11334 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm20, %ymm0, %ymm15
11335 ; AVX512BW-ONLY-FAST-NEXT:    vbroadcasti32x4 {{.*#+}} ymm20 = [1,3,4,6,1,3,4,6]
11336 ; AVX512BW-ONLY-FAST-NEXT:    # ymm20 = mem[0,1,2,3,0,1,2,3]
11337 ; AVX512BW-ONLY-FAST-NEXT:    vpermd %ymm19, %ymm20, %ymm20
11338 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm14 = ymm20[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,20,27,30]
11339 ; AVX512BW-ONLY-FAST-NEXT:    vpblendd {{.*#+}} ymm14 = ymm15[0,1,2,3,4,5,6],ymm14[7]
11340 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,zero,xmm7[6,13,u,u,u,u,u,u,u,u,u,u,u]
11341 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm8[1,8,15],zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
11342 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm15, %xmm20, %xmm15
11343 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $2, %xmm15, %zmm14, %zmm14
11344 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %zmm14, %zmm9 {%k5}
11345 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm3, %ymm12, %ymm14 {%k3}
11346 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm14[2,9],zero,zero,zero,xmm14[5,12],zero,zero,xmm14[u,u,u,u,u,u,u]
11347 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm14, %xmm14
11348 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,xmm14[0,7,14],zero,zero,xmm14[3,10,u,u,u,u,u,u,u]
11349 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm15, %xmm14, %xmm15
11350 ; AVX512BW-ONLY-FAST-NEXT:    movl $261632, %r10d # imm = 0x3FE00
11351 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %r10d, %k5
11352 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm15 {%k5} = ymm25[u,u,u,u,u,u,u,u,u,1,8,15,6,13,4,11,18,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11353 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm11, %ymm13, %ymm14 {%k2}
11354 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm14, %xmm20
11355 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[u,u],zero,zero,zero,xmm20[5,12],zero,zero,xmm20[1,8,15,u,u,u,u]
11356 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[u,u,0,7,14],zero,zero,xmm14[3,10],zero,zero,zero,xmm14[u,u,u,u]
11357 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm20, %xmm14, %xmm14
11358 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
11359 ; AVX512BW-ONLY-FAST-NEXT:    vbroadcasti32x4 {{.*#+}} ymm20 = [1,3,5,6,1,3,5,6]
11360 ; AVX512BW-ONLY-FAST-NEXT:    # ymm20 = mem[0,1,2,3,0,1,2,3]
11361 ; AVX512BW-ONLY-FAST-NEXT:    vpermd %ymm19, %ymm20, %ymm19
11362 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm19[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,21,24,31]
11363 ; AVX512BW-ONLY-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm14[0,1,2,3,4,5,6],ymm0[7]
11364 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm8[2,9],zero,zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
11365 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm19 = zero,zero,xmm7[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
11366 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm14, %xmm19, %xmm14
11367 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $2, %xmm14, %zmm0, %zmm14
11368 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %zmm15, %zmm14 {%k1}
11369 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm3, %ymm12, %ymm0 {%k6}
11370 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm0[3,10],zero,zero,zero,xmm0[6,13],zero,zero,xmm0[u,u,u,u,u,u,u]
11371 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm0
11372 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[1,8,15],zero,zero,xmm0[4,11,u,u,u,u,u,u,u]
11373 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm0, %xmm15, %xmm0
11374 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm0 {%k5} = ymm24[u,u,u,u,u,u,u,u,u,2,9,0,7,14,5,12,19,26,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11375 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm11, %ymm13, %ymm15 {%k4}
11376 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm15, %xmm19
11377 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm19 = xmm19[u,u],zero,zero,zero,xmm19[6,13],zero,zero,xmm19[2,9,u,u,u,u,u]
11378 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm15[u,u,1,8,15],zero,zero,xmm15[4,11],zero,zero,xmm15[u,u,u,u,u]
11379 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm19, %xmm15, %xmm15
11380 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm15, %ymm0, %ymm15
11381 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 208(%rdi), %xmm19
11382 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm23 = xmm19[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm19[5,12]
11383 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 192(%rdi), %xmm20
11384 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm24 = xmm20[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
11385 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm23, %xmm24, %xmm23
11386 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm23, %ymm0, %ymm23
11387 ; AVX512BW-ONLY-FAST-NEXT:    movl $-134217728, %edi # imm = 0xF8000000
11388 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %edi, %k2
11389 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
11390 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm23, %ymm15 {%k2}
11391 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm23 = xmm8[3,10],zero,zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
11392 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm24 = zero,zero,xmm7[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
11393 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm23, %xmm24, %xmm23
11394 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $2, %xmm23, %zmm15, %zmm15
11395 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %zmm0, %zmm15 {%k1}
11396 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %eax, %k3
11397 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm22, %ymm21 {%k3}
11398 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm21, %zmm0, %zmm0
11399 ; AVX512BW-ONLY-FAST-NEXT:    movabsq $-137438953472, %rax # imm = 0xFFFFFFE000000000
11400 ; AVX512BW-ONLY-FAST-NEXT:    kmovq %rax, %k2
11401 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k2}
11402 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm4, %ymm5, %ymm0 {%k4}
11403 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm0, %xmm21
11404 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm21 = xmm21[u,u,u,u,u],zero,zero,xmm21[2,9],zero,zero,zero,xmm21[5,12,u,u]
11405 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,4,11],zero,zero,xmm0[0,7,14],zero,zero,xmm0[u,u]
11406 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm21, %xmm0, %xmm0
11407 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm18 = ymm18[u,u,u,u,u,u,u,u,u,u,u,u,u,u,3,10,17,24,31,22,29,20,27,u,u,u,u,u,u,u,u,u]
11408 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm18, %ymm0 {%k7}
11409 ; AVX512BW-ONLY-FAST-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload
11410 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm10, %ymm6, %ymm18 {%k1}
11411 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm21 = xmm18[u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm18[5,12],zero,zero
11412 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm18, %xmm18
11413 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u,u,u,u],zero,zero,xmm18[0,7,14],zero,zero,xmm18[3,10]
11414 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm21, %xmm18, %xmm18
11415 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm18, %ymm0, %ymm18
11416 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm18, %ymm0 {%k3}
11417 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
11418 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %zmm0, %zmm9 {%k2}
11419 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm4, %ymm5, %ymm0 {%k1}
11420 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm0, %xmm18
11421 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u,u],zero,zero,xmm18[3,10],zero,zero,zero,xmm18[6,13,u,u]
11422 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,5,12],zero,zero,xmm0[1,8,15],zero,zero,xmm0[u,u]
11423 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm18, %xmm0, %xmm0
11424 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm17 = ymm17[u,u,u,u,u,u,u,u,u,u,u,u,u,u,4,11,18,25,16,23,30,21,28,u,u,u,u,u,u,u,u,u]
11425 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm17, %ymm0 {%k7}
11426 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm10, %ymm6, %ymm17 {%k6}
11427 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm17[u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm17[6,13],zero,zero
11428 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm17, %xmm17
11429 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm17 = xmm17[u,u,u,u,u,u,u],zero,zero,xmm17[1,8,15],zero,zero,xmm17[4,11]
11430 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm18, %xmm17, %xmm17
11431 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm17, %ymm0, %ymm17
11432 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm17, %ymm0 {%k3}
11433 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
11434 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %zmm0, %zmm14 {%k2}
11435 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm4, %ymm5, %ymm0 {%k6}
11436 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm17 = xmm0[u,u,u,u,u,6,13],zero,zero,xmm0[2,9],zero,zero,zero,xmm0[u,u]
11437 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm0
11438 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u],zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14,u,u]
11439 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm17, %xmm0, %xmm0
11440 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm16 = ymm16[u,u,u,u,u,u,u,u,u,u,u,u,u,u,5,12,19,26,17,24,31,22,29,u,u,u,u,u,u,u,u,u]
11441 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm16, %ymm0 {%k7}
11442 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm6, %ymm10, %ymm16 {%k4}
11443 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm16, %xmm17
11444 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm17 = xmm17[u,u,u,u,u,u,u],zero,zero,xmm17[2,9],zero,zero,zero,xmm17[5,12]
11445 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm16 = xmm16[u,u,u,u,u,u,u,4,11],zero,zero,xmm16[0,7,14],zero,zero
11446 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm17, %xmm16, %xmm16
11447 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm16, %ymm0, %ymm16
11448 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm16, %ymm0 {%k3}
11449 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
11450 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %zmm0, %zmm15 {%k2}
11451 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = [0,9,2,3,4,13,6,7,24,17,10,11,28,21,14,31]
11452 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm26, %zmm0, %zmm17
11453 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = [16,25,18,3,28,21,6,23,24,17,10,27,20,13,30,31]
11454 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm26, %zmm0, %zmm0
11455 ; AVX512BW-ONLY-FAST-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k2 # 2-byte Reload
11456 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm5, %ymm4, %ymm16 {%k2}
11457 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm16, %xmm18
11458 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u],zero,zero,zero,xmm18[5,12],zero,zero,xmm18[1,8,15,u,u]
11459 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm16 = xmm16[u,u,u,u,0,7,14],zero,zero,xmm16[3,10],zero,zero,zero,xmm16[u,u]
11460 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm18, %xmm16, %xmm16
11461 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,6,13,20,27,18,25,16,23,30,u,u,u,u,u,u,u,u,u]
11462 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm0, %ymm16 {%k7}
11463 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm5, %ymm4, %ymm0 {%k4}
11464 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm0, %xmm18
11465 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u],zero,zero,zero,xmm18[6,13],zero,zero,xmm18[2,9,u,u,u]
11466 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,1,8,15],zero,zero,xmm0[4,11],zero,zero,xmm0[u,u,u]
11467 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm18, %xmm0, %xmm0
11468 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm17 = ymm17[u,u,u,u,u,u,u,u,u,u,u,u,u,0,7,14,21,28,19,26,17,24,31,u,u,u,u,u,u,u,u,u]
11469 ; AVX512BW-ONLY-FAST-NEXT:    movl $8176, %eax # imm = 0x1FF0
11470 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %eax, %k1
11471 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm0, %ymm17 {%k1}
11472 ; AVX512BW-ONLY-FAST-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload
11473 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm6, %ymm10, %ymm0 {%k1}
11474 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm0, %xmm18
11475 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u,u,u,u],zero,zero,xmm18[3,10],zero,zero,zero,xmm18[6,13]
11476 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u,5,12],zero,zero,xmm0[1,8,15],zero,zero
11477 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm18, %xmm0, %xmm0
11478 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
11479 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm0, %ymm16 {%k3}
11480 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm6, %ymm10, %ymm0 {%k6}
11481 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm0[u,u,u,u,u,u,u,6,13],zero,zero,xmm0[2,9],zero,zero,zero
11482 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm0
11483 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u],zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14]
11484 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm18, %xmm0, %xmm0
11485 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
11486 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm0, %ymm17 {%k3}
11487 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm12, %ymm3, %ymm0 {%k4}
11488 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm12, %ymm3, %ymm18 {%k1}
11489 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm11, %ymm13, %ymm21 {%k6}
11490 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm12, %ymm3 {%k6}
11491 ; AVX512BW-ONLY-FAST-NEXT:    vpblendmw %ymm11, %ymm13, %ymm12 {%k1}
11492 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm13, %ymm11 {%k4}
11493 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm12[u,u,2,9],zero,zero,zero,xmm12[5,12],zero,zero,xmm12[u,u,u,u,u]
11494 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm12, %xmm12
11495 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u],zero,zero,xmm12[0,7,14],zero,zero,xmm12[3,10,u,u,u,u,u]
11496 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm13, %xmm12, %xmm12
11497 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
11498 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm19[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm19[6,13]
11499 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm22 = xmm20[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
11500 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm13, %xmm22, %xmm13
11501 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
11502 ; AVX512BW-ONLY-FAST-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k3 # 4-byte Reload
11503 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm13, %ymm12 {%k3}
11504 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm21[u,u,3,10],zero,zero,zero,xmm21[6,13],zero,zero,xmm21[u,u,u,u,u]
11505 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm21, %xmm21
11506 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm21 = xmm21[u,u],zero,zero,xmm21[1,8,15],zero,zero,xmm21[4,11,u,u,u,u,u]
11507 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm13, %xmm21, %xmm13
11508 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
11509 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm21 = xmm20[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
11510 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm22 = xmm19[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm19[0,7,14]
11511 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm21, %xmm22, %xmm21
11512 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm21, %ymm0, %ymm21
11513 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm21, %ymm13 {%k3}
11514 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm11, %xmm21
11515 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm21 = xmm21[u,u],zero,zero,xmm21[2,9],zero,zero,zero,xmm21[5,12,u,u,u,u,u]
11516 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,4,11],zero,zero,xmm11[0,7,14],zero,zero,xmm11[u,u,u,u,u]
11517 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm21, %xmm11, %xmm11
11518 ; AVX512BW-ONLY-FAST-NEXT:    vinserti32x4 $1, %xmm11, %ymm0, %ymm21
11519 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm20[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
11520 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm19 = xmm19[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm19[1,8,15]
11521 ; AVX512BW-ONLY-FAST-NEXT:    vporq %xmm11, %xmm19, %xmm11
11522 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
11523 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu8 %ymm11, %ymm21 {%k3}
11524 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [16,9,2,19,20,13,6,23,24,17,26,27,28,21,30,31]
11525 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm2, %zmm11, %zmm19
11526 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [16,9,2,19,12,5,22,23,24,17,26,27,20,29,30,31]
11527 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm2, %zmm11, %zmm20
11528 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [8,1,2,19,12,5,22,15,0,9,26,11,4,29,14,7]
11529 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm2, %zmm11, %zmm11
11530 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm2
11531 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[2,9],zero,zero,zero,xmm2[5,12,u,u,u,u,u,u,u]
11532 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[4,11],zero,zero,xmm0[0,7,14],zero,zero,xmm0[u,u,u,u,u,u,u]
11533 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm2, %xmm0, %xmm2
11534 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm2 {%k5} = ymm11[u,u,u,u,u,u,u,u,u,3,10,1,8,15,6,13,20,27,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11535 ; AVX512BW-ONLY-FAST-NEXT:    vpbroadcastw {{.*#+}} xmm0 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
11536 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb %xmm0, %xmm8, %xmm11
11537 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm22 = xmm7[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11538 ; AVX512BW-ONLY-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm11 = xmm11[0],xmm22[0],xmm11[1],xmm22[1],xmm11[2],xmm22[2],xmm11[3],xmm22[3]
11539 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm11, %zmm12, %zmm11
11540 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %zmm11, %zmm2 {%k5}
11541 ; AVX512BW-ONLY-FAST-NEXT:    vextracti32x4 $1, %ymm18, %xmm11
11542 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm11[3,10],zero,zero,zero,xmm11[6,13,u,u,u,u,u,u,u]
11543 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm18[5,12],zero,zero,xmm18[1,8,15],zero,zero,xmm18[u,u,u,u,u,u,u]
11544 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm11, %xmm12, %xmm11
11545 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm11 {%k5} = ymm20[u,u,u,u,u,u,u,u,u,4,11,2,9,0,7,14,21,28,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11546 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm7[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11547 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm8[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11548 ; AVX512BW-ONLY-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm12 = xmm18[0],xmm12[0],xmm18[1],xmm12[1],xmm18[2],xmm12[2],xmm18[3],xmm12[3]
11549 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm12, %zmm13, %zmm12
11550 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %zmm12, %zmm11 {%k5}
11551 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm3[6,13],zero,zero,xmm3[2,9],zero,zero,zero,xmm3[u,u,u,u,u,u,u]
11552 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
11553 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm3[4,11],zero,zero,xmm3[0,7,14,u,u,u,u,u,u,u]
11554 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm3, %xmm12, %xmm3
11555 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm3 {%k5} = ymm19[u,u,u,u,u,u,u,u,u,5,12,3,10,1,8,15,22,29,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11556 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb %xmm0, %xmm7, %xmm0
11557 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm8[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11558 ; AVX512BW-ONLY-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm0 = xmm7[0],xmm0[0],xmm7[1],xmm0[1],xmm7[2],xmm0[2],xmm7[3],xmm0[3]
11559 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm21, %zmm0
11560 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %zmm0, %zmm3 {%k5}
11561 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm10, %ymm6 {%k2}
11562 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = [0,1,10,3,4,13,6,7,8,25,18,11,28,21,14,15]
11563 ; AVX512BW-ONLY-FAST-NEXT:    vpermw %zmm26, %zmm0, %zmm0
11564 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm16, %zmm0, %zmm7
11565 ; AVX512BW-ONLY-FAST-NEXT:    movw $-512, %ax # imm = 0xFE00
11566 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqu16 %ymm5, %ymm4 {%k1}
11567 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm4[u,u,u,u,2,9],zero,zero,zero,xmm4[5,12],zero,zero,xmm4[u,u,u]
11568 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm4
11569 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u],zero,zero,xmm4[0,7,14],zero,zero,xmm4[3,10,u,u,u]
11570 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm5, %xmm4, %xmm4
11571 ; AVX512BW-ONLY-FAST-NEXT:    movl $4186112, %edi # imm = 0x3FE000
11572 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %edi, %k1
11573 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} ymm4 {%k1} = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,1,8,15,22,29,20,27,18,25,u,u,u,u,u,u,u,u,u,u]
11574 ; AVX512BW-ONLY-FAST-NEXT:    kmovd %eax, %k1
11575 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa32 %zmm7, %zmm2 {%k1}
11576 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm17, %zmm0, %zmm0
11577 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa32 %zmm0, %zmm11 {%k1}
11578 ; AVX512BW-ONLY-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm0
11579 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u],zero,zero,zero,xmm0[5,12],zero,zero,xmm0[1,8,15]
11580 ; AVX512BW-ONLY-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm6[u,u,u,u,u,u,0,7,14],zero,zero,xmm6[3,10],zero,zero,zero
11581 ; AVX512BW-ONLY-FAST-NEXT:    vpor %xmm0, %xmm5, %xmm0
11582 ; AVX512BW-ONLY-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
11583 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm4, %zmm0, %zmm4
11584 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa {{.*#+}} ymm5 = [16,17,18,19,20,21,22,23,24,25,26,43,44,45,46,47]
11585 ; AVX512BW-ONLY-FAST-NEXT:    vpermi2w %zmm0, %zmm4, %zmm5
11586 ; AVX512BW-ONLY-FAST-NEXT:    vinserti64x4 $1, %ymm5, %zmm0, %zmm0
11587 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa32 %zmm0, %zmm3 {%k1}
11588 ; AVX512BW-ONLY-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
11589 ; AVX512BW-ONLY-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rdi
11590 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 %zmm1, (%rsi)
11591 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 %zmm9, (%rdx)
11592 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 %zmm14, (%rcx)
11593 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 %zmm15, (%r8)
11594 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 %zmm2, (%r9)
11595 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 %zmm11, (%rdi)
11596 ; AVX512BW-ONLY-FAST-NEXT:    vmovdqa64 %zmm3, (%rax)
11597 ; AVX512BW-ONLY-FAST-NEXT:    vzeroupper
11598 ; AVX512BW-ONLY-FAST-NEXT:    retq
11600 ; AVX512DQBW-SLOW-LABEL: load_i8_stride7_vf64:
11601 ; AVX512DQBW-SLOW:       # %bb.0:
11602 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 64(%rdi), %zmm25
11603 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <8,1,18,11,4,5,22,15,u,25,10,u,12,29,14,u>
11604 ; AVX512DQBW-SLOW-NEXT:    vpermw %zmm25, %zmm0, %zmm18
11605 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <0,1,18,11,4,21,14,7,8,25,10,u,28,13,u,15>
11606 ; AVX512DQBW-SLOW-NEXT:    vpermw %zmm25, %zmm0, %zmm24
11607 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <0,17,10,3,4,21,14,7,24,9,u,11,28,13,u,31>
11608 ; AVX512DQBW-SLOW-NEXT:    vpermw %zmm25, %zmm0, %zmm10
11609 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm0 = <16,17,10,3,20,13,6,23,24,25,u,27,28,u,30,31>
11610 ; AVX512DQBW-SLOW-NEXT:    vpermw %zmm25, %zmm0, %zmm0
11611 ; AVX512DQBW-SLOW-NEXT:    vmovdqa (%rdi), %ymm9
11612 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 32(%rdi), %ymm1
11613 ; AVX512DQBW-SLOW-NEXT:    movw $-28382, %ax # imm = 0x9122
11614 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k1
11615 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm1, %ymm9, %ymm3 {%k1}
11616 ; AVX512DQBW-SLOW-NEXT:    kmovq %k1, %k2
11617 ; AVX512DQBW-SLOW-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
11618 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm4
11619 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = zero,zero,zero,xmm4[5,12],zero,zero,xmm4[1,8,15,u,u,u,u,u,u]
11620 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[0,7,14],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[u,u,u,u,u,u]
11621 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm4, %xmm3, %xmm16
11622 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
11623 ; AVX512DQBW-SLOW-NEXT:    movw $992, %ax # imm = 0x3E0
11624 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k1
11625 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm0, %ymm16 {%k1}
11626 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 128(%rdi), %ymm11
11627 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 160(%rdi), %ymm6
11628 ; AVX512DQBW-SLOW-NEXT:    movw $8772, %ax # imm = 0x2244
11629 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k6
11630 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm11, %ymm6, %ymm0 {%k6}
11631 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm3
11632 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[6,13,u,u,u,u]
11633 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,5,12],zero,zero,xmm0[1,8,15],zero,zero,xmm0[u,u,u,u]
11634 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm0, %xmm0
11635 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
11636 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 192(%rdi), %xmm7
11637 ; AVX512DQBW-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm21 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
11638 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm21, %xmm7, %xmm3
11639 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 208(%rdi), %xmm8
11640 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm8[u,u,u,u,u,u,2,9,u,u,u,u,u,u,u,u]
11641 ; AVX512DQBW-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
11642 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11643 ; AVX512DQBW-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm3[7]
11644 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 240(%rdi), %xmm26
11645 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm26[5,12,u,u,u,u,u,u,u,u,u,u,u]
11646 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 224(%rdi), %xmm4
11647 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[0,7,14],zero,zero,xmm4[u,u,u,u,u,u,u,u,u,u,u]
11648 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm5, %xmm12, %xmm5
11649 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $2, %xmm5, %zmm0, %zmm0
11650 ; AVX512DQBW-SLOW-NEXT:    movabsq $137438429184, %rax # imm = 0x1FFFF80000
11651 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k5
11652 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm0, %zmm16 {%k5}
11653 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 288(%rdi), %ymm13
11654 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 256(%rdi), %ymm12
11655 ; AVX512DQBW-SLOW-NEXT:    movw $9288, %ax # imm = 0x2448
11656 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k3
11657 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm13, %ymm12, %ymm0 {%k3}
11658 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm5 = xmm0[u,u,u,u,u,3,10],zero,zero,zero,xmm0[6,13],zero,zero,xmm0[u,u]
11659 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm0, %xmm0
11660 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u],zero,zero,xmm0[1,8,15],zero,zero,xmm0[4,11,u,u]
11661 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm5, %xmm0, %xmm19
11662 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 352(%rdi), %ymm17
11663 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 320(%rdi), %ymm0
11664 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm17, %ymm0, %ymm5 {%k6}
11665 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm15 = ymm5[2,3,0,1]
11666 ; AVX512DQBW-SLOW-NEXT:    vpblendw {{.*#+}} ymm5 = ymm5[0,1],ymm15[2],ymm5[3,4,5],ymm15[6],ymm5[7,8,9],ymm15[10],ymm5[11,12,13],ymm15[14],ymm5[15]
11667 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,2,9,16,23,30,21,28,19,26,u,u,u,u,u,u,u,u,u]
11668 ; AVX512DQBW-SLOW-NEXT:    movw $3968, %ax # imm = 0xF80
11669 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k7
11670 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm5, %ymm19 {%k7}
11671 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 416(%rdi), %ymm15
11672 ; AVX512DQBW-SLOW-NEXT:    vmovdqa 384(%rdi), %ymm5
11673 ; AVX512DQBW-SLOW-NEXT:    movw $4644, %ax # imm = 0x1224
11674 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k4
11675 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm15, %ymm5, %ymm20 {%k4}
11676 ; AVX512DQBW-SLOW-NEXT:    vextracti32x4 $1, %ymm20, %xmm22
11677 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[u,u,u,u,u,u,u],zero,zero,zero,xmm22[6,13],zero,zero,xmm22[2,9]
11678 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[u,u,u,u,u,u,u,1,8,15],zero,zero,xmm20[4,11],zero,zero
11679 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm22, %xmm20, %xmm20
11680 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $1, %xmm20, %ymm0, %ymm20
11681 ; AVX512DQBW-SLOW-NEXT:    movl $-8388608, %eax # imm = 0xFF800000
11682 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm1, %ymm9, %ymm22 {%k4}
11683 ; AVX512DQBW-SLOW-NEXT:    vextracti32x4 $1, %ymm22, %xmm23
11684 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm23 = zero,zero,zero,xmm23[6,13],zero,zero,xmm23[2,9,u,u,u,u,u,u,u]
11685 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[1,8,15],zero,zero,xmm22[4,11],zero,zero,xmm22[u,u,u,u,u,u,u]
11686 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm23, %xmm22, %xmm22
11687 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm10 = ymm10[u,u,u,u,u,u,u,u,u,0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
11688 ; AVX512DQBW-SLOW-NEXT:    movl $511, %edi # imm = 0x1FF
11689 ; AVX512DQBW-SLOW-NEXT:    kmovd %edi, %k1
11690 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm22, %ymm10 {%k1}
11691 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm11, %ymm6, %ymm22 {%k3}
11692 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm23 = xmm22[u,u,u,6,13],zero,zero,xmm22[2,9],zero,zero,zero,xmm22[u,u,u,u]
11693 ; AVX512DQBW-SLOW-NEXT:    vextracti32x4 $1, %ymm22, %xmm22
11694 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[u,u,u],zero,zero,xmm22[4,11],zero,zero,xmm22[0,7,14,u,u,u,u]
11695 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm23, %xmm22, %xmm22
11696 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $1, %xmm22, %ymm0, %ymm14
11697 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm8[u,u,u,u,u,u,3,10,u,u,u,u,u,u,u,u]
11698 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm23 = xmm7[u,u,u,u,u,u,5,12,u,u,u,u,u,u,u,u]
11699 ; AVX512DQBW-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm22 = xmm23[0],xmm22[0],xmm23[1],xmm22[1],xmm23[2],xmm22[2],xmm23[3],xmm22[3]
11700 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $1, %xmm22, %ymm0, %ymm2
11701 ; AVX512DQBW-SLOW-NEXT:    vpblendd {{.*#+}} ymm2 = ymm14[0,1,2,3,4,5,6],ymm2[7]
11702 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,zero,xmm26[6,13,u,u,u,u,u,u,u,u,u,u,u]
11703 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm4[1,8,15],zero,zero,xmm4[u,u,u,u,u,u,u,u,u,u,u]
11704 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm14, %xmm22, %xmm14
11705 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $2, %xmm14, %zmm2, %zmm2
11706 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm10 {%k5}
11707 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm1, %ymm9, %ymm2 {%k6}
11708 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm2[2,9],zero,zero,zero,xmm2[5,12],zero,zero,xmm2[u,u,u,u,u,u,u]
11709 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
11710 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[0,7,14],zero,zero,xmm2[3,10,u,u,u,u,u,u,u]
11711 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm2, %xmm14, %xmm2
11712 ; AVX512DQBW-SLOW-NEXT:    movl $261632, %edi # imm = 0x3FE00
11713 ; AVX512DQBW-SLOW-NEXT:    kmovd %edi, %k5
11714 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 {%k5} = ymm24[u,u,u,u,u,u,u,u,u,1,8,15,6,13,4,11,18,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11715 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm6, %ymm11, %ymm14 {%k2}
11716 ; AVX512DQBW-SLOW-NEXT:    vextracti32x4 $1, %ymm14, %xmm22
11717 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[u,u],zero,zero,zero,xmm22[5,12],zero,zero,xmm22[1,8,15,u,u,u,u]
11718 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[u,u,0,7,14],zero,zero,xmm14[3,10],zero,zero,zero,xmm14[u,u,u,u]
11719 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm22, %xmm14, %xmm14
11720 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
11721 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm21, %xmm8, %xmm21
11722 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm22 = xmm7[u,u,u,u,u,u,6,13,u,u,u,u,u,u,u,u]
11723 ; AVX512DQBW-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm21 = xmm22[0],xmm21[0],xmm22[1],xmm21[1],xmm22[2],xmm21[2],xmm22[3],xmm21[3]
11724 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $1, %xmm21, %ymm0, %ymm3
11725 ; AVX512DQBW-SLOW-NEXT:    vpblendd {{.*#+}} ymm3 = ymm14[0,1,2,3,4,5,6],ymm3[7]
11726 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm4[2,9],zero,zero,zero,xmm4[u,u,u,u,u,u,u,u,u,u,u]
11727 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm21 = zero,zero,xmm26[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
11728 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm14, %xmm21, %xmm14
11729 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $2, %xmm14, %zmm3, %zmm23
11730 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %zmm2, %zmm23 {%k1}
11731 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm1, %ymm9, %ymm2 {%k3}
11732 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[3,10],zero,zero,zero,xmm2[6,13],zero,zero,xmm2[u,u,u,u,u,u,u]
11733 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
11734 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[1,8,15],zero,zero,xmm2[4,11,u,u,u,u,u,u,u]
11735 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11736 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 {%k5} = ymm18[u,u,u,u,u,u,u,u,u,2,9,0,7,14,5,12,19,26,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11737 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm6, %ymm11, %ymm3 {%k4}
11738 ; AVX512DQBW-SLOW-NEXT:    vextracti32x4 $1, %ymm3, %xmm18
11739 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u],zero,zero,zero,xmm18[6,13],zero,zero,xmm18[2,9,u,u,u,u,u]
11740 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,1,8,15],zero,zero,xmm3[4,11],zero,zero,xmm3[u,u,u,u,u]
11741 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm18, %xmm3, %xmm3
11742 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11743 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm18 = xmm8[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm8[5,12]
11744 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm21 = xmm7[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
11745 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm18, %xmm21, %xmm18
11746 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $1, %xmm18, %ymm0, %ymm18
11747 ; AVX512DQBW-SLOW-NEXT:    movl $-134217728, %edi # imm = 0xF8000000
11748 ; AVX512DQBW-SLOW-NEXT:    kmovd %edi, %k2
11749 ; AVX512DQBW-SLOW-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
11750 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm18, %ymm3 {%k2}
11751 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm18 = xmm4[3,10],zero,zero,zero,xmm4[u,u,u,u,u,u,u,u,u,u,u]
11752 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm21 = zero,zero,xmm26[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
11753 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm18, %xmm21, %xmm18
11754 ; AVX512DQBW-SLOW-NEXT:    vinserti32x4 $2, %xmm18, %zmm3, %zmm18
11755 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %zmm2, %zmm18 {%k1}
11756 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k2
11757 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm20, %ymm19 {%k2}
11758 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm19, %zmm0, %zmm2
11759 ; AVX512DQBW-SLOW-NEXT:    movabsq $-137438953472, %rax # imm = 0xFFFFFFE000000000
11760 ; AVX512DQBW-SLOW-NEXT:    kmovq %rax, %k1
11761 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm16 {%k1}
11762 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm12, %ymm13, %ymm2 {%k4}
11763 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11764 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u],zero,zero,xmm3[2,9],zero,zero,zero,xmm3[5,12,u,u]
11765 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,4,11],zero,zero,xmm2[0,7,14],zero,zero,xmm2[u,u]
11766 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11767 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm17, %ymm0, %ymm3 {%k3}
11768 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm3[2,3,0,1]
11769 ; AVX512DQBW-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0,1,2],ymm14[3],ymm3[4,5],ymm14[6],ymm3[7,8,9,10],ymm14[11],ymm3[12,13],ymm14[14],ymm3[15]
11770 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,3,10,17,24,31,22,29,20,27,u,u,u,u,u,u,u,u,u]
11771 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm3, %ymm2 {%k7}
11772 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm15, %ymm5, %ymm3 {%k6}
11773 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm3[u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm3[5,12],zero,zero
11774 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm3
11775 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[0,7,14],zero,zero,xmm3[3,10]
11776 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm14, %xmm3
11777 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11778 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k2}
11779 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm2
11780 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm10 {%k1}
11781 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm12, %ymm13, %ymm2 {%k6}
11782 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11783 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[6,13,u,u]
11784 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,5,12],zero,zero,xmm2[1,8,15],zero,zero,xmm2[u,u]
11785 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11786 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm0, %ymm17, %ymm3 {%k4}
11787 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm3[2,3,0,1]
11788 ; AVX512DQBW-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm14[0],ymm3[1,2],ymm14[3],ymm3[4,5,6],ymm14[7,8],ymm3[9,10],ymm14[11],ymm3[12,13,14],ymm14[15]
11789 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,4,11,18,25,16,23,30,21,28,u,u,u,u,u,u,u,u,u]
11790 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm3, %ymm2 {%k7}
11791 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm15, %ymm5, %ymm3 {%k3}
11792 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm3[u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm3[6,13],zero,zero
11793 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm3
11794 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[1,8,15],zero,zero,xmm3[4,11]
11795 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm14, %xmm3
11796 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11797 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k2}
11798 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm2
11799 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm23 {%k1}
11800 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm12, %ymm13, %ymm2 {%k3}
11801 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[u,u,u,u,u,6,13],zero,zero,xmm2[2,9],zero,zero,zero,xmm2[u,u]
11802 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
11803 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u],zero,zero,xmm2[4,11],zero,zero,xmm2[0,7,14,u,u]
11804 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11805 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm0, %ymm17, %ymm3 {%k6}
11806 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm3[2,3,0,1]
11807 ; AVX512DQBW-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm14[0],ymm3[1,2,3],ymm14[4],ymm3[5,6],ymm14[7,8],ymm3[9,10,11],ymm14[12],ymm3[13,14],ymm14[15]
11808 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm3 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,u,5,12,19,26,17,24,31,22,29,u,u,u,u,u,u,u,u,u]
11809 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm3, %ymm2 {%k7}
11810 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm5, %ymm15, %ymm3 {%k4}
11811 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm14
11812 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[u,u,u,u,u,u,u],zero,zero,xmm14[2,9],zero,zero,zero,xmm14[5,12]
11813 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u,4,11],zero,zero,xmm3[0,7,14],zero,zero
11814 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm14, %xmm3
11815 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11816 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm3, %ymm2 {%k2}
11817 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm2
11818 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %zmm2, %zmm18 {%k1}
11819 ; AVX512DQBW-SLOW-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload
11820 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm13, %ymm12, %ymm2 {%k1}
11821 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11822 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u],zero,zero,zero,xmm3[5,12],zero,zero,xmm3[1,8,15,u,u]
11823 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,0,7,14],zero,zero,xmm2[3,10],zero,zero,zero,xmm2[u,u]
11824 ; AVX512DQBW-SLOW-NEXT:    vporq %xmm3, %xmm2, %xmm19
11825 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm0, %ymm17, %ymm2 {%k3}
11826 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm3 = ymm2[2,3,0,1]
11827 ; AVX512DQBW-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm2[0],ymm3[1],ymm2[2,3],ymm3[4],ymm2[5,6,7,8],ymm3[9],ymm2[10,11],ymm3[12],ymm2[13,14,15]
11828 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,u,6,13,20,27,18,25,16,23,30,u,u,u,u,u,u,u,u,u]
11829 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm2, %ymm19 {%k7}
11830 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm13, %ymm12, %ymm2 {%k4}
11831 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11832 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u],zero,zero,zero,xmm3[6,13],zero,zero,xmm3[2,9,u,u,u]
11833 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,1,8,15],zero,zero,xmm2[4,11],zero,zero,xmm2[u,u,u]
11834 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11835 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm17, %ymm0, %ymm3 {%k1}
11836 ; AVX512DQBW-SLOW-NEXT:    kmovq %k1, %k7
11837 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm14 = ymm3[2,3,0,1]
11838 ; AVX512DQBW-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm3[0],ymm14[1],ymm3[2,3,4],ymm14[5],ymm3[6,7,8],ymm14[9],ymm3[10,11,12],ymm14[13],ymm3[14,15]
11839 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm20 = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,0,7,14,21,28,19,26,17,24,31,u,u,u,u,u,u,u,u,u]
11840 ; AVX512DQBW-SLOW-NEXT:    movl $8176, %eax # imm = 0x1FF0
11841 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k1
11842 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm2, %ymm20 {%k1}
11843 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm5, %ymm15, %ymm2 {%k6}
11844 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm3
11845 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u,u],zero,zero,xmm3[3,10],zero,zero,zero,xmm3[6,13]
11846 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u,5,12],zero,zero,xmm2[1,8,15],zero,zero
11847 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11848 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
11849 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm2, %ymm19 {%k2}
11850 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm5, %ymm15, %ymm2 {%k3}
11851 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm2[u,u,u,u,u,u,u,6,13],zero,zero,xmm2[2,9],zero,zero,zero
11852 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm2
11853 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[u,u,u,u,u,u,u],zero,zero,xmm2[4,11],zero,zero,xmm2[0,7,14]
11854 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm2, %xmm2
11855 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm2, %ymm0, %ymm2
11856 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm2, %ymm20 {%k2}
11857 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm6, %ymm11, %ymm22 {%k6}
11858 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm9, %ymm1, %ymm21 {%k6}
11859 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm17, %ymm0 {%k4}
11860 ; AVX512DQBW-SLOW-NEXT:    vpermq {{.*#+}} ymm2 = ymm0[2,3,0,1]
11861 ; AVX512DQBW-SLOW-NEXT:    vpblendw {{.*#+}} ymm2 = ymm0[0,1],ymm2[2],ymm0[3,4],ymm2[5],ymm0[6,7,8,9],ymm2[10],ymm0[11,12],ymm2[13],ymm0[14,15]
11862 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm13, %ymm12 {%k6}
11863 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm0 = xmm12[u,u,u,u,2,9],zero,zero,zero,xmm12[5,12],zero,zero,xmm12[u,u,u]
11864 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm12, %xmm3
11865 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u],zero,zero,xmm3[0,7,14],zero,zero,xmm3[3,10,u,u,u]
11866 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm0, %xmm3, %xmm0
11867 ; AVX512DQBW-SLOW-NEXT:    movl $4186112, %eax # imm = 0x3FE000
11868 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k1
11869 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm0 {%k1} = ymm2[u,u,u,u,u,u,u,u,u,u,u,u,u,1,8,15,22,29,20,27,18,25,u,u,u,u,u,u,u,u,u,u]
11870 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm15, %ymm5 {%k7}
11871 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm9, %ymm1, %ymm2 {%k4}
11872 ; AVX512DQBW-SLOW-NEXT:    vpblendmw %ymm6, %ymm11, %ymm3 {%k3}
11873 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm9, %ymm1 {%k3}
11874 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %ymm11, %ymm6 {%k4}
11875 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = xmm22[u,u,2,9],zero,zero,zero,xmm22[5,12],zero,zero,xmm22[u,u,u,u,u]
11876 ; AVX512DQBW-SLOW-NEXT:    vextracti32x4 $1, %ymm22, %xmm11
11877 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u],zero,zero,xmm11[0,7,14],zero,zero,xmm11[3,10,u,u,u,u,u]
11878 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm9, %xmm11, %xmm9
11879 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm9, %ymm0, %ymm9
11880 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm8[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm8[6,13]
11881 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm7[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
11882 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm11, %xmm12, %xmm11
11883 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
11884 ; AVX512DQBW-SLOW-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 4-byte Reload
11885 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm11, %ymm9 {%k1}
11886 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm3[u,u,3,10],zero,zero,zero,xmm3[6,13],zero,zero,xmm3[u,u,u,u,u]
11887 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm3, %xmm3
11888 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u],zero,zero,xmm3[1,8,15],zero,zero,xmm3[4,11,u,u,u,u,u]
11889 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm11, %xmm3
11890 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11891 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm7[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
11892 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm8[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm8[0,7,14]
11893 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm11, %xmm12, %xmm11
11894 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
11895 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm11, %ymm3 {%k1}
11896 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm6, %xmm11
11897 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u],zero,zero,xmm11[2,9],zero,zero,zero,xmm11[5,12,u,u,u,u,u]
11898 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm6 = xmm6[u,u,4,11],zero,zero,xmm6[0,7,14],zero,zero,xmm6[u,u,u,u,u]
11899 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm6, %xmm11, %xmm6
11900 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm6, %ymm0, %ymm6
11901 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm7 = xmm7[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
11902 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm8[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm8[1,8,15]
11903 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm7, %xmm8, %xmm7
11904 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm7, %ymm0, %ymm7
11905 ; AVX512DQBW-SLOW-NEXT:    vmovdqu8 %ymm7, %ymm6 {%k1}
11906 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm7 = <16,9,2,19,20,13,6,23,24,u,26,27,28,u,30,31>
11907 ; AVX512DQBW-SLOW-NEXT:    vpermw %zmm25, %zmm7, %zmm7
11908 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm8 = <16,9,2,19,12,5,22,23,24,u,26,27,u,29,30,31>
11909 ; AVX512DQBW-SLOW-NEXT:    vpermw %zmm25, %zmm8, %zmm8
11910 ; AVX512DQBW-SLOW-NEXT:    vmovdqa {{.*#+}} ymm11 = <8,1,2,19,12,5,22,15,u,9,26,11,u,29,14,u>
11911 ; AVX512DQBW-SLOW-NEXT:    vpermw %zmm25, %zmm11, %zmm11
11912 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm2, %xmm12
11913 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = zero,zero,xmm12[2,9],zero,zero,zero,xmm12[5,12,u,u,u,u,u,u,u]
11914 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm2 = xmm2[4,11],zero,zero,xmm2[0,7,14],zero,zero,xmm2[u,u,u,u,u,u,u]
11915 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm2, %xmm12, %xmm2
11916 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm2 {%k5} = ymm11[u,u,u,u,u,u,u,u,u,3,10,1,8,15,6,13,20,27,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11917 ; AVX512DQBW-SLOW-NEXT:    vpbroadcastw {{.*#+}} xmm11 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
11918 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm11, %xmm4, %xmm12
11919 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm13 = xmm26[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11920 ; AVX512DQBW-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm12 = xmm12[0],xmm13[0],xmm12[1],xmm13[1],xmm12[2],xmm13[2],xmm12[3],xmm13[3]
11921 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm12, %zmm9, %zmm9
11922 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %zmm9, %zmm2 {%k5}
11923 ; AVX512DQBW-SLOW-NEXT:    movw $-512, %ax # imm = 0xFE00
11924 ; AVX512DQBW-SLOW-NEXT:    vextracti32x4 $1, %ymm21, %xmm9
11925 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm9 = zero,zero,xmm9[3,10],zero,zero,zero,xmm9[6,13,u,u,u,u,u,u,u]
11926 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm21[5,12],zero,zero,xmm21[1,8,15],zero,zero,xmm21[u,u,u,u,u,u,u]
11927 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm9, %xmm12, %xmm9
11928 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm9 {%k5} = ymm8[u,u,u,u,u,u,u,u,u,4,11,2,9,0,7,14,21,28,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11929 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm8 = xmm26[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11930 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm12 = xmm4[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11931 ; AVX512DQBW-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm8 = xmm12[0],xmm8[0],xmm12[1],xmm8[1],xmm12[2],xmm8[2],xmm12[3],xmm8[3]
11932 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm8, %zmm3, %zmm3
11933 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %zmm3, %zmm9 {%k5}
11934 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm1[6,13],zero,zero,xmm1[2,9],zero,zero,zero,xmm1[u,u,u,u,u,u,u]
11935 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm1, %xmm1
11936 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm1 = zero,zero,xmm1[4,11],zero,zero,xmm1[0,7,14,u,u,u,u,u,u,u]
11937 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm1, %xmm1
11938 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} ymm1 {%k5} = ymm7[u,u,u,u,u,u,u,u,u,5,12,3,10,1,8,15,22,29,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11939 ; AVX512DQBW-SLOW-NEXT:    vpshufb %xmm11, %xmm26, %xmm3
11940 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
11941 ; AVX512DQBW-SLOW-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
11942 ; AVX512DQBW-SLOW-NEXT:    vinserti64x4 $1, %ymm3, %zmm6, %zmm3
11943 ; AVX512DQBW-SLOW-NEXT:    vmovdqu16 %zmm3, %zmm1 {%k5}
11944 ; AVX512DQBW-SLOW-NEXT:    kmovd %eax, %k1
11945 ; AVX512DQBW-SLOW-NEXT:    vinserti32x8 $1, %ymm19, %zmm0, %zmm2 {%k1}
11946 ; AVX512DQBW-SLOW-NEXT:    vinserti32x8 $1, %ymm20, %zmm0, %zmm9 {%k1}
11947 ; AVX512DQBW-SLOW-NEXT:    vextracti128 $1, %ymm5, %xmm3
11948 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u],zero,zero,zero,xmm3[5,12],zero,zero,xmm3[1,8,15]
11949 ; AVX512DQBW-SLOW-NEXT:    vpshufb {{.*#+}} xmm4 = xmm5[u,u,u,u,u,u,0,7,14],zero,zero,xmm5[3,10],zero,zero,zero
11950 ; AVX512DQBW-SLOW-NEXT:    vpor %xmm3, %xmm4, %xmm3
11951 ; AVX512DQBW-SLOW-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
11952 ; AVX512DQBW-SLOW-NEXT:    vpblendw {{.*#+}} ymm3 = ymm0[0,1,2],ymm3[3,4,5,6,7],ymm0[8,9,10],ymm3[11,12,13,14,15]
11953 ; AVX512DQBW-SLOW-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm3[4,5,6,7]
11954 ; AVX512DQBW-SLOW-NEXT:    vinserti32x8 $1, %ymm0, %zmm0, %zmm1 {%k1}
11955 ; AVX512DQBW-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rax
11956 ; AVX512DQBW-SLOW-NEXT:    movq {{[0-9]+}}(%rsp), %rdi
11957 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm16, (%rsi)
11958 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm10, (%rdx)
11959 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm23, (%rcx)
11960 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm18, (%r8)
11961 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm2, (%r9)
11962 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm9, (%rdi)
11963 ; AVX512DQBW-SLOW-NEXT:    vmovdqa64 %zmm1, (%rax)
11964 ; AVX512DQBW-SLOW-NEXT:    vzeroupper
11965 ; AVX512DQBW-SLOW-NEXT:    retq
11967 ; AVX512DQBW-FAST-LABEL: load_i8_stride7_vf64:
11968 ; AVX512DQBW-FAST:       # %bb.0:
11969 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 320(%rdi), %zmm26
11970 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 64(%rdi), %zmm2
11971 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [24,17,2,19,28,21,6,31,16,9,26,27,20,13,30,23]
11972 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm26, %zmm1, %zmm16
11973 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [8,1,18,11,4,5,22,15,0,25,10,3,12,29,14,7]
11974 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm2, %zmm1, %zmm24
11975 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [24,17,2,27,20,5,22,31,16,9,26,19,12,29,30,23]
11976 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm26, %zmm1, %zmm17
11977 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,1,18,11,4,21,14,7,8,25,10,3,28,13,6,15]
11978 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm2, %zmm1, %zmm25
11979 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,1,2,11,4,5,14,7,8,9,26,19,12,29,22,15]
11980 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm26, %zmm1, %zmm18
11981 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,17,10,3,4,21,14,7,24,9,2,11,28,13,6,31]
11982 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm2, %zmm1, %zmm9
11983 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [0,1,10,3,4,5,14,7,8,25,18,11,12,29,22,15]
11984 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm26, %zmm1, %zmm6
11985 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm1 = [16,17,10,3,20,13,6,23,24,25,18,27,28,21,30,31]
11986 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm2, %zmm1, %zmm4
11987 ; AVX512DQBW-FAST-NEXT:    vmovdqa (%rdi), %ymm12
11988 ; AVX512DQBW-FAST-NEXT:    vmovdqa 32(%rdi), %ymm3
11989 ; AVX512DQBW-FAST-NEXT:    movw $-28382, %ax # imm = 0x9122
11990 ; AVX512DQBW-FAST-NEXT:    kmovd %eax, %k1
11991 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm3, %ymm12, %ymm1 {%k1}
11992 ; AVX512DQBW-FAST-NEXT:    kmovq %k1, %k2
11993 ; AVX512DQBW-FAST-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
11994 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm1, %xmm5
11995 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm5[5,12],zero,zero,xmm5[1,8,15,u,u,u,u,u,u]
11996 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm1 = xmm1[0,7,14],zero,zero,xmm1[3,10],zero,zero,zero,xmm1[u,u,u,u,u,u]
11997 ; AVX512DQBW-FAST-NEXT:    vpor %xmm5, %xmm1, %xmm1
11998 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm4 = ymm4[u,u,u,u,u,u,u,u,u,u,6,13,4,11,2,9,16,23,30,u,u,u,u,u,u,u,u,u,u,u,u,u]
11999 ; AVX512DQBW-FAST-NEXT:    movw $992, %ax # imm = 0x3E0
12000 ; AVX512DQBW-FAST-NEXT:    kmovd %eax, %k1
12001 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm4, %ymm1 {%k1}
12002 ; AVX512DQBW-FAST-NEXT:    vmovdqa 128(%rdi), %ymm13
12003 ; AVX512DQBW-FAST-NEXT:    vmovdqa 160(%rdi), %ymm11
12004 ; AVX512DQBW-FAST-NEXT:    movw $8772, %ax # imm = 0x2244
12005 ; AVX512DQBW-FAST-NEXT:    kmovd %eax, %k1
12006 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm13, %ymm11, %ymm4 {%k1}
12007 ; AVX512DQBW-FAST-NEXT:    kmovq %k1, %k3
12008 ; AVX512DQBW-FAST-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill
12009 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm5
12010 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm5[u,u,u],zero,zero,xmm5[3,10],zero,zero,zero,xmm5[6,13,u,u,u,u]
12011 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,5,12],zero,zero,xmm4[1,8,15],zero,zero,xmm4[u,u,u,u]
12012 ; AVX512DQBW-FAST-NEXT:    vpor %xmm5, %xmm4, %xmm4
12013 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm4, %ymm0, %ymm4
12014 ; AVX512DQBW-FAST-NEXT:    vbroadcasti128 {{.*#+}} ymm5 = [1,2,4,6,1,2,4,6]
12015 ; AVX512DQBW-FAST-NEXT:    # ymm5 = mem[0,1,0,1]
12016 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 192(%rdi), %ymm19
12017 ; AVX512DQBW-FAST-NEXT:    vpermd %ymm19, %ymm5, %ymm5
12018 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm5 = ymm5[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,16,23,26,29]
12019 ; AVX512DQBW-FAST-NEXT:    vpblendd {{.*#+}} ymm4 = ymm4[0,1,2,3,4,5,6],ymm5[7]
12020 ; AVX512DQBW-FAST-NEXT:    vmovdqa 240(%rdi), %xmm7
12021 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = zero,zero,zero,xmm7[5,12,u,u,u,u,u,u,u,u,u,u,u]
12022 ; AVX512DQBW-FAST-NEXT:    vmovdqa 224(%rdi), %xmm8
12023 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm8[0,7,14],zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
12024 ; AVX512DQBW-FAST-NEXT:    vpor %xmm5, %xmm10, %xmm5
12025 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $2, %xmm5, %zmm4, %zmm4
12026 ; AVX512DQBW-FAST-NEXT:    movabsq $137438429184, %rax # imm = 0x1FFFF80000
12027 ; AVX512DQBW-FAST-NEXT:    kmovq %rax, %k5
12028 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %zmm4, %zmm1 {%k5}
12029 ; AVX512DQBW-FAST-NEXT:    vmovdqa 288(%rdi), %ymm5
12030 ; AVX512DQBW-FAST-NEXT:    vmovdqa 256(%rdi), %ymm4
12031 ; AVX512DQBW-FAST-NEXT:    movw $9288, %ax # imm = 0x2448
12032 ; AVX512DQBW-FAST-NEXT:    kmovd %eax, %k6
12033 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm5, %ymm4, %ymm10 {%k6}
12034 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm10[u,u,u,u,u,3,10],zero,zero,zero,xmm10[6,13],zero,zero,xmm10[u,u]
12035 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm10, %xmm10
12036 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm10 = xmm10[u,u,u,u,u],zero,zero,xmm10[1,8,15],zero,zero,xmm10[4,11,u,u]
12037 ; AVX512DQBW-FAST-NEXT:    vporq %xmm20, %xmm10, %xmm21
12038 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm6 = ymm6[u,u,u,u,u,u,u,u,u,u,u,u,u,u,2,9,16,23,30,21,28,19,26,u,u,u,u,u,u,u,u,u]
12039 ; AVX512DQBW-FAST-NEXT:    movw $3968, %ax # imm = 0xF80
12040 ; AVX512DQBW-FAST-NEXT:    kmovd %eax, %k7
12041 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm6, %ymm21 {%k7}
12042 ; AVX512DQBW-FAST-NEXT:    vmovdqa 416(%rdi), %ymm10
12043 ; AVX512DQBW-FAST-NEXT:    vmovdqa 384(%rdi), %ymm6
12044 ; AVX512DQBW-FAST-NEXT:    movw $4644, %ax # imm = 0x1224
12045 ; AVX512DQBW-FAST-NEXT:    kmovd %eax, %k4
12046 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm10, %ymm6, %ymm20 {%k4}
12047 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm20, %xmm22
12048 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm22 = xmm22[u,u,u,u,u,u,u],zero,zero,zero,xmm22[6,13],zero,zero,xmm22[2,9]
12049 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[u,u,u,u,u,u,u,1,8,15],zero,zero,xmm20[4,11],zero,zero
12050 ; AVX512DQBW-FAST-NEXT:    vporq %xmm22, %xmm20, %xmm20
12051 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $1, %xmm20, %ymm0, %ymm22
12052 ; AVX512DQBW-FAST-NEXT:    movl $-8388608, %eax # imm = 0xFF800000
12053 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm3, %ymm12, %ymm20 {%k4}
12054 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm20, %xmm23
12055 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm23 = zero,zero,zero,xmm23[6,13],zero,zero,xmm23[2,9,u,u,u,u,u,u,u]
12056 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[1,8,15],zero,zero,xmm20[4,11],zero,zero,xmm20[u,u,u,u,u,u,u]
12057 ; AVX512DQBW-FAST-NEXT:    vporq %xmm23, %xmm20, %xmm20
12058 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm9 = ymm9[u,u,u,u,u,u,u,u,u,0,7,14,5,12,3,10,17,24,31,u,u,u,u,u,u,u,u,u,u,u,u,u]
12059 ; AVX512DQBW-FAST-NEXT:    movl $511, %r10d # imm = 0x1FF
12060 ; AVX512DQBW-FAST-NEXT:    kmovd %r10d, %k1
12061 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm20, %ymm9 {%k1}
12062 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm13, %ymm11, %ymm20 {%k6}
12063 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm23 = xmm20[u,u,u,6,13],zero,zero,xmm20[2,9],zero,zero,zero,xmm20[u,u,u,u]
12064 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm20, %xmm20
12065 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[u,u,u],zero,zero,xmm20[4,11],zero,zero,xmm20[0,7,14,u,u,u,u]
12066 ; AVX512DQBW-FAST-NEXT:    vporq %xmm23, %xmm20, %xmm20
12067 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $1, %xmm20, %ymm0, %ymm15
12068 ; AVX512DQBW-FAST-NEXT:    vbroadcasti64x2 {{.*#+}} ymm20 = [1,3,4,6,1,3,4,6]
12069 ; AVX512DQBW-FAST-NEXT:    # ymm20 = mem[0,1,0,1]
12070 ; AVX512DQBW-FAST-NEXT:    vpermd %ymm19, %ymm20, %ymm20
12071 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm14 = ymm20[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,17,20,27,30]
12072 ; AVX512DQBW-FAST-NEXT:    vpblendd {{.*#+}} ymm14 = ymm15[0,1,2,3,4,5,6],ymm14[7]
12073 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = zero,zero,zero,xmm7[6,13,u,u,u,u,u,u,u,u,u,u,u]
12074 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm8[1,8,15],zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
12075 ; AVX512DQBW-FAST-NEXT:    vporq %xmm15, %xmm20, %xmm15
12076 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $2, %xmm15, %zmm14, %zmm14
12077 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %zmm14, %zmm9 {%k5}
12078 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm3, %ymm12, %ymm14 {%k3}
12079 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm14[2,9],zero,zero,zero,xmm14[5,12],zero,zero,xmm14[u,u,u,u,u,u,u]
12080 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm14, %xmm14
12081 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = zero,zero,xmm14[0,7,14],zero,zero,xmm14[3,10,u,u,u,u,u,u,u]
12082 ; AVX512DQBW-FAST-NEXT:    vpor %xmm15, %xmm14, %xmm15
12083 ; AVX512DQBW-FAST-NEXT:    movl $261632, %r10d # imm = 0x3FE00
12084 ; AVX512DQBW-FAST-NEXT:    kmovd %r10d, %k5
12085 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm15 {%k5} = ymm25[u,u,u,u,u,u,u,u,u,1,8,15,6,13,4,11,18,25,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
12086 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm11, %ymm13, %ymm14 {%k2}
12087 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm14, %xmm20
12088 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm20 = xmm20[u,u],zero,zero,zero,xmm20[5,12],zero,zero,xmm20[1,8,15,u,u,u,u]
12089 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm14[u,u,0,7,14],zero,zero,xmm14[3,10],zero,zero,zero,xmm14[u,u,u,u]
12090 ; AVX512DQBW-FAST-NEXT:    vporq %xmm20, %xmm14, %xmm14
12091 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm14, %ymm0, %ymm14
12092 ; AVX512DQBW-FAST-NEXT:    vbroadcasti64x2 {{.*#+}} ymm20 = [1,3,5,6,1,3,5,6]
12093 ; AVX512DQBW-FAST-NEXT:    # ymm20 = mem[0,1,0,1]
12094 ; AVX512DQBW-FAST-NEXT:    vpermd %ymm19, %ymm20, %ymm19
12095 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm19[u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,18,21,24,31]
12096 ; AVX512DQBW-FAST-NEXT:    vpblendd {{.*#+}} ymm0 = ymm14[0,1,2,3,4,5,6],ymm0[7]
12097 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm14 = xmm8[2,9],zero,zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
12098 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm19 = zero,zero,xmm7[0,7,14,u,u,u,u,u,u,u,u,u,u,u]
12099 ; AVX512DQBW-FAST-NEXT:    vporq %xmm14, %xmm19, %xmm14
12100 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $2, %xmm14, %zmm0, %zmm14
12101 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %zmm15, %zmm14 {%k1}
12102 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm3, %ymm12, %ymm0 {%k6}
12103 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm0[3,10],zero,zero,zero,xmm0[6,13],zero,zero,xmm0[u,u,u,u,u,u,u]
12104 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm0
12105 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = zero,zero,xmm0[1,8,15],zero,zero,xmm0[4,11,u,u,u,u,u,u,u]
12106 ; AVX512DQBW-FAST-NEXT:    vpor %xmm0, %xmm15, %xmm0
12107 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm0 {%k5} = ymm24[u,u,u,u,u,u,u,u,u,2,9,0,7,14,5,12,19,26,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
12108 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm11, %ymm13, %ymm15 {%k4}
12109 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm15, %xmm19
12110 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm19 = xmm19[u,u],zero,zero,zero,xmm19[6,13],zero,zero,xmm19[2,9,u,u,u,u,u]
12111 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm15 = xmm15[u,u,1,8,15],zero,zero,xmm15[4,11],zero,zero,xmm15[u,u,u,u,u]
12112 ; AVX512DQBW-FAST-NEXT:    vporq %xmm19, %xmm15, %xmm15
12113 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm15, %ymm0, %ymm15
12114 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 208(%rdi), %xmm19
12115 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm23 = xmm19[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm19[5,12]
12116 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 192(%rdi), %xmm20
12117 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm24 = xmm20[u,u,u,u,u,u,u,u,u,u,u,0,7,14],zero,zero
12118 ; AVX512DQBW-FAST-NEXT:    vporq %xmm23, %xmm24, %xmm23
12119 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $1, %xmm23, %ymm0, %ymm23
12120 ; AVX512DQBW-FAST-NEXT:    movl $-134217728, %edi # imm = 0xF8000000
12121 ; AVX512DQBW-FAST-NEXT:    kmovd %edi, %k2
12122 ; AVX512DQBW-FAST-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
12123 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm23, %ymm15 {%k2}
12124 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm23 = xmm8[3,10],zero,zero,zero,xmm8[u,u,u,u,u,u,u,u,u,u,u]
12125 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm24 = zero,zero,xmm7[1,8,15,u,u,u,u,u,u,u,u,u,u,u]
12126 ; AVX512DQBW-FAST-NEXT:    vporq %xmm23, %xmm24, %xmm23
12127 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $2, %xmm23, %zmm15, %zmm15
12128 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %zmm0, %zmm15 {%k1}
12129 ; AVX512DQBW-FAST-NEXT:    kmovd %eax, %k3
12130 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm22, %ymm21 {%k3}
12131 ; AVX512DQBW-FAST-NEXT:    vinserti64x4 $1, %ymm21, %zmm0, %zmm0
12132 ; AVX512DQBW-FAST-NEXT:    movabsq $-137438953472, %rax # imm = 0xFFFFFFE000000000
12133 ; AVX512DQBW-FAST-NEXT:    kmovq %rax, %k2
12134 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %zmm0, %zmm1 {%k2}
12135 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm4, %ymm5, %ymm0 {%k4}
12136 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm0, %xmm21
12137 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm21 = xmm21[u,u,u,u,u],zero,zero,xmm21[2,9],zero,zero,zero,xmm21[5,12,u,u]
12138 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,4,11],zero,zero,xmm0[0,7,14],zero,zero,xmm0[u,u]
12139 ; AVX512DQBW-FAST-NEXT:    vporq %xmm21, %xmm0, %xmm0
12140 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm18 = ymm18[u,u,u,u,u,u,u,u,u,u,u,u,u,u,3,10,17,24,31,22,29,20,27,u,u,u,u,u,u,u,u,u]
12141 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm18, %ymm0 {%k7}
12142 ; AVX512DQBW-FAST-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload
12143 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm10, %ymm6, %ymm18 {%k1}
12144 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm21 = xmm18[u,u,u,u,u,u,u,2,9],zero,zero,zero,xmm18[5,12],zero,zero
12145 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm18, %xmm18
12146 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u,u,u,u],zero,zero,xmm18[0,7,14],zero,zero,xmm18[3,10]
12147 ; AVX512DQBW-FAST-NEXT:    vporq %xmm21, %xmm18, %xmm18
12148 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $1, %xmm18, %ymm0, %ymm18
12149 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm18, %ymm0 {%k3}
12150 ; AVX512DQBW-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
12151 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %zmm0, %zmm9 {%k2}
12152 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm4, %ymm5, %ymm0 {%k1}
12153 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm0, %xmm18
12154 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u,u],zero,zero,xmm18[3,10],zero,zero,zero,xmm18[6,13,u,u]
12155 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,5,12],zero,zero,xmm0[1,8,15],zero,zero,xmm0[u,u]
12156 ; AVX512DQBW-FAST-NEXT:    vporq %xmm18, %xmm0, %xmm0
12157 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm17 = ymm17[u,u,u,u,u,u,u,u,u,u,u,u,u,u,4,11,18,25,16,23,30,21,28,u,u,u,u,u,u,u,u,u]
12158 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm17, %ymm0 {%k7}
12159 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm10, %ymm6, %ymm17 {%k6}
12160 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm17[u,u,u,u,u,u,u,3,10],zero,zero,zero,xmm17[6,13],zero,zero
12161 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm17, %xmm17
12162 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm17 = xmm17[u,u,u,u,u,u,u],zero,zero,xmm17[1,8,15],zero,zero,xmm17[4,11]
12163 ; AVX512DQBW-FAST-NEXT:    vporq %xmm18, %xmm17, %xmm17
12164 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $1, %xmm17, %ymm0, %ymm17
12165 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm17, %ymm0 {%k3}
12166 ; AVX512DQBW-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
12167 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %zmm0, %zmm14 {%k2}
12168 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm4, %ymm5, %ymm0 {%k6}
12169 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm17 = xmm0[u,u,u,u,u,6,13],zero,zero,xmm0[2,9],zero,zero,zero,xmm0[u,u]
12170 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm0
12171 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u],zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14,u,u]
12172 ; AVX512DQBW-FAST-NEXT:    vporq %xmm17, %xmm0, %xmm0
12173 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm16 = ymm16[u,u,u,u,u,u,u,u,u,u,u,u,u,u,5,12,19,26,17,24,31,22,29,u,u,u,u,u,u,u,u,u]
12174 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm16, %ymm0 {%k7}
12175 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm6, %ymm10, %ymm16 {%k4}
12176 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm16, %xmm17
12177 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm17 = xmm17[u,u,u,u,u,u,u],zero,zero,xmm17[2,9],zero,zero,zero,xmm17[5,12]
12178 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm16 = xmm16[u,u,u,u,u,u,u,4,11],zero,zero,xmm16[0,7,14],zero,zero
12179 ; AVX512DQBW-FAST-NEXT:    vporq %xmm17, %xmm16, %xmm16
12180 ; AVX512DQBW-FAST-NEXT:    vinserti32x4 $1, %xmm16, %ymm0, %ymm16
12181 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm16, %ymm0 {%k3}
12182 ; AVX512DQBW-FAST-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
12183 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %zmm0, %zmm15 {%k2}
12184 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = [0,9,2,3,4,13,6,7,24,17,10,11,28,21,14,31]
12185 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm26, %zmm0, %zmm17
12186 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm0 = [16,25,18,3,28,21,6,23,24,17,10,27,20,13,30,31]
12187 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm26, %zmm0, %zmm0
12188 ; AVX512DQBW-FAST-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload
12189 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm5, %ymm4, %ymm16 {%k1}
12190 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm16, %xmm18
12191 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u],zero,zero,zero,xmm18[5,12],zero,zero,xmm18[1,8,15,u,u]
12192 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm16 = xmm16[u,u,u,u,0,7,14],zero,zero,xmm16[3,10],zero,zero,zero,xmm16[u,u]
12193 ; AVX512DQBW-FAST-NEXT:    vporq %xmm18, %xmm16, %xmm16
12194 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm0 = ymm0[u,u,u,u,u,u,u,u,u,u,u,u,u,u,6,13,20,27,18,25,16,23,30,u,u,u,u,u,u,u,u,u]
12195 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm0, %ymm16 {%k7}
12196 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm5, %ymm4, %ymm0 {%k4}
12197 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm0, %xmm18
12198 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u],zero,zero,zero,xmm18[6,13],zero,zero,xmm18[2,9,u,u,u]
12199 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,1,8,15],zero,zero,xmm0[4,11],zero,zero,xmm0[u,u,u]
12200 ; AVX512DQBW-FAST-NEXT:    vporq %xmm18, %xmm0, %xmm0
12201 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm17 = ymm17[u,u,u,u,u,u,u,u,u,u,u,u,u,0,7,14,21,28,19,26,17,24,31,u,u,u,u,u,u,u,u,u]
12202 ; AVX512DQBW-FAST-NEXT:    movl $8176, %eax # imm = 0x1FF0
12203 ; AVX512DQBW-FAST-NEXT:    kmovd %eax, %k1
12204 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm0, %ymm17 {%k1}
12205 ; AVX512DQBW-FAST-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 # 2-byte Reload
12206 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm6, %ymm10, %ymm0 {%k1}
12207 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm0, %xmm18
12208 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm18[u,u,u,u,u,u,u],zero,zero,xmm18[3,10],zero,zero,zero,xmm18[6,13]
12209 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u,5,12],zero,zero,xmm0[1,8,15],zero,zero
12210 ; AVX512DQBW-FAST-NEXT:    vporq %xmm18, %xmm0, %xmm0
12211 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
12212 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm0, %ymm16 {%k3}
12213 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm6, %ymm10, %ymm0 {%k6}
12214 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm0[u,u,u,u,u,u,u,6,13],zero,zero,xmm0[2,9],zero,zero,zero
12215 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm0
12216 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u,u,u,u,u,u],zero,zero,xmm0[4,11],zero,zero,xmm0[0,7,14]
12217 ; AVX512DQBW-FAST-NEXT:    vporq %xmm18, %xmm0, %xmm0
12218 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
12219 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm0, %ymm17 {%k3}
12220 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm12, %ymm3, %ymm21 {%k4}
12221 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm12, %ymm3, %ymm18 {%k1}
12222 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm11, %ymm13, %ymm0 {%k6}
12223 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm12, %ymm3 {%k6}
12224 ; AVX512DQBW-FAST-NEXT:    vpblendmw %ymm11, %ymm13, %ymm12 {%k1}
12225 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm13, %ymm11 {%k4}
12226 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm12[u,u,2,9],zero,zero,zero,xmm12[5,12],zero,zero,xmm12[u,u,u,u,u]
12227 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm12, %xmm12
12228 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm12[u,u],zero,zero,xmm12[0,7,14],zero,zero,xmm12[3,10,u,u,u,u,u]
12229 ; AVX512DQBW-FAST-NEXT:    vpor %xmm13, %xmm12, %xmm12
12230 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm12, %ymm0, %ymm12
12231 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm19[u,u,u,u,u,u,u,u,u,u,u],zero,zero,zero,xmm19[6,13]
12232 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm22 = xmm20[u,u,u,u,u,u,u,u,u,u,u,1,8,15],zero,zero
12233 ; AVX512DQBW-FAST-NEXT:    vporq %xmm13, %xmm22, %xmm13
12234 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
12235 ; AVX512DQBW-FAST-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k2 # 4-byte Reload
12236 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm13, %ymm12 {%k2}
12237 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm0[u,u,3,10],zero,zero,zero,xmm0[6,13],zero,zero,xmm0[u,u,u,u,u]
12238 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm0, %xmm0
12239 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm0[u,u],zero,zero,xmm0[1,8,15],zero,zero,xmm0[4,11,u,u,u,u,u]
12240 ; AVX512DQBW-FAST-NEXT:    vpor %xmm0, %xmm13, %xmm0
12241 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm0, %ymm0, %ymm0
12242 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm20[u,u,u,u,u,u,u,u,u,u,u,2,9],zero,zero,zero
12243 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm22 = xmm19[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm19[0,7,14]
12244 ; AVX512DQBW-FAST-NEXT:    vporq %xmm13, %xmm22, %xmm13
12245 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm13, %ymm0, %ymm13
12246 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm13, %ymm0 {%k2}
12247 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm11, %xmm13
12248 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm13 = xmm13[u,u],zero,zero,xmm13[2,9],zero,zero,zero,xmm13[5,12,u,u,u,u,u]
12249 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm11[u,u,4,11],zero,zero,xmm11[0,7,14],zero,zero,xmm11[u,u,u,u,u]
12250 ; AVX512DQBW-FAST-NEXT:    vpor %xmm13, %xmm11, %xmm11
12251 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm13
12252 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = xmm20[u,u,u,u,u,u,u,u,u,u,u,3,10],zero,zero,zero
12253 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm19 = xmm19[u,u,u,u,u,u,u,u,u,u,u],zero,zero,xmm19[1,8,15]
12254 ; AVX512DQBW-FAST-NEXT:    vporq %xmm11, %xmm19, %xmm11
12255 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm11, %ymm0, %ymm11
12256 ; AVX512DQBW-FAST-NEXT:    vmovdqu8 %ymm11, %ymm13 {%k2}
12257 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [16,9,2,19,20,13,6,23,24,17,26,27,28,21,30,31]
12258 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm2, %zmm11, %zmm19
12259 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [16,9,2,19,12,5,22,23,24,17,26,27,20,29,30,31]
12260 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm2, %zmm11, %zmm20
12261 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm11 = [8,1,2,19,12,5,22,15,0,9,26,11,4,29,14,7]
12262 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm2, %zmm11, %zmm11
12263 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm21, %xmm2
12264 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm2 = zero,zero,xmm2[2,9],zero,zero,zero,xmm2[5,12,u,u,u,u,u,u,u]
12265 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm21 = xmm21[4,11],zero,zero,xmm21[0,7,14],zero,zero,xmm21[u,u,u,u,u,u,u]
12266 ; AVX512DQBW-FAST-NEXT:    vporq %xmm2, %xmm21, %xmm2
12267 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm2 {%k5} = ymm11[u,u,u,u,u,u,u,u,u,3,10,1,8,15,6,13,20,27,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
12268 ; AVX512DQBW-FAST-NEXT:    vpbroadcastw {{.*#+}} xmm21 = [4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11]
12269 ; AVX512DQBW-FAST-NEXT:    vpshufb %xmm21, %xmm8, %xmm11
12270 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm22 = xmm7[2,9,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
12271 ; AVX512DQBW-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm11 = xmm11[0],xmm22[0],xmm11[1],xmm22[1],xmm11[2],xmm22[2],xmm11[3],xmm22[3]
12272 ; AVX512DQBW-FAST-NEXT:    vinserti64x4 $1, %ymm11, %zmm12, %zmm11
12273 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %zmm11, %zmm2 {%k5}
12274 ; AVX512DQBW-FAST-NEXT:    vextracti32x4 $1, %ymm18, %xmm11
12275 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm11 = zero,zero,xmm11[3,10],zero,zero,zero,xmm11[6,13,u,u,u,u,u,u,u]
12276 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm18[5,12],zero,zero,xmm18[1,8,15],zero,zero,xmm18[u,u,u,u,u,u,u]
12277 ; AVX512DQBW-FAST-NEXT:    vpor %xmm11, %xmm12, %xmm11
12278 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm11 {%k5} = ymm20[u,u,u,u,u,u,u,u,u,4,11,2,9,0,7,14,21,28,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
12279 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm12 = xmm7[3,10,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
12280 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm18 = xmm8[5,12,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
12281 ; AVX512DQBW-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm12 = xmm18[0],xmm12[0],xmm18[1],xmm12[1],xmm18[2],xmm12[2],xmm18[3],xmm12[3]
12282 ; AVX512DQBW-FAST-NEXT:    vinserti64x4 $1, %ymm12, %zmm0, %zmm0
12283 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %zmm0, %zmm11 {%k5}
12284 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm0 = xmm3[6,13],zero,zero,xmm3[2,9],zero,zero,zero,xmm3[u,u,u,u,u,u,u]
12285 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm3, %xmm3
12286 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = zero,zero,xmm3[4,11],zero,zero,xmm3[0,7,14,u,u,u,u,u,u,u]
12287 ; AVX512DQBW-FAST-NEXT:    vpor %xmm0, %xmm3, %xmm0
12288 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm0 {%k5} = ymm19[u,u,u,u,u,u,u,u,u,5,12,3,10,1,8,15,22,29,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
12289 ; AVX512DQBW-FAST-NEXT:    vpshufb %xmm21, %xmm7, %xmm3
12290 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm7 = xmm8[6,13,u,u,u,u,u,u,u,u,u,u,u,u,u,u]
12291 ; AVX512DQBW-FAST-NEXT:    vpunpcklwd {{.*#+}} xmm3 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3]
12292 ; AVX512DQBW-FAST-NEXT:    vinserti64x4 $1, %ymm3, %zmm13, %zmm3
12293 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %zmm3, %zmm0 {%k5}
12294 ; AVX512DQBW-FAST-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k2 # 2-byte Reload
12295 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm10, %ymm6 {%k2}
12296 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm3 = [0,1,10,3,4,13,6,7,8,25,18,11,28,21,14,15]
12297 ; AVX512DQBW-FAST-NEXT:    vpermw %zmm26, %zmm3, %zmm3
12298 ; AVX512DQBW-FAST-NEXT:    movw $-512, %ax # imm = 0xFE00
12299 ; AVX512DQBW-FAST-NEXT:    vmovdqu16 %ymm5, %ymm4 {%k1}
12300 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm4[u,u,u,u,2,9],zero,zero,zero,xmm4[5,12],zero,zero,xmm4[u,u,u]
12301 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm4, %xmm4
12302 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm4 = xmm4[u,u,u,u],zero,zero,xmm4[0,7,14],zero,zero,xmm4[3,10,u,u,u]
12303 ; AVX512DQBW-FAST-NEXT:    vpor %xmm5, %xmm4, %xmm4
12304 ; AVX512DQBW-FAST-NEXT:    movl $4186112, %edi # imm = 0x3FE000
12305 ; AVX512DQBW-FAST-NEXT:    kmovd %edi, %k1
12306 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} ymm4 {%k1} = ymm3[u,u,u,u,u,u,u,u,u,u,u,u,u,1,8,15,22,29,20,27,18,25,u,u,u,u,u,u,u,u,u,u]
12307 ; AVX512DQBW-FAST-NEXT:    kmovd %eax, %k1
12308 ; AVX512DQBW-FAST-NEXT:    vinserti32x8 $1, %ymm16, %zmm0, %zmm2 {%k1}
12309 ; AVX512DQBW-FAST-NEXT:    vinserti32x8 $1, %ymm17, %zmm0, %zmm11 {%k1}
12310 ; AVX512DQBW-FAST-NEXT:    vextracti128 $1, %ymm6, %xmm3
12311 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm3 = xmm3[u,u,u,u,u,u],zero,zero,zero,xmm3[5,12],zero,zero,xmm3[1,8,15]
12312 ; AVX512DQBW-FAST-NEXT:    vpshufb {{.*#+}} xmm5 = xmm6[u,u,u,u,u,u,0,7,14],zero,zero,xmm6[3,10],zero,zero,zero
12313 ; AVX512DQBW-FAST-NEXT:    vpor %xmm3, %xmm5, %xmm3
12314 ; AVX512DQBW-FAST-NEXT:    vinserti128 $1, %xmm3, %ymm0, %ymm3
12315 ; AVX512DQBW-FAST-NEXT:    vinserti64x4 $1, %ymm4, %zmm0, %zmm4
12316 ; AVX512DQBW-FAST-NEXT:    vmovdqa {{.*#+}} ymm5 = [16,17,18,19,20,21,22,23,24,25,26,43,44,45,46,47]
12317 ; AVX512DQBW-FAST-NEXT:    vpermi2w %zmm3, %zmm4, %zmm5
12318 ; AVX512DQBW-FAST-NEXT:    vinserti32x8 $1, %ymm5, %zmm0, %zmm0 {%k1}
12319 ; AVX512DQBW-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rax
12320 ; AVX512DQBW-FAST-NEXT:    movq {{[0-9]+}}(%rsp), %rdi
12321 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 %zmm1, (%rsi)
12322 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 %zmm9, (%rdx)
12323 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 %zmm14, (%rcx)
12324 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 %zmm15, (%r8)
12325 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 %zmm2, (%r9)
12326 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 %zmm11, (%rdi)
12327 ; AVX512DQBW-FAST-NEXT:    vmovdqa64 %zmm0, (%rax)
12328 ; AVX512DQBW-FAST-NEXT:    vzeroupper
12329 ; AVX512DQBW-FAST-NEXT:    retq
12330   %wide.vec = load <448 x i8>, ptr %in.vec, align 64
12331   %strided.vec0 = shufflevector <448 x i8> %wide.vec, <448 x i8> poison, <64 x i32> <i32 0, i32 7, i32 14, i32 21, i32 28, i32 35, i32 42, i32 49, i32 56, i32 63, i32 70, i32 77, i32 84, i32 91, i32 98, i32 105, i32 112, i32 119, i32 126, i32 133, i32 140, i32 147, i32 154, i32 161, i32 168, i32 175, i32 182, i32 189, i32 196, i32 203, i32 210, i32 217, i32 224, i32 231, i32 238, i32 245, i32 252, i32 259, i32 266, i32 273, i32 280, i32 287, i32 294, i32 301, i32 308, i32 315, i32 322, i32 329, i32 336, i32 343, i32 350, i32 357, i32 364, i32 371, i32 378, i32 385, i32 392, i32 399, i32 406, i32 413, i32 420, i32 427, i32 434, i32 441>
12332   %strided.vec1 = shufflevector <448 x i8> %wide.vec, <448 x i8> poison, <64 x i32> <i32 1, i32 8, i32 15, i32 22, i32 29, i32 36, i32 43, i32 50, i32 57, i32 64, i32 71, i32 78, i32 85, i32 92, i32 99, i32 106, i32 113, i32 120, i32 127, i32 134, i32 141, i32 148, i32 155, i32 162, i32 169, i32 176, i32 183, i32 190, i32 197, i32 204, i32 211, i32 218, i32 225, i32 232, i32 239, i32 246, i32 253, i32 260, i32 267, i32 274, i32 281, i32 288, i32 295, i32 302, i32 309, i32 316, i32 323, i32 330, i32 337, i32 344, i32 351, i32 358, i32 365, i32 372, i32 379, i32 386, i32 393, i32 400, i32 407, i32 414, i32 421, i32 428, i32 435, i32 442>
12333   %strided.vec2 = shufflevector <448 x i8> %wide.vec, <448 x i8> poison, <64 x i32> <i32 2, i32 9, i32 16, i32 23, i32 30, i32 37, i32 44, i32 51, i32 58, i32 65, i32 72, i32 79, i32 86, i32 93, i32 100, i32 107, i32 114, i32 121, i32 128, i32 135, i32 142, i32 149, i32 156, i32 163, i32 170, i32 177, i32 184, i32 191, i32 198, i32 205, i32 212, i32 219, i32 226, i32 233, i32 240, i32 247, i32 254, i32 261, i32 268, i32 275, i32 282, i32 289, i32 296, i32 303, i32 310, i32 317, i32 324, i32 331, i32 338, i32 345, i32 352, i32 359, i32 366, i32 373, i32 380, i32 387, i32 394, i32 401, i32 408, i32 415, i32 422, i32 429, i32 436, i32 443>
12334   %strided.vec3 = shufflevector <448 x i8> %wide.vec, <448 x i8> poison, <64 x i32> <i32 3, i32 10, i32 17, i32 24, i32 31, i32 38, i32 45, i32 52, i32 59, i32 66, i32 73, i32 80, i32 87, i32 94, i32 101, i32 108, i32 115, i32 122, i32 129, i32 136, i32 143, i32 150, i32 157, i32 164, i32 171, i32 178, i32 185, i32 192, i32 199, i32 206, i32 213, i32 220, i32 227, i32 234, i32 241, i32 248, i32 255, i32 262, i32 269, i32 276, i32 283, i32 290, i32 297, i32 304, i32 311, i32 318, i32 325, i32 332, i32 339, i32 346, i32 353, i32 360, i32 367, i32 374, i32 381, i32 388, i32 395, i32 402, i32 409, i32 416, i32 423, i32 430, i32 437, i32 444>
12335   %strided.vec4 = shufflevector <448 x i8> %wide.vec, <448 x i8> poison, <64 x i32> <i32 4, i32 11, i32 18, i32 25, i32 32, i32 39, i32 46, i32 53, i32 60, i32 67, i32 74, i32 81, i32 88, i32 95, i32 102, i32 109, i32 116, i32 123, i32 130, i32 137, i32 144, i32 151, i32 158, i32 165, i32 172, i32 179, i32 186, i32 193, i32 200, i32 207, i32 214, i32 221, i32 228, i32 235, i32 242, i32 249, i32 256, i32 263, i32 270, i32 277, i32 284, i32 291, i32 298, i32 305, i32 312, i32 319, i32 326, i32 333, i32 340, i32 347, i32 354, i32 361, i32 368, i32 375, i32 382, i32 389, i32 396, i32 403, i32 410, i32 417, i32 424, i32 431, i32 438, i32 445>
12336   %strided.vec5 = shufflevector <448 x i8> %wide.vec, <448 x i8> poison, <64 x i32> <i32 5, i32 12, i32 19, i32 26, i32 33, i32 40, i32 47, i32 54, i32 61, i32 68, i32 75, i32 82, i32 89, i32 96, i32 103, i32 110, i32 117, i32 124, i32 131, i32 138, i32 145, i32 152, i32 159, i32 166, i32 173, i32 180, i32 187, i32 194, i32 201, i32 208, i32 215, i32 222, i32 229, i32 236, i32 243, i32 250, i32 257, i32 264, i32 271, i32 278, i32 285, i32 292, i32 299, i32 306, i32 313, i32 320, i32 327, i32 334, i32 341, i32 348, i32 355, i32 362, i32 369, i32 376, i32 383, i32 390, i32 397, i32 404, i32 411, i32 418, i32 425, i32 432, i32 439, i32 446>
12337   %strided.vec6 = shufflevector <448 x i8> %wide.vec, <448 x i8> poison, <64 x i32> <i32 6, i32 13, i32 20, i32 27, i32 34, i32 41, i32 48, i32 55, i32 62, i32 69, i32 76, i32 83, i32 90, i32 97, i32 104, i32 111, i32 118, i32 125, i32 132, i32 139, i32 146, i32 153, i32 160, i32 167, i32 174, i32 181, i32 188, i32 195, i32 202, i32 209, i32 216, i32 223, i32 230, i32 237, i32 244, i32 251, i32 258, i32 265, i32 272, i32 279, i32 286, i32 293, i32 300, i32 307, i32 314, i32 321, i32 328, i32 335, i32 342, i32 349, i32 356, i32 363, i32 370, i32 377, i32 384, i32 391, i32 398, i32 405, i32 412, i32 419, i32 426, i32 433, i32 440, i32 447>
12338   store <64 x i8> %strided.vec0, ptr %out.vec0, align 64
12339   store <64 x i8> %strided.vec1, ptr %out.vec1, align 64
12340   store <64 x i8> %strided.vec2, ptr %out.vec2, align 64
12341   store <64 x i8> %strided.vec3, ptr %out.vec3, align 64
12342   store <64 x i8> %strided.vec4, ptr %out.vec4, align 64
12343   store <64 x i8> %strided.vec5, ptr %out.vec5, align 64
12344   store <64 x i8> %strided.vec6, ptr %out.vec6, align 64
12345   ret void
12347 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
12348 ; AVX1: {{.*}}
12349 ; AVX2: {{.*}}
12350 ; AVX512: {{.*}}
12351 ; AVX512-FAST: {{.*}}
12352 ; AVX512-SLOW: {{.*}}
12353 ; FALLBACK0: {{.*}}
12354 ; FALLBACK1: {{.*}}
12355 ; FALLBACK10: {{.*}}
12356 ; FALLBACK11: {{.*}}
12357 ; FALLBACK12: {{.*}}
12358 ; FALLBACK2: {{.*}}
12359 ; FALLBACK3: {{.*}}
12360 ; FALLBACK4: {{.*}}
12361 ; FALLBACK5: {{.*}}
12362 ; FALLBACK6: {{.*}}
12363 ; FALLBACK7: {{.*}}
12364 ; FALLBACK8: {{.*}}
12365 ; FALLBACK9: {{.*}}