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