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