Lines Matching full:next
15 ; SSE-NEXT: cmpltpd %xmm0, %xmm1
16 ; SSE-NEXT: movapd %xmm1, %xmm0
17 ; SSE-NEXT: retq
21 ; AVX-NEXT: vcmpltpd %xmm0, %xmm1, %xmm0
22 ; AVX-NEXT: retq
30 ; SSE-NEXT: cmpltps %xmm0, %xmm1
31 ; SSE-NEXT: movaps %xmm1, %xmm0
32 ; SSE-NEXT: retq
36 ; AVX-NEXT: vcmpltps %xmm0, %xmm1, %xmm0
37 ; AVX-NEXT: retq
45 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2147483648,0,2147483648,0]
46 ; SSE2-NEXT: pxor %xmm2, %xmm1
47 ; SSE2-NEXT: pxor %xmm2, %xmm0
48 ; SSE2-NEXT: movdqa %xmm0, %xmm2
49 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm2
50 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm2[0,0,2,2]
51 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm0
52 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
53 ; SSE2-NEXT: pand %xmm3, %xmm1
54 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
55 ; SSE2-NEXT: por %xmm1, %xmm0
56 ; SSE2-NEXT: retq
60 ; SSE42-NEXT: pcmpgtq %xmm1, %xmm0
61 ; SSE42-NEXT: retq
65 ; AVX-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm0
66 ; AVX-NEXT: retq
74 ; SSE-NEXT: pcmpgtd %xmm1, %xmm0
75 ; SSE-NEXT: retq
79 ; AVX-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0
80 ; AVX-NEXT: retq
88 ; SSE-NEXT: pcmpgtw %xmm1, %xmm0
89 ; SSE-NEXT: retq
93 ; AVX-NEXT: vpcmpgtw %xmm1, %xmm0, %xmm0
94 ; AVX-NEXT: retq
102 ; SSE-NEXT: pcmpgtb %xmm1, %xmm0
103 ; SSE-NEXT: retq
107 ; AVX-NEXT: vpcmpgtb %xmm1, %xmm0, %xmm0
108 ; AVX-NEXT: retq
120 ; SSE2-NEXT: cmpltpd %xmm1, %xmm3
121 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3]
122 ; SSE2-NEXT: cmpltpd %xmm0, %xmm2
123 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
124 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
125 ; SSE2-NEXT: retq
129 ; SSE42-NEXT: cmpltpd %xmm1, %xmm3
130 ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,1,0,2]
131 ; SSE42-NEXT: cmpltpd %xmm0, %xmm2
132 ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
133 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
134 ; SSE42-NEXT: retq
138 ; AVX1-NEXT: vcmpltpd %ymm0, %ymm1, %ymm0
139 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
140 ; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,1,0,2]
141 ; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
142 ; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
143 ; AVX1-NEXT: vzeroupper
144 ; AVX1-NEXT: retq
148 ; AVX2-NEXT: vcmpltpd %ymm0, %ymm1, %ymm0
149 ; AVX2-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
150 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
151 ; AVX2-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
152 ; AVX2-NEXT: vzeroupper
153 ; AVX2-NEXT: retq
157 ; AVX512-NEXT: vcmpltpd %ymm0, %ymm1, %ymm0
158 ; AVX512-NEXT: vpmovqd %zmm0, %ymm0
159 ; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
160 ; AVX512-NEXT: retq
168 ; SSE2-NEXT: cmpltps %xmm1, %xmm3
169 ; SSE2-NEXT: pslld $16, %xmm3
170 ; SSE2-NEXT: psrad $16, %xmm3
171 ; SSE2-NEXT: cmpltps %xmm0, %xmm2
172 ; SSE2-NEXT: pslld $16, %xmm2
173 ; SSE2-NEXT: psrad $16, %xmm2
174 ; SSE2-NEXT: packssdw %xmm3, %xmm2
175 ; SSE2-NEXT: movdqa %xmm2, %xmm0
176 ; SSE2-NEXT: retq
180 ; SSE42-NEXT: cmpltps %xmm1, %xmm3
181 ; SSE42-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
182 ; SSE42-NEXT: pshufb %xmm1, %xmm3
183 ; SSE42-NEXT: cmpltps %xmm0, %xmm2
184 ; SSE42-NEXT: pshufb %xmm1, %xmm2
185 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
186 ; SSE42-NEXT: movdqa %xmm2, %xmm0
187 ; SSE42-NEXT: retq
191 ; AVX1-NEXT: vcmpltps %ymm0, %ymm1, %ymm0
192 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
193 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
194 ; AVX1-NEXT: vpshufb %xmm2, %xmm1, %xmm1
195 ; AVX1-NEXT: vpshufb %xmm2, %xmm0, %xmm0
196 ; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
197 ; AVX1-NEXT: vzeroupper
198 ; AVX1-NEXT: retq
202 ; AVX2-NEXT: vcmpltps %ymm0, %ymm1, %ymm0
203 ; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17,20,21,24,25,28,29],zero,zero,zero,zero,zero,zero,zero,zero
204 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
205 ; AVX2-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
206 ; AVX2-NEXT: vzeroupper
207 ; AVX2-NEXT: retq
211 ; AVX512-NEXT: vcmpltps %ymm0, %ymm1, %ymm0
212 ; AVX512-NEXT: vpmovdw %zmm0, %ymm0
213 ; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
214 ; AVX512-NEXT: retq
222 ; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [2147483648,0,2147483648,0]
223 ; SSE2-NEXT: pxor %xmm4, %xmm3
224 ; SSE2-NEXT: pxor %xmm4, %xmm1
225 ; SSE2-NEXT: movdqa %xmm1, %xmm5
226 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm5
227 ; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
228 ; SSE2-NEXT: pcmpeqd %xmm3, %xmm1
229 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
230 ; SSE2-NEXT: pand %xmm6, %xmm1
231 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
232 ; SSE2-NEXT: por %xmm1, %xmm3
233 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3]
234 ; SSE2-NEXT: pxor %xmm4, %xmm2
235 ; SSE2-NEXT: pxor %xmm4, %xmm0
236 ; SSE2-NEXT: movdqa %xmm0, %xmm3
237 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm3
238 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm3[0,0,2,2]
239 ; SSE2-NEXT: pcmpeqd %xmm2, %xmm0
240 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
241 ; SSE2-NEXT: pand %xmm4, %xmm0
242 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm3[1,1,3,3]
243 ; SSE2-NEXT: por %xmm0, %xmm2
244 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]
245 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
246 ; SSE2-NEXT: retq
250 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm1
251 ; SSE42-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,0,2]
252 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm0
253 ; SSE42-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
254 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
255 ; SSE42-NEXT: retq
259 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
260 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
261 ; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2
262 ; AVX1-NEXT: vpshufd {{.*#+}} xmm2 = xmm2[0,1,0,2]
263 ; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm0
264 ; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
265 ; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm2[4,5,6,7]
266 ; AVX1-NEXT: vzeroupper
267 ; AVX1-NEXT: retq
271 ; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm0
272 ; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
273 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
274 ; AVX2-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
275 ; AVX2-NEXT: vzeroupper
276 ; AVX2-NEXT: retq
280 ; AVX512-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm0
281 ; AVX512-NEXT: vpmovqd %zmm0, %ymm0
282 ; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
283 ; AVX512-NEXT: retq
291 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm1
292 ; SSE2-NEXT: pslld $16, %xmm1
293 ; SSE2-NEXT: psrad $16, %xmm1
294 ; SSE2-NEXT: pcmpgtd %xmm2, %xmm0
295 ; SSE2-NEXT: pslld $16, %xmm0
296 ; SSE2-NEXT: psrad $16, %xmm0
297 ; SSE2-NEXT: packssdw %xmm1, %xmm0
298 ; SSE2-NEXT: retq
302 ; SSE42-NEXT: pcmpgtd %xmm3, %xmm1
303 ; SSE42-NEXT: movdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
304 ; SSE42-NEXT: pshufb %xmm3, %xmm1
305 ; SSE42-NEXT: pcmpgtd %xmm2, %xmm0
306 ; SSE42-NEXT: pshufb %xmm3, %xmm0
307 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
308 ; SSE42-NEXT: retq
312 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
313 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
314 ; AVX1-NEXT: vpcmpgtd %xmm2, %xmm3, %xmm2
315 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
316 ; AVX1-NEXT: vpshufb %xmm3, %xmm2, %xmm2
317 ; AVX1-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0
318 ; AVX1-NEXT: vpshufb %xmm3, %xmm0, %xmm0
319 ; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
320 ; AVX1-NEXT: vzeroupper
321 ; AVX1-NEXT: retq
325 ; AVX2-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0
326 ; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17,20,21,24,25,28,29],zero,zero,zero,zero,zero,zero,zero,zero
327 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
328 ; AVX2-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
329 ; AVX2-NEXT: vzeroupper
330 ; AVX2-NEXT: retq
334 ; AVX512-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0
335 ; AVX512-NEXT: vpmovdw %zmm0, %ymm0
336 ; AVX512-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
337 ; AVX512-NEXT: retq
345 ; SSE2-NEXT: pcmpgtw %xmm3, %xmm1
346 ; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]
347 ; SSE2-NEXT: pand %xmm3, %xmm1
348 ; SSE2-NEXT: pcmpgtw %xmm2, %xmm0
349 ; SSE2-NEXT: pand %xmm3, %xmm0
350 ; SSE2-NEXT: packuswb %xmm1, %xmm0
351 ; SSE2-NEXT: retq
355 ; SSE42-NEXT: pcmpgtw %xmm3, %xmm1
356 ; SSE42-NEXT: movdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
357 ; SSE42-NEXT: pshufb %xmm3, %xmm1
358 ; SSE42-NEXT: pcmpgtw %xmm2, %xmm0
359 ; SSE42-NEXT: pshufb %xmm3, %xmm0
360 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
361 ; SSE42-NEXT: retq
365 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
366 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
367 ; AVX1-NEXT: vpcmpgtw %xmm2, %xmm3, %xmm2
368 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
369 ; AVX1-NEXT: vpshufb %xmm3, %xmm2, %xmm2
370 ; AVX1-NEXT: vpcmpgtw %xmm1, %xmm0, %xmm0
371 ; AVX1-NEXT: vpshufb %xmm3, %xmm0, %xmm0
372 ; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
373 ; AVX1-NEXT: vzeroupper
374 ; AVX1-NEXT: retq
378 ; AVX2-NEXT: vpcmpgtw %ymm1, %ymm0, %ymm0
379 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
380 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
381 ; AVX2-NEXT: vpshufb %xmm2, %xmm1, %xmm1
382 ; AVX2-NEXT: vpshufb %xmm2, %xmm0, %xmm0
383 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
384 ; AVX2-NEXT: vzeroupper
385 ; AVX2-NEXT: retq
389 ; AVX512-NEXT: vpcmpgtw %ymm1, %ymm0, %ymm0
390 ; AVX512-NEXT: vpmovsxwd %ymm0, %zmm0
391 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
392 ; AVX512-NEXT: retq
400 ; SSE2-NEXT: pcmpgtb %xmm2, %xmm0
401 ; SSE2-NEXT: pcmpgtb %xmm3, %xmm1
402 ; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp)
403 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
404 ; SSE2-NEXT: andb $1, %al
405 ; SSE2-NEXT: movb %al, 2(%rdi)
406 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
407 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
408 ; SSE2-NEXT: andb $1, %al
409 ; SSE2-NEXT: movb %al, (%rdi)
410 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
411 ; SSE2-NEXT: andb $1, %al
412 ; SSE2-NEXT: movb %al, 2(%rdi)
413 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
414 ; SSE2-NEXT: andb $1, %al
415 ; SSE2-NEXT: movb %al, (%rdi)
416 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
417 ; SSE2-NEXT: andb $1, %al
418 ; SSE2-NEXT: movb %al, 2(%rdi)
419 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
420 ; SSE2-NEXT: andb $1, %al
421 ; SSE2-NEXT: movb %al, (%rdi)
422 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
423 ; SSE2-NEXT: andb $1, %al
424 ; SSE2-NEXT: movb %al, 2(%rdi)
425 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
426 ; SSE2-NEXT: andb $1, %al
427 ; SSE2-NEXT: movb %al, (%rdi)
428 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
429 ; SSE2-NEXT: andb $1, %al
430 ; SSE2-NEXT: movb %al, 2(%rdi)
431 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
432 ; SSE2-NEXT: andb $1, %al
433 ; SSE2-NEXT: movb %al, (%rdi)
434 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
435 ; SSE2-NEXT: andb $1, %al
436 ; SSE2-NEXT: movb %al, 2(%rdi)
437 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
438 ; SSE2-NEXT: andb $1, %al
439 ; SSE2-NEXT: movb %al, (%rdi)
440 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
441 ; SSE2-NEXT: andb $1, %al
442 ; SSE2-NEXT: movb %al, 2(%rdi)
443 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
444 ; SSE2-NEXT: andb $1, %al
445 ; SSE2-NEXT: movb %al, (%rdi)
446 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
447 ; SSE2-NEXT: andb $1, %al
448 ; SSE2-NEXT: movb %al, 2(%rdi)
449 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
450 ; SSE2-NEXT: andb $1, %al
451 ; SSE2-NEXT: movb %al, (%rdi)
452 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
453 ; SSE2-NEXT: andb $1, %al
454 ; SSE2-NEXT: movb %al, 2(%rdi)
455 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
456 ; SSE2-NEXT: andb $1, %al
457 ; SSE2-NEXT: movb %al, (%rdi)
458 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
459 ; SSE2-NEXT: andb $1, %al
460 ; SSE2-NEXT: movb %al, 2(%rdi)
461 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
462 ; SSE2-NEXT: andb $1, %al
463 ; SSE2-NEXT: movb %al, (%rdi)
464 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
465 ; SSE2-NEXT: andb $1, %al
466 ; SSE2-NEXT: movb %al, 2(%rdi)
467 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
468 ; SSE2-NEXT: andb $1, %al
469 ; SSE2-NEXT: movb %al, (%rdi)
470 ; SSE2-NEXT
471 ; SSE2-NEXT: andb $1, %al
472 ; SSE2-NEXT: movb %al, 2(%rdi)
473 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
474 ; SSE2-NEXT: andb $1, %al
475 ; SSE2-NEXT: movb %al, (%rdi)
476 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
477 ; SSE2-NEXT: andb $1, %al
478 ; SSE2-NEXT: movb %al, 2(%rdi)
479 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
480 ; SSE2-NEXT: andb $1, %al
481 ; SSE2-NEXT: movb %al, (%rdi)
482 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
483 ; SSE2-NEXT: andb $1, %al
484 ; SSE2-NEXT: movb %al, 2(%rdi)
485 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
486 ; SSE2-NEXT: andb $1, %al
487 ; SSE2-NEXT: movb %al, (%rdi)
488 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
489 ; SSE2-NEXT: andb $1, %al
490 ; SSE2-NEXT: movb %al, 2(%rdi)
491 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
492 ; SSE2-NEXT: andb $1, %al
493 ; SSE2-NEXT: movb %al, (%rdi)
494 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
495 ; SSE2-NEXT: andb $1, %al
496 ; SSE2-NEXT: movb %al, 2(%rdi)
497 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
498 ; SSE2-NEXT: andb $1, %al
499 ; SSE2-NEXT: movb %al, (%rdi)
500 ; SSE2-NEXT: movq %rdi, %rax
501 ; SSE2-NEXT: retq
505 ; SSE42-NEXT: pcmpgtb %xmm2, %xmm0
506 ; SSE42-NEXT: pcmpgtb %xmm3, %xmm1
507 ; SSE42-NEXT: pextrb $15, %xmm1, %eax
508 ; SSE42-NEXT: andb $1, %al
509 ; SSE42-NEXT: movb %al, 2(%rdi)
510 ; SSE42-NEXT: pextrb $14, %xmm1, %eax
511 ; SSE42-NEXT: andb $1, %al
512 ; SSE42-NEXT: movb %al, 2(%rdi)
513 ; SSE42-NEXT: pextrb $13, %xmm1, %eax
514 ; SSE42-NEXT: andb $1, %al
515 ; SSE42-NEXT: movb %al, 2(%rdi)
516 ; SSE42-NEXT: pextrb $12, %xmm1, %eax
517 ; SSE42-NEXT: andb $1, %al
518 ; SSE42-NEXT: movb %al, 2(%rdi)
519 ; SSE42-NEXT: pextrb $11, %xmm1, %eax
520 ; SSE42-NEXT: andb $1, %al
521 ; SSE42-NEXT: movb %al, 2(%rdi)
522 ; SSE42-NEXT: pextrb $10, %xmm1, %eax
523 ; SSE42-NEXT: andb $1, %al
524 ; SSE42-NEXT: movb %al, 2(%rdi)
525 ; SSE42-NEXT: pextrb $9, %xmm1, %eax
526 ; SSE42-NEXT: andb $1, %al
527 ; SSE42-NEXT: movb %al, 2(%rdi)
528 ; SSE42-NEXT: pextrb $8, %xmm1, %eax
529 ; SSE42-NEXT: andb $1, %al
530 ; SSE42-NEXT: movb %al, 2(%rdi)
531 ; SSE42-NEXT: pextrb $7, %xmm1, %eax
532 ; SSE42-NEXT: andb $1, %al
533 ; SSE42-NEXT: movb %al, 2(%rdi)
534 ; SSE42-NEXT: pextrb $6, %xmm1, %eax
535 ; SSE42-NEXT: andb $1, %al
536 ; SSE42-NEXT: movb %al, 2(%rdi)
537 ; SSE42-NEXT: pextrb $5, %xmm1, %eax
538 ; SSE42-NEXT: andb $1, %al
539 ; SSE42-NEXT: movb %al, 2(%rdi)
540 ; SSE42-NEXT: pextrb $4, %xmm1, %eax
541 ; SSE42-NEXT: andb $1, %al
542 ; SSE42-NEXT: movb %al, 2(%rdi)
543 ; SSE42-NEXT: pextrb $3, %xmm1, %eax
544 ; SSE42-NEXT: andb $1, %al
545 ; SSE42-NEXT: movb %al, 2(%rdi)
546 ; SSE42-NEXT: pextrb $2, %xmm1, %eax
547 ; SSE42-NEXT: andb $1, %al
548 ; SSE42-NEXT: movb %al, 2(%rdi)
549 ; SSE42-NEXT: pextrb $1, %xmm1, %eax
550 ; SSE42-NEXT: andb $1, %al
551 ; SSE42-NEXT: movb %al, 2(%rdi)
552 ; SSE42-NEXT: pextrb $0, %xmm1, %eax
553 ; SSE42-NEXT: andb $1, %al
554 ; SSE42-NEXT: movb %al, 2(%rdi)
555 ; SSE42-NEXT: pextrb $15, %xmm0, %eax
556 ; SSE42-NEXT: andb $1, %al
557 ; SSE42-NEXT: movb %al, (%rdi)
558 ; SSE42-NEXT: pextrb $14, %xmm0, %eax
559 ; SSE42-NEXT: andb $1, %al
560 ; SSE42-NEXT: movb %al, (%rdi)
561 ; SSE42-NEXT: pextrb $13, %xmm0, %eax
562 ; SSE42-NEXT: andb $1, %al
563 ; SSE42-NEXT: movb %al, (%rdi)
564 ; SSE42-NEXT: pextrb $12, %xmm0, %eax
565 ; SSE42-NEXT: andb $1, %al
566 ; SSE42-NEXT: movb %al, (%rdi)
567 ; SSE42-NEXT: pextrb $11, %xmm0, %eax
568 ; SSE42-NEXT: andb $1, %al
569 ; SSE42-NEXT: movb %al, (%rdi)
570 ; SSE42-NEXT: pextrb $10, %xmm0, %eax
571 ; SSE42-NEXT: andb $1, %al
572 ; SSE42-NEXT: movb %al, (%rdi)
573 ; SSE42-NEXT: pextrb $9, %xmm0, %eax
574 ; SSE42-NEXT: andb $1, %al
575 ; SSE42-NEXT: movb %al, (%rdi)
576 ; SSE42-NEXT: pextrb $8, %xmm0, %eax
577 ; SSE42-NEXT: andb $1, %al
578 ; SSE42-NEXT: movb %al, (%rdi)
579 ; SSE42-NEXT: pextrb $7, %xmm0, %eax
580 ; SSE42-NEXT: andb $1, %al
581 ; SSE42-NEXT: movb %al, (%rdi)
582 ; SSE42-NEXT: pextrb $6, %xmm0, %eax
583 ; SSE42-NEXT: andb $1, %al
584 ; SSE42-NEXT: movb %al, (%rdi)
585 ; SSE42-NEXT: pextrb $5, %xmm0, %eax
586 ; SSE42-NEXT: andb $1, %al
587 ; SSE42-NEXT: movb %al, (%rdi)
588 ; SSE42-NEXT: pextrb $4, %xmm0, %eax
589 ; SSE42-NEXT: andb $1, %al
590 ; SSE42-NEXT: movb %al, (%rdi)
591 ; SSE42-NEXT: pextrb $3, %xmm0, %eax
592 ; SSE42-NEXT: andb $1, %al
593 ; SSE42-NEXT: movb %al, (%rdi)
594 ; SSE42-NEXT: pextrb $2, %xmm0, %eax
595 ; SSE42-NEXT: andb $1, %al
596 ; SSE42-NEXT: movb %al, (%rdi)
597 ; SSE42-NEXT: pextrb $1, %xmm0, %eax
598 ; SSE42-NEXT: andb $1, %al
599 ; SSE42-NEXT: movb %al, (%rdi)
600 ; SSE42-NEXT: pextrb $0, %xmm0, %eax
601 ; SSE42-NEXT: andb $1, %al
602 ; SSE42-NEXT: movb %al, (%rdi)
603 ; SSE42-NEXT: movq %rdi, %rax
604 ; SSE42-NEXT: retq
608 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
609 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
610 ; AVX1-NEXT: vpcmpgtb %xmm2, %xmm3, %xmm2
611 ; AVX1-NEXT: vpcmpgtb %xmm1, %xmm0, %xmm0
612 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
613 ; AVX1-NEXT: retq
617 ; AVX2-NEXT: vpcmpgtb %ymm1, %ymm0, %ymm0
618 ; AVX2-NEXT: retq
622 ; AVX512-NEXT: vpcmpgtb %ymm1, %ymm0, %ymm0
623 ; AVX512-NEXT: retq
635 ; SSE2-NEXT: cmpltpd %xmm3, %xmm7
636 ; SSE2-NEXT: cmpltpd %xmm1, %xmm5
637 ; SSE2-NEXT: pextrw $4, %xmm5, %eax
638 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm7[0],xmm5[1],xmm7[1],xmm5[2],xmm7[2],xmm5[3],xmm7[3]
639 ; SSE2-NEXT: cmpltpd %xmm2, %xmm6
640 ; SSE2-NEXT: cmpltpd %xmm0, %xmm4
641 ; SSE2-NEXT: pextrw $4, %xmm4, %ecx
642 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3]
643 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3]
644 ; SSE2-NEXT: pextrw $4, %xmm7, %edx
645 ; SSE2-NEXT: movd %edx, %xmm0
646 ; SSE2-NEXT: movd %eax, %xmm1
647 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
648 ; SSE2-NEXT: pextrw $4, %xmm6, %eax
649 ; SSE2-NEXT: movd %eax, %xmm0
650 ; SSE2-NEXT: movd %ecx, %xmm2
651 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
652 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
653 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3]
654 ; SSE2-NEXT: movdqa %xmm4, %xmm0
655 ; SSE2-NEXT: retq
659 ; SSE42-NEXT: cmpltpd %xmm3, %xmm7
660 ; SSE42-NEXT: xorpd %xmm3, %xmm3
661 ; SSE42-NEXT: pblendw {{.*#+}} xmm7 = xmm7[0],xmm3[1,2,3],xmm7[4],xmm3[5,6,7]
662 ; SSE42-NEXT: cmpltpd %xmm2, %xmm6
663 ; SSE42-NEXT: pblendw {{.*#+}} xmm6 = xmm6[0],xmm3[1,2,3],xmm6[4],xmm3[5,6,7]
664 ; SSE42-NEXT: packusdw %xmm7, %xmm6
665 ; SSE42-NEXT: cmpltpd %xmm1, %xmm5
666 ; SSE42-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0],xmm3[1,2,3],xmm5[4],xmm3[5,6,7]
667 ; SSE42-NEXT: cmpltpd %xmm0, %xmm4
668 ; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm4[0],xmm3[1,2,3],xmm4[4],xmm3[5,6,7]
669 ; SSE42-NEXT: packusdw %xmm5, %xmm3
670 ; SSE42-NEXT: packusdw %xmm6, %xmm3
671 ; SSE42-NEXT: movdqa %xmm3, %xmm0
672 ; SSE42-NEXT: retq
676 ; AVX1-NEXT: vcmpltpd %ymm1, %ymm3, %ymm1
677 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
678 ; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
679 ; AVX1-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm4[1,2,3],xmm3[4],xmm4[5,6,7]
680 ; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm4[1,2,3],xmm1[4],xmm4[5,6,7]
681 ; AVX1-NEXT: vpackusdw %xmm3, %xmm1, %xmm1
682 ; AVX1-NEXT: vcmpltpd %ymm0, %ymm2, %ymm0
683 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
684 ; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm2[0],xmm4[1,2,3],xmm2[4],xmm4[5,6,7]
685 ; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm4[1,2,3],xmm0[4],xmm4[5,6,7]
686 ; AVX1-NEXT: vpackusdw %xmm2, %xmm0, %xmm0
687 ; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
688 ; AVX1-NEXT: vzeroupper
689 ; AVX1-NEXT: retq
693 ; AVX2-NEXT: vcmpltpd %ymm0, %ymm2, %ymm0
694 ; AVX2-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
695 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
696 ; AVX2-NEXT: vcmpltpd %ymm1, %ymm3, %ymm1
697 ; AVX2-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[0,2,0,2,4,6,4,6]
698 ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,3,2,3]
699 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
700 ; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17,20,21,24,25,28,29],zero,zero,zero,zero,zero,zero,zero,zero
701 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
702 ; AVX2-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
703 ; AVX2-NEXT: vzeroupper
704 ; AVX2-NEXT: retq
708 ; AVX512-NEXT: vcmpltpd %zmm0, %zmm1, %k1
709 ; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
710 ; AVX512-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z}
711 ; AVX512-NEXT: vpmovqw %zmm0, %xmm0
712 ; AVX512-NEXT: retq
720 ; SSE-NEXT: cmpltps %xmm3, %xmm7
721 ; SSE-NEXT: movaps {{.*#+}} xmm3 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
722 ; SSE-NEXT: andps %xmm3, %xmm7
723 ; SSE-NEXT: cmpltps %xmm2, %xmm6
724 ; SSE-NEXT: andps %xmm3, %xmm6
725 ; SSE-NEXT: packuswb %xmm7, %xmm6
726 ; SSE-NEXT: cmpltps %xmm1, %xmm5
727 ; SSE-NEXT: andps %xmm3, %xmm5
728 ; SSE-NEXT: cmpltps %xmm0, %xmm4
729 ; SSE-NEXT: andps %xmm4, %xmm3
730 ; SSE-NEXT: packuswb %xmm5, %xmm3
731 ; SSE-NEXT: packuswb %xmm6, %xmm3
732 ; SSE-NEXT: movdqa %xmm3, %xmm0
733 ; SSE-NEXT: retq
737 ; AVX1-NEXT: vcmpltps %ymm1, %ymm3, %ymm1
738 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
739 ; AVX1-NEXT: vmovaps {{.*#+}} xmm4 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
740 ; AVX1-NEXT: vandps %xmm4, %xmm3, %xmm3
741 ; AVX1-NEXT: vandps %xmm4, %xmm1, %xmm1
742 ; AVX1-NEXT: vpackuswb %xmm3, %xmm1, %xmm1
743 ; AVX1-NEXT: vcmpltps %ymm0, %ymm2, %ymm0
744 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
745 ; AVX1-NEXT: vandps %xmm4, %xmm2, %xmm2
746 ; AVX1-NEXT: vandps %xmm4, %xmm0, %xmm0
747 ; AVX1-NEXT: vpackuswb %xmm2, %xmm0, %xmm0
748 ; AVX1-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
749 ; AVX1-NEXT: vzeroupper
750 ; AVX1-NEXT: retq
754 ; AVX2-NEXT: vcmpltps %ymm1, %ymm3, %ymm1
755 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
756 ; AVX2-NEXT: vpshufb %ymm3, %ymm1, %ymm1
757 ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]
758 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
759 ; AVX2-NEXT: vpshufb %xmm4, %xmm1, %xmm1
760 ; AVX2-NEXT: vcmpltps %ymm0, %ymm2, %ymm0
761 ; AVX2-NEXT: vpshufb %ymm3, %ymm0, %ymm0
762 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
763 ; AVX2-NEXT: vpshufb %xmm4, %xmm0, %xmm0
764 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
765 ; AVX2-NEXT: vzeroupper
766 ; AVX2-NEXT: retq
770 ; AVX512-NEXT: vcmpltps %zmm0, %zmm1, %k1
771 ; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
772 ; AVX512-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z}
773 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
774 ; AVX512-NEXT: retq
782 ; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0]
783 ; SSE2-NEXT: pxor %xmm8, %xmm7
784 ; SSE2-NEXT: pxor %xmm8, %xmm3
785 ; SSE2-NEXT: movdqa %xmm3, %xmm9
786 ; SSE2-NEXT: pcmpgtd %xmm7, %xmm9
787 ; SSE2-NEXT: pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]
788 ; SSE2-NEXT: pcmpeqd %xmm7, %xmm3
789 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm3[1,1,3,3]
790 ; SSE2-NEXT: pand %xmm10, %xmm7
791 ; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm9[1,1,3,3]
792 ; SSE2-NEXT: por %xmm7, %xmm9
793 ; SSE2-NEXT: pxor %xmm8, %xmm5
794 ; SSE2-NEXT: pxor %xmm8, %xmm1
795 ; SSE2-NEXT: movdqa %xmm1, %xmm7
796 ; SSE2-NEXT: pcmpgtd %xmm5, %xmm7
797 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm7[0,0,2,2]
798 ; SSE2-NEXT: pcmpeqd %xmm5, %xmm1
799 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
800 ; SSE2-NEXT: pand %xmm3, %xmm5
801 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm7[1,1,3,3]
802 ; SSE2-NEXT: por %xmm5, %xmm1
803 ; SSE2-NEXT: pextrw $4, %xmm1, %eax
804 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm9[0],xmm1[1],xmm9[1],xmm1[2],xmm9[2],xmm1[3],xmm9[3]
805 ; SSE2-NEXT: pxor %xmm8, %xmm6
806 ; SSE2-NEXT: pxor %xmm8, %xmm2
807 ; SSE2-NEXT: movdqa %xmm2, %xmm3
808 ; SSE2-NEXT: pcmpgtd %xmm6, %xmm3
809 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm3[0,0,2,2]
810 ; SSE2-NEXT: pcmpeqd %xmm6, %xmm2
811 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
812 ; SSE2-NEXT: pand %xmm5, %xmm2
813 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
814 ; SSE2-NEXT: por %xmm2, %xmm3
815 ; SSE2-NEXT: pxor %xmm8, %xmm4
816 ; SSE2-NEXT: pxor %xmm8, %xmm0
817 ; SSE2-NEXT: movdqa %xmm0, %xmm2
818 ; SSE2-NEXT: pcmpgtd %xmm4, %xmm2
819 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm2[0,0,2,2]
820 ; SSE2-NEXT: pcmpeqd %xmm4, %xmm0
821 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
822 ; SSE2-NEXT: pand %xmm5, %xmm4
823 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[1,1,3,3]
824 ; SSE2-NEXT: por %xmm4, %xmm0
825 ; SSE2-NEXT: pextrw $4, %xmm9, %ecx
826 ; SSE2-NEXT: movd %ecx, %xmm2
827 ; SSE2-NEXT: pextrw $4, %xmm0, %ecx
828 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
829 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
830 ; SSE2-NEXT: movd %eax, %xmm1
831 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
832 ; SSE2-NEXT: pextrw $4, %xmm3, %eax
833 ; SSE2-NEXT: movd %eax, %xmm2
834 ; SSE2-NEXT: movd %ecx, %xmm3
835 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
836 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
837 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
838 ; SSE2-NEXT: retq
842 ; SSE42-NEXT: pcmpgtq %xmm7, %xmm3
843 ; SSE42-NEXT: pxor %xmm7, %xmm7
844 ; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm3[0],xmm7[1,2,3],xmm3[4],xmm7[5,6,7]
845 ; SSE42-NEXT: pcmpgtq %xmm6, %xmm2
846 ; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0],xmm7[1,2,3],xmm2[4],xmm7[5,6,7]
847 ; SSE42-NEXT: packusdw %xmm3, %xmm2
848 ; SSE42-NEXT: pcmpgtq %xmm5, %xmm1
849 ; SSE42-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0],xmm7[1,2,3],xmm1[4],xmm7[5,6,7]
850 ; SSE42-NEXT: pcmpgtq %xmm4, %xmm0
851 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0],xmm7[1,2,3],xmm0[4],xmm7[5,6,7]
852 ; SSE42-NEXT: packusdw %xmm1, %xmm0
853 ; SSE42-NEXT: packusdw %xmm2, %xmm0
854 ; SSE42-NEXT: retq
858 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
859 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
860 ; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4
861 ; AVX1-NEXT: vpxor %xmm5, %xmm5, %xmm5
862 ; AVX1-NEXT: vpblendw {{.*#+}} xmm4 = xmm4[0],xmm5[1,2,3],xmm4[4],xmm5[5,6,7]
863 ; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm1
864 ; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm1[0],xmm5[1,2,3],xmm1[4],xmm5[5,6,7]
865 ; AVX1-NEXT: vpackusdw %xmm4, %xmm1, %xmm1
866 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3
867 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
868 ; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3
869 ; AVX1-NEXT: vpblendw {{.*#+}} xmm3 = xmm3[0],xmm5[1,2,3],xmm3[4],xmm5[5,6,7]
870 ; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm0
871 ; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0],xmm5[1,2,3],xmm0[4],xmm5[5,6,7]
872 ; AVX1-NEXT: vpackusdw %xmm3, %xmm0, %xmm0
873 ; AVX1-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
874 ; AVX1-NEXT: vzeroupper
875 ; AVX1-NEXT: retq
879 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm0, %ymm0
880 ; AVX2-NEXT
881 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
882 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm1, %ymm1
883 ; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,2,0,2,4,6,4,6]
884 ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,3,2,3]
885 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
886 ; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,1,4,5,8,9,12,13],zero,zero,zero,zero,zero,zero,zero,zero,ymm0[16,17,20,21,24,25,28,29],zero,zero,zero,zero,zero,zero,zero,zero
887 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
888 ; AVX2-NEXT: # kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
889 ; AVX2-NEXT: vzeroupper
890 ; AVX2-NEXT: retq
894 ; AVX512-NEXT: vpcmpgtq %zmm1, %zmm0, %k1
895 ; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
896 ; AVX512-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z}
897 ; AVX512-NEXT: vpmovqw %zmm0, %xmm0
898 ; AVX512-NEXT: retq
906 ; SSE-NEXT: pcmpgtd %xmm7, %xmm3
907 ; SSE-NEXT: movdqa {{.*#+}} xmm7 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
908 ; SSE-NEXT: pand %xmm7, %xmm3
909 ; SSE-NEXT: pcmpgtd %xmm6, %xmm2
910 ; SSE-NEXT: pand %xmm7, %xmm2
911 ; SSE-NEXT: packuswb %xmm3, %xmm2
912 ; SSE-NEXT: pcmpgtd %xmm5, %xmm1
913 ; SSE-NEXT: pand %xmm7, %xmm1
914 ; SSE-NEXT: pcmpgtd %xmm4, %xmm0
915 ; SSE-NEXT: pand %xmm7, %xmm0
916 ; SSE-NEXT: packuswb %xmm1, %xmm0
917 ; SSE-NEXT: packuswb %xmm2, %xmm0
918 ; SSE-NEXT: retq
922 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
923 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
924 ; AVX1-NEXT: vpcmpgtd %xmm4, %xmm5, %xmm4
925 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
926 ; AVX1-NEXT: vpand %xmm5, %xmm4, %xmm4
927 ; AVX1-NEXT: vpcmpgtd %xmm3, %xmm1, %xmm1
928 ; AVX1-NEXT: vpand %xmm5, %xmm1, %xmm1
929 ; AVX1-NEXT: vpackuswb %xmm4, %xmm1, %xmm1
930 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3
931 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
932 ; AVX1-NEXT: vpcmpgtd %xmm3, %xmm4, %xmm3
933 ; AVX1-NEXT: vpand %xmm5, %xmm3, %xmm3
934 ; AVX1-NEXT: vpcmpgtd %xmm2, %xmm0, %xmm0
935 ; AVX1-NEXT: vpand %xmm5, %xmm0, %xmm0
936 ; AVX1-NEXT: vpackuswb %xmm3, %xmm0, %xmm0
937 ; AVX1-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
938 ; AVX1-NEXT: vzeroupper
939 ; AVX1-NEXT: retq
943 ; AVX2-NEXT: vpcmpgtd %ymm3, %ymm1, %ymm1
944 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
945 ; AVX2-NEXT: vpshufb %ymm3, %ymm1, %ymm1
946 ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]
947 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
948 ; AVX2-NEXT: vpshufb %xmm4, %xmm1, %xmm1
949 ; AVX2-NEXT: vpcmpgtd %ymm2, %ymm0, %ymm0
950 ; AVX2-NEXT: vpshufb %ymm3, %ymm0, %ymm0
951 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
952 ; AVX2-NEXT: vpshufb %xmm4, %xmm0, %xmm0
953 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
954 ; AVX2-NEXT: vzeroupper
955 ; AVX2-NEXT: retq
959 ; AVX512-NEXT: vpcmpgtd %zmm1, %zmm0, %k1
960 ; AVX512-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
961 ; AVX512-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z}
962 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
963 ; AVX512-NEXT: retq
971 ; SSE2-NEXT: pcmpgtw %xmm5, %xmm1
972 ; SSE2-NEXT: movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255]
973 ; SSE2-NEXT: pand %xmm5, %xmm1
974 ; SSE2-NEXT: pcmpgtw %xmm4, %xmm0
975 ; SSE2-NEXT: pand %xmm5, %xmm0
976 ; SSE2-NEXT: packuswb %xmm1, %xmm0
977 ; SSE2-NEXT: pcmpgtw %xmm7, %xmm3
978 ; SSE2-NEXT: pand %xmm5, %xmm3
979 ; SSE2-NEXT: pcmpgtw %xmm6, %xmm2
980 ; SSE2-NEXT: pand %xmm5, %xmm2
981 ; SSE2-NEXT: packuswb %xmm3, %xmm2
982 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp)
983 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
984 ; SSE2-NEXT: andb $1, %al
985 ; SSE2-NEXT: movb %al, 2(%rdi)
986 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
987 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
988 ; SSE2-NEXT: andb $1, %al
989 ; SSE2-NEXT: movb %al, (%rdi)
990 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
991 ; SSE2-NEXT: andb $1, %al
992 ; SSE2-NEXT: movb %al, 2(%rdi)
993 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
994 ; SSE2-NEXT: andb $1, %al
995 ; SSE2-NEXT: movb %al, (%rdi)
996 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
997 ; SSE2-NEXT: andb $1, %al
998 ; SSE2-NEXT: movb %al, 2(%rdi)
999 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1000 ; SSE2-NEXT: andb $1, %al
1001 ; SSE2-NEXT: movb %al, (%rdi)
1002 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1003 ; SSE2-NEXT: andb $1, %al
1004 ; SSE2-NEXT: movb %al, 2(%rdi)
1005 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1006 ; SSE2-NEXT: andb $1, %al
1007 ; SSE2-NEXT: movb %al, (%rdi)
1008 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1009 ; SSE2-NEXT: andb $1, %al
1010 ; SSE2-NEXT: movb %al, 2(%rdi)
1011 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1012 ; SSE2-NEXT: andb $1, %al
1013 ; SSE2-NEXT: movb %al, (%rdi)
1014 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1015 ; SSE2-NEXT: andb $1, %al
1016 ; SSE2-NEXT: movb %al, 2(%rdi)
1017 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1018 ; SSE2-NEXT: andb $1, %al
1019 ; SSE2-NEXT: movb %al, (%rdi)
1020 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1021 ; SSE2-NEXT: andb $1, %al
1022 ; SSE2-NEXT: movb %al, 2(%rdi)
1023 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1024 ; SSE2-NEXT: andb $1, %al
1025 ; SSE2-NEXT: movb %al, (%rdi)
1026 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1027 ; SSE2-NEXT: andb $1, %al
1028 ; SSE2-NEXT: movb %al, 2(%rdi)
1029 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1030 ; SSE2-NEXT: andb $1, %al
1031 ; SSE2-NEXT: movb %al, (%rdi)
1032 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1033 ; SSE2-NEXT: andb $1, %al
1034 ; SSE2-NEXT: movb %al, 2(%rdi)
1035 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1036 ; SSE2-NEXT: andb $1, %al
1037 ; SSE2-NEXT: movb %al, (%rdi)
1038 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1039 ; SSE2-NEXT: andb $1, %al
1040 ; SSE2-NEXT: movb %al, 2(%rdi)
1041 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1042 ; SSE2-NEXT: andb $1, %al
1043 ; SSE2-NEXT: movb %al, (%rdi)
1044 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1045 ; SSE2-NEXT: andb $1, %al
1046 ; SSE2-NEXT: movb %al, 2(%rdi)
1047 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1048 ; SSE2-NEXT: andb $1, %al
1049 ; SSE2-NEXT: movb %al, (%rdi)
1050 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1051 ; SSE2-NEXT: andb $1, %al
1052 ; SSE2-NEXT: movb %al, 2(%rdi)
1053 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1054 ; SSE2-NEXT: andb $1, %al
1055 ; SSE2-NEXT: movb %al, (%rdi)
1056 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1057 ; SSE2-NEXT: andb $1, %al
1058 ; SSE2-NEXT: movb %al, 2(%rdi)
1059 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1060 ; SSE2-NEXT: andb $1, %al
1061 ; SSE2-NEXT: movb %al, (%rdi)
1062 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1063 ; SSE2-NEXT: andb $1, %al
1064 ; SSE2-NEXT: movb %al, 2(%rdi)
1065 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1066 ; SSE2-NEXT: andb $1, %al
1067 ; SSE2-NEXT: movb %al, (%rdi)
1068 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1069 ; SSE2-NEXT: andb $1, %al
1070 ; SSE2-NEXT: movb %al, 2(%rdi)
1071 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1072 ; SSE2-NEXT: andb $1, %al
1073 ; SSE2-NEXT: movb %al, (%rdi)
1074 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1075 ; SSE2-NEXT: andb $1, %al
1076 ; SSE2-NEXT: movb %al, 2(%rdi)
1077 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1078 ; SSE2-NEXT: andb $1, %al
1079 ; SSE2-NEXT: movb %al, (%rdi)
1080 ; SSE2-NEXT: movq %rdi, %rax
1081 ; SSE2-NEXT: retq
1085 ; SSE42-NEXT: pcmpgtw %xmm5, %xmm1
1086 ; SSE42-NEXT: movdqa {{.*#+}} xmm5 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
1087 ; SSE42-NEXT: pshufb %xmm5, %xmm1
1088 ; SSE42-NEXT: pcmpgtw %xmm4, %xmm0
1089 ; SSE42-NEXT: pshufb %xmm5, %xmm0
1090 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1091 ; SSE42-NEXT: pcmpgtw %xmm7, %xmm3
1092 ; SSE42-NEXT: pshufb %xmm5, %xmm3
1093 ; SSE42-NEXT: pcmpgtw %xmm6, %xmm2
1094 ; SSE42-NEXT: pshufb %xmm5, %xmm2
1095 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
1096 ; SSE42-NEXT: pextrb $15, %xmm2, %eax
1097 ; SSE42-NEXT: andb $1, %al
1098 ; SSE42-NEXT: movb %al, 2(%rdi)
1099 ; SSE42-NEXT: pextrb $14, %xmm2, %eax
1100 ; SSE42-NEXT: andb $1, %al
1101 ; SSE42-NEXT: movb %al, 2(%rdi)
1102 ; SSE42-NEXT: pextrb $13, %xmm2, %eax
1103 ; SSE42-NEXT: andb $1, %al
1104 ; SSE42-NEXT: movb %al, 2(%rdi)
1105 ; SSE42-NEXT: pextrb $12, %xmm2, %eax
1106 ; SSE42-NEXT: andb $1, %al
1107 ; SSE42-NEXT: movb %al, 2(%rdi)
1108 ; SSE42-NEXT: pextrb $11, %xmm2, %eax
1109 ; SSE42-NEXT: andb $1, %al
1110 ; SSE42-NEXT: movb %al, 2(%rdi)
1111 ; SSE42-NEXT: pextrb $10, %xmm2, %eax
1112 ; SSE42-NEXT: andb $1, %al
1113 ; SSE42-NEXT: movb %al, 2(%rdi)
1114 ; SSE42-NEXT: pextrb $9, %xmm2, %eax
1115 ; SSE42-NEXT: andb $1, %al
1116 ; SSE42-NEXT: movb %al, 2(%rdi)
1117 ; SSE42-NEXT: pextrb $8, %xmm2, %eax
1118 ; SSE42-NEXT: andb $1, %al
1119 ; SSE42-NEXT: movb %al, 2(%rdi)
1120 ; SSE42-NEXT: pextrb $7, %xmm2, %eax
1121 ; SSE42-NEXT: andb $1, %al
1122 ; SSE42-NEXT: movb %al, 2(%rdi)
1123 ; SSE42-NEXT: pextrb $6, %xmm2, %eax
1124 ; SSE42-NEXT: andb $1, %al
1125 ; SSE42-NEXT: movb %al, 2(%rdi)
1126 ; SSE42-NEXT: pextrb $5, %xmm2, %eax
1127 ; SSE42-NEXT: andb $1, %al
1128 ; SSE42-NEXT: movb %al, 2(%rdi)
1129 ; SSE42-NEXT: pextrb $4, %xmm2, %eax
1130 ; SSE42-NEXT: andb $1, %al
1131 ; SSE42-NEXT: movb %al, 2(%rdi)
1132 ; SSE42-NEXT: pextrb $3, %xmm2, %eax
1133 ; SSE42-NEXT: andb $1, %al
1134 ; SSE42-NEXT: movb %al, 2(%rdi)
1135 ; SSE42-NEXT: pextrb $2, %xmm2, %eax
1136 ; SSE42-NEXT: andb $1, %al
1137 ; SSE42-NEXT: movb %al, 2(%rdi)
1138 ; SSE42-NEXT: pextrb $1, %xmm2, %eax
1139 ; SSE42-NEXT: andb $1, %al
1140 ; SSE42-NEXT: movb %al, 2(%rdi)
1141 ; SSE42-NEXT: pextrb $0, %xmm2, %eax
1142 ; SSE42-NEXT: andb $1, %al
1143 ; SSE42-NEXT: movb %al, 2(%rdi)
1144 ; SSE42-NEXT: pextrb $15, %xmm0, %eax
1145 ; SSE42-NEXT: andb $1, %al
1146 ; SSE42-NEXT: movb %al, (%rdi)
1147 ; SSE42-NEXT: pextrb $14, %xmm0, %eax
1148 ; SSE42-NEXT: andb $1, %al
1149 ; SSE42-NEXT: movb %al, (%rdi)
1150 ; SSE42-NEXT: pextrb $13, %xmm0, %eax
1151 ; SSE42-NEXT: andb $1, %al
1152 ; SSE42-NEXT: movb %al, (%rdi)
1153 ; SSE42-NEXT: pextrb $12, %xmm0, %eax
1154 ; SSE42-NEXT: andb $1, %al
1155 ; SSE42-NEXT: movb %al, (%rdi)
1156 ; SSE42-NEXT: pextrb $11, %xmm0, %eax
1157 ; SSE42-NEXT: andb $1, %al
1158 ; SSE42-NEXT: movb %al, (%rdi)
1159 ; SSE42-NEXT: pextrb $10, %xmm0, %eax
1160 ; SSE42-NEXT: andb $1, %al
1161 ; SSE42-NEXT: movb %al, (%rdi)
1162 ; SSE42-NEXT: pextrb $9, %xmm0, %eax
1163 ; SSE42-NEXT: andb $1, %al
1164 ; SSE42-NEXT: movb %al, (%rdi)
1165 ; SSE42-NEXT: pextrb $8, %xmm0, %eax
1166 ; SSE42-NEXT: andb $1, %al
1167 ; SSE42-NEXT: movb %al, (%rdi)
1168 ; SSE42-NEXT: pextrb $7, %xmm0, %eax
1169 ; SSE42-NEXT: andb $1, %al
1170 ; SSE42-NEXT: movb %al, (%rdi)
1171 ; SSE42-NEXT: pextrb $6, %xmm0, %eax
1172 ; SSE42-NEXT: andb $1, %al
1173 ; SSE42-NEXT: movb %al, (%rdi)
1174 ; SSE42-NEXT: pextrb $5, %xmm0, %eax
1175 ; SSE42-NEXT: andb $1, %al
1176 ; SSE42-NEXT: movb %al, (%rdi)
1177 ; SSE42-NEXT: pextrb $4, %xmm0, %eax
1178 ; SSE42-NEXT: andb $1, %al
1179 ; SSE42-NEXT: movb %al, (%rdi)
1180 ; SSE42-NEXT: pextrb $3, %xmm0, %eax
1181 ; SSE42-NEXT: andb $1, %al
1182 ; SSE42-NEXT: movb %al, (%rdi)
1183 ; SSE42-NEXT: pextrb $2, %xmm0, %eax
1184 ; SSE42-NEXT: andb $1, %al
1185 ; SSE42-NEXT: movb %al, (%rdi)
1186 ; SSE42-NEXT: pextrb $1, %xmm0, %eax
1187 ; SSE42-NEXT: andb $1, %al
1188 ; SSE42-NEXT: movb %al, (%rdi)
1189 ; SSE42-NEXT: pextrb $0, %xmm0, %eax
1190 ; SSE42-NEXT: andb $1, %al
1191 ; SSE42-NEXT: movb %al, (%rdi)
1192 ; SSE42-NEXT: movq %rdi, %rax
1193 ; SSE42-NEXT: retq
1197 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
1198 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
1199 ; AVX1-NEXT: vpcmpgtw %xmm4, %xmm5, %xmm4
1200 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
1201 ; AVX1-NEXT: vpshufb %xmm5, %xmm4, %xmm4
1202 ; AVX1-NEXT: vpcmpgtw %xmm3, %xmm1, %xmm1
1203 ; AVX1-NEXT: vpshufb %xmm5, %xmm1, %xmm1
1204 ; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm4[0]
1205 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3
1206 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
1207 ; AVX1-NEXT: vpcmpgtw %xmm3, %xmm4, %xmm3
1208 ; AVX1-NEXT: vpshufb %xmm5, %xmm3, %xmm3
1209 ; AVX1-NEXT: vpcmpgtw %xmm2, %xmm0, %xmm0
1210 ; AVX1-NEXT: vpshufb %xmm5, %xmm0, %xmm0
1211 ; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm3[0]
1212 ; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
1213 ; AVX1-NEXT: retq
1217 ; AVX2-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1
1218 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
1219 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
1220 ; AVX2-NEXT: vpshufb %xmm4, %xmm3, %xmm3
1221 ; AVX2-NEXT: vpshufb %xmm4, %xmm1, %xmm1
1222 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0]
1223 ; AVX2-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0
1224 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
1225 ; AVX2-NEXT: vpshufb %xmm4, %xmm2, %xmm2
1226 ; AVX2-NEXT: vpshufb %xmm4, %xmm0, %xmm0
1227 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1228 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
1229 ; AVX2-NEXT: retq
1233 ; AVX512-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0
1234 ; AVX512-NEXT: vpmovsxwd %ymm0, %zmm0
1235 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
1236 ; AVX512-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1
1237 ; AVX512-NEXT: vpmovsxwd %ymm1, %zmm1
1238 ; AVX512-NEXT: vpmovdb %zmm1, %xmm1
1239 ; AVX512-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
1240 ; AVX512-NEXT: retq
1248 ; SSE2-NEXT: pcmpgtb %xmm4, %xmm0
1249 ; SSE2-NEXT: pcmpgtb %xmm5, %xmm1
1250 ; SSE2-NEXT: pcmpgtb %xmm6, %xmm2
1251 ; SSE2-NEXT: pcmpgtb %xmm7, %xmm3
1252 ; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp)
1253 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1254 ; SSE2-NEXT: andb $1, %al
1255 ; SSE2-NEXT: movb %al, 6(%rdi)
1256 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp)
1257 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1258 ; SSE2-NEXT: andb $1, %al
1259 ; SSE2-NEXT: movb %al, 4(%rdi)
1260 ; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp)
1261 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1262 ; SSE2-NEXT: andb $1, %al
1263 ; SSE2-NEXT: movb %al, 2(%rdi)
1264 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
1265 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1266 ; SSE2-NEXT: andb $1, %al
1267 ; SSE2-NEXT: movb %al, (%rdi)
1268 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1269 ; SSE2-NEXT: andb $1, %al
1270 ; SSE2-NEXT: movb %al, 6(%rdi)
1271 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1272 ; SSE2-NEXT: andb $1, %al
1273 ; SSE2-NEXT: movb %al, 4(%rdi)
1274 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1275 ; SSE2-NEXT: andb $1, %al
1276 ; SSE2-NEXT: movb %al, 2(%rdi)
1277 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1278 ; SSE2-NEXT: andb $1, %al
1279 ; SSE2-NEXT: movb %al, (%rdi)
1280 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1281 ; SSE2-NEXT: andb $1, %al
1282 ; SSE2-NEXT: movb %al, 6(%rdi)
1283 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1284 ; SSE2-NEXT: andb $1, %al
1285 ; SSE2-NEXT: movb %al, 4(%rdi)
1286 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1287 ; SSE2-NEXT: andb $1, %al
1288 ; SSE2-NEXT: movb %al, 2(%rdi)
1289 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1290 ; SSE2-NEXT: andb $1, %al
1291 ; SSE2-NEXT: movb %al, (%rdi)
1292 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1293 ; SSE2-NEXT: andb $1, %al
1294 ; SSE2-NEXT: movb %al, 6(%rdi)
1295 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1296 ; SSE2-NEXT: andb $1, %al
1297 ; SSE2-NEXT: movb %al, 4(%rdi)
1298 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1299 ; SSE2-NEXT: andb $1, %al
1300 ; SSE2-NEXT: movb %al, 2(%rdi)
1301 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1302 ; SSE2-NEXT: andb $1, %al
1303 ; SSE2-NEXT: movb %al, (%rdi)
1304 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1305 ; SSE2-NEXT: andb $1, %al
1306 ; SSE2-NEXT: movb %al, 6(%rdi)
1307 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1308 ; SSE2-NEXT: andb $1, %al
1309 ; SSE2-NEXT: movb %al, 4(%rdi)
1310 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1311 ; SSE2-NEXT: andb $1, %al
1312 ; SSE2-NEXT: movb %al, 2(%rdi)
1313 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1314 ; SSE2-NEXT: andb $1, %al
1315 ; SSE2-NEXT: movb %al, (%rdi)
1316 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1317 ; SSE2-NEXT: andb $1, %al
1318 ; SSE2-NEXT: movb %al, 6(%rdi)
1319 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1320 ; SSE2-NEXT: andb $1, %al
1321 ; SSE2-NEXT
1322 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1323 ; SSE2-NEXT: andb $1, %al
1324 ; SSE2-NEXT: movb %al, 2(%rdi)
1325 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1326 ; SSE2-NEXT: andb $1, %al
1327 ; SSE2-NEXT: movb %al, (%rdi)
1328 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1329 ; SSE2-NEXT: andb $1, %al
1330 ; SSE2-NEXT: movb %al, 6(%rdi)
1331 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1332 ; SSE2-NEXT: andb $1, %al
1333 ; SSE2-NEXT: movb %al, 4(%rdi)
1334 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1335 ; SSE2-NEXT: andb $1, %al
1336 ; SSE2-NEXT: movb %al, 2(%rdi)
1337 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1338 ; SSE2-NEXT: andb $1, %al
1339 ; SSE2-NEXT: movb %al, (%rdi)
1340 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1341 ; SSE2-NEXT: andb $1, %al
1342 ; SSE2-NEXT: movb %al, 6(%rdi)
1343 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1344 ; SSE2-NEXT: andb $1, %al
1345 ; SSE2-NEXT: movb %al, 4(%rdi)
1346 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1347 ; SSE2-NEXT: andb $1, %al
1348 ; SSE2-NEXT: movb %al, 2(%rdi)
1349 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1350 ; SSE2-NEXT: andb $1, %al
1351 ; SSE2-NEXT: movb %al, (%rdi)
1352 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1353 ; SSE2-NEXT: andb $1, %al
1354 ; SSE2-NEXT: movb %al, 6(%rdi)
1355 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1356 ; SSE2-NEXT: andb $1, %al
1357 ; SSE2-NEXT: movb %al, 4(%rdi)
1358 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1359 ; SSE2-NEXT: andb $1, %al
1360 ; SSE2-NEXT: movb %al, 2(%rdi)
1361 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1362 ; SSE2-NEXT: andb $1, %al
1363 ; SSE2-NEXT: movb %al, (%rdi)
1364 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1365 ; SSE2-NEXT: andb $1, %al
1366 ; SSE2-NEXT: movb %al, 6(%rdi)
1367 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1368 ; SSE2-NEXT: andb $1, %al
1369 ; SSE2-NEXT: movb %al, 4(%rdi)
1370 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1371 ; SSE2-NEXT: andb $1, %al
1372 ; SSE2-NEXT: movb %al, 2(%rdi)
1373 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1374 ; SSE2-NEXT: andb $1, %al
1375 ; SSE2-NEXT: movb %al, (%rdi)
1376 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1377 ; SSE2-NEXT: andb $1, %al
1378 ; SSE2-NEXT: movb %al, 6(%rdi)
1379 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1380 ; SSE2-NEXT: andb $1, %al
1381 ; SSE2-NEXT: movb %al, 4(%rdi)
1382 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1383 ; SSE2-NEXT: andb $1, %al
1384 ; SSE2-NEXT: movb %al, 2(%rdi)
1385 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1386 ; SSE2-NEXT: andb $1, %al
1387 ; SSE2-NEXT: movb %al, (%rdi)
1388 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1389 ; SSE2-NEXT: andb $1, %al
1390 ; SSE2-NEXT: movb %al, 6(%rdi)
1391 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1392 ; SSE2-NEXT: andb $1, %al
1393 ; SSE2-NEXT: movb %al, 4(%rdi)
1394 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1395 ; SSE2-NEXT: andb $1, %al
1396 ; SSE2-NEXT: movb %al, 2(%rdi)
1397 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1398 ; SSE2-NEXT: andb $1, %al
1399 ; SSE2-NEXT: movb %al, (%rdi)
1400 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1401 ; SSE2-NEXT: andb $1, %al
1402 ; SSE2-NEXT: movb %al, 6(%rdi)
1403 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1404 ; SSE2-NEXT: andb $1, %al
1405 ; SSE2-NEXT: movb %al, 4(%rdi)
1406 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1407 ; SSE2-NEXT: andb $1, %al
1408 ; SSE2-NEXT: movb %al, 2(%rdi)
1409 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1410 ; SSE2-NEXT: andb $1, %al
1411 ; SSE2-NEXT: movb %al, (%rdi)
1412 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1413 ; SSE2-NEXT: andb $1, %al
1414 ; SSE2-NEXT: movb %al, 6(%rdi)
1415 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1416 ; SSE2-NEXT: andb $1, %al
1417 ; SSE2-NEXT: movb %al, 4(%rdi)
1418 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1419 ; SSE2-NEXT: andb $1, %al
1420 ; SSE2-NEXT: movb %al, 2(%rdi)
1421 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1422 ; SSE2-NEXT: andb $1, %al
1423 ; SSE2-NEXT: movb %al, (%rdi)
1424 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1425 ; SSE2-NEXT: andb $1, %al
1426 ; SSE2-NEXT: movb %al, 6(%rdi)
1427 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1428 ; SSE2-NEXT: andb $1, %al
1429 ; SSE2-NEXT: movb %al, 4(%rdi)
1430 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1431 ; SSE2-NEXT: andb $1, %al
1432 ; SSE2-NEXT: movb %al, 2(%rdi)
1433 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1434 ; SSE2-NEXT: andb $1, %al
1435 ; SSE2-NEXT: movb %al, (%rdi)
1436 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1437 ; SSE2-NEXT: andb $1, %al
1438 ; SSE2-NEXT: movb %al, 6(%rdi)
1439 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1440 ; SSE2-NEXT: andb $1, %al
1441 ; SSE2-NEXT: movb %al, 4(%rdi)
1442 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1443 ; SSE2-NEXT: andb $1, %al
1444 ; SSE2-NEXT: movb %al, 2(%rdi)
1445 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
1446 ; SSE2-NEXT: andb $1, %al
1447 ; SSE2-NEXT: movb %al, (%rdi)
1448 ; SSE2-NEXT: movq %rdi, %rax
1449 ; SSE2-NEXT: retq
1453 ; SSE42-NEXT: pcmpgtb %xmm4, %xmm0
1454 ; SSE42-NEXT: pcmpgtb %xmm5, %xmm1
1455 ; SSE42-NEXT: pcmpgtb %xmm6, %xmm2
1456 ; SSE42-NEXT: pcmpgtb %xmm7, %xmm3
1457 ; SSE42-NEXT: pextrb $15, %xmm3, %eax
1458 ; SSE42-NEXT: andb $1, %al
1459 ; SSE42-NEXT: movb %al, 6(%rdi)
1460 ; SSE42-NEXT: pextrb $14, %xmm3, %eax
1461 ; SSE42-NEXT: andb $1, %al
1462 ; SSE42-NEXT: movb %al, 6(%rdi)
1463 ; SSE42-NEXT: pextrb $13, %xmm3, %eax
1464 ; SSE42-NEXT: andb $1, %al
1465 ; SSE42-NEXT: movb %al, 6(%rdi)
1466 ; SSE42-NEXT: pextrb $12, %xmm3, %eax
1467 ; SSE42-NEXT: andb $1, %al
1468 ; SSE42-NEXT: movb %al, 6(%rdi)
1469 ; SSE42-NEXT: pextrb $11, %xmm3, %eax
1470 ; SSE42-NEXT: andb $1, %al
1471 ; SSE42-NEXT: movb %al, 6(%rdi)
1472 ; SSE42-NEXT: pextrb $10, %xmm3, %eax
1473 ; SSE42-NEXT: andb $1, %al
1474 ; SSE42-NEXT: movb %al, 6(%rdi)
1475 ; SSE42-NEXT: pextrb $9, %xmm3, %eax
1476 ; SSE42-NEXT: andb $1, %al
1477 ; SSE42-NEXT: movb %al, 6(%rdi)
1478 ; SSE42-NEXT: pextrb $8, %xmm3, %eax
1479 ; SSE42-NEXT: andb $1, %al
1480 ; SSE42-NEXT: movb %al, 6(%rdi)
1481 ; SSE42-NEXT: pextrb $7, %xmm3, %eax
1482 ; SSE42-NEXT: andb $1, %al
1483 ; SSE42-NEXT: movb %al, 6(%rdi)
1484 ; SSE42-NEXT: pextrb $6, %xmm3, %eax
1485 ; SSE42-NEXT: andb $1, %al
1486 ; SSE42-NEXT: movb %al, 6(%rdi)
1487 ; SSE42-NEXT: pextrb $5, %xmm3, %eax
1488 ; SSE42-NEXT: andb $1, %al
1489 ; SSE42-NEXT: movb %al, 6(%rdi)
1490 ; SSE42-NEXT: pextrb $4, %xmm3, %eax
1491 ; SSE42-NEXT: andb $1, %al
1492 ; SSE42-NEXT: movb %al, 6(%rdi)
1493 ; SSE42-NEXT: pextrb $3, %xmm3, %eax
1494 ; SSE42-NEXT: andb $1, %al
1495 ; SSE42-NEXT: movb %al, 6(%rdi)
1496 ; SSE42-NEXT: pextrb $2, %xmm3, %eax
1497 ; SSE42-NEXT: andb $1, %al
1498 ; SSE42-NEXT: movb %al, 6(%rdi)
1499 ; SSE42-NEXT: pextrb $1, %xmm3, %eax
1500 ; SSE42-NEXT: andb $1, %al
1501 ; SSE42-NEXT: movb %al, 6(%rdi)
1502 ; SSE42-NEXT: pextrb $0, %xmm3, %eax
1503 ; SSE42-NEXT: andb $1, %al
1504 ; SSE42-NEXT: movb %al, 6(%rdi)
1505 ; SSE42-NEXT: pextrb $15, %xmm2, %eax
1506 ; SSE42-NEXT: andb $1, %al
1507 ; SSE42-NEXT: movb %al, 4(%rdi)
1508 ; SSE42-NEXT: pextrb $14, %xmm2, %eax
1509 ; SSE42-NEXT: andb $1, %al
1510 ; SSE42-NEXT: movb %al, 4(%rdi)
1511 ; SSE42-NEXT: pextrb $13, %xmm2, %eax
1512 ; SSE42-NEXT: andb $1, %al
1513 ; SSE42-NEXT: movb %al, 4(%rdi)
1514 ; SSE42-NEXT: pextrb $12, %xmm2, %eax
1515 ; SSE42-NEXT: andb $1, %al
1516 ; SSE42-NEXT: movb %al, 4(%rdi)
1517 ; SSE42-NEXT: pextrb $11, %xmm2, %eax
1518 ; SSE42-NEXT: andb $1, %al
1519 ; SSE42-NEXT: movb %al, 4(%rdi)
1520 ; SSE42-NEXT: pextrb $10, %xmm2, %eax
1521 ; SSE42-NEXT: andb $1, %al
1522 ; SSE42-NEXT: movb %al, 4(%rdi)
1523 ; SSE42-NEXT: pextrb $9, %xmm2, %eax
1524 ; SSE42-NEXT: andb $1, %al
1525 ; SSE42-NEXT: movb %al, 4(%rdi)
1526 ; SSE42-NEXT: pextrb $8, %xmm2, %eax
1527 ; SSE42-NEXT: andb $1, %al
1528 ; SSE42-NEXT: movb %al, 4(%rdi)
1529 ; SSE42-NEXT: pextrb $7, %xmm2, %eax
1530 ; SSE42-NEXT: andb $1, %al
1531 ; SSE42-NEXT: movb %al, 4(%rdi)
1532 ; SSE42-NEXT: pextrb $6, %xmm2, %eax
1533 ; SSE42-NEXT: andb $1, %al
1534 ; SSE42-NEXT: movb %al, 4(%rdi)
1535 ; SSE42-NEXT: pextrb $5, %xmm2, %eax
1536 ; SSE42-NEXT: andb $1, %al
1537 ; SSE42-NEXT: movb %al, 4(%rdi)
1538 ; SSE42-NEXT: pextrb $4, %xmm2, %eax
1539 ; SSE42-NEXT: andb $1, %al
1540 ; SSE42-NEXT: movb %al, 4(%rdi)
1541 ; SSE42-NEXT: pextrb $3, %xmm2, %eax
1542 ; SSE42-NEXT: andb $1, %al
1543 ; SSE42-NEXT: movb %al, 4(%rdi)
1544 ; SSE42-NEXT: pextrb $2, %xmm2, %eax
1545 ; SSE42-NEXT: andb $1, %al
1546 ; SSE42-NEXT: movb %al, 4(%rdi)
1547 ; SSE42-NEXT: pextrb $1, %xmm2, %eax
1548 ; SSE42-NEXT: andb $1, %al
1549 ; SSE42-NEXT: movb %al, 4(%rdi)
1550 ; SSE42-NEXT: pextrb $0, %xmm2, %eax
1551 ; SSE42-NEXT: andb $1, %al
1552 ; SSE42-NEXT: movb %al, 4(%rdi)
1553 ; SSE42-NEXT: pextrb $15, %xmm1, %eax
1554 ; SSE42-NEXT: andb $1, %al
1555 ; SSE42-NEXT: movb %al, 2(%rdi)
1556 ; SSE42-NEXT: pextrb $14, %xmm1, %eax
1557 ; SSE42-NEXT: andb $1, %al
1558 ; SSE42-NEXT: movb %al, 2(%rdi)
1559 ; SSE42-NEXT: pextrb $13, %xmm1, %eax
1560 ; SSE42-NEXT: andb $1, %al
1561 ; SSE42-NEXT: movb %al, 2(%rdi)
1562 ; SSE42-NEXT: pextrb $12, %xmm1, %eax
1563 ; SSE42-NEXT: andb $1, %al
1564 ; SSE42-NEXT: movb %al, 2(%rdi)
1565 ; SSE42-NEXT: pextrb $11, %xmm1, %eax
1566 ; SSE42-NEXT: andb $1, %al
1567 ; SSE42-NEXT: movb %al, 2(%rdi)
1568 ; SSE42-NEXT: pextrb $10, %xmm1, %eax
1569 ; SSE42-NEXT: andb $1, %al
1570 ; SSE42-NEXT: movb %al, 2(%rdi)
1571 ; SSE42-NEXT: pextrb $9, %xmm1, %eax
1572 ; SSE42-NEXT: andb $1, %al
1573 ; SSE42-NEXT: movb %al, 2(%rdi)
1574 ; SSE42-NEXT: pextrb $8, %xmm1, %eax
1575 ; SSE42-NEXT: andb $1, %al
1576 ; SSE42-NEXT: movb %al, 2(%rdi)
1577 ; SSE42-NEXT: pextrb $7, %xmm1, %eax
1578 ; SSE42-NEXT: andb $1, %al
1579 ; SSE42-NEXT: movb %al, 2(%rdi)
1580 ; SSE42-NEXT: pextrb $6, %xmm1, %eax
1581 ; SSE42-NEXT: andb $1, %al
1582 ; SSE42-NEXT: movb %al, 2(%rdi)
1583 ; SSE42-NEXT: pextrb $5, %xmm1, %eax
1584 ; SSE42-NEXT: andb $1, %al
1585 ; SSE42-NEXT: movb %al, 2(%rdi)
1586 ; SSE42-NEXT: pextrb $4, %xmm1, %eax
1587 ; SSE42-NEXT: andb $1, %al
1588 ; SSE42-NEXT: movb %al, 2(%rdi)
1589 ; SSE42-NEXT: pextrb $3, %xmm1, %eax
1590 ; SSE42-NEXT: andb $1, %al
1591 ; SSE42-NEXT: movb %al, 2(%rdi)
1592 ; SSE42-NEXT: pextrb $2, %xmm1, %eax
1593 ; SSE42-NEXT: andb $1, %al
1594 ; SSE42-NEXT: movb %al, 2(%rdi)
1595 ; SSE42-NEXT: pextrb $1, %xmm1, %eax
1596 ; SSE42-NEXT: andb $1, %al
1597 ; SSE42-NEXT: movb %al, 2(%rdi)
1598 ; SSE42-NEXT: pextrb $0, %xmm1, %eax
1599 ; SSE42-NEXT: andb $1, %al
1600 ; SSE42-NEXT: movb %al, 2(%rdi)
1601 ; SSE42-NEXT: pextrb $15, %xmm0, %eax
1602 ; SSE42-NEXT: andb $1, %al
1603 ; SSE42-NEXT: movb %al, (%rdi)
1604 ; SSE42-NEXT: pextrb $14, %xmm0, %eax
1605 ; SSE42-NEXT: andb $1, %al
1606 ; SSE42-NEXT: movb %al, (%rdi)
1607 ; SSE42-NEXT: pextrb $13, %xmm0, %eax
1608 ; SSE42-NEXT: andb $1, %al
1609 ; SSE42-NEXT: movb %al, (%rdi)
1610 ; SSE42-NEXT: pextrb $12, %xmm0, %eax
1611 ; SSE42-NEXT: andb $1, %al
1612 ; SSE42-NEXT: movb %al, (%rdi)
1613 ; SSE42-NEXT: pextrb $11, %xmm0, %eax
1614 ; SSE42-NEXT: andb $1, %al
1615 ; SSE42-NEXT: movb %al, (%rdi)
1616 ; SSE42-NEXT: pextrb $10, %xmm0, %eax
1617 ; SSE42-NEXT: andb $1, %al
1618 ; SSE42-NEXT: movb %al, (%rdi)
1619 ; SSE42-NEXT: pextrb $9, %xmm0, %eax
1620 ; SSE42-NEXT: andb $1, %al
1621 ; SSE42-NEXT: movb %al, (%rdi)
1622 ; SSE42-NEXT: pextrb $8, %xmm0, %eax
1623 ; SSE42-NEXT: andb $1, %al
1624 ; SSE42-NEXT: movb %al, (%rdi)
1625 ; SSE42-NEXT: pextrb $7, %xmm0, %eax
1626 ; SSE42-NEXT: andb $1, %al
1627 ; SSE42-NEXT: movb %al, (%rdi)
1628 ; SSE42-NEXT: pextrb $6, %xmm0, %eax
1629 ; SSE42-NEXT: andb $1, %al
1630 ; SSE42-NEXT: movb %al, (%rdi)
1631 ; SSE42-NEXT: pextrb $5, %xmm0, %eax
1632 ; SSE42-NEXT: andb $1, %al
1633 ; SSE42-NEXT: movb %al, (%rdi)
1634 ; SSE42-NEXT: pextrb $4, %xmm0, %eax
1635 ; SSE42-NEXT: andb $1, %al
1636 ; SSE42-NEXT: movb %al, (%rdi)
1637 ; SSE42-NEXT: pextrb $3, %xmm0, %eax
1638 ; SSE42-NEXT: andb $1, %al
1639 ; SSE42-NEXT: movb %al, (%rdi)
1640 ; SSE42-NEXT: pextrb $2, %xmm0, %eax
1641 ; SSE42-NEXT: andb $1, %al
1642 ; SSE42-NEXT: movb %al, (%rdi)
1643 ; SSE42-NEXT: pextrb $1, %xmm0, %eax
1644 ; SSE42-NEXT: andb $1, %al
1645 ; SSE42-NEXT: movb %al, (%rdi)
1646 ; SSE42-NEXT: pextrb $0, %xmm0, %eax
1647 ; SSE42-NEXT: andb $1, %al
1648 ; SSE42-NEXT: movb %al, (%rdi)
1649 ; SSE42-NEXT: movq %rdi, %rax
1650 ; SSE42-NEXT: retq
1654 ; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm4
1655 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2
1656 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
1657 ; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm0
1658 ; AVX1-NEXT: vpcmpgtb %xmm3, %xmm1, %xmm2
1659 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3
1660 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
1661 ; AVX1-NEXT: vpcmpgtb %xmm3, %xmm1, %xmm1
1662 ; AVX1-NEXT: vpextrb $15, %xmm1, %eax
1663 ; AVX1-NEXT: andb $1, %al
1664 ; AVX1-NEXT: movb %al, 4(%rdi)
1665 ; AVX1-NEXT: vpextrb $14, %xmm1, %eax
1666 ; AVX1-NEXT: andb $1, %al
1667 ; AVX1-NEXT: movb %al, 4(%rdi)
1668 ; AVX1-NEXT: vpextrb $13, %xmm1, %eax
1669 ; AVX1-NEXT: andb $1, %al
1670 ; AVX1-NEXT: movb %al, 4(%rdi)
1671 ; AVX1-NEXT: vpextrb $12, %xmm1, %eax
1672 ; AVX1-NEXT: andb $1, %al
1673 ; AVX1-NEXT: movb %al, 4(%rdi)
1674 ; AVX1-NEXT: vpextrb $11, %xmm1, %eax
1675 ; AVX1-NEXT: andb $1, %al
1676 ; AVX1-NEXT: movb %al, 4(%rdi)
1677 ; AVX1-NEXT: vpextrb $10, %xmm1, %eax
1678 ; AVX1-NEXT: andb $1, %al
1679 ; AVX1-NEXT: movb %al, 4(%rdi)
1680 ; AVX1-NEXT: vpextrb $9, %xmm1, %eax
1681 ; AVX1-NEXT: andb $1, %al
1682 ; AVX1-NEXT: movb %al, 4(%rdi)
1683 ; AVX1-NEXT: vpextrb $8, %xmm1, %eax
1684 ; AVX1-NEXT: andb $1, %al
1685 ; AVX1-NEXT: movb %al, 4(%rdi)
1686 ; AVX1-NEXT: vpextrb $7, %xmm1, %eax
1687 ; AVX1-NEXT: andb $1, %al
1688 ; AVX1-NEXT: movb %al, 4(%rdi)
1689 ; AVX1-NEXT: vpextrb $6, %xmm1, %eax
1690 ; AVX1-NEXT: andb $1, %al
1691 ; AVX1-NEXT: movb %al, 4(%rdi)
1692 ; AVX1-NEXT: vpextrb $5, %xmm1, %eax
1693 ; AVX1-NEXT: andb $1, %al
1694 ; AVX1-NEXT: movb %al, 4(%rdi)
1695 ; AVX1-NEXT: vpextrb $4, %xmm1, %eax
1696 ; AVX1-NEXT: andb $1, %al
1697 ; AVX1-NEXT: movb %al, 4(%rdi)
1698 ; AVX1-NEXT: vpextrb $3, %xmm1, %eax
1699 ; AVX1-NEXT: andb $1, %al
1700 ; AVX1-NEXT: movb %al, 4(%rdi)
1701 ; AVX1-NEXT: vpextrb $2, %xmm1, %eax
1702 ; AVX1-NEXT: andb $1, %al
1703 ; AVX1-NEXT: movb %al, 4(%rdi)
1704 ; AVX1-NEXT: vpextrb $1, %xmm1, %eax
1705 ; AVX1-NEXT: andb $1, %al
1706 ; AVX1-NEXT: movb %al, 4(%rdi)
1707 ; AVX1-NEXT: vpextrb $0, %xmm1, %eax
1708 ; AVX1-NEXT: andb $1, %al
1709 ; AVX1-NEXT: movb %al, 4(%rdi)
1710 ; AVX1-NEXT: vpextrb $15, %xmm2, %eax
1711 ; AVX1-NEXT: andb $1, %al
1712 ; AVX1-NEXT: movb %al, 4(%rdi)
1713 ; AVX1-NEXT: vpextrb $14, %xmm2, %eax
1714 ; AVX1-NEXT: andb $1, %al
1715 ; AVX1-NEXT: movb %al, 4(%rdi)
1716 ; AVX1-NEXT: vpextrb $13, %xmm2, %eax
1717 ; AVX1-NEXT: andb $1, %al
1718 ; AVX1-NEXT: movb %al, 4(%rdi)
1719 ; AVX1-NEXT: vpextrb $12, %xmm2, %eax
1720 ; AVX1-NEXT: andb $1, %al
1721 ; AVX1-NEXT: movb %al, 4(%rdi)
1722 ; AVX1-NEXT: vpextrb $11, %xmm2, %eax
1723 ; AVX1-NEXT: andb $1, %al
1724 ; AVX1-NEXT: movb %al, 4(%rdi)
1725 ; AVX1-NEXT: vpextrb $10, %xmm2, %eax
1726 ; AVX1-NEXT: andb $1, %al
1727 ; AVX1-NEXT: movb %al, 4(%rdi)
1728 ; AVX1-NEXT: vpextrb $9, %xmm2, %eax
1729 ; AVX1-NEXT: andb $1, %al
1730 ; AVX1-NEXT: movb %al, 4(%rdi)
1731 ; AVX1-NEXT: vpextrb $8, %xmm2, %eax
1732 ; AVX1-NEXT: andb $1, %al
1733 ; AVX1-NEXT: movb %al, 4(%rdi)
1734 ; AVX1-NEXT: vpextrb $7, %xmm2, %eax
1735 ; AVX1-NEXT: andb $1, %al
1736 ; AVX1-NEXT: movb %al, 4(%rdi)
1737 ; AVX1-NEXT: vpextrb $6, %xmm2, %eax
1738 ; AVX1-NEXT: andb $1, %al
1739 ; AVX1-NEXT: movb %al, 4(%rdi)
1740 ; AVX1-NEXT: vpextrb $5, %xmm2, %eax
1741 ; AVX1-NEXT: andb $1, %al
1742 ; AVX1-NEXT: movb %al, 4(%rdi)
1743 ; AVX1-NEXT: vpextrb $4, %xmm2, %eax
1744 ; AVX1-NEXT: andb $1, %al
1745 ; AVX1-NEXT: movb %al, 4(%rdi)
1746 ; AVX1-NEXT: vpextrb $3, %xmm2, %eax
1747 ; AVX1-NEXT: andb $1, %al
1748 ; AVX1-NEXT: movb %al, 4(%rdi)
1749 ; AVX1-NEXT: vpextrb $2, %xmm2, %eax
1750 ; AVX1-NEXT: andb $1, %al
1751 ; AVX1-NEXT: movb %al, 4(%rdi)
1752 ; AVX1-NEXT: vpextrb $1, %xmm2, %eax
1753 ; AVX1-NEXT: andb $1, %al
1754 ; AVX1-NEXT: movb %al, 4(%rdi)
1755 ; AVX1-NEXT: vpextrb $0, %xmm2, %eax
1756 ; AVX1-NEXT: andb $1, %al
1757 ; AVX1-NEXT: movb %al, 4(%rdi)
1758 ; AVX1-NEXT: vpextrb $15, %xmm0, %eax
1759 ; AVX1-NEXT: andb $1, %al
1760 ; AVX1-NEXT: movb %al, (%rdi)
1761 ; AVX1-NEXT: vpextrb $14, %xmm0, %eax
1762 ; AVX1-NEXT: andb $1, %al
1763 ; AVX1-NEXT: movb %al, (%rdi)
1764 ; AVX1-NEXT: vpextrb $13, %xmm0, %eax
1765 ; AVX1-NEXT: andb $1, %al
1766 ; AVX1-NEXT: movb %al, (%rdi)
1767 ; AVX1-NEXT: vpextrb $12, %xmm0, %eax
1768 ; AVX1-NEXT: andb $1, %al
1769 ; AVX1-NEXT: movb %al, (%rdi)
1770 ; AVX1-NEXT: vpextrb $11, %xmm0, %eax
1771 ; AVX1-NEXT: andb $1, %al
1772 ; AVX1-NEXT: movb %al, (%rdi)
1773 ; AVX1-NEXT: vpextrb $10, %xmm0, %eax
1774 ; AVX1-NEXT: andb $1, %al
1775 ; AVX1-NEXT: movb %al, (%rdi)
1776 ; AVX1-NEXT: vpextrb $9, %xmm0, %eax
1777 ; AVX1-NEXT: andb $1, %al
1778 ; AVX1-NEXT: movb %al, (%rdi)
1779 ; AVX1-NEXT: vpextrb $8, %xmm0, %eax
1780 ; AVX1-NEXT: andb $1, %al
1781 ; AVX1-NEXT: movb %al, (%rdi)
1782 ; AVX1-NEXT: vpextrb $7, %xmm0, %eax
1783 ; AVX1-NEXT: andb $1, %al
1784 ; AVX1-NEXT: movb %al, (%rdi)
1785 ; AVX1-NEXT: vpextrb $6, %xmm0, %eax
1786 ; AVX1-NEXT: andb $1, %al
1787 ; AVX1-NEXT: movb %al, (%rdi)
1788 ; AVX1-NEXT: vpextrb $5, %xmm0, %eax
1789 ; AVX1-NEXT: andb $1, %al
1790 ; AVX1-NEXT
1791 ; AVX1-NEXT: vpextrb $4, %xmm0, %eax
1792 ; AVX1-NEXT: andb $1, %al
1793 ; AVX1-NEXT: movb %al, (%rdi)
1794 ; AVX1-NEXT: vpextrb $3, %xmm0, %eax
1795 ; AVX1-NEXT: andb $1, %al
1796 ; AVX1-NEXT: movb %al, (%rdi)
1797 ; AVX1-NEXT: vpextrb $2, %xmm0, %eax
1798 ; AVX1-NEXT: andb $1, %al
1799 ; AVX1-NEXT: movb %al, (%rdi)
1800 ; AVX1-NEXT: vpextrb $1, %xmm0, %eax
1801 ; AVX1-NEXT: andb $1, %al
1802 ; AVX1-NEXT: movb %al, (%rdi)
1803 ; AVX1-NEXT: vpextrb $0, %xmm0, %eax
1804 ; AVX1-NEXT: andb $1, %al
1805 ; AVX1-NEXT: movb %al, (%rdi)
1806 ; AVX1-NEXT: vpextrb $15, %xmm4, %eax
1807 ; AVX1-NEXT: andb $1, %al
1808 ; AVX1-NEXT: movb %al, (%rdi)
1809 ; AVX1-NEXT: vpextrb $14, %xmm4, %eax
1810 ; AVX1-NEXT: andb $1, %al
1811 ; AVX1-NEXT: movb %al, (%rdi)
1812 ; AVX1-NEXT: vpextrb $13, %xmm4, %eax
1813 ; AVX1-NEXT: andb $1, %al
1814 ; AVX1-NEXT: movb %al, (%rdi)
1815 ; AVX1-NEXT: vpextrb $12, %xmm4, %eax
1816 ; AVX1-NEXT: andb $1, %al
1817 ; AVX1-NEXT: movb %al, (%rdi)
1818 ; AVX1-NEXT: vpextrb $11, %xmm4, %eax
1819 ; AVX1-NEXT: andb $1, %al
1820 ; AVX1-NEXT: movb %al, (%rdi)
1821 ; AVX1-NEXT: vpextrb $10, %xmm4, %eax
1822 ; AVX1-NEXT: andb $1, %al
1823 ; AVX1-NEXT: movb %al, (%rdi)
1824 ; AVX1-NEXT: vpextrb $9, %xmm4, %eax
1825 ; AVX1-NEXT: andb $1, %al
1826 ; AVX1-NEXT: movb %al, (%rdi)
1827 ; AVX1-NEXT: vpextrb $8, %xmm4, %eax
1828 ; AVX1-NEXT: andb $1, %al
1829 ; AVX1-NEXT: movb %al, (%rdi)
1830 ; AVX1-NEXT: vpextrb $7, %xmm4, %eax
1831 ; AVX1-NEXT: andb $1, %al
1832 ; AVX1-NEXT: movb %al, (%rdi)
1833 ; AVX1-NEXT: vpextrb $6, %xmm4, %eax
1834 ; AVX1-NEXT: andb $1, %al
1835 ; AVX1-NEXT: movb %al, (%rdi)
1836 ; AVX1-NEXT: vpextrb $5, %xmm4, %eax
1837 ; AVX1-NEXT: andb $1, %al
1838 ; AVX1-NEXT: movb %al, (%rdi)
1839 ; AVX1-NEXT: vpextrb $4, %xmm4, %eax
1840 ; AVX1-NEXT: andb $1, %al
1841 ; AVX1-NEXT: movb %al, (%rdi)
1842 ; AVX1-NEXT: vpextrb $3, %xmm4, %eax
1843 ; AVX1-NEXT: andb $1, %al
1844 ; AVX1-NEXT: movb %al, (%rdi)
1845 ; AVX1-NEXT: vpextrb $2, %xmm4, %eax
1846 ; AVX1-NEXT: andb $1, %al
1847 ; AVX1-NEXT: movb %al, (%rdi)
1848 ; AVX1-NEXT: vpextrb $1, %xmm4, %eax
1849 ; AVX1-NEXT: andb $1, %al
1850 ; AVX1-NEXT: movb %al, (%rdi)
1851 ; AVX1-NEXT: vpextrb $0, %xmm4, %eax
1852 ; AVX1-NEXT: andb $1, %al
1853 ; AVX1-NEXT: movb %al, (%rdi)
1854 ; AVX1-NEXT: movq %rdi, %rax
1855 ; AVX1-NEXT: vzeroupper
1856 ; AVX1-NEXT: retq
1860 ; AVX2-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0
1861 ; AVX2-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm1
1862 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
1863 ; AVX2-NEXT: vpextrb $15, %xmm2, %eax
1864 ; AVX2-NEXT: andb $1, %al
1865 ; AVX2-NEXT: movb %al, 4(%rdi)
1866 ; AVX2-NEXT: vpextrb $14, %xmm2, %eax
1867 ; AVX2-NEXT: andb $1, %al
1868 ; AVX2-NEXT: movb %al, 4(%rdi)
1869 ; AVX2-NEXT: vpextrb $13, %xmm2, %eax
1870 ; AVX2-NEXT: andb $1, %al
1871 ; AVX2-NEXT: movb %al, 4(%rdi)
1872 ; AVX2-NEXT: vpextrb $12, %xmm2, %eax
1873 ; AVX2-NEXT: andb $1, %al
1874 ; AVX2-NEXT: movb %al, 4(%rdi)
1875 ; AVX2-NEXT: vpextrb $11, %xmm2, %eax
1876 ; AVX2-NEXT: andb $1, %al
1877 ; AVX2-NEXT: movb %al, 4(%rdi)
1878 ; AVX2-NEXT: vpextrb $10, %xmm2, %eax
1879 ; AVX2-NEXT: andb $1, %al
1880 ; AVX2-NEXT: movb %al, 4(%rdi)
1881 ; AVX2-NEXT: vpextrb $9, %xmm2, %eax
1882 ; AVX2-NEXT: andb $1, %al
1883 ; AVX2-NEXT: movb %al, 4(%rdi)
1884 ; AVX2-NEXT: vpextrb $8, %xmm2, %eax
1885 ; AVX2-NEXT: andb $1, %al
1886 ; AVX2-NEXT: movb %al, 4(%rdi)
1887 ; AVX2-NEXT: vpextrb $7, %xmm2, %eax
1888 ; AVX2-NEXT: andb $1, %al
1889 ; AVX2-NEXT: movb %al, 4(%rdi)
1890 ; AVX2-NEXT: vpextrb $6, %xmm2, %eax
1891 ; AVX2-NEXT: andb $1, %al
1892 ; AVX2-NEXT: movb %al, 4(%rdi)
1893 ; AVX2-NEXT: vpextrb $5, %xmm2, %eax
1894 ; AVX2-NEXT: andb $1, %al
1895 ; AVX2-NEXT: movb %al, 4(%rdi)
1896 ; AVX2-NEXT: vpextrb $4, %xmm2, %eax
1897 ; AVX2-NEXT: andb $1, %al
1898 ; AVX2-NEXT: movb %al, 4(%rdi)
1899 ; AVX2-NEXT: vpextrb $3, %xmm2, %eax
1900 ; AVX2-NEXT: andb $1, %al
1901 ; AVX2-NEXT: movb %al, 4(%rdi)
1902 ; AVX2-NEXT: vpextrb $2, %xmm2, %eax
1903 ; AVX2-NEXT: andb $1, %al
1904 ; AVX2-NEXT: movb %al, 4(%rdi)
1905 ; AVX2-NEXT: vpextrb $1, %xmm2, %eax
1906 ; AVX2-NEXT: andb $1, %al
1907 ; AVX2-NEXT: movb %al, 4(%rdi)
1908 ; AVX2-NEXT: vpextrb $0, %xmm2, %eax
1909 ; AVX2-NEXT: andb $1, %al
1910 ; AVX2-NEXT: movb %al, 4(%rdi)
1911 ; AVX2-NEXT: vpextrb $15, %xmm1, %eax
1912 ; AVX2-NEXT: andb $1, %al
1913 ; AVX2-NEXT: movb %al, 4(%rdi)
1914 ; AVX2-NEXT: vpextrb $14, %xmm1, %eax
1915 ; AVX2-NEXT: andb $1, %al
1916 ; AVX2-NEXT: movb %al, 4(%rdi)
1917 ; AVX2-NEXT: vpextrb $13, %xmm1, %eax
1918 ; AVX2-NEXT: andb $1, %al
1919 ; AVX2-NEXT: movb %al, 4(%rdi)
1920 ; AVX2-NEXT: vpextrb $12, %xmm1, %eax
1921 ; AVX2-NEXT: andb $1, %al
1922 ; AVX2-NEXT: movb %al, 4(%rdi)
1923 ; AVX2-NEXT: vpextrb $11, %xmm1, %eax
1924 ; AVX2-NEXT: andb $1, %al
1925 ; AVX2-NEXT: movb %al, 4(%rdi)
1926 ; AVX2-NEXT: vpextrb $10, %xmm1, %eax
1927 ; AVX2-NEXT: andb $1, %al
1928 ; AVX2-NEXT: movb %al, 4(%rdi)
1929 ; AVX2-NEXT: vpextrb $9, %xmm1, %eax
1930 ; AVX2-NEXT: andb $1, %al
1931 ; AVX2-NEXT: movb %al, 4(%rdi)
1932 ; AVX2-NEXT: vpextrb $8, %xmm1, %eax
1933 ; AVX2-NEXT: andb $1, %al
1934 ; AVX2-NEXT: movb %al, 4(%rdi)
1935 ; AVX2-NEXT: vpextrb $7, %xmm1, %eax
1936 ; AVX2-NEXT: andb $1, %al
1937 ; AVX2-NEXT: movb %al, 4(%rdi)
1938 ; AVX2-NEXT: vpextrb $6, %xmm1, %eax
1939 ; AVX2-NEXT: andb $1, %al
1940 ; AVX2-NEXT: movb %al, 4(%rdi)
1941 ; AVX2-NEXT: vpextrb $5, %xmm1, %eax
1942 ; AVX2-NEXT: andb $1, %al
1943 ; AVX2-NEXT: movb %al, 4(%rdi)
1944 ; AVX2-NEXT: vpextrb $4, %xmm1, %eax
1945 ; AVX2-NEXT: andb $1, %al
1946 ; AVX2-NEXT: movb %al, 4(%rdi)
1947 ; AVX2-NEXT: vpextrb $3, %xmm1, %eax
1948 ; AVX2-NEXT: andb $1, %al
1949 ; AVX2-NEXT: movb %al, 4(%rdi)
1950 ; AVX2-NEXT: vpextrb $2, %xmm1, %eax
1951 ; AVX2-NEXT: andb $1, %al
1952 ; AVX2-NEXT: movb %al, 4(%rdi)
1953 ; AVX2-NEXT: vpextrb $1, %xmm1, %eax
1954 ; AVX2-NEXT: andb $1, %al
1955 ; AVX2-NEXT: movb %al, 4(%rdi)
1956 ; AVX2-NEXT: vpextrb $0, %xmm1, %eax
1957 ; AVX2-NEXT: andb $1, %al
1958 ; AVX2-NEXT: movb %al, 4(%rdi)
1959 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
1960 ; AVX2-NEXT: vpextrb $15, %xmm1, %eax
1961 ; AVX2-NEXT: andb $1, %al
1962 ; AVX2-NEXT: movb %al, (%rdi)
1963 ; AVX2-NEXT: vpextrb $14, %xmm1, %eax
1964 ; AVX2-NEXT: andb $1, %al
1965 ; AVX2-NEXT: movb %al, (%rdi)
1966 ; AVX2-NEXT: vpextrb $13, %xmm1, %eax
1967 ; AVX2-NEXT: andb $1, %al
1968 ; AVX2-NEXT: movb %al, (%rdi)
1969 ; AVX2-NEXT: vpextrb $12, %xmm1, %eax
1970 ; AVX2-NEXT: andb $1, %al
1971 ; AVX2-NEXT: movb %al, (%rdi)
1972 ; AVX2-NEXT: vpextrb $11, %xmm1, %eax
1973 ; AVX2-NEXT: andb $1, %al
1974 ; AVX2-NEXT: movb %al, (%rdi)
1975 ; AVX2-NEXT: vpextrb $10, %xmm1, %eax
1976 ; AVX2-NEXT: andb $1, %al
1977 ; AVX2-NEXT: movb %al, (%rdi)
1978 ; AVX2-NEXT: vpextrb $9, %xmm1, %eax
1979 ; AVX2-NEXT: andb $1, %al
1980 ; AVX2-NEXT: movb %al, (%rdi)
1981 ; AVX2-NEXT: vpextrb $8, %xmm1, %eax
1982 ; AVX2-NEXT: andb $1, %al
1983 ; AVX2-NEXT: movb %al, (%rdi)
1984 ; AVX2-NEXT: vpextrb $7, %xmm1, %eax
1985 ; AVX2-NEXT: andb $1, %al
1986 ; AVX2-NEXT: movb %al, (%rdi)
1987 ; AVX2-NEXT: vpextrb $6, %xmm1, %eax
1988 ; AVX2-NEXT: andb $1, %al
1989 ; AVX2-NEXT: movb %al, (%rdi)
1990 ; AVX2-NEXT: vpextrb $5, %xmm1, %eax
1991 ; AVX2-NEXT: andb $1, %al
1992 ; AVX2-NEXT: movb %al, (%rdi)
1993 ; AVX2-NEXT: vpextrb $4, %xmm1, %eax
1994 ; AVX2-NEXT: andb $1, %al
1995 ; AVX2-NEXT: movb %al, (%rdi)
1996 ; AVX2-NEXT: vpextrb $3, %xmm1, %eax
1997 ; AVX2-NEXT: andb $1, %al
1998 ; AVX2-NEXT: movb %al, (%rdi)
1999 ; AVX2-NEXT: vpextrb $2, %xmm1, %eax
2000 ; AVX2-NEXT: andb $1, %al
2001 ; AVX2-NEXT: movb %al, (%rdi)
2002 ; AVX2-NEXT: vpextrb $1, %xmm1, %eax
2003 ; AVX2-NEXT: andb $1, %al
2004 ; AVX2-NEXT: movb %al, (%rdi)
2005 ; AVX2-NEXT: vpextrb $0, %xmm1, %eax
2006 ; AVX2-NEXT: andb $1, %al
2007 ; AVX2-NEXT: movb %al, (%rdi)
2008 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
2009 ; AVX2-NEXT: andb $1, %al
2010 ; AVX2-NEXT: movb %al, (%rdi)
2011 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
2012 ; AVX2-NEXT: andb $1, %al
2013 ; AVX2-NEXT: movb %al, (%rdi)
2014 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
2015 ; AVX2-NEXT: andb $1, %al
2016 ; AVX2-NEXT: movb %al, (%rdi)
2017 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
2018 ; AVX2-NEXT: andb $1, %al
2019 ; AVX2-NEXT: movb %al, (%rdi)
2020 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
2021 ; AVX2-NEXT: andb $1, %al
2022 ; AVX2-NEXT: movb %al, (%rdi)
2023 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
2024 ; AVX2-NEXT: andb $1, %al
2025 ; AVX2-NEXT: movb %al, (%rdi)
2026 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
2027 ; AVX2-NEXT: andb $1, %al
2028 ; AVX2-NEXT: movb %al, (%rdi)
2029 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
2030 ; AVX2-NEXT: andb $1, %al
2031 ; AVX2-NEXT: movb %al, (%rdi)
2032 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
2033 ; AVX2-NEXT: andb $1, %al
2034 ; AVX2-NEXT: movb %al, (%rdi)
2035 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
2036 ; AVX2-NEXT: andb $1, %al
2037 ; AVX2-NEXT: movb %al, (%rdi)
2038 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
2039 ; AVX2-NEXT: andb $1, %al
2040 ; AVX2-NEXT: movb %al, (%rdi)
2041 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
2042 ; AVX2-NEXT: andb $1, %al
2043 ; AVX2-NEXT: movb %al, (%rdi)
2044 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
2045 ; AVX2-NEXT: andb $1, %al
2046 ; AVX2-NEXT: movb %al, (%rdi)
2047 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
2048 ; AVX2-NEXT: andb $1, %al
2049 ; AVX2-NEXT: movb %al, (%rdi)
2050 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
2051 ; AVX2-NEXT: andb $1, %al
2052 ; AVX2-NEXT: movb %al, (%rdi)
2053 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
2054 ; AVX2-NEXT: andb $1, %al
2055 ; AVX2-NEXT: movb %al, (%rdi)
2056 ; AVX2-NEXT: movq %rdi, %rax
2057 ; AVX2-NEXT: vzeroupper
2058 ; AVX2-NEXT: retq
2062 ; AVX512-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm3
2063 ; AVX512-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm1
2064 ; AVX512-NEXT: vpsllw $7, %xmm1, %xmm0
2065 ; AVX512-NEXT: vmovdqa {{.*#+}} xmm4 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
2066 ; AVX512-NEXT: vpand %xmm4, %xmm0, %xmm0
2067 ; AVX512-NEXT: vpxor %xmm5, %xmm5, %xmm5
2068 ; AVX512-NEXT: vpcmpgtb %xmm0, %xmm5, %xmm0
2069 ; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm1
2070 ; AVX512-NEXT: vpsllw $7, %xmm1, %xmm1
2071 ; AVX512-NEXT: vpand %xmm4, %xmm1, %xmm1
2072 ; AVX512-NEXT: vpcmpgtb %xmm1, %xmm5, %xmm1
2073 ; AVX512-NEXT: vpsllw $7, %xmm3, %xmm2
2074 ; AVX512-NEXT: vpand %xmm4, %xmm2, %xmm2
2075 ; AVX512-NEXT: vpcmpgtb %xmm2, %xmm5, %xmm2
2076 ; AVX512-NEXT: vextracti128 $1, %ymm3, %xmm3
2077 ; AVX512-NEXT: vpsllw $7, %xmm3, %xmm3
2078 ; AVX512-NEXT: vpand %xmm4, %xmm3, %xmm3
2079 ; AVX512-NEXT: vpcmpgtb %xmm3, %xmm5, %xmm3
2080 ; AVX512-NEXT: retq
2092 ; SSE-NEXT: movapd %xmm0, %xmm8
2093 ; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm0
2094 ; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm11
2095 ; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm10
2096 ; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm12
2097 ; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm9
2098 ; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm13
2099 ; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm14
2100 ; SSE-NEXT: movapd {{[0-9]+}}(%rsp), %xmm15
2101 ; SSE-NEXT: cmpltpd %xmm7, %xmm15
2102 ; SSE-NEXT: movapd {{.*#+}} xmm7 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
2103 ; SSE-NEXT: andpd %xmm7, %xmm15
2104 ; SSE-NEXT: cmpltpd %xmm6, %xmm14
2105 ; SSE-NEXT: andpd %xmm7, %xmm14
2106 ; SSE-NEXT: packuswb %xmm15, %xmm14
2107 ; SSE-NEXT: cmpltpd %xmm5, %xmm13
2108 ; SSE-NEXT: andpd %xmm7, %xmm13
2109 ; SSE-NEXT: cmpltpd %xmm4, %xmm9
2110 ; SSE-NEXT: andpd %xmm7, %xmm9
2111 ; SSE-NEXT: packuswb %xmm13, %xmm9
2112 ; SSE-NEXT: packuswb %xmm14, %xmm9
2113 ; SSE-NEXT: cmpltpd %xmm3, %xmm12
2114 ; SSE-NEXT: andpd %xmm7, %xmm12
2115 ; SSE-NEXT: cmpltpd %xmm2, %xmm10
2116 ; SSE-NEXT: andpd %xmm7, %xmm10
2117 ; SSE-NEXT: packuswb %xmm12, %xmm10
2118 ; SSE-NEXT: cmpltpd %xmm1, %xmm11
2119 ; SSE-NEXT: andpd %xmm7, %xmm11
2120 ; SSE-NEXT: cmpltpd %xmm8, %xmm0
2121 ; SSE-NEXT: andpd %xmm7, %xmm0
2122 ; SSE-NEXT: packuswb %xmm11, %xmm0
2123 ; SSE-NEXT: packuswb %xmm10, %xmm0
2124 ; SSE-NEXT: packuswb %xmm9, %xmm0
2125 ; SSE-NEXT: retq
2129 ; AVX1-NEXT: vcmpltpd %ymm3, %ymm7, %ymm3
2130 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm8
2131 ; AVX1-NEXT: vmovapd {{.*#+}} xmm7 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
2132 ; AVX1-NEXT: vandpd %xmm7, %xmm8, %xmm8
2133 ; AVX1-NEXT: vandpd %xmm7, %xmm3, %xmm3
2134 ; AVX1-NEXT: vpackuswb %xmm8, %xmm3, %xmm3
2135 ; AVX1-NEXT: vcmpltpd %ymm2, %ymm6, %ymm2
2136 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6
2137 ; AVX1-NEXT: vandpd %xmm7, %xmm6, %xmm6
2138 ; AVX1-NEXT: vandpd %xmm7, %xmm2, %xmm2
2139 ; AVX1-NEXT: vpackuswb %xmm6, %xmm2, %xmm2
2140 ; AVX1-NEXT: vpackuswb %xmm3, %xmm2, %xmm2
2141 ; AVX1-NEXT: vcmpltpd %ymm1, %ymm5, %ymm1
2142 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
2143 ; AVX1-NEXT: vandpd %xmm7, %xmm3, %xmm3
2144 ; AVX1-NEXT: vandpd %xmm7, %xmm1, %xmm1
2145 ; AVX1-NEXT: vpackuswb %xmm3, %xmm1, %xmm1
2146 ; AVX1-NEXT: vcmpltpd %ymm0, %ymm4, %ymm0
2147 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
2148 ; AVX1-NEXT: vandpd %xmm7, %xmm3, %xmm3
2149 ; AVX1-NEXT: vandpd %xmm7, %xmm0, %xmm0
2150 ; AVX1-NEXT: vpackuswb %xmm3, %xmm0, %xmm0
2151 ; AVX1-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
2152 ; AVX1-NEXT: vpackuswb %xmm2, %xmm0, %xmm0
2153 ; AVX1-NEXT: vzeroupper
2154 ; AVX1-NEXT: retq
2158 ; AVX2-NEXT: vcmpltpd %ymm2, %ymm6, %ymm2
2159 ; AVX2-NEXT: vpermilps {{.*#+}} ymm2 = ymm2[0,2,0,2,4,6,4,6]
2160 ; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,3,2,3]
2161 ; AVX2-NEXT: vcmpltpd %ymm3, %ymm7, %ymm3
2162 ; AVX2-NEXT: vpermilps {{.*#+}} ymm3 = ymm3[0,2,0,2,4,6,4,6]
2163 ; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,3,2,3]
2164 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
2165 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
2166 ; AVX2-NEXT: vpshufb %ymm3, %ymm2, %ymm2
2167 ; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]
2168 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm6 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
2169 ; AVX2-NEXT: vpshufb %xmm6, %xmm2, %xmm2
2170 ; AVX2-NEXT: vcmpltpd %ymm0, %ymm4, %ymm0
2171 ; AVX2-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
2172 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
2173 ; AVX2-NEXT: vcmpltpd %ymm1, %ymm5, %ymm1
2174 ; AVX2-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[0,2,0,2,4,6,4,6]
2175 ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,3,2,3]
2176 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
2177 ; AVX2-NEXT: vpshufb %ymm3, %ymm0, %ymm0
2178 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
2179 ; AVX2-NEXT: vpshufb %xmm6, %xmm0, %xmm0
2180 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
2181 ; AVX2-NEXT: vzeroupper
2182 ; AVX2-NEXT: retq
2186 ; AVX512-NEXT: vextractf32x4 $3, %zmm2, %xmm4
2187 ; AVX512-NEXT: vextractf32x4 $3, %zmm0, %xmm5
2188 ; AVX512-NEXT: xorl %eax, %eax
2189 ; AVX512-NEXT: vucomisd %xmm4, %xmm5
2190 ; AVX512-NEXT: movq $-1, %rcx
2191 ; AVX512-NEXT: movl $0, %edx
2192 ; AVX512-NEXT: cmovaq %rcx, %rdx
2193 ; AVX512-NEXT: vmovq %rdx, %xmm6
2194 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0]
2195 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
2196 ; AVX512-NEXT: vucomisd %xmm4, %xmm5
2197 ; AVX512-NEXT: movl $0, %edx
2198 ; AVX512-NEXT: cmovaq %rcx, %rdx
2199 ; AVX512-NEXT: vmovq %rdx, %xmm4
2200 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0]
2201 ; AVX512-NEXT: vextractf32x4 $2, %zmm2, %xmm5
2202 ; AVX512-NEXT: vextractf32x4 $2, %zmm0, %xmm6
2203 ; AVX512-NEXT: vucomisd %xmm5, %xmm6
2204 ; AVX512-NEXT: movl $0, %edx
2205 ; AVX512-NEXT: cmovaq %rcx, %rdx
2206 ; AVX512-NEXT: vmovq %rdx, %xmm7
2207 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
2208 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0]
2209 ; AVX512-NEXT: vucomisd %xmm5, %xmm6
2210 ; AVX512-NEXT: movl $0, %edx
2211 ; AVX512-NEXT: cmovaq %rcx, %rdx
2212 ; AVX512-NEXT: vmovq %rdx, %xmm5
2213 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0]
2214 ; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4
2215 ; AVX512-NEXT: vextractf32x4 $1, %zmm2, %xmm5
2216 ; AVX512-NEXT: vextractf32x4 $1, %zmm0, %xmm6
2217 ; AVX512-NEXT: vucomisd %xmm5, %xmm6
2218 ; AVX512-NEXT: movl $0, %edx
2219 ; AVX512-NEXT: cmovaq %rcx, %rdx
2220 ; AVX512-NEXT: vmovq %rdx, %xmm7
2221 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
2222 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm6[1,0]
2223 ; AVX512-NEXT: vucomisd %xmm5, %xmm6
2224 ; AVX512-NEXT: movl $0, %edx
2225 ; AVX512-NEXT: cmovaq %rcx, %rdx
2226 ; AVX512-NEXT: vmovq %rdx, %xmm5
2227 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm7[0],xmm5[0]
2228 ; AVX512-NEXT: vucomisd %xmm2, %xmm0
2229 ; AVX512-NEXT: movl $0, %edx
2230 ; AVX512-NEXT: cmovaq %rcx, %rdx
2231 ; AVX512-NEXT: vmovq %rdx, %xmm6
2232 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0]
2233 ; AVX512-NEXT
2234 ; AVX512-NEXT: vucomisd %xmm2, %xmm0
2235 ; AVX512-NEXT: movl $0, %edx
2236 ; AVX512-NEXT: cmovaq %rcx, %rdx
2237 ; AVX512-NEXT: vmovq %rdx, %xmm0
2238 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm6[0],xmm0[0]
2239 ; AVX512-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0
2240 ; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0
2241 ; AVX512-NEXT: vpmovqd %zmm0, %ymm0
2242 ; AVX512-NEXT: vextractf32x4 $3, %zmm3, %xmm2
2243 ; AVX512-NEXT: vextractf32x4 $3, %zmm1, %xmm4
2244 ; AVX512-NEXT: vucomisd %xmm2, %xmm4
2245 ; AVX512-NEXT: movl $0, %edx
2246 ; AVX512-NEXT: cmovaq %rcx, %rdx
2247 ; AVX512-NEXT: vmovq %rdx, %xmm5
2248 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm2 = xmm2[1,0]
2249 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0]
2250 ; AVX512-NEXT: vucomisd %xmm2, %xmm4
2251 ; AVX512-NEXT: movl $0, %edx
2252 ; AVX512-NEXT: cmovaq %rcx, %rdx
2253 ; AVX512-NEXT: vmovq %rdx, %xmm2
2254 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm5[0],xmm2[0]
2255 ; AVX512-NEXT: vextractf32x4 $2, %zmm3, %xmm4
2256 ; AVX512-NEXT: vextractf32x4 $2, %zmm1, %xmm5
2257 ; AVX512-NEXT: vucomisd %xmm4, %xmm5
2258 ; AVX512-NEXT: movl $0, %edx
2259 ; AVX512-NEXT: cmovaq %rcx, %rdx
2260 ; AVX512-NEXT: vmovq %rdx, %xmm6
2261 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0]
2262 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
2263 ; AVX512-NEXT: vucomisd %xmm4, %xmm5
2264 ; AVX512-NEXT: movl $0, %edx
2265 ; AVX512-NEXT: cmovaq %rcx, %rdx
2266 ; AVX512-NEXT: vmovq %rdx, %xmm4
2267 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0]
2268 ; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2
2269 ; AVX512-NEXT: vextractf32x4 $1, %zmm3, %xmm4
2270 ; AVX512-NEXT: vextractf32x4 $1, %zmm1, %xmm5
2271 ; AVX512-NEXT: vucomisd %xmm4, %xmm5
2272 ; AVX512-NEXT: movl $0, %edx
2273 ; AVX512-NEXT: cmovaq %rcx, %rdx
2274 ; AVX512-NEXT: vmovq %rdx, %xmm6
2275 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0]
2276 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm5[1,0]
2277 ; AVX512-NEXT: vucomisd %xmm4, %xmm5
2278 ; AVX512-NEXT: movl $0, %edx
2279 ; AVX512-NEXT: cmovaq %rcx, %rdx
2280 ; AVX512-NEXT: vmovq %rdx, %xmm4
2281 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm6[0],xmm4[0]
2282 ; AVX512-NEXT: vucomisd %xmm3, %xmm1
2283 ; AVX512-NEXT: movl $0, %edx
2284 ; AVX512-NEXT: cmovaq %rcx, %rdx
2285 ; AVX512-NEXT: vmovq %rdx, %xmm5
2286 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm3 = xmm3[1,0]
2287 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0]
2288 ; AVX512-NEXT: vucomisd %xmm3, %xmm1
2289 ; AVX512-NEXT: cmovaq %rcx, %rax
2290 ; AVX512-NEXT: vmovq %rax, %xmm1
2291 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm5[0],xmm1[0]
2292 ; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1
2293 ; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1
2294 ; AVX512-NEXT: vpmovqd %zmm1, %ymm1
2295 ; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
2296 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
2297 ; AVX512-NEXT: retq
2305 ; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm8
2306 ; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm9
2307 ; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm10
2308 ; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm11
2309 ; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm12
2310 ; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm13
2311 ; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm14
2312 ; SSE2-NEXT: movaps {{[0-9]+}}(%rsp), %xmm15
2313 ; SSE2-NEXT: cmpltps %xmm3, %xmm15
2314 ; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm15[0,2,2,3,4,5,6,7]
2315 ; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]
2316 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]
2317 ; SSE2-NEXT: cmpltps %xmm2, %xmm14
2318 ; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm14[0,2,2,3,4,5,6,7]
2319 ; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]
2320 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
2321 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
2322 ; SSE2-NEXT: psllw $15, %xmm2
2323 ; SSE2-NEXT: psraw $15, %xmm2
2324 ; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]
2325 ; SSE2-NEXT: pand %xmm3, %xmm2
2326 ; SSE2-NEXT: cmpltps %xmm1, %xmm13
2327 ; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm13[0,2,2,3,4,5,6,7]
2328 ; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
2329 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2330 ; SSE2-NEXT: cmpltps %xmm0, %xmm12
2331 ; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm12[0,2,2,3,4,5,6,7]
2332 ; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7]
2333 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
2334 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2335 ; SSE2-NEXT: psllw $15, %xmm0
2336 ; SSE2-NEXT: psraw $15, %xmm0
2337 ; SSE2-NEXT: pand %xmm3, %xmm0
2338 ; SSE2-NEXT: packuswb %xmm2, %xmm0
2339 ; SSE2-NEXT: cmpltps %xmm7, %xmm11
2340 ; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm11[0,2,2,3,4,5,6,7]
2341 ; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
2342 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2343 ; SSE2-NEXT: cmpltps %xmm6, %xmm10
2344 ; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm10[0,2,2,3,4,5,6,7]
2345 ; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]
2346 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
2347 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0]
2348 ; SSE2-NEXT: psllw $15, %xmm2
2349 ; SSE2-NEXT: psraw $15, %xmm2
2350 ; SSE2-NEXT: pand %xmm3, %xmm2
2351 ; SSE2-NEXT: cmpltps %xmm5, %xmm9
2352 ; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm9[0,2,2,3,4,5,6,7]
2353 ; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
2354 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
2355 ; SSE2-NEXT: cmpltps %xmm4, %xmm8
2356 ; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm8[0,2,2,3,4,5,6,7]
2357 ; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7]
2358 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]
2359 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0]
2360 ; SSE2-NEXT: psllw $15, %xmm4
2361 ; SSE2-NEXT: psraw $15, %xmm4
2362 ; SSE2-NEXT: pand %xmm3, %xmm4
2363 ; SSE2-NEXT: packuswb %xmm2, %xmm4
2364 ; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp)
2365 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2366 ; SSE2-NEXT: andb $1, %al
2367 ; SSE2-NEXT: movb %al, 2(%rdi)
2368 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
2369 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2370 ; SSE2-NEXT: andb $1, %al
2371 ; SSE2-NEXT: movb %al, (%rdi)
2372 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2373 ; SSE2-NEXT: andb $1, %al
2374 ; SSE2-NEXT: movb %al, 2(%rdi)
2375 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2376 ; SSE2-NEXT: andb $1, %al
2377 ; SSE2-NEXT: movb %al, (%rdi)
2378 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2379 ; SSE2-NEXT: andb $1, %al
2380 ; SSE2-NEXT: movb %al, 2(%rdi)
2381 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2382 ; SSE2-NEXT: andb $1, %al
2383 ; SSE2-NEXT: movb %al, (%rdi)
2384 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2385 ; SSE2-NEXT: andb $1, %al
2386 ; SSE2-NEXT: movb %al, 2(%rdi)
2387 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2388 ; SSE2-NEXT: andb $1, %al
2389 ; SSE2-NEXT: movb %al, (%rdi)
2390 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2391 ; SSE2-NEXT: andb $1, %al
2392 ; SSE2-NEXT: movb %al, 2(%rdi)
2393 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2394 ; SSE2-NEXT: andb $1, %al
2395 ; SSE2-NEXT: movb %al, (%rdi)
2396 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2397 ; SSE2-NEXT: andb $1, %al
2398 ; SSE2-NEXT: movb %al, 2(%rdi)
2399 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2400 ; SSE2-NEXT: andb $1, %al
2401 ; SSE2-NEXT: movb %al, (%rdi)
2402 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2403 ; SSE2-NEXT: andb $1, %al
2404 ; SSE2-NEXT: movb %al, 2(%rdi)
2405 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2406 ; SSE2-NEXT: andb $1, %al
2407 ; SSE2-NEXT: movb %al, (%rdi)
2408 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2409 ; SSE2-NEXT: andb $1, %al
2410 ; SSE2-NEXT: movb %al, 2(%rdi)
2411 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2412 ; SSE2-NEXT: andb $1, %al
2413 ; SSE2-NEXT: movb %al, (%rdi)
2414 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2415 ; SSE2-NEXT: andb $1, %al
2416 ; SSE2-NEXT: movb %al, 2(%rdi)
2417 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2418 ; SSE2-NEXT: andb $1, %al
2419 ; SSE2-NEXT: movb %al, (%rdi)
2420 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2421 ; SSE2-NEXT: andb $1, %al
2422 ; SSE2-NEXT: movb %al, 2(%rdi)
2423 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2424 ; SSE2-NEXT: andb $1, %al
2425 ; SSE2-NEXT: movb %al, (%rdi)
2426 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2427 ; SSE2-NEXT: andb $1, %al
2428 ; SSE2-NEXT: movb %al, 2(%rdi)
2429 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2430 ; SSE2-NEXT: andb $1, %al
2431 ; SSE2-NEXT: movb %al, (%rdi)
2432 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2433 ; SSE2-NEXT: andb $1, %al
2434 ; SSE2-NEXT: movb %al, 2(%rdi)
2435 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2436 ; SSE2-NEXT: andb $1, %al
2437 ; SSE2-NEXT: movb %al, (%rdi)
2438 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2439 ; SSE2-NEXT: andb $1, %al
2440 ; SSE2-NEXT: movb %al, 2(%rdi)
2441 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2442 ; SSE2-NEXT: andb $1, %al
2443 ; SSE2-NEXT: movb %al, (%rdi)
2444 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2445 ; SSE2-NEXT: andb $1, %al
2446 ; SSE2-NEXT: movb %al, 2(%rdi)
2447 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2448 ; SSE2-NEXT: andb $1, %al
2449 ; SSE2-NEXT: movb %al, (%rdi)
2450 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2451 ; SSE2-NEXT: andb $1, %al
2452 ; SSE2-NEXT: movb %al, 2(%rdi)
2453 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2454 ; SSE2-NEXT: andb $1, %al
2455 ; SSE2-NEXT: movb %al, (%rdi)
2456 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2457 ; SSE2-NEXT: andb $1, %al
2458 ; SSE2-NEXT: movb %al, 2(%rdi)
2459 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
2460 ; SSE2-NEXT: andb $1, %al
2461 ; SSE2-NEXT: movb %al, (%rdi)
2462 ; SSE2-NEXT: movq %rdi, %rax
2463 ; SSE2-NEXT: retq
2467 ; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm9
2468 ; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm11
2469 ; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm10
2470 ; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm12
2471 ; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm8
2472 ; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm14
2473 ; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm13
2474 ; SSE42-NEXT: movaps {{[0-9]+}}(%rsp), %xmm15
2475 ; SSE42-NEXT: cmpltps %xmm3, %xmm15
2476 ; SSE42-NEXT: movdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
2477 ; SSE42-NEXT: pshufb %xmm3, %xmm15
2478 ; SSE42-NEXT: cmpltps %xmm2, %xmm13
2479 ; SSE42-NEXT: pshufb %xmm3, %xmm13
2480 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm13 = xmm13[0],xmm15[0]
2481 ; SSE42-NEXT: psllw $15, %xmm13
2482 ; SSE42-NEXT: psraw $15, %xmm13
2483 ; SSE42-NEXT: movdqa {{.*#+}} xmm2 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
2484 ; SSE42-NEXT: pshufb %xmm2, %xmm13
2485 ; SSE42-NEXT: cmpltps %xmm1, %xmm14
2486 ; SSE42-NEXT: pshufb %xmm3, %xmm14
2487 ; SSE42-NEXT: cmpltps %xmm0, %xmm8
2488 ; SSE42-NEXT: pshufb %xmm3, %xmm8
2489 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm14[0]
2490 ; SSE42-NEXT: psllw $15, %xmm8
2491 ; SSE42-NEXT: psraw $15, %xmm8
2492 ; SSE42-NEXT: pshufb %xmm2, %xmm8
2493 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm8 = xmm8[0],xmm13[0]
2494 ; SSE42-NEXT: cmpltps %xmm7, %xmm12
2495 ; SSE42-NEXT: pshufb %xmm3, %xmm12
2496 ; SSE42-NEXT: cmpltps %xmm6, %xmm10
2497 ; SSE42-NEXT: pshufb %xmm3, %xmm10
2498 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm10 = xmm10[0],xmm12[0]
2499 ; SSE42-NEXT: psllw $15, %xmm10
2500 ; SSE42-NEXT: psraw $15, %xmm10
2501 ; SSE42-NEXT: pshufb %xmm2, %xmm10
2502 ; SSE42-NEXT: cmpltps %xmm5, %xmm11
2503 ; SSE42-NEXT: pshufb %xmm3, %xmm11
2504 ; SSE42-NEXT: cmpltps %xmm4, %xmm9
2505 ; SSE42-NEXT: pshufb %xmm3, %xmm9
2506 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm11[0]
2507 ; SSE42-NEXT: psllw $15, %xmm9
2508 ; SSE42-NEXT: psraw $15, %xmm9
2509 ; SSE42-NEXT: pshufb %xmm2, %xmm9
2510 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm9 = xmm9[0],xmm10[0]
2511 ; SSE42-NEXT: pextrb $15, %xmm9, %eax
2512 ; SSE42-NEXT: andb $1, %al
2513 ; SSE42-NEXT: movb %al, 2(%rdi)
2514 ; SSE42-NEXT: pextrb $14, %xmm9, %eax
2515 ; SSE42-NEXT: andb $1, %al
2516 ; SSE42-NEXT: movb %al, 2(%rdi)
2517 ; SSE42-NEXT: pextrb $13, %xmm9, %eax
2518 ; SSE42-NEXT: andb $1, %al
2519 ; SSE42-NEXT: movb %al, 2(%rdi)
2520 ; SSE42-NEXT: pextrb $12, %xmm9, %eax
2521 ; SSE42-NEXT: andb $1, %al
2522 ; SSE42-NEXT: movb %al, 2(%rdi)
2523 ; SSE42-NEXT: pextrb $11, %xmm9, %eax
2524 ; SSE42-NEXT: andb $1, %al
2525 ; SSE42-NEXT: movb %al, 2(%rdi)
2526 ; SSE42-NEXT: pextrb $10, %xmm9, %eax
2527 ; SSE42-NEXT: andb $1, %al
2528 ; SSE42-NEXT: movb %al, 2(%rdi)
2529 ; SSE42-NEXT: pextrb $9, %xmm9, %eax
2530 ; SSE42-NEXT: andb $1, %al
2531 ; SSE42-NEXT: movb %al, 2(%rdi)
2532 ; SSE42-NEXT: pextrb $8, %xmm9, %eax
2533 ; SSE42-NEXT: andb $1, %al
2534 ; SSE42-NEXT: movb %al, 2(%rdi)
2535 ; SSE42-NEXT: pextrb $7, %xmm9, %eax
2536 ; SSE42-NEXT: andb $1, %al
2537 ; SSE42-NEXT: movb %al, 2(%rdi)
2538 ; SSE42-NEXT: pextrb $6, %xmm9, %eax
2539 ; SSE42-NEXT: andb $1, %al
2540 ; SSE42-NEXT: movb %al, 2(%rdi)
2541 ; SSE42-NEXT: pextrb $5, %xmm9, %eax
2542 ; SSE42-NEXT: andb $1, %al
2543 ; SSE42-NEXT: movb %al, 2(%rdi)
2544 ; SSE42-NEXT: pextrb $4, %xmm9, %eax
2545 ; SSE42-NEXT: andb $1, %al
2546 ; SSE42-NEXT: movb %al, 2(%rdi)
2547 ; SSE42-NEXT: pextrb $3, %xmm9, %eax
2548 ; SSE42-NEXT: andb $1, %al
2549 ; SSE42-NEXT: movb %al, 2(%rdi)
2550 ; SSE42-NEXT: pextrb $2, %xmm9, %eax
2551 ; SSE42-NEXT: andb $1, %al
2552 ; SSE42-NEXT: movb %al, 2(%rdi)
2553 ; SSE42-NEXT: pextrb $1, %xmm9, %eax
2554 ; SSE42-NEXT: andb $1, %al
2555 ; SSE42-NEXT: movb %al, 2(%rdi)
2556 ; SSE42-NEXT: pextrb $0, %xmm9, %eax
2557 ; SSE42-NEXT: andb $1, %al
2558 ; SSE42-NEXT: movb %al, 2(%rdi)
2559 ; SSE42-NEXT: pextrb $15, %xmm8, %eax
2560 ; SSE42-NEXT: andb $1, %al
2561 ; SSE42-NEXT: movb %al, (%rdi)
2562 ; SSE42-NEXT: pextrb $14, %xmm8, %eax
2563 ; SSE42-NEXT: andb $1, %al
2564 ; SSE42-NEXT: movb %al, (%rdi)
2565 ; SSE42-NEXT: pextrb $13, %xmm8, %eax
2566 ; SSE42-NEXT: andb $1, %al
2567 ; SSE42-NEXT: movb %al, (%rdi)
2568 ; SSE42-NEXT: pextrb $12, %xmm8, %eax
2569 ; SSE42-NEXT: andb $1, %al
2570 ; SSE42-NEXT: movb %al, (%rdi)
2571 ; SSE42-NEXT: pextrb $11, %xmm8, %eax
2572 ; SSE42-NEXT: andb $1, %al
2573 ; SSE42-NEXT: movb %al, (%rdi)
2574 ; SSE42-NEXT: pextrb $10, %xmm8, %eax
2575 ; SSE42-NEXT: andb $1, %al
2576 ; SSE42-NEXT: movb %al, (%rdi)
2577 ; SSE42-NEXT: pextrb $9, %xmm8, %eax
2578 ; SSE42-NEXT: andb $1, %al
2579 ; SSE42-NEXT: movb %al, (%rdi)
2580 ; SSE42-NEXT: pextrb $8, %xmm8, %eax
2581 ; SSE42-NEXT: andb $1, %al
2582 ; SSE42-NEXT: movb %al, (%rdi)
2583 ; SSE42-NEXT: pextrb $7, %xmm8, %eax
2584 ; SSE42-NEXT: andb $1, %al
2585 ; SSE42-NEXT: movb %al, (%rdi)
2586 ; SSE42-NEXT: pextrb $6, %xmm8, %eax
2587 ; SSE42-NEXT: andb $1, %al
2588 ; SSE42-NEXT: movb %al, (%rdi)
2589 ; SSE42-NEXT: pextrb $5, %xmm8, %eax
2590 ; SSE42-NEXT: andb $1, %al
2591 ; SSE42-NEXT: movb %al, (%rdi)
2592 ; SSE42-NEXT: pextrb $4, %xmm8, %eax
2593 ; SSE42-NEXT: andb $1, %al
2594 ; SSE42-NEXT: movb %al, (%rdi)
2595 ; SSE42-NEXT: pextrb $3, %xmm8, %eax
2596 ; SSE42-NEXT: andb $1, %al
2597 ; SSE42-NEXT: movb %al, (%rdi)
2598 ; SSE42-NEXT: pextrb $2, %xmm8, %eax
2599 ; SSE42-NEXT: andb $1, %al
2600 ; SSE42-NEXT: movb %al, (%rdi)
2601 ; SSE42-NEXT: pextrb $1, %xmm8, %eax
2602 ; SSE42-NEXT: andb $1, %al
2603 ; SSE42-NEXT: movb %al, (%rdi)
2604 ; SSE42-NEXT: pextrb $0, %xmm8, %eax
2605 ; SSE42-NEXT: andb $1, %al
2606 ; SSE42-NEXT: movb %al, (%rdi)
2607 ; SSE42-NEXT: movq %rdi, %rax
2608 ; SSE42-NEXT: retq
2612 ; AVX1-NEXT: vcmpltps %ymm3, %ymm7, %ymm3
2613 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm8
2614 ; AVX1-NEXT: vmovaps {{.*#+}} xmm7 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
2615 ; AVX1-NEXT: vandps %xmm7, %xmm8, %xmm8
2616 ; AVX1-NEXT: vandps %xmm7, %xmm3, %xmm3
2617 ; AVX1-NEXT: vpackuswb %xmm8, %xmm3, %xmm3
2618 ; AVX1-NEXT: vcmpltps %ymm2, %ymm6, %ymm2
2619 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6
2620 ; AVX1-NEXT: vandps %xmm7, %xmm6, %xmm6
2621 ; AVX1-NEXT: vandps %xmm7, %xmm2, %xmm2
2622 ; AVX1-NEXT: vpackuswb %xmm6, %xmm2, %xmm2
2623 ; AVX1-NEXT: vpackuswb %xmm3, %xmm2, %xmm2
2624 ; AVX1-NEXT: vcmpltps %ymm1, %ymm5, %ymm1
2625 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
2626 ; AVX1-NEXT: vandps %xmm7, %xmm3, %xmm3
2627 ; AVX1-NEXT: vandps %xmm7, %xmm1, %xmm1
2628 ; AVX1-NEXT: vpackuswb %xmm3, %xmm1, %xmm1
2629 ; AVX1-NEXT: vcmpltps %ymm0, %ymm4, %ymm0
2630 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
2631 ; AVX1-NEXT: vandps %xmm7, %xmm3, %xmm3
2632 ; AVX1-NEXT: vandps %xmm7, %xmm0, %xmm0
2633 ; AVX1-NEXT: vpackuswb %xmm3, %xmm0, %xmm0
2634 ; AVX1-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
2635 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
2636 ; AVX1-NEXT: retq
2640 ; AVX2-NEXT: vcmpltps %ymm3, %ymm7, %ymm3
2641 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm8 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
2642 ; AVX2-NEXT: vpshufb %ymm8, %ymm3, %ymm3
2643 ; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,2,2,3]
2644 ; AVX2-NEXT
2645 ; AVX2-NEXT: vpshufb %xmm7, %xmm3, %xmm3
2646 ; AVX2-NEXT: vcmpltps %ymm2, %ymm6, %ymm2
2647 ; AVX2-NEXT: vpshufb %ymm8, %ymm2, %ymm2
2648 ; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]
2649 ; AVX2-NEXT: vpshufb %xmm7, %xmm2, %xmm2
2650 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
2651 ; AVX2-NEXT: vcmpltps %ymm1, %ymm5, %ymm1
2652 ; AVX2-NEXT: vpshufb %ymm8, %ymm1, %ymm1
2653 ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]
2654 ; AVX2-NEXT: vpshufb %xmm7, %xmm1, %xmm1
2655 ; AVX2-NEXT: vcmpltps %ymm0, %ymm4, %ymm0
2656 ; AVX2-NEXT: vpshufb %ymm8, %ymm0, %ymm0
2657 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
2658 ; AVX2-NEXT: vpshufb %xmm7, %xmm0, %xmm0
2659 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2660 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0
2661 ; AVX2-NEXT: retq
2665 ; AVX512-NEXT: vextractf32x4 $3, %zmm2, %xmm4
2666 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3]
2667 ; AVX512-NEXT: vextractf32x4 $3, %zmm0, %xmm6
2668 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3]
2669 ; AVX512-NEXT: xorl %eax, %eax
2670 ; AVX512-NEXT: vucomiss %xmm5, %xmm7
2671 ; AVX512-NEXT: movl $-1, %ecx
2672 ; AVX512-NEXT: movl $0, %edx
2673 ; AVX512-NEXT: cmoval %ecx, %edx
2674 ; AVX512-NEXT: vucomiss %xmm4, %xmm6
2675 ; AVX512-NEXT: movl $0, %esi
2676 ; AVX512-NEXT: cmoval %ecx, %esi
2677 ; AVX512-NEXT: vmovd %esi, %xmm5
2678 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm8
2679 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0]
2680 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm6[1,0]
2681 ; AVX512-NEXT: vucomiss %xmm7, %xmm5
2682 ; AVX512-NEXT: movl $0, %edx
2683 ; AVX512-NEXT: cmoval %ecx, %edx
2684 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm8, %xmm5
2685 ; AVX512-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3]
2686 ; AVX512-NEXT: vpermilps {{.*#+}} xmm6 = xmm6[3,1,2,3]
2687 ; AVX512-NEXT: vucomiss %xmm4, %xmm6
2688 ; AVX512-NEXT: movl $0, %edx
2689 ; AVX512-NEXT: cmoval %ecx, %edx
2690 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm5, %xmm8
2691 ; AVX512-NEXT: vextractf32x4 $2, %zmm2, %xmm5
2692 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3]
2693 ; AVX512-NEXT: vextractf32x4 $2, %zmm0, %xmm7
2694 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3]
2695 ; AVX512-NEXT: vucomiss %xmm6, %xmm4
2696 ; AVX512-NEXT: movl $0, %edx
2697 ; AVX512-NEXT: cmoval %ecx, %edx
2698 ; AVX512-NEXT: vucomiss %xmm5, %xmm7
2699 ; AVX512-NEXT: movl $0, %esi
2700 ; AVX512-NEXT: cmoval %ecx, %esi
2701 ; AVX512-NEXT: vmovd %esi, %xmm4
2702 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9
2703 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0]
2704 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0]
2705 ; AVX512-NEXT: vucomiss %xmm6, %xmm4
2706 ; AVX512-NEXT: movl $0, %edx
2707 ; AVX512-NEXT: cmoval %ecx, %edx
2708 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4
2709 ; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3]
2710 ; AVX512-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3]
2711 ; AVX512-NEXT: vucomiss %xmm5, %xmm6
2712 ; AVX512-NEXT: movl $0, %edx
2713 ; AVX512-NEXT: cmoval %ecx, %edx
2714 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4
2715 ; AVX512-NEXT: vinserti128 $1, %xmm8, %ymm4, %ymm8
2716 ; AVX512-NEXT: vextractf32x4 $1, %zmm2, %xmm5
2717 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3]
2718 ; AVX512-NEXT: vextractf32x4 $1, %zmm0, %xmm7
2719 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm7[1,1,3,3]
2720 ; AVX512-NEXT: vucomiss %xmm6, %xmm4
2721 ; AVX512-NEXT: movl $0, %edx
2722 ; AVX512-NEXT: cmoval %ecx, %edx
2723 ; AVX512-NEXT: vucomiss %xmm5, %xmm7
2724 ; AVX512-NEXT: movl $0, %esi
2725 ; AVX512-NEXT: cmoval %ecx, %esi
2726 ; AVX512-NEXT: vmovd %esi, %xmm4
2727 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm9
2728 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0]
2729 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm4 = xmm7[1,0]
2730 ; AVX512-NEXT: vucomiss %xmm6, %xmm4
2731 ; AVX512-NEXT: movl $0, %edx
2732 ; AVX512-NEXT: cmoval %ecx, %edx
2733 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm9, %xmm4
2734 ; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3]
2735 ; AVX512-NEXT: vpermilps {{.*#+}} xmm6 = xmm7[3,1,2,3]
2736 ; AVX512-NEXT: vucomiss %xmm5, %xmm6
2737 ; AVX512-NEXT: movl $0, %edx
2738 ; AVX512-NEXT: cmoval %ecx, %edx
2739 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm4, %xmm4
2740 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm5 = xmm2[1,1,3,3]
2741 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm0[1,1,3,3]
2742 ; AVX512-NEXT: vucomiss %xmm5, %xmm6
2743 ; AVX512-NEXT: movl $0, %edx
2744 ; AVX512-NEXT: cmoval %ecx, %edx
2745 ; AVX512-NEXT: vucomiss %xmm2, %xmm0
2746 ; AVX512-NEXT: movl $0, %esi
2747 ; AVX512-NEXT: cmoval %ecx, %esi
2748 ; AVX512-NEXT: vmovd %esi, %xmm5
2749 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5
2750 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0]
2751 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm0[1,0]
2752 ; AVX512-NEXT: vucomiss %xmm6, %xmm7
2753 ; AVX512-NEXT: movl $0, %edx
2754 ; AVX512-NEXT: cmoval %ecx, %edx
2755 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5
2756 ; AVX512-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3]
2757 ; AVX512-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3]
2758 ; AVX512-NEXT: vucomiss %xmm2, %xmm0
2759 ; AVX512-NEXT: movl $0, %edx
2760 ; AVX512-NEXT: cmoval %ecx, %edx
2761 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm5, %xmm0
2762 ; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm0, %ymm0
2763 ; AVX512-NEXT: vinserti64x4 $1, %ymm8, %zmm0, %zmm0
2764 ; AVX512-NEXT: vpmovdb %zmm0, %xmm8
2765 ; AVX512-NEXT: vextractf32x4 $3, %zmm3, %xmm2
2766 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm2[1,1,3,3]
2767 ; AVX512-NEXT: vextractf32x4 $3, %zmm1, %xmm5
2768 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3]
2769 ; AVX512-NEXT: vucomiss %xmm4, %xmm6
2770 ; AVX512-NEXT: movl $0, %edx
2771 ; AVX512-NEXT: cmoval %ecx, %edx
2772 ; AVX512-NEXT: vucomiss %xmm2, %xmm5
2773 ; AVX512-NEXT: movl $0, %esi
2774 ; AVX512-NEXT: cmoval %ecx, %esi
2775 ; AVX512-NEXT: vmovd %esi, %xmm4
2776 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4
2777 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm2[1,0]
2778 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0]
2779 ; AVX512-NEXT: vucomiss %xmm6, %xmm7
2780 ; AVX512-NEXT: movl $0, %edx
2781 ; AVX512-NEXT: cmoval %ecx, %edx
2782 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4
2783 ; AVX512-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,1,2,3]
2784 ; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3]
2785 ; AVX512-NEXT: vucomiss %xmm2, %xmm5
2786 ; AVX512-NEXT: movl $0, %edx
2787 ; AVX512-NEXT: cmoval %ecx, %edx
2788 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm4, %xmm2
2789 ; AVX512-NEXT: vextractf32x4 $2, %zmm3, %xmm4
2790 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm5 = xmm4[1,1,3,3]
2791 ; AVX512-NEXT: vextractf32x4 $2, %zmm1, %xmm6
2792 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm7 = xmm6[1,1,3,3]
2793 ; AVX512-NEXT: vucomiss %xmm5, %xmm7
2794 ; AVX512-NEXT: movl $0, %edx
2795 ; AVX512-NEXT: cmoval %ecx, %edx
2796 ; AVX512-NEXT: vucomiss %xmm4, %xmm6
2797 ; AVX512-NEXT: movl $0, %esi
2798 ; AVX512-NEXT: cmoval %ecx, %esi
2799 ; AVX512-NEXT: vmovd %esi, %xmm5
2800 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5
2801 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0]
2802 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm0 = xmm6[1,0]
2803 ; AVX512-NEXT: vucomiss %xmm7, %xmm0
2804 ; AVX512-NEXT: movl $0, %edx
2805 ; AVX512-NEXT: cmoval %ecx, %edx
2806 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm5, %xmm0
2807 ; AVX512-NEXT: vpermilps {{.*#+}} xmm4 = xmm4[3,1,2,3]
2808 ; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm6[3,1,2,3]
2809 ; AVX512-NEXT: vucomiss %xmm4, %xmm5
2810 ; AVX512-NEXT: movl $0, %edx
2811 ; AVX512-NEXT: cmoval %ecx, %edx
2812 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm0, %xmm0
2813 ; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm2
2814 ; AVX512-NEXT: vextractf32x4 $1, %zmm3, %xmm0
2815 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm0[1,1,3,3]
2816 ; AVX512-NEXT: vextractf32x4 $1, %zmm1, %xmm5
2817 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm6 = xmm5[1,1,3,3]
2818 ; AVX512-NEXT: vucomiss %xmm4, %xmm6
2819 ; AVX512-NEXT: movl $0, %edx
2820 ; AVX512-NEXT: cmoval %ecx, %edx
2821 ; AVX512-NEXT: vucomiss %xmm0, %xmm5
2822 ; AVX512-NEXT: movl $0, %esi
2823 ; AVX512-NEXT: cmoval %ecx, %esi
2824 ; AVX512-NEXT: vmovd %esi, %xmm4
2825 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4
2826 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm0[1,0]
2827 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm7 = xmm5[1,0]
2828 ; AVX512-NEXT: vucomiss %xmm6, %xmm7
2829 ; AVX512-NEXT: movl $0, %edx
2830 ; AVX512-NEXT: cmoval %ecx, %edx
2831 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4
2832 ; AVX512-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,1,2,3]
2833 ; AVX512-NEXT: vpermilps {{.*#+}} xmm5 = xmm5[3,1,2,3]
2834 ; AVX512-NEXT: vucomiss %xmm0, %xmm5
2835 ; AVX512-NEXT: movl $0, %edx
2836 ; AVX512-NEXT: cmoval %ecx, %edx
2837 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm4, %xmm0
2838 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm4 = xmm3[1,1,3,3]
2839 ; AVX512-NEXT: vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3]
2840 ; AVX512-NEXT: vucomiss %xmm4, %xmm5
2841 ; AVX512-NEXT: movl $0, %edx
2842 ; AVX512-NEXT: cmoval %ecx, %edx
2843 ; AVX512-NEXT: vucomiss %xmm3, %xmm1
2844 ; AVX512-NEXT: movl $0, %esi
2845 ; AVX512-NEXT: cmoval %ecx, %esi
2846 ; AVX512-NEXT: vmovd %esi, %xmm4
2847 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm4, %xmm4
2848 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm5 = xmm3[1,0]
2849 ; AVX512-NEXT: vpermilpd {{.*#+}} xmm6 = xmm1[1,0]
2850 ; AVX512-NEXT: vucomiss %xmm5, %xmm6
2851 ; AVX512-NEXT: movl $0, %edx
2852 ; AVX512-NEXT: cmoval %ecx, %edx
2853 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm4, %xmm4
2854 ; AVX512-NEXT: vpermilps {{.*#+}} xmm3 = xmm3[3,1,2,3]
2855 ; AVX512-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[3,1,2,3]
2856 ; AVX512-NEXT: vucomiss %xmm3, %xmm1
2857 ; AVX512-NEXT: cmoval %ecx, %eax
2858 ; AVX512-NEXT: vpinsrd $3, %eax, %xmm4, %xmm1
2859 ; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0
2860 ; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0
2861 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
2862 ; AVX512-NEXT: vinsertf128 $1, %xmm0, %ymm8, %ymm0
2863 ; AVX512-NEXT: retq
2871 ; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [2147483648,0,2147483648,0]
2872 ; SSE2-NEXT: pxor %xmm8, %xmm7
2873 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9
2874 ; SSE2-NEXT: pxor %xmm8, %xmm9
2875 ; SSE2-NEXT: movdqa %xmm7, %xmm10
2876 ; SSE2-NEXT: pcmpgtd %xmm9, %xmm10
2877 ; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]
2878 ; SSE2-NEXT: pcmpeqd %xmm7, %xmm9
2879 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm9[1,1,3,3]
2880 ; SSE2-NEXT: pand %xmm11, %xmm7
2881 ; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]
2882 ; SSE2-NEXT: por %xmm7, %xmm9
2883 ; SSE2-NEXT: movdqa {{.*#+}} xmm10 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
2884 ; SSE2-NEXT: pand %xmm10, %xmm9
2885 ; SSE2-NEXT: pxor %xmm8, %xmm6
2886 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7
2887 ; SSE2-NEXT: pxor %xmm8, %xmm7
2888 ; SSE2-NEXT: movdqa %xmm6, %xmm11
2889 ; SSE2-NEXT: pcmpgtd %xmm7, %xmm11
2890 ; SSE2-NEXT: pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]
2891 ; SSE2-NEXT: pcmpeqd %xmm6, %xmm7
2892 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm7[1,1,3,3]
2893 ; SSE2-NEXT: pand %xmm12, %xmm7
2894 ; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm11[1,1,3,3]
2895 ; SSE2-NEXT: por %xmm7, %xmm11
2896 ; SSE2-NEXT: pand %xmm10, %xmm11
2897 ; SSE2-NEXT: packuswb %xmm9, %xmm11
2898 ; SSE2-NEXT: pxor %xmm8, %xmm5
2899 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm7
2900 ; SSE2-NEXT: pxor %xmm8, %xmm7
2901 ; SSE2-NEXT: movdqa %xmm5, %xmm6
2902 ; SSE2-NEXT: pcmpgtd %xmm7, %xmm6
2903 ; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm6[0,0,2,2]
2904 ; SSE2-NEXT: pcmpeqd %xmm5, %xmm7
2905 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
2906 ; SSE2-NEXT: pand %xmm9, %xmm5
2907 ; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
2908 ; SSE2-NEXT: por %xmm5, %xmm6
2909 ; SSE2-NEXT: pand %xmm10, %xmm6
2910 ; SSE2-NEXT: pxor %xmm8, %xmm4
2911 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5
2912 ; SSE2-NEXT: pxor %xmm8, %xmm5
2913 ; SSE2-NEXT: movdqa %xmm4, %xmm7
2914 ; SSE2-NEXT: pcmpgtd %xmm5, %xmm7
2915 ; SSE2-NEXT: pshufd {{.*#+}} xmm9 = xmm7[0,0,2,2]
2916 ; SSE2-NEXT: pcmpeqd %xmm4, %xmm5
2917 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
2918 ; SSE2-NEXT: pand %xmm9, %xmm5
2919 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm7[1,1,3,3]
2920 ; SSE2-NEXT: por %xmm5, %xmm4
2921 ; SSE2-NEXT: pand %xmm10, %xmm4
2922 ; SSE2-NEXT: packuswb %xmm6, %xmm4
2923 ; SSE2-NEXT: packuswb %xmm11, %xmm4
2924 ; SSE2-NEXT: pxor %xmm8, %xmm3
2925 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm5
2926 ; SSE2-NEXT: pxor %xmm8, %xmm5
2927 ; SSE2-NEXT: movdqa %xmm3, %xmm6
2928 ; SSE2-NEXT: pcmpgtd %xmm5, %xmm6
2929 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
2930 ; SSE2-NEXT: pcmpeqd %xmm3, %xmm5
2931 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
2932 ; SSE2-NEXT: pand %xmm7, %xmm3
2933 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]
2934 ; SSE2-NEXT: por %xmm3, %xmm5
2935 ; SSE2-NEXT: pand %xmm10, %xmm5
2936 ; SSE2-NEXT: pxor %xmm8, %xmm2
2937 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3
2938 ; SSE2-NEXT: pxor %xmm8, %xmm3
2939 ; SSE2-NEXT: movdqa %xmm2, %xmm6
2940 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm6
2941 ; SSE2-NEXT: pshufd {{.*#+}} xmm7 = xmm6[0,0,2,2]
2942 ; SSE2-NEXT: pcmpeqd %xmm2, %xmm3
2943 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
2944 ; SSE2-NEXT: pand %xmm7, %xmm3
2945 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm6[1,1,3,3]
2946 ; SSE2-NEXT: por %xmm3, %xmm2
2947 ; SSE2-NEXT: pand %xmm10, %xmm2
2948 ; SSE2-NEXT: packuswb %xmm5, %xmm2
2949 ; SSE2-NEXT: pxor %xmm8, %xmm1
2950 ; SSE2-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm3
2951 ; SSE2-NEXT: pxor %xmm8, %xmm3
2952 ; SSE2-NEXT: movdqa %xmm1, %xmm5
2953 ; SSE2-NEXT: pcmpgtd %xmm3, %xmm5
2954 ; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]
2955 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm3
2956 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[1,1,3,3]
2957 ; SSE2-NEXT: pand %xmm6, %xmm1
2958 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm5[1,1,3,3]
2959 ; SSE2-NEXT: por %xmm1, %xmm3
2960 ; SSE2-NEXT: pand %xmm10, %xmm3
2961 ; SSE2-NEXT: pxor %xmm8, %xmm0
2962 ; SSE2-NEXT: pxor {{[0-9]+}}(%rsp), %xmm8
2963 ; SSE2-NEXT: movdqa %xmm0, %xmm1
2964 ; SSE2-NEXT: pcmpgtd %xmm8, %xmm1
2965 ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm1[0,0,2,2]
2966 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm8
2967 ; SSE2-NEXT: pshufd {{.*#+}} xmm6 = xmm8[1,1,3,3]
2968 ; SSE2-NEXT: pand %xmm5, %xmm6
2969 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
2970 ; SSE2-NEXT: por %xmm6, %xmm0
2971 ; SSE2-NEXT: pand %xmm10, %xmm0
2972 ; SSE2-NEXT: packuswb %xmm3, %xmm0
2973 ; SSE2-NEXT: packuswb %xmm2, %xmm0
2974 ; SSE2-NEXT: packuswb %xmm4, %xmm0
2975 ; SSE2-NEXT: retq
2979 ; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm7
2980 ; SSE42-NEXT: movdqa {{.*#+}} xmm8 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
2981 ; SSE42-NEXT: pand %xmm8, %xmm7
2982 ; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm6
2983 ; SSE42-NEXT: pand %xmm8, %xmm6
2984 ; SSE42-NEXT: packuswb %xmm7, %xmm6
2985 ; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm5
2986 ; SSE42-NEXT: pand %xmm8, %xmm5
2987 ; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm4
2988 ; SSE42-NEXT: pand %xmm8, %xmm4
2989 ; SSE42-NEXT: packuswb %xmm5, %xmm4
2990 ; SSE42-NEXT: packuswb %xmm6, %xmm4
2991 ; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm3
2992 ; SSE42-NEXT: pand %xmm8, %xmm3
2993 ; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm2
2994 ; SSE42-NEXT: pand %xmm8, %xmm2
2995 ; SSE42-NEXT: packuswb %xmm3, %xmm2
2996 ; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm1
2997 ; SSE42-NEXT: pand %xmm8, %xmm1
2998 ; SSE42-NEXT: pcmpgtq {{[0-9]+}}(%rsp), %xmm0
2999 ; SSE42-NEXT: pand %xmm8, %xmm0
3000 ; SSE42-NEXT: packuswb %xmm1, %xmm0
3001 ; SSE42-NEXT: packuswb %xmm2, %xmm0
3002 ; SSE42-NEXT: packuswb %xmm4, %xmm0
3003 ; SSE42-NEXT: retq
3007 ; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm8
3008 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm9
3009 ; AVX1-NEXT: vpcmpgtq %xmm8, %xmm9, %xmm9
3010 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [255,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0]
3011 ; AVX1-NEXT: vpand %xmm8, %xmm9, %xmm9
3012 ; AVX1-NEXT: vpcmpgtq %xmm7, %xmm3, %xmm3
3013 ; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3
3014 ; AVX1-NEXT: vpackuswb %xmm9, %xmm3, %xmm9
3015 ; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7
3016 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3
3017 ; AVX1-NEXT: vpcmpgtq %xmm7, %xmm3, %xmm3
3018 ; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3
3019 ; AVX1-NEXT: vpcmpgtq %xmm6, %xmm2, %xmm2
3020 ; AVX1-NEXT: vpand %xmm8, %xmm2, %xmm2
3021 ; AVX1-NEXT: vpackuswb %xmm3, %xmm2, %xmm2
3022 ; AVX1-NEXT: vpackuswb %xmm9, %xmm2, %xmm2
3023 ; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3
3024 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6
3025 ; AVX1-NEXT: vpcmpgtq %xmm3, %xmm6, %xmm3
3026 ; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3
3027 ; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm1
3028 ; AVX1-NEXT: vpand %xmm8, %xmm1, %xmm1
3029 ; AVX1-NEXT: vpackuswb %xmm3, %xmm1, %xmm1
3030 ; AVX1-NEXT
3031 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
3032 ; AVX1-NEXT: vpcmpgtq %xmm3, %xmm5, %xmm3
3033 ; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3
3034 ; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm0
3035 ; AVX1-NEXT: vpand %xmm8, %xmm0, %xmm0
3036 ; AVX1-NEXT: vpackuswb %xmm3, %xmm0, %xmm0
3037 ; AVX1-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
3038 ; AVX1-NEXT: vpackuswb %xmm2, %xmm0, %xmm0
3039 ; AVX1-NEXT: vzeroupper
3040 ; AVX1-NEXT: retq
3044 ; AVX2-NEXT: vpcmpgtq %ymm6, %ymm2, %ymm2
3045 ; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm2[0,2,0,2,4,6,4,6]
3046 ; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,3,2,3]
3047 ; AVX2-NEXT: vpcmpgtq %ymm7, %ymm3, %ymm3
3048 ; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm3[0,2,0,2,4,6,4,6]
3049 ; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,3,2,3]
3050 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
3051 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
3052 ; AVX2-NEXT: vpshufb %ymm3, %ymm2, %ymm2
3053 ; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]
3054 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm6 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
3055 ; AVX2-NEXT: vpshufb %xmm6, %xmm2, %xmm2
3056 ; AVX2-NEXT: vpcmpgtq %ymm4, %ymm0, %ymm0
3057 ; AVX2-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[0,2,0,2,4,6,4,6]
3058 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,3,2,3]
3059 ; AVX2-NEXT: vpcmpgtq %ymm5, %ymm1, %ymm1
3060 ; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[0,2,0,2,4,6,4,6]
3061 ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,3,2,3]
3062 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
3063 ; AVX2-NEXT: vpshufb %ymm3, %ymm0, %ymm0
3064 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
3065 ; AVX2-NEXT: vpshufb %xmm6, %xmm0, %xmm0
3066 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
3067 ; AVX2-NEXT: vzeroupper
3068 ; AVX2-NEXT: retq
3072 ; AVX512-NEXT: vextracti32x4 $3, %zmm2, %xmm4
3073 ; AVX512-NEXT: vpextrq $1, %xmm4, %rcx
3074 ; AVX512-NEXT: vextracti32x4 $3, %zmm0, %xmm5
3075 ; AVX512-NEXT: vpextrq $1, %xmm5, %rdx
3076 ; AVX512-NEXT: xorl %eax, %eax
3077 ; AVX512-NEXT: cmpq %rcx, %rdx
3078 ; AVX512-NEXT: movq $-1, %rcx
3079 ; AVX512-NEXT: movl $0, %edx
3080 ; AVX512-NEXT: cmovgq %rcx, %rdx
3081 ; AVX512-NEXT: vmovq %rdx, %xmm6
3082 ; AVX512-NEXT: vmovq %xmm4, %rdx
3083 ; AVX512-NEXT: vmovq %xmm5, %rsi
3084 ; AVX512-NEXT: cmpq %rdx, %rsi
3085 ; AVX512-NEXT: movl $0, %edx
3086 ; AVX512-NEXT: cmovgq %rcx, %rdx
3087 ; AVX512-NEXT: vmovq %rdx, %xmm4
3088 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0]
3089 ; AVX512-NEXT: vextracti32x4 $2, %zmm2, %xmm5
3090 ; AVX512-NEXT: vpextrq $1, %xmm5, %rdx
3091 ; AVX512-NEXT: vextracti32x4 $2, %zmm0, %xmm6
3092 ; AVX512-NEXT: vpextrq $1, %xmm6, %rsi
3093 ; AVX512-NEXT: cmpq %rdx, %rsi
3094 ; AVX512-NEXT: movl $0, %edx
3095 ; AVX512-NEXT: cmovgq %rcx, %rdx
3096 ; AVX512-NEXT: vmovq %rdx, %xmm7
3097 ; AVX512-NEXT: vmovq %xmm5, %rdx
3098 ; AVX512-NEXT: vmovq %xmm6, %rsi
3099 ; AVX512-NEXT: cmpq %rdx, %rsi
3100 ; AVX512-NEXT: movl $0, %edx
3101 ; AVX512-NEXT: cmovgq %rcx, %rdx
3102 ; AVX512-NEXT: vmovq %rdx, %xmm5
3103 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0]
3104 ; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4
3105 ; AVX512-NEXT: vextracti32x4 $1, %zmm2, %xmm5
3106 ; AVX512-NEXT: vpextrq $1, %xmm5, %rdx
3107 ; AVX512-NEXT: vextracti32x4 $1, %zmm0, %xmm6
3108 ; AVX512-NEXT: vpextrq $1, %xmm6, %rsi
3109 ; AVX512-NEXT: cmpq %rdx, %rsi
3110 ; AVX512-NEXT: movl $0, %edx
3111 ; AVX512-NEXT: cmovgq %rcx, %rdx
3112 ; AVX512-NEXT: vmovq %rdx, %xmm7
3113 ; AVX512-NEXT: vmovq %xmm5, %rdx
3114 ; AVX512-NEXT: vmovq %xmm6, %rsi
3115 ; AVX512-NEXT: cmpq %rdx, %rsi
3116 ; AVX512-NEXT: movl $0, %edx
3117 ; AVX512-NEXT: cmovgq %rcx, %rdx
3118 ; AVX512-NEXT: vmovq %rdx, %xmm5
3119 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm7[0]
3120 ; AVX512-NEXT: vpextrq $1, %xmm2, %rdx
3121 ; AVX512-NEXT: vpextrq $1, %xmm0, %rsi
3122 ; AVX512-NEXT: cmpq %rdx, %rsi
3123 ; AVX512-NEXT: movl $0, %edx
3124 ; AVX512-NEXT: cmovgq %rcx, %rdx
3125 ; AVX512-NEXT: vmovq %rdx, %xmm6
3126 ; AVX512-NEXT: vmovq %xmm2, %rdx
3127 ; AVX512-NEXT: vmovq %xmm0, %rsi
3128 ; AVX512-NEXT: cmpq %rdx, %rsi
3129 ; AVX512-NEXT: movl $0, %edx
3130 ; AVX512-NEXT: cmovgq %rcx, %rdx
3131 ; AVX512-NEXT: vmovq %rdx, %xmm0
3132 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm6[0]
3133 ; AVX512-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0
3134 ; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0
3135 ; AVX512-NEXT: vpmovqd %zmm0, %ymm0
3136 ; AVX512-NEXT: vextracti32x4 $3, %zmm3, %xmm2
3137 ; AVX512-NEXT: vpextrq $1, %xmm2, %rdx
3138 ; AVX512-NEXT: vextracti32x4 $3, %zmm1, %xmm4
3139 ; AVX512-NEXT: vpextrq $1, %xmm4, %rsi
3140 ; AVX512-NEXT: cmpq %rdx, %rsi
3141 ; AVX512-NEXT: movl $0, %edx
3142 ; AVX512-NEXT: cmovgq %rcx, %rdx
3143 ; AVX512-NEXT: vmovq %rdx, %xmm5
3144 ; AVX512-NEXT: vmovq %xmm2, %rdx
3145 ; AVX512-NEXT: vmovq %xmm4, %rsi
3146 ; AVX512-NEXT: cmpq %rdx, %rsi
3147 ; AVX512-NEXT: movl $0, %edx
3148 ; AVX512-NEXT: cmovgq %rcx, %rdx
3149 ; AVX512-NEXT: vmovq %rdx, %xmm2
3150 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0]
3151 ; AVX512-NEXT: vextracti32x4 $2, %zmm3, %xmm4
3152 ; AVX512-NEXT: vpextrq $1, %xmm4, %rdx
3153 ; AVX512-NEXT: vextracti32x4 $2, %zmm1, %xmm5
3154 ; AVX512-NEXT: vpextrq $1, %xmm5, %rsi
3155 ; AVX512-NEXT: cmpq %rdx, %rsi
3156 ; AVX512-NEXT: movl $0, %edx
3157 ; AVX512-NEXT: cmovgq %rcx, %rdx
3158 ; AVX512-NEXT: vmovq %rdx, %xmm6
3159 ; AVX512-NEXT: vmovq %xmm4, %rdx
3160 ; AVX512-NEXT: vmovq %xmm5, %rsi
3161 ; AVX512-NEXT: cmpq %rdx, %rsi
3162 ; AVX512-NEXT: movl $0, %edx
3163 ; AVX512-NEXT: cmovgq %rcx, %rdx
3164 ; AVX512-NEXT: vmovq %rdx, %xmm4
3165 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0]
3166 ; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2
3167 ; AVX512-NEXT: vextracti32x4 $1, %zmm3, %xmm4
3168 ; AVX512-NEXT: vpextrq $1, %xmm4, %rdx
3169 ; AVX512-NEXT: vextracti32x4 $1, %zmm1, %xmm5
3170 ; AVX512-NEXT: vpextrq $1, %xmm5, %rsi
3171 ; AVX512-NEXT: cmpq %rdx, %rsi
3172 ; AVX512-NEXT: movl $0, %edx
3173 ; AVX512-NEXT: cmovgq %rcx, %rdx
3174 ; AVX512-NEXT: vmovq %rdx, %xmm6
3175 ; AVX512-NEXT: vmovq %xmm4, %rdx
3176 ; AVX512-NEXT: vmovq %xmm5, %rsi
3177 ; AVX512-NEXT: cmpq %rdx, %rsi
3178 ; AVX512-NEXT: movl $0, %edx
3179 ; AVX512-NEXT: cmovgq %rcx, %rdx
3180 ; AVX512-NEXT: vmovq %rdx, %xmm4
3181 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0]
3182 ; AVX512-NEXT: vpextrq $1, %xmm3, %rdx
3183 ; AVX512-NEXT: vpextrq $1, %xmm1, %rsi
3184 ; AVX512-NEXT: cmpq %rdx, %rsi
3185 ; AVX512-NEXT: movl $0, %edx
3186 ; AVX512-NEXT: cmovgq %rcx, %rdx
3187 ; AVX512-NEXT: vmovq %rdx, %xmm5
3188 ; AVX512-NEXT: vmovq %xmm3, %rdx
3189 ; AVX512-NEXT: vmovq %xmm1, %rsi
3190 ; AVX512-NEXT: cmpq %rdx, %rsi
3191 ; AVX512-NEXT: cmovgq %rcx, %rax
3192 ; AVX512-NEXT: vmovq %rax, %xmm1
3193 ; AVX512-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0]
3194 ; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1
3195 ; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1
3196 ; AVX512-NEXT: vpmovqd %zmm1, %ymm1
3197 ; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
3198 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
3199 ; AVX512-NEXT: retq
3207 ; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm3
3208 ; SSE2-NEXT: pshuflw {{.*#+}} xmm3 = xmm3[0,2,2,3,4,5,6,7]
3209 ; SSE2-NEXT: pshufhw {{.*#+}} xmm3 = xmm3[0,1,2,3,4,6,6,7]
3210 ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,2,2,3]
3211 ; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm2
3212 ; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm2[0,2,2,3,4,5,6,7]
3213 ; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]
3214 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
3215 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
3216 ; SSE2-NEXT: psllw $15, %xmm2
3217 ; SSE2-NEXT: psraw $15, %xmm2
3218 ; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]
3219 ; SSE2-NEXT: pand %xmm3, %xmm2
3220 ; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm1
3221 ; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[0,2,2,3,4,5,6,7]
3222 ; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
3223 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
3224 ; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm0
3225 ; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,2,2,3,4,5,6,7]
3226 ; SSE2-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,6,6,7]
3227 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
3228 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3229 ; SSE2-NEXT: psllw $15, %xmm0
3230 ; SSE2-NEXT: psraw $15, %xmm0
3231 ; SSE2-NEXT: pand %xmm3, %xmm0
3232 ; SSE2-NEXT: packuswb %xmm2, %xmm0
3233 ; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm7
3234 ; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm7[0,2,2,3,4,5,6,7]
3235 ; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
3236 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
3237 ; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm6
3238 ; SSE2-NEXT: pshuflw {{.*#+}} xmm2 = xmm6[0,2,2,3,4,5,6,7]
3239 ; SSE2-NEXT: pshufhw {{.*#+}} xmm2 = xmm2[0,1,2,3,4,6,6,7]
3240 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
3241 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0]
3242 ; SSE2-NEXT: psllw $15, %xmm2
3243 ; SSE2-NEXT: psraw $15, %xmm2
3244 ; SSE2-NEXT: pand %xmm3, %xmm2
3245 ; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm5
3246 ; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm5[0,2,2,3,4,5,6,7]
3247 ; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,6,6,7]
3248 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
3249 ; SSE2-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm4
3250 ; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,2,2,3,4,5,6,7]
3251 ; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,4,6,6,7]
3252 ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,2,2,3]
3253 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm1[0]
3254 ; SSE2-NEXT: psllw $15, %xmm4
3255 ; SSE2-NEXT: psraw $15, %xmm4
3256 ; SSE2-NEXT: pand %xmm3, %xmm4
3257 ; SSE2-NEXT: packuswb %xmm2, %xmm4
3258 ; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp)
3259 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3260 ; SSE2-NEXT: andb $1, %al
3261 ; SSE2-NEXT: movb %al, 2(%rdi)
3262 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
3263 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3264 ; SSE2-NEXT: andb $1, %al
3265 ; SSE2-NEXT: movb %al, (%rdi)
3266 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3267 ; SSE2-NEXT: andb $1, %al
3268 ; SSE2-NEXT: movb %al, 2(%rdi)
3269 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3270 ; SSE2-NEXT: andb $1, %al
3271 ; SSE2-NEXT: movb %al, (%rdi)
3272 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3273 ; SSE2-NEXT: andb $1, %al
3274 ; SSE2-NEXT: movb %al, 2(%rdi)
3275 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3276 ; SSE2-NEXT: andb $1, %al
3277 ; SSE2-NEXT: movb %al, (%rdi)
3278 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3279 ; SSE2-NEXT: andb $1, %al
3280 ; SSE2-NEXT: movb %al, 2(%rdi)
3281 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3282 ; SSE2-NEXT: andb $1, %al
3283 ; SSE2-NEXT: movb %al, (%rdi)
3284 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3285 ; SSE2-NEXT: andb $1, %al
3286 ; SSE2-NEXT: movb %al, 2(%rdi)
3287 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3288 ; SSE2-NEXT: andb $1, %al
3289 ; SSE2-NEXT: movb %al, (%rdi)
3290 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3291 ; SSE2-NEXT: andb $1, %al
3292 ; SSE2-NEXT: movb %al, 2(%rdi)
3293 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3294 ; SSE2-NEXT: andb $1, %al
3295 ; SSE2-NEXT: movb %al, (%rdi)
3296 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3297 ; SSE2-NEXT: andb $1, %al
3298 ; SSE2-NEXT: movb %al, 2(%rdi)
3299 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3300 ; SSE2-NEXT: andb $1, %al
3301 ; SSE2-NEXT: movb %al, (%rdi)
3302 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3303 ; SSE2-NEXT: andb $1, %al
3304 ; SSE2-NEXT: movb %al, 2(%rdi)
3305 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3306 ; SSE2-NEXT: andb $1, %al
3307 ; SSE2-NEXT: movb %al, (%rdi)
3308 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3309 ; SSE2-NEXT: andb $1, %al
3310 ; SSE2-NEXT: movb %al, 2(%rdi)
3311 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3312 ; SSE2-NEXT: andb $1, %al
3313 ; SSE2-NEXT: movb %al, (%rdi)
3314 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3315 ; SSE2-NEXT: andb $1, %al
3316 ; SSE2-NEXT: movb %al, 2(%rdi)
3317 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3318 ; SSE2-NEXT: andb $1, %al
3319 ; SSE2-NEXT: movb %al, (%rdi)
3320 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3321 ; SSE2-NEXT: andb $1, %al
3322 ; SSE2-NEXT: movb %al, 2(%rdi)
3323 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3324 ; SSE2-NEXT: andb $1, %al
3325 ; SSE2-NEXT: movb %al, (%rdi)
3326 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3327 ; SSE2-NEXT: andb $1, %al
3328 ; SSE2-NEXT: movb %al, 2(%rdi)
3329 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3330 ; SSE2-NEXT: andb $1, %al
3331 ; SSE2-NEXT: movb %al, (%rdi)
3332 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3333 ; SSE2-NEXT: andb $1, %al
3334 ; SSE2-NEXT: movb %al, 2(%rdi)
3335 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3336 ; SSE2-NEXT: andb $1, %al
3337 ; SSE2-NEXT: movb %al, (%rdi)
3338 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3339 ; SSE2-NEXT: andb $1, %al
3340 ; SSE2-NEXT: movb %al, 2(%rdi)
3341 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3342 ; SSE2-NEXT: andb $1, %al
3343 ; SSE2-NEXT: movb %al, (%rdi)
3344 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3345 ; SSE2-NEXT: andb $1, %al
3346 ; SSE2-NEXT: movb %al, 2(%rdi)
3347 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3348 ; SSE2-NEXT: andb $1, %al
3349 ; SSE2-NEXT: movb %al, (%rdi)
3350 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3351 ; SSE2-NEXT: andb $1, %al
3352 ; SSE2-NEXT: movb %al, 2(%rdi)
3353 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3354 ; SSE2-NEXT: andb $1, %al
3355 ; SSE2-NEXT: movb %al, (%rdi)
3356 ; SSE2-NEXT: movq %rdi, %rax
3357 ; SSE2-NEXT: retq
3361 ; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm3
3362 ; SSE42-NEXT: movdqa {{.*#+}} xmm8 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
3363 ; SSE42-NEXT: pshufb %xmm8, %xmm3
3364 ; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm2
3365 ; SSE42-NEXT: pshufb %xmm8, %xmm2
3366 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
3367 ; SSE42-NEXT: psllw $15, %xmm2
3368 ; SSE42-NEXT: psraw $15, %xmm2
3369 ; SSE42-NEXT: movdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
3370 ; SSE42-NEXT: pshufb %xmm3, %xmm2
3371 ; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm1
3372 ; SSE42-NEXT: pshufb %xmm8, %xmm1
3373 ; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm0
3374 ; SSE42-NEXT: pshufb %xmm8, %xmm0
3375 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3376 ; SSE42-NEXT: psllw $15, %xmm0
3377 ; SSE42-NEXT: psraw $15, %xmm0
3378 ; SSE42-NEXT: pshufb %xmm3, %xmm0
3379 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
3380 ; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm7
3381 ; SSE42-NEXT: pshufb %xmm8, %xmm7
3382 ; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm6
3383 ; SSE42-NEXT: pshufb %xmm8, %xmm6
3384 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm7[0]
3385 ; SSE42-NEXT: psllw $15, %xmm6
3386 ; SSE42-NEXT: psraw $15, %xmm6
3387 ; SSE42-NEXT: pshufb %xmm3, %xmm6
3388 ; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm5
3389 ; SSE42-NEXT: pshufb %xmm8, %xmm5
3390 ; SSE42-NEXT: pcmpgtd {{[0-9]+}}(%rsp), %xmm4
3391 ; SSE42-NEXT: pshufb %xmm8, %xmm4
3392 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
3393 ; SSE42-NEXT: psllw $15, %xmm4
3394 ; SSE42-NEXT: psraw $15, %xmm4
3395 ; SSE42-NEXT: pshufb %xmm3, %xmm4
3396 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm6[0]
3397 ; SSE42-NEXT: pextrb $15, %xmm4, %eax
3398 ; SSE42-NEXT: andb $1, %al
3399 ; SSE42-NEXT: movb %al, 2(%rdi)
3400 ; SSE42-NEXT: pextrb $14, %xmm4, %eax
3401 ; SSE42-NEXT: andb $1, %al
3402 ; SSE42-NEXT: movb %al, 2(%rdi)
3403 ; SSE42-NEXT: pextrb $13, %xmm4, %eax
3404 ; SSE42-NEXT: andb $1, %al
3405 ; SSE42-NEXT: movb %al, 2(%rdi)
3406 ; SSE42-NEXT: pextrb $12, %xmm4, %eax
3407 ; SSE42-NEXT: andb $1, %al
3408 ; SSE42-NEXT: movb %al, 2(%rdi)
3409 ; SSE42-NEXT: pextrb $11, %xmm4, %eax
3410 ; SSE42-NEXT: andb $1, %al
3411 ; SSE42-NEXT: movb %al, 2(%rdi)
3412 ; SSE42-NEXT: pextrb $10, %xmm4, %eax
3413 ; SSE42-NEXT: andb $1, %al
3414 ; SSE42-NEXT: movb %al, 2(%rdi)
3415 ; SSE42-NEXT: pextrb $9, %xmm4, %eax
3416 ; SSE42-NEXT: andb $1, %al
3417 ; SSE42-NEXT: movb %al, 2(%rdi)
3418 ; SSE42-NEXT: pextrb $8, %xmm4, %eax
3419 ; SSE42-NEXT: andb $1, %al
3420 ; SSE42-NEXT: movb %al, 2(%rdi)
3421 ; SSE42-NEXT: pextrb $7, %xmm4, %eax
3422 ; SSE42-NEXT: andb $1, %al
3423 ; SSE42-NEXT: movb %al, 2(%rdi)
3424 ; SSE42-NEXT: pextrb $6, %xmm4, %eax
3425 ; SSE42-NEXT: andb $1, %al
3426 ; SSE42-NEXT: movb %al, 2(%rdi)
3427 ; SSE42-NEXT: pextrb $5, %xmm4, %eax
3428 ; SSE42-NEXT: andb $1, %al
3429 ; SSE42-NEXT: movb %al, 2(%rdi)
3430 ; SSE42-NEXT: pextrb $4, %xmm4, %eax
3431 ; SSE42-NEXT: andb $1, %al
3432 ; SSE42-NEXT: movb %al, 2(%rdi)
3433 ; SSE42-NEXT: pextrb $3, %xmm4, %eax
3434 ; SSE42-NEXT: andb $1, %al
3435 ; SSE42-NEXT: movb %al, 2(%rdi)
3436 NEXT: pextrb $2, %xmm4, %eax
3437 ; SSE42-NEXT: andb $1, %al
3438 ; SSE42-NEXT: movb %al, 2(%rdi)
3439 ; SSE42-NEXT: pextrb $1, %xmm4, %eax
3440 ; SSE42-NEXT: andb $1, %al
3441 ; SSE42-NEXT: movb %al, 2(%rdi)
3442 ; SSE42-NEXT: pextrb $0, %xmm4, %eax
3443 ; SSE42-NEXT: andb $1, %al
3444 ; SSE42-NEXT: movb %al, 2(%rdi)
3445 ; SSE42-NEXT: pextrb $15, %xmm0, %eax
3446 ; SSE42-NEXT: andb $1, %al
3447 ; SSE42-NEXT: movb %al, (%rdi)
3448 ; SSE42-NEXT: pextrb $14, %xmm0, %eax
3449 ; SSE42-NEXT: andb $1, %al
3450 ; SSE42-NEXT: movb %al, (%rdi)
3451 ; SSE42-NEXT: pextrb $13, %xmm0, %eax
3452 ; SSE42-NEXT: andb $1, %al
3453 ; SSE42-NEXT: movb %al, (%rdi)
3454 ; SSE42-NEXT: pextrb $12, %xmm0, %eax
3455 ; SSE42-NEXT: andb $1, %al
3456 ; SSE42-NEXT: movb %al, (%rdi)
3457 ; SSE42-NEXT: pextrb $11, %xmm0, %eax
3458 ; SSE42-NEXT: andb $1, %al
3459 ; SSE42-NEXT: movb %al, (%rdi)
3460 ; SSE42-NEXT: pextrb $10, %xmm0, %eax
3461 ; SSE42-NEXT: andb $1, %al
3462 ; SSE42-NEXT: movb %al, (%rdi)
3463 ; SSE42-NEXT: pextrb $9, %xmm0, %eax
3464 ; SSE42-NEXT: andb $1, %al
3465 ; SSE42-NEXT: movb %al, (%rdi)
3466 ; SSE42-NEXT: pextrb $8, %xmm0, %eax
3467 ; SSE42-NEXT: andb $1, %al
3468 ; SSE42-NEXT: movb %al, (%rdi)
3469 ; SSE42-NEXT: pextrb $7, %xmm0, %eax
3470 ; SSE42-NEXT: andb $1, %al
3471 ; SSE42-NEXT: movb %al, (%rdi)
3472 ; SSE42-NEXT: pextrb $6, %xmm0, %eax
3473 ; SSE42-NEXT: andb $1, %al
3474 ; SSE42-NEXT: movb %al, (%rdi)
3475 ; SSE42-NEXT: pextrb $5, %xmm0, %eax
3476 ; SSE42-NEXT: andb $1, %al
3477 ; SSE42-NEXT: movb %al, (%rdi)
3478 ; SSE42-NEXT: pextrb $4, %xmm0, %eax
3479 ; SSE42-NEXT: andb $1, %al
3480 ; SSE42-NEXT: movb %al, (%rdi)
3481 ; SSE42-NEXT: pextrb $3, %xmm0, %eax
3482 ; SSE42-NEXT: andb $1, %al
3483 ; SSE42-NEXT: movb %al, (%rdi)
3484 ; SSE42-NEXT: pextrb $2, %xmm0, %eax
3485 ; SSE42-NEXT: andb $1, %al
3486 ; SSE42-NEXT: movb %al, (%rdi)
3487 ; SSE42-NEXT: pextrb $1, %xmm0, %eax
3488 ; SSE42-NEXT: andb $1, %al
3489 ; SSE42-NEXT: movb %al, (%rdi)
3490 ; SSE42-NEXT: pextrb $0, %xmm0, %eax
3491 ; SSE42-NEXT: andb $1, %al
3492 ; SSE42-NEXT: movb %al, (%rdi)
3493 ; SSE42-NEXT: movq %rdi, %rax
3494 ; SSE42-NEXT: retq
3498 ; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm8
3499 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm9
3500 ; AVX1-NEXT: vpcmpgtd %xmm8, %xmm9, %xmm9
3501 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
3502 ; AVX1-NEXT: vpand %xmm8, %xmm9, %xmm9
3503 ; AVX1-NEXT: vpcmpgtd %xmm7, %xmm3, %xmm3
3504 ; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3
3505 ; AVX1-NEXT: vpackuswb %xmm9, %xmm3, %xmm9
3506 ; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7
3507 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3
3508 ; AVX1-NEXT: vpcmpgtd %xmm7, %xmm3, %xmm3
3509 ; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3
3510 ; AVX1-NEXT: vpcmpgtd %xmm6, %xmm2, %xmm2
3511 ; AVX1-NEXT: vpand %xmm8, %xmm2, %xmm2
3512 ; AVX1-NEXT: vpackuswb %xmm3, %xmm2, %xmm2
3513 ; AVX1-NEXT: vpackuswb %xmm9, %xmm2, %xmm2
3514 ; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm3
3515 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm6
3516 ; AVX1-NEXT: vpcmpgtd %xmm3, %xmm6, %xmm3
3517 ; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3
3518 ; AVX1-NEXT: vpcmpgtd %xmm5, %xmm1, %xmm1
3519 ; AVX1-NEXT: vpand %xmm8, %xmm1, %xmm1
3520 ; AVX1-NEXT: vpackuswb %xmm3, %xmm1, %xmm1
3521 ; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm3
3522 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
3523 ; AVX1-NEXT: vpcmpgtd %xmm3, %xmm5, %xmm3
3524 ; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3
3525 ; AVX1-NEXT: vpcmpgtd %xmm4, %xmm0, %xmm0
3526 ; AVX1-NEXT: vpand %xmm8, %xmm0, %xmm0
3527 ; AVX1-NEXT: vpackuswb %xmm3, %xmm0, %xmm0
3528 ; AVX1-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
3529 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
3530 ; AVX1-NEXT: retq
3534 ; AVX2-NEXT: vpcmpgtd %ymm7, %ymm3, %ymm3
3535 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm8 = [0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128,0,1,4,5,8,9,12,13,128,128,128,128,128,128,128,128]
3536 ; AVX2-NEXT: vpshufb %ymm8, %ymm3, %ymm3
3537 ; AVX2-NEXT: vpermq {{.*#+}} ymm3 = ymm3[0,2,2,3]
3538 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm7 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
3539 ; AVX2-NEXT: vpshufb %xmm7, %xmm3, %xmm3
3540 ; AVX2-NEXT: vpcmpgtd %ymm6, %ymm2, %ymm2
3541 ; AVX2-NEXT: vpshufb %ymm8, %ymm2, %ymm2
3542 ; AVX2-NEXT: vpermq {{.*#+}} ymm2 = ymm2[0,2,2,3]
3543 ; AVX2-NEXT: vpshufb %xmm7, %xmm2, %xmm2
3544 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
3545 ; AVX2-NEXT: vpcmpgtd %ymm5, %ymm1, %ymm1
3546 ; AVX2-NEXT: vpshufb %ymm8, %ymm1, %ymm1
3547 ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,2,3]
3548 ; AVX2-NEXT: vpshufb %xmm7, %xmm1, %xmm1
3549 ; AVX2-NEXT: vpcmpgtd %ymm4, %ymm0, %ymm0
3550 ; AVX2-NEXT: vpshufb %ymm8, %ymm0, %ymm0
3551 ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,2,3]
3552 ; AVX2-NEXT: vpshufb %xmm7, %xmm0, %xmm0
3553 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
3554 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0
3555 ; AVX2-NEXT: retq
3559 ; AVX512-NEXT: vextracti32x4 $3, %zmm2, %xmm4
3560 ; AVX512-NEXT: vpextrd $1, %xmm4, %ecx
3561 ; AVX512-NEXT: vextracti32x4 $3, %zmm0, %xmm5
3562 ; AVX512-NEXT: vpextrd $1, %xmm5, %edx
3563 ; AVX512-NEXT: xorl %eax, %eax
3564 ; AVX512-NEXT: cmpl %ecx, %edx
3565 ; AVX512-NEXT: movl $-1, %ecx
3566 ; AVX512-NEXT: movl $0, %edx
3567 ; AVX512-NEXT: cmovgl %ecx, %edx
3568 ; AVX512-NEXT: vmovd %xmm4, %esi
3569 ; AVX512-NEXT: vmovd %xmm5, %edi
3570 ; AVX512-NEXT: cmpl %esi, %edi
3571 ; AVX512-NEXT: movl $0, %esi
3572 ; AVX512-NEXT: cmovgl %ecx, %esi
3573 ; AVX512-NEXT: vmovd %esi, %xmm6
3574 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6
3575 ; AVX512-NEXT: vpextrd $2, %xmm4, %edx
3576 ; AVX512-NEXT: vpextrd $2, %xmm5, %esi
3577 ; AVX512-NEXT: cmpl %edx, %esi
3578 ; AVX512-NEXT: movl $0, %edx
3579 ; AVX512-NEXT: cmovgl %ecx, %edx
3580 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6
3581 ; AVX512-NEXT: vpextrd $3, %xmm4, %edx
3582 ; AVX512-NEXT: vpextrd $3, %xmm5, %esi
3583 ; AVX512-NEXT: cmpl %edx, %esi
3584 ; AVX512-NEXT: movl $0, %edx
3585 ; AVX512-NEXT: cmovgl %ecx, %edx
3586 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4
3587 ; AVX512-NEXT: vextracti32x4 $2, %zmm2, %xmm5
3588 ; AVX512-NEXT: vpextrd $1, %xmm5, %edx
3589 ; AVX512-NEXT: vextracti32x4 $2, %zmm0, %xmm6
3590 ; AVX512-NEXT: vpextrd $1, %xmm6, %esi
3591 ; AVX512-NEXT: cmpl %edx, %esi
3592 ; AVX512-NEXT: movl $0, %edx
3593 ; AVX512-NEXT: cmovgl %ecx, %edx
3594 ; AVX512-NEXT: vmovd %xmm5, %esi
3595 ; AVX512-NEXT: vmovd %xmm6, %edi
3596 ; AVX512-NEXT: cmpl %esi, %edi
3597 ; AVX512-NEXT: movl $0, %esi
3598 ; AVX512-NEXT: cmovgl %ecx, %esi
3599 ; AVX512-NEXT: vmovd %esi, %xmm7
3600 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7
3601 ; AVX512-NEXT: vpextrd $2, %xmm5, %edx
3602 ; AVX512-NEXT: vpextrd $2, %xmm6, %esi
3603 ; AVX512-NEXT: cmpl %edx, %esi
3604 ; AVX512-NEXT: movl $0, %edx
3605 ; AVX512-NEXT: cmovgl %ecx, %edx
3606 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7
3607 ; AVX512-NEXT: vpextrd $3, %xmm5, %edx
3608 ; AVX512-NEXT: vpextrd $3, %xmm6, %esi
3609 ; AVX512-NEXT: cmpl %edx, %esi
3610 ; AVX512-NEXT: movl $0, %edx
3611 ; AVX512-NEXT: cmovgl %ecx, %edx
3612 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5
3613 ; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm5, %ymm4
3614 ; AVX512-NEXT: vextracti32x4 $1, %zmm2, %xmm5
3615 ; AVX512-NEXT: vpextrd $1, %xmm5, %edx
3616 ; AVX512-NEXT: vextracti32x4 $1, %zmm0, %xmm6
3617 ; AVX512-NEXT: vpextrd $1, %xmm6, %esi
3618 ; AVX512-NEXT: cmpl %edx, %esi
3619 ; AVX512-NEXT: movl $0, %edx
3620 ; AVX512-NEXT: cmovgl %ecx, %edx
3621 ; AVX512-NEXT: vmovd %xmm5, %esi
3622 ; AVX512-NEXT: vmovd %xmm6, %edi
3623 ; AVX512-NEXT: cmpl %esi, %edi
3624 ; AVX512-NEXT: movl $0, %esi
3625 ; AVX512-NEXT: cmovgl %ecx, %esi
3626 ; AVX512-NEXT: vmovd %esi, %xmm7
3627 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm7, %xmm7
3628 ; AVX512-NEXT: vpextrd $2, %xmm5, %edx
3629 ; AVX512-NEXT: vpextrd $2, %xmm6, %esi
3630 ; AVX512-NEXT: cmpl %edx, %esi
3631 ; AVX512-NEXT: movl $0, %edx
3632 ; AVX512-NEXT: cmovgl %ecx, %edx
3633 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm7, %xmm7
3634 ; AVX512-NEXT: vpextrd $3, %xmm5, %edx
3635 ; AVX512-NEXT: vpextrd $3, %xmm6, %esi
3636 ; AVX512-NEXT: cmpl %edx, %esi
3637 ; AVX512-NEXT: movl $0, %edx
3638 ; AVX512-NEXT: cmovgl %ecx, %edx
3639 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm7, %xmm5
3640 ; AVX512-NEXT: vpextrd $1, %xmm2, %edx
3641 ; AVX512-NEXT: vpextrd $1, %xmm0, %esi
3642 ; AVX512-NEXT: cmpl %edx, %esi
3643 ; AVX512-NEXT: movl $0, %edx
3644 ; AVX512-NEXT: cmovgl %ecx, %edx
3645 ; AVX512-NEXT: vmovd %xmm2, %esi
3646 ; AVX512-NEXT: vmovd %xmm0, %edi
3647 ; AVX512-NEXT: cmpl %esi, %edi
3648 ; AVX512-NEXT: movl $0, %esi
3649 ; AVX512-NEXT: cmovgl %ecx, %esi
3650 ; AVX512-NEXT: vmovd %esi, %xmm6
3651 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6
3652 ; AVX512-NEXT: vpextrd $2, %xmm2, %edx
3653 ; AVX512-NEXT: vpextrd $2, %xmm0, %esi
3654 ; AVX512-NEXT: cmpl %edx, %esi
3655 ; AVX512-NEXT: movl $0, %edx
3656 ; AVX512-NEXT: cmovgl %ecx, %edx
3657 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6
3658 ; AVX512-NEXT: vpextrd $3, %xmm2, %edx
3659 ; AVX512-NEXT: vpextrd $3, %xmm0, %esi
3660 ; AVX512-NEXT: cmpl %edx, %esi
3661 ; AVX512-NEXT: movl $0, %edx
3662 ; AVX512-NEXT: cmovgl %ecx, %edx
3663 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm6, %xmm0
3664 ; AVX512-NEXT: vinserti128 $1, %xmm5, %ymm0, %ymm0
3665 ; AVX512-NEXT: vinserti64x4 $1, %ymm4, %zmm0, %zmm0
3666 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
3667 ; AVX512-NEXT: vextracti32x4 $3, %zmm3, %xmm2
3668 ; AVX512-NEXT: vpextrd $1, %xmm2, %edx
3669 ; AVX512-NEXT: vextracti32x4 $3, %zmm1, %xmm4
3670 ; AVX512-NEXT: vpextrd $1, %xmm4, %esi
3671 ; AVX512-NEXT: cmpl %edx, %esi
3672 ; AVX512-NEXT: movl $0, %edx
3673 ; AVX512-NEXT: cmovgl %ecx, %edx
3674 ; AVX512-NEXT: vmovd %xmm2, %esi
3675 ; AVX512-NEXT: vmovd %xmm4, %edi
3676 ; AVX512-NEXT: cmpl %esi, %edi
3677 ; AVX512-NEXT: movl $0, %esi
3678 ; AVX512-NEXT: cmovgl %ecx, %esi
3679 ; AVX512-NEXT: vmovd %esi, %xmm5
3680 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5
3681 ; AVX512-NEXT: vpextrd $2, %xmm2, %edx
3682 ; AVX512-NEXT: vpextrd $2, %xmm4, %esi
3683 ; AVX512-NEXT: cmpl %edx, %esi
3684 ; AVX512-NEXT: movl $0, %edx
3685 ; AVX512-NEXT: cmovgl %ecx, %edx
3686 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5
3687 ; AVX512-NEXT: vpextrd $3, %xmm2, %edx
3688 ; AVX512-NEXT: vpextrd $3, %xmm4, %esi
3689 ; AVX512-NEXT: cmpl %edx, %esi
3690 ; AVX512-NEXT: movl $0, %edx
3691 ; AVX512-NEXT: cmovgl %ecx, %edx
3692 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm5, %xmm2
3693 ; AVX512-NEXT: vextracti32x4 $2, %zmm3, %xmm4
3694 ; AVX512-NEXT: vpextrd $1, %xmm4, %edx
3695 ; AVX512-NEXT: vextracti32x4 $2, %zmm1, %xmm5
3696 ; AVX512-NEXT: vpextrd $1, %xmm5, %esi
3697 ; AVX512-NEXT: cmpl %edx, %esi
3698 ; AVX512-NEXT: movl $0, %edx
3699 ; AVX512-NEXT: cmovgl %ecx, %edx
3700 ; AVX512-NEXT: vmovd %xmm4, %esi
3701 ; AVX512-NEXT: vmovd %xmm5, %edi
3702 ; AVX512-NEXT: cmpl %esi, %edi
3703 ; AVX512-NEXT: movl $0, %esi
3704 ; AVX512-NEXT: cmovgl %ecx, %esi
3705 ; AVX512-NEXT: vmovd %esi, %xmm6
3706 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6
3707 ; AVX512-NEXT: vpextrd $2, %xmm4, %edx
3708 ; AVX512-NEXT: vpextrd $2, %xmm5, %esi
3709 ; AVX512-NEXT: cmpl %edx, %esi
3710 ; AVX512-NEXT: movl $0, %edx
3711 ; AVX512-NEXT: cmovgl %ecx, %edx
3712 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6
3713 ; AVX512-NEXT: vpextrd $3, %xmm4, %edx
3714 ; AVX512-NEXT: vpextrd $3, %xmm5, %esi
3715 ; AVX512-NEXT: cmpl %edx, %esi
3716 ; AVX512-NEXT: movl $0, %edx
3717 ; AVX512-NEXT: cmovgl %ecx, %edx
3718 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4
3719 ; AVX512-NEXT: vinserti128 $1, %xmm2, %ymm4, %ymm2
3720 ; AVX512-NEXT: vextracti32x4 $1, %zmm3, %xmm4
3721 ; AVX512-NEXT: vpextrd $1, %xmm4, %edx
3722 ; AVX512-NEXT: vextracti32x4 $1, %zmm1, %xmm5
3723 ; AVX512-NEXT: vpextrd $1, %xmm5, %esi
3724 ; AVX512-NEXT: cmpl %edx, %esi
3725 ; AVX512-NEXT: movl $0, %edx
3726 ; AVX512-NEXT: cmovgl %ecx, %edx
3727 ; AVX512-NEXT: vmovd %xmm4, %esi
3728 ; AVX512-NEXT: vmovd %xmm5, %edi
3729 ; AVX512-NEXT: cmpl %esi, %edi
3730 ; AVX512-NEXT: movl $0, %esi
3731 ; AVX512-NEXT: cmovgl %ecx, %esi
3732 ; AVX512-NEXT: vmovd %esi, %xmm6
3733 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm6, %xmm6
3734 ; AVX512-NEXT: vpextrd $2, %xmm4, %edx
3735 ; AVX512-NEXT: vpextrd $2, %xmm5, %esi
3736 ; AVX512-NEXT: cmpl %edx, %esi
3737 ; AVX512-NEXT: movl $0, %edx
3738 ; AVX512-NEXT: cmovgl %ecx, %edx
3739 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm6, %xmm6
3740 ; AVX512-NEXT: vpextrd $3, %xmm4, %edx
3741 ; AVX512-NEXT: vpextrd $3, %xmm5, %esi
3742 ; AVX512-NEXT: cmpl %edx, %esi
3743 ; AVX512-NEXT: movl $0, %edx
3744 ; AVX512-NEXT: cmovgl %ecx, %edx
3745 ; AVX512-NEXT: vpinsrd $3, %edx, %xmm6, %xmm4
3746 ; AVX512-NEXT: vpextrd $1, %xmm3, %edx
3747 ; AVX512-NEXT: vpextrd $1, %xmm1, %esi
3748 ; AVX512-NEXT: cmpl %edx, %esi
3749 ; AVX512-NEXT: movl $0, %edx
3750 ; AVX512-NEXT: cmovgl %ecx, %edx
3751 ; AVX512-NEXT: vmovd %xmm3, %esi
3752 ; AVX512-NEXT: vmovd %xmm1, %edi
3753 ; AVX512-NEXT: cmpl %esi, %edi
3754 ; AVX512-NEXT: movl $0, %esi
3755 ; AVX512-NEXT: cmovgl %ecx, %esi
3756 ; AVX512-NEXT: vmovd %esi, %xmm5
3757 ; AVX512-NEXT: vpinsrd $1, %edx, %xmm5, %xmm5
3758 ; AVX512-NEXT: vpextrd $2, %xmm3, %edx
3759 ; AVX512-NEXT: vpextrd $2, %xmm1, %esi
3760 ; AVX512-NEXT: cmpl %edx, %esi
3761 ; AVX512-NEXT: movl $0, %edx
3762 ; AVX512-NEXT: cmovgl %ecx, %edx
3763 ; AVX512-NEXT: vpinsrd $2, %edx, %xmm5, %xmm5
3764 ; AVX512-NEXT: vpextrd $3, %xmm3, %edx
3765 ; AVX512-NEXT: vpextrd $3, %xmm1, %esi
3766 ; AVX512-NEXT: cmpl %edx, %esi
3767 ; AVX512-NEXT: cmovgl %ecx, %eax
3768 ; AVX512-NEXT: vpinsrd $3, %eax, %xmm5, %xmm1
3769 ; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm1
3770 ; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1
3771 ; AVX512-NEXT: vpmovdb %zmm1, %xmm1
3772 ; AVX512-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
3773 ; AVX512-NEXT: retq
3781 ; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm1
3782 ; SSE2-NEXT: movdqa {{.*#+}} xmm8 = [255,255,255,255,255,255,255,255]
3783 ; SSE2-NEXT: pand %xmm8, %xmm1
3784 ; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm0
3785 ; SSE2-NEXT: pand %xmm8, %xmm0
3786 ; SSE2-NEXT: packuswb %xmm1, %xmm0
3787 ; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm3
3788 ; SSE2-NEXT: pand %xmm8, %xmm3
3789 ; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm2
3790 ; SSE2-NEXT: pand %xmm8, %xmm2
3791 ; SSE2-NEXT: packuswb %xmm3, %xmm2
3792 ; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm5
3793 ; SSE2-NEXT: pand %xmm8, %xmm5
3794 ; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm4
3795 ; SSE2-NEXT: pand %xmm8, %xmm4
3796 ; SSE2-NEXT: packuswb %xmm5, %xmm4
3797 ; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm7
3798 ; SSE2-NEXT: pand %xmm8, %xmm7
3799 ; SSE2-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm6
3800 ; SSE2-NEXT: pand %xmm8, %xmm6
3801 ; SSE2-NEXT: packuswb %xmm7, %xmm6
3802 ; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp)
3803 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3804 ; SSE2-NEXT: andb $1, %al
3805 ; SSE2-NEXT: movb %al, 6(%rdi)
3806 ; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp)
3807 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3808 ; SSE2-NEXT: andb $1, %al
3809 ; SSE2-NEXT: movb %al, 4(%rdi)
3810 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp)
3811 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3812 ; SSE2-NEXT: andb $1, %al
3813 ; SSE2-NEXT: movb %al, 2(%rdi)
3814 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
3815 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3816 ; SSE2-NEXT: andb $1, %al
3817 ; SSE2-NEXT: movb %al, (%rdi)
3818 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3819 ; SSE2-NEXT: andb $1, %al
3820 ; SSE2-NEXT: movb %al, 6(%rdi)
3821 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3822 ; SSE2-NEXT: andb $1, %al
3823 ; SSE2-NEXT: movb %al, 4(%rdi)
3824 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3825 ; SSE2-NEXT: andb $1, %al
3826 ; SSE2-NEXT: movb %al, 2(%rdi)
3827 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3828 ; SSE2-NEXT: andb $1, %al
3829 ; SSE2-NEXT: movb %al, (%rdi)
3830 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3831 ; SSE2-NEXT: andb $1, %al
3832 ; SSE2-NEXT: movb %al, 6(%rdi)
3833 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3834 ; SSE2-NEXT: andb $1, %al
3835 ; SSE2-NEXT: movb %al, 4(%rdi)
3836 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3837 ; SSE2-NEXT: andb $1, %al
3838 ; SSE2-NEXT: movb %al, 2(%rdi)
3839 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3840 ; SSE2-NEXT: andb $1, %al
3841 ; SSE2-NEXT: movb %al, (%rdi)
3842 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3843 ; SSE2-NEXT: andb $1, %al
3844 ; SSE2-NEXT: movb %al, 6(%rdi)
3845 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3846 ; SSE2-NEXT: andb $1, %al
3847 ; SSE2-NEXT: movb %al, 4(%rdi)
3848 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3849 ; SSE2-NEXT: andb $1, %al
3850 ; SSE2-NEXT: movb %al, 2(%rdi)
3851 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3852 ; SSE2-NEXT: andb $1, %al
3853 ; SSE2-NEXT: movb %al, (%rdi)
3854 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3855 ; SSE2-NEXT: andb $1, %al
3856 ; SSE2-NEXT: movb %al, 6(%rdi)
3857 ; SSE2-NEXT
3858 ; SSE2-NEXT: andb $1, %al
3859 ; SSE2-NEXT: movb %al, 4(%rdi)
3860 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3861 ; SSE2-NEXT: andb $1, %al
3862 ; SSE2-NEXT: movb %al, 2(%rdi)
3863 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3864 ; SSE2-NEXT: andb $1, %al
3865 ; SSE2-NEXT: movb %al, (%rdi)
3866 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3867 ; SSE2-NEXT: andb $1, %al
3868 ; SSE2-NEXT: movb %al, 6(%rdi)
3869 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3870 ; SSE2-NEXT: andb $1, %al
3871 ; SSE2-NEXT: movb %al, 4(%rdi)
3872 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3873 ; SSE2-NEXT: andb $1, %al
3874 ; SSE2-NEXT: movb %al, 2(%rdi)
3875 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3876 ; SSE2-NEXT: andb $1, %al
3877 ; SSE2-NEXT: movb %al, (%rdi)
3878 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3879 ; SSE2-NEXT: andb $1, %al
3880 ; SSE2-NEXT: movb %al, 6(%rdi)
3881 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3882 ; SSE2-NEXT: andb $1, %al
3883 ; SSE2-NEXT: movb %al, 4(%rdi)
3884 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3885 ; SSE2-NEXT: andb $1, %al
3886 ; SSE2-NEXT: movb %al, 2(%rdi)
3887 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3888 ; SSE2-NEXT: andb $1, %al
3889 ; SSE2-NEXT: movb %al, (%rdi)
3890 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3891 ; SSE2-NEXT: andb $1, %al
3892 ; SSE2-NEXT: movb %al, 6(%rdi)
3893 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3894 ; SSE2-NEXT: andb $1, %al
3895 ; SSE2-NEXT: movb %al, 4(%rdi)
3896 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3897 ; SSE2-NEXT: andb $1, %al
3898 ; SSE2-NEXT: movb %al, 2(%rdi)
3899 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3900 ; SSE2-NEXT: andb $1, %al
3901 ; SSE2-NEXT: movb %al, (%rdi)
3902 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3903 ; SSE2-NEXT: andb $1, %al
3904 ; SSE2-NEXT: movb %al, 6(%rdi)
3905 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3906 ; SSE2-NEXT: andb $1, %al
3907 ; SSE2-NEXT: movb %al, 4(%rdi)
3908 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3909 ; SSE2-NEXT: andb $1, %al
3910 ; SSE2-NEXT: movb %al, 2(%rdi)
3911 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3912 ; SSE2-NEXT: andb $1, %al
3913 ; SSE2-NEXT: movb %al, (%rdi)
3914 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3915 ; SSE2-NEXT: andb $1, %al
3916 ; SSE2-NEXT: movb %al, 6(%rdi)
3917 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3918 ; SSE2-NEXT: andb $1, %al
3919 ; SSE2-NEXT: movb %al, 4(%rdi)
3920 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3921 ; SSE2-NEXT: andb $1, %al
3922 ; SSE2-NEXT: movb %al, 2(%rdi)
3923 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3924 ; SSE2-NEXT: andb $1, %al
3925 ; SSE2-NEXT: movb %al, (%rdi)
3926 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3927 ; SSE2-NEXT: andb $1, %al
3928 ; SSE2-NEXT: movb %al, 6(%rdi)
3929 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3930 ; SSE2-NEXT: andb $1, %al
3931 ; SSE2-NEXT: movb %al, 4(%rdi)
3932 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3933 ; SSE2-NEXT: andb $1, %al
3934 ; SSE2-NEXT: movb %al, 2(%rdi)
3935 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3936 ; SSE2-NEXT: andb $1, %al
3937 ; SSE2-NEXT: movb %al, (%rdi)
3938 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3939 ; SSE2-NEXT: andb $1, %al
3940 ; SSE2-NEXT: movb %al, 6(%rdi)
3941 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3942 ; SSE2-NEXT: andb $1, %al
3943 ; SSE2-NEXT: movb %al, 4(%rdi)
3944 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3945 ; SSE2-NEXT: andb $1, %al
3946 ; SSE2-NEXT: movb %al, 2(%rdi)
3947 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3948 ; SSE2-NEXT: andb $1, %al
3949 ; SSE2-NEXT: movb %al, (%rdi)
3950 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3951 ; SSE2-NEXT: andb $1, %al
3952 ; SSE2-NEXT: movb %al, 6(%rdi)
3953 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3954 ; SSE2-NEXT: andb $1, %al
3955 ; SSE2-NEXT: movb %al, 4(%rdi)
3956 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3957 ; SSE2-NEXT: andb $1, %al
3958 ; SSE2-NEXT: movb %al, 2(%rdi)
3959 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3960 ; SSE2-NEXT: andb $1, %al
3961 ; SSE2-NEXT: movb %al, (%rdi)
3962 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3963 ; SSE2-NEXT: andb $1, %al
3964 ; SSE2-NEXT: movb %al, 6(%rdi)
3965 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3966 ; SSE2-NEXT: andb $1, %al
3967 ; SSE2-NEXT: movb %al, 4(%rdi)
3968 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3969 ; SSE2-NEXT: andb $1, %al
3970 ; SSE2-NEXT: movb %al, 2(%rdi)
3971 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3972 ; SSE2-NEXT: andb $1, %al
3973 ; SSE2-NEXT: movb %al, (%rdi)
3974 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3975 ; SSE2-NEXT: andb $1, %al
3976 ; SSE2-NEXT: movb %al, 6(%rdi)
3977 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3978 ; SSE2-NEXT: andb $1, %al
3979 ; SSE2-NEXT: movb %al, 4(%rdi)
3980 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3981 ; SSE2-NEXT: andb $1, %al
3982 ; SSE2-NEXT: movb %al, 2(%rdi)
3983 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3984 ; SSE2-NEXT: andb $1, %al
3985 ; SSE2-NEXT: movb %al, (%rdi)
3986 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3987 ; SSE2-NEXT: andb $1, %al
3988 ; SSE2-NEXT: movb %al, 6(%rdi)
3989 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3990 ; SSE2-NEXT: andb $1, %al
3991 ; SSE2-NEXT: movb %al, 4(%rdi)
3992 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3993 ; SSE2-NEXT: andb $1, %al
3994 ; SSE2-NEXT: movb %al, 2(%rdi)
3995 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
3996 ; SSE2-NEXT: andb $1, %al
3997 ; SSE2-NEXT: movb %al, (%rdi)
3998 ; SSE2-NEXT: movq %rdi, %rax
3999 ; SSE2-NEXT: retq
4003 ; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm1
4004 ; SSE42-NEXT: movdqa {{.*#+}} xmm8 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
4005 ; SSE42-NEXT: pshufb %xmm8, %xmm1
4006 ; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm0
4007 ; SSE42-NEXT: pshufb %xmm8, %xmm0
4008 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
4009 ; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm3
4010 ; SSE42-NEXT: pshufb %xmm8, %xmm3
4011 ; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm2
4012 ; SSE42-NEXT: pshufb %xmm8, %xmm2
4013 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
4014 ; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm5
4015 ; SSE42-NEXT: pshufb %xmm8, %xmm5
4016 ; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm4
4017 ; SSE42-NEXT: pshufb %xmm8, %xmm4
4018 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
4019 ; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm7
4020 ; SSE42-NEXT: pshufb %xmm8, %xmm7
4021 ; SSE42-NEXT: pcmpgtw {{[0-9]+}}(%rsp), %xmm6
4022 ; SSE42-NEXT: pshufb %xmm8, %xmm6
4023 ; SSE42-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm7[0]
4024 ; SSE42-NEXT: pextrb $15, %xmm6, %eax
4025 ; SSE42-NEXT: andb $1, %al
4026 ; SSE42-NEXT: movb %al, 6(%rdi)
4027 ; SSE42-NEXT: pextrb $14, %xmm6, %eax
4028 ; SSE42-NEXT: andb $1, %al
4029 ; SSE42-NEXT: movb %al, 6(%rdi)
4030 ; SSE42-NEXT: pextrb $13, %xmm6, %eax
4031 ; SSE42-NEXT: andb $1, %al
4032 ; SSE42-NEXT: movb %al, 6(%rdi)
4033 ; SSE42-NEXT: pextrb $12, %xmm6, %eax
4034 ; SSE42-NEXT: andb $1, %al
4035 ; SSE42-NEXT: movb %al, 6(%rdi)
4036 ; SSE42-NEXT: pextrb $11, %xmm6, %eax
4037 ; SSE42-NEXT: andb $1, %al
4038 ; SSE42-NEXT: movb %al, 6(%rdi)
4039 ; SSE42-NEXT: pextrb $10, %xmm6, %eax
4040 ; SSE42-NEXT: andb $1, %al
4041 ; SSE42-NEXT: movb %al, 6(%rdi)
4042 ; SSE42-NEXT: pextrb $9, %xmm6, %eax
4043 ; SSE42-NEXT: andb $1, %al
4044 ; SSE42-NEXT: movb %al, 6(%rdi)
4045 ; SSE42-NEXT: pextrb $8, %xmm6, %eax
4046 ; SSE42-NEXT: andb $1, %al
4047 ; SSE42-NEXT: movb %al, 6(%rdi)
4048 ; SSE42-NEXT: pextrb $7, %xmm6, %eax
4049 ; SSE42-NEXT: andb $1, %al
4050 ; SSE42-NEXT: movb %al, 6(%rdi)
4051 ; SSE42-NEXT: pextrb $6, %xmm6, %eax
4052 ; SSE42-NEXT: andb $1, %al
4053 ; SSE42-NEXT: movb %al, 6(%rdi)
4054 ; SSE42-NEXT: pextrb $5, %xmm6, %eax
4055 ; SSE42-NEXT: andb $1, %al
4056 ; SSE42-NEXT: movb %al, 6(%rdi)
4057 ; SSE42-NEXT: pextrb $4, %xmm6, %eax
4058 ; SSE42-NEXT: andb $1, %al
4059 ; SSE42-NEXT: movb %al, 6(%rdi)
4060 ; SSE42-NEXT: pextrb $3, %xmm6, %eax
4061 ; SSE42-NEXT: andb $1, %al
4062 ; SSE42-NEXT: movb %al, 6(%rdi)
4063 ; SSE42-NEXT: pextrb $2, %xmm6, %eax
4064 ; SSE42-NEXT: andb $1, %al
4065 ; SSE42-NEXT: movb %al, 6(%rdi)
4066 ; SSE42-NEXT: pextrb $1, %xmm6, %eax
4067 ; SSE42-NEXT: andb $1, %al
4068 ; SSE42-NEXT: movb %al, 6(%rdi)
4069 ; SSE42-NEXT: pextrb $0, %xmm6, %eax
4070 ; SSE42-NEXT: andb $1, %al
4071 ; SSE42-NEXT: movb %al, 6(%rdi)
4072 ; SSE42-NEXT: pextrb $15, %xmm4, %eax
4073 ; SSE42-NEXT: andb $1, %al
4074 ; SSE42-NEXT: movb %al, 4(%rdi)
4075 ; SSE42-NEXT: pextrb $14, %xmm4, %eax
4076 ; SSE42-NEXT: andb $1, %al
4077 ; SSE42-NEXT: movb %al, 4(%rdi)
4078 ; SSE42-NEXT: pextrb $13, %xmm4, %eax
4079 ; SSE42-NEXT: andb $1, %al
4080 ; SSE42-NEXT: movb %al, 4(%rdi)
4081 ; SSE42-NEXT: pextrb $12, %xmm4, %eax
4082 ; SSE42-NEXT: andb $1, %al
4083 ; SSE42-NEXT: movb %al, 4(%rdi)
4084 ; SSE42-NEXT: pextrb $11, %xmm4, %eax
4085 ; SSE42-NEXT: andb $1, %al
4086 ; SSE42-NEXT: movb %al, 4(%rdi)
4087 ; SSE42-NEXT: pextrb $10, %xmm4, %eax
4088 ; SSE42-NEXT: andb $1, %al
4089 ; SSE42-NEXT: movb %al, 4(%rdi)
4090 ; SSE42-NEXT: pextrb $9, %xmm4, %eax
4091 ; SSE42-NEXT: andb $1, %al
4092 ; SSE42-NEXT: movb %al, 4(%rdi)
4093 ; SSE42-NEXT: pextrb $8, %xmm4, %eax
4094 ; SSE42-NEXT: andb $1, %al
4095 ; SSE42-NEXT: movb %al, 4(%rdi)
4096 ; SSE42-NEXT: pextrb $7, %xmm4, %eax
4097 ; SSE42-NEXT: andb $1, %al
4098 ; SSE42-NEXT: movb %al, 4(%rdi)
4099 ; SSE42-NEXT: pextrb $6, %xmm4, %eax
4100 ; SSE42-NEXT: andb $1, %al
4101 ; SSE42-NEXT: movb %al, 4(%rdi)
4102 ; SSE42-NEXT: pextrb $5, %xmm4, %eax
4103 ; SSE42-NEXT: andb $1, %al
4104 ; SSE42-NEXT: movb %al, 4(%rdi)
4105 ; SSE42-NEXT: pextrb $4, %xmm4, %eax
4106 ; SSE42-NEXT: andb $1, %al
4107 ; SSE42-NEXT: movb %al, 4(%rdi)
4108 ; SSE42-NEXT: pextrb $3, %xmm4, %eax
4109 ; SSE42-NEXT: andb $1, %al
4110 ; SSE42-NEXT: movb %al, 4(%rdi)
4111 ; SSE42-NEXT: pextrb $2, %xmm4, %eax
4112 ; SSE42-NEXT: andb $1, %al
4113 ; SSE42-NEXT: movb %al, 4(%rdi)
4114 ; SSE42-NEXT: pextrb $1, %xmm4, %eax
4115 ; SSE42-NEXT: andb $1, %al
4116 ; SSE42-NEXT: movb %al, 4(%rdi)
4117 ; SSE42-NEXT: pextrb $0, %xmm4, %eax
4118 ; SSE42-NEXT: andb $1, %al
4119 ; SSE42-NEXT: movb %al, 4(%rdi)
4120 ; SSE42-NEXT: pextrb $15, %xmm2, %eax
4121 ; SSE42-NEXT: andb $1, %al
4122 ; SSE42-NEXT: movb %al, 2(%rdi)
4123 ; SSE42-NEXT: pextrb $14, %xmm2, %eax
4124 ; SSE42-NEXT: andb $1, %al
4125 ; SSE42-NEXT: movb %al, 2(%rdi)
4126 ; SSE42-NEXT: pextrb $13, %xmm2, %eax
4127 ; SSE42-NEXT: andb $1, %al
4128 ; SSE42-NEXT: movb %al, 2(%rdi)
4129 ; SSE42-NEXT: pextrb $12, %xmm2, %eax
4130 ; SSE42-NEXT: andb $1, %al
4131 ; SSE42-NEXT: movb %al, 2(%rdi)
4132 ; SSE42-NEXT: pextrb $11, %xmm2, %eax
4133 ; SSE42-NEXT: andb $1, %al
4134 ; SSE42-NEXT: movb %al, 2(%rdi)
4135 ; SSE42-NEXT: pextrb $10, %xmm2, %eax
4136 ; SSE42-NEXT: andb $1, %al
4137 ; SSE42-NEXT: movb %al, 2(%rdi)
4138 ; SSE42-NEXT: pextrb $9, %xmm2, %eax
4139 ; SSE42-NEXT: andb $1, %al
4140 ; SSE42-NEXT: movb %al, 2(%rdi)
4141 ; SSE42-NEXT: pextrb $8, %xmm2, %eax
4142 ; SSE42-NEXT: andb $1, %al
4143 ; SSE42-NEXT: movb %al, 2(%rdi)
4144 ; SSE42-NEXT: pextrb $7, %xmm2, %eax
4145 ; SSE42-NEXT: andb $1, %al
4146 ; SSE42-NEXT: movb %al, 2(%rdi)
4147 ; SSE42-NEXT: pextrb $6, %xmm2, %eax
4148 ; SSE42-NEXT: andb $1, %al
4149 ; SSE42-NEXT: movb %al, 2(%rdi)
4150 ; SSE42-NEXT: pextrb $5, %xmm2, %eax
4151 ; SSE42-NEXT: andb $1, %al
4152 ; SSE42-NEXT: movb %al, 2(%rdi)
4153 ; SSE42-NEXT: pextrb $4, %xmm2, %eax
4154 ; SSE42-NEXT: andb $1, %al
4155 ; SSE42-NEXT: movb %al, 2(%rdi)
4156 ; SSE42-NEXT: pextrb $3, %xmm2, %eax
4157 ; SSE42-NEXT: andb $1, %al
4158 ; SSE42-NEXT: movb %al, 2(%rdi)
4159 ; SSE42-NEXT: pextrb $2, %xmm2, %eax
4160 ; SSE42-NEXT: andb $1, %al
4161 ; SSE42-NEXT: movb %al, 2(%rdi)
4162 ; SSE42-NEXT: pextrb $1, %xmm2, %eax
4163 ; SSE42-NEXT: andb $1, %al
4164 ; SSE42-NEXT: movb %al, 2(%rdi)
4165 ; SSE42-NEXT: pextrb $0, %xmm2, %eax
4166 ; SSE42-NEXT: andb $1, %al
4167 ; SSE42-NEXT: movb %al, 2(%rdi)
4168 ; SSE42-NEXT: pextrb $15, %xmm0, %eax
4169 ; SSE42-NEXT: andb $1, %al
4170 ; SSE42-NEXT: movb %al, (%rdi)
4171 ; SSE42-NEXT: pextrb $14, %xmm0, %eax
4172 ; SSE42-NEXT: andb $1, %al
4173 ; SSE42-NEXT: movb %al, (%rdi)
4174 ; SSE42-NEXT: pextrb $13, %xmm0, %eax
4175 ; SSE42-NEXT: andb $1, %al
4176 ; SSE42-NEXT: movb %al, (%rdi)
4177 ; SSE42-NEXT: pextrb $12, %xmm0, %eax
4178 ; SSE42-NEXT: andb $1, %al
4179 ; SSE42-NEXT: movb %al, (%rdi)
4180 ; SSE42-NEXT: pextrb $11, %xmm0, %eax
4181 ; SSE42-NEXT: andb $1, %al
4182 ; SSE42-NEXT: movb %al, (%rdi)
4183 ; SSE42-NEXT: pextrb $10, %xmm0, %eax
4184 ; SSE42-NEXT: andb $1, %al
4185 ; SSE42-NEXT: movb %al, (%rdi)
4186 ; SSE42-NEXT: pextrb $9, %xmm0, %eax
4187 ; SSE42-NEXT: andb $1, %al
4188 ; SSE42-NEXT: movb %al, (%rdi)
4189 ; SSE42-NEXT: pextrb $8, %xmm0, %eax
4190 ; SSE42-NEXT: andb $1, %al
4191 ; SSE42-NEXT: movb %al, (%rdi)
4192 ; SSE42-NEXT: pextrb $7, %xmm0, %eax
4193 ; SSE42-NEXT: andb $1, %al
4194 ; SSE42-NEXT: movb %al, (%rdi)
4195 ; SSE42-NEXT: pextrb $6, %xmm0, %eax
4196 ; SSE42-NEXT: andb $1, %al
4197 ; SSE42-NEXT: movb %al, (%rdi)
4198 ; SSE42-NEXT: pextrb $5, %xmm0, %eax
4199 ; SSE42-NEXT: andb $1, %al
4200 ; SSE42-NEXT: movb %al, (%rdi)
4201 ; SSE42-NEXT: pextrb $4, %xmm0, %eax
4202 ; SSE42-NEXT: andb $1, %al
4203 ; SSE42-NEXT: movb %al, (%rdi)
4204 ; SSE42-NEXT: pextrb $3, %xmm0, %eax
4205 ; SSE42-NEXT: andb $1, %al
4206 ; SSE42-NEXT: movb %al, (%rdi)
4207 ; SSE42-NEXT: pextrb $2, %xmm0, %eax
4208 ; SSE42-NEXT: andb $1, %al
4209 ; SSE42-NEXT: movb %al, (%rdi)
4210 ; SSE42-NEXT: pextrb $1, %xmm0, %eax
4211 ; SSE42-NEXT: andb $1, %al
4212 ; SSE42-NEXT: movb %al, (%rdi)
4213 ; SSE42-NEXT: pextrb $0, %xmm0, %eax
4214 ; SSE42-NEXT: andb $1, %al
4215 ; SSE42-NEXT: movb %al, (%rdi)
4216 ; SSE42-NEXT: movq %rdi, %rax
4217 ; SSE42-NEXT: retq
4221 ; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm8
4222 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm9
4223 ; AVX1-NEXT: vpcmpgtw %xmm8, %xmm9, %xmm8
4224 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm9 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
4225 ; AVX1-NEXT: vpshufb %xmm9, %xmm8, %xmm8
4226 ; AVX1-NEXT: vpcmpgtw %xmm4, %xmm0, %xmm0
4227 ; AVX1-NEXT: vpshufb %xmm9, %xmm0, %xmm0
4228 ; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm8 = xmm0[0],xmm8[0]
4229 ; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm4
4230 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm0
4231 ; AVX1-NEXT: vpcmpgtw %xmm4, %xmm0, %xmm0
4232 ; AVX1-NEXT: vpshufb %xmm9, %xmm0, %xmm0
4233 ; AVX1-NEXT: vpcmpgtw %xmm5, %xmm1, %xmm1
4234 ; AVX1-NEXT: vpshufb %xmm9, %xmm1, %xmm1
4235 ; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
4236 ; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm0
4237 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
4238 ; AVX1-NEXT: vpcmpgtw %xmm0, %xmm4, %xmm0
4239 ; AVX1-NEXT: vpshufb %xmm9, %xmm0, %xmm0
4240 ; AVX1-NEXT: vpcmpgtw %xmm6, %xmm2, %xmm2
4241 ; AVX1-NEXT: vpshufb %xmm9, %xmm2, %xmm2
4242 ; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0]
4243 ; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm0
4244 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
4245 ; AVX1-NEXT: vpcmpgtw %xmm0, %xmm4, %xmm0
4246 ; AVX1-NEXT: vpshufb %xmm9, %xmm0, %xmm0
4247 ; AVX1-NEXT: vpcmpgtw %xmm7, %xmm3, %xmm3
4248 ; AVX1-NEXT: vpshufb %xmm9, %xmm3, %xmm3
4249 ; AVX1-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm0[0]
4250 ; AVX1-NEXT: vpextrb $15, %xmm3, %eax
4251 ; AVX1-NEXT: andb $1, %al
4252 ; AVX1-NEXT: movb %al, 4(%rdi)
4253 ; AVX1-NEXT: vpextrb $14, %xmm3, %eax
4254 ; AVX1-NEXT: andb $1, %al
4255 ; AVX1-NEXT: movb %al, 4(%rdi)
4256 ; AVX1-NEXT: vpextrb $13, %xmm3, %eax
4257 ; AVX1-NEXT: andb $1, %al
4258 ; AVX1-NEXT: movb %al, 4(%rdi)
4259 ; AVX1-NEXT: vpextrb $12, %xmm3, %eax
4260 ; AVX1-NEXT: andb $1, %al
4261 ; AVX1-NEXT: movb %al, 4(%rdi)
4262 ; AVX1-NEXT: vpextrb $11, %xmm3, %eax
4263 ; AVX1-NEXT: andb $1, %al
4264 ; AVX1-NEXT: movb %al, 4(%rdi)
4265 ; AVX1-NEXT: vpextrb $10, %xmm3, %eax
4266 ; AVX1-NEXT: andb $1, %al
4267 ; AVX1-NEXT: movb %al, 4(%rdi)
4268 ; AVX1-NEXT: vpextrb $9, %xmm3, %eax
4269 ; AVX1-NEXT: andb $1, %al
4270 ; AVX1-NEXT: movb %al, 4(%rdi)
4271 ; AVX1-NEXT: vpextrb $8, %xmm3, %eax
4272 ; AVX1-NEXT: andb $1, %al
4273 ; AVX1-NEXT: movb %al, 4(%rdi)
4274 ; AVX1-NEXT: vpextrb $7, %xmm3, %eax
4275 ; AVX1-NEXT: andb $1, %al
4276 ; AVX1-NEXT: movb %al, 4(%rdi)
4277 ; AVX1-NEXT: vpextrb $6, %xmm3, %eax
4278 ; AVX1-NEXT: andb $1, %al
4279 ; AVX1-NEXT: movb %al, 4(%rdi)
4280 ; AVX1-NEXT: vpextrb $5, %xmm3, %eax
4281 ; AVX1-NEXT: andb $1, %al
4282 ; AVX1-NEXT: movb %al, 4(%rdi)
4283 ; AVX1-NEXT: vpextrb $4, %xmm3, %eax
4284 ; AVX1-NEXT: andb $1, %al
4285 ; AVX1-NEXT: movb %al, 4(%rdi)
4286 ; AVX1-NEXT: vpextrb $3, %xmm3, %eax
4287 ; AVX1-NEXT: andb $1, %al
4288 ; AVX1-NEXT: movb %al, 4(%rdi)
4289 ; AVX1-NEXT: vpextrb $2, %xmm3, %eax
4290 ; AVX1-NEXT: andb $1, %al
4291 ; AVX1-NEXT: movb %al, 4(%rdi)
4292 ; AVX1-NEXT: vpextrb $1, %xmm3, %eax
4293 ; AVX1-NEXT: andb $1, %al
4294 ; AVX1-NEXT: movb %al, 4(%rdi)
4295 ; AVX1-NEXT: vpextrb $0, %xmm3, %eax
4296 ; AVX1-NEXT: andb $1, %al
4297 ; AVX1-NEXT: movb %al, 4(%rdi)
4298 ; AVX1-NEXT: vpextrb $15, %xmm2, %eax
4299 ; AVX1-NEXT: andb $1, %al
4300 ; AVX1-NEXT: movb %al, 4(%rdi)
4301 ; AVX1-NEXT: vpextrb $14, %xmm2, %eax
4302 ; AVX1-NEXT: andb $1, %al
4303 ; AVX1-NEXT: movb %al, 4(%rdi)
4304 ; AVX1-NEXT: vpextrb $13, %xmm2, %eax
4305 ; AVX1-NEXT: andb $1, %al
4306 ; AVX1-NEXT: movb %al, 4(%rdi)
4307 ; AVX1-NEXT: vpextrb $12, %xmm2, %eax
4308 ; AVX1-NEXT: andb $1, %al
4309 NEXT: movb %al, 4(%rdi)
4310 ; AVX1-NEXT: vpextrb $11, %xmm2, %eax
4311 ; AVX1-NEXT: andb $1, %al
4312 ; AVX1-NEXT: movb %al, 4(%rdi)
4313 ; AVX1-NEXT: vpextrb $10, %xmm2, %eax
4314 ; AVX1-NEXT: andb $1, %al
4315 ; AVX1-NEXT: movb %al, 4(%rdi)
4316 ; AVX1-NEXT: vpextrb $9, %xmm2, %eax
4317 ; AVX1-NEXT: andb $1, %al
4318 ; AVX1-NEXT: movb %al, 4(%rdi)
4319 ; AVX1-NEXT: vpextrb $8, %xmm2, %eax
4320 ; AVX1-NEXT: andb $1, %al
4321 ; AVX1-NEXT: movb %al, 4(%rdi)
4322 ; AVX1-NEXT: vpextrb $7, %xmm2, %eax
4323 ; AVX1-NEXT: andb $1, %al
4324 ; AVX1-NEXT: movb %al, 4(%rdi)
4325 ; AVX1-NEXT: vpextrb $6, %xmm2, %eax
4326 ; AVX1-NEXT: andb $1, %al
4327 ; AVX1-NEXT: movb %al, 4(%rdi)
4328 ; AVX1-NEXT: vpextrb $5, %xmm2, %eax
4329 ; AVX1-NEXT: andb $1, %al
4330 ; AVX1-NEXT: movb %al, 4(%rdi)
4331 ; AVX1-NEXT: vpextrb $4, %xmm2, %eax
4332 ; AVX1-NEXT: andb $1, %al
4333 ; AVX1-NEXT: movb %al, 4(%rdi)
4334 ; AVX1-NEXT: vpextrb $3, %xmm2, %eax
4335 ; AVX1-NEXT: andb $1, %al
4336 ; AVX1-NEXT: movb %al, 4(%rdi)
4337 ; AVX1-NEXT: vpextrb $2, %xmm2, %eax
4338 ; AVX1-NEXT: andb $1, %al
4339 ; AVX1-NEXT: movb %al, 4(%rdi)
4340 ; AVX1-NEXT: vpextrb $1, %xmm2, %eax
4341 ; AVX1-NEXT: andb $1, %al
4342 ; AVX1-NEXT: movb %al, 4(%rdi)
4343 ; AVX1-NEXT: vpextrb $0, %xmm2, %eax
4344 ; AVX1-NEXT: andb $1, %al
4345 ; AVX1-NEXT: movb %al, 4(%rdi)
4346 ; AVX1-NEXT: vpextrb $15, %xmm1, %eax
4347 ; AVX1-NEXT: andb $1, %al
4348 ; AVX1-NEXT: movb %al, (%rdi)
4349 ; AVX1-NEXT: vpextrb $14, %xmm1, %eax
4350 ; AVX1-NEXT: andb $1, %al
4351 ; AVX1-NEXT: movb %al, (%rdi)
4352 ; AVX1-NEXT: vpextrb $13, %xmm1, %eax
4353 ; AVX1-NEXT: andb $1, %al
4354 ; AVX1-NEXT: movb %al, (%rdi)
4355 ; AVX1-NEXT: vpextrb $12, %xmm1, %eax
4356 ; AVX1-NEXT: andb $1, %al
4357 ; AVX1-NEXT: movb %al, (%rdi)
4358 ; AVX1-NEXT: vpextrb $11, %xmm1, %eax
4359 ; AVX1-NEXT: andb $1, %al
4360 ; AVX1-NEXT: movb %al, (%rdi)
4361 ; AVX1-NEXT: vpextrb $10, %xmm1, %eax
4362 ; AVX1-NEXT: andb $1, %al
4363 ; AVX1-NEXT: movb %al, (%rdi)
4364 ; AVX1-NEXT: vpextrb $9, %xmm1, %eax
4365 ; AVX1-NEXT: andb $1, %al
4366 ; AVX1-NEXT: movb %al, (%rdi)
4367 ; AVX1-NEXT: vpextrb $8, %xmm1, %eax
4368 ; AVX1-NEXT: andb $1, %al
4369 ; AVX1-NEXT: movb %al, (%rdi)
4370 ; AVX1-NEXT: vpextrb $7, %xmm1, %eax
4371 ; AVX1-NEXT: andb $1, %al
4372 ; AVX1-NEXT: movb %al, (%rdi)
4373 ; AVX1-NEXT: vpextrb $6, %xmm1, %eax
4374 ; AVX1-NEXT: andb $1, %al
4375 ; AVX1-NEXT: movb %al, (%rdi)
4376 ; AVX1-NEXT: vpextrb $5, %xmm1, %eax
4377 ; AVX1-NEXT: andb $1, %al
4378 ; AVX1-NEXT: movb %al, (%rdi)
4379 ; AVX1-NEXT: vpextrb $4, %xmm1, %eax
4380 ; AVX1-NEXT: andb $1, %al
4381 ; AVX1-NEXT: movb %al, (%rdi)
4382 ; AVX1-NEXT: vpextrb $3, %xmm1, %eax
4383 ; AVX1-NEXT: andb $1, %al
4384 ; AVX1-NEXT: movb %al, (%rdi)
4385 ; AVX1-NEXT: vpextrb $2, %xmm1, %eax
4386 ; AVX1-NEXT: andb $1, %al
4387 ; AVX1-NEXT: movb %al, (%rdi)
4388 ; AVX1-NEXT: vpextrb $1, %xmm1, %eax
4389 ; AVX1-NEXT: andb $1, %al
4390 ; AVX1-NEXT: movb %al, (%rdi)
4391 ; AVX1-NEXT: vpextrb $0, %xmm1, %eax
4392 ; AVX1-NEXT: andb $1, %al
4393 ; AVX1-NEXT: movb %al, (%rdi)
4394 ; AVX1-NEXT: vpextrb $15, %xmm8, %eax
4395 ; AVX1-NEXT: andb $1, %al
4396 ; AVX1-NEXT: movb %al, (%rdi)
4397 ; AVX1-NEXT: vpextrb $14, %xmm8, %eax
4398 ; AVX1-NEXT: andb $1, %al
4399 ; AVX1-NEXT: movb %al, (%rdi)
4400 ; AVX1-NEXT: vpextrb $13, %xmm8, %eax
4401 ; AVX1-NEXT: andb $1, %al
4402 ; AVX1-NEXT: movb %al, (%rdi)
4403 ; AVX1-NEXT: vpextrb $12, %xmm8, %eax
4404 ; AVX1-NEXT: andb $1, %al
4405 ; AVX1-NEXT: movb %al, (%rdi)
4406 ; AVX1-NEXT: vpextrb $11, %xmm8, %eax
4407 ; AVX1-NEXT: andb $1, %al
4408 ; AVX1-NEXT: movb %al, (%rdi)
4409 ; AVX1-NEXT: vpextrb $10, %xmm8, %eax
4410 ; AVX1-NEXT: andb $1, %al
4411 ; AVX1-NEXT: movb %al, (%rdi)
4412 ; AVX1-NEXT: vpextrb $9, %xmm8, %eax
4413 ; AVX1-NEXT: andb $1, %al
4414 ; AVX1-NEXT: movb %al, (%rdi)
4415 ; AVX1-NEXT: vpextrb $8, %xmm8, %eax
4416 ; AVX1-NEXT: andb $1, %al
4417 ; AVX1-NEXT: movb %al, (%rdi)
4418 ; AVX1-NEXT: vpextrb $7, %xmm8, %eax
4419 ; AVX1-NEXT: andb $1, %al
4420 ; AVX1-NEXT: movb %al, (%rdi)
4421 ; AVX1-NEXT: vpextrb $6, %xmm8, %eax
4422 ; AVX1-NEXT: andb $1, %al
4423 ; AVX1-NEXT: movb %al, (%rdi)
4424 ; AVX1-NEXT: vpextrb $5, %xmm8, %eax
4425 ; AVX1-NEXT: andb $1, %al
4426 ; AVX1-NEXT: movb %al, (%rdi)
4427 ; AVX1-NEXT: vpextrb $4, %xmm8, %eax
4428 ; AVX1-NEXT: andb $1, %al
4429 ; AVX1-NEXT: movb %al, (%rdi)
4430 ; AVX1-NEXT: vpextrb $3, %xmm8, %eax
4431 ; AVX1-NEXT: andb $1, %al
4432 ; AVX1-NEXT: movb %al, (%rdi)
4433 ; AVX1-NEXT: vpextrb $2, %xmm8, %eax
4434 ; AVX1-NEXT: andb $1, %al
4435 ; AVX1-NEXT: movb %al, (%rdi)
4436 ; AVX1-NEXT: vpextrb $1, %xmm8, %eax
4437 ; AVX1-NEXT: andb $1, %al
4438 ; AVX1-NEXT: movb %al, (%rdi)
4439 ; AVX1-NEXT: vpextrb $0, %xmm8, %eax
4440 ; AVX1-NEXT: andb $1, %al
4441 ; AVX1-NEXT: movb %al, (%rdi)
4442 ; AVX1-NEXT: movq %rdi, %rax
4443 ; AVX1-NEXT: vzeroupper
4444 ; AVX1-NEXT: retq
4448 ; AVX2-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0
4449 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm8
4450 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
4451 ; AVX2-NEXT: vpshufb %xmm4, %xmm8, %xmm8
4452 ; AVX2-NEXT: vpshufb %xmm4, %xmm0, %xmm0
4453 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm8[0]
4454 ; AVX2-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1
4455 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm5
4456 ; AVX2-NEXT: vpshufb %xmm4, %xmm5, %xmm5
4457 ; AVX2-NEXT: vpshufb %xmm4, %xmm1, %xmm1
4458 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm5[0]
4459 ; AVX2-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2
4460 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm5
4461 ; AVX2-NEXT: vpshufb %xmm4, %xmm5, %xmm5
4462 ; AVX2-NEXT: vpshufb %xmm4, %xmm2, %xmm2
4463 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm5[0]
4464 ; AVX2-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3
4465 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm5
4466 ; AVX2-NEXT: vpshufb %xmm4, %xmm5, %xmm5
4467 ; AVX2-NEXT: vpshufb %xmm4, %xmm3, %xmm3
4468 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm5[0]
4469 ; AVX2-NEXT: vpextrb $15, %xmm3, %eax
4470 ; AVX2-NEXT: andb $1, %al
4471 ; AVX2-NEXT: movb %al, 4(%rdi)
4472 ; AVX2-NEXT: vpextrb $14, %xmm3, %eax
4473 ; AVX2-NEXT: andb $1, %al
4474 ; AVX2-NEXT: movb %al, 4(%rdi)
4475 ; AVX2-NEXT: vpextrb $13, %xmm3, %eax
4476 ; AVX2-NEXT: andb $1, %al
4477 ; AVX2-NEXT: movb %al, 4(%rdi)
4478 ; AVX2-NEXT: vpextrb $12, %xmm3, %eax
4479 ; AVX2-NEXT: andb $1, %al
4480 ; AVX2-NEXT: movb %al, 4(%rdi)
4481 ; AVX2-NEXT: vpextrb $11, %xmm3, %eax
4482 ; AVX2-NEXT: andb $1, %al
4483 ; AVX2-NEXT: movb %al, 4(%rdi)
4484 ; AVX2-NEXT: vpextrb $10, %xmm3, %eax
4485 ; AVX2-NEXT: andb $1, %al
4486 ; AVX2-NEXT: movb %al, 4(%rdi)
4487 ; AVX2-NEXT: vpextrb $9, %xmm3, %eax
4488 ; AVX2-NEXT: andb $1, %al
4489 ; AVX2-NEXT: movb %al, 4(%rdi)
4490 ; AVX2-NEXT: vpextrb $8, %xmm3, %eax
4491 ; AVX2-NEXT: andb $1, %al
4492 ; AVX2-NEXT: movb %al, 4(%rdi)
4493 ; AVX2-NEXT: vpextrb $7, %xmm3, %eax
4494 ; AVX2-NEXT: andb $1, %al
4495 ; AVX2-NEXT: movb %al, 4(%rdi)
4496 ; AVX2-NEXT: vpextrb $6, %xmm3, %eax
4497 ; AVX2-NEXT: andb $1, %al
4498 ; AVX2-NEXT: movb %al, 4(%rdi)
4499 ; AVX2-NEXT: vpextrb $5, %xmm3, %eax
4500 ; AVX2-NEXT: andb $1, %al
4501 ; AVX2-NEXT: movb %al, 4(%rdi)
4502 ; AVX2-NEXT: vpextrb $4, %xmm3, %eax
4503 ; AVX2-NEXT: andb $1, %al
4504 ; AVX2-NEXT: movb %al, 4(%rdi)
4505 ; AVX2-NEXT: vpextrb $3, %xmm3, %eax
4506 ; AVX2-NEXT: andb $1, %al
4507 ; AVX2-NEXT: movb %al, 4(%rdi)
4508 ; AVX2-NEXT: vpextrb $2, %xmm3, %eax
4509 ; AVX2-NEXT: andb $1, %al
4510 ; AVX2-NEXT: movb %al, 4(%rdi)
4511 ; AVX2-NEXT: vpextrb $1, %xmm3, %eax
4512 ; AVX2-NEXT: andb $1, %al
4513 ; AVX2-NEXT: movb %al, 4(%rdi)
4514 ; AVX2-NEXT: vpextrb $0, %xmm3, %eax
4515 ; AVX2-NEXT: andb $1, %al
4516 ; AVX2-NEXT: movb %al, 4(%rdi)
4517 ; AVX2-NEXT: vpextrb $15, %xmm2, %eax
4518 ; AVX2-NEXT: andb $1, %al
4519 ; AVX2-NEXT: movb %al, 4(%rdi)
4520 ; AVX2-NEXT: vpextrb $14, %xmm2, %eax
4521 ; AVX2-NEXT: andb $1, %al
4522 ; AVX2-NEXT: movb %al, 4(%rdi)
4523 ; AVX2-NEXT: vpextrb $13, %xmm2, %eax
4524 ; AVX2-NEXT: andb $1, %al
4525 ; AVX2-NEXT: movb %al, 4(%rdi)
4526 ; AVX2-NEXT: vpextrb $12, %xmm2, %eax
4527 ; AVX2-NEXT: andb $1, %al
4528 ; AVX2-NEXT: movb %al, 4(%rdi)
4529 ; AVX2-NEXT: vpextrb $11, %xmm2, %eax
4530 ; AVX2-NEXT: andb $1, %al
4531 ; AVX2-NEXT: movb %al, 4(%rdi)
4532 ; AVX2-NEXT: vpextrb $10, %xmm2, %eax
4533 ; AVX2-NEXT: andb $1, %al
4534 ; AVX2-NEXT: movb %al, 4(%rdi)
4535 ; AVX2-NEXT: vpextrb $9, %xmm2, %eax
4536 ; AVX2-NEXT: andb $1, %al
4537 ; AVX2-NEXT: movb %al, 4(%rdi)
4538 ; AVX2-NEXT: vpextrb $8, %xmm2, %eax
4539 ; AVX2-NEXT: andb $1, %al
4540 ; AVX2-NEXT: movb %al, 4(%rdi)
4541 ; AVX2-NEXT: vpextrb $7, %xmm2, %eax
4542 ; AVX2-NEXT: andb $1, %al
4543 ; AVX2-NEXT: movb %al, 4(%rdi)
4544 ; AVX2-NEXT: vpextrb $6, %xmm2, %eax
4545 ; AVX2-NEXT: andb $1, %al
4546 ; AVX2-NEXT: movb %al, 4(%rdi)
4547 ; AVX2-NEXT: vpextrb $5, %xmm2, %eax
4548 ; AVX2-NEXT: andb $1, %al
4549 ; AVX2-NEXT: movb %al, 4(%rdi)
4550 ; AVX2-NEXT: vpextrb $4, %xmm2, %eax
4551 ; AVX2-NEXT: andb $1, %al
4552 ; AVX2-NEXT: movb %al, 4(%rdi)
4553 ; AVX2-NEXT: vpextrb $3, %xmm2, %eax
4554 ; AVX2-NEXT: andb $1, %al
4555 ; AVX2-NEXT: movb %al, 4(%rdi)
4556 ; AVX2-NEXT: vpextrb $2, %xmm2, %eax
4557 ; AVX2-NEXT: andb $1, %al
4558 ; AVX2-NEXT: movb %al, 4(%rdi)
4559 ; AVX2-NEXT: vpextrb $1, %xmm2, %eax
4560 ; AVX2-NEXT: andb $1, %al
4561 ; AVX2-NEXT: movb %al, 4(%rdi)
4562 ; AVX2-NEXT: vpextrb $0, %xmm2, %eax
4563 ; AVX2-NEXT: andb $1, %al
4564 ; AVX2-NEXT: movb %al, 4(%rdi)
4565 ; AVX2-NEXT: vpextrb $15, %xmm1, %eax
4566 ; AVX2-NEXT: andb $1, %al
4567 ; AVX2-NEXT: movb %al, (%rdi)
4568 ; AVX2-NEXT: vpextrb $14, %xmm1, %eax
4569 ; AVX2-NEXT: andb $1, %al
4570 ; AVX2-NEXT: movb %al, (%rdi)
4571 ; AVX2-NEXT: vpextrb $13, %xmm1, %eax
4572 ; AVX2-NEXT: andb $1, %al
4573 ; AVX2-NEXT: movb %al, (%rdi)
4574 ; AVX2-NEXT: vpextrb $12, %xmm1, %eax
4575 ; AVX2-NEXT: andb $1, %al
4576 ; AVX2-NEXT: movb %al, (%rdi)
4577 ; AVX2-NEXT: vpextrb $11, %xmm1, %eax
4578 ; AVX2-NEXT: andb $1, %al
4579 ; AVX2-NEXT: movb %al, (%rdi)
4580 ; AVX2-NEXT: vpextrb $10, %xmm1, %eax
4581 ; AVX2-NEXT: andb $1, %al
4582 ; AVX2-NEXT: movb %al, (%rdi)
4583 ; AVX2-NEXT: vpextrb $9, %xmm1, %eax
4584 ; AVX2-NEXT: andb $1, %al
4585 ; AVX2-NEXT: movb %al, (%rdi)
4586 ; AVX2-NEXT: vpextrb $8, %xmm1, %eax
4587 ; AVX2-NEXT: andb $1, %al
4588 ; AVX2-NEXT: movb %al, (%rdi)
4589 ; AVX2-NEXT: vpextrb $7, %xmm1, %eax
4590 ; AVX2-NEXT: andb $1, %al
4591 ; AVX2-NEXT: movb %al, (%rdi)
4592 ; AVX2-NEXT: vpextrb $6, %xmm1, %eax
4593 ; AVX2-NEXT: andb $1, %al
4594 ; AVX2-NEXT: movb %al, (%rdi)
4595 ; AVX2-NEXT: vpextrb $5, %xmm1, %eax
4596 ; AVX2-NEXT: andb $1, %al
4597 ; AVX2-NEXT: movb %al, (%rdi)
4598 ; AVX2-NEXT: vpextrb $4, %xmm1, %eax
4599 ; AVX2-NEXT: andb $1, %al
4600 ; AVX2-NEXT: movb %al, (%rdi)
4601 ; AVX2-NEXT: vpextrb $3, %xmm1, %eax
4602 ; AVX2-NEXT: andb $1, %al
4603 ; AVX2-NEXT: movb %al, (%rdi)
4604 ; AVX2-NEXT: vpextrb $2, %xmm1, %eax
4605 ; AVX2-NEXT: andb $1, %al
4606 ; AVX2-NEXT: movb %al, (%rdi)
4607 ; AVX2-NEXT: vpextrb $1, %xmm1, %eax
4608 ; AVX2-NEXT: andb $1, %al
4609 ; AVX2-NEXT: movb %al, (%rdi)
4610 ; AVX2-NEXT: vpextrb $0, %xmm1, %eax
4611 ; AVX2-NEXT: andb $1, %al
4612 ; AVX2-NEXT: movb %al, (%rdi)
4613 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
4614 ; AVX2-NEXT: andb $1, %al
4615 ; AVX2-NEXT: movb %al, (%rdi)
4616 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
4617 ; AVX2-NEXT: andb $1, %al
4618 ; AVX2-NEXT: movb %al, (%rdi)
4619 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
4620 ; AVX2-NEXT: andb $1, %al
4621 ; AVX2-NEXT: movb %al, (%rdi)
4622 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
4623 ; AVX2-NEXT: andb $1, %al
4624 ; AVX2-NEXT: movb %al, (%rdi)
4625 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
4626 ; AVX2-NEXT: andb $1, %al
4627 ; AVX2-NEXT: movb %al, (%rdi)
4628 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
4629 ; AVX2-NEXT: andb $1, %al
4630 ; AVX2-NEXT: movb %al, (%rdi)
4631 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
4632 ; AVX2-NEXT: andb $1, %al
4633 ; AVX2-NEXT: movb %al, (%rdi)
4634 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
4635 ; AVX2-NEXT: andb $1, %al
4636 ; AVX2-NEXT: movb %al, (%rdi)
4637 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
4638 ; AVX2-NEXT: andb $1, %al
4639 ; AVX2-NEXT: movb %al, (%rdi)
4640 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
4641 ; AVX2-NEXT: andb $1, %al
4642 ; AVX2-NEXT: movb %al, (%rdi)
4643 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
4644 ; AVX2-NEXT: andb $1, %al
4645 ; AVX2-NEXT: movb %al, (%rdi)
4646 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
4647 ; AVX2-NEXT: andb $1, %al
4648 ; AVX2-NEXT: movb %al, (%rdi)
4649 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
4650 ; AVX2-NEXT: andb $1, %al
4651 ; AVX2-NEXT: movb %al, (%rdi)
4652 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
4653 ; AVX2-NEXT: andb $1, %al
4654 ; AVX2-NEXT: movb %al, (%rdi)
4655 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
4656 ; AVX2-NEXT: andb $1, %al
4657 ; AVX2-NEXT: movb %al, (%rdi)
4658 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
4659 ; AVX2-NEXT: andb $1, %al
4660 ; AVX2-NEXT: movb %al, (%rdi)
4661 ; AVX2-NEXT: movq %rdi, %rax
4662 ; AVX2-NEXT: vzeroupper
4663 ; AVX2-NEXT: retq
4667 ; AVX512-NEXT: vpcmpgtw %ymm7, %ymm3, %ymm3
4668 ; AVX512-NEXT: vpmovsxwd %ymm3, %zmm3
4669 ; AVX512-NEXT: vpslld $31, %zmm3, %zmm3
4670 ; AVX512-NEXT: vptestmd %zmm3, %zmm3, %k0
4671 ; AVX512-NEXT: kshiftlw $14, %k0, %k1
4672 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4673 ; AVX512-NEXT: kmovw %k1, %eax
4674 ; AVX512-NEXT: kshiftlw $15, %k0, %k1
4675 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4676 ; AVX512-NEXT: kmovw %k1, %ecx
4677 ; AVX512-NEXT: vmovd %ecx, %xmm3
4678 ; AVX512-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3
4679 ; AVX512-NEXT: kshiftlw $13, %k0, %k1
4680 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4681 ; AVX512-NEXT: kmovw %k1, %eax
4682 ; AVX512-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3
4683 ; AVX512-NEXT: kshiftlw $12, %k0, %k1
4684 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4685 ; AVX512-NEXT: kmovw %k1, %eax
4686 ; AVX512-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3
4687 ; AVX512-NEXT: kshiftlw $11, %k0, %k1
4688 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4689 ; AVX512-NEXT: kmovw %k1, %eax
4690 ; AVX512-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3
4691 ; AVX512-NEXT: kshiftlw $10, %k0, %k1
4692 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4693 ; AVX512-NEXT: kmovw %k1, %eax
4694 ; AVX512-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3
4695 ; AVX512-NEXT: kshiftlw $9, %k0, %k1
4696 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4697 ; AVX512-NEXT: kmovw %k1, %eax
4698 ; AVX512-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3
4699 ; AVX512-NEXT: kshiftlw $8, %k0, %k1
4700 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4701 ; AVX512-NEXT: kmovw %k1, %eax
4702 ; AVX512-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3
4703 ; AVX512-NEXT: kshiftlw $7, %k0, %k1
4704 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4705 ; AVX512-NEXT: kmovw %k1, %eax
4706 ; AVX512-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3
4707 ; AVX512-NEXT: kshiftlw $6, %k0, %k1
4708 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4709 ; AVX512-NEXT: kmovw %k1, %eax
4710 ; AVX512-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3
4711 ; AVX512-NEXT: kshiftlw $5, %k0, %k1
4712 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4713 ; AVX512-NEXT: kmovw %k1, %eax
4714 ; AVX512-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3
4715 ; AVX512-NEXT: kshiftlw $4, %k0, %k1
4716 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4717 ; AVX512-NEXT: kmovw %k1, %eax
4718 ; AVX512-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3
4719 ; AVX512-NEXT: kshiftlw $3, %k0, %k1
4720 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4721 ; AVX512-NEXT: kmovw %k1, %eax
4722 ; AVX512-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3
4723 ; AVX512-NEXT: kshiftlw $2, %k0, %k1
4724 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4725 ; AVX512-NEXT: kmovw %k1, %eax
4726 ; AVX512-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3
4727 ; AVX512-NEXT: kshiftlw $1, %k0, %k1
4728 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4729 ; AVX512-NEXT: kmovw %k1, %eax
4730 ; AVX512-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3
4731 ; AVX512-NEXT: kshiftlw $0, %k0, %k0
4732 ; AVX512-NEXT: kshiftrw $15, %k0, %k0
4733 ; AVX512-NEXT: kmovw %k0, %eax
4734 ; AVX512-NEXT: vpinsrb $15, %eax, %xmm3, %xmm3
4735 ; AVX512-NEXT: vpcmpgtw %ymm6, %ymm2, %ymm2
4736 ; AVX512-NEXT: vpmovsxwd %ymm2, %zmm2
4737 ; AVX512-NEXT: vpslld $31, %zmm2, %zmm2
4738 ; AVX512-NEXT: vptestmd %zmm2, %zmm2, %k0
4739 ; AVX512-NEXT: kshiftlw $14, %k0, %k1
4740 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4741 ; AVX512-NEXT: kmovw %k1, %eax
4742 ; AVX512-NEXT: kshiftlw $15, %k0, %k1
4743 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4744 ; AVX512-NEXT: kmovw %k1, %ecx
4745 ; AVX512-NEXT: vmovd %ecx, %xmm2
4746 ; AVX512-NEXT: vpinsrb $1, %eax, %xmm2, %xmm2
4747 ; AVX512-NEXT: kshiftlw $13, %k0, %k1
4748 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4749 ; AVX512-NEXT: kmovw %k1, %eax
4750 ; AVX512-NEXT: vpinsrb $2, %eax, %xmm2, %xmm2
4751 ; AVX512-NEXT: kshiftlw $12, %k0, %k1
4752 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4753 ; AVX512-NEXT: kmovw %k1, %eax
4754 ; AVX512-NEXT: vpinsrb $3, %eax, %xmm2, %xmm2
4755 ; AVX512-NEXT: kshiftlw $11, %k0, %k1
4756 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4757 ; AVX512-NEXT: kmovw %k1, %eax
4758 ; AVX512-NEXT: vpinsrb $4, %eax, %xmm2, %xmm2
4759 ; AVX512-NEXT: kshiftlw $10, %k0, %k1
4760 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4761 ; AVX512-NEXT: kmovw %k1, %eax
4762 ; AVX512-NEXT
4763 ; AVX512-NEXT: kshiftlw $9, %k0, %k1
4764 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4765 ; AVX512-NEXT: kmovw %k1, %eax
4766 ; AVX512-NEXT: vpinsrb $6, %eax, %xmm2, %xmm2
4767 ; AVX512-NEXT: kshiftlw $8, %k0, %k1
4768 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4769 ; AVX512-NEXT: kmovw %k1, %eax
4770 ; AVX512-NEXT: vpinsrb $7, %eax, %xmm2, %xmm2
4771 ; AVX512-NEXT: kshiftlw $7, %k0, %k1
4772 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4773 ; AVX512-NEXT: kmovw %k1, %eax
4774 ; AVX512-NEXT: vpinsrb $8, %eax, %xmm2, %xmm2
4775 ; AVX512-NEXT: kshiftlw $6, %k0, %k1
4776 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4777 ; AVX512-NEXT: kmovw %k1, %eax
4778 ; AVX512-NEXT: vpinsrb $9, %eax, %xmm2, %xmm2
4779 ; AVX512-NEXT: kshiftlw $5, %k0, %k1
4780 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4781 ; AVX512-NEXT: kmovw %k1, %eax
4782 ; AVX512-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2
4783 ; AVX512-NEXT: kshiftlw $4, %k0, %k1
4784 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4785 ; AVX512-NEXT: kmovw %k1, %eax
4786 ; AVX512-NEXT: vpinsrb $11, %eax, %xmm2, %xmm2
4787 ; AVX512-NEXT: kshiftlw $3, %k0, %k1
4788 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4789 ; AVX512-NEXT: kmovw %k1, %eax
4790 ; AVX512-NEXT: vpinsrb $12, %eax, %xmm2, %xmm2
4791 ; AVX512-NEXT: kshiftlw $2, %k0, %k1
4792 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4793 ; AVX512-NEXT: kmovw %k1, %eax
4794 ; AVX512-NEXT: vpinsrb $13, %eax, %xmm2, %xmm2
4795 ; AVX512-NEXT: kshiftlw $1, %k0, %k1
4796 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4797 ; AVX512-NEXT: kmovw %k1, %eax
4798 ; AVX512-NEXT: vpinsrb $14, %eax, %xmm2, %xmm2
4799 ; AVX512-NEXT: kshiftlw $0, %k0, %k0
4800 ; AVX512-NEXT: kshiftrw $15, %k0, %k0
4801 ; AVX512-NEXT: kmovw %k0, %eax
4802 ; AVX512-NEXT: vpinsrb $15, %eax, %xmm2, %xmm2
4803 ; AVX512-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4804 ; AVX512-NEXT: vpsllw $7, %ymm2, %ymm3
4805 ; AVX512-NEXT: vmovdqa {{.*#+}} ymm2 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
4806 ; AVX512-NEXT: vpand %ymm2, %ymm3, %ymm3
4807 ; AVX512-NEXT: vpxor %ymm6, %ymm6, %ymm6
4808 ; AVX512-NEXT: vpcmpgtb %ymm3, %ymm6, %ymm3
4809 ; AVX512-NEXT: vpcmpgtw %ymm5, %ymm1, %ymm1
4810 ; AVX512-NEXT: vpmovsxwd %ymm1, %zmm1
4811 ; AVX512-NEXT: vpslld $31, %zmm1, %zmm1
4812 ; AVX512-NEXT: vptestmd %zmm1, %zmm1, %k0
4813 ; AVX512-NEXT: kshiftlw $14, %k0, %k1
4814 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4815 ; AVX512-NEXT: kmovw %k1, %eax
4816 ; AVX512-NEXT: kshiftlw $15, %k0, %k1
4817 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4818 ; AVX512-NEXT: kmovw %k1, %ecx
4819 ; AVX512-NEXT: vmovd %ecx, %xmm1
4820 ; AVX512-NEXT: vpinsrb $1, %eax, %xmm1, %xmm1
4821 ; AVX512-NEXT: kshiftlw $13, %k0, %k1
4822 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4823 ; AVX512-NEXT: kmovw %k1, %eax
4824 ; AVX512-NEXT: vpinsrb $2, %eax, %xmm1, %xmm1
4825 ; AVX512-NEXT: kshiftlw $12, %k0, %k1
4826 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4827 ; AVX512-NEXT: kmovw %k1, %eax
4828 ; AVX512-NEXT: vpinsrb $3, %eax, %xmm1, %xmm1
4829 ; AVX512-NEXT: kshiftlw $11, %k0, %k1
4830 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4831 ; AVX512-NEXT: kmovw %k1, %eax
4832 ; AVX512-NEXT: vpinsrb $4, %eax, %xmm1, %xmm1
4833 ; AVX512-NEXT: kshiftlw $10, %k0, %k1
4834 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4835 ; AVX512-NEXT: kmovw %k1, %eax
4836 ; AVX512-NEXT: vpinsrb $5, %eax, %xmm1, %xmm1
4837 ; AVX512-NEXT: kshiftlw $9, %k0, %k1
4838 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4839 ; AVX512-NEXT: kmovw %k1, %eax
4840 ; AVX512-NEXT: vpinsrb $6, %eax, %xmm1, %xmm1
4841 ; AVX512-NEXT: kshiftlw $8, %k0, %k1
4842 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4843 ; AVX512-NEXT: kmovw %k1, %eax
4844 ; AVX512-NEXT: vpinsrb $7, %eax, %xmm1, %xmm1
4845 ; AVX512-NEXT: kshiftlw $7, %k0, %k1
4846 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4847 ; AVX512-NEXT: kmovw %k1, %eax
4848 ; AVX512-NEXT: vpinsrb $8, %eax, %xmm1, %xmm1
4849 ; AVX512-NEXT: kshiftlw $6, %k0, %k1
4850 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4851 ; AVX512-NEXT: kmovw %k1, %eax
4852 ; AVX512-NEXT: vpinsrb $9, %eax, %xmm1, %xmm1
4853 ; AVX512-NEXT: kshiftlw $5, %k0, %k1
4854 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4855 ; AVX512-NEXT: kmovw %k1, %eax
4856 ; AVX512-NEXT: vpinsrb $10, %eax, %xmm1, %xmm1
4857 ; AVX512-NEXT: kshiftlw $4, %k0, %k1
4858 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4859 ; AVX512-NEXT: kmovw %k1, %eax
4860 ; AVX512-NEXT: vpinsrb $11, %eax, %xmm1, %xmm1
4861 ; AVX512-NEXT: kshiftlw $3, %k0, %k1
4862 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4863 ; AVX512-NEXT: kmovw %k1, %eax
4864 ; AVX512-NEXT: vpinsrb $12, %eax, %xmm1, %xmm1
4865 ; AVX512-NEXT: kshiftlw $2, %k0, %k1
4866 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4867 ; AVX512-NEXT: kmovw %k1, %eax
4868 ; AVX512-NEXT: vpinsrb $13, %eax, %xmm1, %xmm1
4869 ; AVX512-NEXT: kshiftlw $1, %k0, %k1
4870 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4871 ; AVX512-NEXT: kmovw %k1, %eax
4872 ; AVX512-NEXT: vpinsrb $14, %eax, %xmm1, %xmm1
4873 ; AVX512-NEXT: kshiftlw $0, %k0, %k0
4874 ; AVX512-NEXT: kshiftrw $15, %k0, %k0
4875 ; AVX512-NEXT: kmovw %k0, %eax
4876 ; AVX512-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1
4877 ; AVX512-NEXT: vpcmpgtw %ymm4, %ymm0, %ymm0
4878 ; AVX512-NEXT: vpmovsxwd %ymm0, %zmm0
4879 ; AVX512-NEXT: vpslld $31, %zmm0, %zmm0
4880 ; AVX512-NEXT: vptestmd %zmm0, %zmm0, %k0
4881 ; AVX512-NEXT: kshiftlw $14, %k0, %k1
4882 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4883 ; AVX512-NEXT: kmovw %k1, %eax
4884 ; AVX512-NEXT: kshiftlw $15, %k0, %k1
4885 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4886 ; AVX512-NEXT: kmovw %k1, %ecx
4887 ; AVX512-NEXT: vmovd %ecx, %xmm0
4888 ; AVX512-NEXT: vpinsrb $1, %eax, %xmm0, %xmm0
4889 ; AVX512-NEXT: kshiftlw $13, %k0, %k1
4890 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4891 ; AVX512-NEXT: kmovw %k1, %eax
4892 ; AVX512-NEXT: vpinsrb $2, %eax, %xmm0, %xmm0
4893 ; AVX512-NEXT: kshiftlw $12, %k0, %k1
4894 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4895 ; AVX512-NEXT: kmovw %k1, %eax
4896 ; AVX512-NEXT: vpinsrb $3, %eax, %xmm0, %xmm0
4897 ; AVX512-NEXT: kshiftlw $11, %k0, %k1
4898 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4899 ; AVX512-NEXT: kmovw %k1, %eax
4900 ; AVX512-NEXT: vpinsrb $4, %eax, %xmm0, %xmm0
4901 ; AVX512-NEXT: kshiftlw $10, %k0, %k1
4902 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4903 ; AVX512-NEXT: kmovw %k1, %eax
4904 ; AVX512-NEXT: vpinsrb $5, %eax, %xmm0, %xmm0
4905 ; AVX512-NEXT: kshiftlw $9, %k0, %k1
4906 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4907 ; AVX512-NEXT: kmovw %k1, %eax
4908 ; AVX512-NEXT: vpinsrb $6, %eax, %xmm0, %xmm0
4909 ; AVX512-NEXT: kshiftlw $8, %k0, %k1
4910 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4911 ; AVX512-NEXT: kmovw %k1, %eax
4912 ; AVX512-NEXT: vpinsrb $7, %eax, %xmm0, %xmm0
4913 ; AVX512-NEXT: kshiftlw $7, %k0, %k1
4914 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4915 ; AVX512-NEXT: kmovw %k1, %eax
4916 ; AVX512-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0
4917 ; AVX512-NEXT: kshiftlw $6, %k0, %k1
4918 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4919 ; AVX512-NEXT: kmovw %k1, %eax
4920 ; AVX512-NEXT: vpinsrb $9, %eax, %xmm0, %xmm0
4921 ; AVX512-NEXT: kshiftlw $5, %k0, %k1
4922 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4923 ; AVX512-NEXT: kmovw %k1, %eax
4924 ; AVX512-NEXT: vpinsrb $10, %eax, %xmm0, %xmm0
4925 ; AVX512-NEXT: kshiftlw $4, %k0, %k1
4926 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4927 ; AVX512-NEXT: kmovw %k1, %eax
4928 ; AVX512-NEXT: vpinsrb $11, %eax, %xmm0, %xmm0
4929 ; AVX512-NEXT: kshiftlw $3, %k0, %k1
4930 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4931 ; AVX512-NEXT: kmovw %k1, %eax
4932 ; AVX512-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0
4933 ; AVX512-NEXT: kshiftlw $2, %k0, %k1
4934 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4935 ; AVX512-NEXT: kmovw %k1, %eax
4936 ; AVX512-NEXT: vpinsrb $13, %eax, %xmm0, %xmm0
4937 ; AVX512-NEXT: kshiftlw $1, %k0, %k1
4938 ; AVX512-NEXT: kshiftrw $15, %k1, %k1
4939 ; AVX512-NEXT: kmovw %k1, %eax
4940 ; AVX512-NEXT: vpinsrb $14, %eax, %xmm0, %xmm0
4941 ; AVX512-NEXT: kshiftlw $0, %k0, %k0
4942 ; AVX512-NEXT: kshiftrw $15, %k0, %k0
4943 ; AVX512-NEXT: kmovw %k0, %eax
4944 ; AVX512-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0
4945 ; AVX512-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
4946 ; AVX512-NEXT: vpsllw $7, %ymm0, %ymm0
4947 ; AVX512-NEXT: vpand %ymm2, %ymm0, %ymm0
4948 ; AVX512-NEXT: vpcmpgtb %ymm0, %ymm6, %ymm1
4949 ; AVX512-NEXT: vpsllw $7, %xmm1, %xmm0
4950 ; AVX512-NEXT: vmovdqa {{.*#+}} xmm4 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
4951 ; AVX512-NEXT: vpand %xmm4, %xmm0, %xmm0
4952 ; AVX512-NEXT: vpxor %xmm5, %xmm5, %xmm5
4953 ; AVX512-NEXT: vpcmpgtb %xmm0, %xmm5, %xmm0
4954 ; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm1
4955 ; AVX512-NEXT: vpsllw $7, %xmm1, %xmm1
4956 ; AVX512-NEXT: vpand %xmm4, %xmm1, %xmm1
4957 ; AVX512-NEXT: vpcmpgtb %xmm1, %xmm5, %xmm1
4958 ; AVX512-NEXT: vpsllw $7, %xmm3, %xmm2
4959 ; AVX512-NEXT: vpand %xmm4, %xmm2, %xmm2
4960 ; AVX512-NEXT: vpcmpgtb %xmm2, %xmm5, %xmm2
4961 ; AVX512-NEXT: vextracti128 $1, %ymm3, %xmm3
4962 ; AVX512-NEXT: vpsllw $7, %xmm3, %xmm3
4963 ; AVX512-NEXT: vpand %xmm4, %xmm3, %xmm3
4964 ; AVX512-NEXT: vpcmpgtb %xmm3, %xmm5, %xmm3
4965 ; AVX512-NEXT: retq
4973 ; SSE2-NEXT: pushq %rax
4974 ; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm0
4975 ; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm1
4976 ; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm2
4977 ; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm3
4978 ; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm4
4979 ; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm5
4980 ; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm6
4981 ; SSE2-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm7
4982 ; SSE2-NEXT: movdqa %xmm7, -{{[0-9]+}}(%rsp)
4983 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
4984 ; SSE2-NEXT: andb $1, %al
4985 ; SSE2-NEXT: movb %al, 14(%rdi)
4986 ; SSE2-NEXT: movdqa %xmm6, -{{[0-9]+}}(%rsp)
4987 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
4988 ; SSE2-NEXT: andb $1, %al
4989 ; SSE2-NEXT: movb %al, 12(%rdi)
4990 ; SSE2-NEXT: movdqa %xmm5, -{{[0-9]+}}(%rsp)
4991 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
4992 ; SSE2-NEXT: andb $1, %al
4993 ; SSE2-NEXT: movb %al, 10(%rdi)
4994 ; SSE2-NEXT: movdqa %xmm4, -{{[0-9]+}}(%rsp)
4995 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
4996 ; SSE2-NEXT: andb $1, %al
4997 ; SSE2-NEXT: movb %al, 8(%rdi)
4998 ; SSE2-NEXT: movdqa %xmm3, -{{[0-9]+}}(%rsp)
4999 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5000 ; SSE2-NEXT: andb $1, %al
5001 ; SSE2-NEXT: movb %al, 6(%rdi)
5002 ; SSE2-NEXT: movdqa %xmm2, -{{[0-9]+}}(%rsp)
5003 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5004 ; SSE2-NEXT: andb $1, %al
5005 ; SSE2-NEXT: movb %al, 4(%rdi)
5006 ; SSE2-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp)
5007 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5008 ; SSE2-NEXT: andb $1, %al
5009 ; SSE2-NEXT: movb %al, 2(%rdi)
5010 ; SSE2-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
5011 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5012 ; SSE2-NEXT: andb $1, %al
5013 ; SSE2-NEXT: movb %al, (%rdi)
5014 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5015 ; SSE2-NEXT: andb $1, %al
5016 ; SSE2-NEXT: movb %al, 14(%rdi)
5017 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5018 ; SSE2-NEXT: andb $1, %al
5019 ; SSE2-NEXT: movb %al, 12(%rdi)
5020 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5021 ; SSE2-NEXT: andb $1, %al
5022 ; SSE2-NEXT: movb %al, 10(%rdi)
5023 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5024 ; SSE2-NEXT: andb $1, %al
5025 ; SSE2-NEXT: movb %al, 8(%rdi)
5026 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5027 ; SSE2-NEXT: andb $1, %al
5028 ; SSE2-NEXT: movb %al, 6(%rdi)
5029 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5030 ; SSE2-NEXT: andb $1, %al
5031 ; SSE2-NEXT: movb %al, 4(%rdi)
5032 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5033 ; SSE2-NEXT: andb $1, %al
5034 ; SSE2-NEXT: movb %al, 2(%rdi)
5035 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5036 ; SSE2-NEXT: andb $1, %al
5037 ; SSE2-NEXT: movb %al, (%rdi)
5038 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5039 ; SSE2-NEXT: andb $1, %al
5040 ; SSE2-NEXT: movb %al, 14(%rdi)
5041 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5042 ; SSE2-NEXT: andb $1, %al
5043 ; SSE2-NEXT: movb %al, 12(%rdi)
5044 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5045 ; SSE2-NEXT: andb $1, %al
5046 ; SSE2-NEXT: movb %al, 10(%rdi)
5047 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5048 ; SSE2-NEXT: andb $1, %al
5049 ; SSE2-NEXT: movb %al, 8(%rdi)
5050 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5051 ; SSE2-NEXT: andb $1, %al
5052 ; SSE2-NEXT: movb %al, 6(%rdi)
5053 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5054 ; SSE2-NEXT: andb $1, %al
5055 ; SSE2-NEXT: movb %al, 4(%rdi)
5056 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5057 ; SSE2-NEXT: andb $1, %al
5058 ; SSE2-NEXT: movb %al, 2(%rdi)
5059 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5060 ; SSE2-NEXT: andb $1, %al
5061 ; SSE2-NEXT: movb %al, (%rdi)
5062 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5063 ; SSE2-NEXT: andb $1, %al
5064 ; SSE2-NEXT: movb %al, 14(%rdi)
5065 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5066 ; SSE2-NEXT: andb $1, %al
5067 ; SSE2-NEXT: movb %al, 12(%rdi)
5068 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5069 ; SSE2-NEXT: andb $1, %al
5070 ; SSE2-NEXT: movb %al, 10(%rdi)
5071 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5072 ; SSE2-NEXT: andb $1, %al
5073 ; SSE2-NEXT: movb %al, 8(%rdi)
5074 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5075 ; SSE2-NEXT: andb $1, %al
5076 ; SSE2-NEXT: movb %al, 6(%rdi)
5077 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5078 ; SSE2-NEXT: andb $1, %al
5079 ; SSE2-NEXT: movb %al, 4(%rdi)
5080 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5081 ; SSE2-NEXT: andb $1, %al
5082 ; SSE2-NEXT: movb %al, 2(%rdi)
5083 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5084 ; SSE2-NEXT: andb $1, %al
5085 ; SSE2-NEXT: movb %al, (%rdi)
5086 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5087 ; SSE2-NEXT: andb $1, %al
5088 ; SSE2-NEXT: movb %al, 14(%rdi)
5089 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5090 ; SSE2-NEXT: andb $1, %al
5091 ; SSE2-NEXT: movb %al, 12(%rdi)
5092 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5093 ; SSE2-NEXT: andb $1, %al
5094 ; SSE2-NEXT: movb %al, 10(%rdi)
5095 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5096 ; SSE2-NEXT: andb $1, %al
5097 ; SSE2-NEXT: movb %al, 8(%rdi)
5098 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5099 ; SSE2-NEXT: andb $1, %al
5100 ; SSE2-NEXT: movb %al, 6(%rdi)
5101 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5102 ; SSE2-NEXT: andb $1, %al
5103 ; SSE2-NEXT: movb %al, 4(%rdi)
5104 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5105 ; SSE2-NEXT: andb $1, %al
5106 ; SSE2-NEXT: movb %al, 2(%rdi)
5107 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5108 ; SSE2-NEXT: andb $1, %al
5109 ; SSE2-NEXT: movb %al, (%rdi)
5110 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5111 ; SSE2-NEXT: andb $1, %al
5112 ; SSE2-NEXT: movb %al, 14(%rdi)
5113 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5114 ; SSE2-NEXT: andb $1, %al
5115 ; SSE2-NEXT: movb %al, 12(%rdi)
5116 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5117 ; SSE2-NEXT: andb $1, %al
5118 ; SSE2-NEXT: movb %al, 10(%rdi)
5119 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5120 ; SSE2-NEXT: andb $1, %al
5121 ; SSE2-NEXT: movb %al, 8(%rdi)
5122 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5123 ; SSE2-NEXT: andb $1, %al
5124 ; SSE2-NEXT: movb %al, 6(%rdi)
5125 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5126 ; SSE2-NEXT: andb $1, %al
5127 ; SSE2-NEXT: movb %al, 4(%rdi)
5128 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5129 ; SSE2-NEXT: andb $1, %al
5130 ; SSE2-NEXT: movb %al, 2(%rdi)
5131 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5132 ; SSE2-NEXT: andb $1, %al
5133 ; SSE2-NEXT: movb %al, (%rdi)
5134 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5135 ; SSE2-NEXT: andb $1, %al
5136 ; SSE2-NEXT: movb %al, 14(%rdi)
5137 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5138 ; SSE2-NEXT: andb $1, %al
5139 ; SSE2-NEXT: movb %al, 12(%rdi)
5140 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5141 ; SSE2-NEXT: andb $1, %al
5142 ; SSE2-NEXT: movb %al, 10(%rdi)
5143 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5144 ; SSE2-NEXT: andb $1, %al
5145 ; SSE2-NEXT: movb %al, 8(%rdi)
5146 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5147 ; SSE2-NEXT: andb $1, %al
5148 ; SSE2-NEXT: movb %al, 6(%rdi)
5149 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5150 ; SSE2-NEXT: andb $1, %al
5151 ; SSE2-NEXT: movb %al, 4(%rdi)
5152 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5153 ; SSE2-NEXT: andb $1, %al
5154 ; SSE2-NEXT: movb %al, 2(%rdi)
5155 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5156 ; SSE2-NEXT: andb $1, %al
5157 ; SSE2-NEXT: movb %al, (%rdi)
5158 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5159 ; SSE2-NEXT: andb $1, %al
5160 ; SSE2-NEXT: movb %al, 14(%rdi)
5161 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5162 ; SSE2-NEXT: andb $1, %al
5163 ; SSE2-NEXT: movb %al, 12(%rdi)
5164 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5165 ; SSE2-NEXT: andb $1, %al
5166 ; SSE2-NEXT: movb %al, 10(%rdi)
5167 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5168 ; SSE2-NEXT: andb $1, %al
5169 ; SSE2-NEXT: movb %al, 8(%rdi)
5170 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5171 ; SSE2-NEXT: andb $1, %al
5172 ; SSE2-NEXT: movb %al, 6(%rdi)
5173 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5174 ; SSE2-NEXT: andb $1, %al
5175 ; SSE2-NEXT: movb %al, 4(%rdi)
5176 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5177 ; SSE2-NEXT: andb $1, %al
5178 ; SSE2-NEXT: movb %al, 2(%rdi)
5179 NEXT: movb -{{[0-9]+}}(%rsp), %al
5180 ; SSE2-NEXT: andb $1, %al
5181 ; SSE2-NEXT: movb %al, (%rdi)
5182 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5183 ; SSE2-NEXT: andb $1, %al
5184 ; SSE2-NEXT: movb %al, 14(%rdi)
5185 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5186 ; SSE2-NEXT: andb $1, %al
5187 ; SSE2-NEXT: movb %al, 12(%rdi)
5188 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5189 ; SSE2-NEXT: andb $1, %al
5190 ; SSE2-NEXT: movb %al, 10(%rdi)
5191 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5192 ; SSE2-NEXT: andb $1, %al
5193 ; SSE2-NEXT: movb %al, 8(%rdi)
5194 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5195 ; SSE2-NEXT: andb $1, %al
5196 ; SSE2-NEXT: movb %al, 6(%rdi)
5197 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5198 ; SSE2-NEXT: andb $1, %al
5199 ; SSE2-NEXT: movb %al, 4(%rdi)
5200 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5201 ; SSE2-NEXT: andb $1, %al
5202 ; SSE2-NEXT: movb %al, 2(%rdi)
5203 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5204 ; SSE2-NEXT: andb $1, %al
5205 ; SSE2-NEXT: movb %al, (%rdi)
5206 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5207 ; SSE2-NEXT: andb $1, %al
5208 ; SSE2-NEXT: movb %al, 14(%rdi)
5209 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5210 ; SSE2-NEXT: andb $1, %al
5211 ; SSE2-NEXT: movb %al, 12(%rdi)
5212 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5213 ; SSE2-NEXT: andb $1, %al
5214 ; SSE2-NEXT: movb %al, 10(%rdi)
5215 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5216 ; SSE2-NEXT: andb $1, %al
5217 ; SSE2-NEXT: movb %al, 8(%rdi)
5218 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5219 ; SSE2-NEXT: andb $1, %al
5220 ; SSE2-NEXT: movb %al, 6(%rdi)
5221 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5222 ; SSE2-NEXT: andb $1, %al
5223 ; SSE2-NEXT: movb %al, 4(%rdi)
5224 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5225 ; SSE2-NEXT: andb $1, %al
5226 ; SSE2-NEXT: movb %al, 2(%rdi)
5227 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5228 ; SSE2-NEXT: andb $1, %al
5229 ; SSE2-NEXT: movb %al, (%rdi)
5230 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5231 ; SSE2-NEXT: andb $1, %al
5232 ; SSE2-NEXT: movb %al, 14(%rdi)
5233 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5234 ; SSE2-NEXT: andb $1, %al
5235 ; SSE2-NEXT: movb %al, 12(%rdi)
5236 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5237 ; SSE2-NEXT: andb $1, %al
5238 ; SSE2-NEXT: movb %al, 10(%rdi)
5239 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5240 ; SSE2-NEXT: andb $1, %al
5241 ; SSE2-NEXT: movb %al, 8(%rdi)
5242 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5243 ; SSE2-NEXT: andb $1, %al
5244 ; SSE2-NEXT: movb %al, 6(%rdi)
5245 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5246 ; SSE2-NEXT: andb $1, %al
5247 ; SSE2-NEXT: movb %al, 4(%rdi)
5248 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5249 ; SSE2-NEXT: andb $1, %al
5250 ; SSE2-NEXT: movb %al, 2(%rdi)
5251 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5252 ; SSE2-NEXT: andb $1, %al
5253 ; SSE2-NEXT: movb %al, (%rdi)
5254 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5255 ; SSE2-NEXT: andb $1, %al
5256 ; SSE2-NEXT: movb %al, 14(%rdi)
5257 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5258 ; SSE2-NEXT: andb $1, %al
5259 ; SSE2-NEXT: movb %al, 12(%rdi)
5260 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5261 ; SSE2-NEXT: andb $1, %al
5262 ; SSE2-NEXT: movb %al, 10(%rdi)
5263 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5264 ; SSE2-NEXT: andb $1, %al
5265 ; SSE2-NEXT: movb %al, 8(%rdi)
5266 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5267 ; SSE2-NEXT: andb $1, %al
5268 ; SSE2-NEXT: movb %al, 6(%rdi)
5269 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5270 ; SSE2-NEXT: andb $1, %al
5271 ; SSE2-NEXT: movb %al, 4(%rdi)
5272 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5273 ; SSE2-NEXT: andb $1, %al
5274 ; SSE2-NEXT: movb %al, 2(%rdi)
5275 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5276 ; SSE2-NEXT: andb $1, %al
5277 ; SSE2-NEXT: movb %al, (%rdi)
5278 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5279 ; SSE2-NEXT: andb $1, %al
5280 ; SSE2-NEXT: movb %al, 14(%rdi)
5281 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5282 ; SSE2-NEXT: andb $1, %al
5283 ; SSE2-NEXT: movb %al, 12(%rdi)
5284 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5285 ; SSE2-NEXT: andb $1, %al
5286 ; SSE2-NEXT: movb %al, 10(%rdi)
5287 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5288 ; SSE2-NEXT: andb $1, %al
5289 ; SSE2-NEXT: movb %al, 8(%rdi)
5290 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5291 ; SSE2-NEXT: andb $1, %al
5292 ; SSE2-NEXT: movb %al, 6(%rdi)
5293 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5294 ; SSE2-NEXT: andb $1, %al
5295 ; SSE2-NEXT: movb %al, 4(%rdi)
5296 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5297 ; SSE2-NEXT: andb $1, %al
5298 ; SSE2-NEXT: movb %al, 2(%rdi)
5299 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5300 ; SSE2-NEXT: andb $1, %al
5301 ; SSE2-NEXT: movb %al, (%rdi)
5302 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5303 ; SSE2-NEXT: andb $1, %al
5304 ; SSE2-NEXT: movb %al, 14(%rdi)
5305 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5306 ; SSE2-NEXT: andb $1, %al
5307 ; SSE2-NEXT: movb %al, 12(%rdi)
5308 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5309 ; SSE2-NEXT: andb $1, %al
5310 ; SSE2-NEXT: movb %al, 10(%rdi)
5311 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5312 ; SSE2-NEXT: andb $1, %al
5313 ; SSE2-NEXT: movb %al, 8(%rdi)
5314 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5315 ; SSE2-NEXT: andb $1, %al
5316 ; SSE2-NEXT: movb %al, 6(%rdi)
5317 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5318 ; SSE2-NEXT: andb $1, %al
5319 ; SSE2-NEXT: movb %al, 4(%rdi)
5320 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5321 ; SSE2-NEXT: andb $1, %al
5322 ; SSE2-NEXT: movb %al, 2(%rdi)
5323 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5324 ; SSE2-NEXT: andb $1, %al
5325 ; SSE2-NEXT: movb %al, (%rdi)
5326 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5327 ; SSE2-NEXT: andb $1, %al
5328 ; SSE2-NEXT: movb %al, 14(%rdi)
5329 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5330 ; SSE2-NEXT: andb $1, %al
5331 ; SSE2-NEXT: movb %al, 12(%rdi)
5332 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5333 ; SSE2-NEXT: andb $1, %al
5334 ; SSE2-NEXT: movb %al, 10(%rdi)
5335 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5336 ; SSE2-NEXT: andb $1, %al
5337 ; SSE2-NEXT: movb %al, 8(%rdi)
5338 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5339 ; SSE2-NEXT: andb $1, %al
5340 ; SSE2-NEXT: movb %al, 6(%rdi)
5341 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5342 ; SSE2-NEXT: andb $1, %al
5343 ; SSE2-NEXT: movb %al, 4(%rdi)
5344 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5345 ; SSE2-NEXT: andb $1, %al
5346 ; SSE2-NEXT: movb %al, 2(%rdi)
5347 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5348 ; SSE2-NEXT: andb $1, %al
5349 ; SSE2-NEXT: movb %al, (%rdi)
5350 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5351 ; SSE2-NEXT: andb $1, %al
5352 ; SSE2-NEXT: movb %al, 14(%rdi)
5353 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5354 ; SSE2-NEXT: andb $1, %al
5355 ; SSE2-NEXT: movb %al, 12(%rdi)
5356 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5357 ; SSE2-NEXT: andb $1, %al
5358 ; SSE2-NEXT: movb %al, 10(%rdi)
5359 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5360 ; SSE2-NEXT: andb $1, %al
5361 ; SSE2-NEXT: movb %al, 8(%rdi)
5362 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5363 ; SSE2-NEXT: andb $1, %al
5364 ; SSE2-NEXT: movb %al, 6(%rdi)
5365 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5366 ; SSE2-NEXT: andb $1, %al
5367 ; SSE2-NEXT: movb %al, 4(%rdi)
5368 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5369 ; SSE2-NEXT: andb $1, %al
5370 ; SSE2-NEXT: movb %al, 2(%rdi)
5371 ; SSE2-NEXT: movb -{{[0-9]+}}(%rsp), %al
5372 ; SSE2-NEXT: andb $1, %al
5373 ; SSE2-NEXT: movb %al, (%rdi)
5374 ; SSE2-NEXT: movq %rdi, %rax
5375 ; SSE2-NEXT: popq %rcx
5376 ; SSE2-NEXT: retq
5380 ; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm0
5381 ; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm1
5382 ; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm2
5383 ; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm3
5384 ; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm4
5385 ; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm5
5386 ; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm6
5387 ; SSE42-NEXT: pcmpgtb {{[0-9]+}}(%rsp), %xmm7
5388 ; SSE42-NEXT: pextrb $15, %xmm7, %eax
5389 ; SSE42-NEXT: andb $1, %al
5390 ; SSE42-NEXT: movb %al, 14(%rdi)
5391 ; SSE42-NEXT: pextrb $14, %xmm7, %eax
5392 ; SSE42-NEXT: andb $1, %al
5393 ; SSE42-NEXT: movb %al, 14(%rdi)
5394 ; SSE42-NEXT: pextrb $13, %xmm7, %eax
5395 ; SSE42-NEXT: andb $1, %al
5396 ; SSE42-NEXT: movb %al, 14(%rdi)
5397 ; SSE42-NEXT: pextrb $12, %xmm7, %eax
5398 ; SSE42-NEXT: andb $1, %al
5399 ; SSE42-NEXT: movb %al, 14(%rdi)
5400 ; SSE42-NEXT: pextrb $11, %xmm7, %eax
5401 ; SSE42-NEXT: andb $1, %al
5402 ; SSE42-NEXT: movb %al, 14(%rdi)
5403 ; SSE42-NEXT: pextrb $10, %xmm7, %eax
5404 ; SSE42-NEXT: andb $1, %al
5405 ; SSE42-NEXT: movb %al, 14(%rdi)
5406 ; SSE42-NEXT: pextrb $9, %xmm7, %eax
5407 ; SSE42-NEXT: andb $1, %al
5408 ; SSE42-NEXT: movb %al, 14(%rdi)
5409 ; SSE42-NEXT: pextrb $8, %xmm7, %eax
5410 ; SSE42-NEXT: andb $1, %al
5411 ; SSE42-NEXT: movb %al, 14(%rdi)
5412 ; SSE42-NEXT: pextrb $7, %xmm7, %eax
5413 ; SSE42-NEXT: andb $1, %al
5414 ; SSE42-NEXT: movb %al, 14(%rdi)
5415 ; SSE42-NEXT: pextrb $6, %xmm7, %eax
5416 ; SSE42-NEXT: andb $1, %al
5417 ; SSE42-NEXT: movb %al, 14(%rdi)
5418 ; SSE42-NEXT: pextrb $5, %xmm7, %eax
5419 ; SSE42-NEXT: andb $1, %al
5420 ; SSE42-NEXT: movb %al, 14(%rdi)
5421 ; SSE42-NEXT: pextrb $4, %xmm7, %eax
5422 ; SSE42-NEXT: andb $1, %al
5423 ; SSE42-NEXT: movb %al, 14(%rdi)
5424 ; SSE42-NEXT: pextrb $3, %xmm7, %eax
5425 ; SSE42-NEXT: andb $1, %al
5426 ; SSE42-NEXT: movb %al, 14(%rdi)
5427 ; SSE42-NEXT: pextrb $2, %xmm7, %eax
5428 ; SSE42-NEXT: andb $1, %al
5429 ; SSE42-NEXT: movb %al, 14(%rdi)
5430 ; SSE42-NEXT: pextrb $1, %xmm7, %eax
5431 ; SSE42-NEXT: andb $1, %al
5432 ; SSE42-NEXT: movb %al, 14(%rdi)
5433 ; SSE42-NEXT: pextrb $0, %xmm7, %eax
5434 ; SSE42-NEXT: andb $1, %al
5435 ; SSE42-NEXT: movb %al, 14(%rdi)
5436 ; SSE42-NEXT: pextrb $15, %xmm6, %eax
5437 ; SSE42-NEXT: andb $1, %al
5438 ; SSE42-NEXT: movb %al, 12(%rdi)
5439 ; SSE42-NEXT: pextrb $14, %xmm6, %eax
5440 ; SSE42-NEXT: andb $1, %al
5441 ; SSE42-NEXT: movb %al, 12(%rdi)
5442 ; SSE42-NEXT: pextrb $13, %xmm6, %eax
5443 ; SSE42-NEXT: andb $1, %al
5444 ; SSE42-NEXT: movb %al, 12(%rdi)
5445 ; SSE42-NEXT: pextrb $12, %xmm6, %eax
5446 ; SSE42-NEXT: andb $1, %al
5447 ; SSE42-NEXT: movb %al, 12(%rdi)
5448 ; SSE42-NEXT: pextrb $11, %xmm6, %eax
5449 ; SSE42-NEXT: andb $1, %al
5450 ; SSE42-NEXT: movb %al, 12(%rdi)
5451 ; SSE42-NEXT: pextrb $10, %xmm6, %eax
5452 ; SSE42-NEXT: andb $1, %al
5453 ; SSE42-NEXT: movb %al, 12(%rdi)
5454 ; SSE42-NEXT: pextrb $9, %xmm6, %eax
5455 ; SSE42-NEXT: andb $1, %al
5456 ; SSE42-NEXT: movb %al, 12(%rdi)
5457 ; SSE42-NEXT: pextrb $8, %xmm6, %eax
5458 ; SSE42-NEXT: andb $1, %al
5459 ; SSE42-NEXT: movb %al, 12(%rdi)
5460 ; SSE42-NEXT: pextrb $7, %xmm6, %eax
5461 ; SSE42-NEXT: andb $1, %al
5462 ; SSE42-NEXT: movb %al, 12(%rdi)
5463 ; SSE42-NEXT: pextrb $6, %xmm6, %eax
5464 ; SSE42-NEXT: andb $1, %al
5465 ; SSE42-NEXT: movb %al, 12(%rdi)
5466 ; SSE42-NEXT: pextrb $5, %xmm6, %eax
5467 ; SSE42-NEXT: andb $1, %al
5468 ; SSE42-NEXT: movb %al, 12(%rdi)
5469 ; SSE42-NEXT: pextrb $4, %xmm6, %eax
5470 ; SSE42-NEXT: andb $1, %al
5471 ; SSE42-NEXT: movb %al, 12(%rdi)
5472 ; SSE42-NEXT: pextrb $3, %xmm6, %eax
5473 ; SSE42-NEXT: andb $1, %al
5474 ; SSE42-NEXT: movb %al, 12(%rdi)
5475 ; SSE42-NEXT: pextrb $2, %xmm6, %eax
5476 ; SSE42-NEXT: andb $1, %al
5477 ; SSE42-NEXT: movb %al, 12(%rdi)
5478 ; SSE42-NEXT: pextrb $1, %xmm6, %eax
5479 ; SSE42-NEXT: andb $1, %al
5480 ; SSE42-NEXT: movb %al, 12(%rdi)
5481 ; SSE42-NEXT: pextrb $0, %xmm6, %eax
5482 ; SSE42-NEXT: andb $1, %al
5483 ; SSE42-NEXT: movb %al, 12(%rdi)
5484 ; SSE42-NEXT: pextrb $15, %xmm5, %eax
5485 ; SSE42-NEXT: andb $1, %al
5486 ; SSE42-NEXT: movb %al, 10(%rdi)
5487 ; SSE42-NEXT: pextrb $14, %xmm5, %eax
5488 ; SSE42-NEXT: andb $1, %al
5489 ; SSE42-NEXT: movb %al, 10(%rdi)
5490 ; SSE42-NEXT: pextrb $13, %xmm5, %eax
5491 ; SSE42-NEXT: andb $1, %al
5492 ; SSE42-NEXT: movb %al, 10(%rdi)
5493 ; SSE42-NEXT: pextrb $12, %xmm5, %eax
5494 ; SSE42-NEXT: andb $1, %al
5495 ; SSE42-NEXT: movb %al, 10(%rdi)
5496 ; SSE42-NEXT: pextrb $11, %xmm5, %eax
5497 ; SSE42-NEXT: andb $1, %al
5498 ; SSE42-NEXT: movb %al, 10(%rdi)
5499 ; SSE42-NEXT: pextrb $10, %xmm5, %eax
5500 ; SSE42-NEXT: andb $1, %al
5501 ; SSE42-NEXT: movb %al, 10(%rdi)
5502 ; SSE42-NEXT: pextrb $9, %xmm5, %eax
5503 ; SSE42-NEXT: andb $1, %al
5504 ; SSE42-NEXT: movb %al, 10(%rdi)
5505 ; SSE42-NEXT: pextrb $8, %xmm5, %eax
5506 ; SSE42-NEXT: andb $1, %al
5507 ; SSE42-NEXT: movb %al, 10(%rdi)
5508 ; SSE42-NEXT: pextrb $7, %xmm5, %eax
5509 ; SSE42-NEXT: andb $1, %al
5510 ; SSE42-NEXT: movb %al, 10(%rdi)
5511 ; SSE42-NEXT: pextrb $6, %xmm5, %eax
5512 ; SSE42-NEXT: andb $1, %al
5513 ; SSE42-NEXT: movb %al, 10(%rdi)
5514 ; SSE42-NEXT: pextrb $5, %xmm5, %eax
5515 ; SSE42-NEXT: andb $1, %al
5516 ; SSE42-NEXT: movb %al, 10(%rdi)
5517 ; SSE42-NEXT: pextrb $4, %xmm5, %eax
5518 ; SSE42-NEXT: andb $1, %al
5519 ; SSE42-NEXT: movb %al, 10(%rdi)
5520 ; SSE42-NEXT: pextrb $3, %xmm5, %eax
5521 ; SSE42-NEXT: andb $1, %al
5522 ; SSE42-NEXT: movb %al, 10(%rdi)
5523 ; SSE42-NEXT: pextrb $2, %xmm5, %eax
5524 ; SSE42-NEXT: andb $1, %al
5525 ; SSE42-NEXT: movb %al, 10(%rdi)
5526 ; SSE42-NEXT: pextrb $1, %xmm5, %eax
5527 ; SSE42-NEXT: andb $1, %al
5528 ; SSE42-NEXT: movb %al, 10(%rdi)
5529 ; SSE42-NEXT: pextrb $0, %xmm5, %eax
5530 ; SSE42-NEXT: andb $1, %al
5531 ; SSE42-NEXT: movb %al, 10(%rdi)
5532 ; SSE42-NEXT: pextrb $15, %xmm4, %eax
5533 ; SSE42-NEXT: andb $1, %al
5534 ; SSE42-NEXT: movb %al, 8(%rdi)
5535 ; SSE42-NEXT: pextrb $14, %xmm4, %eax
5536 ; SSE42-NEXT: andb $1, %al
5537 ; SSE42-NEXT: movb %al, 8(%rdi)
5538 ; SSE42-NEXT: pextrb $13, %xmm4, %eax
5539 ; SSE42-NEXT: andb $1, %al
5540 ; SSE42-NEXT: movb %al, 8(%rdi)
5541 ; SSE42-NEXT: pextrb $12, %xmm4, %eax
5542 ; SSE42-NEXT: andb $1, %al
5543 ; SSE42-NEXT: movb %al, 8(%rdi)
5544 ; SSE42-NEXT: pextrb $11, %xmm4, %eax
5545 ; SSE42-NEXT: andb $1, %al
5546 ; SSE42-NEXT: movb %al, 8(%rdi)
5547 ; SSE42-NEXT: pextrb $10, %xmm4, %eax
5548 ; SSE42-NEXT: andb $1, %al
5549 ; SSE42-NEXT: movb %al, 8(%rdi)
5550 ; SSE42-NEXT: pextrb $9, %xmm4, %eax
5551 ; SSE42-NEXT: andb $1, %al
5552 ; SSE42-NEXT: movb %al, 8(%rdi)
5553 ; SSE42-NEXT: pextrb $8, %xmm4, %eax
5554 ; SSE42-NEXT: andb $1, %al
5555 ; SSE42-NEXT: movb %al, 8(%rdi)
5556 ; SSE42-NEXT: pextrb $7, %xmm4, %eax
5557 ; SSE42-NEXT: andb $1, %al
5558 ; SSE42-NEXT: movb %al, 8(%rdi)
5559 ; SSE42-NEXT: pextrb $6, %xmm4, %eax
5560 ; SSE42-NEXT: andb $1, %al
5561 ; SSE42-NEXT: movb %al, 8(%rdi)
5562 ; SSE42-NEXT: pextrb $5, %xmm4, %eax
5563 ; SSE42-NEXT: andb $1, %al
5564 ; SSE42-NEXT: movb %al, 8(%rdi)
5565 ; SSE42-NEXT: pextrb $4, %xmm4, %eax
5566 ; SSE42-NEXT: andb $1, %al
5567 ; SSE42-NEXT: movb %al, 8(%rdi)
5568 ; SSE42-NEXT: pextrb $3, %xmm4, %eax
5569 ; SSE42-NEXT: andb $1, %al
5570 ; SSE42-NEXT: movb %al, 8(%rdi)
5571 ; SSE42-NEXT: pextrb $2, %xmm4, %eax
5572 ; SSE42-NEXT: andb $1, %al
5573 ; SSE42-NEXT: movb %al, 8(%rdi)
5574 ; SSE42-NEXT: pextrb $1, %xmm4, %eax
5575 ; SSE42-NEXT: andb $1, %al
5576 ; SSE42-NEXT: movb %al, 8(%rdi)
5577 ; SSE42-NEXT: pextrb $0, %xmm4, %eax
5578 ; SSE42-NEXT: andb $1, %al
5579 ; SSE42-NEXT: movb %al, 8(%rdi)
5580 ; SSE42-NEXT: pextrb $15, %xmm3, %eax
5581 ; SSE42-NEXT: andb $1, %al
5582 ; SSE42-NEXT: movb %al, 6(%rdi)
5583 ; SSE42-NEXT: pextrb $14, %xmm3, %eax
5584 ; SSE42-NEXT: andb $1, %al
5585 ; SSE42-NEXT: movb %al, 6(%rdi)
5586 ; SSE42-NEXT: pextrb $13, %xmm3, %eax
5587 ; SSE42-NEXT: andb $1, %al
5588 ; SSE42-NEXT: movb %al, 6(%rdi)
5589 ; SSE42-NEXT: pextrb $12, %xmm3, %eax
5590 ; SSE42-NEXT: andb $1, %al
5591 ; SSE42-NEXT: movb %al, 6(%rdi)
5592 ; SSE42-NEXT: pextrb $11, %xmm3, %eax
5593 ; SSE42-NEXT: andb $1, %al
5594 ; SSE42-NEXT: movb %al, 6(%rdi)
5595 ; SSE42-NEXT: pextrb $10, %xmm3, %eax
5596 ; SSE42-NEXT: andb $1, %al
5597 ; SSE42-NEXT: movb %al, 6(%rdi)
5598 ; SSE42-NEXT: pextrb $9, %xmm3, %eax
5599 ; SSE42-NEXT: andb $1, %al
5600 ; SSE42-NEXT: movb %al, 6(%rdi)
5601 ; SSE42-NEXT: pextrb $8, %xmm3, %eax
5602 ; SSE42-NEXT: andb $1, %al
5603 ; SSE42-NEXT: movb %al, 6(%rdi)
5604 ; SSE42-NEXT: pextrb $7, %xmm3, %eax
5605 ; SSE42-NEXT: andb $1, %al
5606 ; SSE42-NEXT: movb %al, 6(%rdi)
5607 ; SSE42-NEXT: pextrb $6, %xmm3, %eax
5608 ; SSE42-NEXT: andb $1, %al
5609 ; SSE42-NEXT: movb %al, 6(%rdi)
5610 ; SSE42-NEXT: pextrb $5, %xmm3, %eax
5611 ; SSE42-NEXT: andb $1, %al
5612 ; SSE42-NEXT: movb %al, 6(%rdi)
5613 ; SSE42-NEXT: pextrb $4, %xmm3, %eax
5614 ; SSE42-NEXT: andb $1, %al
5615 ; SSE42-NEXT: movb %al, 6(%rdi)
5616 ; SSE42-NEXT: pextrb $3, %xmm3, %eax
5617 ; SSE42-NEXT: andb $1, %al
5618 ; SSE42-NEXT: movb %al, 6(%rdi)
5619 ; SSE42-NEXT: pextrb $2, %xmm3, %eax
5620 ; SSE42-NEXT: andb $1, %al
5621 ; SSE42-NEXT: movb %al, 6(%rdi)
5622 ; SSE42-NEXT: pextrb $1, %xmm3, %eax
5623 ; SSE42-NEXT: andb $1, %al
5624 ; SSE42-NEXT: movb %al, 6(%rdi)
5625 ; SSE42-NEXT: pextrb $0, %xmm3, %eax
5626 ; SSE42-NEXT: andb $1, %al
5627 ; SSE42-NEXT: movb %al, 6(%rdi)
5628 ; SSE42-NEXT: pextrb $15, %xmm2, %eax
5629 ; SSE42-NEXT: andb $1, %al
5630 ; SSE42-NEXT: movb %al, 4(%rdi)
5631 ; SSE42-NEXT: pextrb $14, %xmm2, %eax
5632 ; SSE42-NEXT: andb $1, %al
5633 ; SSE42-NEXT: movb %al, 4(%rdi)
5634 ; SSE42-NEXT: pextrb $13, %xmm2, %eax
5635 ; SSE42-NEXT: andb $1, %al
5636 ; SSE42-NEXT: movb %al, 4(%rdi)
5637 ; SSE42-NEXT: pextrb $12, %xmm2, %eax
5638 ; SSE42-NEXT: andb $1, %al
5639 ; SSE42-NEXT
5640 ; SSE42-NEXT: pextrb $11, %xmm2, %eax
5641 ; SSE42-NEXT: andb $1, %al
5642 ; SSE42-NEXT: movb %al, 4(%rdi)
5643 ; SSE42-NEXT: pextrb $10, %xmm2, %eax
5644 ; SSE42-NEXT: andb $1, %al
5645 ; SSE42-NEXT: movb %al, 4(%rdi)
5646 ; SSE42-NEXT: pextrb $9, %xmm2, %eax
5647 ; SSE42-NEXT: andb $1, %al
5648 ; SSE42-NEXT: movb %al, 4(%rdi)
5649 ; SSE42-NEXT: pextrb $8, %xmm2, %eax
5650 ; SSE42-NEXT: andb $1, %al
5651 ; SSE42-NEXT: movb %al, 4(%rdi)
5652 ; SSE42-NEXT: pextrb $7, %xmm2, %eax
5653 ; SSE42-NEXT: andb $1, %al
5654 ; SSE42-NEXT: movb %al, 4(%rdi)
5655 ; SSE42-NEXT: pextrb $6, %xmm2, %eax
5656 ; SSE42-NEXT: andb $1, %al
5657 ; SSE42-NEXT: movb %al, 4(%rdi)
5658 ; SSE42-NEXT: pextrb $5, %xmm2, %eax
5659 ; SSE42-NEXT: andb $1, %al
5660 ; SSE42-NEXT: movb %al, 4(%rdi)
5661 ; SSE42-NEXT: pextrb $4, %xmm2, %eax
5662 ; SSE42-NEXT: andb $1, %al
5663 ; SSE42-NEXT: movb %al, 4(%rdi)
5664 ; SSE42-NEXT: pextrb $3, %xmm2, %eax
5665 ; SSE42-NEXT: andb $1, %al
5666 ; SSE42-NEXT: movb %al, 4(%rdi)
5667 ; SSE42-NEXT: pextrb $2, %xmm2, %eax
5668 ; SSE42-NEXT: andb $1, %al
5669 ; SSE42-NEXT: movb %al, 4(%rdi)
5670 ; SSE42-NEXT: pextrb $1, %xmm2, %eax
5671 ; SSE42-NEXT: andb $1, %al
5672 ; SSE42-NEXT: movb %al, 4(%rdi)
5673 ; SSE42-NEXT: pextrb $0, %xmm2, %eax
5674 ; SSE42-NEXT: andb $1, %al
5675 ; SSE42-NEXT: movb %al, 4(%rdi)
5676 ; SSE42-NEXT: pextrb $15, %xmm1, %eax
5677 ; SSE42-NEXT: andb $1, %al
5678 ; SSE42-NEXT: movb %al, 2(%rdi)
5679 ; SSE42-NEXT: pextrb $14, %xmm1, %eax
5680 ; SSE42-NEXT: andb $1, %al
5681 ; SSE42-NEXT: movb %al, 2(%rdi)
5682 ; SSE42-NEXT: pextrb $13, %xmm1, %eax
5683 ; SSE42-NEXT: andb $1, %al
5684 ; SSE42-NEXT: movb %al, 2(%rdi)
5685 ; SSE42-NEXT: pextrb $12, %xmm1, %eax
5686 ; SSE42-NEXT: andb $1, %al
5687 ; SSE42-NEXT: movb %al, 2(%rdi)
5688 ; SSE42-NEXT: pextrb $11, %xmm1, %eax
5689 ; SSE42-NEXT: andb $1, %al
5690 ; SSE42-NEXT: movb %al, 2(%rdi)
5691 ; SSE42-NEXT: pextrb $10, %xmm1, %eax
5692 ; SSE42-NEXT: andb $1, %al
5693 ; SSE42-NEXT: movb %al, 2(%rdi)
5694 ; SSE42-NEXT: pextrb $9, %xmm1, %eax
5695 ; SSE42-NEXT: andb $1, %al
5696 ; SSE42-NEXT: movb %al, 2(%rdi)
5697 ; SSE42-NEXT: pextrb $8, %xmm1, %eax
5698 ; SSE42-NEXT: andb $1, %al
5699 ; SSE42-NEXT: movb %al, 2(%rdi)
5700 ; SSE42-NEXT: pextrb $7, %xmm1, %eax
5701 ; SSE42-NEXT: andb $1, %al
5702 ; SSE42-NEXT: movb %al, 2(%rdi)
5703 ; SSE42-NEXT: pextrb $6, %xmm1, %eax
5704 ; SSE42-NEXT: andb $1, %al
5705 ; SSE42-NEXT: movb %al, 2(%rdi)
5706 ; SSE42-NEXT: pextrb $5, %xmm1, %eax
5707 ; SSE42-NEXT: andb $1, %al
5708 ; SSE42-NEXT: movb %al, 2(%rdi)
5709 ; SSE42-NEXT: pextrb $4, %xmm1, %eax
5710 ; SSE42-NEXT: andb $1, %al
5711 ; SSE42-NEXT: movb %al, 2(%rdi)
5712 ; SSE42-NEXT: pextrb $3, %xmm1, %eax
5713 ; SSE42-NEXT: andb $1, %al
5714 ; SSE42-NEXT: movb %al, 2(%rdi)
5715 ; SSE42-NEXT: pextrb $2, %xmm1, %eax
5716 ; SSE42-NEXT: andb $1, %al
5717 ; SSE42-NEXT: movb %al, 2(%rdi)
5718 ; SSE42-NEXT: pextrb $1, %xmm1, %eax
5719 ; SSE42-NEXT: andb $1, %al
5720 ; SSE42-NEXT: movb %al, 2(%rdi)
5721 ; SSE42-NEXT: pextrb $0, %xmm1, %eax
5722 ; SSE42-NEXT: andb $1, %al
5723 ; SSE42-NEXT: movb %al, 2(%rdi)
5724 ; SSE42-NEXT: pextrb $15, %xmm0, %eax
5725 ; SSE42-NEXT: andb $1, %al
5726 ; SSE42-NEXT: movb %al, (%rdi)
5727 ; SSE42-NEXT: pextrb $14, %xmm0, %eax
5728 ; SSE42-NEXT: andb $1, %al
5729 ; SSE42-NEXT: movb %al, (%rdi)
5730 ; SSE42-NEXT: pextrb $13, %xmm0, %eax
5731 ; SSE42-NEXT: andb $1, %al
5732 ; SSE42-NEXT: movb %al, (%rdi)
5733 ; SSE42-NEXT: pextrb $12, %xmm0, %eax
5734 ; SSE42-NEXT: andb $1, %al
5735 ; SSE42-NEXT: movb %al, (%rdi)
5736 ; SSE42-NEXT: pextrb $11, %xmm0, %eax
5737 ; SSE42-NEXT: andb $1, %al
5738 ; SSE42-NEXT: movb %al, (%rdi)
5739 ; SSE42-NEXT: pextrb $10, %xmm0, %eax
5740 ; SSE42-NEXT: andb $1, %al
5741 ; SSE42-NEXT: movb %al, (%rdi)
5742 ; SSE42-NEXT: pextrb $9, %xmm0, %eax
5743 ; SSE42-NEXT: andb $1, %al
5744 ; SSE42-NEXT: movb %al, (%rdi)
5745 ; SSE42-NEXT: pextrb $8, %xmm0, %eax
5746 ; SSE42-NEXT: andb $1, %al
5747 ; SSE42-NEXT: movb %al, (%rdi)
5748 ; SSE42-NEXT: pextrb $7, %xmm0, %eax
5749 ; SSE42-NEXT: andb $1, %al
5750 ; SSE42-NEXT: movb %al, (%rdi)
5751 ; SSE42-NEXT: pextrb $6, %xmm0, %eax
5752 ; SSE42-NEXT: andb $1, %al
5753 ; SSE42-NEXT: movb %al, (%rdi)
5754 ; SSE42-NEXT: pextrb $5, %xmm0, %eax
5755 ; SSE42-NEXT: andb $1, %al
5756 ; SSE42-NEXT: movb %al, (%rdi)
5757 ; SSE42-NEXT: pextrb $4, %xmm0, %eax
5758 ; SSE42-NEXT: andb $1, %al
5759 ; SSE42-NEXT: movb %al, (%rdi)
5760 ; SSE42-NEXT: pextrb $3, %xmm0, %eax
5761 ; SSE42-NEXT: andb $1, %al
5762 ; SSE42-NEXT: movb %al, (%rdi)
5763 ; SSE42-NEXT: pextrb $2, %xmm0, %eax
5764 ; SSE42-NEXT: andb $1, %al
5765 ; SSE42-NEXT: movb %al, (%rdi)
5766 ; SSE42-NEXT: pextrb $1, %xmm0, %eax
5767 ; SSE42-NEXT: andb $1, %al
5768 ; SSE42-NEXT: movb %al, (%rdi)
5769 ; SSE42-NEXT: pextrb $0, %xmm0, %eax
5770 ; SSE42-NEXT: andb $1, %al
5771 ; SSE42-NEXT: movb %al, (%rdi)
5772 ; SSE42-NEXT: movq %rdi, %rax
5773 ; SSE42-NEXT: retq
5777 ; AVX1-NEXT: vpcmpgtb %xmm4, %xmm0, %xmm8
5778 ; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm4
5779 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
5780 ; AVX1-NEXT: vpcmpgtb %xmm4, %xmm0, %xmm0
5781 ; AVX1-NEXT: vpcmpgtb %xmm5, %xmm1, %xmm4
5782 ; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm5
5783 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
5784 ; AVX1-NEXT: vpcmpgtb %xmm5, %xmm1, %xmm1
5785 ; AVX1-NEXT: vpcmpgtb %xmm6, %xmm2, %xmm5
5786 ; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm6
5787 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2
5788 ; AVX1-NEXT: vpcmpgtb %xmm6, %xmm2, %xmm2
5789 ; AVX1-NEXT: vpcmpgtb %xmm7, %xmm3, %xmm6
5790 ; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm7
5791 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3
5792 ; AVX1-NEXT: vpcmpgtb %xmm7, %xmm3, %xmm3
5793 ; AVX1-NEXT: vpextrb $15, %xmm3, %eax
5794 ; AVX1-NEXT: andb $1, %al
5795 ; AVX1-NEXT: movb %al, 12(%rdi)
5796 ; AVX1-NEXT: vpextrb $14, %xmm3, %eax
5797 ; AVX1-NEXT: andb $1, %al
5798 ; AVX1-NEXT: movb %al, 12(%rdi)
5799 ; AVX1-NEXT: vpextrb $13, %xmm3, %eax
5800 ; AVX1-NEXT: andb $1, %al
5801 ; AVX1-NEXT: movb %al, 12(%rdi)
5802 ; AVX1-NEXT: vpextrb $12, %xmm3, %eax
5803 ; AVX1-NEXT: andb $1, %al
5804 ; AVX1-NEXT: movb %al, 12(%rdi)
5805 ; AVX1-NEXT: vpextrb $11, %xmm3, %eax
5806 ; AVX1-NEXT: andb $1, %al
5807 ; AVX1-NEXT: movb %al, 12(%rdi)
5808 ; AVX1-NEXT: vpextrb $10, %xmm3, %eax
5809 ; AVX1-NEXT: andb $1, %al
5810 ; AVX1-NEXT: movb %al, 12(%rdi)
5811 ; AVX1-NEXT: vpextrb $9, %xmm3, %eax
5812 ; AVX1-NEXT: andb $1, %al
5813 ; AVX1-NEXT: movb %al, 12(%rdi)
5814 ; AVX1-NEXT: vpextrb $8, %xmm3, %eax
5815 ; AVX1-NEXT: andb $1, %al
5816 ; AVX1-NEXT: movb %al, 12(%rdi)
5817 ; AVX1-NEXT: vpextrb $7, %xmm3, %eax
5818 ; AVX1-NEXT: andb $1, %al
5819 ; AVX1-NEXT: movb %al, 12(%rdi)
5820 ; AVX1-NEXT: vpextrb $6, %xmm3, %eax
5821 ; AVX1-NEXT: andb $1, %al
5822 ; AVX1-NEXT: movb %al, 12(%rdi)
5823 ; AVX1-NEXT: vpextrb $5, %xmm3, %eax
5824 ; AVX1-NEXT: andb $1, %al
5825 ; AVX1-NEXT: movb %al, 12(%rdi)
5826 ; AVX1-NEXT: vpextrb $4, %xmm3, %eax
5827 ; AVX1-NEXT: andb $1, %al
5828 ; AVX1-NEXT: movb %al, 12(%rdi)
5829 ; AVX1-NEXT: vpextrb $3, %xmm3, %eax
5830 ; AVX1-NEXT: andb $1, %al
5831 ; AVX1-NEXT: movb %al, 12(%rdi)
5832 ; AVX1-NEXT: vpextrb $2, %xmm3, %eax
5833 ; AVX1-NEXT: andb $1, %al
5834 ; AVX1-NEXT: movb %al, 12(%rdi)
5835 ; AVX1-NEXT: vpextrb $1, %xmm3, %eax
5836 ; AVX1-NEXT: andb $1, %al
5837 ; AVX1-NEXT: movb %al, 12(%rdi)
5838 ; AVX1-NEXT: vpextrb $0, %xmm3, %eax
5839 ; AVX1-NEXT: andb $1, %al
5840 ; AVX1-NEXT: movb %al, 12(%rdi)
5841 ; AVX1-NEXT: vpextrb $15, %xmm6, %eax
5842 ; AVX1-NEXT: andb $1, %al
5843 ; AVX1-NEXT: movb %al, 12(%rdi)
5844 ; AVX1-NEXT: vpextrb $14, %xmm6, %eax
5845 ; AVX1-NEXT: andb $1, %al
5846 ; AVX1-NEXT: movb %al, 12(%rdi)
5847 ; AVX1-NEXT: vpextrb $13, %xmm6, %eax
5848 ; AVX1-NEXT: andb $1, %al
5849 ; AVX1-NEXT: movb %al, 12(%rdi)
5850 ; AVX1-NEXT: vpextrb $12, %xmm6, %eax
5851 ; AVX1-NEXT: andb $1, %al
5852 ; AVX1-NEXT: movb %al, 12(%rdi)
5853 ; AVX1-NEXT: vpextrb $11, %xmm6, %eax
5854 ; AVX1-NEXT: andb $1, %al
5855 ; AVX1-NEXT: movb %al, 12(%rdi)
5856 ; AVX1-NEXT: vpextrb $10, %xmm6, %eax
5857 ; AVX1-NEXT: andb $1, %al
5858 ; AVX1-NEXT: movb %al, 12(%rdi)
5859 ; AVX1-NEXT: vpextrb $9, %xmm6, %eax
5860 ; AVX1-NEXT: andb $1, %al
5861 ; AVX1-NEXT: movb %al, 12(%rdi)
5862 ; AVX1-NEXT: vpextrb $8, %xmm6, %eax
5863 ; AVX1-NEXT: andb $1, %al
5864 ; AVX1-NEXT: movb %al, 12(%rdi)
5865 ; AVX1-NEXT: vpextrb $7, %xmm6, %eax
5866 ; AVX1-NEXT: andb $1, %al
5867 ; AVX1-NEXT: movb %al, 12(%rdi)
5868 ; AVX1-NEXT: vpextrb $6, %xmm6, %eax
5869 ; AVX1-NEXT: andb $1, %al
5870 ; AVX1-NEXT: movb %al, 12(%rdi)
5871 ; AVX1-NEXT: vpextrb $5, %xmm6, %eax
5872 ; AVX1-NEXT: andb $1, %al
5873 ; AVX1-NEXT: movb %al, 12(%rdi)
5874 ; AVX1-NEXT: vpextrb $4, %xmm6, %eax
5875 ; AVX1-NEXT: andb $1, %al
5876 ; AVX1-NEXT: movb %al, 12(%rdi)
5877 ; AVX1-NEXT: vpextrb $3, %xmm6, %eax
5878 ; AVX1-NEXT: andb $1, %al
5879 ; AVX1-NEXT: movb %al, 12(%rdi)
5880 ; AVX1-NEXT: vpextrb $2, %xmm6, %eax
5881 ; AVX1-NEXT: andb $1, %al
5882 ; AVX1-NEXT: movb %al, 12(%rdi)
5883 ; AVX1-NEXT: vpextrb $1, %xmm6, %eax
5884 ; AVX1-NEXT: andb $1, %al
5885 ; AVX1-NEXT: movb %al, 12(%rdi)
5886 ; AVX1-NEXT: vpextrb $0, %xmm6, %eax
5887 ; AVX1-NEXT: andb $1, %al
5888 ; AVX1-NEXT: movb %al, 12(%rdi)
5889 ; AVX1-NEXT: vpextrb $15, %xmm2, %eax
5890 ; AVX1-NEXT: andb $1, %al
5891 ; AVX1-NEXT: movb %al, 8(%rdi)
5892 ; AVX1-NEXT: vpextrb $14, %xmm2, %eax
5893 ; AVX1-NEXT: andb $1, %al
5894 ; AVX1-NEXT: movb %al, 8(%rdi)
5895 ; AVX1-NEXT: vpextrb $13, %xmm2, %eax
5896 ; AVX1-NEXT: andb $1, %al
5897 ; AVX1-NEXT: movb %al, 8(%rdi)
5898 ; AVX1-NEXT: vpextrb $12, %xmm2, %eax
5899 ; AVX1-NEXT: andb $1, %al
5900 ; AVX1-NEXT: movb %al, 8(%rdi)
5901 ; AVX1-NEXT: vpextrb $11, %xmm2, %eax
5902 ; AVX1-NEXT: andb $1, %al
5903 ; AVX1-NEXT: movb %al, 8(%rdi)
5904 ; AVX1-NEXT: vpextrb $10, %xmm2, %eax
5905 ; AVX1-NEXT: andb $1, %al
5906 ; AVX1-NEXT: movb %al, 8(%rdi)
5907 ; AVX1-NEXT: vpextrb $9, %xmm2, %eax
5908 ; AVX1-NEXT: andb $1, %al
5909 ; AVX1-NEXT: movb %al, 8(%rdi)
5910 ; AVX1-NEXT: vpextrb $8, %xmm2, %eax
5911 ; AVX1-NEXT: andb $1, %al
5912 ; AVX1-NEXT: movb %al, 8(%rdi)
5913 ; AVX1-NEXT: vpextrb $7, %xmm2, %eax
5914 ; AVX1-NEXT: andb $1, %al
5915 ; AVX1-NEXT: movb %al, 8(%rdi)
5916 ; AVX1-NEXT: vpextrb $6, %xmm2, %eax
5917 ; AVX1-NEXT: andb $1, %al
5918 ; AVX1-NEXT: movb %al, 8(%rdi)
5919 ; AVX1-NEXT: vpextrb $5, %xmm2, %eax
5920 ; AVX1-NEXT: andb $1, %al
5921 ; AVX1-NEXT: movb %al, 8(%rdi)
5922 ; AVX1-NEXT: vpextrb $4, %xmm2, %eax
5923 ; AVX1-NEXT: andb $1, %al
5924 ; AVX1-NEXT: movb %al, 8(%rdi)
5925 ; AVX1-NEXT: vpextrb $3, %xmm2, %eax
5926 ; AVX1-NEXT: andb $1, %al
5927 ; AVX1-NEXT: movb %al, 8(%rdi)
5928 ; AVX1-NEXT: vpextrb $2, %xmm2, %eax
5929 ; AVX1-NEXT: andb $1, %al
5930 ; AVX1-NEXT: movb %al, 8(%rdi)
5931 ; AVX1-NEXT: vpextrb $1, %xmm2, %eax
5932 ; AVX1-NEXT: andb $1, %al
5933 ; AVX1-NEXT: movb %al, 8(%rdi)
5934 ; AVX1-NEXT: vpextrb $0, %xmm2, %eax
5935 ; AVX1-NEXT: andb $1, %al
5936 ; AVX1-NEXT: movb %al, 8(%rdi)
5937 ; AVX1-NEXT: vpextrb $15, %xmm5, %eax
5938 ; AVX1-NEXT: andb $1, %al
5939 ; AVX1-NEXT: movb %al, 8(%rdi)
5940 ; AVX1-NEXT: vpextrb $14, %xmm5, %eax
5941 ; AVX1-NEXT: andb $1, %al
5942 ; AVX1-NEXT: movb %al, 8(%rdi)
5943 ; AVX1-NEXT: vpextrb $13, %xmm5, %eax
5944 ; AVX1-NEXT: andb $1, %al
5945 ; AVX1-NEXT: movb %al, 8(%rdi)
5946 ; AVX1-NEXT: vpextrb $12, %xmm5, %eax
5947 ; AVX1-NEXT: andb $1, %al
5948 ; AVX1-NEXT: movb %al, 8(%rdi)
5949 ; AVX1-NEXT: vpextrb $11, %xmm5, %eax
5950 ; AVX1-NEXT: andb $1, %al
5951 ; AVX1-NEXT: movb %al, 8(%rdi)
5952 ; AVX1-NEXT: vpextrb $10, %xmm5, %eax
5953 ; AVX1-NEXT: andb $1, %al
5954 ; AVX1-NEXT: movb %al, 8(%rdi)
5955 ; AVX1-NEXT: vpextrb $9, %xmm5, %eax
5956 ; AVX1-NEXT: andb $1, %al
5957 ; AVX1-NEXT: movb %al, 8(%rdi)
5958 ; AVX1-NEXT: vpextrb $8, %xmm5, %eax
5959 ; AVX1-NEXT: andb $1, %al
5960 ; AVX1-NEXT: movb %al, 8(%rdi)
5961 ; AVX1-NEXT: vpextrb $7, %xmm5, %eax
5962 ; AVX1-NEXT: andb $1, %al
5963 ; AVX1-NEXT: movb %al, 8(%rdi)
5964 ; AVX1-NEXT: vpextrb $6, %xmm5, %eax
5965 ; AVX1-NEXT: andb $1, %al
5966 ; AVX1-NEXT: movb %al, 8(%rdi)
5967 ; AVX1-NEXT: vpextrb $5, %xmm5, %eax
5968 ; AVX1-NEXT: andb $1, %al
5969 ; AVX1-NEXT: movb %al, 8(%rdi)
5970 ; AVX1-NEXT: vpextrb $4, %xmm5, %eax
5971 ; AVX1-NEXT: andb $1, %al
5972 ; AVX1-NEXT: movb %al, 8(%rdi)
5973 ; AVX1-NEXT: vpextrb $3, %xmm5, %eax
5974 ; AVX1-NEXT: andb $1, %al
5975 ; AVX1-NEXT: movb %al, 8(%rdi)
5976 ; AVX1-NEXT: vpextrb $2, %xmm5, %eax
5977 ; AVX1-NEXT: andb $1, %al
5978 ; AVX1-NEXT: movb %al, 8(%rdi)
5979 ; AVX1-NEXT: vpextrb $1, %xmm5, %eax
5980 ; AVX1-NEXT: andb $1, %al
5981 ; AVX1-NEXT: movb %al, 8(%rdi)
5982 ; AVX1-NEXT: vpextrb $0, %xmm5, %eax
5983 ; AVX1-NEXT: andb $1, %al
5984 ; AVX1-NEXT: movb %al, 8(%rdi)
5985 ; AVX1-NEXT: vpextrb $15, %xmm1, %eax
5986 ; AVX1-NEXT: andb $1, %al
5987 ; AVX1-NEXT: movb %al, 4(%rdi)
5988 ; AVX1-NEXT: vpextrb $14, %xmm1, %eax
5989 ; AVX1-NEXT: andb $1, %al
5990 ; AVX1-NEXT: movb %al, 4(%rdi)
5991 ; AVX1-NEXT: vpextrb $13, %xmm1, %eax
5992 ; AVX1-NEXT: andb $1, %al
5993 ; AVX1-NEXT: movb %al, 4(%rdi)
5994 ; AVX1-NEXT: vpextrb $12, %xmm1, %eax
5995 ; AVX1-NEXT: andb $1, %al
5996 ; AVX1-NEXT: movb %al, 4(%rdi)
5997 ; AVX1-NEXT: vpextrb $11, %xmm1, %eax
5998 ; AVX1-NEXT: andb $1, %al
5999 ; AVX1-NEXT: movb %al, 4(%rdi)
6000 ; AVX1-NEXT: vpextrb $10, %xmm1, %eax
6001 ; AVX1-NEXT: andb $1, %al
6002 ; AVX1-NEXT: movb %al, 4(%rdi)
6003 ; AVX1-NEXT: vpextrb $9, %xmm1, %eax
6004 ; AVX1-NEXT: andb $1, %al
6005 ; AVX1-NEXT: movb %al, 4(%rdi)
6006 ; AVX1-NEXT: vpextrb $8, %xmm1, %eax
6007 ; AVX1-NEXT: andb $1, %al
6008 ; AVX1-NEXT: movb %al, 4(%rdi)
6009 ; AVX1-NEXT: vpextrb $7, %xmm1, %eax
6010 ; AVX1-NEXT: andb $1, %al
6011 ; AVX1-NEXT: movb %al, 4(%rdi)
6012 ; AVX1-NEXT: vpextrb $6, %xmm1, %eax
6013 ; AVX1-NEXT: andb $1, %al
6014 ; AVX1-NEXT: movb %al, 4(%rdi)
6015 ; AVX1-NEXT: vpextrb $5, %xmm1, %eax
6016 ; AVX1-NEXT: andb $1, %al
6017 ; AVX1-NEXT: movb %al, 4(%rdi)
6018 ; AVX1-NEXT: vpextrb $4, %xmm1, %eax
6019 ; AVX1-NEXT: andb $1, %al
6020 ; AVX1-NEXT: movb %al, 4(%rdi)
6021 ; AVX1-NEXT: vpextrb $3, %xmm1, %eax
6022 ; AVX1-NEXT: andb $1, %al
6023 ; AVX1-NEXT: movb %al, 4(%rdi)
6024 ; AVX1-NEXT: vpextrb $2, %xmm1, %eax
6025 ; AVX1-NEXT: andb $1, %al
6026 ; AVX1-NEXT: movb %al, 4(%rdi)
6027 ; AVX1-NEXT: vpextrb $1, %xmm1, %eax
6028 ; AVX1-NEXT: andb $1, %al
6029 ; AVX1-NEXT: movb %al, 4(%rdi)
6030 ; AVX1-NEXT: vpextrb $0, %xmm1, %eax
6031 ; AVX1-NEXT: andb $1, %al
6032 ; AVX1-NEXT: movb %al, 4(%rdi)
6033 ; AVX1-NEXT: vpextrb $15, %xmm4, %eax
6034 ; AVX1-NEXT: andb $1, %al
6035 ; AVX1-NEXT: movb %al, 4(%rdi)
6036 ; AVX1-NEXT: vpextrb $14, %xmm4, %eax
6037 ; AVX1-NEXT: andb $1, %al
6038 ; AVX1-NEXT: movb %al, 4(%rdi)
6039 ; AVX1-NEXT: vpextrb $13, %xmm4, %eax
6040 ; AVX1-NEXT: andb $1, %al
6041 ; AVX1-NEXT: movb %al, 4(%rdi)
6042 ; AVX1-NEXT: vpextrb $12, %xmm4, %eax
6043 ; AVX1-NEXT: andb $1, %al
6044 ; AVX1-NEXT: movb %al, 4(%rdi)
6045 ; AVX1-NEXT: vpextrb $11, %xmm4, %eax
6046 ; AVX1-NEXT: andb $1, %al
6047 ; AVX1-NEXT: movb %al, 4(%rdi)
6048 ; AVX1-NEXT: vpextrb $10, %xmm4, %eax
6049 ; AVX1-NEXT: andb $1, %al
6050 ; AVX1-NEXT: movb %al, 4(%rdi)
6051 ; AVX1-NEXT: vpextrb $9, %xmm4, %eax
6052 ; AVX1-NEXT: andb $1, %al
6053 ; AVX1-NEXT: movb %al, 4(%rdi)
6054 ; AVX1-NEXT: vpextrb $8, %xmm4, %eax
6055 ; AVX1-NEXT: andb $1, %al
6056 ; AVX1-NEXT: movb %al, 4(%rdi)
6057 ; AVX1-NEXT: vpextrb $7, %xmm4, %eax
6058 ; AVX1-NEXT: andb $1, %al
6059 ; AVX1-NEXT: movb %al, 4(%rdi)
6060 ; AVX1-NEXT: vpextrb $6, %xmm4, %eax
6061 ; AVX1-NEXT: andb $1, %al
6062 ; AVX1-NEXT: movb %al, 4(%rdi)
6063 ; AVX1-NEXT: vpextrb $5, %xmm4, %eax
6064 ; AVX1-NEXT: andb $1, %al
6065 ; AVX1-NEXT: movb %al, 4(%rdi)
6066 ; AVX1-NEXT: vpextrb $4, %xmm4, %eax
6067 ; AVX1-NEXT: andb $1, %al
6068 ; AVX1-NEXT: movb %al, 4(%rdi)
6069 ; AVX1-NEXT: vpextrb $3, %xmm4, %eax
6070 ; AVX1-NEXT: andb $1, %al
6071 ; AVX1-NEXT: movb %al, 4(%rdi)
6072 ; AVX1-NEXT: vpextrb $2, %xmm4, %eax
6073 ; AVX1-NEXT: andb $1, %al
6074 ; AVX1-NEXT: movb %al, 4(%rdi)
6075 ; AVX1-NEXT: vpextrb $1, %xmm4, %eax
6076 ; AVX1-NEXT: andb $1, %al
6077 ; AVX1-NEXT: movb %al, 4(%rdi)
6078 ; AVX1-NEXT: vpextrb $0, %xmm4, %eax
6079 ; AVX1-NEXT: andb $1, %al
6080 ; AVX1-NEXT: movb %al, 4(%rdi)
6081 ; AVX1-NEXT: vpextrb $15, %xmm0, %eax
6082 ; AVX1-NEXT: andb $1, %al
6083 ; AVX1-NEXT: movb %al, (%rdi)
6084 ; AVX1-NEXT: vpextrb $14, %xmm0, %eax
6085 ; AVX1-NEXT: andb $1, %al
6086 ; AVX1-NEXT: movb %al, (%rdi)
6087 ; AVX1-NEXT: vpextrb $13, %xmm0, %eax
6088 ; AVX1-NEXT: andb $1, %al
6089 ; AVX1-NEXT: movb %al, (%rdi)
6090 ; AVX1-NEXT: vpextrb $12, %xmm0, %eax
6091 ; AVX1-NEXT: andb $1, %al
6092 ; AVX1-NEXT: movb %al, (%rdi)
6093 ; AVX1-NEXT: vpextrb $11, %xmm0, %eax
6094 ; AVX1-NEXT: andb $1, %al
6095 ; AVX1-NEXT: movb %al, (%rdi)
6096 ; AVX1-NEXT: vpextrb $10, %xmm0, %eax
6097 ; AVX1-NEXT: andb $1, %al
6098 ; AVX1-NEXT: movb %al, (%rdi)
6099 ; AVX1-NEXT: vpextrb $9, %xmm0, %eax
6100 ; AVX1-NEXT: andb $1, %al
6101 ; AVX1-NEXT: movb %al, (%rdi)
6102 ; AVX1-NEXT: vpextrb $8, %xmm0, %eax
6103 ; AVX1-NEXT: andb $1, %al
6104 ; AVX1-NEXT: movb %al, (%rdi)
6105 ; AVX1-NEXT: vpextrb $7, %xmm0, %eax
6106 ; AVX1-NEXT: andb $1, %al
6107 ; AVX1-NEXT: movb %al, (%rdi)
6108 ; AVX1-NEXT
6109 ; AVX1-NEXT: andb $1, %al
6110 ; AVX1-NEXT: movb %al, (%rdi)
6111 ; AVX1-NEXT: vpextrb $5, %xmm0, %eax
6112 ; AVX1-NEXT: andb $1, %al
6113 ; AVX1-NEXT: movb %al, (%rdi)
6114 ; AVX1-NEXT: vpextrb $4, %xmm0, %eax
6115 ; AVX1-NEXT: andb $1, %al
6116 ; AVX1-NEXT: movb %al, (%rdi)
6117 ; AVX1-NEXT: vpextrb $3, %xmm0, %eax
6118 ; AVX1-NEXT: andb $1, %al
6119 ; AVX1-NEXT: movb %al, (%rdi)
6120 ; AVX1-NEXT: vpextrb $2, %xmm0, %eax
6121 ; AVX1-NEXT: andb $1, %al
6122 ; AVX1-NEXT: movb %al, (%rdi)
6123 ; AVX1-NEXT: vpextrb $1, %xmm0, %eax
6124 ; AVX1-NEXT: andb $1, %al
6125 ; AVX1-NEXT: movb %al, (%rdi)
6126 ; AVX1-NEXT: vpextrb $0, %xmm0, %eax
6127 ; AVX1-NEXT: andb $1, %al
6128 ; AVX1-NEXT: movb %al, (%rdi)
6129 ; AVX1-NEXT: vpextrb $15, %xmm8, %eax
6130 ; AVX1-NEXT: andb $1, %al
6131 ; AVX1-NEXT: movb %al, (%rdi)
6132 ; AVX1-NEXT: vpextrb $14, %xmm8, %eax
6133 ; AVX1-NEXT: andb $1, %al
6134 ; AVX1-NEXT: movb %al, (%rdi)
6135 ; AVX1-NEXT: vpextrb $13, %xmm8, %eax
6136 ; AVX1-NEXT: andb $1, %al
6137 ; AVX1-NEXT: movb %al, (%rdi)
6138 ; AVX1-NEXT: vpextrb $12, %xmm8, %eax
6139 ; AVX1-NEXT: andb $1, %al
6140 ; AVX1-NEXT: movb %al, (%rdi)
6141 ; AVX1-NEXT: vpextrb $11, %xmm8, %eax
6142 ; AVX1-NEXT: andb $1, %al
6143 ; AVX1-NEXT: movb %al, (%rdi)
6144 ; AVX1-NEXT: vpextrb $10, %xmm8, %eax
6145 ; AVX1-NEXT: andb $1, %al
6146 ; AVX1-NEXT: movb %al, (%rdi)
6147 ; AVX1-NEXT: vpextrb $9, %xmm8, %eax
6148 ; AVX1-NEXT: andb $1, %al
6149 ; AVX1-NEXT: movb %al, (%rdi)
6150 ; AVX1-NEXT: vpextrb $8, %xmm8, %eax
6151 ; AVX1-NEXT: andb $1, %al
6152 ; AVX1-NEXT: movb %al, (%rdi)
6153 ; AVX1-NEXT: vpextrb $7, %xmm8, %eax
6154 ; AVX1-NEXT: andb $1, %al
6155 ; AVX1-NEXT: movb %al, (%rdi)
6156 ; AVX1-NEXT: vpextrb $6, %xmm8, %eax
6157 ; AVX1-NEXT: andb $1, %al
6158 ; AVX1-NEXT: movb %al, (%rdi)
6159 ; AVX1-NEXT: vpextrb $5, %xmm8, %eax
6160 ; AVX1-NEXT: andb $1, %al
6161 ; AVX1-NEXT: movb %al, (%rdi)
6162 ; AVX1-NEXT: vpextrb $4, %xmm8, %eax
6163 ; AVX1-NEXT: andb $1, %al
6164 ; AVX1-NEXT: movb %al, (%rdi)
6165 ; AVX1-NEXT: vpextrb $3, %xmm8, %eax
6166 ; AVX1-NEXT: andb $1, %al
6167 ; AVX1-NEXT: movb %al, (%rdi)
6168 ; AVX1-NEXT: vpextrb $2, %xmm8, %eax
6169 ; AVX1-NEXT: andb $1, %al
6170 ; AVX1-NEXT: movb %al, (%rdi)
6171 ; AVX1-NEXT: vpextrb $1, %xmm8, %eax
6172 ; AVX1-NEXT: andb $1, %al
6173 ; AVX1-NEXT: movb %al, (%rdi)
6174 ; AVX1-NEXT: vpextrb $0, %xmm8, %eax
6175 ; AVX1-NEXT: andb $1, %al
6176 ; AVX1-NEXT: movb %al, (%rdi)
6177 ; AVX1-NEXT: movq %rdi, %rax
6178 ; AVX1-NEXT: vzeroupper
6179 ; AVX1-NEXT: retq
6183 ; AVX2-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0
6184 ; AVX2-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1
6185 ; AVX2-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2
6186 ; AVX2-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3
6187 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
6188 ; AVX2-NEXT: vpextrb $15, %xmm4, %eax
6189 ; AVX2-NEXT: andb $1, %al
6190 ; AVX2-NEXT: movb %al, 12(%rdi)
6191 ; AVX2-NEXT: vpextrb $14, %xmm4, %eax
6192 ; AVX2-NEXT: andb $1, %al
6193 ; AVX2-NEXT: movb %al, 12(%rdi)
6194 ; AVX2-NEXT: vpextrb $13, %xmm4, %eax
6195 ; AVX2-NEXT: andb $1, %al
6196 ; AVX2-NEXT: movb %al, 12(%rdi)
6197 ; AVX2-NEXT: vpextrb $12, %xmm4, %eax
6198 ; AVX2-NEXT: andb $1, %al
6199 ; AVX2-NEXT: movb %al, 12(%rdi)
6200 ; AVX2-NEXT: vpextrb $11, %xmm4, %eax
6201 ; AVX2-NEXT: andb $1, %al
6202 ; AVX2-NEXT: movb %al, 12(%rdi)
6203 ; AVX2-NEXT: vpextrb $10, %xmm4, %eax
6204 ; AVX2-NEXT: andb $1, %al
6205 ; AVX2-NEXT: movb %al, 12(%rdi)
6206 ; AVX2-NEXT: vpextrb $9, %xmm4, %eax
6207 ; AVX2-NEXT: andb $1, %al
6208 ; AVX2-NEXT: movb %al, 12(%rdi)
6209 ; AVX2-NEXT: vpextrb $8, %xmm4, %eax
6210 ; AVX2-NEXT: andb $1, %al
6211 ; AVX2-NEXT: movb %al, 12(%rdi)
6212 ; AVX2-NEXT: vpextrb $7, %xmm4, %eax
6213 ; AVX2-NEXT: andb $1, %al
6214 ; AVX2-NEXT: movb %al, 12(%rdi)
6215 ; AVX2-NEXT: vpextrb $6, %xmm4, %eax
6216 ; AVX2-NEXT: andb $1, %al
6217 ; AVX2-NEXT: movb %al, 12(%rdi)
6218 ; AVX2-NEXT: vpextrb $5, %xmm4, %eax
6219 ; AVX2-NEXT: andb $1, %al
6220 ; AVX2-NEXT: movb %al, 12(%rdi)
6221 ; AVX2-NEXT: vpextrb $4, %xmm4, %eax
6222 ; AVX2-NEXT: andb $1, %al
6223 ; AVX2-NEXT: movb %al, 12(%rdi)
6224 ; AVX2-NEXT: vpextrb $3, %xmm4, %eax
6225 ; AVX2-NEXT: andb $1, %al
6226 ; AVX2-NEXT: movb %al, 12(%rdi)
6227 ; AVX2-NEXT: vpextrb $2, %xmm4, %eax
6228 ; AVX2-NEXT: andb $1, %al
6229 ; AVX2-NEXT: movb %al, 12(%rdi)
6230 ; AVX2-NEXT: vpextrb $1, %xmm4, %eax
6231 ; AVX2-NEXT: andb $1, %al
6232 ; AVX2-NEXT: movb %al, 12(%rdi)
6233 ; AVX2-NEXT: vpextrb $0, %xmm4, %eax
6234 ; AVX2-NEXT: andb $1, %al
6235 ; AVX2-NEXT: movb %al, 12(%rdi)
6236 ; AVX2-NEXT: vpextrb $15, %xmm3, %eax
6237 ; AVX2-NEXT: andb $1, %al
6238 ; AVX2-NEXT: movb %al, 12(%rdi)
6239 ; AVX2-NEXT: vpextrb $14, %xmm3, %eax
6240 ; AVX2-NEXT: andb $1, %al
6241 ; AVX2-NEXT: movb %al, 12(%rdi)
6242 ; AVX2-NEXT: vpextrb $13, %xmm3, %eax
6243 ; AVX2-NEXT: andb $1, %al
6244 ; AVX2-NEXT: movb %al, 12(%rdi)
6245 ; AVX2-NEXT: vpextrb $12, %xmm3, %eax
6246 ; AVX2-NEXT: andb $1, %al
6247 ; AVX2-NEXT: movb %al, 12(%rdi)
6248 ; AVX2-NEXT: vpextrb $11, %xmm3, %eax
6249 ; AVX2-NEXT: andb $1, %al
6250 ; AVX2-NEXT: movb %al, 12(%rdi)
6251 ; AVX2-NEXT: vpextrb $10, %xmm3, %eax
6252 ; AVX2-NEXT: andb $1, %al
6253 ; AVX2-NEXT: movb %al, 12(%rdi)
6254 ; AVX2-NEXT: vpextrb $9, %xmm3, %eax
6255 ; AVX2-NEXT: andb $1, %al
6256 ; AVX2-NEXT: movb %al, 12(%rdi)
6257 ; AVX2-NEXT: vpextrb $8, %xmm3, %eax
6258 ; AVX2-NEXT: andb $1, %al
6259 ; AVX2-NEXT: movb %al, 12(%rdi)
6260 ; AVX2-NEXT: vpextrb $7, %xmm3, %eax
6261 ; AVX2-NEXT: andb $1, %al
6262 ; AVX2-NEXT: movb %al, 12(%rdi)
6263 ; AVX2-NEXT: vpextrb $6, %xmm3, %eax
6264 ; AVX2-NEXT: andb $1, %al
6265 ; AVX2-NEXT: movb %al, 12(%rdi)
6266 ; AVX2-NEXT: vpextrb $5, %xmm3, %eax
6267 ; AVX2-NEXT: andb $1, %al
6268 ; AVX2-NEXT: movb %al, 12(%rdi)
6269 ; AVX2-NEXT: vpextrb $4, %xmm3, %eax
6270 ; AVX2-NEXT: andb $1, %al
6271 ; AVX2-NEXT: movb %al, 12(%rdi)
6272 ; AVX2-NEXT: vpextrb $3, %xmm3, %eax
6273 ; AVX2-NEXT: andb $1, %al
6274 ; AVX2-NEXT: movb %al, 12(%rdi)
6275 ; AVX2-NEXT: vpextrb $2, %xmm3, %eax
6276 ; AVX2-NEXT: andb $1, %al
6277 ; AVX2-NEXT: movb %al, 12(%rdi)
6278 ; AVX2-NEXT: vpextrb $1, %xmm3, %eax
6279 ; AVX2-NEXT: andb $1, %al
6280 ; AVX2-NEXT: movb %al, 12(%rdi)
6281 ; AVX2-NEXT: vpextrb $0, %xmm3, %eax
6282 ; AVX2-NEXT: andb $1, %al
6283 ; AVX2-NEXT: movb %al, 12(%rdi)
6284 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
6285 ; AVX2-NEXT: vpextrb $15, %xmm3, %eax
6286 ; AVX2-NEXT: andb $1, %al
6287 ; AVX2-NEXT: movb %al, 8(%rdi)
6288 ; AVX2-NEXT: vpextrb $14, %xmm3, %eax
6289 ; AVX2-NEXT: andb $1, %al
6290 ; AVX2-NEXT: movb %al, 8(%rdi)
6291 ; AVX2-NEXT: vpextrb $13, %xmm3, %eax
6292 ; AVX2-NEXT: andb $1, %al
6293 ; AVX2-NEXT: movb %al, 8(%rdi)
6294 ; AVX2-NEXT: vpextrb $12, %xmm3, %eax
6295 ; AVX2-NEXT: andb $1, %al
6296 ; AVX2-NEXT: movb %al, 8(%rdi)
6297 ; AVX2-NEXT: vpextrb $11, %xmm3, %eax
6298 ; AVX2-NEXT: andb $1, %al
6299 ; AVX2-NEXT: movb %al, 8(%rdi)
6300 ; AVX2-NEXT: vpextrb $10, %xmm3, %eax
6301 ; AVX2-NEXT: andb $1, %al
6302 ; AVX2-NEXT: movb %al, 8(%rdi)
6303 ; AVX2-NEXT: vpextrb $9, %xmm3, %eax
6304 ; AVX2-NEXT: andb $1, %al
6305 ; AVX2-NEXT: movb %al, 8(%rdi)
6306 ; AVX2-NEXT: vpextrb $8, %xmm3, %eax
6307 ; AVX2-NEXT: andb $1, %al
6308 ; AVX2-NEXT: movb %al, 8(%rdi)
6309 ; AVX2-NEXT: vpextrb $7, %xmm3, %eax
6310 ; AVX2-NEXT: andb $1, %al
6311 ; AVX2-NEXT: movb %al, 8(%rdi)
6312 ; AVX2-NEXT: vpextrb $6, %xmm3, %eax
6313 ; AVX2-NEXT: andb $1, %al
6314 ; AVX2-NEXT: movb %al, 8(%rdi)
6315 ; AVX2-NEXT: vpextrb $5, %xmm3, %eax
6316 ; AVX2-NEXT: andb $1, %al
6317 ; AVX2-NEXT: movb %al, 8(%rdi)
6318 ; AVX2-NEXT: vpextrb $4, %xmm3, %eax
6319 ; AVX2-NEXT: andb $1, %al
6320 ; AVX2-NEXT: movb %al, 8(%rdi)
6321 ; AVX2-NEXT: vpextrb $3, %xmm3, %eax
6322 ; AVX2-NEXT: andb $1, %al
6323 ; AVX2-NEXT: movb %al, 8(%rdi)
6324 ; AVX2-NEXT: vpextrb $2, %xmm3, %eax
6325 ; AVX2-NEXT: andb $1, %al
6326 ; AVX2-NEXT: movb %al, 8(%rdi)
6327 ; AVX2-NEXT: vpextrb $1, %xmm3, %eax
6328 ; AVX2-NEXT: andb $1, %al
6329 ; AVX2-NEXT: movb %al, 8(%rdi)
6330 ; AVX2-NEXT: vpextrb $0, %xmm3, %eax
6331 ; AVX2-NEXT: andb $1, %al
6332 ; AVX2-NEXT: movb %al, 8(%rdi)
6333 ; AVX2-NEXT: vpextrb $15, %xmm2, %eax
6334 ; AVX2-NEXT: andb $1, %al
6335 ; AVX2-NEXT: movb %al, 8(%rdi)
6336 ; AVX2-NEXT: vpextrb $14, %xmm2, %eax
6337 ; AVX2-NEXT: andb $1, %al
6338 ; AVX2-NEXT: movb %al, 8(%rdi)
6339 ; AVX2-NEXT: vpextrb $13, %xmm2, %eax
6340 ; AVX2-NEXT: andb $1, %al
6341 ; AVX2-NEXT: movb %al, 8(%rdi)
6342 ; AVX2-NEXT: vpextrb $12, %xmm2, %eax
6343 ; AVX2-NEXT: andb $1, %al
6344 ; AVX2-NEXT: movb %al, 8(%rdi)
6345 ; AVX2-NEXT: vpextrb $11, %xmm2, %eax
6346 ; AVX2-NEXT: andb $1, %al
6347 ; AVX2-NEXT: movb %al, 8(%rdi)
6348 ; AVX2-NEXT: vpextrb $10, %xmm2, %eax
6349 ; AVX2-NEXT: andb $1, %al
6350 ; AVX2-NEXT: movb %al, 8(%rdi)
6351 ; AVX2-NEXT: vpextrb $9, %xmm2, %eax
6352 ; AVX2-NEXT: andb $1, %al
6353 ; AVX2-NEXT: movb %al, 8(%rdi)
6354 ; AVX2-NEXT: vpextrb $8, %xmm2, %eax
6355 ; AVX2-NEXT: andb $1, %al
6356 ; AVX2-NEXT: movb %al, 8(%rdi)
6357 ; AVX2-NEXT: vpextrb $7, %xmm2, %eax
6358 ; AVX2-NEXT: andb $1, %al
6359 ; AVX2-NEXT: movb %al, 8(%rdi)
6360 ; AVX2-NEXT: vpextrb $6, %xmm2, %eax
6361 ; AVX2-NEXT: andb $1, %al
6362 ; AVX2-NEXT: movb %al, 8(%rdi)
6363 ; AVX2-NEXT: vpextrb $5, %xmm2, %eax
6364 ; AVX2-NEXT: andb $1, %al
6365 ; AVX2-NEXT: movb %al, 8(%rdi)
6366 ; AVX2-NEXT: vpextrb $4, %xmm2, %eax
6367 ; AVX2-NEXT: andb $1, %al
6368 ; AVX2-NEXT: movb %al, 8(%rdi)
6369 ; AVX2-NEXT: vpextrb $3, %xmm2, %eax
6370 ; AVX2-NEXT: andb $1, %al
6371 ; AVX2-NEXT: movb %al, 8(%rdi)
6372 ; AVX2-NEXT: vpextrb $2, %xmm2, %eax
6373 ; AVX2-NEXT: andb $1, %al
6374 ; AVX2-NEXT: movb %al, 8(%rdi)
6375 ; AVX2-NEXT: vpextrb $1, %xmm2, %eax
6376 ; AVX2-NEXT: andb $1, %al
6377 ; AVX2-NEXT: movb %al, 8(%rdi)
6378 ; AVX2-NEXT: vpextrb $0, %xmm2, %eax
6379 ; AVX2-NEXT: andb $1, %al
6380 ; AVX2-NEXT: movb %al, 8(%rdi)
6381 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
6382 ; AVX2-NEXT: vpextrb $15, %xmm2, %eax
6383 ; AVX2-NEXT: andb $1, %al
6384 ; AVX2-NEXT: movb %al, 4(%rdi)
6385 ; AVX2-NEXT: vpextrb $14, %xmm2, %eax
6386 ; AVX2-NEXT: andb $1, %al
6387 ; AVX2-NEXT: movb %al, 4(%rdi)
6388 ; AVX2-NEXT: vpextrb $13, %xmm2, %eax
6389 ; AVX2-NEXT: andb $1, %al
6390 ; AVX2-NEXT: movb %al, 4(%rdi)
6391 ; AVX2-NEXT: vpextrb $12, %xmm2, %eax
6392 ; AVX2-NEXT: andb $1, %al
6393 ; AVX2-NEXT: movb %al, 4(%rdi)
6394 ; AVX2-NEXT: vpextrb $11, %xmm2, %eax
6395 ; AVX2-NEXT: andb $1, %al
6396 ; AVX2-NEXT: movb %al, 4(%rdi)
6397 ; AVX2-NEXT: vpextrb $10, %xmm2, %eax
6398 ; AVX2-NEXT: andb $1, %al
6399 ; AVX2-NEXT: movb %al, 4(%rdi)
6400 ; AVX2-NEXT: vpextrb $9, %xmm2, %eax
6401 ; AVX2-NEXT: andb $1, %al
6402 ; AVX2-NEXT: movb %al, 4(%rdi)
6403 ; AVX2-NEXT: vpextrb $8, %xmm2, %eax
6404 ; AVX2-NEXT: andb $1, %al
6405 ; AVX2-NEXT: movb %al, 4(%rdi)
6406 ; AVX2-NEXT: vpextrb $7, %xmm2, %eax
6407 ; AVX2-NEXT: andb $1, %al
6408 ; AVX2-NEXT: movb %al, 4(%rdi)
6409 ; AVX2-NEXT: vpextrb $6, %xmm2, %eax
6410 ; AVX2-NEXT: andb $1, %al
6411 ; AVX2-NEXT: movb %al, 4(%rdi)
6412 ; AVX2-NEXT: vpextrb $5, %xmm2, %eax
6413 ; AVX2-NEXT: andb $1, %al
6414 ; AVX2-NEXT: movb %al, 4(%rdi)
6415 ; AVX2-NEXT: vpextrb $4, %xmm2, %eax
6416 ; AVX2-NEXT: andb $1, %al
6417 ; AVX2-NEXT: movb %al, 4(%rdi)
6418 ; AVX2-NEXT: vpextrb $3, %xmm2, %eax
6419 ; AVX2-NEXT: andb $1, %al
6420 ; AVX2-NEXT: movb %al, 4(%rdi)
6421 ; AVX2-NEXT: vpextrb $2, %xmm2, %eax
6422 ; AVX2-NEXT: andb $1, %al
6423 ; AVX2-NEXT: movb %al, 4(%rdi)
6424 ; AVX2-NEXT: vpextrb $1, %xmm2, %eax
6425 ; AVX2-NEXT: andb $1, %al
6426 ; AVX2-NEXT: movb %al, 4(%rdi)
6427 ; AVX2-NEXT: vpextrb $0, %xmm2, %eax
6428 ; AVX2-NEXT: andb $1, %al
6429 ; AVX2-NEXT: movb %al, 4(%rdi)
6430 ; AVX2-NEXT: vpextrb $15, %xmm1, %eax
6431 ; AVX2-NEXT: andb $1, %al
6432 ; AVX2-NEXT: movb %al, 4(%rdi)
6433 ; AVX2-NEXT: vpextrb $14, %xmm1, %eax
6434 ; AVX2-NEXT: andb $1, %al
6435 ; AVX2-NEXT: movb %al, 4(%rdi)
6436 ; AVX2-NEXT: vpextrb $13, %xmm1, %eax
6437 ; AVX2-NEXT: andb $1, %al
6438 ; AVX2-NEXT: movb %al, 4(%rdi)
6439 ; AVX2-NEXT: vpextrb $12, %xmm1, %eax
6440 ; AVX2-NEXT: andb $1, %al
6441 ; AVX2-NEXT: movb %al, 4(%rdi)
6442 ; AVX2-NEXT: vpextrb $11, %xmm1, %eax
6443 ; AVX2-NEXT: andb $1, %al
6444 ; AVX2-NEXT: movb %al, 4(%rdi)
6445 ; AVX2-NEXT: vpextrb $10, %xmm1, %eax
6446 ; AVX2-NEXT: andb $1, %al
6447 ; AVX2-NEXT: movb %al, 4(%rdi)
6448 ; AVX2-NEXT: vpextrb $9, %xmm1, %eax
6449 ; AVX2-NEXT: andb $1, %al
6450 ; AVX2-NEXT: movb %al, 4(%rdi)
6451 ; AVX2-NEXT: vpextrb $8, %xmm1, %eax
6452 ; AVX2-NEXT: andb $1, %al
6453 ; AVX2-NEXT: movb %al, 4(%rdi)
6454 ; AVX2-NEXT: vpextrb $7, %xmm1, %eax
6455 ; AVX2-NEXT: andb $1, %al
6456 ; AVX2-NEXT: movb %al, 4(%rdi)
6457 ; AVX2-NEXT: vpextrb $6, %xmm1, %eax
6458 ; AVX2-NEXT: andb $1, %al
6459 ; AVX2-NEXT: movb %al, 4(%rdi)
6460 ; AVX2-NEXT: vpextrb $5, %xmm1, %eax
6461 ; AVX2-NEXT: andb $1, %al
6462 ; AVX2-NEXT: movb %al, 4(%rdi)
6463 ; AVX2-NEXT: vpextrb $4, %xmm1, %eax
6464 ; AVX2-NEXT: andb $1, %al
6465 ; AVX2-NEXT: movb %al, 4(%rdi)
6466 ; AVX2-NEXT: vpextrb $3, %xmm1, %eax
6467 ; AVX2-NEXT: andb $1, %al
6468 ; AVX2-NEXT: movb %al, 4(%rdi)
6469 ; AVX2-NEXT: vpextrb $2, %xmm1, %eax
6470 ; AVX2-NEXT: andb $1, %al
6471 ; AVX2-NEXT: movb %al, 4(%rdi)
6472 ; AVX2-NEXT: vpextrb $1, %xmm1, %eax
6473 ; AVX2-NEXT: andb $1, %al
6474 ; AVX2-NEXT: movb %al, 4(%rdi)
6475 ; AVX2-NEXT: vpextrb $0, %xmm1, %eax
6476 ; AVX2-NEXT: andb $1, %al
6477 ; AVX2-NEXT: movb %al, 4(%rdi)
6478 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
6479 ; AVX2-NEXT: vpextrb $15, %xmm1, %eax
6480 ; AVX2-NEXT: andb $1, %al
6481 ; AVX2-NEXT: movb %al, (%rdi)
6482 ; AVX2-NEXT: vpextrb $14, %xmm1, %eax
6483 ; AVX2-NEXT: andb $1, %al
6484 ; AVX2-NEXT: movb %al, (%rdi)
6485 ; AVX2-NEXT: vpextrb $13, %xmm1, %eax
6486 ; AVX2-NEXT: andb $1, %al
6487 ; AVX2-NEXT: movb %al, (%rdi)
6488 ; AVX2-NEXT: vpextrb $12, %xmm1, %eax
6489 ; AVX2-NEXT: andb $1, %al
6490 ; AVX2-NEXT: movb %al, (%rdi)
6491 ; AVX2-NEXT: vpextrb $11, %xmm1, %eax
6492 ; AVX2-NEXT: andb $1, %al
6493 ; AVX2-NEXT: movb %al, (%rdi)
6494 ; AVX2-NEXT: vpextrb $10, %xmm1, %eax
6495 ; AVX2-NEXT: andb $1, %al
6496 ; AVX2-NEXT: movb %al, (%rdi)
6497 ; AVX2-NEXT: vpextrb $9, %xmm1, %eax
6498 ; AVX2-NEXT: andb $1, %al
6499 ; AVX2-NEXT: movb %al, (%rdi)
6500 ; AVX2-NEXT: vpextrb $8, %xmm1, %eax
6501 ; AVX2-NEXT: andb $1, %al
6502 ; AVX2-NEXT: movb %al, (%rdi)
6503 ; AVX2-NEXT: vpextrb $7, %xmm1, %eax
6504 ; AVX2-NEXT: andb $1, %al
6505 ; AVX2-NEXT: movb %al, (%rdi)
6506 ; AVX2-NEXT: vpextrb $6, %xmm1, %eax
6507 ; AVX2-NEXT: andb $1, %al
6508 ; AVX2-NEXT: movb %al, (%rdi)
6509 ; AVX2-NEXT: vpextrb $5, %xmm1, %eax
6510 ; AVX2-NEXT: andb $1, %al
6511 ; AVX2-NEXT: movb %al, (%rdi)
6512 ; AVX2-NEXT: vpextrb $4, %xmm1, %eax
6513 ; AVX2-NEXT: andb $1, %al
6514 ; AVX2-NEXT: movb %al, (%rdi)
6515 ; AVX2-NEXT: vpextrb $3, %xmm1, %eax
6516 ; AVX2-NEXT: andb $1, %al
6517 ; AVX2-NEXT: movb %al, (%rdi)
6518 ; AVX2-NEXT: vpextrb $2, %xmm1, %eax
6519 ; AVX2-NEXT: andb $1, %al
6520 ; AVX2-NEXT: movb %al, (%rdi)
6521 ; AVX2-NEXT: vpextrb $1, %xmm1, %eax
6522 ; AVX2-NEXT: andb $1, %al
6523 ; AVX2-NEXT: movb %al, (%rdi)
6524 ; AVX2-NEXT: vpextrb $0, %xmm1, %eax
6525 ; AVX2-NEXT: andb $1, %al
6526 ; AVX2-NEXT: movb %al, (%rdi)
6527 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
6528 ; AVX2-NEXT: andb $1, %al
6529 ; AVX2-NEXT: movb %al, (%rdi)
6530 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
6531 ; AVX2-NEXT: andb $1, %al
6532 ; AVX2-NEXT: movb %al, (%rdi)
6533 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
6534 ; AVX2-NEXT: andb $1, %al
6535 ; AVX2-NEXT: movb %al, (%rdi)
6536 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
6537 ; AVX2-NEXT: andb $1, %al
6538 ; AVX2-NEXT: movb %al, (%rdi)
6539 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
6540 ; AVX2-NEXT: andb $1, %al
6541 ; AVX2-NEXT: movb %al, (%rdi)
6542 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
6543 ; AVX2-NEXT: andb $1, %al
6544 ; AVX2-NEXT: movb %al, (%rdi)
6545 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
6546 ; AVX2-NEXT: andb $1, %al
6547 ; AVX2-NEXT: movb %al, (%rdi)
6548 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
6549 ; AVX2-NEXT: andb $1, %al
6550 ; AVX2-NEXT: movb %al, (%rdi)
6551 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
6552 ; AVX2-NEXT: andb $1, %al
6553 ; AVX2-NEXT: movb %al, (%rdi)
6554 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
6555 ; AVX2-NEXT: andb $1, %al
6556 ; AVX2-NEXT: movb %al, (%rdi)
6557 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
6558 ; AVX2-NEXT: andb $1, %al
6559 ; AVX2-NEXT: movb %al, (%rdi)
6560 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
6561 ; AVX2-NEXT: andb $1, %al
6562 ; AVX2-NEXT: movb %al, (%rdi)
6563 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
6564 ; AVX2-NEXT: andb $1, %al
6565 ; AVX2-NEXT: movb %al, (%rdi)
6566 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
6567 ; AVX2-NEXT: andb $1, %al
6568 ; AVX2-NEXT: movb %al, (%rdi)
6569 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
6570 ; AVX2-NEXT: andb $1, %al
6571 ; AVX2-NEXT: movb %al, (%rdi)
6572 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
6573 ; AVX2-NEXT: andb $1, %al
6574 ; AVX2-NEXT: movb %al, (%rdi)
6575 ; AVX2-NEXT: movq %rdi, %rax
6576 ; AVX2-NEXT: vzeroupper
6577 ; AVX2-NEXT: retq
6581 ; AVX512-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0
6582 ; AVX512-NEXT: vpcmpgtb %ymm5, %ymm1, %ymm1
6583 ; AVX512-NEXT: vpcmpgtb %ymm6, %ymm2, %ymm2
6584 ; AVX512-NEXT: vpcmpgtb %ymm7, %ymm3, %ymm3
6585 NEXT: vextracti128 $1, %ymm3, %xmm4
6586 ; AVX512-NEXT: vpmovsxbd %xmm4, %zmm4
6587 ; AVX512-NEXT: vpslld $31, %zmm4, %zmm4
6588 ; AVX512-NEXT: vptestmd %zmm4, %zmm4, %k0
6589 ; AVX512-NEXT: kmovw %k0, 14(%rdi)
6590 ; AVX512-NEXT: vpmovsxbd %xmm3, %zmm3
6591 ; AVX512-NEXT: vpslld $31, %zmm3, %zmm3
6592 ; AVX512-NEXT: vptestmd %zmm3, %zmm3, %k0
6593 ; AVX512-NEXT: kmovw %k0, 12(%rdi)
6594 ; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm3
6595 ; AVX512-NEXT: vpmovsxbd %xmm3, %zmm3
6596 ; AVX512-NEXT: vpslld $31, %zmm3, %zmm3
6597 ; AVX512-NEXT: vptestmd %zmm3, %zmm3, %k0
6598 ; AVX512-NEXT: kmovw %k0, 10(%rdi)
6599 ; AVX512-NEXT: vpmovsxbd %xmm2, %zmm2
6600 ; AVX512-NEXT: vpslld $31, %zmm2, %zmm2
6601 ; AVX512-NEXT: vptestmd %zmm2, %zmm2, %k0
6602 ; AVX512-NEXT: kmovw %k0, 8(%rdi)
6603 ; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm2
6604 ; AVX512-NEXT: vpmovsxbd %xmm2, %zmm2
6605 ; AVX512-NEXT: vpslld $31, %zmm2, %zmm2
6606 ; AVX512-NEXT: vptestmd %zmm2, %zmm2, %k0
6607 ; AVX512-NEXT: kmovw %k0, 6(%rdi)
6608 ; AVX512-NEXT: vpmovsxbd %xmm1, %zmm1
6609 ; AVX512-NEXT: vpslld $31, %zmm1, %zmm1
6610 ; AVX512-NEXT: vptestmd %zmm1, %zmm1, %k0
6611 ; AVX512-NEXT: kmovw %k0, 4(%rdi)
6612 ; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm1
6613 ; AVX512-NEXT: vpmovsxbd %xmm1, %zmm1
6614 ; AVX512-NEXT: vpslld $31, %zmm1, %zmm1
6615 ; AVX512-NEXT: vptestmd %zmm1, %zmm1, %k0
6616 ; AVX512-NEXT: kmovw %k0, 2(%rdi)
6617 ; AVX512-NEXT: vpmovsxbd %xmm0, %zmm0
6618 ; AVX512-NEXT: vpslld $31, %zmm0, %zmm0
6619 ; AVX512-NEXT: vptestmd %zmm0, %zmm0, %k0
6620 ; AVX512-NEXT: kmovw %k0, (%rdi)
6621 ; AVX512-NEXT: movq %rdi, %rax
6622 ; AVX512-NEXT: retq