[yaml2obj/obj2yaml] - Add support for .stack_sizes sections.
[llvm-complete.git] / test / CodeGen / X86 / avx512-calling-conv.ll
blob8901cee464630b46e5f21a753aaeed3345121d69
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 --check-prefix=KNL-NEW
3 ; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=knl -x86-enable-old-knl-abi | FileCheck %s --check-prefix=ALL_X64 --check-prefix=KNL --check-prefix=KNL-OLD
4 ; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=skx | FileCheck %s --check-prefix=ALL_X64 --check-prefix=SKX
5 ; RUN: llc < %s -mtriple=i686-apple-darwin9 -mcpu=knl | FileCheck %s --check-prefix=KNL_X32
7 define <16 x i1> @test1() {
8 ; ALL_X64-LABEL: test1:
9 ; ALL_X64:       ## %bb.0:
10 ; ALL_X64-NEXT:    vxorps %xmm0, %xmm0, %xmm0
11 ; ALL_X64-NEXT:    retq
13 ; KNL_X32-LABEL: test1:
14 ; KNL_X32:       ## %bb.0:
15 ; KNL_X32-NEXT:    vxorps %xmm0, %xmm0, %xmm0
16 ; KNL_X32-NEXT:    retl
17   ret <16 x i1> zeroinitializer
20 define <16 x i1> @test2(<16 x i1>%a, <16 x i1>%b) {
21 ; ALL_X64-LABEL: test2:
22 ; ALL_X64:       ## %bb.0:
23 ; ALL_X64-NEXT:    vandps %xmm1, %xmm0, %xmm0
24 ; ALL_X64-NEXT:    retq
26 ; KNL_X32-LABEL: test2:
27 ; KNL_X32:       ## %bb.0:
28 ; KNL_X32-NEXT:    vandps %xmm1, %xmm0, %xmm0
29 ; KNL_X32-NEXT:    retl
30   %c = and <16 x i1>%a, %b
31   ret <16 x i1> %c
34 define <8 x i1> @test3(<8 x i1>%a, <8 x i1>%b) {
35 ; ALL_X64-LABEL: test3:
36 ; ALL_X64:       ## %bb.0:
37 ; ALL_X64-NEXT:    vandps %xmm1, %xmm0, %xmm0
38 ; ALL_X64-NEXT:    retq
40 ; KNL_X32-LABEL: test3:
41 ; KNL_X32:       ## %bb.0:
42 ; KNL_X32-NEXT:    vandps %xmm1, %xmm0, %xmm0
43 ; KNL_X32-NEXT:    retl
44   %c = and <8 x i1>%a, %b
45   ret <8 x i1> %c
48 define <4 x i1> @test4(<4 x i1>%a, <4 x i1>%b) {
49 ; ALL_X64-LABEL: test4:
50 ; ALL_X64:       ## %bb.0:
51 ; ALL_X64-NEXT:    vandps %xmm1, %xmm0, %xmm0
52 ; ALL_X64-NEXT:    retq
54 ; KNL_X32-LABEL: test4:
55 ; KNL_X32:       ## %bb.0:
56 ; KNL_X32-NEXT:    vandps %xmm1, %xmm0, %xmm0
57 ; KNL_X32-NEXT:    retl
58   %c = and <4 x i1>%a, %b
59   ret <4 x i1> %c
62 declare <8 x i1> @func8xi1(<8 x i1> %a)
64 define <8 x i32> @test5(<8 x i32>%a, <8 x i32>%b) {
65 ; KNL-LABEL: test5:
66 ; KNL:       ## %bb.0:
67 ; KNL-NEXT:    pushq %rax
68 ; KNL-NEXT:    .cfi_def_cfa_offset 16
69 ; KNL-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
70 ; KNL-NEXT:    vpmovdw %zmm0, %ymm0
71 ; KNL-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $ymm0
72 ; KNL-NEXT:    callq _func8xi1
73 ; 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
74 ; KNL-NEXT:    vpslld $31, %ymm0, %ymm0
75 ; KNL-NEXT:    vpsrad $31, %ymm0, %ymm0
76 ; KNL-NEXT:    popq %rax
77 ; KNL-NEXT:    retq
79 ; SKX-LABEL: test5:
80 ; SKX:       ## %bb.0:
81 ; SKX-NEXT:    pushq %rax
82 ; SKX-NEXT:    .cfi_def_cfa_offset 16
83 ; SKX-NEXT:    vpcmpgtd %ymm1, %ymm0, %k0
84 ; SKX-NEXT:    vpmovm2w %k0, %xmm0
85 ; SKX-NEXT:    vzeroupper
86 ; SKX-NEXT:    callq _func8xi1
87 ; 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
88 ; SKX-NEXT:    vpslld $31, %ymm0, %ymm0
89 ; SKX-NEXT:    vpsrad $31, %ymm0, %ymm0
90 ; SKX-NEXT:    popq %rax
91 ; SKX-NEXT:    retq
93 ; KNL_X32-LABEL: test5:
94 ; KNL_X32:       ## %bb.0:
95 ; KNL_X32-NEXT:    subl $12, %esp
96 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
97 ; KNL_X32-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
98 ; KNL_X32-NEXT:    vpmovdw %zmm0, %ymm0
99 ; KNL_X32-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $ymm0
100 ; KNL_X32-NEXT:    calll _func8xi1
101 ; 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
102 ; KNL_X32-NEXT:    vpslld $31, %ymm0, %ymm0
103 ; KNL_X32-NEXT:    vpsrad $31, %ymm0, %ymm0
104 ; KNL_X32-NEXT:    addl $12, %esp
105 ; KNL_X32-NEXT:    retl
106   %cmpRes = icmp sgt <8 x i32>%a, %b
107   %resi = call <8 x i1> @func8xi1(<8 x i1> %cmpRes)
108   %res = sext <8 x i1>%resi to <8 x i32>
109   ret <8 x i32> %res
112 declare <16 x i1> @func16xi1(<16 x i1> %a)
114 define <16 x i32> @test6(<16 x i32>%a, <16 x i32>%b) {
115 ; KNL-LABEL: test6:
116 ; KNL:       ## %bb.0:
117 ; KNL-NEXT:    pushq %rax
118 ; KNL-NEXT:    .cfi_def_cfa_offset 16
119 ; KNL-NEXT:    vpcmpgtd %zmm1, %zmm0, %k1
120 ; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
121 ; KNL-NEXT:    vpmovdb %zmm0, %xmm0
122 ; KNL-NEXT:    callq _func16xi1
123 ; 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
124 ; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
125 ; KNL-NEXT:    vpsrad $31, %zmm0, %zmm0
126 ; KNL-NEXT:    popq %rax
127 ; KNL-NEXT:    retq
129 ; SKX-LABEL: test6:
130 ; SKX:       ## %bb.0:
131 ; SKX-NEXT:    pushq %rax
132 ; SKX-NEXT:    .cfi_def_cfa_offset 16
133 ; SKX-NEXT:    vpcmpgtd %zmm1, %zmm0, %k0
134 ; SKX-NEXT:    vpmovm2b %k0, %xmm0
135 ; SKX-NEXT:    vzeroupper
136 ; SKX-NEXT:    callq _func16xi1
137 ; 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
138 ; SKX-NEXT:    vpslld $31, %zmm0, %zmm0
139 ; SKX-NEXT:    vpsrad $31, %zmm0, %zmm0
140 ; SKX-NEXT:    popq %rax
141 ; SKX-NEXT:    retq
143 ; KNL_X32-LABEL: test6:
144 ; KNL_X32:       ## %bb.0:
145 ; KNL_X32-NEXT:    subl $12, %esp
146 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
147 ; KNL_X32-NEXT:    vpcmpgtd %zmm1, %zmm0, %k1
148 ; KNL_X32-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
149 ; KNL_X32-NEXT:    vpmovdb %zmm0, %xmm0
150 ; KNL_X32-NEXT:    calll _func16xi1
151 ; 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
152 ; KNL_X32-NEXT:    vpslld $31, %zmm0, %zmm0
153 ; KNL_X32-NEXT:    vpsrad $31, %zmm0, %zmm0
154 ; KNL_X32-NEXT:    addl $12, %esp
155 ; KNL_X32-NEXT:    retl
156   %cmpRes = icmp sgt <16 x i32>%a, %b
157   %resi = call <16 x i1> @func16xi1(<16 x i1> %cmpRes)
158   %res = sext <16 x i1>%resi to <16 x i32>
159   ret <16 x i32> %res
162 declare <4 x i1> @func4xi1(<4 x i1> %a)
164 define <4 x i32> @test7(<4 x i32>%a, <4 x i32>%b) {
165 ; ALL_X64-LABEL: test7:
166 ; ALL_X64:       ## %bb.0:
167 ; ALL_X64-NEXT:    pushq %rax
168 ; ALL_X64-NEXT:    .cfi_def_cfa_offset 16
169 ; ALL_X64-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
170 ; ALL_X64-NEXT:    callq _func4xi1
171 ; ALL_X64-NEXT:    vpslld $31, %xmm0, %xmm0
172 ; ALL_X64-NEXT:    vpsrad $31, %xmm0, %xmm0
173 ; ALL_X64-NEXT:    popq %rax
174 ; ALL_X64-NEXT:    retq
176 ; KNL_X32-LABEL: test7:
177 ; KNL_X32:       ## %bb.0:
178 ; KNL_X32-NEXT:    subl $12, %esp
179 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
180 ; KNL_X32-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
181 ; KNL_X32-NEXT:    calll _func4xi1
182 ; KNL_X32-NEXT:    vpslld $31, %xmm0, %xmm0
183 ; KNL_X32-NEXT:    vpsrad $31, %xmm0, %xmm0
184 ; KNL_X32-NEXT:    addl $12, %esp
185 ; KNL_X32-NEXT:    retl
186   %cmpRes = icmp sgt <4 x i32>%a, %b
187   %resi = call <4 x i1> @func4xi1(<4 x i1> %cmpRes)
188   %res = sext <4 x i1>%resi to <4 x i32>
189   ret <4 x i32> %res
192 define <8 x i1> @test7a(<8 x i32>%a, <8 x i32>%b) {
193 ; KNL-LABEL: test7a:
194 ; KNL:       ## %bb.0:
195 ; KNL-NEXT:    pushq %rax
196 ; KNL-NEXT:    .cfi_def_cfa_offset 16
197 ; KNL-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
198 ; KNL-NEXT:    vpmovdw %zmm0, %ymm0
199 ; KNL-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $ymm0
200 ; KNL-NEXT:    callq _func8xi1
201 ; KNL-NEXT:    vandps {{.*}}(%rip), %xmm0, %xmm0
202 ; KNL-NEXT:    popq %rax
203 ; KNL-NEXT:    retq
205 ; SKX-LABEL: test7a:
206 ; SKX:       ## %bb.0:
207 ; SKX-NEXT:    pushq %rax
208 ; SKX-NEXT:    .cfi_def_cfa_offset 16
209 ; SKX-NEXT:    vpcmpgtd %ymm1, %ymm0, %k0
210 ; SKX-NEXT:    vpmovm2w %k0, %xmm0
211 ; SKX-NEXT:    vzeroupper
212 ; SKX-NEXT:    callq _func8xi1
213 ; SKX-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
214 ; SKX-NEXT:    popq %rax
215 ; SKX-NEXT:    retq
217 ; KNL_X32-LABEL: test7a:
218 ; KNL_X32:       ## %bb.0:
219 ; KNL_X32-NEXT:    subl $12, %esp
220 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
221 ; KNL_X32-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
222 ; KNL_X32-NEXT:    vpmovdw %zmm0, %ymm0
223 ; KNL_X32-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $ymm0
224 ; KNL_X32-NEXT:    calll _func8xi1
225 ; KNL_X32-NEXT:    vandps LCPI7_0, %xmm0, %xmm0
226 ; KNL_X32-NEXT:    addl $12, %esp
227 ; KNL_X32-NEXT:    retl
228   %cmpRes = icmp sgt <8 x i32>%a, %b
229   %resi = call <8 x i1> @func8xi1(<8 x i1> %cmpRes)
230   %res = and <8 x i1>%resi,  <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false>
231   ret <8 x i1> %res
234 define <16 x i8> @test8(<16 x i8> %a1, <16 x i8> %a2, i1 %cond) {
235 ; ALL_X64-LABEL: test8:
236 ; ALL_X64:       ## %bb.0:
237 ; ALL_X64-NEXT:    testb $1, %dil
238 ; ALL_X64-NEXT:    jne LBB8_2
239 ; ALL_X64-NEXT:  ## %bb.1:
240 ; ALL_X64-NEXT:    vmovaps %xmm1, %xmm0
241 ; ALL_X64-NEXT:  LBB8_2:
242 ; ALL_X64-NEXT:    retq
244 ; KNL_X32-LABEL: test8:
245 ; KNL_X32:       ## %bb.0:
246 ; KNL_X32-NEXT:    testb $1, {{[0-9]+}}(%esp)
247 ; KNL_X32-NEXT:    jne LBB8_2
248 ; KNL_X32-NEXT:  ## %bb.1:
249 ; KNL_X32-NEXT:    vmovaps %xmm1, %xmm0
250 ; KNL_X32-NEXT:  LBB8_2:
251 ; KNL_X32-NEXT:    retl
252   %res = select i1 %cond, <16 x i8> %a1, <16 x i8> %a2
253   ret <16 x i8> %res
256 define i1 @test9(double %a, double %b) {
257 ; ALL_X64-LABEL: test9:
258 ; ALL_X64:       ## %bb.0:
259 ; ALL_X64-NEXT:    vucomisd %xmm0, %xmm1
260 ; ALL_X64-NEXT:    setb %al
261 ; ALL_X64-NEXT:    retq
263 ; KNL_X32-LABEL: test9:
264 ; KNL_X32:       ## %bb.0:
265 ; KNL_X32-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero
266 ; KNL_X32-NEXT:    vucomisd {{[0-9]+}}(%esp), %xmm0
267 ; KNL_X32-NEXT:    setb %al
268 ; KNL_X32-NEXT:    retl
269   %c = fcmp ugt double %a, %b
270   ret i1 %c
273 define i32 @test10(i32 %a, i32 %b, i1 %cond) {
274 ; ALL_X64-LABEL: test10:
275 ; ALL_X64:       ## %bb.0:
276 ; ALL_X64-NEXT:    movl %edi, %eax
277 ; ALL_X64-NEXT:    testb $1, %dl
278 ; ALL_X64-NEXT:    cmovel %esi, %eax
279 ; ALL_X64-NEXT:    retq
281 ; KNL_X32-LABEL: test10:
282 ; KNL_X32:       ## %bb.0:
283 ; KNL_X32-NEXT:    testb $1, {{[0-9]+}}(%esp)
284 ; KNL_X32-NEXT:    leal {{[0-9]+}}(%esp), %eax
285 ; KNL_X32-NEXT:    leal {{[0-9]+}}(%esp), %ecx
286 ; KNL_X32-NEXT:    cmovnel %eax, %ecx
287 ; KNL_X32-NEXT:    movl (%ecx), %eax
288 ; KNL_X32-NEXT:    retl
289   %c = select i1 %cond, i32 %a, i32 %b
290   ret i32 %c
293 define i1 @test11(i32 %a, i32 %b) {
294 ; ALL_X64-LABEL: test11:
295 ; ALL_X64:       ## %bb.0:
296 ; ALL_X64-NEXT:    cmpl %esi, %edi
297 ; ALL_X64-NEXT:    setg %al
298 ; ALL_X64-NEXT:    retq
300 ; KNL_X32-LABEL: test11:
301 ; KNL_X32:       ## %bb.0:
302 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
303 ; KNL_X32-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
304 ; KNL_X32-NEXT:    setg %al
305 ; KNL_X32-NEXT:    retl
306   %c = icmp sgt i32 %a, %b
307   ret i1 %c
310 define i32 @test12(i32 %a1, i32 %a2, i32 %b1) {
311 ; ALL_X64-LABEL: test12:
312 ; ALL_X64:       ## %bb.0:
313 ; ALL_X64-NEXT:    pushq %rbp
314 ; ALL_X64-NEXT:    .cfi_def_cfa_offset 16
315 ; ALL_X64-NEXT:    pushq %r14
316 ; ALL_X64-NEXT:    .cfi_def_cfa_offset 24
317 ; ALL_X64-NEXT:    pushq %rbx
318 ; ALL_X64-NEXT:    .cfi_def_cfa_offset 32
319 ; ALL_X64-NEXT:    .cfi_offset %rbx, -32
320 ; ALL_X64-NEXT:    .cfi_offset %r14, -24
321 ; ALL_X64-NEXT:    .cfi_offset %rbp, -16
322 ; ALL_X64-NEXT:    movl %esi, %r14d
323 ; ALL_X64-NEXT:    movl %edi, %ebp
324 ; ALL_X64-NEXT:    movl %edx, %esi
325 ; ALL_X64-NEXT:    callq _test11
326 ; ALL_X64-NEXT:    movzbl %al, %ebx
327 ; ALL_X64-NEXT:    movl %ebp, %edi
328 ; ALL_X64-NEXT:    movl %r14d, %esi
329 ; ALL_X64-NEXT:    movl %ebx, %edx
330 ; ALL_X64-NEXT:    callq _test10
331 ; ALL_X64-NEXT:    xorl %ecx, %ecx
332 ; ALL_X64-NEXT:    testb $1, %bl
333 ; ALL_X64-NEXT:    cmovel %ecx, %eax
334 ; ALL_X64-NEXT:    popq %rbx
335 ; ALL_X64-NEXT:    popq %r14
336 ; ALL_X64-NEXT:    popq %rbp
337 ; ALL_X64-NEXT:    retq
339 ; KNL_X32-LABEL: test12:
340 ; KNL_X32:       ## %bb.0:
341 ; KNL_X32-NEXT:    pushl %ebx
342 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
343 ; KNL_X32-NEXT:    pushl %edi
344 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 12
345 ; KNL_X32-NEXT:    pushl %esi
346 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
347 ; KNL_X32-NEXT:    subl $16, %esp
348 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 32
349 ; KNL_X32-NEXT:    .cfi_offset %esi, -16
350 ; KNL_X32-NEXT:    .cfi_offset %edi, -12
351 ; KNL_X32-NEXT:    .cfi_offset %ebx, -8
352 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
353 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %edi
354 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
355 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
356 ; KNL_X32-NEXT:    movl %edi, (%esp)
357 ; KNL_X32-NEXT:    calll _test11
358 ; KNL_X32-NEXT:    movl %eax, %ebx
359 ; KNL_X32-NEXT:    movzbl %al, %eax
360 ; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
361 ; KNL_X32-NEXT:    movl %esi, {{[0-9]+}}(%esp)
362 ; KNL_X32-NEXT:    movl %edi, (%esp)
363 ; KNL_X32-NEXT:    calll _test10
364 ; KNL_X32-NEXT:    xorl %ecx, %ecx
365 ; KNL_X32-NEXT:    testb $1, %bl
366 ; KNL_X32-NEXT:    cmovel %ecx, %eax
367 ; KNL_X32-NEXT:    addl $16, %esp
368 ; KNL_X32-NEXT:    popl %esi
369 ; KNL_X32-NEXT:    popl %edi
370 ; KNL_X32-NEXT:    popl %ebx
371 ; KNL_X32-NEXT:    retl
372   %cond = call i1 @test11(i32 %a1, i32 %b1)
373   %res = call i32 @test10(i32 %a1, i32 %a2, i1 %cond)
374   %res1 = select i1 %cond, i32 %res, i32 0
375   ret i32 %res1
378 define <1 x i1> @test13(<1 x i1>* %foo) {
379 ; KNL-LABEL: test13:
380 ; KNL:       ## %bb.0:
381 ; KNL-NEXT:    movzbl (%rdi), %eax
382 ; KNL-NEXT:    ## kill: def $al killed $al killed $eax
383 ; KNL-NEXT:    retq
385 ; SKX-LABEL: test13:
386 ; SKX:       ## %bb.0:
387 ; SKX-NEXT:    kmovb (%rdi), %k0
388 ; SKX-NEXT:    kmovd %k0, %eax
389 ; SKX-NEXT:    ## kill: def $al killed $al killed $eax
390 ; SKX-NEXT:    retq
392 ; KNL_X32-LABEL: test13:
393 ; KNL_X32:       ## %bb.0:
394 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
395 ; KNL_X32-NEXT:    movzbl (%eax), %eax
396 ; KNL_X32-NEXT:    ## kill: def $al killed $al killed $eax
397 ; KNL_X32-NEXT:    retl
398   %bar = load <1 x i1>, <1 x i1>* %foo
399   ret <1 x i1> %bar
402 define void @test14(<32 x i16>* %x) {
403 ; KNL-NEW-LABEL: test14:
404 ; KNL-NEW:       ## %bb.0:
405 ; KNL-NEW-NEXT:    pushq %rbx
406 ; KNL-NEW-NEXT:    .cfi_def_cfa_offset 16
407 ; KNL-NEW-NEXT:    .cfi_offset %rbx, -16
408 ; KNL-NEW-NEXT:    movq %rdi, %rbx
409 ; KNL-NEW-NEXT:    vmovaps (%rdi), %zmm0
410 ; KNL-NEW-NEXT:    callq _test14_callee
411 ; KNL-NEW-NEXT:    vmovaps %zmm0, (%rbx)
412 ; KNL-NEW-NEXT:    popq %rbx
413 ; KNL-NEW-NEXT:    retq
415 ; KNL-OLD-LABEL: test14:
416 ; KNL-OLD:       ## %bb.0:
417 ; KNL-OLD-NEXT:    pushq %rbx
418 ; KNL-OLD-NEXT:    .cfi_def_cfa_offset 16
419 ; KNL-OLD-NEXT:    .cfi_offset %rbx, -16
420 ; KNL-OLD-NEXT:    movq %rdi, %rbx
421 ; KNL-OLD-NEXT:    vmovaps (%rdi), %ymm0
422 ; KNL-OLD-NEXT:    vmovaps 32(%rdi), %ymm1
423 ; KNL-OLD-NEXT:    callq _test14_callee
424 ; KNL-OLD-NEXT:    vmovaps %ymm1, 32(%rbx)
425 ; KNL-OLD-NEXT:    vmovaps %ymm0, (%rbx)
426 ; KNL-OLD-NEXT:    popq %rbx
427 ; KNL-OLD-NEXT:    retq
429 ; SKX-LABEL: test14:
430 ; SKX:       ## %bb.0:
431 ; SKX-NEXT:    pushq %rbx
432 ; SKX-NEXT:    .cfi_def_cfa_offset 16
433 ; SKX-NEXT:    .cfi_offset %rbx, -16
434 ; SKX-NEXT:    movq %rdi, %rbx
435 ; SKX-NEXT:    vmovaps (%rdi), %zmm0
436 ; SKX-NEXT:    callq _test14_callee
437 ; SKX-NEXT:    vmovaps %zmm0, (%rbx)
438 ; SKX-NEXT:    popq %rbx
439 ; SKX-NEXT:    vzeroupper
440 ; SKX-NEXT:    retq
442 ; KNL_X32-LABEL: test14:
443 ; KNL_X32:       ## %bb.0:
444 ; KNL_X32-NEXT:    pushl %esi
445 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
446 ; KNL_X32-NEXT:    subl $8, %esp
447 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
448 ; KNL_X32-NEXT:    .cfi_offset %esi, -8
449 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
450 ; KNL_X32-NEXT:    vmovaps (%esi), %zmm0
451 ; KNL_X32-NEXT:    calll _test14_callee
452 ; KNL_X32-NEXT:    vmovaps %zmm0, (%esi)
453 ; KNL_X32-NEXT:    addl $8, %esp
454 ; KNL_X32-NEXT:    popl %esi
455 ; KNL_X32-NEXT:    retl
456   %a = load <32 x i16>, <32 x i16>* %x
457   %b = call <32 x i16> @test14_callee(<32 x i16> %a)
458   store <32 x i16> %b, <32 x i16>* %x
459   ret void
461 declare <32 x i16> @test14_callee(<32 x i16>)
463 define void @test15(<64 x i8>* %x) {
464 ; KNL-NEW-LABEL: test15:
465 ; KNL-NEW:       ## %bb.0:
466 ; KNL-NEW-NEXT:    pushq %rbx
467 ; KNL-NEW-NEXT:    .cfi_def_cfa_offset 16
468 ; KNL-NEW-NEXT:    .cfi_offset %rbx, -16
469 ; KNL-NEW-NEXT:    movq %rdi, %rbx
470 ; KNL-NEW-NEXT:    vmovaps (%rdi), %zmm0
471 ; KNL-NEW-NEXT:    callq _test15_callee
472 ; KNL-NEW-NEXT:    vmovaps %zmm0, (%rbx)
473 ; KNL-NEW-NEXT:    popq %rbx
474 ; KNL-NEW-NEXT:    retq
476 ; KNL-OLD-LABEL: test15:
477 ; KNL-OLD:       ## %bb.0:
478 ; KNL-OLD-NEXT:    pushq %rbx
479 ; KNL-OLD-NEXT:    .cfi_def_cfa_offset 16
480 ; KNL-OLD-NEXT:    .cfi_offset %rbx, -16
481 ; KNL-OLD-NEXT:    movq %rdi, %rbx
482 ; KNL-OLD-NEXT:    vmovaps (%rdi), %ymm0
483 ; KNL-OLD-NEXT:    vmovaps 32(%rdi), %ymm1
484 ; KNL-OLD-NEXT:    callq _test15_callee
485 ; KNL-OLD-NEXT:    vmovaps %ymm1, 32(%rbx)
486 ; KNL-OLD-NEXT:    vmovaps %ymm0, (%rbx)
487 ; KNL-OLD-NEXT:    popq %rbx
488 ; KNL-OLD-NEXT:    retq
490 ; SKX-LABEL: test15:
491 ; SKX:       ## %bb.0:
492 ; SKX-NEXT:    pushq %rbx
493 ; SKX-NEXT:    .cfi_def_cfa_offset 16
494 ; SKX-NEXT:    .cfi_offset %rbx, -16
495 ; SKX-NEXT:    movq %rdi, %rbx
496 ; SKX-NEXT:    vmovaps (%rdi), %zmm0
497 ; SKX-NEXT:    callq _test15_callee
498 ; SKX-NEXT:    vmovaps %zmm0, (%rbx)
499 ; SKX-NEXT:    popq %rbx
500 ; SKX-NEXT:    vzeroupper
501 ; SKX-NEXT:    retq
503 ; KNL_X32-LABEL: test15:
504 ; KNL_X32:       ## %bb.0:
505 ; KNL_X32-NEXT:    pushl %esi
506 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
507 ; KNL_X32-NEXT:    subl $8, %esp
508 ; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
509 ; KNL_X32-NEXT:    .cfi_offset %esi, -8
510 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
511 ; KNL_X32-NEXT:    vmovaps (%esi), %zmm0
512 ; KNL_X32-NEXT:    calll _test15_callee
513 ; KNL_X32-NEXT:    vmovaps %zmm0, (%esi)
514 ; KNL_X32-NEXT:    addl $8, %esp
515 ; KNL_X32-NEXT:    popl %esi
516 ; KNL_X32-NEXT:    retl
517   %a = load <64 x i8>, <64 x i8>* %x
518   %b = call <64 x i8> @test15_callee(<64 x i8> %a)
519   store <64 x i8> %b, <64 x i8>* %x
520   ret void
522 declare <64 x i8> @test15_callee(<64 x i8>)
524 define <17 x i1> @test16(<17 x i1> %a, <17 x i1> %b) nounwind {
525 ; KNL-LABEL: test16:
526 ; KNL:       ## %bb.0:
527 ; KNL-NEXT:    pushq %rbp
528 ; KNL-NEXT:    pushq %r15
529 ; KNL-NEXT:    pushq %r14
530 ; KNL-NEXT:    pushq %r13
531 ; KNL-NEXT:    pushq %r12
532 ; KNL-NEXT:    pushq %rbx
533 ; KNL-NEXT:    movq %rdi, %rax
534 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
535 ; KNL-NEXT:    kmovw %edx, %k1
536 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
537 ; KNL-NEXT:    kmovw %edx, %k2
538 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
539 ; KNL-NEXT:    kshiftrw $14, %k0, %k0
540 ; KNL-NEXT:    kxorw %k0, %k2, %k2
541 ; KNL-NEXT:    kshiftrw $2, %k2, %k3
542 ; KNL-NEXT:    kxorw %k1, %k3, %k1
543 ; KNL-NEXT:    kshiftlw $15, %k1, %k1
544 ; KNL-NEXT:    kshiftrw $13, %k1, %k1
545 ; KNL-NEXT:    kxorw %k1, %k2, %k1
546 ; KNL-NEXT:    kshiftrw $3, %k1, %k2
547 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
548 ; KNL-NEXT:    kmovw %edx, %k3
549 ; KNL-NEXT:    kxorw %k3, %k2, %k2
550 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
551 ; KNL-NEXT:    kshiftrw $12, %k2, %k2
552 ; KNL-NEXT:    kxorw %k2, %k1, %k1
553 ; KNL-NEXT:    kshiftrw $4, %k1, %k2
554 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
555 ; KNL-NEXT:    kmovw %edx, %k3
556 ; KNL-NEXT:    kxorw %k3, %k2, %k2
557 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
558 ; KNL-NEXT:    kshiftrw $11, %k2, %k2
559 ; KNL-NEXT:    kxorw %k2, %k1, %k1
560 ; KNL-NEXT:    kshiftrw $5, %k1, %k2
561 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
562 ; KNL-NEXT:    kmovw %edx, %k3
563 ; KNL-NEXT:    kxorw %k3, %k2, %k2
564 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
565 ; KNL-NEXT:    kshiftrw $10, %k2, %k2
566 ; KNL-NEXT:    kxorw %k2, %k1, %k1
567 ; KNL-NEXT:    kshiftrw $6, %k1, %k2
568 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
569 ; KNL-NEXT:    kmovw %edx, %k3
570 ; KNL-NEXT:    kxorw %k3, %k2, %k2
571 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
572 ; KNL-NEXT:    kshiftrw $9, %k2, %k2
573 ; KNL-NEXT:    kxorw %k2, %k1, %k1
574 ; KNL-NEXT:    kshiftrw $7, %k1, %k2
575 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
576 ; KNL-NEXT:    kmovw %edx, %k3
577 ; KNL-NEXT:    kxorw %k3, %k2, %k2
578 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
579 ; KNL-NEXT:    kshiftrw $8, %k2, %k2
580 ; KNL-NEXT:    kxorw %k2, %k1, %k1
581 ; KNL-NEXT:    kshiftrw $8, %k1, %k2
582 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
583 ; KNL-NEXT:    kmovw %edx, %k3
584 ; KNL-NEXT:    kxorw %k3, %k2, %k2
585 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
586 ; KNL-NEXT:    kshiftrw $7, %k2, %k2
587 ; KNL-NEXT:    kxorw %k2, %k1, %k1
588 ; KNL-NEXT:    kshiftrw $9, %k1, %k2
589 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
590 ; KNL-NEXT:    kmovw %edx, %k3
591 ; KNL-NEXT:    kxorw %k3, %k2, %k2
592 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
593 ; KNL-NEXT:    kshiftrw $6, %k2, %k2
594 ; KNL-NEXT:    kxorw %k2, %k1, %k1
595 ; KNL-NEXT:    kshiftrw $10, %k1, %k2
596 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
597 ; KNL-NEXT:    kmovw %edx, %k3
598 ; KNL-NEXT:    kxorw %k3, %k2, %k2
599 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
600 ; KNL-NEXT:    kshiftrw $5, %k2, %k2
601 ; KNL-NEXT:    kxorw %k2, %k1, %k1
602 ; KNL-NEXT:    kshiftrw $11, %k1, %k2
603 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
604 ; KNL-NEXT:    kmovw %edx, %k3
605 ; KNL-NEXT:    kxorw %k3, %k2, %k2
606 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
607 ; KNL-NEXT:    kshiftrw $4, %k2, %k2
608 ; KNL-NEXT:    kxorw %k2, %k1, %k1
609 ; KNL-NEXT:    kshiftrw $12, %k1, %k2
610 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
611 ; KNL-NEXT:    kmovw %edx, %k3
612 ; KNL-NEXT:    kxorw %k3, %k2, %k2
613 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
614 ; KNL-NEXT:    kshiftrw $3, %k2, %k2
615 ; KNL-NEXT:    kxorw %k2, %k1, %k1
616 ; KNL-NEXT:    kshiftrw $13, %k1, %k2
617 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
618 ; KNL-NEXT:    kmovw %edx, %k3
619 ; KNL-NEXT:    kxorw %k3, %k2, %k2
620 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
621 ; KNL-NEXT:    kshiftrw $2, %k2, %k2
622 ; KNL-NEXT:    kxorw %k2, %k1, %k1
623 ; KNL-NEXT:    kshiftrw $14, %k1, %k2
624 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
625 ; KNL-NEXT:    kmovw %edx, %k3
626 ; KNL-NEXT:    kxorw %k3, %k2, %k2
627 ; KNL-NEXT:    kshiftlw $14, %k2, %k2
628 ; KNL-NEXT:    kxorw %k2, %k1, %k1
629 ; KNL-NEXT:    kshiftlw $1, %k1, %k1
630 ; KNL-NEXT:    kshiftrw $1, %k1, %k1
631 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
632 ; KNL-NEXT:    kmovw %edx, %k2
633 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
634 ; KNL-NEXT:    korw %k2, %k1, %k1
635 ; KNL-NEXT:    kmovw %ecx, %k2
636 ; KNL-NEXT:    kmovw %esi, %k3
637 ; KNL-NEXT:    kxorw %k0, %k3, %k0
638 ; KNL-NEXT:    kshiftrw $2, %k0, %k3
639 ; KNL-NEXT:    kxorw %k2, %k3, %k2
640 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
641 ; KNL-NEXT:    kshiftrw $13, %k2, %k2
642 ; KNL-NEXT:    kxorw %k2, %k0, %k0
643 ; KNL-NEXT:    kshiftrw $3, %k0, %k2
644 ; KNL-NEXT:    kmovw %r8d, %k3
645 ; KNL-NEXT:    kxorw %k3, %k2, %k2
646 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
647 ; KNL-NEXT:    kshiftrw $12, %k2, %k2
648 ; KNL-NEXT:    kxorw %k2, %k0, %k0
649 ; KNL-NEXT:    kshiftrw $4, %k0, %k2
650 ; KNL-NEXT:    kmovw %r9d, %k3
651 ; KNL-NEXT:    kxorw %k3, %k2, %k2
652 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
653 ; KNL-NEXT:    kshiftrw $11, %k2, %k2
654 ; KNL-NEXT:    kxorw %k2, %k0, %k0
655 ; KNL-NEXT:    kshiftrw $5, %k0, %k2
656 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
657 ; KNL-NEXT:    kmovw %ecx, %k3
658 ; KNL-NEXT:    kxorw %k3, %k2, %k2
659 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
660 ; KNL-NEXT:    kshiftrw $10, %k2, %k2
661 ; KNL-NEXT:    kxorw %k2, %k0, %k0
662 ; KNL-NEXT:    kshiftrw $6, %k0, %k2
663 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
664 ; KNL-NEXT:    kmovw %ecx, %k3
665 ; KNL-NEXT:    kxorw %k3, %k2, %k2
666 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
667 ; KNL-NEXT:    kshiftrw $9, %k2, %k2
668 ; KNL-NEXT:    kxorw %k2, %k0, %k0
669 ; KNL-NEXT:    kshiftrw $7, %k0, %k2
670 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
671 ; KNL-NEXT:    kmovw %ecx, %k3
672 ; KNL-NEXT:    kxorw %k3, %k2, %k2
673 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
674 ; KNL-NEXT:    kshiftrw $8, %k2, %k2
675 ; KNL-NEXT:    kxorw %k2, %k0, %k0
676 ; KNL-NEXT:    kshiftrw $8, %k0, %k2
677 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
678 ; KNL-NEXT:    kmovw %ecx, %k3
679 ; KNL-NEXT:    kxorw %k3, %k2, %k2
680 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
681 ; KNL-NEXT:    kshiftrw $7, %k2, %k2
682 ; KNL-NEXT:    kxorw %k2, %k0, %k0
683 ; KNL-NEXT:    kshiftrw $9, %k0, %k2
684 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
685 ; KNL-NEXT:    kmovw %ecx, %k3
686 ; KNL-NEXT:    kxorw %k3, %k2, %k2
687 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
688 ; KNL-NEXT:    kshiftrw $6, %k2, %k2
689 ; KNL-NEXT:    kxorw %k2, %k0, %k0
690 ; KNL-NEXT:    kshiftrw $10, %k0, %k2
691 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
692 ; KNL-NEXT:    kmovw %ecx, %k3
693 ; KNL-NEXT:    kxorw %k3, %k2, %k2
694 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
695 ; KNL-NEXT:    kshiftrw $5, %k2, %k2
696 ; KNL-NEXT:    kxorw %k2, %k0, %k0
697 ; KNL-NEXT:    kshiftrw $11, %k0, %k2
698 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
699 ; KNL-NEXT:    kmovw %ecx, %k3
700 ; KNL-NEXT:    kxorw %k3, %k2, %k2
701 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
702 ; KNL-NEXT:    kshiftrw $4, %k2, %k2
703 ; KNL-NEXT:    kxorw %k2, %k0, %k0
704 ; KNL-NEXT:    kshiftrw $12, %k0, %k2
705 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
706 ; KNL-NEXT:    kmovw %ecx, %k3
707 ; KNL-NEXT:    kxorw %k3, %k2, %k2
708 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
709 ; KNL-NEXT:    kshiftrw $3, %k2, %k2
710 ; KNL-NEXT:    kxorw %k2, %k0, %k0
711 ; KNL-NEXT:    kshiftrw $13, %k0, %k2
712 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
713 ; KNL-NEXT:    kmovw %ecx, %k3
714 ; KNL-NEXT:    kxorw %k3, %k2, %k2
715 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
716 ; KNL-NEXT:    kshiftrw $2, %k2, %k2
717 ; KNL-NEXT:    kxorw %k2, %k0, %k0
718 ; KNL-NEXT:    kshiftrw $14, %k0, %k2
719 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
720 ; KNL-NEXT:    kmovw %ecx, %k3
721 ; KNL-NEXT:    kxorw %k3, %k2, %k2
722 ; KNL-NEXT:    kshiftlw $14, %k2, %k2
723 ; KNL-NEXT:    kxorw %k2, %k0, %k0
724 ; KNL-NEXT:    kshiftlw $1, %k0, %k0
725 ; KNL-NEXT:    kshiftrw $1, %k0, %k0
726 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
727 ; KNL-NEXT:    kmovw %ecx, %k2
728 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
729 ; KNL-NEXT:    korw %k2, %k0, %k0
730 ; KNL-NEXT:    kandw %k1, %k0, %k0
731 ; KNL-NEXT:    xorl %ecx, %ecx
732 ; KNL-NEXT:    cmpb $0, {{[0-9]+}}(%rsp)
733 ; KNL-NEXT:    movl $65535, %edx ## imm = 0xFFFF
734 ; KNL-NEXT:    movl $0, %esi
735 ; KNL-NEXT:    cmovnel %edx, %esi
736 ; KNL-NEXT:    kmovw %esi, %k1
737 ; KNL-NEXT:    cmpb $0, {{[0-9]+}}(%rsp)
738 ; KNL-NEXT:    cmovnel %edx, %ecx
739 ; KNL-NEXT:    kmovw %ecx, %k2
740 ; KNL-NEXT:    kandw %k1, %k2, %k1
741 ; KNL-NEXT:    kmovw %k1, %r8d
742 ; KNL-NEXT:    kshiftrw $1, %k0, %k1
743 ; KNL-NEXT:    kmovw %k1, %r9d
744 ; KNL-NEXT:    kshiftrw $2, %k0, %k1
745 ; KNL-NEXT:    kmovw %k1, %r10d
746 ; KNL-NEXT:    kshiftrw $3, %k0, %k1
747 ; KNL-NEXT:    kmovw %k1, %r11d
748 ; KNL-NEXT:    kshiftrw $4, %k0, %k1
749 ; KNL-NEXT:    kmovw %k1, %r12d
750 ; KNL-NEXT:    kshiftrw $5, %k0, %k1
751 ; KNL-NEXT:    kmovw %k1, %r15d
752 ; KNL-NEXT:    kshiftrw $6, %k0, %k1
753 ; KNL-NEXT:    kmovw %k1, %r14d
754 ; KNL-NEXT:    kshiftrw $7, %k0, %k1
755 ; KNL-NEXT:    kmovw %k1, %r13d
756 ; KNL-NEXT:    kshiftrw $8, %k0, %k1
757 ; KNL-NEXT:    kmovw %k1, %ebx
758 ; KNL-NEXT:    kshiftrw $9, %k0, %k1
759 ; KNL-NEXT:    kmovw %k1, %esi
760 ; KNL-NEXT:    kshiftrw $10, %k0, %k1
761 ; KNL-NEXT:    kmovw %k1, %ebp
762 ; KNL-NEXT:    kshiftrw $11, %k0, %k1
763 ; KNL-NEXT:    kmovw %k1, %ecx
764 ; KNL-NEXT:    kshiftrw $12, %k0, %k1
765 ; KNL-NEXT:    kmovw %k1, %edx
766 ; KNL-NEXT:    kshiftrw $13, %k0, %k1
767 ; KNL-NEXT:    kmovw %k1, %edi
768 ; KNL-NEXT:    kshiftrw $14, %k0, %k1
769 ; KNL-NEXT:    andl $1, %r8d
770 ; KNL-NEXT:    movb %r8b, 2(%rax)
771 ; KNL-NEXT:    kmovw %k0, %r8d
772 ; KNL-NEXT:    andl $1, %r8d
773 ; KNL-NEXT:    andl $1, %r9d
774 ; KNL-NEXT:    leal (%r8,%r9,2), %r8d
775 ; KNL-NEXT:    kmovw %k1, %r9d
776 ; KNL-NEXT:    kshiftrw $15, %k0, %k0
777 ; KNL-NEXT:    andl $1, %r10d
778 ; KNL-NEXT:    leal (%r8,%r10,4), %r8d
779 ; KNL-NEXT:    kmovw %k0, %r10d
780 ; KNL-NEXT:    andl $1, %r11d
781 ; KNL-NEXT:    leal (%r8,%r11,8), %r8d
782 ; KNL-NEXT:    andl $1, %r12d
783 ; KNL-NEXT:    shll $4, %r12d
784 ; KNL-NEXT:    orl %r8d, %r12d
785 ; KNL-NEXT:    andl $1, %r15d
786 ; KNL-NEXT:    shll $5, %r15d
787 ; KNL-NEXT:    orl %r12d, %r15d
788 ; KNL-NEXT:    andl $1, %r14d
789 ; KNL-NEXT:    shll $6, %r14d
790 ; KNL-NEXT:    andl $1, %r13d
791 ; KNL-NEXT:    shll $7, %r13d
792 ; KNL-NEXT:    orl %r14d, %r13d
793 ; KNL-NEXT:    andl $1, %ebx
794 ; KNL-NEXT:    shll $8, %ebx
795 ; KNL-NEXT:    orl %r13d, %ebx
796 ; KNL-NEXT:    andl $1, %esi
797 ; KNL-NEXT:    shll $9, %esi
798 ; KNL-NEXT:    orl %ebx, %esi
799 ; KNL-NEXT:    andl $1, %ebp
800 ; KNL-NEXT:    shll $10, %ebp
801 ; KNL-NEXT:    orl %esi, %ebp
802 ; KNL-NEXT:    orl %r15d, %ebp
803 ; KNL-NEXT:    andl $1, %ecx
804 ; KNL-NEXT:    shll $11, %ecx
805 ; KNL-NEXT:    andl $1, %edx
806 ; KNL-NEXT:    shll $12, %edx
807 ; KNL-NEXT:    orl %ecx, %edx
808 ; KNL-NEXT:    andl $1, %edi
809 ; KNL-NEXT:    shll $13, %edi
810 ; KNL-NEXT:    orl %edx, %edi
811 ; KNL-NEXT:    andl $1, %r9d
812 ; KNL-NEXT:    shll $14, %r9d
813 ; KNL-NEXT:    orl %edi, %r9d
814 ; KNL-NEXT:    andl $1, %r10d
815 ; KNL-NEXT:    shll $15, %r10d
816 ; KNL-NEXT:    orl %r9d, %r10d
817 ; KNL-NEXT:    orl %ebp, %r10d
818 ; KNL-NEXT:    movw %r10w, (%rax)
819 ; KNL-NEXT:    popq %rbx
820 ; KNL-NEXT:    popq %r12
821 ; KNL-NEXT:    popq %r13
822 ; KNL-NEXT:    popq %r14
823 ; KNL-NEXT:    popq %r15
824 ; KNL-NEXT:    popq %rbp
825 ; KNL-NEXT:    retq
827 ; SKX-LABEL: test16:
828 ; SKX:       ## %bb.0:
829 ; SKX-NEXT:    pushq %rbp
830 ; SKX-NEXT:    pushq %r15
831 ; SKX-NEXT:    pushq %r14
832 ; SKX-NEXT:    pushq %r13
833 ; SKX-NEXT:    pushq %r12
834 ; SKX-NEXT:    pushq %rbx
835 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
836 ; SKX-NEXT:    movq %rdi, %rax
837 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
838 ; SKX-NEXT:    kshiftld $31, %k0, %k0
839 ; SKX-NEXT:    kshiftrd $30, %k0, %k0
840 ; SKX-NEXT:    kxord %k0, %k2, %k2
841 ; SKX-NEXT:    kshiftrd $2, %k2, %k3
842 ; SKX-NEXT:    kxord %k1, %k3, %k1
843 ; SKX-NEXT:    kshiftld $31, %k1, %k1
844 ; SKX-NEXT:    kshiftrd $29, %k1, %k1
845 ; SKX-NEXT:    kxord %k1, %k2, %k1
846 ; SKX-NEXT:    kshiftrd $3, %k1, %k2
847 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
848 ; SKX-NEXT:    kxord %k3, %k2, %k2
849 ; SKX-NEXT:    kshiftld $31, %k2, %k2
850 ; SKX-NEXT:    kshiftrd $28, %k2, %k2
851 ; SKX-NEXT:    kxord %k2, %k1, %k1
852 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
853 ; SKX-NEXT:    kshiftrd $4, %k1, %k3
854 ; SKX-NEXT:    kxord %k2, %k3, %k2
855 ; SKX-NEXT:    kshiftld $31, %k2, %k2
856 ; SKX-NEXT:    kshiftrd $27, %k2, %k2
857 ; SKX-NEXT:    kxord %k2, %k1, %k1
858 ; SKX-NEXT:    kshiftrd $5, %k1, %k2
859 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
860 ; SKX-NEXT:    kxord %k3, %k2, %k2
861 ; SKX-NEXT:    kshiftld $31, %k2, %k2
862 ; SKX-NEXT:    kshiftrd $26, %k2, %k2
863 ; SKX-NEXT:    kxord %k2, %k1, %k1
864 ; SKX-NEXT:    kshiftrd $6, %k1, %k2
865 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
866 ; SKX-NEXT:    kxord %k3, %k2, %k2
867 ; SKX-NEXT:    kshiftld $31, %k2, %k2
868 ; SKX-NEXT:    kshiftrd $25, %k2, %k2
869 ; SKX-NEXT:    kxord %k2, %k1, %k1
870 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
871 ; SKX-NEXT:    kshiftrd $7, %k1, %k3
872 ; SKX-NEXT:    kxord %k2, %k3, %k2
873 ; SKX-NEXT:    kshiftld $31, %k2, %k2
874 ; SKX-NEXT:    kshiftrd $24, %k2, %k2
875 ; SKX-NEXT:    kxord %k2, %k1, %k1
876 ; SKX-NEXT:    kshiftrd $8, %k1, %k2
877 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
878 ; SKX-NEXT:    kxord %k3, %k2, %k2
879 ; SKX-NEXT:    kshiftld $31, %k2, %k2
880 ; SKX-NEXT:    kshiftrd $23, %k2, %k2
881 ; SKX-NEXT:    kxord %k2, %k1, %k1
882 ; SKX-NEXT:    kshiftrd $9, %k1, %k2
883 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
884 ; SKX-NEXT:    kxord %k3, %k2, %k2
885 ; SKX-NEXT:    kshiftld $31, %k2, %k2
886 ; SKX-NEXT:    kshiftrd $22, %k2, %k2
887 ; SKX-NEXT:    kxord %k2, %k1, %k1
888 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
889 ; SKX-NEXT:    kshiftrd $10, %k1, %k3
890 ; SKX-NEXT:    kxord %k2, %k3, %k2
891 ; SKX-NEXT:    kshiftld $31, %k2, %k2
892 ; SKX-NEXT:    kshiftrd $21, %k2, %k2
893 ; SKX-NEXT:    kxord %k2, %k1, %k1
894 ; SKX-NEXT:    kshiftrd $11, %k1, %k2
895 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
896 ; SKX-NEXT:    kxord %k3, %k2, %k2
897 ; SKX-NEXT:    kshiftld $31, %k2, %k2
898 ; SKX-NEXT:    kshiftrd $20, %k2, %k2
899 ; SKX-NEXT:    kxord %k2, %k1, %k1
900 ; SKX-NEXT:    kshiftrd $12, %k1, %k2
901 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
902 ; SKX-NEXT:    kxord %k3, %k2, %k2
903 ; SKX-NEXT:    kshiftld $31, %k2, %k2
904 ; SKX-NEXT:    kshiftrd $19, %k2, %k2
905 ; SKX-NEXT:    kxord %k2, %k1, %k1
906 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
907 ; SKX-NEXT:    kshiftrd $13, %k1, %k3
908 ; SKX-NEXT:    kxord %k2, %k3, %k2
909 ; SKX-NEXT:    kshiftld $31, %k2, %k2
910 ; SKX-NEXT:    kshiftrd $18, %k2, %k2
911 ; SKX-NEXT:    kxord %k2, %k1, %k1
912 ; SKX-NEXT:    kshiftrd $14, %k1, %k2
913 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
914 ; SKX-NEXT:    kxord %k3, %k2, %k2
915 ; SKX-NEXT:    kshiftld $31, %k2, %k2
916 ; SKX-NEXT:    kshiftrd $17, %k2, %k2
917 ; SKX-NEXT:    kxord %k2, %k1, %k1
918 ; SKX-NEXT:    kshiftrd $15, %k1, %k2
919 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
920 ; SKX-NEXT:    kxord %k3, %k2, %k2
921 ; SKX-NEXT:    kshiftld $31, %k2, %k2
922 ; SKX-NEXT:    kshiftrd $16, %k2, %k2
923 ; SKX-NEXT:    kxord %k2, %k1, %k1
924 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
925 ; SKX-NEXT:    kshiftrd $16, %k1, %k3
926 ; SKX-NEXT:    kxord %k2, %k3, %k2
927 ; SKX-NEXT:    kshiftld $31, %k2, %k2
928 ; SKX-NEXT:    kshiftrd $15, %k2, %k2
929 ; SKX-NEXT:    kxord %k2, %k1, %k1
930 ; SKX-NEXT:    kmovd %ecx, %k2
931 ; SKX-NEXT:    kmovd %esi, %k3
932 ; SKX-NEXT:    kxord %k0, %k3, %k0
933 ; SKX-NEXT:    kshiftrd $2, %k0, %k3
934 ; SKX-NEXT:    kxord %k2, %k3, %k2
935 ; SKX-NEXT:    kshiftld $31, %k2, %k2
936 ; SKX-NEXT:    kshiftrd $29, %k2, %k2
937 ; SKX-NEXT:    kxord %k2, %k0, %k0
938 ; SKX-NEXT:    kshiftrd $3, %k0, %k2
939 ; SKX-NEXT:    kmovd %r8d, %k3
940 ; SKX-NEXT:    kxord %k3, %k2, %k2
941 ; SKX-NEXT:    kshiftld $31, %k2, %k2
942 ; SKX-NEXT:    kshiftrd $28, %k2, %k2
943 ; SKX-NEXT:    kxord %k2, %k0, %k0
944 ; SKX-NEXT:    kshiftrd $4, %k0, %k2
945 ; SKX-NEXT:    kmovd %r9d, %k3
946 ; SKX-NEXT:    kxord %k3, %k2, %k2
947 ; SKX-NEXT:    kshiftld $31, %k2, %k2
948 ; SKX-NEXT:    kshiftrd $27, %k2, %k2
949 ; SKX-NEXT:    kxord %k2, %k0, %k0
950 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
951 ; SKX-NEXT:    kshiftrd $5, %k0, %k3
952 ; SKX-NEXT:    kxord %k2, %k3, %k2
953 ; SKX-NEXT:    kshiftld $31, %k2, %k2
954 ; SKX-NEXT:    kshiftrd $26, %k2, %k2
955 ; SKX-NEXT:    kxord %k2, %k0, %k0
956 ; SKX-NEXT:    kshiftrd $6, %k0, %k2
957 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
958 ; SKX-NEXT:    kxord %k3, %k2, %k2
959 ; SKX-NEXT:    kshiftld $31, %k2, %k2
960 ; SKX-NEXT:    kshiftrd $25, %k2, %k2
961 ; SKX-NEXT:    kxord %k2, %k0, %k0
962 ; SKX-NEXT:    kshiftrd $7, %k0, %k2
963 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
964 ; SKX-NEXT:    kxord %k3, %k2, %k2
965 ; SKX-NEXT:    kshiftld $31, %k2, %k2
966 ; SKX-NEXT:    kshiftrd $24, %k2, %k2
967 ; SKX-NEXT:    kxord %k2, %k0, %k0
968 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
969 ; SKX-NEXT:    kshiftrd $8, %k0, %k3
970 ; SKX-NEXT:    kxord %k2, %k3, %k2
971 ; SKX-NEXT:    kshiftld $31, %k2, %k2
972 ; SKX-NEXT:    kshiftrd $23, %k2, %k2
973 ; SKX-NEXT:    kxord %k2, %k0, %k0
974 ; SKX-NEXT:    kshiftrd $9, %k0, %k2
975 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
976 ; SKX-NEXT:    kxord %k3, %k2, %k2
977 ; SKX-NEXT:    kshiftld $31, %k2, %k2
978 ; SKX-NEXT:    kshiftrd $22, %k2, %k2
979 ; SKX-NEXT:    kxord %k2, %k0, %k0
980 ; SKX-NEXT:    kshiftrd $10, %k0, %k2
981 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
982 ; SKX-NEXT:    kxord %k3, %k2, %k2
983 ; SKX-NEXT:    kshiftld $31, %k2, %k2
984 ; SKX-NEXT:    kshiftrd $21, %k2, %k2
985 ; SKX-NEXT:    kxord %k2, %k0, %k0
986 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
987 ; SKX-NEXT:    kshiftrd $11, %k0, %k3
988 ; SKX-NEXT:    kxord %k2, %k3, %k2
989 ; SKX-NEXT:    kshiftld $31, %k2, %k2
990 ; SKX-NEXT:    kshiftrd $20, %k2, %k2
991 ; SKX-NEXT:    kxord %k2, %k0, %k0
992 ; SKX-NEXT:    kshiftrd $12, %k0, %k2
993 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
994 ; SKX-NEXT:    kxord %k3, %k2, %k2
995 ; SKX-NEXT:    kshiftld $31, %k2, %k2
996 ; SKX-NEXT:    kshiftrd $19, %k2, %k2
997 ; SKX-NEXT:    kxord %k2, %k0, %k0
998 ; SKX-NEXT:    kshiftrd $13, %k0, %k2
999 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1000 ; SKX-NEXT:    kxord %k3, %k2, %k2
1001 ; SKX-NEXT:    kshiftld $31, %k2, %k2
1002 ; SKX-NEXT:    kshiftrd $18, %k2, %k2
1003 ; SKX-NEXT:    kxord %k2, %k0, %k0
1004 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
1005 ; SKX-NEXT:    kshiftrd $14, %k0, %k3
1006 ; SKX-NEXT:    kxord %k2, %k3, %k2
1007 ; SKX-NEXT:    kshiftld $31, %k2, %k2
1008 ; SKX-NEXT:    kshiftrd $17, %k2, %k2
1009 ; SKX-NEXT:    kxord %k2, %k0, %k0
1010 ; SKX-NEXT:    kshiftrd $15, %k0, %k2
1011 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1012 ; SKX-NEXT:    kxord %k3, %k2, %k2
1013 ; SKX-NEXT:    kshiftld $31, %k2, %k2
1014 ; SKX-NEXT:    kshiftrd $16, %k2, %k2
1015 ; SKX-NEXT:    kxord %k2, %k0, %k0
1016 ; SKX-NEXT:    kshiftrd $16, %k0, %k2
1017 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1018 ; SKX-NEXT:    kxord %k3, %k2, %k2
1019 ; SKX-NEXT:    kshiftld $31, %k2, %k2
1020 ; SKX-NEXT:    kshiftrd $15, %k2, %k2
1021 ; SKX-NEXT:    kxord %k2, %k0, %k0
1022 ; SKX-NEXT:    kandd %k1, %k0, %k0
1023 ; SKX-NEXT:    kshiftrd $16, %k0, %k1
1024 ; SKX-NEXT:    kmovd %k1, %r8d
1025 ; SKX-NEXT:    kshiftrd $1, %k0, %k1
1026 ; SKX-NEXT:    kmovd %k1, %r9d
1027 ; SKX-NEXT:    kshiftrd $2, %k0, %k1
1028 ; SKX-NEXT:    kmovd %k1, %r10d
1029 ; SKX-NEXT:    kshiftrd $3, %k0, %k1
1030 ; SKX-NEXT:    kmovd %k1, %r11d
1031 ; SKX-NEXT:    kshiftrd $4, %k0, %k1
1032 ; SKX-NEXT:    kmovd %k1, %r12d
1033 ; SKX-NEXT:    kshiftrd $5, %k0, %k1
1034 ; SKX-NEXT:    kmovd %k1, %r15d
1035 ; SKX-NEXT:    kshiftrd $6, %k0, %k1
1036 ; SKX-NEXT:    kmovd %k1, %r14d
1037 ; SKX-NEXT:    kshiftrd $7, %k0, %k1
1038 ; SKX-NEXT:    kmovd %k1, %r13d
1039 ; SKX-NEXT:    kshiftrd $8, %k0, %k1
1040 ; SKX-NEXT:    kmovd %k1, %ebx
1041 ; SKX-NEXT:    kshiftrd $9, %k0, %k1
1042 ; SKX-NEXT:    kmovd %k1, %esi
1043 ; SKX-NEXT:    kshiftrd $10, %k0, %k1
1044 ; SKX-NEXT:    kmovd %k1, %ebp
1045 ; SKX-NEXT:    kshiftrd $11, %k0, %k1
1046 ; SKX-NEXT:    kmovd %k1, %ecx
1047 ; SKX-NEXT:    kshiftrd $12, %k0, %k1
1048 ; SKX-NEXT:    kmovd %k1, %edx
1049 ; SKX-NEXT:    kshiftrd $13, %k0, %k1
1050 ; SKX-NEXT:    kmovd %k1, %edi
1051 ; SKX-NEXT:    kshiftrd $14, %k0, %k1
1052 ; SKX-NEXT:    andl $1, %r8d
1053 ; SKX-NEXT:    movb %r8b, 2(%rax)
1054 ; SKX-NEXT:    kmovd %k0, %r8d
1055 ; SKX-NEXT:    andl $1, %r8d
1056 ; SKX-NEXT:    andl $1, %r9d
1057 ; SKX-NEXT:    leal (%r8,%r9,2), %r8d
1058 ; SKX-NEXT:    kmovd %k1, %r9d
1059 ; SKX-NEXT:    kshiftrd $15, %k0, %k0
1060 ; SKX-NEXT:    andl $1, %r10d
1061 ; SKX-NEXT:    leal (%r8,%r10,4), %r8d
1062 ; SKX-NEXT:    kmovd %k0, %r10d
1063 ; SKX-NEXT:    andl $1, %r11d
1064 ; SKX-NEXT:    leal (%r8,%r11,8), %r8d
1065 ; SKX-NEXT:    andl $1, %r12d
1066 ; SKX-NEXT:    shll $4, %r12d
1067 ; SKX-NEXT:    orl %r8d, %r12d
1068 ; SKX-NEXT:    andl $1, %r15d
1069 ; SKX-NEXT:    shll $5, %r15d
1070 ; SKX-NEXT:    orl %r12d, %r15d
1071 ; SKX-NEXT:    andl $1, %r14d
1072 ; SKX-NEXT:    shll $6, %r14d
1073 ; SKX-NEXT:    andl $1, %r13d
1074 ; SKX-NEXT:    shll $7, %r13d
1075 ; SKX-NEXT:    orl %r14d, %r13d
1076 ; SKX-NEXT:    andl $1, %ebx
1077 ; SKX-NEXT:    shll $8, %ebx
1078 ; SKX-NEXT:    orl %r13d, %ebx
1079 ; SKX-NEXT:    andl $1, %esi
1080 ; SKX-NEXT:    shll $9, %esi
1081 ; SKX-NEXT:    orl %ebx, %esi
1082 ; SKX-NEXT:    andl $1, %ebp
1083 ; SKX-NEXT:    shll $10, %ebp
1084 ; SKX-NEXT:    orl %esi, %ebp
1085 ; SKX-NEXT:    orl %r15d, %ebp
1086 ; SKX-NEXT:    andl $1, %ecx
1087 ; SKX-NEXT:    shll $11, %ecx
1088 ; SKX-NEXT:    andl $1, %edx
1089 ; SKX-NEXT:    shll $12, %edx
1090 ; SKX-NEXT:    orl %ecx, %edx
1091 ; SKX-NEXT:    andl $1, %edi
1092 ; SKX-NEXT:    shll $13, %edi
1093 ; SKX-NEXT:    orl %edx, %edi
1094 ; SKX-NEXT:    andl $1, %r9d
1095 ; SKX-NEXT:    shll $14, %r9d
1096 ; SKX-NEXT:    orl %edi, %r9d
1097 ; SKX-NEXT:    andl $1, %r10d
1098 ; SKX-NEXT:    shll $15, %r10d
1099 ; SKX-NEXT:    orl %r9d, %r10d
1100 ; SKX-NEXT:    orl %ebp, %r10d
1101 ; SKX-NEXT:    movw %r10w, (%rax)
1102 ; SKX-NEXT:    popq %rbx
1103 ; SKX-NEXT:    popq %r12
1104 ; SKX-NEXT:    popq %r13
1105 ; SKX-NEXT:    popq %r14
1106 ; SKX-NEXT:    popq %r15
1107 ; SKX-NEXT:    popq %rbp
1108 ; SKX-NEXT:    retq
1110 ; KNL_X32-LABEL: test16:
1111 ; KNL_X32:       ## %bb.0:
1112 ; KNL_X32-NEXT:    pushl %ebp
1113 ; KNL_X32-NEXT:    pushl %ebx
1114 ; KNL_X32-NEXT:    pushl %edi
1115 ; KNL_X32-NEXT:    pushl %esi
1116 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1117 ; KNL_X32-NEXT:    kmovw %eax, %k0
1118 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1119 ; KNL_X32-NEXT:    kmovw %eax, %k2
1120 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k1
1121 ; KNL_X32-NEXT:    kshiftrw $14, %k1, %k1
1122 ; KNL_X32-NEXT:    kxorw %k1, %k2, %k2
1123 ; KNL_X32-NEXT:    kshiftrw $2, %k2, %k3
1124 ; KNL_X32-NEXT:    kxorw %k0, %k3, %k0
1125 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
1126 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k0
1127 ; KNL_X32-NEXT:    kxorw %k0, %k2, %k0
1128 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k2
1129 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1130 ; KNL_X32-NEXT:    kmovw %eax, %k3
1131 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1132 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1133 ; KNL_X32-NEXT:    kshiftrw $12, %k2, %k2
1134 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1135 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k2
1136 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1137 ; KNL_X32-NEXT:    kmovw %eax, %k3
1138 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1139 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1140 ; KNL_X32-NEXT:    kshiftrw $11, %k2, %k2
1141 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1142 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k2
1143 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1144 ; KNL_X32-NEXT:    kmovw %eax, %k3
1145 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1146 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1147 ; KNL_X32-NEXT:    kshiftrw $10, %k2, %k2
1148 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1149 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k2
1150 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1151 ; KNL_X32-NEXT:    kmovw %eax, %k3
1152 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1153 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1154 ; KNL_X32-NEXT:    kshiftrw $9, %k2, %k2
1155 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1156 ; KNL_X32-NEXT:    kshiftrw $7, %k0, %k2
1157 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1158 ; KNL_X32-NEXT:    kmovw %eax, %k3
1159 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1160 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1161 ; KNL_X32-NEXT:    kshiftrw $8, %k2, %k2
1162 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1163 ; KNL_X32-NEXT:    kshiftrw $8, %k0, %k2
1164 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1165 ; KNL_X32-NEXT:    kmovw %eax, %k3
1166 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1167 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1168 ; KNL_X32-NEXT:    kshiftrw $7, %k2, %k2
1169 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1170 ; KNL_X32-NEXT:    kshiftrw $9, %k0, %k2
1171 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1172 ; KNL_X32-NEXT:    kmovw %eax, %k3
1173 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1174 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1175 ; KNL_X32-NEXT:    kshiftrw $6, %k2, %k2
1176 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1177 ; KNL_X32-NEXT:    kshiftrw $10, %k0, %k2
1178 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1179 ; KNL_X32-NEXT:    kmovw %eax, %k3
1180 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1181 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1182 ; KNL_X32-NEXT:    kshiftrw $5, %k2, %k2
1183 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1184 ; KNL_X32-NEXT:    kshiftrw $11, %k0, %k2
1185 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1186 ; KNL_X32-NEXT:    kmovw %eax, %k3
1187 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1188 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1189 ; KNL_X32-NEXT:    kshiftrw $4, %k2, %k2
1190 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1191 ; KNL_X32-NEXT:    kshiftrw $12, %k0, %k2
1192 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1193 ; KNL_X32-NEXT:    kmovw %eax, %k3
1194 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1195 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1196 ; KNL_X32-NEXT:    kshiftrw $3, %k2, %k2
1197 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1198 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k2
1199 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1200 ; KNL_X32-NEXT:    kmovw %eax, %k3
1201 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1202 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1203 ; KNL_X32-NEXT:    kshiftrw $2, %k2, %k2
1204 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1205 ; KNL_X32-NEXT:    kshiftrw $14, %k0, %k2
1206 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1207 ; KNL_X32-NEXT:    kmovw %eax, %k3
1208 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1209 ; KNL_X32-NEXT:    kshiftlw $14, %k2, %k2
1210 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
1211 ; KNL_X32-NEXT:    kshiftlw $1, %k0, %k0
1212 ; KNL_X32-NEXT:    kshiftrw $1, %k0, %k0
1213 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1214 ; KNL_X32-NEXT:    kmovw %eax, %k2
1215 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1216 ; KNL_X32-NEXT:    korw %k2, %k0, %k0
1217 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1218 ; KNL_X32-NEXT:    kmovw %eax, %k2
1219 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1220 ; KNL_X32-NEXT:    kmovw %eax, %k3
1221 ; KNL_X32-NEXT:    kxorw %k1, %k3, %k1
1222 ; KNL_X32-NEXT:    kshiftrw $2, %k1, %k3
1223 ; KNL_X32-NEXT:    kxorw %k2, %k3, %k2
1224 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1225 ; KNL_X32-NEXT:    kshiftrw $13, %k2, %k2
1226 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1227 ; KNL_X32-NEXT:    kshiftrw $3, %k1, %k2
1228 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1229 ; KNL_X32-NEXT:    kmovw %eax, %k3
1230 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1231 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1232 ; KNL_X32-NEXT:    kshiftrw $12, %k2, %k2
1233 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1234 ; KNL_X32-NEXT:    kshiftrw $4, %k1, %k2
1235 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1236 ; KNL_X32-NEXT:    kmovw %eax, %k3
1237 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1238 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1239 ; KNL_X32-NEXT:    kshiftrw $11, %k2, %k2
1240 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1241 ; KNL_X32-NEXT:    kshiftrw $5, %k1, %k2
1242 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1243 ; KNL_X32-NEXT:    kmovw %eax, %k3
1244 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1245 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1246 ; KNL_X32-NEXT:    kshiftrw $10, %k2, %k2
1247 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1248 ; KNL_X32-NEXT:    kshiftrw $6, %k1, %k2
1249 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1250 ; KNL_X32-NEXT:    kmovw %eax, %k3
1251 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1252 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1253 ; KNL_X32-NEXT:    kshiftrw $9, %k2, %k2
1254 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1255 ; KNL_X32-NEXT:    kshiftrw $7, %k1, %k2
1256 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1257 ; KNL_X32-NEXT:    kmovw %eax, %k3
1258 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1259 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1260 ; KNL_X32-NEXT:    kshiftrw $8, %k2, %k2
1261 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1262 ; KNL_X32-NEXT:    kshiftrw $8, %k1, %k2
1263 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1264 ; KNL_X32-NEXT:    kmovw %eax, %k3
1265 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1266 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1267 ; KNL_X32-NEXT:    kshiftrw $7, %k2, %k2
1268 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1269 ; KNL_X32-NEXT:    kshiftrw $9, %k1, %k2
1270 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1271 ; KNL_X32-NEXT:    kmovw %eax, %k3
1272 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1273 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1274 ; KNL_X32-NEXT:    kshiftrw $6, %k2, %k2
1275 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1276 ; KNL_X32-NEXT:    kshiftrw $10, %k1, %k2
1277 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1278 ; KNL_X32-NEXT:    kmovw %eax, %k3
1279 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1280 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1281 ; KNL_X32-NEXT:    kshiftrw $5, %k2, %k2
1282 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1283 ; KNL_X32-NEXT:    kshiftrw $11, %k1, %k2
1284 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1285 ; KNL_X32-NEXT:    kmovw %eax, %k3
1286 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1287 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1288 ; KNL_X32-NEXT:    kshiftrw $4, %k2, %k2
1289 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1290 ; KNL_X32-NEXT:    kshiftrw $12, %k1, %k2
1291 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1292 ; KNL_X32-NEXT:    kmovw %eax, %k3
1293 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1294 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1295 ; KNL_X32-NEXT:    kshiftrw $3, %k2, %k2
1296 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1297 ; KNL_X32-NEXT:    kshiftrw $13, %k1, %k2
1298 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1299 ; KNL_X32-NEXT:    kmovw %eax, %k3
1300 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1301 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1302 ; KNL_X32-NEXT:    kshiftrw $2, %k2, %k2
1303 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1304 ; KNL_X32-NEXT:    kshiftrw $14, %k1, %k2
1305 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1306 ; KNL_X32-NEXT:    kmovw %eax, %k3
1307 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
1308 ; KNL_X32-NEXT:    kshiftlw $14, %k2, %k2
1309 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
1310 ; KNL_X32-NEXT:    kshiftlw $1, %k1, %k1
1311 ; KNL_X32-NEXT:    kshiftrw $1, %k1, %k1
1312 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
1313 ; KNL_X32-NEXT:    kmovw %eax, %k2
1314 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
1315 ; KNL_X32-NEXT:    korw %k2, %k1, %k1
1316 ; KNL_X32-NEXT:    xorl %eax, %eax
1317 ; KNL_X32-NEXT:    cmpb $0, {{[0-9]+}}(%esp)
1318 ; KNL_X32-NEXT:    movl $65535, %ecx ## imm = 0xFFFF
1319 ; KNL_X32-NEXT:    movl $0, %edx
1320 ; KNL_X32-NEXT:    cmovnel %ecx, %edx
1321 ; KNL_X32-NEXT:    cmpb $0, {{[0-9]+}}(%esp)
1322 ; KNL_X32-NEXT:    cmovnel %ecx, %eax
1323 ; KNL_X32-NEXT:    kandw %k0, %k1, %k0
1324 ; KNL_X32-NEXT:    kmovw %edx, %k1
1325 ; KNL_X32-NEXT:    kmovw %eax, %k2
1326 ; KNL_X32-NEXT:    kandw %k1, %k2, %k1
1327 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1328 ; KNL_X32-NEXT:    kmovw %k1, %ebx
1329 ; KNL_X32-NEXT:    kshiftrw $1, %k0, %k1
1330 ; KNL_X32-NEXT:    kmovw %k1, %esi
1331 ; KNL_X32-NEXT:    kshiftrw $2, %k0, %k1
1332 ; KNL_X32-NEXT:    kmovw %k1, %edi
1333 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k1
1334 ; KNL_X32-NEXT:    kmovw %k1, %ebp
1335 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k1
1336 ; KNL_X32-NEXT:    kmovw %k1, %edx
1337 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k1
1338 ; KNL_X32-NEXT:    kmovw %k1, %ecx
1339 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k1
1340 ; KNL_X32-NEXT:    andl $1, %ebx
1341 ; KNL_X32-NEXT:    movb %bl, 2(%eax)
1342 ; KNL_X32-NEXT:    kmovw %k0, %ebx
1343 ; KNL_X32-NEXT:    andl $1, %ebx
1344 ; KNL_X32-NEXT:    andl $1, %esi
1345 ; KNL_X32-NEXT:    leal (%ebx,%esi,2), %esi
1346 ; KNL_X32-NEXT:    kmovw %k1, %ebx
1347 ; KNL_X32-NEXT:    kshiftrw $7, %k0, %k1
1348 ; KNL_X32-NEXT:    andl $1, %edi
1349 ; KNL_X32-NEXT:    leal (%esi,%edi,4), %esi
1350 ; KNL_X32-NEXT:    kmovw %k1, %edi
1351 ; KNL_X32-NEXT:    kshiftrw $8, %k0, %k1
1352 ; KNL_X32-NEXT:    andl $1, %ebp
1353 ; KNL_X32-NEXT:    leal (%esi,%ebp,8), %esi
1354 ; KNL_X32-NEXT:    kmovw %k1, %ebp
1355 ; KNL_X32-NEXT:    kshiftrw $9, %k0, %k1
1356 ; KNL_X32-NEXT:    andl $1, %edx
1357 ; KNL_X32-NEXT:    shll $4, %edx
1358 ; KNL_X32-NEXT:    orl %esi, %edx
1359 ; KNL_X32-NEXT:    kmovw %k1, %esi
1360 ; KNL_X32-NEXT:    kshiftrw $10, %k0, %k1
1361 ; KNL_X32-NEXT:    andl $1, %ecx
1362 ; KNL_X32-NEXT:    shll $5, %ecx
1363 ; KNL_X32-NEXT:    orl %edx, %ecx
1364 ; KNL_X32-NEXT:    kmovw %k1, %edx
1365 ; KNL_X32-NEXT:    kshiftrw $11, %k0, %k1
1366 ; KNL_X32-NEXT:    andl $1, %ebx
1367 ; KNL_X32-NEXT:    shll $6, %ebx
1368 ; KNL_X32-NEXT:    andl $1, %edi
1369 ; KNL_X32-NEXT:    shll $7, %edi
1370 ; KNL_X32-NEXT:    orl %ebx, %edi
1371 ; KNL_X32-NEXT:    kmovw %k1, %ebx
1372 ; KNL_X32-NEXT:    kshiftrw $12, %k0, %k1
1373 ; KNL_X32-NEXT:    andl $1, %ebp
1374 ; KNL_X32-NEXT:    shll $8, %ebp
1375 ; KNL_X32-NEXT:    orl %edi, %ebp
1376 ; KNL_X32-NEXT:    kmovw %k1, %edi
1377 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k1
1378 ; KNL_X32-NEXT:    andl $1, %esi
1379 ; KNL_X32-NEXT:    shll $9, %esi
1380 ; KNL_X32-NEXT:    orl %ebp, %esi
1381 ; KNL_X32-NEXT:    kmovw %k1, %ebp
1382 ; KNL_X32-NEXT:    kshiftrw $14, %k0, %k1
1383 ; KNL_X32-NEXT:    andl $1, %edx
1384 ; KNL_X32-NEXT:    shll $10, %edx
1385 ; KNL_X32-NEXT:    orl %esi, %edx
1386 ; KNL_X32-NEXT:    kmovw %k1, %esi
1387 ; KNL_X32-NEXT:    kshiftrw $15, %k0, %k0
1388 ; KNL_X32-NEXT:    orl %ecx, %edx
1389 ; KNL_X32-NEXT:    kmovw %k0, %ecx
1390 ; KNL_X32-NEXT:    andl $1, %ebx
1391 ; KNL_X32-NEXT:    shll $11, %ebx
1392 ; KNL_X32-NEXT:    andl $1, %edi
1393 ; KNL_X32-NEXT:    shll $12, %edi
1394 ; KNL_X32-NEXT:    orl %ebx, %edi
1395 ; KNL_X32-NEXT:    andl $1, %ebp
1396 ; KNL_X32-NEXT:    shll $13, %ebp
1397 ; KNL_X32-NEXT:    orl %edi, %ebp
1398 ; KNL_X32-NEXT:    andl $1, %esi
1399 ; KNL_X32-NEXT:    shll $14, %esi
1400 ; KNL_X32-NEXT:    orl %ebp, %esi
1401 ; KNL_X32-NEXT:    andl $1, %ecx
1402 ; KNL_X32-NEXT:    shll $15, %ecx
1403 ; KNL_X32-NEXT:    orl %esi, %ecx
1404 ; KNL_X32-NEXT:    orl %edx, %ecx
1405 ; KNL_X32-NEXT:    movw %cx, (%eax)
1406 ; KNL_X32-NEXT:    popl %esi
1407 ; KNL_X32-NEXT:    popl %edi
1408 ; KNL_X32-NEXT:    popl %ebx
1409 ; KNL_X32-NEXT:    popl %ebp
1410 ; KNL_X32-NEXT:    retl $4
1411   %c = and <17 x i1> %a, %b
1412   ret <17 x i1> %c
1415 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 {
1416 ; KNL-LABEL: test17:
1417 ; KNL:       ## %bb.0:
1418 ; KNL-NEXT:    movq %rdi, %rax
1419 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1420 ; KNL-NEXT:    kmovw %edx, %k0
1421 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1422 ; KNL-NEXT:    kmovw %edx, %k2
1423 ; KNL-NEXT:    kshiftlw $15, %k0, %k1
1424 ; KNL-NEXT:    kshiftrw $14, %k1, %k1
1425 ; KNL-NEXT:    kxorw %k1, %k2, %k2
1426 ; KNL-NEXT:    kshiftrw $2, %k2, %k3
1427 ; KNL-NEXT:    kxorw %k0, %k3, %k0
1428 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
1429 ; KNL-NEXT:    kshiftrw $13, %k0, %k0
1430 ; KNL-NEXT:    kxorw %k0, %k2, %k0
1431 ; KNL-NEXT:    kshiftrw $3, %k0, %k2
1432 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1433 ; KNL-NEXT:    kmovw %edx, %k3
1434 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1435 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1436 ; KNL-NEXT:    kshiftrw $12, %k2, %k2
1437 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1438 ; KNL-NEXT:    kshiftrw $4, %k0, %k2
1439 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1440 ; KNL-NEXT:    kmovw %edx, %k3
1441 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1442 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1443 ; KNL-NEXT:    kshiftrw $11, %k2, %k2
1444 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1445 ; KNL-NEXT:    kshiftrw $5, %k0, %k2
1446 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1447 ; KNL-NEXT:    kmovw %edx, %k3
1448 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1449 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1450 ; KNL-NEXT:    kshiftrw $10, %k2, %k2
1451 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1452 ; KNL-NEXT:    kshiftrw $6, %k0, %k2
1453 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1454 ; KNL-NEXT:    kmovw %edx, %k3
1455 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1456 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1457 ; KNL-NEXT:    kshiftrw $9, %k2, %k2
1458 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1459 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
1460 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1461 ; KNL-NEXT:    kmovw %edx, %k0
1462 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1463 ; KNL-NEXT:    kmovw %edx, %k2
1464 ; KNL-NEXT:    kxorw %k1, %k2, %k2
1465 ; KNL-NEXT:    kshiftrw $2, %k2, %k3
1466 ; KNL-NEXT:    kxorw %k0, %k3, %k0
1467 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
1468 ; KNL-NEXT:    kshiftrw $13, %k0, %k0
1469 ; KNL-NEXT:    kxorw %k0, %k2, %k0
1470 ; KNL-NEXT:    kshiftrw $3, %k0, %k2
1471 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1472 ; KNL-NEXT:    kmovw %edx, %k3
1473 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1474 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1475 ; KNL-NEXT:    kshiftrw $12, %k2, %k2
1476 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1477 ; KNL-NEXT:    kshiftrw $4, %k0, %k2
1478 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1479 ; KNL-NEXT:    kmovw %edx, %k3
1480 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1481 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1482 ; KNL-NEXT:    kshiftrw $11, %k2, %k2
1483 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1484 ; KNL-NEXT:    kshiftrw $5, %k0, %k2
1485 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1486 ; KNL-NEXT:    kmovw %edx, %k3
1487 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1488 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1489 ; KNL-NEXT:    kshiftrw $10, %k2, %k2
1490 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1491 ; KNL-NEXT:    kshiftrw $6, %k0, %k2
1492 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1493 ; KNL-NEXT:    kmovw %edx, %k3
1494 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1495 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1496 ; KNL-NEXT:    kshiftrw $9, %k2, %k2
1497 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1498 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
1499 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1500 ; KNL-NEXT:    kmovw %edx, %k0
1501 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1502 ; KNL-NEXT:    kmovw %edx, %k3
1503 ; KNL-NEXT:    kxorw %k1, %k3, %k3
1504 ; KNL-NEXT:    kshiftrw $2, %k3, %k4
1505 ; KNL-NEXT:    kxorw %k0, %k4, %k0
1506 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
1507 ; KNL-NEXT:    kshiftrw $13, %k0, %k0
1508 ; KNL-NEXT:    kxorw %k0, %k3, %k0
1509 ; KNL-NEXT:    kshiftrw $3, %k0, %k3
1510 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1511 ; KNL-NEXT:    kmovw %edx, %k4
1512 ; KNL-NEXT:    kxorw %k4, %k3, %k3
1513 ; KNL-NEXT:    kshiftlw $15, %k3, %k3
1514 ; KNL-NEXT:    kshiftrw $12, %k3, %k3
1515 ; KNL-NEXT:    kxorw %k3, %k0, %k0
1516 ; KNL-NEXT:    kshiftrw $4, %k0, %k3
1517 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1518 ; KNL-NEXT:    kmovw %edx, %k4
1519 ; KNL-NEXT:    kxorw %k4, %k3, %k3
1520 ; KNL-NEXT:    kshiftlw $15, %k3, %k3
1521 ; KNL-NEXT:    kshiftrw $11, %k3, %k3
1522 ; KNL-NEXT:    kxorw %k3, %k0, %k0
1523 ; KNL-NEXT:    kshiftrw $5, %k0, %k3
1524 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1525 ; KNL-NEXT:    kmovw %edx, %k4
1526 ; KNL-NEXT:    kxorw %k4, %k3, %k3
1527 ; KNL-NEXT:    kshiftlw $15, %k3, %k3
1528 ; KNL-NEXT:    kshiftrw $10, %k3, %k3
1529 ; KNL-NEXT:    kxorw %k3, %k0, %k0
1530 ; KNL-NEXT:    kshiftrw $6, %k0, %k3
1531 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1532 ; KNL-NEXT:    kmovw %edx, %k4
1533 ; KNL-NEXT:    kxorw %k4, %k3, %k3
1534 ; KNL-NEXT:    kshiftlw $15, %k3, %k3
1535 ; KNL-NEXT:    kshiftrw $9, %k3, %k3
1536 ; KNL-NEXT:    kxorw %k3, %k0, %k0
1537 ; KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
1538 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1539 ; KNL-NEXT:    kmovw %edx, %k0
1540 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1541 ; KNL-NEXT:    kmovw %edx, %k4
1542 ; KNL-NEXT:    kxorw %k1, %k4, %k4
1543 ; KNL-NEXT:    kshiftrw $2, %k4, %k5
1544 ; KNL-NEXT:    kxorw %k0, %k5, %k0
1545 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
1546 ; KNL-NEXT:    kshiftrw $13, %k0, %k0
1547 ; KNL-NEXT:    kxorw %k0, %k4, %k0
1548 ; KNL-NEXT:    kshiftrw $3, %k0, %k4
1549 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1550 ; KNL-NEXT:    kmovw %edx, %k5
1551 ; KNL-NEXT:    kxorw %k5, %k4, %k4
1552 ; KNL-NEXT:    kshiftlw $15, %k4, %k4
1553 ; KNL-NEXT:    kshiftrw $12, %k4, %k4
1554 ; KNL-NEXT:    kxorw %k4, %k0, %k0
1555 ; KNL-NEXT:    kshiftrw $4, %k0, %k4
1556 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1557 ; KNL-NEXT:    kmovw %edx, %k5
1558 ; KNL-NEXT:    kxorw %k5, %k4, %k4
1559 ; KNL-NEXT:    kshiftlw $15, %k4, %k4
1560 ; KNL-NEXT:    kshiftrw $11, %k4, %k4
1561 ; KNL-NEXT:    kxorw %k4, %k0, %k0
1562 ; KNL-NEXT:    kshiftrw $5, %k0, %k4
1563 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1564 ; KNL-NEXT:    kmovw %edx, %k5
1565 ; KNL-NEXT:    kxorw %k5, %k4, %k4
1566 ; KNL-NEXT:    kshiftlw $15, %k4, %k4
1567 ; KNL-NEXT:    kshiftrw $10, %k4, %k4
1568 ; KNL-NEXT:    kxorw %k4, %k0, %k0
1569 ; KNL-NEXT:    kshiftrw $6, %k0, %k4
1570 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1571 ; KNL-NEXT:    kmovw %edx, %k5
1572 ; KNL-NEXT:    kxorw %k5, %k4, %k4
1573 ; KNL-NEXT:    kshiftlw $15, %k4, %k4
1574 ; KNL-NEXT:    kshiftrw $9, %k4, %k4
1575 ; KNL-NEXT:    kxorw %k4, %k0, %k4
1576 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1577 ; KNL-NEXT:    kmovw %edx, %k0
1578 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1579 ; KNL-NEXT:    kmovw %edx, %k5
1580 ; KNL-NEXT:    kxorw %k1, %k5, %k5
1581 ; KNL-NEXT:    kshiftrw $2, %k5, %k6
1582 ; KNL-NEXT:    kxorw %k0, %k6, %k0
1583 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
1584 ; KNL-NEXT:    kshiftrw $13, %k0, %k0
1585 ; KNL-NEXT:    kxorw %k0, %k5, %k0
1586 ; KNL-NEXT:    kshiftrw $3, %k0, %k5
1587 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1588 ; KNL-NEXT:    kmovw %edx, %k6
1589 ; KNL-NEXT:    kxorw %k6, %k5, %k5
1590 ; KNL-NEXT:    kshiftlw $15, %k5, %k5
1591 ; KNL-NEXT:    kshiftrw $12, %k5, %k5
1592 ; KNL-NEXT:    kxorw %k5, %k0, %k0
1593 ; KNL-NEXT:    kshiftrw $4, %k0, %k5
1594 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1595 ; KNL-NEXT:    kmovw %edx, %k6
1596 ; KNL-NEXT:    kxorw %k6, %k5, %k5
1597 ; KNL-NEXT:    kshiftlw $15, %k5, %k5
1598 ; KNL-NEXT:    kshiftrw $11, %k5, %k5
1599 ; KNL-NEXT:    kxorw %k5, %k0, %k0
1600 ; KNL-NEXT:    kshiftrw $5, %k0, %k5
1601 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1602 ; KNL-NEXT:    kmovw %edx, %k6
1603 ; KNL-NEXT:    kxorw %k6, %k5, %k5
1604 ; KNL-NEXT:    kshiftlw $15, %k5, %k5
1605 ; KNL-NEXT:    kshiftrw $10, %k5, %k5
1606 ; KNL-NEXT:    kxorw %k5, %k0, %k0
1607 ; KNL-NEXT:    kshiftrw $6, %k0, %k5
1608 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1609 ; KNL-NEXT:    kmovw %edx, %k6
1610 ; KNL-NEXT:    kxorw %k6, %k5, %k5
1611 ; KNL-NEXT:    kshiftlw $15, %k5, %k5
1612 ; KNL-NEXT:    kshiftrw $9, %k5, %k5
1613 ; KNL-NEXT:    kxorw %k5, %k0, %k5
1614 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1615 ; KNL-NEXT:    kmovw %edx, %k0
1616 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1617 ; KNL-NEXT:    kmovw %edx, %k6
1618 ; KNL-NEXT:    kxorw %k1, %k6, %k6
1619 ; KNL-NEXT:    kshiftrw $2, %k6, %k7
1620 ; KNL-NEXT:    kxorw %k0, %k7, %k0
1621 ; KNL-NEXT:    kshiftlw $15, %k0, %k0
1622 ; KNL-NEXT:    kshiftrw $13, %k0, %k0
1623 ; KNL-NEXT:    kxorw %k0, %k6, %k0
1624 ; KNL-NEXT:    kshiftrw $3, %k0, %k6
1625 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1626 ; KNL-NEXT:    kmovw %edx, %k7
1627 ; KNL-NEXT:    kxorw %k7, %k6, %k6
1628 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
1629 ; KNL-NEXT:    kshiftrw $12, %k6, %k6
1630 ; KNL-NEXT:    kxorw %k6, %k0, %k0
1631 ; KNL-NEXT:    kshiftrw $4, %k0, %k6
1632 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1633 ; KNL-NEXT:    kmovw %edx, %k7
1634 ; KNL-NEXT:    kxorw %k7, %k6, %k6
1635 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
1636 ; KNL-NEXT:    kshiftrw $11, %k6, %k6
1637 ; KNL-NEXT:    kxorw %k6, %k0, %k0
1638 ; KNL-NEXT:    kshiftrw $5, %k0, %k6
1639 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1640 ; KNL-NEXT:    kmovw %edx, %k7
1641 ; KNL-NEXT:    kxorw %k7, %k6, %k6
1642 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
1643 ; KNL-NEXT:    kshiftrw $10, %k6, %k6
1644 ; KNL-NEXT:    kxorw %k6, %k0, %k0
1645 ; KNL-NEXT:    kshiftrw $6, %k0, %k6
1646 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1647 ; KNL-NEXT:    kmovw %edx, %k7
1648 ; KNL-NEXT:    kxorw %k7, %k6, %k6
1649 ; KNL-NEXT:    kshiftlw $15, %k6, %k6
1650 ; KNL-NEXT:    kshiftrw $9, %k6, %k6
1651 ; KNL-NEXT:    kxorw %k6, %k0, %k6
1652 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1653 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dil
1654 ; KNL-NEXT:    kmovw %edi, %k0
1655 ; KNL-NEXT:    kxorw %k1, %k0, %k0
1656 ; KNL-NEXT:    kmovw %edx, %k7
1657 ; KNL-NEXT:    kshiftrw $2, %k0, %k2
1658 ; KNL-NEXT:    kxorw %k7, %k2, %k2
1659 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1660 ; KNL-NEXT:    kshiftrw $13, %k2, %k2
1661 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1662 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1663 ; KNL-NEXT:    kshiftrw $3, %k0, %k2
1664 ; KNL-NEXT:    kmovw %edx, %k7
1665 ; KNL-NEXT:    kxorw %k7, %k2, %k2
1666 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1667 ; KNL-NEXT:    kshiftrw $12, %k2, %k2
1668 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1669 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1670 ; KNL-NEXT:    kshiftrw $4, %k0, %k2
1671 ; KNL-NEXT:    kmovw %edx, %k7
1672 ; KNL-NEXT:    kxorw %k7, %k2, %k2
1673 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1674 ; KNL-NEXT:    kshiftrw $11, %k2, %k2
1675 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1676 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1677 ; KNL-NEXT:    kshiftrw $5, %k0, %k2
1678 ; KNL-NEXT:    kmovw %edx, %k7
1679 ; KNL-NEXT:    kxorw %k7, %k2, %k2
1680 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1681 ; KNL-NEXT:    kshiftrw $10, %k2, %k2
1682 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1683 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %dl
1684 ; KNL-NEXT:    kshiftrw $6, %k0, %k2
1685 ; KNL-NEXT:    kmovw %edx, %k7
1686 ; KNL-NEXT:    kxorw %k7, %k2, %k2
1687 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1688 ; KNL-NEXT:    kshiftrw $9, %k2, %k2
1689 ; KNL-NEXT:    kxorw %k2, %k0, %k7
1690 ; KNL-NEXT:    kmovw %esi, %k0
1691 ; KNL-NEXT:    kxorw %k1, %k0, %k0
1692 ; KNL-NEXT:    kmovw %ecx, %k2
1693 ; KNL-NEXT:    kshiftrw $2, %k0, %k3
1694 ; KNL-NEXT:    kxorw %k2, %k3, %k2
1695 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1696 ; KNL-NEXT:    kshiftrw $13, %k2, %k2
1697 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1698 ; KNL-NEXT:    kshiftrw $3, %k0, %k2
1699 ; KNL-NEXT:    kmovw %r8d, %k3
1700 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1701 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1702 ; KNL-NEXT:    kshiftrw $12, %k2, %k2
1703 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1704 ; KNL-NEXT:    kshiftrw $4, %k0, %k2
1705 ; KNL-NEXT:    kmovw %r9d, %k3
1706 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1707 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1708 ; KNL-NEXT:    kshiftrw $11, %k2, %k2
1709 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1710 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
1711 ; KNL-NEXT:    kshiftrw $5, %k0, %k2
1712 ; KNL-NEXT:    kmovw %ecx, %k3
1713 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1714 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1715 ; KNL-NEXT:    kshiftrw $10, %k2, %k2
1716 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1717 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
1718 ; KNL-NEXT:    kshiftrw $6, %k0, %k2
1719 ; KNL-NEXT:    kmovw %ecx, %k3
1720 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1721 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1722 ; KNL-NEXT:    kshiftrw $9, %k2, %k2
1723 ; KNL-NEXT:    kxorw %k2, %k0, %k0
1724 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
1725 ; KNL-NEXT:    kmovw %ecx, %k2
1726 ; KNL-NEXT:    kxorw %k1, %k2, %k1
1727 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
1728 ; KNL-NEXT:    kmovw %ecx, %k2
1729 ; KNL-NEXT:    kshiftrw $2, %k1, %k3
1730 ; KNL-NEXT:    kxorw %k2, %k3, %k2
1731 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1732 ; KNL-NEXT:    kshiftrw $13, %k2, %k2
1733 ; KNL-NEXT:    kxorw %k2, %k1, %k1
1734 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
1735 ; KNL-NEXT:    kshiftrw $3, %k1, %k2
1736 ; KNL-NEXT:    kmovw %ecx, %k3
1737 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1738 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1739 ; KNL-NEXT:    kshiftrw $12, %k2, %k2
1740 ; KNL-NEXT:    kxorw %k2, %k1, %k1
1741 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
1742 ; KNL-NEXT:    kshiftrw $4, %k1, %k2
1743 ; KNL-NEXT:    kmovw %ecx, %k3
1744 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1745 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1746 ; KNL-NEXT:    kshiftrw $11, %k2, %k2
1747 ; KNL-NEXT:    kxorw %k2, %k1, %k1
1748 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
1749 ; KNL-NEXT:    kshiftrw $5, %k1, %k2
1750 ; KNL-NEXT:    kmovw %ecx, %k3
1751 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1752 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1753 ; KNL-NEXT:    kshiftrw $10, %k2, %k2
1754 ; KNL-NEXT:    kxorw %k2, %k1, %k1
1755 ; KNL-NEXT:    movb {{[0-9]+}}(%rsp), %cl
1756 ; KNL-NEXT:    kshiftrw $6, %k1, %k2
1757 ; KNL-NEXT:    kmovw %ecx, %k3
1758 ; KNL-NEXT:    kxorw %k3, %k2, %k2
1759 ; KNL-NEXT:    kshiftlw $15, %k2, %k2
1760 ; KNL-NEXT:    kshiftrw $9, %k2, %k2
1761 ; KNL-NEXT:    kxorw %k2, %k1, %k1
1762 ; KNL-NEXT:    kandw %k1, %k0, %k0
1763 ; KNL-NEXT:    kandw %k7, %k0, %k0
1764 ; KNL-NEXT:    kandw %k6, %k0, %k0
1765 ; KNL-NEXT:    kandw %k5, %k0, %k0
1766 ; KNL-NEXT:    kandw %k4, %k0, %k0
1767 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
1768 ; KNL-NEXT:    kandw %k1, %k0, %k0
1769 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
1770 ; KNL-NEXT:    kandw %k1, %k0, %k0
1771 ; KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
1772 ; KNL-NEXT:    kandw %k1, %k0, %k0
1773 ; KNL-NEXT:    kshiftrw $6, %k0, %k1
1774 ; KNL-NEXT:    kmovw %k1, %r8d
1775 ; KNL-NEXT:    kshiftrw $5, %k0, %k1
1776 ; KNL-NEXT:    kmovw %k1, %r9d
1777 ; KNL-NEXT:    kshiftrw $4, %k0, %k1
1778 ; KNL-NEXT:    kmovw %k1, %r10d
1779 ; KNL-NEXT:    kshiftrw $3, %k0, %k1
1780 ; KNL-NEXT:    kmovw %k1, %edi
1781 ; KNL-NEXT:    kshiftrw $2, %k0, %k1
1782 ; KNL-NEXT:    kmovw %k1, %ecx
1783 ; KNL-NEXT:    kshiftrw $1, %k0, %k1
1784 ; KNL-NEXT:    kmovw %k1, %edx
1785 ; KNL-NEXT:    kmovw %k0, %esi
1786 ; KNL-NEXT:    andb $1, %sil
1787 ; KNL-NEXT:    andb $1, %dl
1788 ; KNL-NEXT:    addb %dl, %dl
1789 ; KNL-NEXT:    orb %sil, %dl
1790 ; KNL-NEXT:    andb $1, %cl
1791 ; KNL-NEXT:    shlb $2, %cl
1792 ; KNL-NEXT:    orb %dl, %cl
1793 ; KNL-NEXT:    andb $1, %dil
1794 ; KNL-NEXT:    shlb $3, %dil
1795 ; KNL-NEXT:    orb %cl, %dil
1796 ; KNL-NEXT:    andb $1, %r10b
1797 ; KNL-NEXT:    shlb $4, %r10b
1798 ; KNL-NEXT:    orb %dil, %r10b
1799 ; KNL-NEXT:    andb $1, %r9b
1800 ; KNL-NEXT:    shlb $5, %r9b
1801 ; KNL-NEXT:    orb %r10b, %r9b
1802 ; KNL-NEXT:    shlb $6, %r8b
1803 ; KNL-NEXT:    orb %r9b, %r8b
1804 ; KNL-NEXT:    andb $127, %r8b
1805 ; KNL-NEXT:    movb %r8b, (%rax)
1806 ; KNL-NEXT:    retq
1808 ; SKX-LABEL: test17:
1809 ; SKX:       ## %bb.0:
1810 ; SKX-NEXT:    movq %rdi, %rax
1811 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k1
1812 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
1813 ; SKX-NEXT:    kshiftlb $7, %k0, %k0
1814 ; SKX-NEXT:    kshiftrb $6, %k0, %k0
1815 ; SKX-NEXT:    kxorb %k0, %k2, %k2
1816 ; SKX-NEXT:    kshiftrb $2, %k2, %k3
1817 ; SKX-NEXT:    kxorb %k1, %k3, %k1
1818 ; SKX-NEXT:    kshiftlb $7, %k1, %k1
1819 ; SKX-NEXT:    kshiftrb $5, %k1, %k1
1820 ; SKX-NEXT:    kxorb %k1, %k2, %k1
1821 ; SKX-NEXT:    kshiftrb $3, %k1, %k2
1822 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1823 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1824 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
1825 ; SKX-NEXT:    kshiftrb $4, %k2, %k2
1826 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1827 ; SKX-NEXT:    kxorb %k2, %k1, %k1
1828 ; SKX-NEXT:    kshiftrb $4, %k1, %k2
1829 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1830 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
1831 ; SKX-NEXT:    kshiftrb $3, %k2, %k2
1832 ; SKX-NEXT:    kxorb %k2, %k1, %k1
1833 ; SKX-NEXT:    kshiftrb $5, %k1, %k2
1834 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1835 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1836 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
1837 ; SKX-NEXT:    kshiftrb $2, %k2, %k2
1838 ; SKX-NEXT:    kxorb %k2, %k1, %k1
1839 ; SKX-NEXT:    kshiftrb $6, %k1, %k2
1840 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1841 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1842 ; SKX-NEXT:    kshiftlb $7, %k2, %k2
1843 ; SKX-NEXT:    kshiftrb $1, %k2, %k2
1844 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1845 ; SKX-NEXT:    kxorb %k2, %k1, %k1
1846 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k2
1847 ; SKX-NEXT:    kxorb %k0, %k2, %k2
1848 ; SKX-NEXT:    kshiftrb $2, %k2, %k4
1849 ; SKX-NEXT:    kxorb %k3, %k4, %k3
1850 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1851 ; SKX-NEXT:    kshiftrb $5, %k3, %k3
1852 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1853 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1854 ; SKX-NEXT:    kshiftrb $3, %k2, %k3
1855 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1856 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1857 ; SKX-NEXT:    kshiftrb $4, %k3, %k3
1858 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1859 ; SKX-NEXT:    kshiftrb $4, %k2, %k3
1860 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1861 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1862 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1863 ; SKX-NEXT:    kshiftrb $3, %k3, %k3
1864 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1865 ; SKX-NEXT:    kshiftrb $5, %k2, %k3
1866 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1867 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1868 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1869 ; SKX-NEXT:    kshiftrb $2, %k3, %k3
1870 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1871 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1872 ; SKX-NEXT:    kshiftrb $6, %k2, %k3
1873 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1874 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1875 ; SKX-NEXT:    kshiftrb $1, %k3, %k3
1876 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1877 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1878 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1879 ; SKX-NEXT:    kandb %k1, %k2, %k1
1880 ; SKX-NEXT:    kxorb %k0, %k4, %k2
1881 ; SKX-NEXT:    kshiftrb $2, %k2, %k4
1882 ; SKX-NEXT:    kxorb %k3, %k4, %k3
1883 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1884 ; SKX-NEXT:    kshiftrb $5, %k3, %k3
1885 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1886 ; SKX-NEXT:    kshiftrb $3, %k2, %k3
1887 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1888 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1889 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1890 ; SKX-NEXT:    kshiftrb $4, %k3, %k3
1891 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1892 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1893 ; SKX-NEXT:    kshiftrb $4, %k2, %k4
1894 ; SKX-NEXT:    kxorb %k3, %k4, %k3
1895 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1896 ; SKX-NEXT:    kshiftrb $3, %k3, %k3
1897 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1898 ; SKX-NEXT:    kshiftrb $5, %k2, %k3
1899 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1900 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1901 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1902 ; SKX-NEXT:    kshiftrb $2, %k3, %k3
1903 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1904 ; SKX-NEXT:    kshiftrb $6, %k2, %k3
1905 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1906 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1907 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1908 ; SKX-NEXT:    kshiftrb $1, %k3, %k3
1909 ; SKX-NEXT:    kxorb %k3, %k2, %k2
1910 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1911 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1912 ; SKX-NEXT:    kxorb %k0, %k4, %k4
1913 ; SKX-NEXT:    kshiftrb $2, %k4, %k5
1914 ; SKX-NEXT:    kxorb %k3, %k5, %k3
1915 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1916 ; SKX-NEXT:    kshiftrb $5, %k3, %k3
1917 ; SKX-NEXT:    kxorb %k3, %k4, %k3
1918 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1919 ; SKX-NEXT:    kshiftrb $3, %k3, %k5
1920 ; SKX-NEXT:    kxorb %k4, %k5, %k4
1921 ; SKX-NEXT:    kshiftlb $7, %k4, %k4
1922 ; SKX-NEXT:    kshiftrb $4, %k4, %k4
1923 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1924 ; SKX-NEXT:    kshiftrb $4, %k3, %k4
1925 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
1926 ; SKX-NEXT:    kxorb %k5, %k4, %k4
1927 ; SKX-NEXT:    kshiftlb $7, %k4, %k4
1928 ; SKX-NEXT:    kshiftrb $3, %k4, %k4
1929 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1930 ; SKX-NEXT:    kshiftrb $5, %k3, %k4
1931 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
1932 ; SKX-NEXT:    kxorb %k5, %k4, %k4
1933 ; SKX-NEXT:    kshiftlb $7, %k4, %k4
1934 ; SKX-NEXT:    kshiftrb $2, %k4, %k4
1935 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1936 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1937 ; SKX-NEXT:    kshiftrb $6, %k3, %k5
1938 ; SKX-NEXT:    kxorb %k4, %k5, %k4
1939 ; SKX-NEXT:    kshiftlb $7, %k4, %k4
1940 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
1941 ; SKX-NEXT:    kshiftrb $1, %k4, %k4
1942 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1943 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1944 ; SKX-NEXT:    kxorb %k0, %k4, %k4
1945 ; SKX-NEXT:    kshiftrb $2, %k4, %k6
1946 ; SKX-NEXT:    kxorb %k5, %k6, %k5
1947 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
1948 ; SKX-NEXT:    kshiftrb $5, %k5, %k5
1949 ; SKX-NEXT:    kxorb %k5, %k4, %k4
1950 ; SKX-NEXT:    kshiftrb $3, %k4, %k5
1951 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
1952 ; SKX-NEXT:    kxorb %k6, %k5, %k5
1953 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
1954 ; SKX-NEXT:    kshiftrb $4, %k5, %k5
1955 ; SKX-NEXT:    kxorb %k5, %k4, %k4
1956 ; SKX-NEXT:    kshiftrb $4, %k4, %k5
1957 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
1958 ; SKX-NEXT:    kxorb %k6, %k5, %k5
1959 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
1960 ; SKX-NEXT:    kshiftrb $3, %k5, %k5
1961 ; SKX-NEXT:    kxorb %k5, %k4, %k4
1962 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
1963 ; SKX-NEXT:    kshiftrb $5, %k4, %k6
1964 ; SKX-NEXT:    kxorb %k5, %k6, %k5
1965 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
1966 ; SKX-NEXT:    kshiftrb $2, %k5, %k5
1967 ; SKX-NEXT:    kxorb %k5, %k4, %k4
1968 ; SKX-NEXT:    kshiftrb $6, %k4, %k5
1969 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
1970 ; SKX-NEXT:    kxorb %k6, %k5, %k5
1971 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
1972 ; SKX-NEXT:    kshiftrb $1, %k5, %k5
1973 ; SKX-NEXT:    kxorb %k5, %k4, %k4
1974 ; SKX-NEXT:    kandb %k3, %k4, %k3
1975 ; SKX-NEXT:    kandb %k2, %k3, %k2
1976 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k3
1977 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1978 ; SKX-NEXT:    kxorb %k0, %k4, %k4
1979 ; SKX-NEXT:    kshiftrb $2, %k4, %k5
1980 ; SKX-NEXT:    kxorb %k3, %k5, %k3
1981 ; SKX-NEXT:    kshiftlb $7, %k3, %k3
1982 ; SKX-NEXT:    kshiftrb $5, %k3, %k3
1983 ; SKX-NEXT:    kxorb %k3, %k4, %k3
1984 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
1985 ; SKX-NEXT:    kshiftrb $3, %k3, %k5
1986 ; SKX-NEXT:    kxorb %k4, %k5, %k4
1987 ; SKX-NEXT:    kshiftlb $7, %k4, %k4
1988 ; SKX-NEXT:    kshiftrb $4, %k4, %k4
1989 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1990 ; SKX-NEXT:    kshiftrb $4, %k3, %k4
1991 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
1992 ; SKX-NEXT:    kxorb %k5, %k4, %k4
1993 ; SKX-NEXT:    kshiftlb $7, %k4, %k4
1994 ; SKX-NEXT:    kshiftrb $3, %k4, %k4
1995 ; SKX-NEXT:    kxorb %k4, %k3, %k3
1996 ; SKX-NEXT:    kshiftrb $5, %k3, %k4
1997 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
1998 ; SKX-NEXT:    kxorb %k5, %k4, %k4
1999 ; SKX-NEXT:    kshiftlb $7, %k4, %k4
2000 ; SKX-NEXT:    kshiftrb $2, %k4, %k4
2001 ; SKX-NEXT:    kxorb %k4, %k3, %k3
2002 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
2003 ; SKX-NEXT:    kshiftrb $6, %k3, %k5
2004 ; SKX-NEXT:    kxorb %k4, %k5, %k4
2005 ; SKX-NEXT:    kshiftlb $7, %k4, %k4
2006 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2007 ; SKX-NEXT:    kshiftrb $1, %k4, %k4
2008 ; SKX-NEXT:    kxorb %k4, %k3, %k3
2009 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k4
2010 ; SKX-NEXT:    kxorb %k0, %k4, %k4
2011 ; SKX-NEXT:    kshiftrb $2, %k4, %k6
2012 ; SKX-NEXT:    kxorb %k5, %k6, %k5
2013 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2014 ; SKX-NEXT:    kshiftrb $5, %k5, %k5
2015 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2016 ; SKX-NEXT:    kshiftrb $3, %k4, %k5
2017 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2018 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2019 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2020 ; SKX-NEXT:    kshiftrb $4, %k5, %k5
2021 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2022 ; SKX-NEXT:    kshiftrb $4, %k4, %k5
2023 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2024 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2025 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2026 ; SKX-NEXT:    kshiftrb $3, %k5, %k5
2027 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2028 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k5
2029 ; SKX-NEXT:    kshiftrb $5, %k4, %k6
2030 ; SKX-NEXT:    kxorb %k5, %k6, %k5
2031 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2032 ; SKX-NEXT:    kshiftrb $2, %k5, %k5
2033 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2034 ; SKX-NEXT:    kshiftrb $6, %k4, %k5
2035 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2036 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2037 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2038 ; SKX-NEXT:    kshiftrb $1, %k5, %k5
2039 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2040 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k7
2041 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2042 ; SKX-NEXT:    kandb %k3, %k4, %k3
2043 ; SKX-NEXT:    kxorb %k0, %k7, %k4
2044 ; SKX-NEXT:    kshiftrb $2, %k4, %k5
2045 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2046 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2047 ; SKX-NEXT:    kshiftrb $5, %k5, %k5
2048 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2049 ; SKX-NEXT:    kshiftrb $3, %k4, %k5
2050 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2051 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2052 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2053 ; SKX-NEXT:    kshiftrb $4, %k5, %k5
2054 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2055 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2056 ; SKX-NEXT:    kshiftrb $4, %k4, %k5
2057 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2058 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2059 ; SKX-NEXT:    kshiftrb $3, %k5, %k5
2060 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2061 ; SKX-NEXT:    kshiftrb $5, %k4, %k5
2062 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2063 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2064 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2065 ; SKX-NEXT:    kshiftrb $2, %k5, %k5
2066 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2067 ; SKX-NEXT:    kshiftrb $6, %k4, %k5
2068 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2069 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2070 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2071 ; SKX-NEXT:    kshiftrb $1, %k5, %k5
2072 ; SKX-NEXT:    kxorb %k5, %k4, %k4
2073 ; SKX-NEXT:    kmovd %ecx, %k5
2074 ; SKX-NEXT:    kmovd %esi, %k6
2075 ; SKX-NEXT:    kxorb %k0, %k6, %k0
2076 ; SKX-NEXT:    kshiftrb $2, %k0, %k6
2077 ; SKX-NEXT:    kxorb %k5, %k6, %k5
2078 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2079 ; SKX-NEXT:    kshiftrb $5, %k5, %k5
2080 ; SKX-NEXT:    kxorb %k5, %k0, %k0
2081 ; SKX-NEXT:    kshiftrb $3, %k0, %k5
2082 ; SKX-NEXT:    kmovd %r8d, %k6
2083 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2084 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2085 ; SKX-NEXT:    kshiftrb $4, %k5, %k5
2086 ; SKX-NEXT:    kxorb %k5, %k0, %k0
2087 ; SKX-NEXT:    kshiftrb $4, %k0, %k5
2088 ; SKX-NEXT:    kmovd %r9d, %k6
2089 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2090 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2091 ; SKX-NEXT:    kshiftrb $3, %k5, %k5
2092 ; SKX-NEXT:    kxorb %k5, %k0, %k0
2093 ; SKX-NEXT:    kshiftrb $5, %k0, %k5
2094 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2095 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2096 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2097 ; SKX-NEXT:    kshiftrb $2, %k5, %k5
2098 ; SKX-NEXT:    kmovb {{[0-9]+}}(%rsp), %k6
2099 ; SKX-NEXT:    kxorb %k5, %k0, %k0
2100 ; SKX-NEXT:    kshiftrb $6, %k0, %k5
2101 ; SKX-NEXT:    kxorb %k6, %k5, %k5
2102 ; SKX-NEXT:    kshiftlb $7, %k5, %k5
2103 ; SKX-NEXT:    kshiftrb $1, %k5, %k5
2104 ; SKX-NEXT:    kxorb %k5, %k0, %k0
2105 ; SKX-NEXT:    kandb %k4, %k0, %k0
2106 ; SKX-NEXT:    kandb %k3, %k0, %k0
2107 ; SKX-NEXT:    kandb %k2, %k0, %k0
2108 ; SKX-NEXT:    kandb %k1, %k0, %k0
2109 ; SKX-NEXT:    kshiftrb $6, %k0, %k1
2110 ; SKX-NEXT:    kmovd %k1, %r8d
2111 ; SKX-NEXT:    kshiftrb $5, %k0, %k1
2112 ; SKX-NEXT:    kmovd %k1, %r9d
2113 ; SKX-NEXT:    kshiftrb $4, %k0, %k1
2114 ; SKX-NEXT:    kmovd %k1, %r10d
2115 ; SKX-NEXT:    kshiftrb $3, %k0, %k1
2116 ; SKX-NEXT:    kmovd %k1, %edi
2117 ; SKX-NEXT:    kshiftrb $2, %k0, %k1
2118 ; SKX-NEXT:    kmovd %k1, %ecx
2119 ; SKX-NEXT:    kshiftrb $1, %k0, %k1
2120 ; SKX-NEXT:    kmovd %k1, %edx
2121 ; SKX-NEXT:    kmovd %k0, %esi
2122 ; SKX-NEXT:    andb $1, %sil
2123 ; SKX-NEXT:    andb $1, %dl
2124 ; SKX-NEXT:    addb %dl, %dl
2125 ; SKX-NEXT:    orb %sil, %dl
2126 ; SKX-NEXT:    andb $1, %cl
2127 ; SKX-NEXT:    shlb $2, %cl
2128 ; SKX-NEXT:    orb %dl, %cl
2129 ; SKX-NEXT:    andb $1, %dil
2130 ; SKX-NEXT:    shlb $3, %dil
2131 ; SKX-NEXT:    orb %cl, %dil
2132 ; SKX-NEXT:    andb $1, %r10b
2133 ; SKX-NEXT:    shlb $4, %r10b
2134 ; SKX-NEXT:    orb %dil, %r10b
2135 ; SKX-NEXT:    andb $1, %r9b
2136 ; SKX-NEXT:    shlb $5, %r9b
2137 ; SKX-NEXT:    orb %r10b, %r9b
2138 ; SKX-NEXT:    shlb $6, %r8b
2139 ; SKX-NEXT:    orb %r9b, %r8b
2140 ; SKX-NEXT:    andb $127, %r8b
2141 ; SKX-NEXT:    movb %r8b, (%rax)
2142 ; SKX-NEXT:    retq
2144 ; KNL_X32-LABEL: test17:
2145 ; KNL_X32:       ## %bb.0:
2146 ; KNL_X32-NEXT:    pushl %ebx
2147 ; KNL_X32-NEXT:    subl $8, %esp
2148 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2149 ; KNL_X32-NEXT:    kmovw %eax, %k0
2150 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2151 ; KNL_X32-NEXT:    kmovw %eax, %k2
2152 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k1
2153 ; KNL_X32-NEXT:    kshiftrw $14, %k1, %k1
2154 ; KNL_X32-NEXT:    kxorw %k1, %k2, %k2
2155 ; KNL_X32-NEXT:    kshiftrw $2, %k2, %k3
2156 ; KNL_X32-NEXT:    kxorw %k0, %k3, %k0
2157 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2158 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k0
2159 ; KNL_X32-NEXT:    kxorw %k0, %k2, %k0
2160 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k2
2161 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2162 ; KNL_X32-NEXT:    kmovw %eax, %k3
2163 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2164 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2165 ; KNL_X32-NEXT:    kshiftrw $12, %k2, %k2
2166 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2167 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k2
2168 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2169 ; KNL_X32-NEXT:    kmovw %eax, %k3
2170 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2171 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2172 ; KNL_X32-NEXT:    kshiftrw $11, %k2, %k2
2173 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2174 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k2
2175 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2176 ; KNL_X32-NEXT:    kmovw %eax, %k3
2177 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2178 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2179 ; KNL_X32-NEXT:    kshiftrw $10, %k2, %k2
2180 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2181 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k2
2182 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2183 ; KNL_X32-NEXT:    kmovw %eax, %k3
2184 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2185 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2186 ; KNL_X32-NEXT:    kshiftrw $9, %k2, %k2
2187 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2188 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
2189 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2190 ; KNL_X32-NEXT:    kmovw %eax, %k0
2191 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2192 ; KNL_X32-NEXT:    kmovw %eax, %k2
2193 ; KNL_X32-NEXT:    kxorw %k1, %k2, %k2
2194 ; KNL_X32-NEXT:    kshiftrw $2, %k2, %k3
2195 ; KNL_X32-NEXT:    kxorw %k0, %k3, %k0
2196 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2197 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k0
2198 ; KNL_X32-NEXT:    kxorw %k0, %k2, %k0
2199 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k2
2200 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2201 ; KNL_X32-NEXT:    kmovw %eax, %k3
2202 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2203 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2204 ; KNL_X32-NEXT:    kshiftrw $12, %k2, %k2
2205 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2206 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k2
2207 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2208 ; KNL_X32-NEXT:    kmovw %eax, %k3
2209 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2210 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2211 ; KNL_X32-NEXT:    kshiftrw $11, %k2, %k2
2212 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2213 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k2
2214 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2215 ; KNL_X32-NEXT:    kmovw %eax, %k3
2216 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2217 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2218 ; KNL_X32-NEXT:    kshiftrw $10, %k2, %k2
2219 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2220 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k2
2221 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2222 ; KNL_X32-NEXT:    kmovw %eax, %k3
2223 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2224 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2225 ; KNL_X32-NEXT:    kshiftrw $9, %k2, %k2
2226 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2227 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
2228 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2229 ; KNL_X32-NEXT:    kmovw %eax, %k0
2230 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2231 ; KNL_X32-NEXT:    kmovw %eax, %k3
2232 ; KNL_X32-NEXT:    kxorw %k1, %k3, %k3
2233 ; KNL_X32-NEXT:    kshiftrw $2, %k3, %k4
2234 ; KNL_X32-NEXT:    kxorw %k0, %k4, %k0
2235 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2236 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k0
2237 ; KNL_X32-NEXT:    kxorw %k0, %k3, %k0
2238 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k3
2239 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2240 ; KNL_X32-NEXT:    kmovw %eax, %k4
2241 ; KNL_X32-NEXT:    kxorw %k4, %k3, %k3
2242 ; KNL_X32-NEXT:    kshiftlw $15, %k3, %k3
2243 ; KNL_X32-NEXT:    kshiftrw $12, %k3, %k3
2244 ; KNL_X32-NEXT:    kxorw %k3, %k0, %k0
2245 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k3
2246 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2247 ; KNL_X32-NEXT:    kmovw %eax, %k4
2248 ; KNL_X32-NEXT:    kxorw %k4, %k3, %k3
2249 ; KNL_X32-NEXT:    kshiftlw $15, %k3, %k3
2250 ; KNL_X32-NEXT:    kshiftrw $11, %k3, %k3
2251 ; KNL_X32-NEXT:    kxorw %k3, %k0, %k0
2252 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k3
2253 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2254 ; KNL_X32-NEXT:    kmovw %eax, %k4
2255 ; KNL_X32-NEXT:    kxorw %k4, %k3, %k3
2256 ; KNL_X32-NEXT:    kshiftlw $15, %k3, %k3
2257 ; KNL_X32-NEXT:    kshiftrw $10, %k3, %k3
2258 ; KNL_X32-NEXT:    kxorw %k3, %k0, %k0
2259 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k3
2260 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2261 ; KNL_X32-NEXT:    kmovw %eax, %k4
2262 ; KNL_X32-NEXT:    kxorw %k4, %k3, %k3
2263 ; KNL_X32-NEXT:    kshiftlw $15, %k3, %k3
2264 ; KNL_X32-NEXT:    kshiftrw $9, %k3, %k3
2265 ; KNL_X32-NEXT:    kxorw %k3, %k0, %k0
2266 ; KNL_X32-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
2267 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2268 ; KNL_X32-NEXT:    kmovw %eax, %k0
2269 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2270 ; KNL_X32-NEXT:    kmovw %eax, %k4
2271 ; KNL_X32-NEXT:    kxorw %k1, %k4, %k4
2272 ; KNL_X32-NEXT:    kshiftrw $2, %k4, %k5
2273 ; KNL_X32-NEXT:    kxorw %k0, %k5, %k0
2274 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2275 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k0
2276 ; KNL_X32-NEXT:    kxorw %k0, %k4, %k0
2277 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k4
2278 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2279 ; KNL_X32-NEXT:    kmovw %eax, %k5
2280 ; KNL_X32-NEXT:    kxorw %k5, %k4, %k4
2281 ; KNL_X32-NEXT:    kshiftlw $15, %k4, %k4
2282 ; KNL_X32-NEXT:    kshiftrw $12, %k4, %k4
2283 ; KNL_X32-NEXT:    kxorw %k4, %k0, %k0
2284 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k4
2285 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2286 ; KNL_X32-NEXT:    kmovw %eax, %k5
2287 ; KNL_X32-NEXT:    kxorw %k5, %k4, %k4
2288 ; KNL_X32-NEXT:    kshiftlw $15, %k4, %k4
2289 ; KNL_X32-NEXT:    kshiftrw $11, %k4, %k4
2290 ; KNL_X32-NEXT:    kxorw %k4, %k0, %k0
2291 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k4
2292 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2293 ; KNL_X32-NEXT:    kmovw %eax, %k5
2294 ; KNL_X32-NEXT:    kxorw %k5, %k4, %k4
2295 ; KNL_X32-NEXT:    kshiftlw $15, %k4, %k4
2296 ; KNL_X32-NEXT:    kshiftrw $10, %k4, %k4
2297 ; KNL_X32-NEXT:    kxorw %k4, %k0, %k0
2298 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k4
2299 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2300 ; KNL_X32-NEXT:    kmovw %eax, %k5
2301 ; KNL_X32-NEXT:    kxorw %k5, %k4, %k4
2302 ; KNL_X32-NEXT:    kshiftlw $15, %k4, %k4
2303 ; KNL_X32-NEXT:    kshiftrw $9, %k4, %k4
2304 ; KNL_X32-NEXT:    kxorw %k4, %k0, %k4
2305 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2306 ; KNL_X32-NEXT:    kmovw %eax, %k0
2307 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2308 ; KNL_X32-NEXT:    kmovw %eax, %k5
2309 ; KNL_X32-NEXT:    kxorw %k1, %k5, %k5
2310 ; KNL_X32-NEXT:    kshiftrw $2, %k5, %k6
2311 ; KNL_X32-NEXT:    kxorw %k0, %k6, %k0
2312 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2313 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k0
2314 ; KNL_X32-NEXT:    kxorw %k0, %k5, %k0
2315 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k5
2316 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2317 ; KNL_X32-NEXT:    kmovw %eax, %k6
2318 ; KNL_X32-NEXT:    kxorw %k6, %k5, %k5
2319 ; KNL_X32-NEXT:    kshiftlw $15, %k5, %k5
2320 ; KNL_X32-NEXT:    kshiftrw $12, %k5, %k5
2321 ; KNL_X32-NEXT:    kxorw %k5, %k0, %k0
2322 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k5
2323 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2324 ; KNL_X32-NEXT:    kmovw %eax, %k6
2325 ; KNL_X32-NEXT:    kxorw %k6, %k5, %k5
2326 ; KNL_X32-NEXT:    kshiftlw $15, %k5, %k5
2327 ; KNL_X32-NEXT:    kshiftrw $11, %k5, %k5
2328 ; KNL_X32-NEXT:    kxorw %k5, %k0, %k0
2329 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k5
2330 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2331 ; KNL_X32-NEXT:    kmovw %eax, %k6
2332 ; KNL_X32-NEXT:    kxorw %k6, %k5, %k5
2333 ; KNL_X32-NEXT:    kshiftlw $15, %k5, %k5
2334 ; KNL_X32-NEXT:    kshiftrw $10, %k5, %k5
2335 ; KNL_X32-NEXT:    kxorw %k5, %k0, %k0
2336 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k5
2337 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2338 ; KNL_X32-NEXT:    kmovw %eax, %k6
2339 ; KNL_X32-NEXT:    kxorw %k6, %k5, %k5
2340 ; KNL_X32-NEXT:    kshiftlw $15, %k5, %k5
2341 ; KNL_X32-NEXT:    kshiftrw $9, %k5, %k5
2342 ; KNL_X32-NEXT:    kxorw %k5, %k0, %k5
2343 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2344 ; KNL_X32-NEXT:    kmovw %eax, %k0
2345 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2346 ; KNL_X32-NEXT:    kmovw %eax, %k6
2347 ; KNL_X32-NEXT:    kxorw %k1, %k6, %k6
2348 ; KNL_X32-NEXT:    kshiftrw $2, %k6, %k7
2349 ; KNL_X32-NEXT:    kxorw %k0, %k7, %k0
2350 ; KNL_X32-NEXT:    kshiftlw $15, %k0, %k0
2351 ; KNL_X32-NEXT:    kshiftrw $13, %k0, %k0
2352 ; KNL_X32-NEXT:    kxorw %k0, %k6, %k0
2353 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k6
2354 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2355 ; KNL_X32-NEXT:    kmovw %eax, %k7
2356 ; KNL_X32-NEXT:    kxorw %k7, %k6, %k6
2357 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2358 ; KNL_X32-NEXT:    kshiftrw $12, %k6, %k6
2359 ; KNL_X32-NEXT:    kxorw %k6, %k0, %k0
2360 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k6
2361 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2362 ; KNL_X32-NEXT:    kmovw %eax, %k7
2363 ; KNL_X32-NEXT:    kxorw %k7, %k6, %k6
2364 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2365 ; KNL_X32-NEXT:    kshiftrw $11, %k6, %k6
2366 ; KNL_X32-NEXT:    kxorw %k6, %k0, %k0
2367 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k6
2368 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2369 ; KNL_X32-NEXT:    kmovw %eax, %k7
2370 ; KNL_X32-NEXT:    kxorw %k7, %k6, %k6
2371 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2372 ; KNL_X32-NEXT:    kshiftrw $10, %k6, %k6
2373 ; KNL_X32-NEXT:    kxorw %k6, %k0, %k0
2374 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k6
2375 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2376 ; KNL_X32-NEXT:    kmovw %eax, %k7
2377 ; KNL_X32-NEXT:    kxorw %k7, %k6, %k6
2378 ; KNL_X32-NEXT:    kshiftlw $15, %k6, %k6
2379 ; KNL_X32-NEXT:    kshiftrw $9, %k6, %k6
2380 ; KNL_X32-NEXT:    kxorw %k6, %k0, %k6
2381 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2382 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %cl
2383 ; KNL_X32-NEXT:    kmovw %ecx, %k0
2384 ; KNL_X32-NEXT:    kxorw %k1, %k0, %k0
2385 ; KNL_X32-NEXT:    kmovw %eax, %k7
2386 ; KNL_X32-NEXT:    kshiftrw $2, %k0, %k2
2387 ; KNL_X32-NEXT:    kxorw %k7, %k2, %k2
2388 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2389 ; KNL_X32-NEXT:    kshiftrw $13, %k2, %k2
2390 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2391 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2392 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k2
2393 ; KNL_X32-NEXT:    kmovw %eax, %k7
2394 ; KNL_X32-NEXT:    kxorw %k7, %k2, %k2
2395 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2396 ; KNL_X32-NEXT:    kshiftrw $12, %k2, %k2
2397 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2398 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2399 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k2
2400 ; KNL_X32-NEXT:    kmovw %eax, %k7
2401 ; KNL_X32-NEXT:    kxorw %k7, %k2, %k2
2402 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2403 ; KNL_X32-NEXT:    kshiftrw $11, %k2, %k2
2404 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2405 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2406 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k2
2407 ; KNL_X32-NEXT:    kmovw %eax, %k7
2408 ; KNL_X32-NEXT:    kxorw %k7, %k2, %k2
2409 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2410 ; KNL_X32-NEXT:    kshiftrw $10, %k2, %k2
2411 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2412 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2413 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k2
2414 ; KNL_X32-NEXT:    kmovw %eax, %k7
2415 ; KNL_X32-NEXT:    kxorw %k7, %k2, %k2
2416 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2417 ; KNL_X32-NEXT:    kshiftrw $9, %k2, %k2
2418 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k7
2419 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2420 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %cl
2421 ; KNL_X32-NEXT:    kmovw %ecx, %k0
2422 ; KNL_X32-NEXT:    kxorw %k1, %k0, %k0
2423 ; KNL_X32-NEXT:    kmovw %eax, %k2
2424 ; KNL_X32-NEXT:    kshiftrw $2, %k0, %k3
2425 ; KNL_X32-NEXT:    kxorw %k2, %k3, %k2
2426 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2427 ; KNL_X32-NEXT:    kshiftrw $13, %k2, %k2
2428 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2429 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2430 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k2
2431 ; KNL_X32-NEXT:    kmovw %eax, %k3
2432 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2433 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2434 ; KNL_X32-NEXT:    kshiftrw $12, %k2, %k2
2435 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2436 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2437 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k2
2438 ; KNL_X32-NEXT:    kmovw %eax, %k3
2439 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2440 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2441 ; KNL_X32-NEXT:    kshiftrw $11, %k2, %k2
2442 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2443 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2444 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k2
2445 ; KNL_X32-NEXT:    kmovw %eax, %k3
2446 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2447 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2448 ; KNL_X32-NEXT:    kshiftrw $10, %k2, %k2
2449 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2450 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2451 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k2
2452 ; KNL_X32-NEXT:    kmovw %eax, %k3
2453 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2454 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2455 ; KNL_X32-NEXT:    kshiftrw $9, %k2, %k2
2456 ; KNL_X32-NEXT:    kxorw %k2, %k0, %k0
2457 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2458 ; KNL_X32-NEXT:    kmovw %eax, %k2
2459 ; KNL_X32-NEXT:    kxorw %k1, %k2, %k1
2460 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2461 ; KNL_X32-NEXT:    kmovw %eax, %k2
2462 ; KNL_X32-NEXT:    kshiftrw $2, %k1, %k3
2463 ; KNL_X32-NEXT:    kxorw %k2, %k3, %k2
2464 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2465 ; KNL_X32-NEXT:    kshiftrw $13, %k2, %k2
2466 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
2467 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2468 ; KNL_X32-NEXT:    kshiftrw $3, %k1, %k2
2469 ; KNL_X32-NEXT:    kmovw %eax, %k3
2470 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2471 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2472 ; KNL_X32-NEXT:    kshiftrw $12, %k2, %k2
2473 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
2474 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2475 ; KNL_X32-NEXT:    kshiftrw $4, %k1, %k2
2476 ; KNL_X32-NEXT:    kmovw %eax, %k3
2477 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2478 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2479 ; KNL_X32-NEXT:    kshiftrw $11, %k2, %k2
2480 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
2481 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2482 ; KNL_X32-NEXT:    kshiftrw $5, %k1, %k2
2483 ; KNL_X32-NEXT:    kmovw %eax, %k3
2484 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2485 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2486 ; KNL_X32-NEXT:    kshiftrw $10, %k2, %k2
2487 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
2488 ; KNL_X32-NEXT:    movb {{[0-9]+}}(%esp), %al
2489 ; KNL_X32-NEXT:    kshiftrw $6, %k1, %k2
2490 ; KNL_X32-NEXT:    kmovw %eax, %k3
2491 ; KNL_X32-NEXT:    kxorw %k3, %k2, %k2
2492 ; KNL_X32-NEXT:    kshiftlw $15, %k2, %k2
2493 ; KNL_X32-NEXT:    kshiftrw $9, %k2, %k2
2494 ; KNL_X32-NEXT:    kxorw %k2, %k1, %k1
2495 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2496 ; KNL_X32-NEXT:    kandw %k7, %k0, %k0
2497 ; KNL_X32-NEXT:    kandw %k6, %k0, %k0
2498 ; KNL_X32-NEXT:    kandw %k5, %k0, %k0
2499 ; KNL_X32-NEXT:    kandw %k4, %k0, %k0
2500 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
2501 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2502 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
2503 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2504 ; KNL_X32-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
2505 ; KNL_X32-NEXT:    kandw %k1, %k0, %k0
2506 ; KNL_X32-NEXT:    kshiftrw $6, %k0, %k1
2507 ; KNL_X32-NEXT:    kmovw %k1, %ecx
2508 ; KNL_X32-NEXT:    kshiftrw $5, %k0, %k1
2509 ; KNL_X32-NEXT:    kmovw %k1, %eax
2510 ; KNL_X32-NEXT:    kshiftrw $1, %k0, %k1
2511 ; KNL_X32-NEXT:    kmovw %k1, %edx
2512 ; KNL_X32-NEXT:    kshiftrw $2, %k0, %k1
2513 ; KNL_X32-NEXT:    kmovw %k0, %ebx
2514 ; KNL_X32-NEXT:    andb $1, %bl
2515 ; KNL_X32-NEXT:    andb $1, %dl
2516 ; KNL_X32-NEXT:    addb %dl, %dl
2517 ; KNL_X32-NEXT:    orb %bl, %dl
2518 ; KNL_X32-NEXT:    kmovw %k1, %ebx
2519 ; KNL_X32-NEXT:    kshiftrw $3, %k0, %k1
2520 ; KNL_X32-NEXT:    andb $1, %bl
2521 ; KNL_X32-NEXT:    shlb $2, %bl
2522 ; KNL_X32-NEXT:    orb %dl, %bl
2523 ; KNL_X32-NEXT:    kmovw %k1, %edx
2524 ; KNL_X32-NEXT:    kshiftrw $4, %k0, %k0
2525 ; KNL_X32-NEXT:    andb $1, %dl
2526 ; KNL_X32-NEXT:    shlb $3, %dl
2527 ; KNL_X32-NEXT:    orb %bl, %dl
2528 ; KNL_X32-NEXT:    kmovw %k0, %ebx
2529 ; KNL_X32-NEXT:    andb $1, %bl
2530 ; KNL_X32-NEXT:    shlb $4, %bl
2531 ; KNL_X32-NEXT:    orb %dl, %bl
2532 ; KNL_X32-NEXT:    andb $1, %al
2533 ; KNL_X32-NEXT:    shlb $5, %al
2534 ; KNL_X32-NEXT:    orb %bl, %al
2535 ; KNL_X32-NEXT:    shlb $6, %cl
2536 ; KNL_X32-NEXT:    orb %al, %cl
2537 ; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
2538 ; KNL_X32-NEXT:    andb $127, %cl
2539 ; KNL_X32-NEXT:    movb %cl, (%eax)
2540 ; KNL_X32-NEXT:    addl $8, %esp
2541 ; KNL_X32-NEXT:    popl %ebx
2542 ; KNL_X32-NEXT:    retl $4
2543   %j = and <7 x i1> %a, %b
2544   %k = and <7 x i1> %j, %c
2545   %l = and <7 x i1> %k, %d
2546   %m = and <7 x i1> %l, %e
2547   %n = and <7 x i1> %m, %f
2548   %o = and <7 x i1> %n, %g
2549   %p = and <7 x i1> %o, %h
2550   %q = and <7 x i1> %p, %i
2551   ret <7 x i1> %q