Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / X86 / avx512-calling-conv.ll
blobb39b089faa2a5e4dc55d6b933000f37877461268
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=knl | FileCheck %s --check-prefix=ALL_X64 --check-prefix=KNL
3 ; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=skx | FileCheck %s --check-prefix=ALL_X64 --check-prefix=SKX
4 ; RUN: llc < %s -mtriple=i686-apple-darwin9 -mcpu=knl | FileCheck %s --check-prefix=KNL_X32
5 ; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=skx -fast-isel | FileCheck %s --check-prefix=FASTISEL
7 define <16 x i1> @test1() {
8 ; ALL_X64-LABEL: test1:
9 ; ALL_X64:       ## %bb.0:
10 ; ALL_X64-NEXT:    vxorps %xmm0, %xmm0, %xmm0
11 ; ALL_X64-NEXT:    retq
13 ; KNL_X32-LABEL: test1:
14 ; KNL_X32:       ## %bb.0:
15 ; KNL_X32-NEXT:    vxorps %xmm0, %xmm0, %xmm0
16 ; KNL_X32-NEXT:    retl
18 ; FASTISEL-LABEL: test1:
19 ; FASTISEL:       ## %bb.0:
20 ; FASTISEL-NEXT:    vxorps %xmm0, %xmm0, %xmm0
21 ; FASTISEL-NEXT:    retq
22   ret <16 x i1> zeroinitializer
25 define <16 x i1> @test2(<16 x i1>%a, <16 x i1>%b) {
26 ; ALL_X64-LABEL: test2:
27 ; ALL_X64:       ## %bb.0:
28 ; ALL_X64-NEXT:    vandps %xmm1, %xmm0, %xmm0
29 ; ALL_X64-NEXT:    retq
31 ; KNL_X32-LABEL: test2:
32 ; KNL_X32:       ## %bb.0:
33 ; KNL_X32-NEXT:    vandps %xmm1, %xmm0, %xmm0
34 ; KNL_X32-NEXT:    retl
36 ; FASTISEL-LABEL: test2:
37 ; FASTISEL:       ## %bb.0:
38 ; FASTISEL-NEXT:    vpsllw $7, %xmm1, %xmm1
39 ; FASTISEL-NEXT:    vpmovb2m %xmm1, %k0
40 ; FASTISEL-NEXT:    vpsllw $7, %xmm0, %xmm0
41 ; FASTISEL-NEXT:    vpmovb2m %xmm0, %k1
42 ; FASTISEL-NEXT:    kandw %k0, %k1, %k0
43 ; FASTISEL-NEXT:    vpmovm2b %k0, %xmm0
44 ; FASTISEL-NEXT:    retq
45   %c = and <16 x i1>%a, %b
46   ret <16 x i1> %c
49 define <8 x i1> @test3(<8 x i1>%a, <8 x i1>%b) {
50 ; ALL_X64-LABEL: test3:
51 ; ALL_X64:       ## %bb.0:
52 ; ALL_X64-NEXT:    vandps %xmm1, %xmm0, %xmm0
53 ; ALL_X64-NEXT:    retq
55 ; KNL_X32-LABEL: test3:
56 ; KNL_X32:       ## %bb.0:
57 ; KNL_X32-NEXT:    vandps %xmm1, %xmm0, %xmm0
58 ; KNL_X32-NEXT:    retl
60 ; FASTISEL-LABEL: test3:
61 ; FASTISEL:       ## %bb.0:
62 ; FASTISEL-NEXT:    vpsllw $15, %xmm1, %xmm1
63 ; FASTISEL-NEXT:    vpmovw2m %xmm1, %k0
64 ; FASTISEL-NEXT:    vpsllw $15, %xmm0, %xmm0
65 ; FASTISEL-NEXT:    vpmovw2m %xmm0, %k1
66 ; FASTISEL-NEXT:    kandb %k0, %k1, %k0
67 ; FASTISEL-NEXT:    vpmovm2w %k0, %xmm0
68 ; FASTISEL-NEXT:    retq
69   %c = and <8 x i1>%a, %b
70   ret <8 x i1> %c
73 define <4 x i1> @test4(<4 x i1>%a, <4 x i1>%b) {
74 ; ALL_X64-LABEL: test4:
75 ; ALL_X64:       ## %bb.0:
76 ; ALL_X64-NEXT:    vandps %xmm1, %xmm0, %xmm0
77 ; ALL_X64-NEXT:    retq
79 ; KNL_X32-LABEL: test4:
80 ; KNL_X32:       ## %bb.0:
81 ; KNL_X32-NEXT:    vandps %xmm1, %xmm0, %xmm0
82 ; KNL_X32-NEXT:    retl
84 ; FASTISEL-LABEL: test4:
85 ; FASTISEL:       ## %bb.0:
86 ; FASTISEL-NEXT:    vpslld $31, %xmm1, %xmm1
87 ; FASTISEL-NEXT:    vpmovd2m %xmm1, %k0
88 ; FASTISEL-NEXT:    vpslld $31, %xmm0, %xmm0
89 ; FASTISEL-NEXT:    vpmovd2m %xmm0, %k1
90 ; FASTISEL-NEXT:    kandw %k0, %k1, %k0
91 ; FASTISEL-NEXT:    vpmovm2d %k0, %xmm0
92 ; FASTISEL-NEXT:    retq
93   %c = and <4 x i1>%a, %b
94   ret <4 x i1> %c
97 declare <8 x i1> @func8xi1(<8 x i1> %a)
99 define <8 x i32> @test5(<8 x i32>%a, <8 x i32>%b) {
100 ; KNL-LABEL: test5:
101 ; KNL:       ## %bb.0:
102 ; KNL-NEXT:    pushq %rax
103 ; KNL-NEXT:    .cfi_def_cfa_offset 16
104 ; KNL-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
105 ; KNL-NEXT:    vpmovdw %zmm0, %ymm0
106 ; KNL-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $ymm0
107 ; KNL-NEXT:    callq _func8xi1
108 ; KNL-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
109 ; KNL-NEXT:    vpslld $31, %ymm0, %ymm0
110 ; KNL-NEXT:    vpsrad $31, %ymm0, %ymm0
111 ; KNL-NEXT:    popq %rax
112 ; KNL-NEXT:    retq
114 ; SKX-LABEL: test5:
115 ; SKX:       ## %bb.0:
116 ; SKX-NEXT:    pushq %rax
117 ; SKX-NEXT:    .cfi_def_cfa_offset 16
118 ; SKX-NEXT:    vpcmpgtd %ymm1, %ymm0, %k0
119 ; SKX-NEXT:    vpmovm2w %k0, %xmm0
120 ; SKX-NEXT:    vzeroupper
121 ; SKX-NEXT:    callq _func8xi1
122 ; SKX-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
123 ; SKX-NEXT:    vpslld $31, %ymm0, %ymm0
124 ; SKX-NEXT:    vpsrad $31, %ymm0, %ymm0
125 ; SKX-NEXT:    popq %rax
126 ; SKX-NEXT:    retq
128 ; KNL_X32-LABEL: test5:
129 ; KNL_X32:       ## %bb.0:
130 ; KNL_X32-NEXT:    subl $12, %esp
131 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
132 ; KNL_X32-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
133 ; KNL_X32-NEXT:    vpmovdw %zmm0, %ymm0
134 ; KNL_X32-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $ymm0
135 ; KNL_X32-NEXT:    calll _func8xi1
136 ; KNL_X32-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
137 ; KNL_X32-NEXT:    vpslld $31, %ymm0, %ymm0
138 ; KNL_X32-NEXT:    vpsrad $31, %ymm0, %ymm0
139 ; KNL_X32-NEXT:    addl $12, %esp
140 ; KNL_X32-NEXT:    retl
142 ; FASTISEL-LABEL: test5:
143 ; FASTISEL:       ## %bb.0:
144 ; FASTISEL-NEXT:    pushq %rax
145 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 16
146 ; FASTISEL-NEXT:    vpcmpgtd %ymm1, %ymm0, %k0
147 ; FASTISEL-NEXT:    vpmovm2w %k0, %xmm0
148 ; FASTISEL-NEXT:    vzeroupper
149 ; FASTISEL-NEXT:    callq _func8xi1
150 ; FASTISEL-NEXT:    vpsllw $15, %xmm0, %xmm0
151 ; FASTISEL-NEXT:    vpmovw2m %xmm0, %k0
152 ; FASTISEL-NEXT:    vpmovm2d %k0, %ymm0
153 ; FASTISEL-NEXT:    popq %rax
154 ; FASTISEL-NEXT:    retq
155   %cmpRes = icmp sgt <8 x i32>%a, %b
156   %resi = call <8 x i1> @func8xi1(<8 x i1> %cmpRes)
157   %res = sext <8 x i1>%resi to <8 x i32>
158   ret <8 x i32> %res
161 declare <16 x i1> @func16xi1(<16 x i1> %a)
163 define <16 x i32> @test6(<16 x i32>%a, <16 x i32>%b) {
164 ; KNL-LABEL: test6:
165 ; KNL:       ## %bb.0:
166 ; KNL-NEXT:    pushq %rax
167 ; KNL-NEXT:    .cfi_def_cfa_offset 16
168 ; KNL-NEXT:    vpcmpgtd %zmm1, %zmm0, %k1
169 ; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
170 ; KNL-NEXT:    vpmovdb %zmm0, %xmm0
171 ; KNL-NEXT:    callq _func16xi1
172 ; KNL-NEXT:    vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
173 ; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
174 ; KNL-NEXT:    vpsrad $31, %zmm0, %zmm0
175 ; KNL-NEXT:    popq %rax
176 ; KNL-NEXT:    retq
178 ; SKX-LABEL: test6:
179 ; SKX:       ## %bb.0:
180 ; SKX-NEXT:    pushq %rax
181 ; SKX-NEXT:    .cfi_def_cfa_offset 16
182 ; SKX-NEXT:    vpcmpgtd %zmm1, %zmm0, %k0
183 ; SKX-NEXT:    vpmovm2b %k0, %xmm0
184 ; SKX-NEXT:    vzeroupper
185 ; SKX-NEXT:    callq _func16xi1
186 ; SKX-NEXT:    vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
187 ; SKX-NEXT:    vpslld $31, %zmm0, %zmm0
188 ; SKX-NEXT:    vpsrad $31, %zmm0, %zmm0
189 ; SKX-NEXT:    popq %rax
190 ; SKX-NEXT:    retq
192 ; KNL_X32-LABEL: test6:
193 ; KNL_X32:       ## %bb.0:
194 ; KNL_X32-NEXT:    subl $12, %esp
195 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
196 ; KNL_X32-NEXT:    vpcmpgtd %zmm1, %zmm0, %k1
197 ; KNL_X32-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
198 ; KNL_X32-NEXT:    vpmovdb %zmm0, %xmm0
199 ; KNL_X32-NEXT:    calll _func16xi1
200 ; KNL_X32-NEXT:    vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
201 ; KNL_X32-NEXT:    vpslld $31, %zmm0, %zmm0
202 ; KNL_X32-NEXT:    vpsrad $31, %zmm0, %zmm0
203 ; KNL_X32-NEXT:    addl $12, %esp
204 ; KNL_X32-NEXT:    retl
206 ; FASTISEL-LABEL: test6:
207 ; FASTISEL:       ## %bb.0:
208 ; FASTISEL-NEXT:    pushq %rax
209 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 16
210 ; FASTISEL-NEXT:    vpcmpgtd %zmm1, %zmm0, %k0
211 ; FASTISEL-NEXT:    vpmovm2b %k0, %xmm0
212 ; FASTISEL-NEXT:    vzeroupper
213 ; FASTISEL-NEXT:    callq _func16xi1
214 ; FASTISEL-NEXT:    vpsllw $7, %xmm0, %xmm0
215 ; FASTISEL-NEXT:    vpmovb2m %xmm0, %k0
216 ; FASTISEL-NEXT:    vpmovm2d %k0, %zmm0
217 ; FASTISEL-NEXT:    popq %rax
218 ; FASTISEL-NEXT:    retq
219   %cmpRes = icmp sgt <16 x i32>%a, %b
220   %resi = call <16 x i1> @func16xi1(<16 x i1> %cmpRes)
221   %res = sext <16 x i1>%resi to <16 x i32>
222   ret <16 x i32> %res
225 declare <4 x i1> @func4xi1(<4 x i1> %a)
227 define <4 x i32> @test7(<4 x i32>%a, <4 x i32>%b) {
228 ; ALL_X64-LABEL: test7:
229 ; ALL_X64:       ## %bb.0:
230 ; ALL_X64-NEXT:    pushq %rax
231 ; ALL_X64-NEXT:    .cfi_def_cfa_offset 16
232 ; ALL_X64-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
233 ; ALL_X64-NEXT:    callq _func4xi1
234 ; ALL_X64-NEXT:    vpslld $31, %xmm0, %xmm0
235 ; ALL_X64-NEXT:    vpsrad $31, %xmm0, %xmm0
236 ; ALL_X64-NEXT:    popq %rax
237 ; ALL_X64-NEXT:    retq
239 ; KNL_X32-LABEL: test7:
240 ; KNL_X32:       ## %bb.0:
241 ; KNL_X32-NEXT:    subl $12, %esp
242 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
243 ; KNL_X32-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
244 ; KNL_X32-NEXT:    calll _func4xi1
245 ; KNL_X32-NEXT:    vpslld $31, %xmm0, %xmm0
246 ; KNL_X32-NEXT:    vpsrad $31, %xmm0, %xmm0
247 ; KNL_X32-NEXT:    addl $12, %esp
248 ; KNL_X32-NEXT:    retl
250 ; FASTISEL-LABEL: test7:
251 ; FASTISEL:       ## %bb.0:
252 ; FASTISEL-NEXT:    pushq %rax
253 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 16
254 ; FASTISEL-NEXT:    vpcmpgtd %xmm1, %xmm0, %k0
255 ; FASTISEL-NEXT:    vpmovm2d %k0, %xmm0
256 ; FASTISEL-NEXT:    callq _func4xi1
257 ; FASTISEL-NEXT:    vpslld $31, %xmm0, %xmm0
258 ; FASTISEL-NEXT:    vpmovd2m %xmm0, %k0
259 ; FASTISEL-NEXT:    vpmovm2d %k0, %xmm0
260 ; FASTISEL-NEXT:    popq %rax
261 ; FASTISEL-NEXT:    retq
262   %cmpRes = icmp sgt <4 x i32>%a, %b
263   %resi = call <4 x i1> @func4xi1(<4 x i1> %cmpRes)
264   %res = sext <4 x i1>%resi to <4 x i32>
265   ret <4 x i32> %res
268 define <8 x i1> @test7a(<8 x i32>%a, <8 x i32>%b) {
269 ; KNL-LABEL: test7a:
270 ; KNL:       ## %bb.0:
271 ; KNL-NEXT:    pushq %rax
272 ; KNL-NEXT:    .cfi_def_cfa_offset 16
273 ; KNL-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
274 ; KNL-NEXT:    vpmovdw %zmm0, %ymm0
275 ; KNL-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $ymm0
276 ; KNL-NEXT:    callq _func8xi1
277 ; KNL-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
278 ; KNL-NEXT:    popq %rax
279 ; KNL-NEXT:    retq
281 ; SKX-LABEL: test7a:
282 ; SKX:       ## %bb.0:
283 ; SKX-NEXT:    pushq %rax
284 ; SKX-NEXT:    .cfi_def_cfa_offset 16
285 ; SKX-NEXT:    vpcmpgtd %ymm1, %ymm0, %k0
286 ; SKX-NEXT:    vpmovm2w %k0, %xmm0
287 ; SKX-NEXT:    vzeroupper
288 ; SKX-NEXT:    callq _func8xi1
289 ; SKX-NEXT:    vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
290 ; SKX-NEXT:    popq %rax
291 ; SKX-NEXT:    retq
293 ; KNL_X32-LABEL: test7a:
294 ; KNL_X32:       ## %bb.0:
295 ; KNL_X32-NEXT:    subl $12, %esp
296 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
297 ; KNL_X32-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
298 ; KNL_X32-NEXT:    vpmovdw %zmm0, %ymm0
299 ; KNL_X32-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $ymm0
300 ; KNL_X32-NEXT:    calll _func8xi1
301 ; KNL_X32-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0
302 ; KNL_X32-NEXT:    addl $12, %esp
303 ; KNL_X32-NEXT:    retl
305 ; FASTISEL-LABEL: test7a:
306 ; FASTISEL:       ## %bb.0:
307 ; FASTISEL-NEXT:    pushq %rax
308 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 16
309 ; FASTISEL-NEXT:    vpcmpgtd %ymm1, %ymm0, %k0
310 ; FASTISEL-NEXT:    vpmovm2w %k0, %xmm0
311 ; FASTISEL-NEXT:    vzeroupper
312 ; FASTISEL-NEXT:    callq _func8xi1
313 ; FASTISEL-NEXT:    vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
314 ; FASTISEL-NEXT:    popq %rax
315 ; FASTISEL-NEXT:    retq
316   %cmpRes = icmp sgt <8 x i32>%a, %b
317   %resi = call <8 x i1> @func8xi1(<8 x i1> %cmpRes)
318   %res = and <8 x i1>%resi,  <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false>
319   ret <8 x i1> %res
322 define <16 x i8> @test8(<16 x i8> %a1, <16 x i8> %a2, i1 %cond) {
323 ; ALL_X64-LABEL: test8:
324 ; ALL_X64:       ## %bb.0:
325 ; ALL_X64-NEXT:    testb $1, %dil
326 ; ALL_X64-NEXT:    jne LBB8_2
327 ; ALL_X64-NEXT:  ## %bb.1:
328 ; ALL_X64-NEXT:    vmovaps %xmm1, %xmm0
329 ; ALL_X64-NEXT:  LBB8_2:
330 ; ALL_X64-NEXT:    retq
332 ; KNL_X32-LABEL: test8:
333 ; KNL_X32:       ## %bb.0:
334 ; KNL_X32-NEXT:    testb $1, {{[0-9]+}}(%esp)
335 ; KNL_X32-NEXT:    jne LBB8_2
336 ; KNL_X32-NEXT:  ## %bb.1:
337 ; KNL_X32-NEXT:    vmovaps %xmm1, %xmm0
338 ; KNL_X32-NEXT:  LBB8_2:
339 ; KNL_X32-NEXT:    retl
341 ; FASTISEL-LABEL: test8:
342 ; FASTISEL:       ## %bb.0:
343 ; FASTISEL-NEXT:    testb $1, %dil
344 ; FASTISEL-NEXT:    jne LBB8_2
345 ; FASTISEL-NEXT:  ## %bb.1:
346 ; FASTISEL-NEXT:    vmovaps %xmm1, %xmm0
347 ; FASTISEL-NEXT:  LBB8_2:
348 ; FASTISEL-NEXT:    retq
349   %res = select i1 %cond, <16 x i8> %a1, <16 x i8> %a2
350   ret <16 x i8> %res
353 define i1 @test9(double %a, double %b) {
354 ; ALL_X64-LABEL: test9:
355 ; ALL_X64:       ## %bb.0:
356 ; ALL_X64-NEXT:    vucomisd %xmm0, %xmm1
357 ; ALL_X64-NEXT:    setb %al
358 ; ALL_X64-NEXT:    retq
360 ; KNL_X32-LABEL: test9:
361 ; KNL_X32:       ## %bb.0:
362 ; KNL_X32-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero
363 ; KNL_X32-NEXT:    vucomisd {{[0-9]+}}(%esp), %xmm0
364 ; KNL_X32-NEXT:    setb %al
365 ; KNL_X32-NEXT:    retl
367 ; FASTISEL-LABEL: test9:
368 ; FASTISEL:       ## %bb.0:
369 ; FASTISEL-NEXT:    vucomisd %xmm0, %xmm1
370 ; FASTISEL-NEXT:    setb %al
371 ; FASTISEL-NEXT:    retq
372   %c = fcmp ugt double %a, %b
373   ret i1 %c
376 define i32 @test10(i32 %a, i32 %b, i1 %cond) {
377 ; ALL_X64-LABEL: test10:
378 ; ALL_X64:       ## %bb.0:
379 ; ALL_X64-NEXT:    movl %edi, %eax
380 ; ALL_X64-NEXT:    testb $1, %dl
381 ; ALL_X64-NEXT:    cmovel %esi, %eax
382 ; ALL_X64-NEXT:    retq
384 ; KNL_X32-LABEL: test10:
385 ; KNL_X32:       ## %bb.0:
386 ; KNL_X32-NEXT:    testb $1, {{[0-9]+}}(%esp)
387 ; KNL_X32-NEXT:    leal {{[0-9]+}}(%esp), %eax
388 ; KNL_X32-NEXT:    leal {{[0-9]+}}(%esp), %ecx
389 ; KNL_X32-NEXT:    cmovnel %eax, %ecx
390 ; KNL_X32-NEXT:    movl (%ecx), %eax
391 ; KNL_X32-NEXT:    retl
393 ; FASTISEL-LABEL: test10:
394 ; FASTISEL:       ## %bb.0:
395 ; FASTISEL-NEXT:    movl %edi, %eax
396 ; FASTISEL-NEXT:    testb $1, %dl
397 ; FASTISEL-NEXT:    cmovel %esi, %eax
398 ; FASTISEL-NEXT:    retq
399   %c = select i1 %cond, i32 %a, i32 %b
400   ret i32 %c
403 define i1 @test11(i32 %a, i32 %b) {
404 ; ALL_X64-LABEL: test11:
405 ; ALL_X64:       ## %bb.0:
406 ; ALL_X64-NEXT:    cmpl %esi, %edi
407 ; ALL_X64-NEXT:    setg %al
408 ; ALL_X64-NEXT:    retq
410 ; KNL_X32-LABEL: test11:
411 ; KNL_X32:       ## %bb.0:
412 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
413 ; KNL_X32-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
414 ; KNL_X32-NEXT:    setg %al
415 ; KNL_X32-NEXT:    retl
417 ; FASTISEL-LABEL: test11:
418 ; FASTISEL:       ## %bb.0:
419 ; FASTISEL-NEXT:    cmpl %esi, %edi
420 ; FASTISEL-NEXT:    setg %al
421 ; FASTISEL-NEXT:    retq
422   %c = icmp sgt i32 %a, %b
423   ret i1 %c
426 define i32 @test12(i32 %a1, i32 %a2, i32 %b1) {
427 ; ALL_X64-LABEL: test12:
428 ; ALL_X64:       ## %bb.0:
429 ; ALL_X64-NEXT:    pushq %rbp
430 ; ALL_X64-NEXT:    .cfi_def_cfa_offset 16
431 ; ALL_X64-NEXT:    pushq %r14
432 ; ALL_X64-NEXT:    .cfi_def_cfa_offset 24
433 ; ALL_X64-NEXT:    pushq %rbx
434 ; ALL_X64-NEXT:    .cfi_def_cfa_offset 32
435 ; ALL_X64-NEXT:    .cfi_offset %rbx, -32
436 ; ALL_X64-NEXT:    .cfi_offset %r14, -24
437 ; ALL_X64-NEXT:    .cfi_offset %rbp, -16
438 ; ALL_X64-NEXT:    movl %esi, %ebx
439 ; ALL_X64-NEXT:    movl %edi, %ebp
440 ; ALL_X64-NEXT:    movl %edx, %esi
441 ; ALL_X64-NEXT:    callq _test11
442 ; ALL_X64-NEXT:    movzbl %al, %r14d
443 ; ALL_X64-NEXT:    movl %ebp, %edi
444 ; ALL_X64-NEXT:    movl %ebx, %esi
445 ; ALL_X64-NEXT:    movl %r14d, %edx
446 ; ALL_X64-NEXT:    callq _test10
447 ; ALL_X64-NEXT:    xorl %ecx, %ecx
448 ; ALL_X64-NEXT:    testb $1, %r14b
449 ; ALL_X64-NEXT:    cmovel %ecx, %eax
450 ; ALL_X64-NEXT:    popq %rbx
451 ; ALL_X64-NEXT:    popq %r14
452 ; ALL_X64-NEXT:    popq %rbp
453 ; ALL_X64-NEXT:    retq
455 ; KNL_X32-LABEL: test12:
456 ; KNL_X32:       ## %bb.0:
457 ; KNL_X32-NEXT:    pushl %ebx
458 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
459 ; KNL_X32-NEXT:    pushl %edi
460 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 12
461 ; KNL_X32-NEXT:    pushl %esi
462 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
463 ; KNL_X32-NEXT:    subl $16, %esp
464 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 32
465 ; KNL_X32-NEXT:    .cfi_offset %esi, -16
466 ; KNL_X32-NEXT:    .cfi_offset %edi, -12
467 ; KNL_X32-NEXT:    .cfi_offset %ebx, -8
468 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
469 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %edi
470 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
471 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
472 ; KNL_X32-NEXT:    movl %edi, (%esp)
473 ; KNL_X32-NEXT:    calll _test11
474 ; KNL_X32-NEXT:    movl %eax, %ebx
475 ; KNL_X32-NEXT:    movzbl %al, %eax
476 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
477 ; KNL_X32-NEXT:    movl %esi, {{[0-9]+}}(%esp)
478 ; KNL_X32-NEXT:    movl %edi, (%esp)
479 ; KNL_X32-NEXT:    calll _test10
480 ; KNL_X32-NEXT:    xorl %ecx, %ecx
481 ; KNL_X32-NEXT:    testb $1, %bl
482 ; KNL_X32-NEXT:    cmovel %ecx, %eax
483 ; KNL_X32-NEXT:    addl $16, %esp
484 ; KNL_X32-NEXT:    popl %esi
485 ; KNL_X32-NEXT:    popl %edi
486 ; KNL_X32-NEXT:    popl %ebx
487 ; KNL_X32-NEXT:    retl
489 ; FASTISEL-LABEL: test12:
490 ; FASTISEL:       ## %bb.0:
491 ; FASTISEL-NEXT:    pushq %rbp
492 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 16
493 ; FASTISEL-NEXT:    pushq %r14
494 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 24
495 ; FASTISEL-NEXT:    pushq %rbx
496 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 32
497 ; FASTISEL-NEXT:    .cfi_offset %rbx, -32
498 ; FASTISEL-NEXT:    .cfi_offset %r14, -24
499 ; FASTISEL-NEXT:    .cfi_offset %rbp, -16
500 ; FASTISEL-NEXT:    movl %esi, %ebx
501 ; FASTISEL-NEXT:    movl %edi, %ebp
502 ; FASTISEL-NEXT:    movl %edx, %esi
503 ; FASTISEL-NEXT:    callq _test11
504 ; FASTISEL-NEXT:    movzbl %al, %r14d
505 ; FASTISEL-NEXT:    movl %ebp, %edi
506 ; FASTISEL-NEXT:    movl %ebx, %esi
507 ; FASTISEL-NEXT:    movl %r14d, %edx
508 ; FASTISEL-NEXT:    callq _test10
509 ; FASTISEL-NEXT:    xorl %ecx, %ecx
510 ; FASTISEL-NEXT:    testb $1, %r14b
511 ; FASTISEL-NEXT:    cmovel %ecx, %eax
512 ; FASTISEL-NEXT:    popq %rbx
513 ; FASTISEL-NEXT:    popq %r14
514 ; FASTISEL-NEXT:    popq %rbp
515 ; FASTISEL-NEXT:    retq
516   %cond = call i1 @test11(i32 %a1, i32 %b1)
517   %res = call i32 @test10(i32 %a1, i32 %a2, i1 %cond)
518   %res1 = select i1 %cond, i32 %res, i32 0
519   ret i32 %res1
522 define <1 x i1> @test13(ptr %foo) {
523 ; KNL-LABEL: test13:
524 ; KNL:       ## %bb.0:
525 ; KNL-NEXT:    movzbl (%rdi), %eax
526 ; KNL-NEXT:    ## kill: def $al killed $al killed $eax
527 ; KNL-NEXT:    retq
529 ; SKX-LABEL: test13:
530 ; SKX:       ## %bb.0:
531 ; SKX-NEXT:    kmovb (%rdi), %k0
532 ; SKX-NEXT:    kmovd %k0, %eax
533 ; SKX-NEXT:    ## kill: def $al killed $al killed $eax
534 ; SKX-NEXT:    retq
536 ; KNL_X32-LABEL: test13:
537 ; KNL_X32:       ## %bb.0:
538 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
539 ; KNL_X32-NEXT:    movzbl (%eax), %eax
540 ; KNL_X32-NEXT:    ## kill: def $al killed $al killed $eax
541 ; KNL_X32-NEXT:    retl
543 ; FASTISEL-LABEL: test13:
544 ; FASTISEL:       ## %bb.0:
545 ; FASTISEL-NEXT:    kmovb (%rdi), %k0
546 ; FASTISEL-NEXT:    kmovd %k0, %eax
547 ; FASTISEL-NEXT:    ## kill: def $al killed $al killed $eax
548 ; FASTISEL-NEXT:    retq
549   %bar = load <1 x i1>, ptr %foo
550   ret <1 x i1> %bar
553 define void @test14(ptr %x) {
554 ; KNL-LABEL: test14:
555 ; KNL:       ## %bb.0:
556 ; KNL-NEXT:    pushq %rbx
557 ; KNL-NEXT:    .cfi_def_cfa_offset 16
558 ; KNL-NEXT:    .cfi_offset %rbx, -16
559 ; KNL-NEXT:    movq %rdi, %rbx
560 ; KNL-NEXT:    vmovaps (%rdi), %zmm0
561 ; KNL-NEXT:    callq _test14_callee
562 ; KNL-NEXT:    vmovaps %zmm0, (%rbx)
563 ; KNL-NEXT:    popq %rbx
564 ; KNL-NEXT:    retq
566 ; SKX-LABEL: test14:
567 ; SKX:       ## %bb.0:
568 ; SKX-NEXT:    pushq %rbx
569 ; SKX-NEXT:    .cfi_def_cfa_offset 16
570 ; SKX-NEXT:    .cfi_offset %rbx, -16
571 ; SKX-NEXT:    movq %rdi, %rbx
572 ; SKX-NEXT:    vmovaps (%rdi), %zmm0
573 ; SKX-NEXT:    callq _test14_callee
574 ; SKX-NEXT:    vmovaps %zmm0, (%rbx)
575 ; SKX-NEXT:    popq %rbx
576 ; SKX-NEXT:    vzeroupper
577 ; SKX-NEXT:    retq
579 ; KNL_X32-LABEL: test14:
580 ; KNL_X32:       ## %bb.0:
581 ; KNL_X32-NEXT:    pushl %esi
582 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
583 ; KNL_X32-NEXT:    subl $8, %esp
584 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
585 ; KNL_X32-NEXT:    .cfi_offset %esi, -8
586 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
587 ; KNL_X32-NEXT:    vmovaps (%esi), %zmm0
588 ; KNL_X32-NEXT:    calll _test14_callee
589 ; KNL_X32-NEXT:    vmovaps %zmm0, (%esi)
590 ; KNL_X32-NEXT:    addl $8, %esp
591 ; KNL_X32-NEXT:    popl %esi
592 ; KNL_X32-NEXT:    retl
594 ; FASTISEL-LABEL: test14:
595 ; FASTISEL:       ## %bb.0:
596 ; FASTISEL-NEXT:    pushq %rbx
597 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 16
598 ; FASTISEL-NEXT:    .cfi_offset %rbx, -16
599 ; FASTISEL-NEXT:    movq %rdi, %rbx
600 ; FASTISEL-NEXT:    vmovaps (%rdi), %zmm0
601 ; FASTISEL-NEXT:    callq _test14_callee
602 ; FASTISEL-NEXT:    vmovaps %zmm0, (%rbx)
603 ; FASTISEL-NEXT:    popq %rbx
604 ; FASTISEL-NEXT:    vzeroupper
605 ; FASTISEL-NEXT:    retq
606   %a = load <32 x i16>, ptr %x
607   %b = call <32 x i16> @test14_callee(<32 x i16> %a)
608   store <32 x i16> %b, ptr %x
609   ret void
611 declare <32 x i16> @test14_callee(<32 x i16>)
613 define void @test15(ptr %x) {
614 ; KNL-LABEL: test15:
615 ; KNL:       ## %bb.0:
616 ; KNL-NEXT:    pushq %rbx
617 ; KNL-NEXT:    .cfi_def_cfa_offset 16
618 ; KNL-NEXT:    .cfi_offset %rbx, -16
619 ; KNL-NEXT:    movq %rdi, %rbx
620 ; KNL-NEXT:    vmovaps (%rdi), %zmm0
621 ; KNL-NEXT:    callq _test15_callee
622 ; KNL-NEXT:    vmovaps %zmm0, (%rbx)
623 ; KNL-NEXT:    popq %rbx
624 ; KNL-NEXT:    retq
626 ; SKX-LABEL: test15:
627 ; SKX:       ## %bb.0:
628 ; SKX-NEXT:    pushq %rbx
629 ; SKX-NEXT:    .cfi_def_cfa_offset 16
630 ; SKX-NEXT:    .cfi_offset %rbx, -16
631 ; SKX-NEXT:    movq %rdi, %rbx
632 ; SKX-NEXT:    vmovaps (%rdi), %zmm0
633 ; SKX-NEXT:    callq _test15_callee
634 ; SKX-NEXT:    vmovaps %zmm0, (%rbx)
635 ; SKX-NEXT:    popq %rbx
636 ; SKX-NEXT:    vzeroupper
637 ; SKX-NEXT:    retq
639 ; KNL_X32-LABEL: test15:
640 ; KNL_X32:       ## %bb.0:
641 ; KNL_X32-NEXT:    pushl %esi
642 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
643 ; KNL_X32-NEXT:    subl $8, %esp
644 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
645 ; KNL_X32-NEXT:    .cfi_offset %esi, -8
646 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
647 ; KNL_X32-NEXT:    vmovaps (%esi), %zmm0
648 ; KNL_X32-NEXT:    calll _test15_callee
649 ; KNL_X32-NEXT:    vmovaps %zmm0, (%esi)
650 ; KNL_X32-NEXT:    addl $8, %esp
651 ; KNL_X32-NEXT:    popl %esi
652 ; KNL_X32-NEXT:    retl
654 ; FASTISEL-LABEL: test15:
655 ; FASTISEL:       ## %bb.0:
656 ; FASTISEL-NEXT:    pushq %rbx
657 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 16
658 ; FASTISEL-NEXT:    .cfi_offset %rbx, -16
659 ; FASTISEL-NEXT:    movq %rdi, %rbx
660 ; FASTISEL-NEXT:    vmovaps (%rdi), %zmm0
661 ; FASTISEL-NEXT:    callq _test15_callee
662 ; FASTISEL-NEXT:    vmovaps %zmm0, (%rbx)
663 ; FASTISEL-NEXT:    popq %rbx
664 ; FASTISEL-NEXT:    vzeroupper
665 ; FASTISEL-NEXT:    retq
666   %a = load <64 x i8>, ptr %x
667   %b = call <64 x i8> @test15_callee(<64 x i8> %a)
668   store <64 x i8> %b, ptr %x
669   ret void
671 declare <64 x i8> @test15_callee(<64 x i8>)
673 define <17 x i1> @test16(<17 x i1> %a, <17 x i1> %b) nounwind {
674 ; KNL-LABEL: test16:
675 ; KNL:       ## %bb.0:
676 ; KNL-NEXT:    pushq %rbp
677 ; KNL-NEXT:    pushq %r15
678 ; KNL-NEXT:    pushq %r14
679 ; KNL-NEXT:    pushq %r13
680 ; KNL-NEXT:    pushq %r12
681 ; KNL-NEXT:    pushq %rbx
682 ; KNL-NEXT:    xorl %r10d, %r10d
683 ; KNL-NEXT:    testb $1, {{[0-9]+}}(%rsp)
684 ; KNL-NEXT:    movl $65535, %eax ## imm = 0xFFFF
685 ; KNL-NEXT:    movl $0, %r11d
686 ; KNL-NEXT:    cmovnel %eax, %r11d
687 ; KNL-NEXT:    testb $1, {{[0-9]+}}(%rsp)
688 ; KNL-NEXT:    cmovnel %eax, %r10d
689 ; KNL-NEXT:    movq %rdi, %rax
690 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
691 ; KNL-NEXT:    andl $1, %edi
692 ; KNL-NEXT:    kmovw %edi, %k0
693 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
694 ; KNL-NEXT:    kmovw %edi, %k1
695 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
696 ; KNL-NEXT:    kshiftrw $14, %k1, %k1
697 ; KNL-NEXT:    korw %k1, %k0, %k0
698 ; KNL-NEXT:    movw $-5, %di
699 ; KNL-NEXT:    kmovw %edi, %k1
700 ; KNL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
701 ; KNL-NEXT:    kandw %k1, %k0, %k0
702 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
703 ; KNL-NEXT:    kmovw %edi, %k1
704 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
705 ; KNL-NEXT:    kshiftrw $13, %k1, %k1
706 ; KNL-NEXT:    korw %k1, %k0, %k0
707 ; KNL-NEXT:    movw $-9, %di
708 ; KNL-NEXT:    kmovw %edi, %k1
709 ; KNL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
710 ; KNL-NEXT:    kandw %k1, %k0, %k0
711 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
712 ; KNL-NEXT:    kmovw %edi, %k1
713 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
714 ; KNL-NEXT:    kshiftrw $12, %k1, %k1
715 ; KNL-NEXT:    korw %k1, %k0, %k0
716 ; KNL-NEXT:    movw $-17, %di
717 ; KNL-NEXT:    kmovw %edi, %k1
718 ; KNL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
719 ; KNL-NEXT:    kandw %k1, %k0, %k0
720 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
721 ; KNL-NEXT:    kmovw %edi, %k1
722 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
723 ; KNL-NEXT:    kshiftrw $11, %k1, %k1
724 ; KNL-NEXT:    korw %k1, %k0, %k0
725 ; KNL-NEXT:    movw $-33, %di
726 ; KNL-NEXT:    kmovw %edi, %k1
727 ; KNL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
728 ; KNL-NEXT:    kandw %k1, %k0, %k0
729 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
730 ; KNL-NEXT:    kmovw %edi, %k1
731 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
732 ; KNL-NEXT:    kshiftrw $10, %k1, %k1
733 ; KNL-NEXT:    korw %k1, %k0, %k0
734 ; KNL-NEXT:    movw $-65, %di
735 ; KNL-NEXT:    kmovw %edi, %k1
736 ; KNL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
737 ; KNL-NEXT:    kandw %k1, %k0, %k0
738 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
739 ; KNL-NEXT:    kmovw %edi, %k1
740 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
741 ; KNL-NEXT:    kshiftrw $9, %k1, %k1
742 ; KNL-NEXT:    korw %k1, %k0, %k0
743 ; KNL-NEXT:    movw $-129, %di
744 ; KNL-NEXT:    kmovw %edi, %k1
745 ; KNL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
746 ; KNL-NEXT:    kandw %k1, %k0, %k0
747 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
748 ; KNL-NEXT:    kmovw %edi, %k1
749 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
750 ; KNL-NEXT:    kshiftrw $8, %k1, %k1
751 ; KNL-NEXT:    korw %k1, %k0, %k0
752 ; KNL-NEXT:    movw $-257, %di ## imm = 0xFEFF
753 ; KNL-NEXT:    kmovw %edi, %k1
754 ; KNL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
755 ; KNL-NEXT:    kandw %k1, %k0, %k0
756 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
757 ; KNL-NEXT:    kmovw %edi, %k1
758 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
759 ; KNL-NEXT:    kshiftrw $7, %k1, %k1
760 ; KNL-NEXT:    korw %k1, %k0, %k0
761 ; KNL-NEXT:    movw $-513, %di ## imm = 0xFDFF
762 ; KNL-NEXT:    kmovw %edi, %k7
763 ; KNL-NEXT:    kandw %k7, %k0, %k0
764 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
765 ; KNL-NEXT:    kmovw %edi, %k1
766 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
767 ; KNL-NEXT:    kshiftrw $6, %k1, %k1
768 ; KNL-NEXT:    korw %k1, %k0, %k0
769 ; KNL-NEXT:    movw $-1025, %di ## imm = 0xFBFF
770 ; KNL-NEXT:    kmovw %edi, %k4
771 ; KNL-NEXT:    kandw %k4, %k0, %k0
772 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
773 ; KNL-NEXT:    kmovw %edi, %k1
774 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
775 ; KNL-NEXT:    kshiftrw $5, %k1, %k1
776 ; KNL-NEXT:    korw %k1, %k0, %k0
777 ; KNL-NEXT:    movw $-2049, %di ## imm = 0xF7FF
778 ; KNL-NEXT:    kmovw %edi, %k3
779 ; KNL-NEXT:    kandw %k3, %k0, %k0
780 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
781 ; KNL-NEXT:    kmovw %edi, %k1
782 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
783 ; KNL-NEXT:    kshiftrw $4, %k1, %k1
784 ; KNL-NEXT:    korw %k1, %k0, %k0
785 ; KNL-NEXT:    movw $-4097, %di ## imm = 0xEFFF
786 ; KNL-NEXT:    kmovw %edi, %k2
787 ; KNL-NEXT:    kandw %k2, %k0, %k0
788 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
789 ; KNL-NEXT:    kmovw %edi, %k1
790 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
791 ; KNL-NEXT:    kshiftrw $3, %k1, %k1
792 ; KNL-NEXT:    korw %k1, %k0, %k0
793 ; KNL-NEXT:    movw $-8193, %di ## imm = 0xDFFF
794 ; KNL-NEXT:    kmovw %edi, %k1
795 ; KNL-NEXT:    kandw %k1, %k0, %k0
796 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
797 ; KNL-NEXT:    kmovw %edi, %k5
798 ; KNL-NEXT:    kshiftlw $15, %k5, %k5
799 ; KNL-NEXT:    kshiftrw $2, %k5, %k5
800 ; KNL-NEXT:    korw %k5, %k0, %k5
801 ; KNL-NEXT:    movw $-16385, %di ## imm = 0xBFFF
802 ; KNL-NEXT:    kmovw %edi, %k0
803 ; KNL-NEXT:    kandw %k0, %k5, %k5
804 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
805 ; KNL-NEXT:    kmovw %edi, %k6
806 ; KNL-NEXT:    kshiftlw $14, %k6, %k6
807 ; KNL-NEXT:    korw %k6, %k5, %k5
808 ; KNL-NEXT:    kshiftlw $1, %k5, %k5
809 ; KNL-NEXT:    kshiftrw $1, %k5, %k5
810 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
811 ; KNL-NEXT:    kmovw %edi, %k6
812 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
813 ; KNL-NEXT:    korw %k6, %k5, %k5
814 ; KNL-NEXT:    kmovw %k5, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
815 ; KNL-NEXT:    andl $1, %esi
816 ; KNL-NEXT:    kmovw %edx, %k5
817 ; KNL-NEXT:    kshiftlw $15, %k5, %k5
818 ; KNL-NEXT:    kshiftrw $14, %k5, %k5
819 ; KNL-NEXT:    kmovw %esi, %k6
820 ; KNL-NEXT:    korw %k5, %k6, %k5
821 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
822 ; KNL-NEXT:    kandw %k6, %k5, %k5
823 ; KNL-NEXT:    kmovw %ecx, %k6
824 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
825 ; KNL-NEXT:    kshiftrw $13, %k6, %k6
826 ; KNL-NEXT:    korw %k6, %k5, %k5
827 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
828 ; KNL-NEXT:    kandw %k6, %k5, %k5
829 ; KNL-NEXT:    kmovw %r8d, %k6
830 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
831 ; KNL-NEXT:    kshiftrw $12, %k6, %k6
832 ; KNL-NEXT:    korw %k6, %k5, %k5
833 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
834 ; KNL-NEXT:    kandw %k6, %k5, %k5
835 ; KNL-NEXT:    kmovw %r9d, %k6
836 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
837 ; KNL-NEXT:    kshiftrw $11, %k6, %k6
838 ; KNL-NEXT:    korw %k6, %k5, %k5
839 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
840 ; KNL-NEXT:    kandw %k6, %k5, %k5
841 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
842 ; KNL-NEXT:    kmovw %ecx, %k6
843 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
844 ; KNL-NEXT:    kshiftrw $10, %k6, %k6
845 ; KNL-NEXT:    korw %k6, %k5, %k5
846 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
847 ; KNL-NEXT:    kandw %k6, %k5, %k5
848 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
849 ; KNL-NEXT:    kmovw %ecx, %k6
850 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
851 ; KNL-NEXT:    kshiftrw $9, %k6, %k6
852 ; KNL-NEXT:    korw %k6, %k5, %k5
853 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
854 ; KNL-NEXT:    kandw %k6, %k5, %k5
855 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
856 ; KNL-NEXT:    kmovw %ecx, %k6
857 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
858 ; KNL-NEXT:    kshiftrw $8, %k6, %k6
859 ; KNL-NEXT:    korw %k6, %k5, %k5
860 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
861 ; KNL-NEXT:    kandw %k6, %k5, %k5
862 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
863 ; KNL-NEXT:    kmovw %ecx, %k6
864 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
865 ; KNL-NEXT:    kshiftrw $7, %k6, %k6
866 ; KNL-NEXT:    korw %k6, %k5, %k5
867 ; KNL-NEXT:    kandw %k7, %k5, %k5
868 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
869 ; KNL-NEXT:    kmovw %ecx, %k6
870 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
871 ; KNL-NEXT:    kshiftrw $6, %k6, %k6
872 ; KNL-NEXT:    korw %k6, %k5, %k5
873 ; KNL-NEXT:    kandw %k4, %k5, %k4
874 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
875 ; KNL-NEXT:    kmovw %ecx, %k5
876 ; KNL-NEXT:    kshiftlw $15, %k5, %k5
877 ; KNL-NEXT:    kshiftrw $5, %k5, %k5
878 ; KNL-NEXT:    korw %k5, %k4, %k4
879 ; KNL-NEXT:    kandw %k3, %k4, %k3
880 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
881 ; KNL-NEXT:    kmovw %ecx, %k4
882 ; KNL-NEXT:    kshiftlw $15, %k4, %k4
883 ; KNL-NEXT:    kshiftrw $4, %k4, %k4
884 ; KNL-NEXT:    korw %k4, %k3, %k3
885 ; KNL-NEXT:    kandw %k2, %k3, %k2
886 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
887 ; KNL-NEXT:    kmovw %ecx, %k3
888 ; KNL-NEXT:    kshiftlw $15, %k3, %k3
889 ; KNL-NEXT:    kshiftrw $3, %k3, %k3
890 ; KNL-NEXT:    korw %k3, %k2, %k2
891 ; KNL-NEXT:    kandw %k1, %k2, %k1
892 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
893 ; KNL-NEXT:    kmovw %ecx, %k2
894 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
895 ; KNL-NEXT:    kshiftrw $2, %k2, %k2
896 ; KNL-NEXT:    korw %k2, %k1, %k1
897 ; KNL-NEXT:    kandw %k0, %k1, %k0
898 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
899 ; KNL-NEXT:    kmovw %ecx, %k1
900 ; KNL-NEXT:    kshiftlw $14, %k1, %k1
901 ; KNL-NEXT:    korw %k1, %k0, %k0
902 ; KNL-NEXT:    kshiftlw $1, %k0, %k0
903 ; KNL-NEXT:    kshiftrw $1, %k0, %k0
904 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
905 ; KNL-NEXT:    kmovw %ecx, %k1
906 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
907 ; KNL-NEXT:    korw %k1, %k0, %k0
908 ; KNL-NEXT:    kmovw %r11d, %k1
909 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k2 ## 2-byte Reload
910 ; KNL-NEXT:    kandw %k2, %k0, %k0
911 ; KNL-NEXT:    kmovw %r10d, %k2
912 ; KNL-NEXT:    kandw %k1, %k2, %k1
913 ; KNL-NEXT:    kmovw %k1, %edx
914 ; KNL-NEXT:    kshiftrw $1, %k0, %k1
915 ; KNL-NEXT:    kmovw %k1, %r9d
916 ; KNL-NEXT:    kshiftrw $2, %k0, %k1
917 ; KNL-NEXT:    kmovw %k1, %r8d
918 ; KNL-NEXT:    kshiftrw $3, %k0, %k1
919 ; KNL-NEXT:    kmovw %k1, %esi
920 ; KNL-NEXT:    kshiftrw $4, %k0, %k1
921 ; KNL-NEXT:    kmovw %k1, %edi
922 ; KNL-NEXT:    kshiftrw $5, %k0, %k1
923 ; KNL-NEXT:    kmovw %k1, %ecx
924 ; KNL-NEXT:    kshiftrw $6, %k0, %k1
925 ; KNL-NEXT:    kmovw %k1, %r10d
926 ; KNL-NEXT:    kshiftrw $7, %k0, %k1
927 ; KNL-NEXT:    kmovw %k1, %ebx
928 ; KNL-NEXT:    kshiftrw $8, %k0, %k1
929 ; KNL-NEXT:    kmovw %k1, %ebp
930 ; KNL-NEXT:    kshiftrw $9, %k0, %k1
931 ; KNL-NEXT:    kmovw %k1, %r14d
932 ; KNL-NEXT:    kshiftrw $10, %k0, %k1
933 ; KNL-NEXT:    kmovw %k1, %r11d
934 ; KNL-NEXT:    kshiftrw $11, %k0, %k1
935 ; KNL-NEXT:    kmovw %k1, %r15d
936 ; KNL-NEXT:    kshiftrw $12, %k0, %k1
937 ; KNL-NEXT:    kmovw %k1, %r12d
938 ; KNL-NEXT:    kshiftrw $13, %k0, %k1
939 ; KNL-NEXT:    kmovw %k1, %r13d
940 ; KNL-NEXT:    kshiftrw $14, %k0, %k1
941 ; KNL-NEXT:    andl $1, %edx
942 ; KNL-NEXT:    movb %dl, 2(%rax)
943 ; KNL-NEXT:    kmovw %k0, %edx
944 ; KNL-NEXT:    andl $1, %edx
945 ; KNL-NEXT:    andl $1, %r9d
946 ; KNL-NEXT:    leal (%rdx,%r9,2), %r9d
947 ; KNL-NEXT:    kmovw %k1, %edx
948 ; KNL-NEXT:    kshiftrw $15, %k0, %k0
949 ; KNL-NEXT:    andl $1, %r8d
950 ; KNL-NEXT:    leal (%r9,%r8,4), %r9d
951 ; KNL-NEXT:    kmovw %k0, %r8d
952 ; KNL-NEXT:    andl $1, %esi
953 ; KNL-NEXT:    leal (%r9,%rsi,8), %esi
954 ; KNL-NEXT:    andl $1, %edi
955 ; KNL-NEXT:    shll $4, %edi
956 ; KNL-NEXT:    orl %esi, %edi
957 ; KNL-NEXT:    andl $1, %ecx
958 ; KNL-NEXT:    shll $5, %ecx
959 ; KNL-NEXT:    orl %edi, %ecx
960 ; KNL-NEXT:    andl $1, %r10d
961 ; KNL-NEXT:    shll $6, %r10d
962 ; KNL-NEXT:    andl $1, %ebx
963 ; KNL-NEXT:    shll $7, %ebx
964 ; KNL-NEXT:    orl %r10d, %ebx
965 ; KNL-NEXT:    andl $1, %ebp
966 ; KNL-NEXT:    shll $8, %ebp
967 ; KNL-NEXT:    orl %ebx, %ebp
968 ; KNL-NEXT:    andl $1, %r14d
969 ; KNL-NEXT:    shll $9, %r14d
970 ; KNL-NEXT:    orl %ebp, %r14d
971 ; KNL-NEXT:    andl $1, %r11d
972 ; KNL-NEXT:    shll $10, %r11d
973 ; KNL-NEXT:    orl %r14d, %r11d
974 ; KNL-NEXT:    orl %ecx, %r11d
975 ; KNL-NEXT:    andl $1, %r15d
976 ; KNL-NEXT:    shll $11, %r15d
977 ; KNL-NEXT:    andl $1, %r12d
978 ; KNL-NEXT:    shll $12, %r12d
979 ; KNL-NEXT:    orl %r15d, %r12d
980 ; KNL-NEXT:    andl $1, %r13d
981 ; KNL-NEXT:    shll $13, %r13d
982 ; KNL-NEXT:    orl %r12d, %r13d
983 ; KNL-NEXT:    andl $1, %edx
984 ; KNL-NEXT:    shll $14, %edx
985 ; KNL-NEXT:    orl %r13d, %edx
986 ; KNL-NEXT:    andl $1, %r8d
987 ; KNL-NEXT:    shll $15, %r8d
988 ; KNL-NEXT:    orl %edx, %r8d
989 ; KNL-NEXT:    orl %r11d, %r8d
990 ; KNL-NEXT:    movw %r8w, (%rax)
991 ; KNL-NEXT:    popq %rbx
992 ; KNL-NEXT:    popq %r12
993 ; KNL-NEXT:    popq %r13
994 ; KNL-NEXT:    popq %r14
995 ; KNL-NEXT:    popq %r15
996 ; KNL-NEXT:    popq %rbp
997 ; KNL-NEXT:    retq
999 ; SKX-LABEL: test16:
1000 ; SKX:       ## %bb.0:
1001 ; SKX-NEXT:    pushq %rbp
1002 ; SKX-NEXT:    pushq %r15
1003 ; SKX-NEXT:    pushq %r14
1004 ; SKX-NEXT:    pushq %r13
1005 ; SKX-NEXT:    pushq %r12
1006 ; SKX-NEXT:    pushq %rbx
1007 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
1008 ; SKX-NEXT:    movq %rdi, %rax
1009 ; SKX-NEXT:    kshiftld $31, %k0, %k0
1010 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1011 ; SKX-NEXT:    kshiftrd $30, %k0, %k0
1012 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1013 ; SKX-NEXT:    kshiftrd $31, %k1, %k1
1014 ; SKX-NEXT:    kord %k0, %k1, %k0
1015 ; SKX-NEXT:    movl $-5, %edi
1016 ; SKX-NEXT:    kmovd %edi, %k1
1017 ; SKX-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1018 ; SKX-NEXT:    kandd %k1, %k0, %k0
1019 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1020 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1021 ; SKX-NEXT:    kshiftrd $29, %k1, %k1
1022 ; SKX-NEXT:    kord %k1, %k0, %k0
1023 ; SKX-NEXT:    movl $-9, %edi
1024 ; SKX-NEXT:    kmovd %edi, %k1
1025 ; SKX-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1026 ; SKX-NEXT:    kandd %k1, %k0, %k0
1027 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1028 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1029 ; SKX-NEXT:    kshiftrd $28, %k1, %k1
1030 ; SKX-NEXT:    kord %k1, %k0, %k0
1031 ; SKX-NEXT:    movl $-17, %edi
1032 ; SKX-NEXT:    kmovd %edi, %k2
1033 ; SKX-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1034 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1035 ; SKX-NEXT:    kandd %k2, %k0, %k0
1036 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1037 ; SKX-NEXT:    kshiftrd $27, %k1, %k1
1038 ; SKX-NEXT:    kord %k1, %k0, %k0
1039 ; SKX-NEXT:    movl $-33, %edi
1040 ; SKX-NEXT:    kmovd %edi, %k1
1041 ; SKX-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1042 ; SKX-NEXT:    kandd %k1, %k0, %k0
1043 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1044 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1045 ; SKX-NEXT:    kshiftrd $26, %k1, %k1
1046 ; SKX-NEXT:    kord %k1, %k0, %k0
1047 ; SKX-NEXT:    movl $-65, %edi
1048 ; SKX-NEXT:    kmovd %edi, %k1
1049 ; SKX-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1050 ; SKX-NEXT:    kandd %k1, %k0, %k0
1051 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1052 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1053 ; SKX-NEXT:    kshiftrd $25, %k1, %k1
1054 ; SKX-NEXT:    kord %k1, %k0, %k0
1055 ; SKX-NEXT:    movl $-129, %edi
1056 ; SKX-NEXT:    kmovd %edi, %k2
1057 ; SKX-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1058 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1059 ; SKX-NEXT:    kandd %k2, %k0, %k0
1060 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1061 ; SKX-NEXT:    kshiftrd $24, %k1, %k1
1062 ; SKX-NEXT:    kord %k1, %k0, %k0
1063 ; SKX-NEXT:    movl $-257, %edi ## imm = 0xFEFF
1064 ; SKX-NEXT:    kmovd %edi, %k1
1065 ; SKX-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1066 ; SKX-NEXT:    kandd %k1, %k0, %k0
1067 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1068 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1069 ; SKX-NEXT:    kshiftrd $23, %k1, %k1
1070 ; SKX-NEXT:    kord %k1, %k0, %k0
1071 ; SKX-NEXT:    movl $-513, %edi ## imm = 0xFDFF
1072 ; SKX-NEXT:    kmovd %edi, %k1
1073 ; SKX-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1074 ; SKX-NEXT:    kandd %k1, %k0, %k0
1075 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1076 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1077 ; SKX-NEXT:    kshiftrd $22, %k1, %k1
1078 ; SKX-NEXT:    kord %k1, %k0, %k0
1079 ; SKX-NEXT:    movl $-1025, %edi ## imm = 0xFBFF
1080 ; SKX-NEXT:    kmovd %edi, %k2
1081 ; SKX-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1082 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1083 ; SKX-NEXT:    kandd %k2, %k0, %k0
1084 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1085 ; SKX-NEXT:    kshiftrd $21, %k1, %k1
1086 ; SKX-NEXT:    kord %k1, %k0, %k0
1087 ; SKX-NEXT:    movl $-2049, %edi ## imm = 0xF7FF
1088 ; SKX-NEXT:    kmovd %edi, %k6
1089 ; SKX-NEXT:    kandd %k6, %k0, %k0
1090 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1091 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1092 ; SKX-NEXT:    kshiftrd $20, %k1, %k1
1093 ; SKX-NEXT:    kord %k1, %k0, %k0
1094 ; SKX-NEXT:    movl $-4097, %edi ## imm = 0xEFFF
1095 ; SKX-NEXT:    kmovd %edi, %k1
1096 ; SKX-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1097 ; SKX-NEXT:    kandd %k1, %k0, %k0
1098 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1099 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1100 ; SKX-NEXT:    kshiftrd $19, %k1, %k1
1101 ; SKX-NEXT:    kord %k1, %k0, %k0
1102 ; SKX-NEXT:    movl $-8193, %edi ## imm = 0xDFFF
1103 ; SKX-NEXT:    kmovd %edi, %k5
1104 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1105 ; SKX-NEXT:    kandd %k5, %k0, %k0
1106 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1107 ; SKX-NEXT:    kshiftrd $18, %k1, %k1
1108 ; SKX-NEXT:    kord %k1, %k0, %k0
1109 ; SKX-NEXT:    movl $-16385, %edi ## imm = 0xBFFF
1110 ; SKX-NEXT:    kmovd %edi, %k4
1111 ; SKX-NEXT:    kandd %k4, %k0, %k0
1112 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1113 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1114 ; SKX-NEXT:    kshiftrd $17, %k1, %k1
1115 ; SKX-NEXT:    kord %k1, %k0, %k0
1116 ; SKX-NEXT:    movl $-32769, %edi ## imm = 0xFFFF7FFF
1117 ; SKX-NEXT:    kmovd %edi, %k3
1118 ; SKX-NEXT:    kandd %k3, %k0, %k0
1119 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
1120 ; SKX-NEXT:    kshiftld $31, %k7, %k7
1121 ; SKX-NEXT:    kshiftrd $16, %k7, %k7
1122 ; SKX-NEXT:    kord %k7, %k0, %k7
1123 ; SKX-NEXT:    movl $-65537, %edi ## imm = 0xFFFEFFFF
1124 ; SKX-NEXT:    kmovd %edi, %k2
1125 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
1126 ; SKX-NEXT:    kandd %k2, %k7, %k7
1127 ; SKX-NEXT:    kshiftld $31, %k0, %k0
1128 ; SKX-NEXT:    kshiftrd $15, %k0, %k0
1129 ; SKX-NEXT:    kord %k0, %k7, %k0
1130 ; SKX-NEXT:    kmovd %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1131 ; SKX-NEXT:    kmovd %edx, %k0
1132 ; SKX-NEXT:    kshiftld $31, %k0, %k0
1133 ; SKX-NEXT:    kshiftrd $30, %k0, %k0
1134 ; SKX-NEXT:    kmovd %esi, %k7
1135 ; SKX-NEXT:    kshiftld $31, %k7, %k7
1136 ; SKX-NEXT:    kshiftrd $31, %k7, %k7
1137 ; SKX-NEXT:    kord %k0, %k7, %k0
1138 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1139 ; SKX-NEXT:    kandd %k1, %k0, %k0
1140 ; SKX-NEXT:    kmovd %ecx, %k7
1141 ; SKX-NEXT:    kshiftld $31, %k7, %k7
1142 ; SKX-NEXT:    kshiftrd $29, %k7, %k7
1143 ; SKX-NEXT:    kord %k7, %k0, %k0
1144 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1145 ; SKX-NEXT:    kandd %k1, %k0, %k0
1146 ; SKX-NEXT:    kmovd %r8d, %k7
1147 ; SKX-NEXT:    kshiftld $31, %k7, %k7
1148 ; SKX-NEXT:    kshiftrd $28, %k7, %k7
1149 ; SKX-NEXT:    kord %k7, %k0, %k0
1150 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1151 ; SKX-NEXT:    kandd %k1, %k0, %k0
1152 ; SKX-NEXT:    kmovd %r9d, %k7
1153 ; SKX-NEXT:    kshiftld $31, %k7, %k7
1154 ; SKX-NEXT:    kshiftrd $27, %k7, %k7
1155 ; SKX-NEXT:    kord %k7, %k0, %k0
1156 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
1157 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1158 ; SKX-NEXT:    kandd %k1, %k0, %k1
1159 ; SKX-NEXT:    kshiftld $31, %k7, %k7
1160 ; SKX-NEXT:    kshiftrd $26, %k7, %k7
1161 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
1162 ; SKX-NEXT:    kord %k7, %k1, %k1
1163 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k7 ## 4-byte Reload
1164 ; SKX-NEXT:    kandd %k7, %k1, %k1
1165 ; SKX-NEXT:    kshiftld $31, %k0, %k0
1166 ; SKX-NEXT:    kshiftrd $25, %k0, %k0
1167 ; SKX-NEXT:    kord %k0, %k1, %k0
1168 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1169 ; SKX-NEXT:    kandd %k1, %k0, %k0
1170 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1171 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1172 ; SKX-NEXT:    kshiftrd $24, %k1, %k1
1173 ; SKX-NEXT:    kord %k1, %k0, %k0
1174 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1175 ; SKX-NEXT:    kandd %k1, %k0, %k0
1176 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1177 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1178 ; SKX-NEXT:    kshiftrd $23, %k1, %k1
1179 ; SKX-NEXT:    kord %k1, %k0, %k0
1180 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1181 ; SKX-NEXT:    kandd %k1, %k0, %k0
1182 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1183 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1184 ; SKX-NEXT:    kshiftrd $22, %k1, %k1
1185 ; SKX-NEXT:    kord %k1, %k0, %k0
1186 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1187 ; SKX-NEXT:    kandd %k1, %k0, %k0
1188 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1189 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1190 ; SKX-NEXT:    kshiftrd $21, %k1, %k1
1191 ; SKX-NEXT:    kord %k1, %k0, %k0
1192 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1193 ; SKX-NEXT:    kandd %k6, %k0, %k0
1194 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1195 ; SKX-NEXT:    kshiftrd $20, %k1, %k1
1196 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
1197 ; SKX-NEXT:    kord %k1, %k0, %k0
1198 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1199 ; SKX-NEXT:    kandd %k1, %k0, %k0
1200 ; SKX-NEXT:    kshiftld $31, %k6, %k1
1201 ; SKX-NEXT:    kshiftrd $19, %k1, %k1
1202 ; SKX-NEXT:    kord %k1, %k0, %k0
1203 ; SKX-NEXT:    kandd %k5, %k0, %k0
1204 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1205 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1206 ; SKX-NEXT:    kshiftrd $18, %k1, %k1
1207 ; SKX-NEXT:    kord %k1, %k0, %k0
1208 ; SKX-NEXT:    kandd %k4, %k0, %k0
1209 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1210 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1211 ; SKX-NEXT:    kshiftrd $17, %k1, %k1
1212 ; SKX-NEXT:    kord %k1, %k0, %k0
1213 ; SKX-NEXT:    kandd %k3, %k0, %k0
1214 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1215 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1216 ; SKX-NEXT:    kshiftrd $16, %k1, %k1
1217 ; SKX-NEXT:    kord %k1, %k0, %k0
1218 ; SKX-NEXT:    kandd %k2, %k0, %k0
1219 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1220 ; SKX-NEXT:    kshiftld $31, %k1, %k1
1221 ; SKX-NEXT:    kshiftrd $15, %k1, %k1
1222 ; SKX-NEXT:    kord %k1, %k0, %k0
1223 ; SKX-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1224 ; SKX-NEXT:    kandd %k1, %k0, %k0
1225 ; SKX-NEXT:    kshiftrd $16, %k0, %k1
1226 ; SKX-NEXT:    kmovd %k1, %edx
1227 ; SKX-NEXT:    kshiftrd $1, %k0, %k1
1228 ; SKX-NEXT:    kmovd %k1, %r9d
1229 ; SKX-NEXT:    kshiftrd $2, %k0, %k1
1230 ; SKX-NEXT:    kmovd %k1, %r8d
1231 ; SKX-NEXT:    kshiftrd $3, %k0, %k1
1232 ; SKX-NEXT:    kmovd %k1, %esi
1233 ; SKX-NEXT:    kshiftrd $4, %k0, %k1
1234 ; SKX-NEXT:    kmovd %k1, %edi
1235 ; SKX-NEXT:    kshiftrd $5, %k0, %k1
1236 ; SKX-NEXT:    kmovd %k1, %ecx
1237 ; SKX-NEXT:    kshiftrd $6, %k0, %k1
1238 ; SKX-NEXT:    kmovd %k1, %r10d
1239 ; SKX-NEXT:    kshiftrd $7, %k0, %k1
1240 ; SKX-NEXT:    kmovd %k1, %ebx
1241 ; SKX-NEXT:    kshiftrd $8, %k0, %k1
1242 ; SKX-NEXT:    kmovd %k1, %ebp
1243 ; SKX-NEXT:    kshiftrd $9, %k0, %k1
1244 ; SKX-NEXT:    kmovd %k1, %r14d
1245 ; SKX-NEXT:    kshiftrd $10, %k0, %k1
1246 ; SKX-NEXT:    kmovd %k1, %r11d
1247 ; SKX-NEXT:    kshiftrd $11, %k0, %k1
1248 ; SKX-NEXT:    kmovd %k1, %r15d
1249 ; SKX-NEXT:    kshiftrd $12, %k0, %k1
1250 ; SKX-NEXT:    kmovd %k1, %r12d
1251 ; SKX-NEXT:    kshiftrd $13, %k0, %k1
1252 ; SKX-NEXT:    kmovd %k1, %r13d
1253 ; SKX-NEXT:    kshiftrd $14, %k0, %k1
1254 ; SKX-NEXT:    andl $1, %edx
1255 ; SKX-NEXT:    movb %dl, 2(%rax)
1256 ; SKX-NEXT:    kmovd %k0, %edx
1257 ; SKX-NEXT:    andl $1, %edx
1258 ; SKX-NEXT:    andl $1, %r9d
1259 ; SKX-NEXT:    leal (%rdx,%r9,2), %r9d
1260 ; SKX-NEXT:    kmovd %k1, %edx
1261 ; SKX-NEXT:    kshiftrd $15, %k0, %k0
1262 ; SKX-NEXT:    andl $1, %r8d
1263 ; SKX-NEXT:    leal (%r9,%r8,4), %r9d
1264 ; SKX-NEXT:    kmovd %k0, %r8d
1265 ; SKX-NEXT:    andl $1, %esi
1266 ; SKX-NEXT:    leal (%r9,%rsi,8), %esi
1267 ; SKX-NEXT:    andl $1, %edi
1268 ; SKX-NEXT:    shll $4, %edi
1269 ; SKX-NEXT:    orl %esi, %edi
1270 ; SKX-NEXT:    andl $1, %ecx
1271 ; SKX-NEXT:    shll $5, %ecx
1272 ; SKX-NEXT:    orl %edi, %ecx
1273 ; SKX-NEXT:    andl $1, %r10d
1274 ; SKX-NEXT:    shll $6, %r10d
1275 ; SKX-NEXT:    andl $1, %ebx
1276 ; SKX-NEXT:    shll $7, %ebx
1277 ; SKX-NEXT:    orl %r10d, %ebx
1278 ; SKX-NEXT:    andl $1, %ebp
1279 ; SKX-NEXT:    shll $8, %ebp
1280 ; SKX-NEXT:    orl %ebx, %ebp
1281 ; SKX-NEXT:    andl $1, %r14d
1282 ; SKX-NEXT:    shll $9, %r14d
1283 ; SKX-NEXT:    orl %ebp, %r14d
1284 ; SKX-NEXT:    andl $1, %r11d
1285 ; SKX-NEXT:    shll $10, %r11d
1286 ; SKX-NEXT:    orl %r14d, %r11d
1287 ; SKX-NEXT:    orl %ecx, %r11d
1288 ; SKX-NEXT:    andl $1, %r15d
1289 ; SKX-NEXT:    shll $11, %r15d
1290 ; SKX-NEXT:    andl $1, %r12d
1291 ; SKX-NEXT:    shll $12, %r12d
1292 ; SKX-NEXT:    orl %r15d, %r12d
1293 ; SKX-NEXT:    andl $1, %r13d
1294 ; SKX-NEXT:    shll $13, %r13d
1295 ; SKX-NEXT:    orl %r12d, %r13d
1296 ; SKX-NEXT:    andl $1, %edx
1297 ; SKX-NEXT:    shll $14, %edx
1298 ; SKX-NEXT:    orl %r13d, %edx
1299 ; SKX-NEXT:    andl $1, %r8d
1300 ; SKX-NEXT:    shll $15, %r8d
1301 ; SKX-NEXT:    orl %edx, %r8d
1302 ; SKX-NEXT:    orl %r11d, %r8d
1303 ; SKX-NEXT:    movw %r8w, (%rax)
1304 ; SKX-NEXT:    popq %rbx
1305 ; SKX-NEXT:    popq %r12
1306 ; SKX-NEXT:    popq %r13
1307 ; SKX-NEXT:    popq %r14
1308 ; SKX-NEXT:    popq %r15
1309 ; SKX-NEXT:    popq %rbp
1310 ; SKX-NEXT:    retq
1312 ; KNL_X32-LABEL: test16:
1313 ; KNL_X32:       ## %bb.0:
1314 ; KNL_X32-NEXT:    pushl %ebp
1315 ; KNL_X32-NEXT:    pushl %ebx
1316 ; KNL_X32-NEXT:    pushl %edi
1317 ; KNL_X32-NEXT:    pushl %esi
1318 ; KNL_X32-NEXT:    subl $16, %esp
1319 ; KNL_X32-NEXT:    xorl %eax, %eax
1320 ; KNL_X32-NEXT:    testb $1, {{[0-9]+}}(%esp)
1321 ; KNL_X32-NEXT:    movl $65535, %edx ## imm = 0xFFFF
1322 ; KNL_X32-NEXT:    movl $0, %ecx
1323 ; KNL_X32-NEXT:    cmovnel %edx, %ecx
1324 ; KNL_X32-NEXT:    testb $1, {{[0-9]+}}(%esp)
1325 ; KNL_X32-NEXT:    cmovnel %edx, %eax
1326 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1327 ; KNL_X32-NEXT:    andl $1, %edx
1328 ; KNL_X32-NEXT:    kmovw %edx, %k0
1329 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1330 ; KNL_X32-NEXT:    kmovw %edx, %k1
1331 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1332 ; KNL_X32-NEXT:    kshiftrw $14, %k1, %k1
1333 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1334 ; KNL_X32-NEXT:    movw $-5, %dx
1335 ; KNL_X32-NEXT:    kmovw %edx, %k1
1336 ; KNL_X32-NEXT:    kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
1337 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
1338 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1339 ; KNL_X32-NEXT:    kmovw %edx, %k1
1340 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1341 ; KNL_X32-NEXT:    kshiftrw $13, %k1, %k1
1342 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1343 ; KNL_X32-NEXT:    movw $-9, %dx
1344 ; KNL_X32-NEXT:    kmovw %edx, %k1
1345 ; KNL_X32-NEXT:    kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
1346 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
1347 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1348 ; KNL_X32-NEXT:    kmovw %edx, %k1
1349 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1350 ; KNL_X32-NEXT:    kshiftrw $12, %k1, %k1
1351 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1352 ; KNL_X32-NEXT:    movw $-17, %dx
1353 ; KNL_X32-NEXT:    kmovw %edx, %k1
1354 ; KNL_X32-NEXT:    kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
1355 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
1356 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1357 ; KNL_X32-NEXT:    kmovw %edx, %k1
1358 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1359 ; KNL_X32-NEXT:    kshiftrw $11, %k1, %k1
1360 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1361 ; KNL_X32-NEXT:    movw $-33, %dx
1362 ; KNL_X32-NEXT:    kmovw %edx, %k1
1363 ; KNL_X32-NEXT:    kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
1364 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
1365 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1366 ; KNL_X32-NEXT:    kmovw %edx, %k1
1367 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1368 ; KNL_X32-NEXT:    kshiftrw $10, %k1, %k1
1369 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1370 ; KNL_X32-NEXT:    movw $-65, %dx
1371 ; KNL_X32-NEXT:    kmovw %edx, %k1
1372 ; KNL_X32-NEXT:    kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
1373 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
1374 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1375 ; KNL_X32-NEXT:    kmovw %edx, %k1
1376 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1377 ; KNL_X32-NEXT:    kshiftrw $9, %k1, %k1
1378 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1379 ; KNL_X32-NEXT:    movw $-129, %dx
1380 ; KNL_X32-NEXT:    kmovw %edx, %k1
1381 ; KNL_X32-NEXT:    kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
1382 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
1383 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1384 ; KNL_X32-NEXT:    kmovw %edx, %k1
1385 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1386 ; KNL_X32-NEXT:    kshiftrw $8, %k1, %k1
1387 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1388 ; KNL_X32-NEXT:    movw $-257, %dx ## imm = 0xFEFF
1389 ; KNL_X32-NEXT:    kmovw %edx, %k1
1390 ; KNL_X32-NEXT:    kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
1391 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
1392 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1393 ; KNL_X32-NEXT:    kmovw %edx, %k1
1394 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1395 ; KNL_X32-NEXT:    kshiftrw $7, %k1, %k1
1396 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1397 ; KNL_X32-NEXT:    movw $-513, %dx ## imm = 0xFDFF
1398 ; KNL_X32-NEXT:    kmovw %edx, %k7
1399 ; KNL_X32-NEXT:    kandw %k7, %k0, %k0
1400 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1401 ; KNL_X32-NEXT:    kmovw %edx, %k1
1402 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1403 ; KNL_X32-NEXT:    kshiftrw $6, %k1, %k1
1404 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1405 ; KNL_X32-NEXT:    movw $-1025, %dx ## imm = 0xFBFF
1406 ; KNL_X32-NEXT:    kmovw %edx, %k4
1407 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
1408 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1409 ; KNL_X32-NEXT:    kmovw %edx, %k1
1410 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1411 ; KNL_X32-NEXT:    kshiftrw $5, %k1, %k1
1412 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1413 ; KNL_X32-NEXT:    movw $-2049, %dx ## imm = 0xF7FF
1414 ; KNL_X32-NEXT:    kmovw %edx, %k3
1415 ; KNL_X32-NEXT:    kandw %k3, %k0, %k0
1416 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1417 ; KNL_X32-NEXT:    kmovw %edx, %k1
1418 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1419 ; KNL_X32-NEXT:    kshiftrw $4, %k1, %k1
1420 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1421 ; KNL_X32-NEXT:    movw $-4097, %dx ## imm = 0xEFFF
1422 ; KNL_X32-NEXT:    kmovw %edx, %k2
1423 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
1424 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1425 ; KNL_X32-NEXT:    kmovw %edx, %k1
1426 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1427 ; KNL_X32-NEXT:    kshiftrw $3, %k1, %k1
1428 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1429 ; KNL_X32-NEXT:    movw $-8193, %dx ## imm = 0xDFFF
1430 ; KNL_X32-NEXT:    kmovw %edx, %k1
1431 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
1432 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1433 ; KNL_X32-NEXT:    kmovw %edx, %k5
1434 ; KNL_X32-NEXT:    kshiftlw $15, %k5, %k5
1435 ; KNL_X32-NEXT:    kshiftrw $2, %k5, %k5
1436 ; KNL_X32-NEXT:    korw %k5, %k0, %k5
1437 ; KNL_X32-NEXT:    movw $-16385, %dx ## imm = 0xBFFF
1438 ; KNL_X32-NEXT:    kmovw %edx, %k0
1439 ; KNL_X32-NEXT:    kandw %k0, %k5, %k5
1440 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1441 ; KNL_X32-NEXT:    kmovw %edx, %k6
1442 ; KNL_X32-NEXT:    kshiftlw $14, %k6, %k6
1443 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1444 ; KNL_X32-NEXT:    kshiftlw $1, %k5, %k5
1445 ; KNL_X32-NEXT:    kshiftrw $1, %k5, %k5
1446 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1447 ; KNL_X32-NEXT:    kmovw %edx, %k6
1448 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
1449 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1450 ; KNL_X32-NEXT:    kmovw %k5, (%esp) ## 2-byte Spill
1451 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1452 ; KNL_X32-NEXT:    andl $1, %edx
1453 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ebx
1454 ; KNL_X32-NEXT:    kmovw %ebx, %k5
1455 ; KNL_X32-NEXT:    kshiftlw $15, %k5, %k5
1456 ; KNL_X32-NEXT:    kshiftrw $14, %k5, %k5
1457 ; KNL_X32-NEXT:    kmovw %edx, %k6
1458 ; KNL_X32-NEXT:    korw %k5, %k6, %k5
1459 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
1460 ; KNL_X32-NEXT:    kandw %k6, %k5, %k5
1461 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1462 ; KNL_X32-NEXT:    kmovw %edx, %k6
1463 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
1464 ; KNL_X32-NEXT:    kshiftrw $13, %k6, %k6
1465 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1466 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
1467 ; KNL_X32-NEXT:    kandw %k6, %k5, %k5
1468 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1469 ; KNL_X32-NEXT:    kmovw %edx, %k6
1470 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
1471 ; KNL_X32-NEXT:    kshiftrw $12, %k6, %k6
1472 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1473 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
1474 ; KNL_X32-NEXT:    kandw %k6, %k5, %k5
1475 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1476 ; KNL_X32-NEXT:    kmovw %edx, %k6
1477 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
1478 ; KNL_X32-NEXT:    kshiftrw $11, %k6, %k6
1479 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1480 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
1481 ; KNL_X32-NEXT:    kandw %k6, %k5, %k5
1482 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1483 ; KNL_X32-NEXT:    kmovw %edx, %k6
1484 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
1485 ; KNL_X32-NEXT:    kshiftrw $10, %k6, %k6
1486 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1487 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
1488 ; KNL_X32-NEXT:    kandw %k6, %k5, %k5
1489 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1490 ; KNL_X32-NEXT:    kmovw %edx, %k6
1491 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
1492 ; KNL_X32-NEXT:    kshiftrw $9, %k6, %k6
1493 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1494 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
1495 ; KNL_X32-NEXT:    kandw %k6, %k5, %k5
1496 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1497 ; KNL_X32-NEXT:    kmovw %edx, %k6
1498 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
1499 ; KNL_X32-NEXT:    kshiftrw $8, %k6, %k6
1500 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1501 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
1502 ; KNL_X32-NEXT:    kandw %k6, %k5, %k5
1503 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1504 ; KNL_X32-NEXT:    kmovw %edx, %k6
1505 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
1506 ; KNL_X32-NEXT:    kshiftrw $7, %k6, %k6
1507 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1508 ; KNL_X32-NEXT:    kandw %k7, %k5, %k5
1509 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1510 ; KNL_X32-NEXT:    kmovw %edx, %k6
1511 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
1512 ; KNL_X32-NEXT:    kshiftrw $6, %k6, %k6
1513 ; KNL_X32-NEXT:    korw %k6, %k5, %k5
1514 ; KNL_X32-NEXT:    kandw %k4, %k5, %k4
1515 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1516 ; KNL_X32-NEXT:    kmovw %edx, %k5
1517 ; KNL_X32-NEXT:    kshiftlw $15, %k5, %k5
1518 ; KNL_X32-NEXT:    kshiftrw $5, %k5, %k5
1519 ; KNL_X32-NEXT:    korw %k5, %k4, %k4
1520 ; KNL_X32-NEXT:    kandw %k3, %k4, %k3
1521 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1522 ; KNL_X32-NEXT:    kmovw %edx, %k4
1523 ; KNL_X32-NEXT:    kshiftlw $15, %k4, %k4
1524 ; KNL_X32-NEXT:    kshiftrw $4, %k4, %k4
1525 ; KNL_X32-NEXT:    korw %k4, %k3, %k3
1526 ; KNL_X32-NEXT:    kandw %k2, %k3, %k2
1527 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1528 ; KNL_X32-NEXT:    kmovw %edx, %k3
1529 ; KNL_X32-NEXT:    kshiftlw $15, %k3, %k3
1530 ; KNL_X32-NEXT:    kshiftrw $3, %k3, %k3
1531 ; KNL_X32-NEXT:    korw %k3, %k2, %k2
1532 ; KNL_X32-NEXT:    kandw %k1, %k2, %k1
1533 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1534 ; KNL_X32-NEXT:    kmovw %edx, %k2
1535 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1536 ; KNL_X32-NEXT:    kshiftrw $2, %k2, %k2
1537 ; KNL_X32-NEXT:    korw %k2, %k1, %k1
1538 ; KNL_X32-NEXT:    kandw %k0, %k1, %k0
1539 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1540 ; KNL_X32-NEXT:    kmovw %edx, %k1
1541 ; KNL_X32-NEXT:    kshiftlw $14, %k1, %k1
1542 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1543 ; KNL_X32-NEXT:    kshiftlw $1, %k0, %k0
1544 ; KNL_X32-NEXT:    kshiftrw $1, %k0, %k0
1545 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
1546 ; KNL_X32-NEXT:    kmovw %edx, %k1
1547 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
1548 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
1549 ; KNL_X32-NEXT:    kmovw %ecx, %k1
1550 ; KNL_X32-NEXT:    kmovw (%esp), %k2 ## 2-byte Reload
1551 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
1552 ; KNL_X32-NEXT:    kmovw %eax, %k2
1553 ; KNL_X32-NEXT:    kandw %k1, %k2, %k1
1554 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1555 ; KNL_X32-NEXT:    kmovw %k1, %ebx
1556 ; KNL_X32-NEXT:    kshiftrw $1, %k0, %k1
1557 ; KNL_X32-NEXT:    kmovw %k1, %ebp
1558 ; KNL_X32-NEXT:    kshiftrw $2, %k0, %k1
1559 ; KNL_X32-NEXT:    kmovw %k1, %esi
1560 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k1
1561 ; KNL_X32-NEXT:    kmovw %k1, %edi
1562 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k1
1563 ; KNL_X32-NEXT:    kmovw %k1, %edx
1564 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k1
1565 ; KNL_X32-NEXT:    kmovw %k1, %ecx
1566 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k1
1567 ; KNL_X32-NEXT:    andl $1, %ebx
1568 ; KNL_X32-NEXT:    movb %bl, 2(%eax)
1569 ; KNL_X32-NEXT:    kmovw %k0, %ebx
1570 ; KNL_X32-NEXT:    andl $1, %ebx
1571 ; KNL_X32-NEXT:    andl $1, %ebp
1572 ; KNL_X32-NEXT:    leal (%ebx,%ebp,2), %ebx
1573 ; KNL_X32-NEXT:    kmovw %k1, %ebp
1574 ; KNL_X32-NEXT:    kshiftrw $7, %k0, %k1
1575 ; KNL_X32-NEXT:    andl $1, %esi
1576 ; KNL_X32-NEXT:    leal (%ebx,%esi,4), %ebx
1577 ; KNL_X32-NEXT:    kmovw %k1, %esi
1578 ; KNL_X32-NEXT:    kshiftrw $8, %k0, %k1
1579 ; KNL_X32-NEXT:    andl $1, %edi
1580 ; KNL_X32-NEXT:    leal (%ebx,%edi,8), %ebx
1581 ; KNL_X32-NEXT:    kmovw %k1, %edi
1582 ; KNL_X32-NEXT:    kshiftrw $9, %k0, %k1
1583 ; KNL_X32-NEXT:    andl $1, %edx
1584 ; KNL_X32-NEXT:    shll $4, %edx
1585 ; KNL_X32-NEXT:    orl %ebx, %edx
1586 ; KNL_X32-NEXT:    kmovw %k1, %ebx
1587 ; KNL_X32-NEXT:    kshiftrw $10, %k0, %k1
1588 ; KNL_X32-NEXT:    andl $1, %ecx
1589 ; KNL_X32-NEXT:    shll $5, %ecx
1590 ; KNL_X32-NEXT:    orl %edx, %ecx
1591 ; KNL_X32-NEXT:    kmovw %k1, %edx
1592 ; KNL_X32-NEXT:    kshiftrw $11, %k0, %k1
1593 ; KNL_X32-NEXT:    andl $1, %ebp
1594 ; KNL_X32-NEXT:    shll $6, %ebp
1595 ; KNL_X32-NEXT:    andl $1, %esi
1596 ; KNL_X32-NEXT:    shll $7, %esi
1597 ; KNL_X32-NEXT:    orl %ebp, %esi
1598 ; KNL_X32-NEXT:    kmovw %k1, %ebp
1599 ; KNL_X32-NEXT:    kshiftrw $12, %k0, %k1
1600 ; KNL_X32-NEXT:    andl $1, %edi
1601 ; KNL_X32-NEXT:    shll $8, %edi
1602 ; KNL_X32-NEXT:    orl %esi, %edi
1603 ; KNL_X32-NEXT:    kmovw %k1, %esi
1604 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k1
1605 ; KNL_X32-NEXT:    andl $1, %ebx
1606 ; KNL_X32-NEXT:    shll $9, %ebx
1607 ; KNL_X32-NEXT:    orl %edi, %ebx
1608 ; KNL_X32-NEXT:    kmovw %k1, %edi
1609 ; KNL_X32-NEXT:    kshiftrw $14, %k0, %k1
1610 ; KNL_X32-NEXT:    andl $1, %edx
1611 ; KNL_X32-NEXT:    shll $10, %edx
1612 ; KNL_X32-NEXT:    orl %ebx, %edx
1613 ; KNL_X32-NEXT:    kmovw %k1, %ebx
1614 ; KNL_X32-NEXT:    kshiftrw $15, %k0, %k0
1615 ; KNL_X32-NEXT:    orl %ecx, %edx
1616 ; KNL_X32-NEXT:    kmovw %k0, %ecx
1617 ; KNL_X32-NEXT:    andl $1, %ebp
1618 ; KNL_X32-NEXT:    shll $11, %ebp
1619 ; KNL_X32-NEXT:    andl $1, %esi
1620 ; KNL_X32-NEXT:    shll $12, %esi
1621 ; KNL_X32-NEXT:    orl %ebp, %esi
1622 ; KNL_X32-NEXT:    andl $1, %edi
1623 ; KNL_X32-NEXT:    shll $13, %edi
1624 ; KNL_X32-NEXT:    orl %esi, %edi
1625 ; KNL_X32-NEXT:    andl $1, %ebx
1626 ; KNL_X32-NEXT:    shll $14, %ebx
1627 ; KNL_X32-NEXT:    orl %edi, %ebx
1628 ; KNL_X32-NEXT:    andl $1, %ecx
1629 ; KNL_X32-NEXT:    shll $15, %ecx
1630 ; KNL_X32-NEXT:    orl %ebx, %ecx
1631 ; KNL_X32-NEXT:    orl %edx, %ecx
1632 ; KNL_X32-NEXT:    movw %cx, (%eax)
1633 ; KNL_X32-NEXT:    addl $16, %esp
1634 ; KNL_X32-NEXT:    popl %esi
1635 ; KNL_X32-NEXT:    popl %edi
1636 ; KNL_X32-NEXT:    popl %ebx
1637 ; KNL_X32-NEXT:    popl %ebp
1638 ; KNL_X32-NEXT:    retl $4
1640 ; FASTISEL-LABEL: test16:
1641 ; FASTISEL:       ## %bb.0:
1642 ; FASTISEL-NEXT:    pushq %rbp
1643 ; FASTISEL-NEXT:    pushq %r15
1644 ; FASTISEL-NEXT:    pushq %r14
1645 ; FASTISEL-NEXT:    pushq %r13
1646 ; FASTISEL-NEXT:    pushq %r12
1647 ; FASTISEL-NEXT:    pushq %rbx
1648 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
1649 ; FASTISEL-NEXT:    movq %rdi, %rax
1650 ; FASTISEL-NEXT:    kshiftld $31, %k0, %k0
1651 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1652 ; FASTISEL-NEXT:    kshiftrd $30, %k0, %k0
1653 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1654 ; FASTISEL-NEXT:    kshiftrd $31, %k1, %k1
1655 ; FASTISEL-NEXT:    kord %k0, %k1, %k0
1656 ; FASTISEL-NEXT:    movl $-5, %edi
1657 ; FASTISEL-NEXT:    kmovd %edi, %k1
1658 ; FASTISEL-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1659 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1660 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1661 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1662 ; FASTISEL-NEXT:    kshiftrd $29, %k1, %k1
1663 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1664 ; FASTISEL-NEXT:    movl $-9, %edi
1665 ; FASTISEL-NEXT:    kmovd %edi, %k1
1666 ; FASTISEL-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1667 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1668 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1669 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1670 ; FASTISEL-NEXT:    kshiftrd $28, %k1, %k1
1671 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1672 ; FASTISEL-NEXT:    movl $-17, %edi
1673 ; FASTISEL-NEXT:    kmovd %edi, %k2
1674 ; FASTISEL-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1675 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1676 ; FASTISEL-NEXT:    kandd %k2, %k0, %k0
1677 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1678 ; FASTISEL-NEXT:    kshiftrd $27, %k1, %k1
1679 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1680 ; FASTISEL-NEXT:    movl $-33, %edi
1681 ; FASTISEL-NEXT:    kmovd %edi, %k1
1682 ; FASTISEL-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1683 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1684 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1685 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1686 ; FASTISEL-NEXT:    kshiftrd $26, %k1, %k1
1687 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1688 ; FASTISEL-NEXT:    movl $-65, %edi
1689 ; FASTISEL-NEXT:    kmovd %edi, %k1
1690 ; FASTISEL-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1691 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1692 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1693 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1694 ; FASTISEL-NEXT:    kshiftrd $25, %k1, %k1
1695 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1696 ; FASTISEL-NEXT:    movl $-129, %edi
1697 ; FASTISEL-NEXT:    kmovd %edi, %k2
1698 ; FASTISEL-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1699 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1700 ; FASTISEL-NEXT:    kandd %k2, %k0, %k0
1701 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1702 ; FASTISEL-NEXT:    kshiftrd $24, %k1, %k1
1703 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1704 ; FASTISEL-NEXT:    movl $-257, %edi ## imm = 0xFEFF
1705 ; FASTISEL-NEXT:    kmovd %edi, %k1
1706 ; FASTISEL-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1707 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1708 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1709 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1710 ; FASTISEL-NEXT:    kshiftrd $23, %k1, %k1
1711 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1712 ; FASTISEL-NEXT:    movl $-513, %edi ## imm = 0xFDFF
1713 ; FASTISEL-NEXT:    kmovd %edi, %k1
1714 ; FASTISEL-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1715 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1716 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1717 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1718 ; FASTISEL-NEXT:    kshiftrd $22, %k1, %k1
1719 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1720 ; FASTISEL-NEXT:    movl $-1025, %edi ## imm = 0xFBFF
1721 ; FASTISEL-NEXT:    kmovd %edi, %k2
1722 ; FASTISEL-NEXT:    kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1723 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1724 ; FASTISEL-NEXT:    kandd %k2, %k0, %k0
1725 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1726 ; FASTISEL-NEXT:    kshiftrd $21, %k1, %k1
1727 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1728 ; FASTISEL-NEXT:    movl $-2049, %edi ## imm = 0xF7FF
1729 ; FASTISEL-NEXT:    kmovd %edi, %k6
1730 ; FASTISEL-NEXT:    kandd %k6, %k0, %k0
1731 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1732 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1733 ; FASTISEL-NEXT:    kshiftrd $20, %k1, %k1
1734 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1735 ; FASTISEL-NEXT:    movl $-4097, %edi ## imm = 0xEFFF
1736 ; FASTISEL-NEXT:    kmovd %edi, %k1
1737 ; FASTISEL-NEXT:    kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1738 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1739 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1740 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1741 ; FASTISEL-NEXT:    kshiftrd $19, %k1, %k1
1742 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1743 ; FASTISEL-NEXT:    movl $-8193, %edi ## imm = 0xDFFF
1744 ; FASTISEL-NEXT:    kmovd %edi, %k5
1745 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1746 ; FASTISEL-NEXT:    kandd %k5, %k0, %k0
1747 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1748 ; FASTISEL-NEXT:    kshiftrd $18, %k1, %k1
1749 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1750 ; FASTISEL-NEXT:    movl $-16385, %edi ## imm = 0xBFFF
1751 ; FASTISEL-NEXT:    kmovd %edi, %k4
1752 ; FASTISEL-NEXT:    kandd %k4, %k0, %k0
1753 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1754 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1755 ; FASTISEL-NEXT:    kshiftrd $17, %k1, %k1
1756 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1757 ; FASTISEL-NEXT:    movl $-32769, %edi ## imm = 0xFFFF7FFF
1758 ; FASTISEL-NEXT:    kmovd %edi, %k3
1759 ; FASTISEL-NEXT:    kandd %k3, %k0, %k0
1760 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
1761 ; FASTISEL-NEXT:    kshiftld $31, %k7, %k7
1762 ; FASTISEL-NEXT:    kshiftrd $16, %k7, %k7
1763 ; FASTISEL-NEXT:    kord %k7, %k0, %k7
1764 ; FASTISEL-NEXT:    movl $-65537, %edi ## imm = 0xFFFEFFFF
1765 ; FASTISEL-NEXT:    kmovd %edi, %k2
1766 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
1767 ; FASTISEL-NEXT:    kandd %k2, %k7, %k7
1768 ; FASTISEL-NEXT:    kshiftld $31, %k0, %k0
1769 ; FASTISEL-NEXT:    kshiftrd $15, %k0, %k0
1770 ; FASTISEL-NEXT:    kord %k0, %k7, %k0
1771 ; FASTISEL-NEXT:    kmovd %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill
1772 ; FASTISEL-NEXT:    kmovd %edx, %k0
1773 ; FASTISEL-NEXT:    kshiftld $31, %k0, %k0
1774 ; FASTISEL-NEXT:    kshiftrd $30, %k0, %k0
1775 ; FASTISEL-NEXT:    kmovd %esi, %k7
1776 ; FASTISEL-NEXT:    kshiftld $31, %k7, %k7
1777 ; FASTISEL-NEXT:    kshiftrd $31, %k7, %k7
1778 ; FASTISEL-NEXT:    kord %k0, %k7, %k0
1779 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1780 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1781 ; FASTISEL-NEXT:    kmovd %ecx, %k7
1782 ; FASTISEL-NEXT:    kshiftld $31, %k7, %k7
1783 ; FASTISEL-NEXT:    kshiftrd $29, %k7, %k7
1784 ; FASTISEL-NEXT:    kord %k7, %k0, %k0
1785 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1786 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1787 ; FASTISEL-NEXT:    kmovd %r8d, %k7
1788 ; FASTISEL-NEXT:    kshiftld $31, %k7, %k7
1789 ; FASTISEL-NEXT:    kshiftrd $28, %k7, %k7
1790 ; FASTISEL-NEXT:    kord %k7, %k0, %k0
1791 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1792 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1793 ; FASTISEL-NEXT:    kmovd %r9d, %k7
1794 ; FASTISEL-NEXT:    kshiftld $31, %k7, %k7
1795 ; FASTISEL-NEXT:    kshiftrd $27, %k7, %k7
1796 ; FASTISEL-NEXT:    kord %k7, %k0, %k0
1797 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
1798 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1799 ; FASTISEL-NEXT:    kandd %k1, %k0, %k1
1800 ; FASTISEL-NEXT:    kshiftld $31, %k7, %k7
1801 ; FASTISEL-NEXT:    kshiftrd $26, %k7, %k7
1802 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
1803 ; FASTISEL-NEXT:    kord %k7, %k1, %k1
1804 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k7 ## 4-byte Reload
1805 ; FASTISEL-NEXT:    kandd %k7, %k1, %k1
1806 ; FASTISEL-NEXT:    kshiftld $31, %k0, %k0
1807 ; FASTISEL-NEXT:    kshiftrd $25, %k0, %k0
1808 ; FASTISEL-NEXT:    kord %k0, %k1, %k0
1809 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1810 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1811 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1812 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1813 ; FASTISEL-NEXT:    kshiftrd $24, %k1, %k1
1814 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1815 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1816 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1817 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1818 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1819 ; FASTISEL-NEXT:    kshiftrd $23, %k1, %k1
1820 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1821 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1822 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1823 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1824 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1825 ; FASTISEL-NEXT:    kshiftrd $22, %k1, %k1
1826 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1827 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1828 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1829 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1830 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1831 ; FASTISEL-NEXT:    kshiftrd $21, %k1, %k1
1832 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1833 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1834 ; FASTISEL-NEXT:    kandd %k6, %k0, %k0
1835 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1836 ; FASTISEL-NEXT:    kshiftrd $20, %k1, %k1
1837 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
1838 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1839 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1840 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1841 ; FASTISEL-NEXT:    kshiftld $31, %k6, %k1
1842 ; FASTISEL-NEXT:    kshiftrd $19, %k1, %k1
1843 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1844 ; FASTISEL-NEXT:    kandd %k5, %k0, %k0
1845 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1846 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1847 ; FASTISEL-NEXT:    kshiftrd $18, %k1, %k1
1848 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1849 ; FASTISEL-NEXT:    kandd %k4, %k0, %k0
1850 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1851 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1852 ; FASTISEL-NEXT:    kshiftrd $17, %k1, %k1
1853 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1854 ; FASTISEL-NEXT:    kandd %k3, %k0, %k0
1855 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1856 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1857 ; FASTISEL-NEXT:    kshiftrd $16, %k1, %k1
1858 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1859 ; FASTISEL-NEXT:    kandd %k2, %k0, %k0
1860 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1861 ; FASTISEL-NEXT:    kshiftld $31, %k1, %k1
1862 ; FASTISEL-NEXT:    kshiftrd $15, %k1, %k1
1863 ; FASTISEL-NEXT:    kord %k1, %k0, %k0
1864 ; FASTISEL-NEXT:    kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload
1865 ; FASTISEL-NEXT:    kandd %k1, %k0, %k0
1866 ; FASTISEL-NEXT:    kshiftrd $16, %k0, %k1
1867 ; FASTISEL-NEXT:    kmovd %k1, %edx
1868 ; FASTISEL-NEXT:    kshiftrd $1, %k0, %k1
1869 ; FASTISEL-NEXT:    kmovd %k1, %r9d
1870 ; FASTISEL-NEXT:    kshiftrd $2, %k0, %k1
1871 ; FASTISEL-NEXT:    kmovd %k1, %r8d
1872 ; FASTISEL-NEXT:    kshiftrd $3, %k0, %k1
1873 ; FASTISEL-NEXT:    kmovd %k1, %esi
1874 ; FASTISEL-NEXT:    kshiftrd $4, %k0, %k1
1875 ; FASTISEL-NEXT:    kmovd %k1, %edi
1876 ; FASTISEL-NEXT:    kshiftrd $5, %k0, %k1
1877 ; FASTISEL-NEXT:    kmovd %k1, %ecx
1878 ; FASTISEL-NEXT:    kshiftrd $6, %k0, %k1
1879 ; FASTISEL-NEXT:    kmovd %k1, %r10d
1880 ; FASTISEL-NEXT:    kshiftrd $7, %k0, %k1
1881 ; FASTISEL-NEXT:    kmovd %k1, %ebx
1882 ; FASTISEL-NEXT:    kshiftrd $8, %k0, %k1
1883 ; FASTISEL-NEXT:    kmovd %k1, %ebp
1884 ; FASTISEL-NEXT:    kshiftrd $9, %k0, %k1
1885 ; FASTISEL-NEXT:    kmovd %k1, %r14d
1886 ; FASTISEL-NEXT:    kshiftrd $10, %k0, %k1
1887 ; FASTISEL-NEXT:    kmovd %k1, %r11d
1888 ; FASTISEL-NEXT:    kshiftrd $11, %k0, %k1
1889 ; FASTISEL-NEXT:    kmovd %k1, %r15d
1890 ; FASTISEL-NEXT:    kshiftrd $12, %k0, %k1
1891 ; FASTISEL-NEXT:    kmovd %k1, %r12d
1892 ; FASTISEL-NEXT:    kshiftrd $13, %k0, %k1
1893 ; FASTISEL-NEXT:    kmovd %k1, %r13d
1894 ; FASTISEL-NEXT:    kshiftrd $14, %k0, %k1
1895 ; FASTISEL-NEXT:    andl $1, %edx
1896 ; FASTISEL-NEXT:    movb %dl, 2(%rax)
1897 ; FASTISEL-NEXT:    kmovd %k0, %edx
1898 ; FASTISEL-NEXT:    andl $1, %edx
1899 ; FASTISEL-NEXT:    andl $1, %r9d
1900 ; FASTISEL-NEXT:    leal (%rdx,%r9,2), %r9d
1901 ; FASTISEL-NEXT:    kmovd %k1, %edx
1902 ; FASTISEL-NEXT:    kshiftrd $15, %k0, %k0
1903 ; FASTISEL-NEXT:    andl $1, %r8d
1904 ; FASTISEL-NEXT:    leal (%r9,%r8,4), %r9d
1905 ; FASTISEL-NEXT:    kmovd %k0, %r8d
1906 ; FASTISEL-NEXT:    andl $1, %esi
1907 ; FASTISEL-NEXT:    leal (%r9,%rsi,8), %esi
1908 ; FASTISEL-NEXT:    andl $1, %edi
1909 ; FASTISEL-NEXT:    shll $4, %edi
1910 ; FASTISEL-NEXT:    orl %esi, %edi
1911 ; FASTISEL-NEXT:    andl $1, %ecx
1912 ; FASTISEL-NEXT:    shll $5, %ecx
1913 ; FASTISEL-NEXT:    orl %edi, %ecx
1914 ; FASTISEL-NEXT:    andl $1, %r10d
1915 ; FASTISEL-NEXT:    shll $6, %r10d
1916 ; FASTISEL-NEXT:    andl $1, %ebx
1917 ; FASTISEL-NEXT:    shll $7, %ebx
1918 ; FASTISEL-NEXT:    orl %r10d, %ebx
1919 ; FASTISEL-NEXT:    andl $1, %ebp
1920 ; FASTISEL-NEXT:    shll $8, %ebp
1921 ; FASTISEL-NEXT:    orl %ebx, %ebp
1922 ; FASTISEL-NEXT:    andl $1, %r14d
1923 ; FASTISEL-NEXT:    shll $9, %r14d
1924 ; FASTISEL-NEXT:    orl %ebp, %r14d
1925 ; FASTISEL-NEXT:    andl $1, %r11d
1926 ; FASTISEL-NEXT:    shll $10, %r11d
1927 ; FASTISEL-NEXT:    orl %r14d, %r11d
1928 ; FASTISEL-NEXT:    orl %ecx, %r11d
1929 ; FASTISEL-NEXT:    andl $1, %r15d
1930 ; FASTISEL-NEXT:    shll $11, %r15d
1931 ; FASTISEL-NEXT:    andl $1, %r12d
1932 ; FASTISEL-NEXT:    shll $12, %r12d
1933 ; FASTISEL-NEXT:    orl %r15d, %r12d
1934 ; FASTISEL-NEXT:    andl $1, %r13d
1935 ; FASTISEL-NEXT:    shll $13, %r13d
1936 ; FASTISEL-NEXT:    orl %r12d, %r13d
1937 ; FASTISEL-NEXT:    andl $1, %edx
1938 ; FASTISEL-NEXT:    shll $14, %edx
1939 ; FASTISEL-NEXT:    orl %r13d, %edx
1940 ; FASTISEL-NEXT:    andl $1, %r8d
1941 ; FASTISEL-NEXT:    shll $15, %r8d
1942 ; FASTISEL-NEXT:    orl %edx, %r8d
1943 ; FASTISEL-NEXT:    orl %r11d, %r8d
1944 ; FASTISEL-NEXT:    movw %r8w, (%rax)
1945 ; FASTISEL-NEXT:    popq %rbx
1946 ; FASTISEL-NEXT:    popq %r12
1947 ; FASTISEL-NEXT:    popq %r13
1948 ; FASTISEL-NEXT:    popq %r14
1949 ; FASTISEL-NEXT:    popq %r15
1950 ; FASTISEL-NEXT:    popq %rbp
1951 ; FASTISEL-NEXT:    retq
1952   %c = and <17 x i1> %a, %b
1953   ret <17 x i1> %c
1956 define <7 x i1> @test17(<7 x i1> %a, <7 x i1> %b, <7 x i1> %c, <7 x i1> %d, <7 x i1>%e, <7 x i1>%f, <7 x i1> %g, <7 x i1> %h, <7 x i1> %i) nounwind {
1957 ; KNL-LABEL: test17:
1958 ; KNL:       ## %bb.0:
1959 ; KNL-NEXT:    movq %rdi, %rax
1960 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
1961 ; KNL-NEXT:    andl $1, %edi
1962 ; KNL-NEXT:    kmovw %edi, %k0
1963 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
1964 ; KNL-NEXT:    kmovw %edi, %k1
1965 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
1966 ; KNL-NEXT:    kshiftrw $14, %k1, %k1
1967 ; KNL-NEXT:    korw %k1, %k0, %k0
1968 ; KNL-NEXT:    movw $-5, %di
1969 ; KNL-NEXT:    kmovw %edi, %k1
1970 ; KNL-NEXT:    kandw %k1, %k0, %k0
1971 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
1972 ; KNL-NEXT:    kmovw %edi, %k2
1973 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1974 ; KNL-NEXT:    kshiftrw $13, %k2, %k2
1975 ; KNL-NEXT:    korw %k2, %k0, %k0
1976 ; KNL-NEXT:    movw $-9, %di
1977 ; KNL-NEXT:    kmovw %edi, %k2
1978 ; KNL-NEXT:    kandw %k2, %k0, %k0
1979 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
1980 ; KNL-NEXT:    kmovw %edi, %k3
1981 ; KNL-NEXT:    kshiftlw $15, %k3, %k3
1982 ; KNL-NEXT:    kshiftrw $12, %k3, %k3
1983 ; KNL-NEXT:    korw %k3, %k0, %k0
1984 ; KNL-NEXT:    movw $-17, %di
1985 ; KNL-NEXT:    kmovw %edi, %k3
1986 ; KNL-NEXT:    kandw %k3, %k0, %k0
1987 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
1988 ; KNL-NEXT:    kmovw %edi, %k4
1989 ; KNL-NEXT:    kshiftlw $15, %k4, %k4
1990 ; KNL-NEXT:    kshiftrw $11, %k4, %k4
1991 ; KNL-NEXT:    korw %k4, %k0, %k0
1992 ; KNL-NEXT:    movw $-33, %di
1993 ; KNL-NEXT:    kmovw %edi, %k4
1994 ; KNL-NEXT:    kandw %k4, %k0, %k0
1995 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
1996 ; KNL-NEXT:    kmovw %edi, %k5
1997 ; KNL-NEXT:    kshiftlw $15, %k5, %k5
1998 ; KNL-NEXT:    kshiftrw $10, %k5, %k5
1999 ; KNL-NEXT:    korw %k5, %k0, %k0
2000 ; KNL-NEXT:    movw $-65, %di
2001 ; KNL-NEXT:    kmovw %edi, %k5
2002 ; KNL-NEXT:    kandw %k5, %k0, %k0
2003 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2004 ; KNL-NEXT:    kmovw %edi, %k6
2005 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2006 ; KNL-NEXT:    kshiftrw $9, %k6, %k6
2007 ; KNL-NEXT:    korw %k6, %k0, %k0
2008 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2009 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2010 ; KNL-NEXT:    andl $1, %edi
2011 ; KNL-NEXT:    kmovw %edi, %k0
2012 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2013 ; KNL-NEXT:    kmovw %edi, %k6
2014 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2015 ; KNL-NEXT:    kshiftrw $14, %k6, %k6
2016 ; KNL-NEXT:    korw %k6, %k0, %k0
2017 ; KNL-NEXT:    kandw %k1, %k0, %k0
2018 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2019 ; KNL-NEXT:    kmovw %edi, %k6
2020 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2021 ; KNL-NEXT:    kshiftrw $13, %k6, %k6
2022 ; KNL-NEXT:    korw %k6, %k0, %k0
2023 ; KNL-NEXT:    kandw %k2, %k0, %k0
2024 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2025 ; KNL-NEXT:    kmovw %edi, %k6
2026 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2027 ; KNL-NEXT:    kshiftrw $12, %k6, %k6
2028 ; KNL-NEXT:    korw %k6, %k0, %k0
2029 ; KNL-NEXT:    kandw %k3, %k0, %k0
2030 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2031 ; KNL-NEXT:    kmovw %edi, %k6
2032 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2033 ; KNL-NEXT:    kshiftrw $11, %k6, %k6
2034 ; KNL-NEXT:    korw %k6, %k0, %k0
2035 ; KNL-NEXT:    kandw %k4, %k0, %k0
2036 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2037 ; KNL-NEXT:    kmovw %edi, %k6
2038 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2039 ; KNL-NEXT:    kshiftrw $10, %k6, %k6
2040 ; KNL-NEXT:    korw %k6, %k0, %k0
2041 ; KNL-NEXT:    kandw %k5, %k0, %k0
2042 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2043 ; KNL-NEXT:    kmovw %edi, %k6
2044 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2045 ; KNL-NEXT:    kshiftrw $9, %k6, %k6
2046 ; KNL-NEXT:    korw %k6, %k0, %k0
2047 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2048 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2049 ; KNL-NEXT:    andl $1, %edi
2050 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
2051 ; KNL-NEXT:    kmovw %r10d, %k0
2052 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
2053 ; KNL-NEXT:    kshiftrw $14, %k0, %k0
2054 ; KNL-NEXT:    kmovw %edi, %k6
2055 ; KNL-NEXT:    korw %k0, %k6, %k0
2056 ; KNL-NEXT:    kandw %k1, %k0, %k0
2057 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2058 ; KNL-NEXT:    kmovw %edi, %k6
2059 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2060 ; KNL-NEXT:    kshiftrw $13, %k6, %k6
2061 ; KNL-NEXT:    korw %k6, %k0, %k0
2062 ; KNL-NEXT:    kandw %k2, %k0, %k0
2063 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2064 ; KNL-NEXT:    kmovw %edi, %k6
2065 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2066 ; KNL-NEXT:    kshiftrw $12, %k6, %k6
2067 ; KNL-NEXT:    korw %k6, %k0, %k0
2068 ; KNL-NEXT:    kandw %k3, %k0, %k0
2069 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2070 ; KNL-NEXT:    kmovw %edi, %k6
2071 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2072 ; KNL-NEXT:    kshiftrw $11, %k6, %k6
2073 ; KNL-NEXT:    korw %k6, %k0, %k0
2074 ; KNL-NEXT:    kandw %k4, %k0, %k0
2075 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2076 ; KNL-NEXT:    kmovw %edi, %k6
2077 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2078 ; KNL-NEXT:    kshiftrw $10, %k6, %k6
2079 ; KNL-NEXT:    korw %k6, %k0, %k0
2080 ; KNL-NEXT:    kandw %k5, %k0, %k0
2081 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2082 ; KNL-NEXT:    kmovw %edi, %k6
2083 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2084 ; KNL-NEXT:    kshiftrw $9, %k6, %k6
2085 ; KNL-NEXT:    korw %k6, %k0, %k0
2086 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2087 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2088 ; KNL-NEXT:    andl $1, %edi
2089 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
2090 ; KNL-NEXT:    kmovw %r10d, %k0
2091 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
2092 ; KNL-NEXT:    kshiftrw $14, %k0, %k0
2093 ; KNL-NEXT:    kmovw %edi, %k6
2094 ; KNL-NEXT:    korw %k0, %k6, %k0
2095 ; KNL-NEXT:    kandw %k1, %k0, %k0
2096 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2097 ; KNL-NEXT:    kmovw %edi, %k6
2098 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2099 ; KNL-NEXT:    kshiftrw $13, %k6, %k6
2100 ; KNL-NEXT:    korw %k6, %k0, %k0
2101 ; KNL-NEXT:    kandw %k2, %k0, %k0
2102 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2103 ; KNL-NEXT:    kmovw %edi, %k6
2104 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2105 ; KNL-NEXT:    kshiftrw $12, %k6, %k6
2106 ; KNL-NEXT:    korw %k6, %k0, %k0
2107 ; KNL-NEXT:    kandw %k3, %k0, %k0
2108 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2109 ; KNL-NEXT:    kmovw %edi, %k6
2110 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2111 ; KNL-NEXT:    kshiftrw $11, %k6, %k6
2112 ; KNL-NEXT:    korw %k6, %k0, %k0
2113 ; KNL-NEXT:    kandw %k4, %k0, %k0
2114 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2115 ; KNL-NEXT:    kmovw %edi, %k6
2116 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2117 ; KNL-NEXT:    kshiftrw $10, %k6, %k6
2118 ; KNL-NEXT:    korw %k6, %k0, %k0
2119 ; KNL-NEXT:    kandw %k5, %k0, %k0
2120 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2121 ; KNL-NEXT:    kmovw %edi, %k6
2122 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2123 ; KNL-NEXT:    kshiftrw $9, %k6, %k6
2124 ; KNL-NEXT:    korw %k6, %k0, %k0
2125 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2126 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2127 ; KNL-NEXT:    andl $1, %edi
2128 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
2129 ; KNL-NEXT:    kmovw %r10d, %k0
2130 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
2131 ; KNL-NEXT:    kshiftrw $14, %k0, %k0
2132 ; KNL-NEXT:    kmovw %edi, %k6
2133 ; KNL-NEXT:    korw %k0, %k6, %k0
2134 ; KNL-NEXT:    kandw %k1, %k0, %k0
2135 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2136 ; KNL-NEXT:    kmovw %edi, %k6
2137 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2138 ; KNL-NEXT:    kshiftrw $13, %k6, %k6
2139 ; KNL-NEXT:    korw %k6, %k0, %k0
2140 ; KNL-NEXT:    kandw %k2, %k0, %k0
2141 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2142 ; KNL-NEXT:    kmovw %edi, %k6
2143 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2144 ; KNL-NEXT:    kshiftrw $12, %k6, %k6
2145 ; KNL-NEXT:    korw %k6, %k0, %k0
2146 ; KNL-NEXT:    kandw %k3, %k0, %k0
2147 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2148 ; KNL-NEXT:    kmovw %edi, %k6
2149 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2150 ; KNL-NEXT:    kshiftrw $11, %k6, %k6
2151 ; KNL-NEXT:    korw %k6, %k0, %k0
2152 ; KNL-NEXT:    kandw %k4, %k0, %k0
2153 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2154 ; KNL-NEXT:    kmovw %edi, %k6
2155 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2156 ; KNL-NEXT:    kshiftrw $10, %k6, %k6
2157 ; KNL-NEXT:    korw %k6, %k0, %k0
2158 ; KNL-NEXT:    kandw %k5, %k0, %k0
2159 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2160 ; KNL-NEXT:    kmovw %edi, %k6
2161 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2162 ; KNL-NEXT:    kshiftrw $9, %k6, %k6
2163 ; KNL-NEXT:    korw %k6, %k0, %k0
2164 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2165 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2166 ; KNL-NEXT:    andl $1, %edi
2167 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
2168 ; KNL-NEXT:    kmovw %r10d, %k0
2169 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
2170 ; KNL-NEXT:    kshiftrw $14, %k0, %k0
2171 ; KNL-NEXT:    kmovw %edi, %k6
2172 ; KNL-NEXT:    korw %k0, %k6, %k0
2173 ; KNL-NEXT:    kandw %k1, %k0, %k0
2174 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2175 ; KNL-NEXT:    kmovw %edi, %k6
2176 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2177 ; KNL-NEXT:    kshiftrw $13, %k6, %k6
2178 ; KNL-NEXT:    korw %k6, %k0, %k0
2179 ; KNL-NEXT:    kandw %k2, %k0, %k0
2180 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2181 ; KNL-NEXT:    kmovw %edi, %k6
2182 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2183 ; KNL-NEXT:    kshiftrw $12, %k6, %k6
2184 ; KNL-NEXT:    korw %k6, %k0, %k0
2185 ; KNL-NEXT:    kandw %k3, %k0, %k0
2186 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2187 ; KNL-NEXT:    kmovw %edi, %k6
2188 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2189 ; KNL-NEXT:    kshiftrw $11, %k6, %k6
2190 ; KNL-NEXT:    korw %k6, %k0, %k0
2191 ; KNL-NEXT:    kandw %k4, %k0, %k0
2192 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2193 ; KNL-NEXT:    kmovw %edi, %k6
2194 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2195 ; KNL-NEXT:    kshiftrw $10, %k6, %k6
2196 ; KNL-NEXT:    korw %k6, %k0, %k0
2197 ; KNL-NEXT:    kandw %k5, %k0, %k0
2198 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2199 ; KNL-NEXT:    kmovw %edi, %k6
2200 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2201 ; KNL-NEXT:    kshiftrw $9, %k6, %k6
2202 ; KNL-NEXT:    korw %k6, %k0, %k0
2203 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2204 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2205 ; KNL-NEXT:    andl $1, %edi
2206 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %r10d
2207 ; KNL-NEXT:    kmovw %r10d, %k0
2208 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
2209 ; KNL-NEXT:    kshiftrw $14, %k0, %k0
2210 ; KNL-NEXT:    kmovw %edi, %k6
2211 ; KNL-NEXT:    korw %k0, %k6, %k0
2212 ; KNL-NEXT:    kandw %k1, %k0, %k0
2213 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2214 ; KNL-NEXT:    kmovw %edi, %k6
2215 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2216 ; KNL-NEXT:    kshiftrw $13, %k6, %k6
2217 ; KNL-NEXT:    korw %k6, %k0, %k0
2218 ; KNL-NEXT:    kandw %k2, %k0, %k0
2219 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2220 ; KNL-NEXT:    kmovw %edi, %k6
2221 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2222 ; KNL-NEXT:    kshiftrw $12, %k6, %k6
2223 ; KNL-NEXT:    korw %k6, %k0, %k0
2224 ; KNL-NEXT:    kandw %k3, %k0, %k0
2225 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2226 ; KNL-NEXT:    kmovw %edi, %k6
2227 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2228 ; KNL-NEXT:    kshiftrw $11, %k6, %k6
2229 ; KNL-NEXT:    korw %k6, %k0, %k0
2230 ; KNL-NEXT:    kandw %k4, %k0, %k0
2231 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2232 ; KNL-NEXT:    kmovw %edi, %k6
2233 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2234 ; KNL-NEXT:    kshiftrw $10, %k6, %k6
2235 ; KNL-NEXT:    korw %k6, %k0, %k0
2236 ; KNL-NEXT:    kandw %k5, %k0, %k0
2237 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edi
2238 ; KNL-NEXT:    kmovw %edi, %k6
2239 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2240 ; KNL-NEXT:    kshiftrw $9, %k6, %k6
2241 ; KNL-NEXT:    korw %k6, %k0, %k0
2242 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2243 ; KNL-NEXT:    andl $1, %esi
2244 ; KNL-NEXT:    kmovw %edx, %k0
2245 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
2246 ; KNL-NEXT:    kshiftrw $14, %k0, %k0
2247 ; KNL-NEXT:    kmovw %esi, %k7
2248 ; KNL-NEXT:    korw %k0, %k7, %k0
2249 ; KNL-NEXT:    kandw %k1, %k0, %k0
2250 ; KNL-NEXT:    kmovw %ecx, %k7
2251 ; KNL-NEXT:    kshiftlw $15, %k7, %k7
2252 ; KNL-NEXT:    kshiftrw $13, %k7, %k7
2253 ; KNL-NEXT:    korw %k7, %k0, %k0
2254 ; KNL-NEXT:    kandw %k2, %k0, %k0
2255 ; KNL-NEXT:    kmovw %r8d, %k7
2256 ; KNL-NEXT:    kshiftlw $15, %k7, %k7
2257 ; KNL-NEXT:    kshiftrw $12, %k7, %k7
2258 ; KNL-NEXT:    korw %k7, %k0, %k0
2259 ; KNL-NEXT:    kandw %k3, %k0, %k0
2260 ; KNL-NEXT:    kmovw %r9d, %k7
2261 ; KNL-NEXT:    kshiftlw $15, %k7, %k7
2262 ; KNL-NEXT:    kshiftrw $11, %k7, %k7
2263 ; KNL-NEXT:    korw %k7, %k0, %k0
2264 ; KNL-NEXT:    kandw %k4, %k0, %k0
2265 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
2266 ; KNL-NEXT:    kmovw %ecx, %k7
2267 ; KNL-NEXT:    kshiftlw $15, %k7, %k7
2268 ; KNL-NEXT:    kshiftrw $10, %k7, %k7
2269 ; KNL-NEXT:    korw %k7, %k0, %k0
2270 ; KNL-NEXT:    kandw %k5, %k0, %k0
2271 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
2272 ; KNL-NEXT:    kmovw %ecx, %k7
2273 ; KNL-NEXT:    kshiftlw $15, %k7, %k7
2274 ; KNL-NEXT:    kshiftrw $9, %k7, %k7
2275 ; KNL-NEXT:    korw %k7, %k0, %k0
2276 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
2277 ; KNL-NEXT:    andl $1, %ecx
2278 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %edx
2279 ; KNL-NEXT:    kmovw %edx, %k7
2280 ; KNL-NEXT:    kshiftlw $15, %k7, %k7
2281 ; KNL-NEXT:    kshiftrw $14, %k7, %k7
2282 ; KNL-NEXT:    kmovw %ecx, %k6
2283 ; KNL-NEXT:    korw %k7, %k6, %k6
2284 ; KNL-NEXT:    kandw %k1, %k6, %k1
2285 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
2286 ; KNL-NEXT:    kmovw %ecx, %k6
2287 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
2288 ; KNL-NEXT:    kshiftrw $13, %k6, %k6
2289 ; KNL-NEXT:    korw %k6, %k1, %k1
2290 ; KNL-NEXT:    kandw %k2, %k1, %k1
2291 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
2292 ; KNL-NEXT:    kmovw %ecx, %k2
2293 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
2294 ; KNL-NEXT:    kshiftrw $12, %k2, %k2
2295 ; KNL-NEXT:    korw %k2, %k1, %k1
2296 ; KNL-NEXT:    kandw %k3, %k1, %k1
2297 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
2298 ; KNL-NEXT:    kmovw %ecx, %k2
2299 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
2300 ; KNL-NEXT:    kshiftrw $11, %k2, %k2
2301 ; KNL-NEXT:    korw %k2, %k1, %k1
2302 ; KNL-NEXT:    kandw %k4, %k1, %k1
2303 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
2304 ; KNL-NEXT:    kmovw %ecx, %k2
2305 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
2306 ; KNL-NEXT:    kshiftrw $10, %k2, %k2
2307 ; KNL-NEXT:    korw %k2, %k1, %k1
2308 ; KNL-NEXT:    kandw %k5, %k1, %k1
2309 ; KNL-NEXT:    movzbl {{[0-9]+}}(%rsp), %ecx
2310 ; KNL-NEXT:    kmovw %ecx, %k2
2311 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
2312 ; KNL-NEXT:    kshiftrw $9, %k2, %k2
2313 ; KNL-NEXT:    korw %k2, %k1, %k1
2314 ; KNL-NEXT:    kandw %k1, %k0, %k0
2315 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2316 ; KNL-NEXT:    kandw %k1, %k0, %k0
2317 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2318 ; KNL-NEXT:    kandw %k1, %k0, %k0
2319 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2320 ; KNL-NEXT:    kandw %k1, %k0, %k0
2321 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2322 ; KNL-NEXT:    kandw %k1, %k0, %k0
2323 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2324 ; KNL-NEXT:    kandw %k1, %k0, %k0
2325 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2326 ; KNL-NEXT:    kandw %k1, %k0, %k0
2327 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2328 ; KNL-NEXT:    kandw %k1, %k0, %k0
2329 ; KNL-NEXT:    kshiftrw $6, %k0, %k1
2330 ; KNL-NEXT:    kmovw %k1, %ecx
2331 ; KNL-NEXT:    kshiftrw $5, %k0, %k1
2332 ; KNL-NEXT:    kmovw %k1, %edx
2333 ; KNL-NEXT:    kshiftrw $4, %k0, %k1
2334 ; KNL-NEXT:    kmovw %k1, %esi
2335 ; KNL-NEXT:    kshiftrw $3, %k0, %k1
2336 ; KNL-NEXT:    kmovw %k1, %edi
2337 ; KNL-NEXT:    kshiftrw $2, %k0, %k1
2338 ; KNL-NEXT:    kmovw %k1, %r8d
2339 ; KNL-NEXT:    kshiftrw $1, %k0, %k1
2340 ; KNL-NEXT:    kmovw %k1, %r9d
2341 ; KNL-NEXT:    kmovw %k0, %r10d
2342 ; KNL-NEXT:    andb $1, %r10b
2343 ; KNL-NEXT:    andb $1, %r9b
2344 ; KNL-NEXT:    addb %r9b, %r9b
2345 ; KNL-NEXT:    orb %r10b, %r9b
2346 ; KNL-NEXT:    andb $1, %r8b
2347 ; KNL-NEXT:    shlb $2, %r8b
2348 ; KNL-NEXT:    orb %r9b, %r8b
2349 ; KNL-NEXT:    andb $1, %dil
2350 ; KNL-NEXT:    shlb $3, %dil
2351 ; KNL-NEXT:    orb %r8b, %dil
2352 ; KNL-NEXT:    andb $1, %sil
2353 ; KNL-NEXT:    shlb $4, %sil
2354 ; KNL-NEXT:    orb %dil, %sil
2355 ; KNL-NEXT:    andb $1, %dl
2356 ; KNL-NEXT:    shlb $5, %dl
2357 ; KNL-NEXT:    orb %sil, %dl
2358 ; KNL-NEXT:    shlb $6, %cl
2359 ; KNL-NEXT:    orb %dl, %cl
2360 ; KNL-NEXT:    andb $127, %cl
2361 ; KNL-NEXT:    movb %cl, (%rax)
2362 ; KNL-NEXT:    retq
2364 ; SKX-LABEL: test17:
2365 ; SKX:       ## %bb.0:
2366 ; SKX-NEXT:    movq %rdi, %rax
2367 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
2368 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2369 ; SKX-NEXT:    kshiftlb $7, %k0, %k0
2370 ; SKX-NEXT:    kshiftrb $6, %k0, %k0
2371 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2372 ; SKX-NEXT:    kshiftrb $7, %k1, %k1
2373 ; SKX-NEXT:    korb %k0, %k1, %k0
2374 ; SKX-NEXT:    movb $-5, %dil
2375 ; SKX-NEXT:    kmovd %edi, %k1
2376 ; SKX-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2377 ; SKX-NEXT:    kandb %k1, %k0, %k0
2378 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2379 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2380 ; SKX-NEXT:    kshiftrb $5, %k1, %k1
2381 ; SKX-NEXT:    korb %k1, %k0, %k0
2382 ; SKX-NEXT:    movb $-9, %dil
2383 ; SKX-NEXT:    kmovd %edi, %k6
2384 ; SKX-NEXT:    kandb %k6, %k0, %k0
2385 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
2386 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
2387 ; SKX-NEXT:    kshiftrb $4, %k2, %k2
2388 ; SKX-NEXT:    korb %k2, %k0, %k0
2389 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
2390 ; SKX-NEXT:    movb $-17, %dil
2391 ; SKX-NEXT:    kmovd %edi, %k3
2392 ; SKX-NEXT:    kandb %k3, %k0, %k0
2393 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
2394 ; SKX-NEXT:    kshiftrb $3, %k2, %k2
2395 ; SKX-NEXT:    korb %k2, %k0, %k0
2396 ; SKX-NEXT:    movb $-33, %dil
2397 ; SKX-NEXT:    kmovd %edi, %k1
2398 ; SKX-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2399 ; SKX-NEXT:    kandb %k1, %k0, %k0
2400 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
2401 ; SKX-NEXT:    kshiftlb $7, %k4, %k4
2402 ; SKX-NEXT:    kshiftrb $2, %k4, %k4
2403 ; SKX-NEXT:    korb %k4, %k0, %k0
2404 ; SKX-NEXT:    movb $-65, %dil
2405 ; SKX-NEXT:    kmovd %edi, %k1
2406 ; SKX-NEXT:    kandb %k1, %k0, %k0
2407 ; SKX-NEXT:    kmovq %k1, %k2
2408 ; SKX-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2409 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2410 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2411 ; SKX-NEXT:    kshiftrb $1, %k5, %k5
2412 ; SKX-NEXT:    korb %k5, %k0, %k5
2413 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
2414 ; SKX-NEXT:    kshiftlb $7, %k0, %k0
2415 ; SKX-NEXT:    kshiftrb $6, %k0, %k0
2416 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
2417 ; SKX-NEXT:    kshiftlb $7, %k7, %k7
2418 ; SKX-NEXT:    kshiftrb $7, %k7, %k7
2419 ; SKX-NEXT:    korb %k0, %k7, %k0
2420 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 2-byte Reload
2421 ; SKX-NEXT:    kandb %k4, %k0, %k0
2422 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
2423 ; SKX-NEXT:    kshiftlb $7, %k7, %k7
2424 ; SKX-NEXT:    kshiftrb $5, %k7, %k7
2425 ; SKX-NEXT:    korb %k7, %k0, %k0
2426 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
2427 ; SKX-NEXT:    kandb %k6, %k0, %k1
2428 ; SKX-NEXT:    kshiftlb $7, %k7, %k7
2429 ; SKX-NEXT:    kshiftrb $4, %k7, %k7
2430 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
2431 ; SKX-NEXT:    korb %k7, %k1, %k1
2432 ; SKX-NEXT:    kandb %k3, %k1, %k1
2433 ; SKX-NEXT:    kshiftlb $7, %k0, %k0
2434 ; SKX-NEXT:    kshiftrb $3, %k0, %k0
2435 ; SKX-NEXT:    korb %k0, %k1, %k0
2436 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2437 ; SKX-NEXT:    kandb %k1, %k0, %k0
2438 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2439 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2440 ; SKX-NEXT:    kshiftrb $2, %k1, %k1
2441 ; SKX-NEXT:    korb %k1, %k0, %k0
2442 ; SKX-NEXT:    kandb %k2, %k0, %k0
2443 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2444 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2445 ; SKX-NEXT:    kshiftrb $1, %k1, %k1
2446 ; SKX-NEXT:    korb %k1, %k0, %k0
2447 ; SKX-NEXT:    kandb %k5, %k0, %k0
2448 ; SKX-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2449 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
2450 ; SKX-NEXT:    kshiftlb $7, %k0, %k0
2451 ; SKX-NEXT:    kshiftrb $6, %k0, %k0
2452 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2453 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2454 ; SKX-NEXT:    kshiftrb $7, %k1, %k1
2455 ; SKX-NEXT:    korb %k0, %k1, %k0
2456 ; SKX-NEXT:    kmovq %k4, %k2
2457 ; SKX-NEXT:    kandb %k4, %k0, %k0
2458 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2459 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2460 ; SKX-NEXT:    kshiftrb $5, %k1, %k1
2461 ; SKX-NEXT:    korb %k1, %k0, %k0
2462 ; SKX-NEXT:    kmovq %k6, %k7
2463 ; SKX-NEXT:    kmovw %k6, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2464 ; SKX-NEXT:    kandb %k6, %k0, %k0
2465 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2466 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2467 ; SKX-NEXT:    kshiftrb $4, %k1, %k1
2468 ; SKX-NEXT:    korb %k1, %k0, %k0
2469 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2470 ; SKX-NEXT:    kandb %k3, %k0, %k0
2471 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2472 ; SKX-NEXT:    kshiftrb $3, %k1, %k1
2473 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2474 ; SKX-NEXT:    korb %k1, %k0, %k0
2475 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 2-byte Reload
2476 ; SKX-NEXT:    kandb %k4, %k0, %k0
2477 ; SKX-NEXT:    kshiftlb $7, %k5, %k1
2478 ; SKX-NEXT:    kshiftrb $2, %k1, %k1
2479 ; SKX-NEXT:    korb %k1, %k0, %k0
2480 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
2481 ; SKX-NEXT:    kandb %k6, %k0, %k0
2482 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2483 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2484 ; SKX-NEXT:    kshiftrb $1, %k1, %k1
2485 ; SKX-NEXT:    korb %k1, %k0, %k0
2486 ; SKX-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2487 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2488 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2489 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2490 ; SKX-NEXT:    kshiftrb $6, %k1, %k1
2491 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2492 ; SKX-NEXT:    kshiftrb $7, %k5, %k5
2493 ; SKX-NEXT:    korb %k1, %k5, %k1
2494 ; SKX-NEXT:    kandb %k2, %k1, %k1
2495 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2496 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2497 ; SKX-NEXT:    kshiftrb $5, %k5, %k5
2498 ; SKX-NEXT:    korb %k5, %k1, %k1
2499 ; SKX-NEXT:    kandb %k7, %k1, %k1
2500 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2501 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2502 ; SKX-NEXT:    kshiftrb $4, %k5, %k5
2503 ; SKX-NEXT:    korb %k5, %k1, %k1
2504 ; SKX-NEXT:    kandb %k3, %k1, %k1
2505 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2506 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2507 ; SKX-NEXT:    kshiftrb $3, %k5, %k5
2508 ; SKX-NEXT:    korb %k5, %k1, %k1
2509 ; SKX-NEXT:    kandb %k4, %k1, %k1
2510 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2511 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2512 ; SKX-NEXT:    kshiftrb $2, %k5, %k5
2513 ; SKX-NEXT:    korb %k5, %k1, %k1
2514 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2515 ; SKX-NEXT:    kandb %k6, %k1, %k1
2516 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2517 ; SKX-NEXT:    kshiftrb $1, %k5, %k5
2518 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
2519 ; SKX-NEXT:    korb %k5, %k1, %k7
2520 ; SKX-NEXT:    kshiftlb $7, %k0, %k0
2521 ; SKX-NEXT:    kshiftrb $6, %k0, %k0
2522 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2523 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2524 ; SKX-NEXT:    kshiftrb $7, %k1, %k1
2525 ; SKX-NEXT:    korb %k0, %k1, %k0
2526 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2527 ; SKX-NEXT:    kandb %k2, %k0, %k0
2528 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2529 ; SKX-NEXT:    kshiftrb $5, %k1, %k1
2530 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2531 ; SKX-NEXT:    korb %k1, %k0, %k0
2532 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2533 ; SKX-NEXT:    kandb %k1, %k0, %k0
2534 ; SKX-NEXT:    kshiftlb $7, %k5, %k1
2535 ; SKX-NEXT:    kshiftrb $4, %k1, %k1
2536 ; SKX-NEXT:    korb %k1, %k0, %k0
2537 ; SKX-NEXT:    kandb %k3, %k0, %k0
2538 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2539 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2540 ; SKX-NEXT:    kshiftrb $3, %k1, %k1
2541 ; SKX-NEXT:    korb %k1, %k0, %k0
2542 ; SKX-NEXT:    kandb %k4, %k0, %k0
2543 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2544 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2545 ; SKX-NEXT:    kshiftrb $2, %k1, %k1
2546 ; SKX-NEXT:    korb %k1, %k0, %k0
2547 ; SKX-NEXT:    kandb %k6, %k0, %k0
2548 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2549 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2550 ; SKX-NEXT:    kshiftrb $1, %k1, %k1
2551 ; SKX-NEXT:    korb %k1, %k0, %k0
2552 ; SKX-NEXT:    kandb %k7, %k0, %k0
2553 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2554 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 2-byte Reload
2555 ; SKX-NEXT:    kandb %k5, %k0, %k0
2556 ; SKX-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2557 ; SKX-NEXT:    kshiftlb $7, %k1, %k0
2558 ; SKX-NEXT:    kshiftrb $6, %k0, %k0
2559 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2560 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2561 ; SKX-NEXT:    kshiftrb $7, %k1, %k1
2562 ; SKX-NEXT:    korb %k0, %k1, %k0
2563 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2564 ; SKX-NEXT:    kandb %k2, %k0, %k0
2565 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2566 ; SKX-NEXT:    kshiftrb $5, %k1, %k1
2567 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
2568 ; SKX-NEXT:    korb %k1, %k0, %k0
2569 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 2-byte Reload
2570 ; SKX-NEXT:    kandb %k5, %k0, %k0
2571 ; SKX-NEXT:    kshiftlb $7, %k7, %k1
2572 ; SKX-NEXT:    kshiftrb $4, %k1, %k1
2573 ; SKX-NEXT:    korb %k1, %k0, %k0
2574 ; SKX-NEXT:    kandb %k3, %k0, %k0
2575 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2576 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2577 ; SKX-NEXT:    kshiftrb $3, %k1, %k1
2578 ; SKX-NEXT:    korb %k1, %k0, %k0
2579 ; SKX-NEXT:    kandb %k4, %k0, %k0
2580 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2581 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2582 ; SKX-NEXT:    kshiftrb $2, %k1, %k1
2583 ; SKX-NEXT:    korb %k1, %k0, %k0
2584 ; SKX-NEXT:    kandb %k6, %k0, %k0
2585 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2586 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2587 ; SKX-NEXT:    kshiftrb $1, %k1, %k1
2588 ; SKX-NEXT:    korb %k1, %k0, %k0
2589 ; SKX-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2590 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
2591 ; SKX-NEXT:    kshiftlb $7, %k0, %k0
2592 ; SKX-NEXT:    kshiftrb $6, %k0, %k0
2593 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2594 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2595 ; SKX-NEXT:    kshiftrb $7, %k1, %k1
2596 ; SKX-NEXT:    korb %k0, %k1, %k0
2597 ; SKX-NEXT:    kandb %k2, %k0, %k0
2598 ; SKX-NEXT:    kmovq %k2, %k7
2599 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2600 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2601 ; SKX-NEXT:    kshiftrb $5, %k1, %k1
2602 ; SKX-NEXT:    korb %k1, %k0, %k0
2603 ; SKX-NEXT:    kandb %k5, %k0, %k0
2604 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2605 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2606 ; SKX-NEXT:    kshiftrb $4, %k1, %k1
2607 ; SKX-NEXT:    korb %k1, %k0, %k0
2608 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2609 ; SKX-NEXT:    kandb %k3, %k0, %k2
2610 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2611 ; SKX-NEXT:    kshiftrb $3, %k1, %k1
2612 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
2613 ; SKX-NEXT:    korb %k1, %k2, %k1
2614 ; SKX-NEXT:    kandb %k4, %k1, %k1
2615 ; SKX-NEXT:    kshiftlb $7, %k0, %k0
2616 ; SKX-NEXT:    kshiftrb $2, %k0, %k0
2617 ; SKX-NEXT:    korb %k0, %k1, %k0
2618 ; SKX-NEXT:    kandb %k6, %k0, %k0
2619 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2620 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2621 ; SKX-NEXT:    kshiftrb $1, %k1, %k1
2622 ; SKX-NEXT:    korb %k1, %k0, %k0
2623 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2624 ; SKX-NEXT:    kandb %k1, %k0, %k0
2625 ; SKX-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
2626 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
2627 ; SKX-NEXT:    kshiftlb $7, %k0, %k0
2628 ; SKX-NEXT:    kshiftrb $6, %k0, %k0
2629 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2630 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2631 ; SKX-NEXT:    kshiftrb $7, %k1, %k1
2632 ; SKX-NEXT:    korb %k0, %k1, %k0
2633 ; SKX-NEXT:    kandb %k7, %k0, %k0
2634 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2635 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2636 ; SKX-NEXT:    kshiftrb $5, %k1, %k1
2637 ; SKX-NEXT:    korb %k1, %k0, %k0
2638 ; SKX-NEXT:    kandb %k5, %k0, %k0
2639 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2640 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2641 ; SKX-NEXT:    kshiftrb $4, %k1, %k1
2642 ; SKX-NEXT:    korb %k1, %k0, %k0
2643 ; SKX-NEXT:    kandb %k3, %k0, %k0
2644 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2645 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2646 ; SKX-NEXT:    kshiftrb $3, %k1, %k1
2647 ; SKX-NEXT:    korb %k1, %k0, %k0
2648 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
2649 ; SKX-NEXT:    kandb %k4, %k0, %k0
2650 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2651 ; SKX-NEXT:    kshiftrb $2, %k1, %k1
2652 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
2653 ; SKX-NEXT:    korb %k1, %k0, %k0
2654 ; SKX-NEXT:    kandb %k6, %k0, %k0
2655 ; SKX-NEXT:    kshiftlb $7, %k2, %k1
2656 ; SKX-NEXT:    kshiftrb $1, %k1, %k1
2657 ; SKX-NEXT:    korb %k1, %k0, %k0
2658 ; SKX-NEXT:    kmovd %edx, %k1
2659 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
2660 ; SKX-NEXT:    kshiftrb $6, %k1, %k1
2661 ; SKX-NEXT:    kmovd %esi, %k2
2662 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
2663 ; SKX-NEXT:    kshiftrb $7, %k2, %k2
2664 ; SKX-NEXT:    korb %k1, %k2, %k1
2665 ; SKX-NEXT:    kandb %k7, %k1, %k1
2666 ; SKX-NEXT:    kmovd %ecx, %k2
2667 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
2668 ; SKX-NEXT:    kshiftrb $5, %k2, %k2
2669 ; SKX-NEXT:    korb %k2, %k1, %k1
2670 ; SKX-NEXT:    kandb %k5, %k1, %k1
2671 ; SKX-NEXT:    kmovd %r8d, %k2
2672 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
2673 ; SKX-NEXT:    kshiftrb $4, %k2, %k2
2674 ; SKX-NEXT:    korb %k2, %k1, %k1
2675 ; SKX-NEXT:    kandb %k3, %k1, %k1
2676 ; SKX-NEXT:    kmovd %r9d, %k2
2677 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
2678 ; SKX-NEXT:    kshiftrb $3, %k2, %k2
2679 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
2680 ; SKX-NEXT:    korb %k2, %k1, %k1
2681 ; SKX-NEXT:    kandb %k4, %k1, %k1
2682 ; SKX-NEXT:    kshiftlb $7, %k3, %k2
2683 ; SKX-NEXT:    kshiftrb $2, %k2, %k2
2684 ; SKX-NEXT:    korb %k2, %k1, %k1
2685 ; SKX-NEXT:    kandb %k6, %k1, %k1
2686 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
2687 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
2688 ; SKX-NEXT:    kshiftrb $1, %k2, %k2
2689 ; SKX-NEXT:    korb %k2, %k1, %k1
2690 ; SKX-NEXT:    kandb %k0, %k1, %k0
2691 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2692 ; SKX-NEXT:    kandb %k1, %k0, %k0
2693 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2694 ; SKX-NEXT:    kandb %k1, %k0, %k0
2695 ; SKX-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
2696 ; SKX-NEXT:    kandb %k1, %k0, %k0
2697 ; SKX-NEXT:    kshiftrb $6, %k0, %k1
2698 ; SKX-NEXT:    kmovd %k1, %ecx
2699 ; SKX-NEXT:    kshiftrb $5, %k0, %k1
2700 ; SKX-NEXT:    kmovd %k1, %edx
2701 ; SKX-NEXT:    kshiftrb $4, %k0, %k1
2702 ; SKX-NEXT:    kmovd %k1, %esi
2703 ; SKX-NEXT:    kshiftrb $3, %k0, %k1
2704 ; SKX-NEXT:    kmovd %k1, %edi
2705 ; SKX-NEXT:    kshiftrb $2, %k0, %k1
2706 ; SKX-NEXT:    kmovd %k1, %r8d
2707 ; SKX-NEXT:    kshiftrb $1, %k0, %k1
2708 ; SKX-NEXT:    kmovd %k1, %r9d
2709 ; SKX-NEXT:    kmovd %k0, %r10d
2710 ; SKX-NEXT:    andb $1, %r10b
2711 ; SKX-NEXT:    andb $1, %r9b
2712 ; SKX-NEXT:    addb %r9b, %r9b
2713 ; SKX-NEXT:    orb %r10b, %r9b
2714 ; SKX-NEXT:    andb $1, %r8b
2715 ; SKX-NEXT:    shlb $2, %r8b
2716 ; SKX-NEXT:    orb %r9b, %r8b
2717 ; SKX-NEXT:    andb $1, %dil
2718 ; SKX-NEXT:    shlb $3, %dil
2719 ; SKX-NEXT:    orb %r8b, %dil
2720 ; SKX-NEXT:    andb $1, %sil
2721 ; SKX-NEXT:    shlb $4, %sil
2722 ; SKX-NEXT:    orb %dil, %sil
2723 ; SKX-NEXT:    andb $1, %dl
2724 ; SKX-NEXT:    shlb $5, %dl
2725 ; SKX-NEXT:    orb %sil, %dl
2726 ; SKX-NEXT:    shlb $6, %cl
2727 ; SKX-NEXT:    orb %dl, %cl
2728 ; SKX-NEXT:    andb $127, %cl
2729 ; SKX-NEXT:    movb %cl, (%rax)
2730 ; SKX-NEXT:    retq
2732 ; KNL_X32-LABEL: test17:
2733 ; KNL_X32:       ## %bb.0:
2734 ; KNL_X32-NEXT:    pushl %ebx
2735 ; KNL_X32-NEXT:    subl $16, %esp
2736 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2737 ; KNL_X32-NEXT:    andl $1, %eax
2738 ; KNL_X32-NEXT:    kmovw %eax, %k0
2739 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2740 ; KNL_X32-NEXT:    kmovw %eax, %k1
2741 ; KNL_X32-NEXT:    kshiftlw $15, %k1, %k1
2742 ; KNL_X32-NEXT:    kshiftrw $14, %k1, %k1
2743 ; KNL_X32-NEXT:    korw %k1, %k0, %k0
2744 ; KNL_X32-NEXT:    movw $-5, %ax
2745 ; KNL_X32-NEXT:    kmovw %eax, %k1
2746 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2747 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2748 ; KNL_X32-NEXT:    kmovw %eax, %k2
2749 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2750 ; KNL_X32-NEXT:    kshiftrw $13, %k2, %k2
2751 ; KNL_X32-NEXT:    korw %k2, %k0, %k0
2752 ; KNL_X32-NEXT:    movw $-9, %ax
2753 ; KNL_X32-NEXT:    kmovw %eax, %k2
2754 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
2755 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2756 ; KNL_X32-NEXT:    kmovw %eax, %k3
2757 ; KNL_X32-NEXT:    kshiftlw $15, %k3, %k3
2758 ; KNL_X32-NEXT:    kshiftrw $12, %k3, %k3
2759 ; KNL_X32-NEXT:    korw %k3, %k0, %k0
2760 ; KNL_X32-NEXT:    movw $-17, %ax
2761 ; KNL_X32-NEXT:    kmovw %eax, %k3
2762 ; KNL_X32-NEXT:    kandw %k3, %k0, %k0
2763 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2764 ; KNL_X32-NEXT:    kmovw %eax, %k4
2765 ; KNL_X32-NEXT:    kshiftlw $15, %k4, %k4
2766 ; KNL_X32-NEXT:    kshiftrw $11, %k4, %k4
2767 ; KNL_X32-NEXT:    korw %k4, %k0, %k0
2768 ; KNL_X32-NEXT:    movw $-33, %ax
2769 ; KNL_X32-NEXT:    kmovw %eax, %k4
2770 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
2771 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2772 ; KNL_X32-NEXT:    kmovw %eax, %k5
2773 ; KNL_X32-NEXT:    kshiftlw $15, %k5, %k5
2774 ; KNL_X32-NEXT:    kshiftrw $10, %k5, %k5
2775 ; KNL_X32-NEXT:    korw %k5, %k0, %k0
2776 ; KNL_X32-NEXT:    movw $-65, %ax
2777 ; KNL_X32-NEXT:    kmovw %eax, %k5
2778 ; KNL_X32-NEXT:    kandw %k5, %k0, %k0
2779 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2780 ; KNL_X32-NEXT:    kmovw %eax, %k6
2781 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2782 ; KNL_X32-NEXT:    kshiftrw $9, %k6, %k6
2783 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2784 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
2785 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2786 ; KNL_X32-NEXT:    andl $1, %eax
2787 ; KNL_X32-NEXT:    kmovw %eax, %k0
2788 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2789 ; KNL_X32-NEXT:    kmovw %eax, %k6
2790 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2791 ; KNL_X32-NEXT:    kshiftrw $14, %k6, %k6
2792 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2793 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2794 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2795 ; KNL_X32-NEXT:    kmovw %eax, %k6
2796 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2797 ; KNL_X32-NEXT:    kshiftrw $13, %k6, %k6
2798 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2799 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
2800 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2801 ; KNL_X32-NEXT:    kmovw %eax, %k6
2802 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2803 ; KNL_X32-NEXT:    kshiftrw $12, %k6, %k6
2804 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2805 ; KNL_X32-NEXT:    kandw %k3, %k0, %k0
2806 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2807 ; KNL_X32-NEXT:    kmovw %eax, %k6
2808 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2809 ; KNL_X32-NEXT:    kshiftrw $11, %k6, %k6
2810 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2811 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
2812 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2813 ; KNL_X32-NEXT:    kmovw %eax, %k6
2814 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2815 ; KNL_X32-NEXT:    kshiftrw $10, %k6, %k6
2816 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2817 ; KNL_X32-NEXT:    kandw %k5, %k0, %k0
2818 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2819 ; KNL_X32-NEXT:    kmovw %eax, %k6
2820 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2821 ; KNL_X32-NEXT:    kshiftrw $9, %k6, %k6
2822 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2823 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
2824 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2825 ; KNL_X32-NEXT:    andl $1, %eax
2826 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
2827 ; KNL_X32-NEXT:    kmovw %ecx, %k0
2828 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2829 ; KNL_X32-NEXT:    kshiftrw $14, %k0, %k0
2830 ; KNL_X32-NEXT:    kmovw %eax, %k6
2831 ; KNL_X32-NEXT:    korw %k0, %k6, %k0
2832 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2833 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2834 ; KNL_X32-NEXT:    kmovw %eax, %k6
2835 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2836 ; KNL_X32-NEXT:    kshiftrw $13, %k6, %k6
2837 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2838 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
2839 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2840 ; KNL_X32-NEXT:    kmovw %eax, %k6
2841 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2842 ; KNL_X32-NEXT:    kshiftrw $12, %k6, %k6
2843 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2844 ; KNL_X32-NEXT:    kandw %k3, %k0, %k0
2845 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2846 ; KNL_X32-NEXT:    kmovw %eax, %k6
2847 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2848 ; KNL_X32-NEXT:    kshiftrw $11, %k6, %k6
2849 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2850 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
2851 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2852 ; KNL_X32-NEXT:    kmovw %eax, %k6
2853 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2854 ; KNL_X32-NEXT:    kshiftrw $10, %k6, %k6
2855 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2856 ; KNL_X32-NEXT:    kandw %k5, %k0, %k0
2857 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2858 ; KNL_X32-NEXT:    kmovw %eax, %k6
2859 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2860 ; KNL_X32-NEXT:    kshiftrw $9, %k6, %k6
2861 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2862 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
2863 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2864 ; KNL_X32-NEXT:    andl $1, %eax
2865 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
2866 ; KNL_X32-NEXT:    kmovw %ecx, %k0
2867 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2868 ; KNL_X32-NEXT:    kshiftrw $14, %k0, %k0
2869 ; KNL_X32-NEXT:    kmovw %eax, %k6
2870 ; KNL_X32-NEXT:    korw %k0, %k6, %k0
2871 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2872 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2873 ; KNL_X32-NEXT:    kmovw %eax, %k6
2874 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2875 ; KNL_X32-NEXT:    kshiftrw $13, %k6, %k6
2876 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2877 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
2878 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2879 ; KNL_X32-NEXT:    kmovw %eax, %k6
2880 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2881 ; KNL_X32-NEXT:    kshiftrw $12, %k6, %k6
2882 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2883 ; KNL_X32-NEXT:    kandw %k3, %k0, %k0
2884 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2885 ; KNL_X32-NEXT:    kmovw %eax, %k6
2886 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2887 ; KNL_X32-NEXT:    kshiftrw $11, %k6, %k6
2888 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2889 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
2890 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2891 ; KNL_X32-NEXT:    kmovw %eax, %k6
2892 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2893 ; KNL_X32-NEXT:    kshiftrw $10, %k6, %k6
2894 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2895 ; KNL_X32-NEXT:    kandw %k5, %k0, %k0
2896 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2897 ; KNL_X32-NEXT:    kmovw %eax, %k6
2898 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2899 ; KNL_X32-NEXT:    kshiftrw $9, %k6, %k6
2900 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2901 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
2902 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2903 ; KNL_X32-NEXT:    andl $1, %eax
2904 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
2905 ; KNL_X32-NEXT:    kmovw %ecx, %k0
2906 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2907 ; KNL_X32-NEXT:    kshiftrw $14, %k0, %k0
2908 ; KNL_X32-NEXT:    kmovw %eax, %k6
2909 ; KNL_X32-NEXT:    korw %k0, %k6, %k0
2910 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2911 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2912 ; KNL_X32-NEXT:    kmovw %eax, %k6
2913 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2914 ; KNL_X32-NEXT:    kshiftrw $13, %k6, %k6
2915 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2916 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
2917 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2918 ; KNL_X32-NEXT:    kmovw %eax, %k6
2919 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2920 ; KNL_X32-NEXT:    kshiftrw $12, %k6, %k6
2921 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2922 ; KNL_X32-NEXT:    kandw %k3, %k0, %k0
2923 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2924 ; KNL_X32-NEXT:    kmovw %eax, %k6
2925 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2926 ; KNL_X32-NEXT:    kshiftrw $11, %k6, %k6
2927 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2928 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
2929 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2930 ; KNL_X32-NEXT:    kmovw %eax, %k6
2931 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2932 ; KNL_X32-NEXT:    kshiftrw $10, %k6, %k6
2933 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2934 ; KNL_X32-NEXT:    kandw %k5, %k0, %k0
2935 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2936 ; KNL_X32-NEXT:    kmovw %eax, %k6
2937 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2938 ; KNL_X32-NEXT:    kshiftrw $9, %k6, %k6
2939 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2940 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
2941 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2942 ; KNL_X32-NEXT:    andl $1, %eax
2943 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
2944 ; KNL_X32-NEXT:    kmovw %ecx, %k0
2945 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2946 ; KNL_X32-NEXT:    kshiftrw $14, %k0, %k0
2947 ; KNL_X32-NEXT:    kmovw %eax, %k6
2948 ; KNL_X32-NEXT:    korw %k0, %k6, %k0
2949 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2950 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2951 ; KNL_X32-NEXT:    kmovw %eax, %k6
2952 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2953 ; KNL_X32-NEXT:    kshiftrw $13, %k6, %k6
2954 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2955 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
2956 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2957 ; KNL_X32-NEXT:    kmovw %eax, %k6
2958 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2959 ; KNL_X32-NEXT:    kshiftrw $12, %k6, %k6
2960 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2961 ; KNL_X32-NEXT:    kandw %k3, %k0, %k0
2962 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2963 ; KNL_X32-NEXT:    kmovw %eax, %k6
2964 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2965 ; KNL_X32-NEXT:    kshiftrw $11, %k6, %k6
2966 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2967 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
2968 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2969 ; KNL_X32-NEXT:    kmovw %eax, %k6
2970 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2971 ; KNL_X32-NEXT:    kshiftrw $10, %k6, %k6
2972 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2973 ; KNL_X32-NEXT:    kandw %k5, %k0, %k0
2974 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2975 ; KNL_X32-NEXT:    kmovw %eax, %k6
2976 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2977 ; KNL_X32-NEXT:    kshiftrw $9, %k6, %k6
2978 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2979 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
2980 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2981 ; KNL_X32-NEXT:    andl $1, %eax
2982 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
2983 ; KNL_X32-NEXT:    kmovw %ecx, %k0
2984 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2985 ; KNL_X32-NEXT:    kshiftrw $14, %k0, %k0
2986 ; KNL_X32-NEXT:    kmovw %eax, %k6
2987 ; KNL_X32-NEXT:    korw %k0, %k6, %k0
2988 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2989 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2990 ; KNL_X32-NEXT:    kmovw %eax, %k6
2991 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2992 ; KNL_X32-NEXT:    kshiftrw $13, %k6, %k6
2993 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
2994 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
2995 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2996 ; KNL_X32-NEXT:    kmovw %eax, %k6
2997 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2998 ; KNL_X32-NEXT:    kshiftrw $12, %k6, %k6
2999 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
3000 ; KNL_X32-NEXT:    kandw %k3, %k0, %k0
3001 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3002 ; KNL_X32-NEXT:    kmovw %eax, %k6
3003 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
3004 ; KNL_X32-NEXT:    kshiftrw $11, %k6, %k6
3005 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
3006 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
3007 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3008 ; KNL_X32-NEXT:    kmovw %eax, %k6
3009 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
3010 ; KNL_X32-NEXT:    kshiftrw $10, %k6, %k6
3011 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
3012 ; KNL_X32-NEXT:    kandw %k5, %k0, %k0
3013 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3014 ; KNL_X32-NEXT:    kmovw %eax, %k6
3015 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
3016 ; KNL_X32-NEXT:    kshiftrw $9, %k6, %k6
3017 ; KNL_X32-NEXT:    korw %k6, %k0, %k0
3018 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
3019 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3020 ; KNL_X32-NEXT:    andl $1, %eax
3021 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
3022 ; KNL_X32-NEXT:    kmovw %ecx, %k0
3023 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
3024 ; KNL_X32-NEXT:    kshiftrw $14, %k0, %k0
3025 ; KNL_X32-NEXT:    kmovw %eax, %k7
3026 ; KNL_X32-NEXT:    korw %k0, %k7, %k0
3027 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
3028 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3029 ; KNL_X32-NEXT:    kmovw %eax, %k7
3030 ; KNL_X32-NEXT:    kshiftlw $15, %k7, %k7
3031 ; KNL_X32-NEXT:    kshiftrw $13, %k7, %k7
3032 ; KNL_X32-NEXT:    korw %k7, %k0, %k0
3033 ; KNL_X32-NEXT:    kandw %k2, %k0, %k0
3034 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3035 ; KNL_X32-NEXT:    kmovw %eax, %k7
3036 ; KNL_X32-NEXT:    kshiftlw $15, %k7, %k7
3037 ; KNL_X32-NEXT:    kshiftrw $12, %k7, %k7
3038 ; KNL_X32-NEXT:    korw %k7, %k0, %k0
3039 ; KNL_X32-NEXT:    kandw %k3, %k0, %k0
3040 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3041 ; KNL_X32-NEXT:    kmovw %eax, %k7
3042 ; KNL_X32-NEXT:    kshiftlw $15, %k7, %k7
3043 ; KNL_X32-NEXT:    kshiftrw $11, %k7, %k7
3044 ; KNL_X32-NEXT:    korw %k7, %k0, %k0
3045 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
3046 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3047 ; KNL_X32-NEXT:    kmovw %eax, %k7
3048 ; KNL_X32-NEXT:    kshiftlw $15, %k7, %k7
3049 ; KNL_X32-NEXT:    kshiftrw $10, %k7, %k7
3050 ; KNL_X32-NEXT:    korw %k7, %k0, %k0
3051 ; KNL_X32-NEXT:    kandw %k5, %k0, %k0
3052 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3053 ; KNL_X32-NEXT:    kmovw %eax, %k7
3054 ; KNL_X32-NEXT:    kshiftlw $15, %k7, %k7
3055 ; KNL_X32-NEXT:    kshiftrw $9, %k7, %k7
3056 ; KNL_X32-NEXT:    korw %k7, %k0, %k0
3057 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3058 ; KNL_X32-NEXT:    andl $1, %eax
3059 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
3060 ; KNL_X32-NEXT:    kmovw %ecx, %k7
3061 ; KNL_X32-NEXT:    kshiftlw $15, %k7, %k7
3062 ; KNL_X32-NEXT:    kshiftrw $14, %k7, %k7
3063 ; KNL_X32-NEXT:    kmovw %eax, %k6
3064 ; KNL_X32-NEXT:    korw %k7, %k6, %k6
3065 ; KNL_X32-NEXT:    kandw %k1, %k6, %k1
3066 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3067 ; KNL_X32-NEXT:    kmovw %eax, %k6
3068 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
3069 ; KNL_X32-NEXT:    kshiftrw $13, %k6, %k6
3070 ; KNL_X32-NEXT:    korw %k6, %k1, %k1
3071 ; KNL_X32-NEXT:    kandw %k2, %k1, %k1
3072 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3073 ; KNL_X32-NEXT:    kmovw %eax, %k2
3074 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
3075 ; KNL_X32-NEXT:    kshiftrw $12, %k2, %k2
3076 ; KNL_X32-NEXT:    korw %k2, %k1, %k1
3077 ; KNL_X32-NEXT:    kandw %k3, %k1, %k1
3078 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3079 ; KNL_X32-NEXT:    kmovw %eax, %k2
3080 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
3081 ; KNL_X32-NEXT:    kshiftrw $11, %k2, %k2
3082 ; KNL_X32-NEXT:    korw %k2, %k1, %k1
3083 ; KNL_X32-NEXT:    kandw %k4, %k1, %k1
3084 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3085 ; KNL_X32-NEXT:    kmovw %eax, %k2
3086 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
3087 ; KNL_X32-NEXT:    kshiftrw $10, %k2, %k2
3088 ; KNL_X32-NEXT:    korw %k2, %k1, %k1
3089 ; KNL_X32-NEXT:    kandw %k5, %k1, %k1
3090 ; KNL_X32-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
3091 ; KNL_X32-NEXT:    kmovw %eax, %k2
3092 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
3093 ; KNL_X32-NEXT:    kshiftrw $9, %k2, %k2
3094 ; KNL_X32-NEXT:    korw %k2, %k1, %k1
3095 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
3096 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
3097 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
3098 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
3099 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
3100 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
3101 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
3102 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
3103 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
3104 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
3105 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
3106 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
3107 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
3108 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
3109 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
3110 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k1
3111 ; KNL_X32-NEXT:    kmovw %k1, %ecx
3112 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k1
3113 ; KNL_X32-NEXT:    kmovw %k1, %eax
3114 ; KNL_X32-NEXT:    kshiftrw $1, %k0, %k1
3115 ; KNL_X32-NEXT:    kmovw %k1, %edx
3116 ; KNL_X32-NEXT:    kshiftrw $2, %k0, %k1
3117 ; KNL_X32-NEXT:    kmovw %k0, %ebx
3118 ; KNL_X32-NEXT:    andb $1, %bl
3119 ; KNL_X32-NEXT:    andb $1, %dl
3120 ; KNL_X32-NEXT:    addb %dl, %dl
3121 ; KNL_X32-NEXT:    orb %bl, %dl
3122 ; KNL_X32-NEXT:    kmovw %k1, %ebx
3123 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k1
3124 ; KNL_X32-NEXT:    andb $1, %bl
3125 ; KNL_X32-NEXT:    shlb $2, %bl
3126 ; KNL_X32-NEXT:    orb %dl, %bl
3127 ; KNL_X32-NEXT:    kmovw %k1, %edx
3128 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k0
3129 ; KNL_X32-NEXT:    andb $1, %dl
3130 ; KNL_X32-NEXT:    shlb $3, %dl
3131 ; KNL_X32-NEXT:    orb %bl, %dl
3132 ; KNL_X32-NEXT:    kmovw %k0, %ebx
3133 ; KNL_X32-NEXT:    andb $1, %bl
3134 ; KNL_X32-NEXT:    shlb $4, %bl
3135 ; KNL_X32-NEXT:    orb %dl, %bl
3136 ; KNL_X32-NEXT:    andb $1, %al
3137 ; KNL_X32-NEXT:    shlb $5, %al
3138 ; KNL_X32-NEXT:    orb %bl, %al
3139 ; KNL_X32-NEXT:    shlb $6, %cl
3140 ; KNL_X32-NEXT:    orb %al, %cl
3141 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
3142 ; KNL_X32-NEXT:    andb $127, %cl
3143 ; KNL_X32-NEXT:    movb %cl, (%eax)
3144 ; KNL_X32-NEXT:    addl $16, %esp
3145 ; KNL_X32-NEXT:    popl %ebx
3146 ; KNL_X32-NEXT:    retl $4
3148 ; FASTISEL-LABEL: test17:
3149 ; FASTISEL:       ## %bb.0:
3150 ; FASTISEL-NEXT:    movq %rdi, %rax
3151 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
3152 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3153 ; FASTISEL-NEXT:    kshiftlb $7, %k0, %k0
3154 ; FASTISEL-NEXT:    kshiftrb $6, %k0, %k0
3155 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3156 ; FASTISEL-NEXT:    kshiftrb $7, %k1, %k1
3157 ; FASTISEL-NEXT:    korb %k0, %k1, %k0
3158 ; FASTISEL-NEXT:    movb $-5, %dil
3159 ; FASTISEL-NEXT:    kmovd %edi, %k3
3160 ; FASTISEL-NEXT:    kandb %k3, %k0, %k0
3161 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3162 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3163 ; FASTISEL-NEXT:    kshiftrb $5, %k1, %k1
3164 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3165 ; FASTISEL-NEXT:    movb $-9, %dil
3166 ; FASTISEL-NEXT:    kmovd %edi, %k1
3167 ; FASTISEL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3168 ; FASTISEL-NEXT:    kandb %k1, %k0, %k0
3169 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
3170 ; FASTISEL-NEXT:    kshiftlb $7, %k2, %k2
3171 ; FASTISEL-NEXT:    kshiftrb $4, %k2, %k2
3172 ; FASTISEL-NEXT:    korb %k2, %k0, %k0
3173 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
3174 ; FASTISEL-NEXT:    movb $-17, %dil
3175 ; FASTISEL-NEXT:    kmovd %edi, %k1
3176 ; FASTISEL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3177 ; FASTISEL-NEXT:    kandb %k1, %k0, %k0
3178 ; FASTISEL-NEXT:    kshiftlb $7, %k2, %k2
3179 ; FASTISEL-NEXT:    kshiftrb $3, %k2, %k2
3180 ; FASTISEL-NEXT:    korb %k2, %k0, %k0
3181 ; FASTISEL-NEXT:    movb $-33, %dil
3182 ; FASTISEL-NEXT:    kmovd %edi, %k6
3183 ; FASTISEL-NEXT:    kandb %k6, %k0, %k0
3184 ; FASTISEL-NEXT:    kmovw %k6, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3185 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
3186 ; FASTISEL-NEXT:    kshiftlb $7, %k4, %k4
3187 ; FASTISEL-NEXT:    kshiftrb $2, %k4, %k4
3188 ; FASTISEL-NEXT:    korb %k4, %k0, %k0
3189 ; FASTISEL-NEXT:    movb $-65, %dil
3190 ; FASTISEL-NEXT:    kmovd %edi, %k2
3191 ; FASTISEL-NEXT:    kandb %k2, %k0, %k0
3192 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
3193 ; FASTISEL-NEXT:    kshiftlb $7, %k5, %k5
3194 ; FASTISEL-NEXT:    kshiftrb $1, %k5, %k5
3195 ; FASTISEL-NEXT:    korb %k5, %k0, %k0
3196 ; FASTISEL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3197 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
3198 ; FASTISEL-NEXT:    kshiftlb $7, %k0, %k0
3199 ; FASTISEL-NEXT:    kshiftrb $6, %k0, %k0
3200 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
3201 ; FASTISEL-NEXT:    kshiftlb $7, %k7, %k7
3202 ; FASTISEL-NEXT:    kshiftrb $7, %k7, %k7
3203 ; FASTISEL-NEXT:    korb %k0, %k7, %k0
3204 ; FASTISEL-NEXT:    kandb %k3, %k0, %k0
3205 ; FASTISEL-NEXT:    kmovq %k3, %k5
3206 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
3207 ; FASTISEL-NEXT:    kshiftlb $7, %k7, %k7
3208 ; FASTISEL-NEXT:    kshiftrb $5, %k7, %k7
3209 ; FASTISEL-NEXT:    korb %k7, %k0, %k0
3210 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
3211 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 2-byte Reload
3212 ; FASTISEL-NEXT:    kandb %k4, %k0, %k1
3213 ; FASTISEL-NEXT:    kshiftlb $7, %k7, %k7
3214 ; FASTISEL-NEXT:    kshiftrb $4, %k7, %k7
3215 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
3216 ; FASTISEL-NEXT:    korb %k7, %k1, %k1
3217 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k3 ## 2-byte Reload
3218 ; FASTISEL-NEXT:    kandb %k3, %k1, %k1
3219 ; FASTISEL-NEXT:    kshiftlb $7, %k0, %k0
3220 ; FASTISEL-NEXT:    kshiftrb $3, %k0, %k0
3221 ; FASTISEL-NEXT:    korb %k0, %k1, %k0
3222 ; FASTISEL-NEXT:    kandb %k6, %k0, %k0
3223 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3224 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3225 ; FASTISEL-NEXT:    kshiftrb $2, %k1, %k1
3226 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3227 ; FASTISEL-NEXT:    kandb %k2, %k0, %k0
3228 ; FASTISEL-NEXT:    kmovq %k2, %k6
3229 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3230 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3231 ; FASTISEL-NEXT:    kshiftrb $1, %k1, %k1
3232 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3233 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
3234 ; FASTISEL-NEXT:    kandb %k1, %k0, %k0
3235 ; FASTISEL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3236 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
3237 ; FASTISEL-NEXT:    kshiftlb $7, %k0, %k0
3238 ; FASTISEL-NEXT:    kshiftrb $6, %k0, %k0
3239 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3240 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3241 ; FASTISEL-NEXT:    kshiftrb $7, %k1, %k1
3242 ; FASTISEL-NEXT:    korb %k0, %k1, %k0
3243 ; FASTISEL-NEXT:    kmovq %k5, %k2
3244 ; FASTISEL-NEXT:    kandb %k5, %k0, %k0
3245 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3246 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3247 ; FASTISEL-NEXT:    kshiftrb $5, %k1, %k1
3248 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3249 ; FASTISEL-NEXT:    kmovq %k4, %k7
3250 ; FASTISEL-NEXT:    kandb %k4, %k0, %k0
3251 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3252 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3253 ; FASTISEL-NEXT:    kshiftrb $4, %k1, %k1
3254 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3255 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3256 ; FASTISEL-NEXT:    kandb %k3, %k0, %k0
3257 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3258 ; FASTISEL-NEXT:    kshiftrb $3, %k1, %k1
3259 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
3260 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3261 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 2-byte Reload
3262 ; FASTISEL-NEXT:    kandb %k4, %k0, %k0
3263 ; FASTISEL-NEXT:    kshiftlb $7, %k5, %k1
3264 ; FASTISEL-NEXT:    kshiftrb $2, %k1, %k1
3265 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3266 ; FASTISEL-NEXT:    kandb %k6, %k0, %k0
3267 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3268 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3269 ; FASTISEL-NEXT:    kshiftrb $1, %k1, %k1
3270 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3271 ; FASTISEL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3272 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3273 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
3274 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3275 ; FASTISEL-NEXT:    kshiftrb $6, %k1, %k1
3276 ; FASTISEL-NEXT:    kshiftlb $7, %k5, %k5
3277 ; FASTISEL-NEXT:    kshiftrb $7, %k5, %k5
3278 ; FASTISEL-NEXT:    korb %k1, %k5, %k1
3279 ; FASTISEL-NEXT:    kandb %k2, %k1, %k1
3280 ; FASTISEL-NEXT:    kmovw %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3281 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
3282 ; FASTISEL-NEXT:    kshiftlb $7, %k5, %k5
3283 ; FASTISEL-NEXT:    kshiftrb $5, %k5, %k5
3284 ; FASTISEL-NEXT:    korb %k5, %k1, %k1
3285 ; FASTISEL-NEXT:    kandb %k7, %k1, %k1
3286 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
3287 ; FASTISEL-NEXT:    kshiftlb $7, %k5, %k5
3288 ; FASTISEL-NEXT:    kshiftrb $4, %k5, %k5
3289 ; FASTISEL-NEXT:    korb %k5, %k1, %k1
3290 ; FASTISEL-NEXT:    kandb %k3, %k1, %k1
3291 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
3292 ; FASTISEL-NEXT:    kshiftlb $7, %k5, %k5
3293 ; FASTISEL-NEXT:    kshiftrb $3, %k5, %k5
3294 ; FASTISEL-NEXT:    korb %k5, %k1, %k1
3295 ; FASTISEL-NEXT:    kandb %k4, %k1, %k1
3296 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
3297 ; FASTISEL-NEXT:    kshiftlb $7, %k5, %k5
3298 ; FASTISEL-NEXT:    kshiftrb $2, %k5, %k5
3299 ; FASTISEL-NEXT:    korb %k5, %k1, %k1
3300 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
3301 ; FASTISEL-NEXT:    kandb %k6, %k1, %k1
3302 ; FASTISEL-NEXT:    kmovw %k6, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3303 ; FASTISEL-NEXT:    kshiftlb $7, %k5, %k5
3304 ; FASTISEL-NEXT:    kshiftrb $1, %k5, %k5
3305 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
3306 ; FASTISEL-NEXT:    korb %k5, %k1, %k5
3307 ; FASTISEL-NEXT:    kshiftlb $7, %k7, %k1
3308 ; FASTISEL-NEXT:    kshiftrb $6, %k1, %k1
3309 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
3310 ; FASTISEL-NEXT:    kshiftlb $7, %k7, %k7
3311 ; FASTISEL-NEXT:    kshiftrb $7, %k7, %k7
3312 ; FASTISEL-NEXT:    korb %k1, %k7, %k1
3313 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
3314 ; FASTISEL-NEXT:    kandb %k2, %k1, %k1
3315 ; FASTISEL-NEXT:    kshiftlb $7, %k7, %k7
3316 ; FASTISEL-NEXT:    kshiftrb $5, %k7, %k7
3317 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
3318 ; FASTISEL-NEXT:    korb %k7, %k1, %k1
3319 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k3 ## 2-byte Reload
3320 ; FASTISEL-NEXT:    kandb %k3, %k1, %k1
3321 ; FASTISEL-NEXT:    kshiftlb $7, %k0, %k0
3322 ; FASTISEL-NEXT:    kshiftrb $4, %k0, %k0
3323 ; FASTISEL-NEXT:    korb %k0, %k1, %k0
3324 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k2 ## 2-byte Reload
3325 ; FASTISEL-NEXT:    kandb %k2, %k0, %k0
3326 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3327 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3328 ; FASTISEL-NEXT:    kshiftrb $3, %k1, %k1
3329 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3330 ; FASTISEL-NEXT:    kandb %k4, %k0, %k0
3331 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3332 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3333 ; FASTISEL-NEXT:    kshiftrb $2, %k1, %k1
3334 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3335 ; FASTISEL-NEXT:    kandb %k6, %k0, %k0
3336 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3337 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3338 ; FASTISEL-NEXT:    kshiftrb $1, %k1, %k1
3339 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3340 ; FASTISEL-NEXT:    kandb %k5, %k0, %k0
3341 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3342 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 2-byte Reload
3343 ; FASTISEL-NEXT:    kandb %k5, %k0, %k0
3344 ; FASTISEL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3345 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k0
3346 ; FASTISEL-NEXT:    kshiftrb $6, %k0, %k0
3347 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3348 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3349 ; FASTISEL-NEXT:    kshiftrb $7, %k1, %k1
3350 ; FASTISEL-NEXT:    korb %k0, %k1, %k0
3351 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3352 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
3353 ; FASTISEL-NEXT:    kandb %k6, %k0, %k0
3354 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3355 ; FASTISEL-NEXT:    kshiftrb $5, %k1, %k1
3356 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
3357 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3358 ; FASTISEL-NEXT:    kandb %k3, %k0, %k0
3359 ; FASTISEL-NEXT:    kshiftlb $7, %k7, %k1
3360 ; FASTISEL-NEXT:    kshiftrb $4, %k1, %k1
3361 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3362 ; FASTISEL-NEXT:    kandb %k2, %k0, %k0
3363 ; FASTISEL-NEXT:    kmovq %k2, %k7
3364 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3365 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3366 ; FASTISEL-NEXT:    kshiftrb $3, %k1, %k1
3367 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3368 ; FASTISEL-NEXT:    kandb %k4, %k0, %k0
3369 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3370 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3371 ; FASTISEL-NEXT:    kshiftrb $2, %k1, %k1
3372 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3373 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 2-byte Reload
3374 ; FASTISEL-NEXT:    kandb %k5, %k0, %k0
3375 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3376 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3377 ; FASTISEL-NEXT:    kshiftrb $1, %k1, %k1
3378 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3379 ; FASTISEL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3380 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
3381 ; FASTISEL-NEXT:    kshiftlb $7, %k0, %k0
3382 ; FASTISEL-NEXT:    kshiftrb $6, %k0, %k0
3383 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3384 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3385 ; FASTISEL-NEXT:    kshiftrb $7, %k1, %k1
3386 ; FASTISEL-NEXT:    korb %k0, %k1, %k0
3387 ; FASTISEL-NEXT:    kandb %k6, %k0, %k0
3388 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3389 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3390 ; FASTISEL-NEXT:    kshiftrb $5, %k1, %k1
3391 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3392 ; FASTISEL-NEXT:    kandb %k3, %k0, %k0
3393 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3394 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3395 ; FASTISEL-NEXT:    kshiftrb $4, %k1, %k1
3396 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3397 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3398 ; FASTISEL-NEXT:    kandb %k2, %k0, %k2
3399 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3400 ; FASTISEL-NEXT:    kshiftrb $3, %k1, %k1
3401 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
3402 ; FASTISEL-NEXT:    korb %k1, %k2, %k1
3403 ; FASTISEL-NEXT:    kandb %k4, %k1, %k1
3404 ; FASTISEL-NEXT:    kshiftlb $7, %k0, %k0
3405 ; FASTISEL-NEXT:    kshiftrb $2, %k0, %k0
3406 ; FASTISEL-NEXT:    korb %k0, %k1, %k0
3407 ; FASTISEL-NEXT:    kandb %k5, %k0, %k0
3408 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3409 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3410 ; FASTISEL-NEXT:    kshiftrb $1, %k1, %k1
3411 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3412 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
3413 ; FASTISEL-NEXT:    kandb %k1, %k0, %k0
3414 ; FASTISEL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
3415 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k0
3416 ; FASTISEL-NEXT:    kshiftlb $7, %k0, %k0
3417 ; FASTISEL-NEXT:    kshiftrb $6, %k0, %k0
3418 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3419 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3420 ; FASTISEL-NEXT:    kshiftrb $7, %k1, %k1
3421 ; FASTISEL-NEXT:    korb %k0, %k1, %k0
3422 ; FASTISEL-NEXT:    kandb %k6, %k0, %k0
3423 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3424 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3425 ; FASTISEL-NEXT:    kshiftrb $5, %k1, %k1
3426 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3427 ; FASTISEL-NEXT:    kandb %k3, %k0, %k0
3428 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3429 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3430 ; FASTISEL-NEXT:    kshiftrb $4, %k1, %k1
3431 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3432 ; FASTISEL-NEXT:    kandb %k7, %k0, %k0
3433 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3434 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3435 ; FASTISEL-NEXT:    kshiftrb $3, %k1, %k1
3436 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3437 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
3438 ; FASTISEL-NEXT:    kandb %k4, %k0, %k0
3439 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3440 ; FASTISEL-NEXT:    kshiftrb $2, %k1, %k1
3441 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
3442 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3443 ; FASTISEL-NEXT:    kandb %k5, %k0, %k0
3444 ; FASTISEL-NEXT:    kshiftlb $7, %k2, %k1
3445 ; FASTISEL-NEXT:    kshiftrb $1, %k1, %k1
3446 ; FASTISEL-NEXT:    korb %k1, %k0, %k0
3447 ; FASTISEL-NEXT:    kmovd %edx, %k1
3448 ; FASTISEL-NEXT:    kshiftlb $7, %k1, %k1
3449 ; FASTISEL-NEXT:    kshiftrb $6, %k1, %k1
3450 ; FASTISEL-NEXT:    kmovd %esi, %k2
3451 ; FASTISEL-NEXT:    kshiftlb $7, %k2, %k2
3452 ; FASTISEL-NEXT:    kshiftrb $7, %k2, %k2
3453 ; FASTISEL-NEXT:    korb %k1, %k2, %k1
3454 ; FASTISEL-NEXT:    kandb %k6, %k1, %k1
3455 ; FASTISEL-NEXT:    kmovd %ecx, %k2
3456 ; FASTISEL-NEXT:    kshiftlb $7, %k2, %k2
3457 ; FASTISEL-NEXT:    kshiftrb $5, %k2, %k2
3458 ; FASTISEL-NEXT:    korb %k2, %k1, %k1
3459 ; FASTISEL-NEXT:    kandb %k3, %k1, %k1
3460 ; FASTISEL-NEXT:    kmovd %r8d, %k2
3461 ; FASTISEL-NEXT:    kshiftlb $7, %k2, %k2
3462 ; FASTISEL-NEXT:    kshiftrb $4, %k2, %k2
3463 ; FASTISEL-NEXT:    korb %k2, %k1, %k1
3464 ; FASTISEL-NEXT:    kandb %k7, %k1, %k1
3465 ; FASTISEL-NEXT:    kmovd %r9d, %k2
3466 ; FASTISEL-NEXT:    kshiftlb $7, %k2, %k2
3467 ; FASTISEL-NEXT:    kshiftrb $3, %k2, %k2
3468 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
3469 ; FASTISEL-NEXT:    korb %k2, %k1, %k1
3470 ; FASTISEL-NEXT:    kandb %k4, %k1, %k1
3471 ; FASTISEL-NEXT:    kshiftlb $7, %k3, %k2
3472 ; FASTISEL-NEXT:    kshiftrb $2, %k2, %k2
3473 ; FASTISEL-NEXT:    korb %k2, %k1, %k1
3474 ; FASTISEL-NEXT:    kandb %k5, %k1, %k1
3475 ; FASTISEL-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
3476 ; FASTISEL-NEXT:    kshiftlb $7, %k2, %k2
3477 ; FASTISEL-NEXT:    kshiftrb $1, %k2, %k2
3478 ; FASTISEL-NEXT:    korb %k2, %k1, %k1
3479 ; FASTISEL-NEXT:    kandb %k0, %k1, %k0
3480 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
3481 ; FASTISEL-NEXT:    kandb %k1, %k0, %k0
3482 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
3483 ; FASTISEL-NEXT:    kandb %k1, %k0, %k0
3484 ; FASTISEL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
3485 ; FASTISEL-NEXT:    kandb %k1, %k0, %k0
3486 ; FASTISEL-NEXT:    kshiftrb $6, %k0, %k1
3487 ; FASTISEL-NEXT:    kmovd %k1, %ecx
3488 ; FASTISEL-NEXT:    kshiftrb $5, %k0, %k1
3489 ; FASTISEL-NEXT:    kmovd %k1, %edx
3490 ; FASTISEL-NEXT:    kshiftrb $4, %k0, %k1
3491 ; FASTISEL-NEXT:    kmovd %k1, %esi
3492 ; FASTISEL-NEXT:    kshiftrb $3, %k0, %k1
3493 ; FASTISEL-NEXT:    kmovd %k1, %edi
3494 ; FASTISEL-NEXT:    kshiftrb $2, %k0, %k1
3495 ; FASTISEL-NEXT:    kmovd %k1, %r8d
3496 ; FASTISEL-NEXT:    kshiftrb $1, %k0, %k1
3497 ; FASTISEL-NEXT:    kmovd %k1, %r9d
3498 ; FASTISEL-NEXT:    kmovd %k0, %r10d
3499 ; FASTISEL-NEXT:    andb $1, %r10b
3500 ; FASTISEL-NEXT:    andb $1, %r9b
3501 ; FASTISEL-NEXT:    addb %r9b, %r9b
3502 ; FASTISEL-NEXT:    orb %r10b, %r9b
3503 ; FASTISEL-NEXT:    andb $1, %r8b
3504 ; FASTISEL-NEXT:    shlb $2, %r8b
3505 ; FASTISEL-NEXT:    orb %r9b, %r8b
3506 ; FASTISEL-NEXT:    andb $1, %dil
3507 ; FASTISEL-NEXT:    shlb $3, %dil
3508 ; FASTISEL-NEXT:    orb %r8b, %dil
3509 ; FASTISEL-NEXT:    andb $1, %sil
3510 ; FASTISEL-NEXT:    shlb $4, %sil
3511 ; FASTISEL-NEXT:    orb %dil, %sil
3512 ; FASTISEL-NEXT:    andb $1, %dl
3513 ; FASTISEL-NEXT:    shlb $5, %dl
3514 ; FASTISEL-NEXT:    orb %sil, %dl
3515 ; FASTISEL-NEXT:    shlb $6, %cl
3516 ; FASTISEL-NEXT:    orb %dl, %cl
3517 ; FASTISEL-NEXT:    andb $127, %cl
3518 ; FASTISEL-NEXT:    movb %cl, (%rax)
3519 ; FASTISEL-NEXT:    retq
3520   %j = and <7 x i1> %a, %b
3521   %k = and <7 x i1> %j, %c
3522   %l = and <7 x i1> %k, %d
3523   %m = and <7 x i1> %l, %e
3524   %n = and <7 x i1> %m, %f
3525   %o = and <7 x i1> %n, %g
3526   %p = and <7 x i1> %o, %h
3527   %q = and <7 x i1> %p, %i
3528   ret <7 x i1> %q
3531 declare void @v2i1_mem_callee(<128 x i32> %x, <2 x i1> %y)
3532 define void @v2i1_mem(<128 x i32> %x, <2 x i1> %y) {
3533 ; KNL-LABEL: v2i1_mem:
3534 ; KNL:       ## %bb.0:
3535 ; KNL-NEXT:    subq $24, %rsp
3536 ; KNL-NEXT:    .cfi_def_cfa_offset 32
3537 ; KNL-NEXT:    vmovaps {{[0-9]+}}(%rsp), %xmm8
3538 ; KNL-NEXT:    vmovaps %xmm8, (%rsp)
3539 ; KNL-NEXT:    callq _v2i1_mem_callee
3540 ; KNL-NEXT:    addq $24, %rsp
3541 ; KNL-NEXT:    retq
3543 ; SKX-LABEL: v2i1_mem:
3544 ; SKX:       ## %bb.0:
3545 ; SKX-NEXT:    subq $24, %rsp
3546 ; SKX-NEXT:    .cfi_def_cfa_offset 32
3547 ; SKX-NEXT:    vmovaps {{[0-9]+}}(%rsp), %xmm8
3548 ; SKX-NEXT:    vmovaps %xmm8, (%rsp)
3549 ; SKX-NEXT:    callq _v2i1_mem_callee
3550 ; SKX-NEXT:    addq $24, %rsp
3551 ; SKX-NEXT:    vzeroupper
3552 ; SKX-NEXT:    retq
3554 ; KNL_X32-LABEL: v2i1_mem:
3555 ; KNL_X32:       ## %bb.0:
3556 ; KNL_X32-NEXT:    pushl %ebp
3557 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
3558 ; KNL_X32-NEXT:    .cfi_offset %ebp, -8
3559 ; KNL_X32-NEXT:    movl %esp, %ebp
3560 ; KNL_X32-NEXT:    .cfi_def_cfa_register %ebp
3561 ; KNL_X32-NEXT:    andl $-64, %esp
3562 ; KNL_X32-NEXT:    subl $384, %esp ## imm = 0x180
3563 ; KNL_X32-NEXT:    vmovaps 72(%ebp), %zmm5
3564 ; KNL_X32-NEXT:    vmovaps 136(%ebp), %zmm6
3565 ; KNL_X32-NEXT:    vmovaps 200(%ebp), %zmm7
3566 ; KNL_X32-NEXT:    vmovaps 264(%ebp), %xmm4
3567 ; KNL_X32-NEXT:    vmovaps %xmm4, {{[0-9]+}}(%esp)
3568 ; KNL_X32-NEXT:    vmovaps %zmm7, {{[0-9]+}}(%esp)
3569 ; KNL_X32-NEXT:    vmovaps %zmm6, {{[0-9]+}}(%esp)
3570 ; KNL_X32-NEXT:    vmovaps %zmm5, {{[0-9]+}}(%esp)
3571 ; KNL_X32-NEXT:    vmovaps 8(%ebp), %zmm4
3572 ; KNL_X32-NEXT:    vmovaps %zmm4, (%esp)
3573 ; KNL_X32-NEXT:    calll _v2i1_mem_callee
3574 ; KNL_X32-NEXT:    movl %ebp, %esp
3575 ; KNL_X32-NEXT:    popl %ebp
3576 ; KNL_X32-NEXT:    retl
3578 ; FASTISEL-LABEL: v2i1_mem:
3579 ; FASTISEL:       ## %bb.0:
3580 ; FASTISEL-NEXT:    subq $24, %rsp
3581 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 32
3582 ; FASTISEL-NEXT:    vpsllq $63, {{[0-9]+}}(%rsp), %xmm8
3583 ; FASTISEL-NEXT:    vpmovq2m %xmm8, %k0
3584 ; FASTISEL-NEXT:    vpmovm2q %k0, %xmm8
3585 ; FASTISEL-NEXT:    vmovdqa %xmm8, (%rsp)
3586 ; FASTISEL-NEXT:    callq _v2i1_mem_callee
3587 ; FASTISEL-NEXT:    addq $24, %rsp
3588 ; FASTISEL-NEXT:    vzeroupper
3589 ; FASTISEL-NEXT:    retq
3590   call void @v2i1_mem_callee(<128 x i32> %x, <2 x i1> %y)
3591   ret void
3594 declare void @v4i1_mem_callee(<128 x i32> %x, <4 x i1> %y)
3595 define void @v4i1_mem(<128 x i32> %x, <4 x i1> %y) {
3596 ; KNL-LABEL: v4i1_mem:
3597 ; KNL:       ## %bb.0:
3598 ; KNL-NEXT:    subq $24, %rsp
3599 ; KNL-NEXT:    .cfi_def_cfa_offset 32
3600 ; KNL-NEXT:    vmovaps {{[0-9]+}}(%rsp), %xmm8
3601 ; KNL-NEXT:    vmovaps %xmm8, (%rsp)
3602 ; KNL-NEXT:    callq _v4i1_mem_callee
3603 ; KNL-NEXT:    addq $24, %rsp
3604 ; KNL-NEXT:    retq
3606 ; SKX-LABEL: v4i1_mem:
3607 ; SKX:       ## %bb.0:
3608 ; SKX-NEXT:    subq $24, %rsp
3609 ; SKX-NEXT:    .cfi_def_cfa_offset 32
3610 ; SKX-NEXT:    vmovaps {{[0-9]+}}(%rsp), %xmm8
3611 ; SKX-NEXT:    vmovaps %xmm8, (%rsp)
3612 ; SKX-NEXT:    callq _v4i1_mem_callee
3613 ; SKX-NEXT:    addq $24, %rsp
3614 ; SKX-NEXT:    vzeroupper
3615 ; SKX-NEXT:    retq
3617 ; KNL_X32-LABEL: v4i1_mem:
3618 ; KNL_X32:       ## %bb.0:
3619 ; KNL_X32-NEXT:    pushl %ebp
3620 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
3621 ; KNL_X32-NEXT:    .cfi_offset %ebp, -8
3622 ; KNL_X32-NEXT:    movl %esp, %ebp
3623 ; KNL_X32-NEXT:    .cfi_def_cfa_register %ebp
3624 ; KNL_X32-NEXT:    andl $-64, %esp
3625 ; KNL_X32-NEXT:    subl $384, %esp ## imm = 0x180
3626 ; KNL_X32-NEXT:    vmovaps 72(%ebp), %zmm5
3627 ; KNL_X32-NEXT:    vmovaps 136(%ebp), %zmm6
3628 ; KNL_X32-NEXT:    vmovaps 200(%ebp), %zmm7
3629 ; KNL_X32-NEXT:    vmovaps 264(%ebp), %xmm4
3630 ; KNL_X32-NEXT:    vmovaps %xmm4, {{[0-9]+}}(%esp)
3631 ; KNL_X32-NEXT:    vmovaps %zmm7, {{[0-9]+}}(%esp)
3632 ; KNL_X32-NEXT:    vmovaps %zmm6, {{[0-9]+}}(%esp)
3633 ; KNL_X32-NEXT:    vmovaps %zmm5, {{[0-9]+}}(%esp)
3634 ; KNL_X32-NEXT:    vmovaps 8(%ebp), %zmm4
3635 ; KNL_X32-NEXT:    vmovaps %zmm4, (%esp)
3636 ; KNL_X32-NEXT:    calll _v4i1_mem_callee
3637 ; KNL_X32-NEXT:    movl %ebp, %esp
3638 ; KNL_X32-NEXT:    popl %ebp
3639 ; KNL_X32-NEXT:    retl
3641 ; FASTISEL-LABEL: v4i1_mem:
3642 ; FASTISEL:       ## %bb.0:
3643 ; FASTISEL-NEXT:    subq $24, %rsp
3644 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 32
3645 ; FASTISEL-NEXT:    vpslld $31, {{[0-9]+}}(%rsp), %xmm8
3646 ; FASTISEL-NEXT:    vpmovd2m %xmm8, %k0
3647 ; FASTISEL-NEXT:    vpmovm2d %k0, %xmm8
3648 ; FASTISEL-NEXT:    vmovdqa %xmm8, (%rsp)
3649 ; FASTISEL-NEXT:    callq _v4i1_mem_callee
3650 ; FASTISEL-NEXT:    addq $24, %rsp
3651 ; FASTISEL-NEXT:    vzeroupper
3652 ; FASTISEL-NEXT:    retq
3653   call void @v4i1_mem_callee(<128 x i32> %x, <4 x i1> %y)
3654   ret void
3657 declare void @v8i1_mem_callee(<128 x i32> %x, <8 x i1> %y)
3658 define void @v8i1_mem(<128 x i32> %x, <8 x i1> %y) {
3659 ; KNL-LABEL: v8i1_mem:
3660 ; KNL:       ## %bb.0:
3661 ; KNL-NEXT:    subq $24, %rsp
3662 ; KNL-NEXT:    .cfi_def_cfa_offset 32
3663 ; KNL-NEXT:    vmovaps {{[0-9]+}}(%rsp), %xmm8
3664 ; KNL-NEXT:    vmovaps %xmm8, (%rsp)
3665 ; KNL-NEXT:    callq _v8i1_mem_callee
3666 ; KNL-NEXT:    addq $24, %rsp
3667 ; KNL-NEXT:    retq
3669 ; SKX-LABEL: v8i1_mem:
3670 ; SKX:       ## %bb.0:
3671 ; SKX-NEXT:    subq $24, %rsp
3672 ; SKX-NEXT:    .cfi_def_cfa_offset 32
3673 ; SKX-NEXT:    vmovaps {{[0-9]+}}(%rsp), %xmm8
3674 ; SKX-NEXT:    vmovaps %xmm8, (%rsp)
3675 ; SKX-NEXT:    callq _v8i1_mem_callee
3676 ; SKX-NEXT:    addq $24, %rsp
3677 ; SKX-NEXT:    vzeroupper
3678 ; SKX-NEXT:    retq
3680 ; KNL_X32-LABEL: v8i1_mem:
3681 ; KNL_X32:       ## %bb.0:
3682 ; KNL_X32-NEXT:    pushl %ebp
3683 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
3684 ; KNL_X32-NEXT:    .cfi_offset %ebp, -8
3685 ; KNL_X32-NEXT:    movl %esp, %ebp
3686 ; KNL_X32-NEXT:    .cfi_def_cfa_register %ebp
3687 ; KNL_X32-NEXT:    andl $-64, %esp
3688 ; KNL_X32-NEXT:    subl $384, %esp ## imm = 0x180
3689 ; KNL_X32-NEXT:    vmovaps 72(%ebp), %zmm5
3690 ; KNL_X32-NEXT:    vmovaps 136(%ebp), %zmm6
3691 ; KNL_X32-NEXT:    vmovaps 200(%ebp), %zmm7
3692 ; KNL_X32-NEXT:    vmovaps 264(%ebp), %xmm4
3693 ; KNL_X32-NEXT:    vmovaps %xmm4, {{[0-9]+}}(%esp)
3694 ; KNL_X32-NEXT:    vmovaps %zmm7, {{[0-9]+}}(%esp)
3695 ; KNL_X32-NEXT:    vmovaps %zmm6, {{[0-9]+}}(%esp)
3696 ; KNL_X32-NEXT:    vmovaps %zmm5, {{[0-9]+}}(%esp)
3697 ; KNL_X32-NEXT:    vmovaps 8(%ebp), %zmm4
3698 ; KNL_X32-NEXT:    vmovaps %zmm4, (%esp)
3699 ; KNL_X32-NEXT:    calll _v8i1_mem_callee
3700 ; KNL_X32-NEXT:    movl %ebp, %esp
3701 ; KNL_X32-NEXT:    popl %ebp
3702 ; KNL_X32-NEXT:    retl
3704 ; FASTISEL-LABEL: v8i1_mem:
3705 ; FASTISEL:       ## %bb.0:
3706 ; FASTISEL-NEXT:    subq $24, %rsp
3707 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 32
3708 ; FASTISEL-NEXT:    vpsllw $15, {{[0-9]+}}(%rsp), %xmm8
3709 ; FASTISEL-NEXT:    vpmovw2m %xmm8, %k0
3710 ; FASTISEL-NEXT:    vpmovm2w %k0, %xmm8
3711 ; FASTISEL-NEXT:    vmovdqa %xmm8, (%rsp)
3712 ; FASTISEL-NEXT:    callq _v8i1_mem_callee
3713 ; FASTISEL-NEXT:    addq $24, %rsp
3714 ; FASTISEL-NEXT:    vzeroupper
3715 ; FASTISEL-NEXT:    retq
3716   call void @v8i1_mem_callee(<128 x i32> %x, <8 x i1> %y)
3717   ret void
3720 declare void @v16i1_mem_callee(<128 x i32> %x, <16 x i1> %y)
3721 define void @v16i1_mem(<128 x i32> %x, <16 x i1> %y) {
3722 ; KNL-LABEL: v16i1_mem:
3723 ; KNL:       ## %bb.0:
3724 ; KNL-NEXT:    subq $24, %rsp
3725 ; KNL-NEXT:    .cfi_def_cfa_offset 32
3726 ; KNL-NEXT:    vmovaps {{[0-9]+}}(%rsp), %xmm8
3727 ; KNL-NEXT:    vmovaps %xmm8, (%rsp)
3728 ; KNL-NEXT:    callq _v16i1_mem_callee
3729 ; KNL-NEXT:    addq $24, %rsp
3730 ; KNL-NEXT:    retq
3732 ; SKX-LABEL: v16i1_mem:
3733 ; SKX:       ## %bb.0:
3734 ; SKX-NEXT:    subq $24, %rsp
3735 ; SKX-NEXT:    .cfi_def_cfa_offset 32
3736 ; SKX-NEXT:    vmovaps {{[0-9]+}}(%rsp), %xmm8
3737 ; SKX-NEXT:    vmovaps %xmm8, (%rsp)
3738 ; SKX-NEXT:    callq _v16i1_mem_callee
3739 ; SKX-NEXT:    addq $24, %rsp
3740 ; SKX-NEXT:    vzeroupper
3741 ; SKX-NEXT:    retq
3743 ; KNL_X32-LABEL: v16i1_mem:
3744 ; KNL_X32:       ## %bb.0:
3745 ; KNL_X32-NEXT:    pushl %ebp
3746 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
3747 ; KNL_X32-NEXT:    .cfi_offset %ebp, -8
3748 ; KNL_X32-NEXT:    movl %esp, %ebp
3749 ; KNL_X32-NEXT:    .cfi_def_cfa_register %ebp
3750 ; KNL_X32-NEXT:    andl $-64, %esp
3751 ; KNL_X32-NEXT:    subl $384, %esp ## imm = 0x180
3752 ; KNL_X32-NEXT:    vmovaps 72(%ebp), %zmm5
3753 ; KNL_X32-NEXT:    vmovaps 136(%ebp), %zmm6
3754 ; KNL_X32-NEXT:    vmovaps 200(%ebp), %zmm7
3755 ; KNL_X32-NEXT:    vmovaps 264(%ebp), %xmm4
3756 ; KNL_X32-NEXT:    vmovaps %xmm4, {{[0-9]+}}(%esp)
3757 ; KNL_X32-NEXT:    vmovaps %zmm7, {{[0-9]+}}(%esp)
3758 ; KNL_X32-NEXT:    vmovaps %zmm6, {{[0-9]+}}(%esp)
3759 ; KNL_X32-NEXT:    vmovaps %zmm5, {{[0-9]+}}(%esp)
3760 ; KNL_X32-NEXT:    vmovaps 8(%ebp), %zmm4
3761 ; KNL_X32-NEXT:    vmovaps %zmm4, (%esp)
3762 ; KNL_X32-NEXT:    calll _v16i1_mem_callee
3763 ; KNL_X32-NEXT:    movl %ebp, %esp
3764 ; KNL_X32-NEXT:    popl %ebp
3765 ; KNL_X32-NEXT:    retl
3767 ; FASTISEL-LABEL: v16i1_mem:
3768 ; FASTISEL:       ## %bb.0:
3769 ; FASTISEL-NEXT:    subq $24, %rsp
3770 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 32
3771 ; FASTISEL-NEXT:    vpsllw $7, {{[0-9]+}}(%rsp), %xmm8
3772 ; FASTISEL-NEXT:    vpmovb2m %xmm8, %k0
3773 ; FASTISEL-NEXT:    vpmovm2b %k0, %xmm8
3774 ; FASTISEL-NEXT:    vmovdqa %xmm8, (%rsp)
3775 ; FASTISEL-NEXT:    callq _v16i1_mem_callee
3776 ; FASTISEL-NEXT:    addq $24, %rsp
3777 ; FASTISEL-NEXT:    vzeroupper
3778 ; FASTISEL-NEXT:    retq
3779   call void @v16i1_mem_callee(<128 x i32> %x, <16 x i1> %y)
3780   ret void
3783 declare void @v32i1_mem_callee(<128 x i32> %x, <32 x i1> %y)
3784 define void @v32i1_mem(<128 x i32> %x, <32 x i1> %y) {
3785 ; KNL-LABEL: v32i1_mem:
3786 ; KNL:       ## %bb.0:
3787 ; KNL-NEXT:    pushq %rbp
3788 ; KNL-NEXT:    .cfi_def_cfa_offset 16
3789 ; KNL-NEXT:    .cfi_offset %rbp, -16
3790 ; KNL-NEXT:    movq %rsp, %rbp
3791 ; KNL-NEXT:    .cfi_def_cfa_register %rbp
3792 ; KNL-NEXT:    andq $-32, %rsp
3793 ; KNL-NEXT:    subq $64, %rsp
3794 ; KNL-NEXT:    vmovaps 16(%rbp), %ymm8
3795 ; KNL-NEXT:    vmovaps %ymm8, (%rsp)
3796 ; KNL-NEXT:    callq _v32i1_mem_callee
3797 ; KNL-NEXT:    movq %rbp, %rsp
3798 ; KNL-NEXT:    popq %rbp
3799 ; KNL-NEXT:    retq
3801 ; SKX-LABEL: v32i1_mem:
3802 ; SKX:       ## %bb.0:
3803 ; SKX-NEXT:    pushq %rbp
3804 ; SKX-NEXT:    .cfi_def_cfa_offset 16
3805 ; SKX-NEXT:    .cfi_offset %rbp, -16
3806 ; SKX-NEXT:    movq %rsp, %rbp
3807 ; SKX-NEXT:    .cfi_def_cfa_register %rbp
3808 ; SKX-NEXT:    andq $-32, %rsp
3809 ; SKX-NEXT:    subq $64, %rsp
3810 ; SKX-NEXT:    vmovaps 16(%rbp), %ymm8
3811 ; SKX-NEXT:    vmovaps %ymm8, (%rsp)
3812 ; SKX-NEXT:    callq _v32i1_mem_callee
3813 ; SKX-NEXT:    movq %rbp, %rsp
3814 ; SKX-NEXT:    popq %rbp
3815 ; SKX-NEXT:    vzeroupper
3816 ; SKX-NEXT:    retq
3818 ; KNL_X32-LABEL: v32i1_mem:
3819 ; KNL_X32:       ## %bb.0:
3820 ; KNL_X32-NEXT:    pushl %ebp
3821 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
3822 ; KNL_X32-NEXT:    .cfi_offset %ebp, -8
3823 ; KNL_X32-NEXT:    movl %esp, %ebp
3824 ; KNL_X32-NEXT:    .cfi_def_cfa_register %ebp
3825 ; KNL_X32-NEXT:    andl $-64, %esp
3826 ; KNL_X32-NEXT:    subl $384, %esp ## imm = 0x180
3827 ; KNL_X32-NEXT:    vmovaps 72(%ebp), %zmm5
3828 ; KNL_X32-NEXT:    vmovaps 136(%ebp), %zmm6
3829 ; KNL_X32-NEXT:    vmovaps 200(%ebp), %zmm7
3830 ; KNL_X32-NEXT:    vmovaps 264(%ebp), %ymm4
3831 ; KNL_X32-NEXT:    vmovaps %ymm4, {{[0-9]+}}(%esp)
3832 ; KNL_X32-NEXT:    vmovaps %zmm7, {{[0-9]+}}(%esp)
3833 ; KNL_X32-NEXT:    vmovaps %zmm6, {{[0-9]+}}(%esp)
3834 ; KNL_X32-NEXT:    vmovaps %zmm5, {{[0-9]+}}(%esp)
3835 ; KNL_X32-NEXT:    vmovaps 8(%ebp), %zmm4
3836 ; KNL_X32-NEXT:    vmovaps %zmm4, (%esp)
3837 ; KNL_X32-NEXT:    calll _v32i1_mem_callee
3838 ; KNL_X32-NEXT:    movl %ebp, %esp
3839 ; KNL_X32-NEXT:    popl %ebp
3840 ; KNL_X32-NEXT:    retl
3842 ; FASTISEL-LABEL: v32i1_mem:
3843 ; FASTISEL:       ## %bb.0:
3844 ; FASTISEL-NEXT:    pushq %rbp
3845 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 16
3846 ; FASTISEL-NEXT:    .cfi_offset %rbp, -16
3847 ; FASTISEL-NEXT:    movq %rsp, %rbp
3848 ; FASTISEL-NEXT:    .cfi_def_cfa_register %rbp
3849 ; FASTISEL-NEXT:    andq $-32, %rsp
3850 ; FASTISEL-NEXT:    subq $64, %rsp
3851 ; FASTISEL-NEXT:    vpsllw $7, 16(%rbp), %ymm8
3852 ; FASTISEL-NEXT:    vpmovb2m %ymm8, %k0
3853 ; FASTISEL-NEXT:    vpmovm2b %k0, %ymm8
3854 ; FASTISEL-NEXT:    vmovdqa %ymm8, (%rsp)
3855 ; FASTISEL-NEXT:    callq _v32i1_mem_callee
3856 ; FASTISEL-NEXT:    movq %rbp, %rsp
3857 ; FASTISEL-NEXT:    popq %rbp
3858 ; FASTISEL-NEXT:    vzeroupper
3859 ; FASTISEL-NEXT:    retq
3860   call void @v32i1_mem_callee(<128 x i32> %x, <32 x i1> %y)
3861   ret void
3864 declare void @v64i1_mem_callee(<128 x i32> %x, <64 x i1> %y)
3865 define void @v64i1_mem(<128 x i32> %x, <64 x i1> %y) {
3866 ; KNL-LABEL: v64i1_mem:
3867 ; KNL:       ## %bb.0:
3868 ; KNL-NEXT:    subq $472, %rsp ## imm = 0x1D8
3869 ; KNL-NEXT:    .cfi_def_cfa_offset 480
3870 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3871 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3872 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3873 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3874 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3875 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3876 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3877 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3878 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3879 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3880 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3881 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3882 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3883 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3884 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3885 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3886 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3887 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3888 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3889 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3890 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3891 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3892 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3893 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3894 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3895 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3896 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3897 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3898 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3899 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3900 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3901 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3902 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3903 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3904 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3905 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3906 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3907 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3908 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3909 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3910 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3911 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3912 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3913 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3914 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3915 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3916 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3917 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3918 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3919 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3920 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3921 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3922 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3923 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3924 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3925 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3926 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3927 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3928 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3929 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3930 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3931 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3932 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3933 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3934 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3935 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3936 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3937 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3938 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3939 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3940 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3941 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3942 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3943 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3944 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3945 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3946 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3947 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3948 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3949 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3950 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3951 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3952 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3953 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3954 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3955 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3956 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3957 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3958 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3959 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3960 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3961 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3962 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3963 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3964 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3965 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3966 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3967 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3968 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3969 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3970 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3971 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3972 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3973 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3974 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3975 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3976 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3977 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3978 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3979 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3980 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3981 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3982 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3983 ; KNL-NEXT:    movl %eax, {{[0-9]+}}(%rsp)
3984 ; KNL-NEXT:    movl {{[0-9]+}}(%rsp), %eax
3985 ; KNL-NEXT:    movl %eax, (%rsp)
3986 ; KNL-NEXT:    callq _v64i1_mem_callee
3987 ; KNL-NEXT:    addq $472, %rsp ## imm = 0x1D8
3988 ; KNL-NEXT:    retq
3990 ; SKX-LABEL: v64i1_mem:
3991 ; SKX:       ## %bb.0:
3992 ; SKX-NEXT:    pushq %rbp
3993 ; SKX-NEXT:    .cfi_def_cfa_offset 16
3994 ; SKX-NEXT:    .cfi_offset %rbp, -16
3995 ; SKX-NEXT:    movq %rsp, %rbp
3996 ; SKX-NEXT:    .cfi_def_cfa_register %rbp
3997 ; SKX-NEXT:    andq $-64, %rsp
3998 ; SKX-NEXT:    subq $128, %rsp
3999 ; SKX-NEXT:    vmovaps 16(%rbp), %zmm8
4000 ; SKX-NEXT:    vmovaps %zmm8, (%rsp)
4001 ; SKX-NEXT:    callq _v64i1_mem_callee
4002 ; SKX-NEXT:    movq %rbp, %rsp
4003 ; SKX-NEXT:    popq %rbp
4004 ; SKX-NEXT:    vzeroupper
4005 ; SKX-NEXT:    retq
4007 ; KNL_X32-LABEL: v64i1_mem:
4008 ; KNL_X32:       ## %bb.0:
4009 ; KNL_X32-NEXT:    pushl %ebp
4010 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
4011 ; KNL_X32-NEXT:    .cfi_offset %ebp, -8
4012 ; KNL_X32-NEXT:    movl %esp, %ebp
4013 ; KNL_X32-NEXT:    .cfi_def_cfa_register %ebp
4014 ; KNL_X32-NEXT:    andl $-64, %esp
4015 ; KNL_X32-NEXT:    subl $576, %esp ## imm = 0x240
4016 ; KNL_X32-NEXT:    vmovaps 8(%ebp), %zmm4
4017 ; KNL_X32-NEXT:    vmovaps 72(%ebp), %zmm5
4018 ; KNL_X32-NEXT:    vmovaps 136(%ebp), %zmm6
4019 ; KNL_X32-NEXT:    vmovaps 200(%ebp), %zmm7
4020 ; KNL_X32-NEXT:    movl 516(%ebp), %eax
4021 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4022 ; KNL_X32-NEXT:    movl 512(%ebp), %eax
4023 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4024 ; KNL_X32-NEXT:    movl 508(%ebp), %eax
4025 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4026 ; KNL_X32-NEXT:    movl 504(%ebp), %eax
4027 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4028 ; KNL_X32-NEXT:    movl 500(%ebp), %eax
4029 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4030 ; KNL_X32-NEXT:    movl 496(%ebp), %eax
4031 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4032 ; KNL_X32-NEXT:    movl 492(%ebp), %eax
4033 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4034 ; KNL_X32-NEXT:    movl 488(%ebp), %eax
4035 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4036 ; KNL_X32-NEXT:    movl 484(%ebp), %eax
4037 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4038 ; KNL_X32-NEXT:    movl 480(%ebp), %eax
4039 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4040 ; KNL_X32-NEXT:    movl 476(%ebp), %eax
4041 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4042 ; KNL_X32-NEXT:    movl 472(%ebp), %eax
4043 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4044 ; KNL_X32-NEXT:    movl 468(%ebp), %eax
4045 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4046 ; KNL_X32-NEXT:    movl 464(%ebp), %eax
4047 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4048 ; KNL_X32-NEXT:    movl 460(%ebp), %eax
4049 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4050 ; KNL_X32-NEXT:    movl 456(%ebp), %eax
4051 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4052 ; KNL_X32-NEXT:    movl 452(%ebp), %eax
4053 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4054 ; KNL_X32-NEXT:    movl 448(%ebp), %eax
4055 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4056 ; KNL_X32-NEXT:    movl 444(%ebp), %eax
4057 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4058 ; KNL_X32-NEXT:    movl 440(%ebp), %eax
4059 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4060 ; KNL_X32-NEXT:    movl 436(%ebp), %eax
4061 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4062 ; KNL_X32-NEXT:    movl 432(%ebp), %eax
4063 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4064 ; KNL_X32-NEXT:    movl 428(%ebp), %eax
4065 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4066 ; KNL_X32-NEXT:    movl 424(%ebp), %eax
4067 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4068 ; KNL_X32-NEXT:    movl 420(%ebp), %eax
4069 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4070 ; KNL_X32-NEXT:    movl 416(%ebp), %eax
4071 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4072 ; KNL_X32-NEXT:    movl 412(%ebp), %eax
4073 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4074 ; KNL_X32-NEXT:    movl 408(%ebp), %eax
4075 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4076 ; KNL_X32-NEXT:    movl 404(%ebp), %eax
4077 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4078 ; KNL_X32-NEXT:    movl 400(%ebp), %eax
4079 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4080 ; KNL_X32-NEXT:    movl 396(%ebp), %eax
4081 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4082 ; KNL_X32-NEXT:    movl 392(%ebp), %eax
4083 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4084 ; KNL_X32-NEXT:    movl 388(%ebp), %eax
4085 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4086 ; KNL_X32-NEXT:    movl 384(%ebp), %eax
4087 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4088 ; KNL_X32-NEXT:    movl 380(%ebp), %eax
4089 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4090 ; KNL_X32-NEXT:    movl 376(%ebp), %eax
4091 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4092 ; KNL_X32-NEXT:    movl 372(%ebp), %eax
4093 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4094 ; KNL_X32-NEXT:    movl 368(%ebp), %eax
4095 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4096 ; KNL_X32-NEXT:    movl 364(%ebp), %eax
4097 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4098 ; KNL_X32-NEXT:    movl 360(%ebp), %eax
4099 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4100 ; KNL_X32-NEXT:    movl 356(%ebp), %eax
4101 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4102 ; KNL_X32-NEXT:    movl 352(%ebp), %eax
4103 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4104 ; KNL_X32-NEXT:    movl 348(%ebp), %eax
4105 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4106 ; KNL_X32-NEXT:    movl 344(%ebp), %eax
4107 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4108 ; KNL_X32-NEXT:    movl 340(%ebp), %eax
4109 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4110 ; KNL_X32-NEXT:    movl 336(%ebp), %eax
4111 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4112 ; KNL_X32-NEXT:    movl 332(%ebp), %eax
4113 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4114 ; KNL_X32-NEXT:    movl 328(%ebp), %eax
4115 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4116 ; KNL_X32-NEXT:    movl 324(%ebp), %eax
4117 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4118 ; KNL_X32-NEXT:    movl 320(%ebp), %eax
4119 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4120 ; KNL_X32-NEXT:    movl 316(%ebp), %eax
4121 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4122 ; KNL_X32-NEXT:    movl 312(%ebp), %eax
4123 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4124 ; KNL_X32-NEXT:    movl 308(%ebp), %eax
4125 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4126 ; KNL_X32-NEXT:    movl 304(%ebp), %eax
4127 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4128 ; KNL_X32-NEXT:    movl 300(%ebp), %eax
4129 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4130 ; KNL_X32-NEXT:    movl 296(%ebp), %eax
4131 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4132 ; KNL_X32-NEXT:    movl 292(%ebp), %eax
4133 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4134 ; KNL_X32-NEXT:    movl 288(%ebp), %eax
4135 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4136 ; KNL_X32-NEXT:    movl 284(%ebp), %eax
4137 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4138 ; KNL_X32-NEXT:    movl 280(%ebp), %eax
4139 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4140 ; KNL_X32-NEXT:    movl 276(%ebp), %eax
4141 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4142 ; KNL_X32-NEXT:    movl 272(%ebp), %eax
4143 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4144 ; KNL_X32-NEXT:    movl 268(%ebp), %eax
4145 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4146 ; KNL_X32-NEXT:    movl 264(%ebp), %eax
4147 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
4148 ; KNL_X32-NEXT:    vmovaps %zmm7, {{[0-9]+}}(%esp)
4149 ; KNL_X32-NEXT:    vmovaps %zmm6, {{[0-9]+}}(%esp)
4150 ; KNL_X32-NEXT:    vmovaps %zmm5, {{[0-9]+}}(%esp)
4151 ; KNL_X32-NEXT:    vmovaps %zmm4, (%esp)
4152 ; KNL_X32-NEXT:    calll _v64i1_mem_callee
4153 ; KNL_X32-NEXT:    movl %ebp, %esp
4154 ; KNL_X32-NEXT:    popl %ebp
4155 ; KNL_X32-NEXT:    retl
4157 ; FASTISEL-LABEL: v64i1_mem:
4158 ; FASTISEL:       ## %bb.0:
4159 ; FASTISEL-NEXT:    pushq %rbp
4160 ; FASTISEL-NEXT:    .cfi_def_cfa_offset 16
4161 ; FASTISEL-NEXT:    .cfi_offset %rbp, -16
4162 ; FASTISEL-NEXT:    movq %rsp, %rbp
4163 ; FASTISEL-NEXT:    .cfi_def_cfa_register %rbp
4164 ; FASTISEL-NEXT:    andq $-64, %rsp
4165 ; FASTISEL-NEXT:    subq $128, %rsp
4166 ; FASTISEL-NEXT:    vpsllw $7, 16(%rbp), %zmm8
4167 ; FASTISEL-NEXT:    vpmovb2m %zmm8, %k0
4168 ; FASTISEL-NEXT:    vpmovm2b %k0, %zmm8
4169 ; FASTISEL-NEXT:    vmovdqa64 %zmm8, (%rsp)
4170 ; FASTISEL-NEXT:    callq _v64i1_mem_callee
4171 ; FASTISEL-NEXT:    movq %rbp, %rsp
4172 ; FASTISEL-NEXT:    popq %rbp
4173 ; FASTISEL-NEXT:    vzeroupper
4174 ; FASTISEL-NEXT:    retq
4175   call void @v64i1_mem_callee(<128 x i32> %x, <64 x i1> %y)
4176   ret void