• Home
  • Raw
  • Download

Lines Matching refs:AVX512BW

3 …wn -mattr=+avx512bw | FileCheck %s --check-prefix=AVX --check-prefix=AVX512 --check-prefix=AVX512BW
272 ; AVX512BW-LABEL: test_div7_32i16:
273 ; AVX512BW: # BB#0:
274 ; AVX512BW-NEXT: vpmulhw {{.*}}(%rip), %zmm0, %zmm0
275 ; AVX512BW-NEXT: vpsrlw $15, %zmm0, %zmm1
276 ; AVX512BW-NEXT: vpsraw $1, %zmm0, %zmm0
277 ; AVX512BW-NEXT: vpaddw %zmm1, %zmm0, %zmm0
278 ; AVX512BW-NEXT: retq
331 ; AVX512BW-LABEL: test_div7_64i8:
332 ; AVX512BW: # BB#0:
333 ; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm1
334 ; AVX512BW-NEXT: vpextrb $1, %xmm1, %eax
335 ; AVX512BW-NEXT: movsbl %al, %eax
336 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
337 ; AVX512BW-NEXT: shrl $8, %ecx
338 ; AVX512BW-NEXT: addb %cl, %al
339 ; AVX512BW-NEXT: movl %eax, %ecx
340 ; AVX512BW-NEXT: shrb $7, %cl
341 ; AVX512BW-NEXT: sarb $2, %al
342 ; AVX512BW-NEXT: addb %cl, %al
343 ; AVX512BW-NEXT: movzbl %al, %eax
344 ; AVX512BW-NEXT: vpextrb $0, %xmm1, %ecx
345 ; AVX512BW-NEXT: movsbl %cl, %ecx
346 ; AVX512BW-NEXT: imull $-109, %ecx, %edx
347 ; AVX512BW-NEXT: shrl $8, %edx
348 ; AVX512BW-NEXT: addb %dl, %cl
349 ; AVX512BW-NEXT: movl %ecx, %edx
350 ; AVX512BW-NEXT: shrb $7, %dl
351 ; AVX512BW-NEXT: sarb $2, %cl
352 ; AVX512BW-NEXT: addb %dl, %cl
353 ; AVX512BW-NEXT: movzbl %cl, %ecx
354 ; AVX512BW-NEXT: vmovd %ecx, %xmm2
355 ; AVX512BW-NEXT: vpinsrb $1, %eax, %xmm2, %xmm2
356 ; AVX512BW-NEXT: vpextrb $2, %xmm1, %eax
357 ; AVX512BW-NEXT: movsbl %al, %eax
358 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
359 ; AVX512BW-NEXT: shrl $8, %ecx
360 ; AVX512BW-NEXT: addb %cl, %al
361 ; AVX512BW-NEXT: movl %eax, %ecx
362 ; AVX512BW-NEXT: shrb $7, %cl
363 ; AVX512BW-NEXT: sarb $2, %al
364 ; AVX512BW-NEXT: addb %cl, %al
365 ; AVX512BW-NEXT: movzbl %al, %eax
366 ; AVX512BW-NEXT: vpinsrb $2, %eax, %xmm2, %xmm2
367 ; AVX512BW-NEXT: vpextrb $3, %xmm1, %eax
368 ; AVX512BW-NEXT: movsbl %al, %eax
369 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
370 ; AVX512BW-NEXT: shrl $8, %ecx
371 ; AVX512BW-NEXT: addb %cl, %al
372 ; AVX512BW-NEXT: movl %eax, %ecx
373 ; AVX512BW-NEXT: shrb $7, %cl
374 ; AVX512BW-NEXT: sarb $2, %al
375 ; AVX512BW-NEXT: addb %cl, %al
376 ; AVX512BW-NEXT: movzbl %al, %eax
377 ; AVX512BW-NEXT: vpinsrb $3, %eax, %xmm2, %xmm2
378 ; AVX512BW-NEXT: vpextrb $4, %xmm1, %eax
379 ; AVX512BW-NEXT: movsbl %al, %eax
380 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
381 ; AVX512BW-NEXT: shrl $8, %ecx
382 ; AVX512BW-NEXT: addb %cl, %al
383 ; AVX512BW-NEXT: movl %eax, %ecx
384 ; AVX512BW-NEXT: shrb $7, %cl
385 ; AVX512BW-NEXT: sarb $2, %al
386 ; AVX512BW-NEXT: addb %cl, %al
387 ; AVX512BW-NEXT: movzbl %al, %eax
388 ; AVX512BW-NEXT: vpinsrb $4, %eax, %xmm2, %xmm2
389 ; AVX512BW-NEXT: vpextrb $5, %xmm1, %eax
390 ; AVX512BW-NEXT: movsbl %al, %eax
391 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
392 ; AVX512BW-NEXT: shrl $8, %ecx
393 ; AVX512BW-NEXT: addb %cl, %al
394 ; AVX512BW-NEXT: movl %eax, %ecx
395 ; AVX512BW-NEXT: shrb $7, %cl
396 ; AVX512BW-NEXT: sarb $2, %al
397 ; AVX512BW-NEXT: addb %cl, %al
398 ; AVX512BW-NEXT: movzbl %al, %eax
399 ; AVX512BW-NEXT: vpinsrb $5, %eax, %xmm2, %xmm2
400 ; AVX512BW-NEXT: vpextrb $6, %xmm1, %eax
401 ; AVX512BW-NEXT: movsbl %al, %eax
402 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
403 ; AVX512BW-NEXT: shrl $8, %ecx
404 ; AVX512BW-NEXT: addb %cl, %al
405 ; AVX512BW-NEXT: movl %eax, %ecx
406 ; AVX512BW-NEXT: shrb $7, %cl
407 ; AVX512BW-NEXT: sarb $2, %al
408 ; AVX512BW-NEXT: addb %cl, %al
409 ; AVX512BW-NEXT: movzbl %al, %eax
410 ; AVX512BW-NEXT: vpinsrb $6, %eax, %xmm2, %xmm2
411 ; AVX512BW-NEXT: vpextrb $7, %xmm1, %eax
412 ; AVX512BW-NEXT: movsbl %al, %eax
413 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
414 ; AVX512BW-NEXT: shrl $8, %ecx
415 ; AVX512BW-NEXT: addb %cl, %al
416 ; AVX512BW-NEXT: movl %eax, %ecx
417 ; AVX512BW-NEXT: shrb $7, %cl
418 ; AVX512BW-NEXT: sarb $2, %al
419 ; AVX512BW-NEXT: addb %cl, %al
420 ; AVX512BW-NEXT: movzbl %al, %eax
421 ; AVX512BW-NEXT: vpinsrb $7, %eax, %xmm2, %xmm2
422 ; AVX512BW-NEXT: vpextrb $8, %xmm1, %eax
423 ; AVX512BW-NEXT: movsbl %al, %eax
424 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
425 ; AVX512BW-NEXT: shrl $8, %ecx
426 ; AVX512BW-NEXT: addb %cl, %al
427 ; AVX512BW-NEXT: movl %eax, %ecx
428 ; AVX512BW-NEXT: shrb $7, %cl
429 ; AVX512BW-NEXT: sarb $2, %al
430 ; AVX512BW-NEXT: addb %cl, %al
431 ; AVX512BW-NEXT: movzbl %al, %eax
432 ; AVX512BW-NEXT: vpinsrb $8, %eax, %xmm2, %xmm2
433 ; AVX512BW-NEXT: vpextrb $9, %xmm1, %eax
434 ; AVX512BW-NEXT: movsbl %al, %eax
435 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
436 ; AVX512BW-NEXT: shrl $8, %ecx
437 ; AVX512BW-NEXT: addb %cl, %al
438 ; AVX512BW-NEXT: movl %eax, %ecx
439 ; AVX512BW-NEXT: shrb $7, %cl
440 ; AVX512BW-NEXT: sarb $2, %al
441 ; AVX512BW-NEXT: addb %cl, %al
442 ; AVX512BW-NEXT: movzbl %al, %eax
443 ; AVX512BW-NEXT: vpinsrb $9, %eax, %xmm2, %xmm2
444 ; AVX512BW-NEXT: vpextrb $10, %xmm1, %eax
445 ; AVX512BW-NEXT: movsbl %al, %eax
446 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
447 ; AVX512BW-NEXT: shrl $8, %ecx
448 ; AVX512BW-NEXT: addb %cl, %al
449 ; AVX512BW-NEXT: movl %eax, %ecx
450 ; AVX512BW-NEXT: shrb $7, %cl
451 ; AVX512BW-NEXT: sarb $2, %al
452 ; AVX512BW-NEXT: addb %cl, %al
453 ; AVX512BW-NEXT: movzbl %al, %eax
454 ; AVX512BW-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2
455 ; AVX512BW-NEXT: vpextrb $11, %xmm1, %eax
456 ; AVX512BW-NEXT: movsbl %al, %eax
457 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
458 ; AVX512BW-NEXT: shrl $8, %ecx
459 ; AVX512BW-NEXT: addb %cl, %al
460 ; AVX512BW-NEXT: movl %eax, %ecx
461 ; AVX512BW-NEXT: shrb $7, %cl
462 ; AVX512BW-NEXT: sarb $2, %al
463 ; AVX512BW-NEXT: addb %cl, %al
464 ; AVX512BW-NEXT: movzbl %al, %eax
465 ; AVX512BW-NEXT: vpinsrb $11, %eax, %xmm2, %xmm2
466 ; AVX512BW-NEXT: vpextrb $12, %xmm1, %eax
467 ; AVX512BW-NEXT: movsbl %al, %eax
468 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
469 ; AVX512BW-NEXT: shrl $8, %ecx
470 ; AVX512BW-NEXT: addb %cl, %al
471 ; AVX512BW-NEXT: movl %eax, %ecx
472 ; AVX512BW-NEXT: shrb $7, %cl
473 ; AVX512BW-NEXT: sarb $2, %al
474 ; AVX512BW-NEXT: addb %cl, %al
475 ; AVX512BW-NEXT: movzbl %al, %eax
476 ; AVX512BW-NEXT: vpinsrb $12, %eax, %xmm2, %xmm2
477 ; AVX512BW-NEXT: vpextrb $13, %xmm1, %eax
478 ; AVX512BW-NEXT: movsbl %al, %eax
479 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
480 ; AVX512BW-NEXT: shrl $8, %ecx
481 ; AVX512BW-NEXT: addb %cl, %al
482 ; AVX512BW-NEXT: movl %eax, %ecx
483 ; AVX512BW-NEXT: shrb $7, %cl
484 ; AVX512BW-NEXT: sarb $2, %al
485 ; AVX512BW-NEXT: addb %cl, %al
486 ; AVX512BW-NEXT: movzbl %al, %eax
487 ; AVX512BW-NEXT: vpinsrb $13, %eax, %xmm2, %xmm2
488 ; AVX512BW-NEXT: vpextrb $14, %xmm1, %eax
489 ; AVX512BW-NEXT: movsbl %al, %eax
490 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
491 ; AVX512BW-NEXT: shrl $8, %ecx
492 ; AVX512BW-NEXT: addb %cl, %al
493 ; AVX512BW-NEXT: movl %eax, %ecx
494 ; AVX512BW-NEXT: shrb $7, %cl
495 ; AVX512BW-NEXT: sarb $2, %al
496 ; AVX512BW-NEXT: addb %cl, %al
497 ; AVX512BW-NEXT: movzbl %al, %eax
498 ; AVX512BW-NEXT: vpinsrb $14, %eax, %xmm2, %xmm2
499 ; AVX512BW-NEXT: vpextrb $15, %xmm1, %eax
500 ; AVX512BW-NEXT: movsbl %al, %eax
501 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
502 ; AVX512BW-NEXT: shrl $8, %ecx
503 ; AVX512BW-NEXT: addb %cl, %al
504 ; AVX512BW-NEXT: movl %eax, %ecx
505 ; AVX512BW-NEXT: shrb $7, %cl
506 ; AVX512BW-NEXT: sarb $2, %al
507 ; AVX512BW-NEXT: addb %cl, %al
508 ; AVX512BW-NEXT: movzbl %al, %eax
509 ; AVX512BW-NEXT: vpinsrb $15, %eax, %xmm2, %xmm1
510 ; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm2
511 ; AVX512BW-NEXT: vpextrb $1, %xmm2, %eax
512 ; AVX512BW-NEXT: movsbl %al, %eax
513 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
514 ; AVX512BW-NEXT: shrl $8, %ecx
515 ; AVX512BW-NEXT: addb %cl, %al
516 ; AVX512BW-NEXT: movl %eax, %ecx
517 ; AVX512BW-NEXT: shrb $7, %cl
518 ; AVX512BW-NEXT: sarb $2, %al
519 ; AVX512BW-NEXT: addb %cl, %al
520 ; AVX512BW-NEXT: movzbl %al, %eax
521 ; AVX512BW-NEXT: vpextrb $0, %xmm2, %ecx
522 ; AVX512BW-NEXT: movsbl %cl, %ecx
523 ; AVX512BW-NEXT: imull $-109, %ecx, %edx
524 ; AVX512BW-NEXT: shrl $8, %edx
525 ; AVX512BW-NEXT: addb %dl, %cl
526 ; AVX512BW-NEXT: movl %ecx, %edx
527 ; AVX512BW-NEXT: shrb $7, %dl
528 ; AVX512BW-NEXT: sarb $2, %cl
529 ; AVX512BW-NEXT: addb %dl, %cl
530 ; AVX512BW-NEXT: movzbl %cl, %ecx
531 ; AVX512BW-NEXT: vmovd %ecx, %xmm3
532 ; AVX512BW-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3
533 ; AVX512BW-NEXT: vpextrb $2, %xmm2, %eax
534 ; AVX512BW-NEXT: movsbl %al, %eax
535 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
536 ; AVX512BW-NEXT: shrl $8, %ecx
537 ; AVX512BW-NEXT: addb %cl, %al
538 ; AVX512BW-NEXT: movl %eax, %ecx
539 ; AVX512BW-NEXT: shrb $7, %cl
540 ; AVX512BW-NEXT: sarb $2, %al
541 ; AVX512BW-NEXT: addb %cl, %al
542 ; AVX512BW-NEXT: movzbl %al, %eax
543 ; AVX512BW-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3
544 ; AVX512BW-NEXT: vpextrb $3, %xmm2, %eax
545 ; AVX512BW-NEXT: movsbl %al, %eax
546 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
547 ; AVX512BW-NEXT: shrl $8, %ecx
548 ; AVX512BW-NEXT: addb %cl, %al
549 ; AVX512BW-NEXT: movl %eax, %ecx
550 ; AVX512BW-NEXT: shrb $7, %cl
551 ; AVX512BW-NEXT: sarb $2, %al
552 ; AVX512BW-NEXT: addb %cl, %al
553 ; AVX512BW-NEXT: movzbl %al, %eax
554 ; AVX512BW-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3
555 ; AVX512BW-NEXT: vpextrb $4, %xmm2, %eax
556 ; AVX512BW-NEXT: movsbl %al, %eax
557 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
558 ; AVX512BW-NEXT: shrl $8, %ecx
559 ; AVX512BW-NEXT: addb %cl, %al
560 ; AVX512BW-NEXT: movl %eax, %ecx
561 ; AVX512BW-NEXT: shrb $7, %cl
562 ; AVX512BW-NEXT: sarb $2, %al
563 ; AVX512BW-NEXT: addb %cl, %al
564 ; AVX512BW-NEXT: movzbl %al, %eax
565 ; AVX512BW-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3
566 ; AVX512BW-NEXT: vpextrb $5, %xmm2, %eax
567 ; AVX512BW-NEXT: movsbl %al, %eax
568 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
569 ; AVX512BW-NEXT: shrl $8, %ecx
570 ; AVX512BW-NEXT: addb %cl, %al
571 ; AVX512BW-NEXT: movl %eax, %ecx
572 ; AVX512BW-NEXT: shrb $7, %cl
573 ; AVX512BW-NEXT: sarb $2, %al
574 ; AVX512BW-NEXT: addb %cl, %al
575 ; AVX512BW-NEXT: movzbl %al, %eax
576 ; AVX512BW-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3
577 ; AVX512BW-NEXT: vpextrb $6, %xmm2, %eax
578 ; AVX512BW-NEXT: movsbl %al, %eax
579 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
580 ; AVX512BW-NEXT: shrl $8, %ecx
581 ; AVX512BW-NEXT: addb %cl, %al
582 ; AVX512BW-NEXT: movl %eax, %ecx
583 ; AVX512BW-NEXT: shrb $7, %cl
584 ; AVX512BW-NEXT: sarb $2, %al
585 ; AVX512BW-NEXT: addb %cl, %al
586 ; AVX512BW-NEXT: movzbl %al, %eax
587 ; AVX512BW-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3
588 ; AVX512BW-NEXT: vpextrb $7, %xmm2, %eax
589 ; AVX512BW-NEXT: movsbl %al, %eax
590 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
591 ; AVX512BW-NEXT: shrl $8, %ecx
592 ; AVX512BW-NEXT: addb %cl, %al
593 ; AVX512BW-NEXT: movl %eax, %ecx
594 ; AVX512BW-NEXT: shrb $7, %cl
595 ; AVX512BW-NEXT: sarb $2, %al
596 ; AVX512BW-NEXT: addb %cl, %al
597 ; AVX512BW-NEXT: movzbl %al, %eax
598 ; AVX512BW-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3
599 ; AVX512BW-NEXT: vpextrb $8, %xmm2, %eax
600 ; AVX512BW-NEXT: movsbl %al, %eax
601 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
602 ; AVX512BW-NEXT: shrl $8, %ecx
603 ; AVX512BW-NEXT: addb %cl, %al
604 ; AVX512BW-NEXT: movl %eax, %ecx
605 ; AVX512BW-NEXT: shrb $7, %cl
606 ; AVX512BW-NEXT: sarb $2, %al
607 ; AVX512BW-NEXT: addb %cl, %al
608 ; AVX512BW-NEXT: movzbl %al, %eax
609 ; AVX512BW-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3
610 ; AVX512BW-NEXT: vpextrb $9, %xmm2, %eax
611 ; AVX512BW-NEXT: movsbl %al, %eax
612 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
613 ; AVX512BW-NEXT: shrl $8, %ecx
614 ; AVX512BW-NEXT: addb %cl, %al
615 ; AVX512BW-NEXT: movl %eax, %ecx
616 ; AVX512BW-NEXT: shrb $7, %cl
617 ; AVX512BW-NEXT: sarb $2, %al
618 ; AVX512BW-NEXT: addb %cl, %al
619 ; AVX512BW-NEXT: movzbl %al, %eax
620 ; AVX512BW-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3
621 ; AVX512BW-NEXT: vpextrb $10, %xmm2, %eax
622 ; AVX512BW-NEXT: movsbl %al, %eax
623 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
624 ; AVX512BW-NEXT: shrl $8, %ecx
625 ; AVX512BW-NEXT: addb %cl, %al
626 ; AVX512BW-NEXT: movl %eax, %ecx
627 ; AVX512BW-NEXT: shrb $7, %cl
628 ; AVX512BW-NEXT: sarb $2, %al
629 ; AVX512BW-NEXT: addb %cl, %al
630 ; AVX512BW-NEXT: movzbl %al, %eax
631 ; AVX512BW-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3
632 ; AVX512BW-NEXT: vpextrb $11, %xmm2, %eax
633 ; AVX512BW-NEXT: movsbl %al, %eax
634 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
635 ; AVX512BW-NEXT: shrl $8, %ecx
636 ; AVX512BW-NEXT: addb %cl, %al
637 ; AVX512BW-NEXT: movl %eax, %ecx
638 ; AVX512BW-NEXT: shrb $7, %cl
639 ; AVX512BW-NEXT: sarb $2, %al
640 ; AVX512BW-NEXT: addb %cl, %al
641 ; AVX512BW-NEXT: movzbl %al, %eax
642 ; AVX512BW-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3
643 ; AVX512BW-NEXT: vpextrb $12, %xmm2, %eax
644 ; AVX512BW-NEXT: movsbl %al, %eax
645 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
646 ; AVX512BW-NEXT: shrl $8, %ecx
647 ; AVX512BW-NEXT: addb %cl, %al
648 ; AVX512BW-NEXT: movl %eax, %ecx
649 ; AVX512BW-NEXT: shrb $7, %cl
650 ; AVX512BW-NEXT: sarb $2, %al
651 ; AVX512BW-NEXT: addb %cl, %al
652 ; AVX512BW-NEXT: movzbl %al, %eax
653 ; AVX512BW-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3
654 ; AVX512BW-NEXT: vpextrb $13, %xmm2, %eax
655 ; AVX512BW-NEXT: movsbl %al, %eax
656 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
657 ; AVX512BW-NEXT: shrl $8, %ecx
658 ; AVX512BW-NEXT: addb %cl, %al
659 ; AVX512BW-NEXT: movl %eax, %ecx
660 ; AVX512BW-NEXT: shrb $7, %cl
661 ; AVX512BW-NEXT: sarb $2, %al
662 ; AVX512BW-NEXT: addb %cl, %al
663 ; AVX512BW-NEXT: movzbl %al, %eax
664 ; AVX512BW-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3
665 ; AVX512BW-NEXT: vpextrb $14, %xmm2, %eax
666 ; AVX512BW-NEXT: movsbl %al, %eax
667 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
668 ; AVX512BW-NEXT: shrl $8, %ecx
669 ; AVX512BW-NEXT: addb %cl, %al
670 ; AVX512BW-NEXT: movl %eax, %ecx
671 ; AVX512BW-NEXT: shrb $7, %cl
672 ; AVX512BW-NEXT: sarb $2, %al
673 ; AVX512BW-NEXT: addb %cl, %al
674 ; AVX512BW-NEXT: movzbl %al, %eax
675 ; AVX512BW-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3
676 ; AVX512BW-NEXT: vpextrb $15, %xmm2, %eax
677 ; AVX512BW-NEXT: movsbl %al, %eax
678 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
679 ; AVX512BW-NEXT: shrl $8, %ecx
680 ; AVX512BW-NEXT: addb %cl, %al
681 ; AVX512BW-NEXT: movl %eax, %ecx
682 ; AVX512BW-NEXT: shrb $7, %cl
683 ; AVX512BW-NEXT: sarb $2, %al
684 ; AVX512BW-NEXT: addb %cl, %al
685 ; AVX512BW-NEXT: movzbl %al, %eax
686 ; AVX512BW-NEXT: vpinsrb $15, %eax, %xmm3, %xmm2
687 ; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1
688 ; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm2
689 ; AVX512BW-NEXT: vpextrb $1, %xmm2, %eax
690 ; AVX512BW-NEXT: movsbl %al, %eax
691 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
692 ; AVX512BW-NEXT: shrl $8, %ecx
693 ; AVX512BW-NEXT: addb %cl, %al
694 ; AVX512BW-NEXT: movl %eax, %ecx
695 ; AVX512BW-NEXT: shrb $7, %cl
696 ; AVX512BW-NEXT: sarb $2, %al
697 ; AVX512BW-NEXT: addb %cl, %al
698 ; AVX512BW-NEXT: movzbl %al, %eax
699 ; AVX512BW-NEXT: vpextrb $0, %xmm2, %ecx
700 ; AVX512BW-NEXT: movsbl %cl, %ecx
701 ; AVX512BW-NEXT: imull $-109, %ecx, %edx
702 ; AVX512BW-NEXT: shrl $8, %edx
703 ; AVX512BW-NEXT: addb %dl, %cl
704 ; AVX512BW-NEXT: movl %ecx, %edx
705 ; AVX512BW-NEXT: shrb $7, %dl
706 ; AVX512BW-NEXT: sarb $2, %cl
707 ; AVX512BW-NEXT: addb %dl, %cl
708 ; AVX512BW-NEXT: movzbl %cl, %ecx
709 ; AVX512BW-NEXT: vmovd %ecx, %xmm3
710 ; AVX512BW-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3
711 ; AVX512BW-NEXT: vpextrb $2, %xmm2, %eax
712 ; AVX512BW-NEXT: movsbl %al, %eax
713 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
714 ; AVX512BW-NEXT: shrl $8, %ecx
715 ; AVX512BW-NEXT: addb %cl, %al
716 ; AVX512BW-NEXT: movl %eax, %ecx
717 ; AVX512BW-NEXT: shrb $7, %cl
718 ; AVX512BW-NEXT: sarb $2, %al
719 ; AVX512BW-NEXT: addb %cl, %al
720 ; AVX512BW-NEXT: movzbl %al, %eax
721 ; AVX512BW-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3
722 ; AVX512BW-NEXT: vpextrb $3, %xmm2, %eax
723 ; AVX512BW-NEXT: movsbl %al, %eax
724 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
725 ; AVX512BW-NEXT: shrl $8, %ecx
726 ; AVX512BW-NEXT: addb %cl, %al
727 ; AVX512BW-NEXT: movl %eax, %ecx
728 ; AVX512BW-NEXT: shrb $7, %cl
729 ; AVX512BW-NEXT: sarb $2, %al
730 ; AVX512BW-NEXT: addb %cl, %al
731 ; AVX512BW-NEXT: movzbl %al, %eax
732 ; AVX512BW-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3
733 ; AVX512BW-NEXT: vpextrb $4, %xmm2, %eax
734 ; AVX512BW-NEXT: movsbl %al, %eax
735 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
736 ; AVX512BW-NEXT: shrl $8, %ecx
737 ; AVX512BW-NEXT: addb %cl, %al
738 ; AVX512BW-NEXT: movl %eax, %ecx
739 ; AVX512BW-NEXT: shrb $7, %cl
740 ; AVX512BW-NEXT: sarb $2, %al
741 ; AVX512BW-NEXT: addb %cl, %al
742 ; AVX512BW-NEXT: movzbl %al, %eax
743 ; AVX512BW-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3
744 ; AVX512BW-NEXT: vpextrb $5, %xmm2, %eax
745 ; AVX512BW-NEXT: movsbl %al, %eax
746 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
747 ; AVX512BW-NEXT: shrl $8, %ecx
748 ; AVX512BW-NEXT: addb %cl, %al
749 ; AVX512BW-NEXT: movl %eax, %ecx
750 ; AVX512BW-NEXT: shrb $7, %cl
751 ; AVX512BW-NEXT: sarb $2, %al
752 ; AVX512BW-NEXT: addb %cl, %al
753 ; AVX512BW-NEXT: movzbl %al, %eax
754 ; AVX512BW-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3
755 ; AVX512BW-NEXT: vpextrb $6, %xmm2, %eax
756 ; AVX512BW-NEXT: movsbl %al, %eax
757 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
758 ; AVX512BW-NEXT: shrl $8, %ecx
759 ; AVX512BW-NEXT: addb %cl, %al
760 ; AVX512BW-NEXT: movl %eax, %ecx
761 ; AVX512BW-NEXT: shrb $7, %cl
762 ; AVX512BW-NEXT: sarb $2, %al
763 ; AVX512BW-NEXT: addb %cl, %al
764 ; AVX512BW-NEXT: movzbl %al, %eax
765 ; AVX512BW-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3
766 ; AVX512BW-NEXT: vpextrb $7, %xmm2, %eax
767 ; AVX512BW-NEXT: movsbl %al, %eax
768 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
769 ; AVX512BW-NEXT: shrl $8, %ecx
770 ; AVX512BW-NEXT: addb %cl, %al
771 ; AVX512BW-NEXT: movl %eax, %ecx
772 ; AVX512BW-NEXT: shrb $7, %cl
773 ; AVX512BW-NEXT: sarb $2, %al
774 ; AVX512BW-NEXT: addb %cl, %al
775 ; AVX512BW-NEXT: movzbl %al, %eax
776 ; AVX512BW-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3
777 ; AVX512BW-NEXT: vpextrb $8, %xmm2, %eax
778 ; AVX512BW-NEXT: movsbl %al, %eax
779 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
780 ; AVX512BW-NEXT: shrl $8, %ecx
781 ; AVX512BW-NEXT: addb %cl, %al
782 ; AVX512BW-NEXT: movl %eax, %ecx
783 ; AVX512BW-NEXT: shrb $7, %cl
784 ; AVX512BW-NEXT: sarb $2, %al
785 ; AVX512BW-NEXT: addb %cl, %al
786 ; AVX512BW-NEXT: movzbl %al, %eax
787 ; AVX512BW-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3
788 ; AVX512BW-NEXT: vpextrb $9, %xmm2, %eax
789 ; AVX512BW-NEXT: movsbl %al, %eax
790 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
791 ; AVX512BW-NEXT: shrl $8, %ecx
792 ; AVX512BW-NEXT: addb %cl, %al
793 ; AVX512BW-NEXT: movl %eax, %ecx
794 ; AVX512BW-NEXT: shrb $7, %cl
795 ; AVX512BW-NEXT: sarb $2, %al
796 ; AVX512BW-NEXT: addb %cl, %al
797 ; AVX512BW-NEXT: movzbl %al, %eax
798 ; AVX512BW-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3
799 ; AVX512BW-NEXT: vpextrb $10, %xmm2, %eax
800 ; AVX512BW-NEXT: movsbl %al, %eax
801 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
802 ; AVX512BW-NEXT: shrl $8, %ecx
803 ; AVX512BW-NEXT: addb %cl, %al
804 ; AVX512BW-NEXT: movl %eax, %ecx
805 ; AVX512BW-NEXT: shrb $7, %cl
806 ; AVX512BW-NEXT: sarb $2, %al
807 ; AVX512BW-NEXT: addb %cl, %al
808 ; AVX512BW-NEXT: movzbl %al, %eax
809 ; AVX512BW-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3
810 ; AVX512BW-NEXT: vpextrb $11, %xmm2, %eax
811 ; AVX512BW-NEXT: movsbl %al, %eax
812 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
813 ; AVX512BW-NEXT: shrl $8, %ecx
814 ; AVX512BW-NEXT: addb %cl, %al
815 ; AVX512BW-NEXT: movl %eax, %ecx
816 ; AVX512BW-NEXT: shrb $7, %cl
817 ; AVX512BW-NEXT: sarb $2, %al
818 ; AVX512BW-NEXT: addb %cl, %al
819 ; AVX512BW-NEXT: movzbl %al, %eax
820 ; AVX512BW-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3
821 ; AVX512BW-NEXT: vpextrb $12, %xmm2, %eax
822 ; AVX512BW-NEXT: movsbl %al, %eax
823 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
824 ; AVX512BW-NEXT: shrl $8, %ecx
825 ; AVX512BW-NEXT: addb %cl, %al
826 ; AVX512BW-NEXT: movl %eax, %ecx
827 ; AVX512BW-NEXT: shrb $7, %cl
828 ; AVX512BW-NEXT: sarb $2, %al
829 ; AVX512BW-NEXT: addb %cl, %al
830 ; AVX512BW-NEXT: movzbl %al, %eax
831 ; AVX512BW-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3
832 ; AVX512BW-NEXT: vpextrb $13, %xmm2, %eax
833 ; AVX512BW-NEXT: movsbl %al, %eax
834 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
835 ; AVX512BW-NEXT: shrl $8, %ecx
836 ; AVX512BW-NEXT: addb %cl, %al
837 ; AVX512BW-NEXT: movl %eax, %ecx
838 ; AVX512BW-NEXT: shrb $7, %cl
839 ; AVX512BW-NEXT: sarb $2, %al
840 ; AVX512BW-NEXT: addb %cl, %al
841 ; AVX512BW-NEXT: movzbl %al, %eax
842 ; AVX512BW-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3
843 ; AVX512BW-NEXT: vpextrb $14, %xmm2, %eax
844 ; AVX512BW-NEXT: movsbl %al, %eax
845 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
846 ; AVX512BW-NEXT: shrl $8, %ecx
847 ; AVX512BW-NEXT: addb %cl, %al
848 ; AVX512BW-NEXT: movl %eax, %ecx
849 ; AVX512BW-NEXT: shrb $7, %cl
850 ; AVX512BW-NEXT: sarb $2, %al
851 ; AVX512BW-NEXT: addb %cl, %al
852 ; AVX512BW-NEXT: movzbl %al, %eax
853 ; AVX512BW-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3
854 ; AVX512BW-NEXT: vpextrb $15, %xmm2, %eax
855 ; AVX512BW-NEXT: movsbl %al, %eax
856 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
857 ; AVX512BW-NEXT: shrl $8, %ecx
858 ; AVX512BW-NEXT: addb %cl, %al
859 ; AVX512BW-NEXT: movl %eax, %ecx
860 ; AVX512BW-NEXT: shrb $7, %cl
861 ; AVX512BW-NEXT: sarb $2, %al
862 ; AVX512BW-NEXT: addb %cl, %al
863 ; AVX512BW-NEXT: movzbl %al, %eax
864 ; AVX512BW-NEXT: vpinsrb $15, %eax, %xmm3, %xmm2
865 ; AVX512BW-NEXT: vpextrb $1, %xmm0, %eax
866 ; AVX512BW-NEXT: movsbl %al, %eax
867 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
868 ; AVX512BW-NEXT: shrl $8, %ecx
869 ; AVX512BW-NEXT: addb %cl, %al
870 ; AVX512BW-NEXT: movl %eax, %ecx
871 ; AVX512BW-NEXT: shrb $7, %cl
872 ; AVX512BW-NEXT: sarb $2, %al
873 ; AVX512BW-NEXT: addb %cl, %al
874 ; AVX512BW-NEXT: movzbl %al, %eax
875 ; AVX512BW-NEXT: vpextrb $0, %xmm0, %ecx
876 ; AVX512BW-NEXT: movsbl %cl, %ecx
877 ; AVX512BW-NEXT: imull $-109, %ecx, %edx
878 ; AVX512BW-NEXT: shrl $8, %edx
879 ; AVX512BW-NEXT: addb %dl, %cl
880 ; AVX512BW-NEXT: movl %ecx, %edx
881 ; AVX512BW-NEXT: shrb $7, %dl
882 ; AVX512BW-NEXT: sarb $2, %cl
883 ; AVX512BW-NEXT: addb %dl, %cl
884 ; AVX512BW-NEXT: movzbl %cl, %ecx
885 ; AVX512BW-NEXT: vmovd %ecx, %xmm3
886 ; AVX512BW-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3
887 ; AVX512BW-NEXT: vpextrb $2, %xmm0, %eax
888 ; AVX512BW-NEXT: movsbl %al, %eax
889 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
890 ; AVX512BW-NEXT: shrl $8, %ecx
891 ; AVX512BW-NEXT: addb %cl, %al
892 ; AVX512BW-NEXT: movl %eax, %ecx
893 ; AVX512BW-NEXT: shrb $7, %cl
894 ; AVX512BW-NEXT: sarb $2, %al
895 ; AVX512BW-NEXT: addb %cl, %al
896 ; AVX512BW-NEXT: movzbl %al, %eax
897 ; AVX512BW-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3
898 ; AVX512BW-NEXT: vpextrb $3, %xmm0, %eax
899 ; AVX512BW-NEXT: movsbl %al, %eax
900 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
901 ; AVX512BW-NEXT: shrl $8, %ecx
902 ; AVX512BW-NEXT: addb %cl, %al
903 ; AVX512BW-NEXT: movl %eax, %ecx
904 ; AVX512BW-NEXT: shrb $7, %cl
905 ; AVX512BW-NEXT: sarb $2, %al
906 ; AVX512BW-NEXT: addb %cl, %al
907 ; AVX512BW-NEXT: movzbl %al, %eax
908 ; AVX512BW-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3
909 ; AVX512BW-NEXT: vpextrb $4, %xmm0, %eax
910 ; AVX512BW-NEXT: movsbl %al, %eax
911 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
912 ; AVX512BW-NEXT: shrl $8, %ecx
913 ; AVX512BW-NEXT: addb %cl, %al
914 ; AVX512BW-NEXT: movl %eax, %ecx
915 ; AVX512BW-NEXT: shrb $7, %cl
916 ; AVX512BW-NEXT: sarb $2, %al
917 ; AVX512BW-NEXT: addb %cl, %al
918 ; AVX512BW-NEXT: movzbl %al, %eax
919 ; AVX512BW-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3
920 ; AVX512BW-NEXT: vpextrb $5, %xmm0, %eax
921 ; AVX512BW-NEXT: movsbl %al, %eax
922 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
923 ; AVX512BW-NEXT: shrl $8, %ecx
924 ; AVX512BW-NEXT: addb %cl, %al
925 ; AVX512BW-NEXT: movl %eax, %ecx
926 ; AVX512BW-NEXT: shrb $7, %cl
927 ; AVX512BW-NEXT: sarb $2, %al
928 ; AVX512BW-NEXT: addb %cl, %al
929 ; AVX512BW-NEXT: movzbl %al, %eax
930 ; AVX512BW-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3
931 ; AVX512BW-NEXT: vpextrb $6, %xmm0, %eax
932 ; AVX512BW-NEXT: movsbl %al, %eax
933 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
934 ; AVX512BW-NEXT: shrl $8, %ecx
935 ; AVX512BW-NEXT: addb %cl, %al
936 ; AVX512BW-NEXT: movl %eax, %ecx
937 ; AVX512BW-NEXT: shrb $7, %cl
938 ; AVX512BW-NEXT: sarb $2, %al
939 ; AVX512BW-NEXT: addb %cl, %al
940 ; AVX512BW-NEXT: movzbl %al, %eax
941 ; AVX512BW-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3
942 ; AVX512BW-NEXT: vpextrb $7, %xmm0, %eax
943 ; AVX512BW-NEXT: movsbl %al, %eax
944 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
945 ; AVX512BW-NEXT: shrl $8, %ecx
946 ; AVX512BW-NEXT: addb %cl, %al
947 ; AVX512BW-NEXT: movl %eax, %ecx
948 ; AVX512BW-NEXT: shrb $7, %cl
949 ; AVX512BW-NEXT: sarb $2, %al
950 ; AVX512BW-NEXT: addb %cl, %al
951 ; AVX512BW-NEXT: movzbl %al, %eax
952 ; AVX512BW-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3
953 ; AVX512BW-NEXT: vpextrb $8, %xmm0, %eax
954 ; AVX512BW-NEXT: movsbl %al, %eax
955 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
956 ; AVX512BW-NEXT: shrl $8, %ecx
957 ; AVX512BW-NEXT: addb %cl, %al
958 ; AVX512BW-NEXT: movl %eax, %ecx
959 ; AVX512BW-NEXT: shrb $7, %cl
960 ; AVX512BW-NEXT: sarb $2, %al
961 ; AVX512BW-NEXT: addb %cl, %al
962 ; AVX512BW-NEXT: movzbl %al, %eax
963 ; AVX512BW-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3
964 ; AVX512BW-NEXT: vpextrb $9, %xmm0, %eax
965 ; AVX512BW-NEXT: movsbl %al, %eax
966 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
967 ; AVX512BW-NEXT: shrl $8, %ecx
968 ; AVX512BW-NEXT: addb %cl, %al
969 ; AVX512BW-NEXT: movl %eax, %ecx
970 ; AVX512BW-NEXT: shrb $7, %cl
971 ; AVX512BW-NEXT: sarb $2, %al
972 ; AVX512BW-NEXT: addb %cl, %al
973 ; AVX512BW-NEXT: movzbl %al, %eax
974 ; AVX512BW-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3
975 ; AVX512BW-NEXT: vpextrb $10, %xmm0, %eax
976 ; AVX512BW-NEXT: movsbl %al, %eax
977 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
978 ; AVX512BW-NEXT: shrl $8, %ecx
979 ; AVX512BW-NEXT: addb %cl, %al
980 ; AVX512BW-NEXT: movl %eax, %ecx
981 ; AVX512BW-NEXT: shrb $7, %cl
982 ; AVX512BW-NEXT: sarb $2, %al
983 ; AVX512BW-NEXT: addb %cl, %al
984 ; AVX512BW-NEXT: movzbl %al, %eax
985 ; AVX512BW-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3
986 ; AVX512BW-NEXT: vpextrb $11, %xmm0, %eax
987 ; AVX512BW-NEXT: movsbl %al, %eax
988 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
989 ; AVX512BW-NEXT: shrl $8, %ecx
990 ; AVX512BW-NEXT: addb %cl, %al
991 ; AVX512BW-NEXT: movl %eax, %ecx
992 ; AVX512BW-NEXT: shrb $7, %cl
993 ; AVX512BW-NEXT: sarb $2, %al
994 ; AVX512BW-NEXT: addb %cl, %al
995 ; AVX512BW-NEXT: movzbl %al, %eax
996 ; AVX512BW-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3
997 ; AVX512BW-NEXT: vpextrb $12, %xmm0, %eax
998 ; AVX512BW-NEXT: movsbl %al, %eax
999 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
1000 ; AVX512BW-NEXT: shrl $8, %ecx
1001 ; AVX512BW-NEXT: addb %cl, %al
1002 ; AVX512BW-NEXT: movl %eax, %ecx
1003 ; AVX512BW-NEXT: shrb $7, %cl
1004 ; AVX512BW-NEXT: sarb $2, %al
1005 ; AVX512BW-NEXT: addb %cl, %al
1006 ; AVX512BW-NEXT: movzbl %al, %eax
1007 ; AVX512BW-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3
1008 ; AVX512BW-NEXT: vpextrb $13, %xmm0, %eax
1009 ; AVX512BW-NEXT: movsbl %al, %eax
1010 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
1011 ; AVX512BW-NEXT: shrl $8, %ecx
1012 ; AVX512BW-NEXT: addb %cl, %al
1013 ; AVX512BW-NEXT: movl %eax, %ecx
1014 ; AVX512BW-NEXT: shrb $7, %cl
1015 ; AVX512BW-NEXT: sarb $2, %al
1016 ; AVX512BW-NEXT: addb %cl, %al
1017 ; AVX512BW-NEXT: movzbl %al, %eax
1018 ; AVX512BW-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3
1019 ; AVX512BW-NEXT: vpextrb $14, %xmm0, %eax
1020 ; AVX512BW-NEXT: movsbl %al, %eax
1021 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
1022 ; AVX512BW-NEXT: shrl $8, %ecx
1023 ; AVX512BW-NEXT: addb %cl, %al
1024 ; AVX512BW-NEXT: movl %eax, %ecx
1025 ; AVX512BW-NEXT: shrb $7, %cl
1026 ; AVX512BW-NEXT: sarb $2, %al
1027 ; AVX512BW-NEXT: addb %cl, %al
1028 ; AVX512BW-NEXT: movzbl %al, %eax
1029 ; AVX512BW-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3
1030 ; AVX512BW-NEXT: vpextrb $15, %xmm0, %eax
1031 ; AVX512BW-NEXT: movsbl %al, %eax
1032 ; AVX512BW-NEXT: imull $-109, %eax, %ecx
1033 ; AVX512BW-NEXT: shrl $8, %ecx
1034 ; AVX512BW-NEXT: addb %cl, %al
1035 ; AVX512BW-NEXT: movl %eax, %ecx
1036 ; AVX512BW-NEXT: shrb $7, %cl
1037 ; AVX512BW-NEXT: sarb $2, %al
1038 ; AVX512BW-NEXT: addb %cl, %al
1039 ; AVX512BW-NEXT: movzbl %al, %eax
1040 ; AVX512BW-NEXT: vpinsrb $15, %eax, %xmm3, %xmm0
1041 ; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0
1042 ; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
1043 ; AVX512BW-NEXT: retq
1400 ; AVX512BW-LABEL: test_rem7_32i16:
1401 ; AVX512BW: # BB#0:
1402 ; AVX512BW-NEXT: vpmulhw {{.*}}(%rip), %zmm0, %zmm1
1403 ; AVX512BW-NEXT: vpsrlw $15, %zmm1, %zmm2
1404 ; AVX512BW-NEXT: vpsraw $1, %zmm1, %zmm1
1405 ; AVX512BW-NEXT: vpaddw %zmm2, %zmm1, %zmm1
1406 ; AVX512BW-NEXT: vpmullw {{.*}}(%rip), %zmm1, %zmm1
1407 ; AVX512BW-NEXT: vpsubw %zmm1, %zmm0, %zmm0
1408 ; AVX512BW-NEXT: retq
1484 ; AVX512BW-LABEL: test_rem7_64i8:
1485 ; AVX512BW: # BB#0:
1486 ; AVX512BW-NEXT: vextracti32x4 $3, %zmm0, %xmm1
1487 ; AVX512BW-NEXT: vpextrb $1, %xmm1, %eax
1488 ; AVX512BW-NEXT: movsbl %al, %edx
1489 ; AVX512BW-NEXT: imull $-109, %edx, %eax
1490 ; AVX512BW-NEXT: shrl $8, %eax
1491 ; AVX512BW-NEXT: addb %dl, %al
1492 ; AVX512BW-NEXT: movl %eax, %ecx
1493 ; AVX512BW-NEXT: shrb $7, %cl
1494 ; AVX512BW-NEXT: sarb $2, %al
1495 ; AVX512BW-NEXT: addb %cl, %al
1496 ; AVX512BW-NEXT: movb $7, %dil
1497 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1498 ; AVX512BW-NEXT: mulb %dil
1499 ; AVX512BW-NEXT: subb %al, %dl
1500 ; AVX512BW-NEXT: movzbl %dl, %edx
1501 ; AVX512BW-NEXT: vpextrb $0, %xmm1, %eax
1502 ; AVX512BW-NEXT: movsbl %al, %esi
1503 ; AVX512BW-NEXT: imull $-109, %esi, %eax
1504 ; AVX512BW-NEXT: shrl $8, %eax
1505 ; AVX512BW-NEXT: addb %sil, %al
1506 ; AVX512BW-NEXT: movl %eax, %ecx
1507 ; AVX512BW-NEXT: shrb $7, %cl
1508 ; AVX512BW-NEXT: sarb $2, %al
1509 ; AVX512BW-NEXT: addb %cl, %al
1510 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1511 ; AVX512BW-NEXT: mulb %dil
1512 ; AVX512BW-NEXT: subb %al, %sil
1513 ; AVX512BW-NEXT: movzbl %sil, %eax
1514 ; AVX512BW-NEXT: vmovd %eax, %xmm2
1515 ; AVX512BW-NEXT: vpinsrb $1, %edx, %xmm2, %xmm2
1516 ; AVX512BW-NEXT: vpextrb $2, %xmm1, %eax
1517 ; AVX512BW-NEXT: movsbl %al, %ecx
1518 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1519 ; AVX512BW-NEXT: shrl $8, %eax
1520 ; AVX512BW-NEXT: addb %cl, %al
1521 ; AVX512BW-NEXT: movl %eax, %edx
1522 ; AVX512BW-NEXT: shrb $7, %dl
1523 ; AVX512BW-NEXT: sarb $2, %al
1524 ; AVX512BW-NEXT: addb %dl, %al
1525 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1526 ; AVX512BW-NEXT: mulb %dil
1527 ; AVX512BW-NEXT: subb %al, %cl
1528 ; AVX512BW-NEXT: movzbl %cl, %eax
1529 ; AVX512BW-NEXT: vpinsrb $2, %eax, %xmm2, %xmm2
1530 ; AVX512BW-NEXT: vpextrb $3, %xmm1, %eax
1531 ; AVX512BW-NEXT: movsbl %al, %ecx
1532 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1533 ; AVX512BW-NEXT: shrl $8, %eax
1534 ; AVX512BW-NEXT: addb %cl, %al
1535 ; AVX512BW-NEXT: movl %eax, %edx
1536 ; AVX512BW-NEXT: shrb $7, %dl
1537 ; AVX512BW-NEXT: sarb $2, %al
1538 ; AVX512BW-NEXT: addb %dl, %al
1539 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1540 ; AVX512BW-NEXT: mulb %dil
1541 ; AVX512BW-NEXT: subb %al, %cl
1542 ; AVX512BW-NEXT: movzbl %cl, %eax
1543 ; AVX512BW-NEXT: vpinsrb $3, %eax, %xmm2, %xmm2
1544 ; AVX512BW-NEXT: vpextrb $4, %xmm1, %eax
1545 ; AVX512BW-NEXT: movsbl %al, %ecx
1546 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1547 ; AVX512BW-NEXT: shrl $8, %eax
1548 ; AVX512BW-NEXT: addb %cl, %al
1549 ; AVX512BW-NEXT: movl %eax, %edx
1550 ; AVX512BW-NEXT: shrb $7, %dl
1551 ; AVX512BW-NEXT: sarb $2, %al
1552 ; AVX512BW-NEXT: addb %dl, %al
1553 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1554 ; AVX512BW-NEXT: mulb %dil
1555 ; AVX512BW-NEXT: subb %al, %cl
1556 ; AVX512BW-NEXT: movzbl %cl, %eax
1557 ; AVX512BW-NEXT: vpinsrb $4, %eax, %xmm2, %xmm2
1558 ; AVX512BW-NEXT: vpextrb $5, %xmm1, %eax
1559 ; AVX512BW-NEXT: movsbl %al, %ecx
1560 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1561 ; AVX512BW-NEXT: shrl $8, %eax
1562 ; AVX512BW-NEXT: addb %cl, %al
1563 ; AVX512BW-NEXT: movl %eax, %edx
1564 ; AVX512BW-NEXT: shrb $7, %dl
1565 ; AVX512BW-NEXT: sarb $2, %al
1566 ; AVX512BW-NEXT: addb %dl, %al
1567 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1568 ; AVX512BW-NEXT: mulb %dil
1569 ; AVX512BW-NEXT: subb %al, %cl
1570 ; AVX512BW-NEXT: movzbl %cl, %eax
1571 ; AVX512BW-NEXT: vpinsrb $5, %eax, %xmm2, %xmm2
1572 ; AVX512BW-NEXT: vpextrb $6, %xmm1, %eax
1573 ; AVX512BW-NEXT: movsbl %al, %ecx
1574 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1575 ; AVX512BW-NEXT: shrl $8, %eax
1576 ; AVX512BW-NEXT: addb %cl, %al
1577 ; AVX512BW-NEXT: movl %eax, %edx
1578 ; AVX512BW-NEXT: shrb $7, %dl
1579 ; AVX512BW-NEXT: sarb $2, %al
1580 ; AVX512BW-NEXT: addb %dl, %al
1581 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1582 ; AVX512BW-NEXT: mulb %dil
1583 ; AVX512BW-NEXT: subb %al, %cl
1584 ; AVX512BW-NEXT: movzbl %cl, %eax
1585 ; AVX512BW-NEXT: vpinsrb $6, %eax, %xmm2, %xmm2
1586 ; AVX512BW-NEXT: vpextrb $7, %xmm1, %eax
1587 ; AVX512BW-NEXT: movsbl %al, %ecx
1588 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1589 ; AVX512BW-NEXT: shrl $8, %eax
1590 ; AVX512BW-NEXT: addb %cl, %al
1591 ; AVX512BW-NEXT: movl %eax, %edx
1592 ; AVX512BW-NEXT: shrb $7, %dl
1593 ; AVX512BW-NEXT: sarb $2, %al
1594 ; AVX512BW-NEXT: addb %dl, %al
1595 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1596 ; AVX512BW-NEXT: mulb %dil
1597 ; AVX512BW-NEXT: subb %al, %cl
1598 ; AVX512BW-NEXT: movzbl %cl, %eax
1599 ; AVX512BW-NEXT: vpinsrb $7, %eax, %xmm2, %xmm2
1600 ; AVX512BW-NEXT: vpextrb $8, %xmm1, %eax
1601 ; AVX512BW-NEXT: movsbl %al, %ecx
1602 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1603 ; AVX512BW-NEXT: shrl $8, %eax
1604 ; AVX512BW-NEXT: addb %cl, %al
1605 ; AVX512BW-NEXT: movl %eax, %edx
1606 ; AVX512BW-NEXT: shrb $7, %dl
1607 ; AVX512BW-NEXT: sarb $2, %al
1608 ; AVX512BW-NEXT: addb %dl, %al
1609 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1610 ; AVX512BW-NEXT: mulb %dil
1611 ; AVX512BW-NEXT: subb %al, %cl
1612 ; AVX512BW-NEXT: movzbl %cl, %eax
1613 ; AVX512BW-NEXT: vpinsrb $8, %eax, %xmm2, %xmm2
1614 ; AVX512BW-NEXT: vpextrb $9, %xmm1, %eax
1615 ; AVX512BW-NEXT: movsbl %al, %ecx
1616 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1617 ; AVX512BW-NEXT: shrl $8, %eax
1618 ; AVX512BW-NEXT: addb %cl, %al
1619 ; AVX512BW-NEXT: movl %eax, %edx
1620 ; AVX512BW-NEXT: shrb $7, %dl
1621 ; AVX512BW-NEXT: sarb $2, %al
1622 ; AVX512BW-NEXT: addb %dl, %al
1623 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1624 ; AVX512BW-NEXT: mulb %dil
1625 ; AVX512BW-NEXT: subb %al, %cl
1626 ; AVX512BW-NEXT: movzbl %cl, %eax
1627 ; AVX512BW-NEXT: vpinsrb $9, %eax, %xmm2, %xmm2
1628 ; AVX512BW-NEXT: vpextrb $10, %xmm1, %eax
1629 ; AVX512BW-NEXT: movsbl %al, %ecx
1630 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1631 ; AVX512BW-NEXT: shrl $8, %eax
1632 ; AVX512BW-NEXT: addb %cl, %al
1633 ; AVX512BW-NEXT: movl %eax, %edx
1634 ; AVX512BW-NEXT: shrb $7, %dl
1635 ; AVX512BW-NEXT: sarb $2, %al
1636 ; AVX512BW-NEXT: addb %dl, %al
1637 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1638 ; AVX512BW-NEXT: mulb %dil
1639 ; AVX512BW-NEXT: subb %al, %cl
1640 ; AVX512BW-NEXT: movzbl %cl, %eax
1641 ; AVX512BW-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2
1642 ; AVX512BW-NEXT: vpextrb $11, %xmm1, %eax
1643 ; AVX512BW-NEXT: movsbl %al, %ecx
1644 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1645 ; AVX512BW-NEXT: shrl $8, %eax
1646 ; AVX512BW-NEXT: addb %cl, %al
1647 ; AVX512BW-NEXT: movl %eax, %edx
1648 ; AVX512BW-NEXT: shrb $7, %dl
1649 ; AVX512BW-NEXT: sarb $2, %al
1650 ; AVX512BW-NEXT: addb %dl, %al
1651 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1652 ; AVX512BW-NEXT: mulb %dil
1653 ; AVX512BW-NEXT: subb %al, %cl
1654 ; AVX512BW-NEXT: movzbl %cl, %eax
1655 ; AVX512BW-NEXT: vpinsrb $11, %eax, %xmm2, %xmm2
1656 ; AVX512BW-NEXT: vpextrb $12, %xmm1, %eax
1657 ; AVX512BW-NEXT: movsbl %al, %ecx
1658 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1659 ; AVX512BW-NEXT: shrl $8, %eax
1660 ; AVX512BW-NEXT: addb %cl, %al
1661 ; AVX512BW-NEXT: movl %eax, %edx
1662 ; AVX512BW-NEXT: shrb $7, %dl
1663 ; AVX512BW-NEXT: sarb $2, %al
1664 ; AVX512BW-NEXT: addb %dl, %al
1665 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1666 ; AVX512BW-NEXT: mulb %dil
1667 ; AVX512BW-NEXT: subb %al, %cl
1668 ; AVX512BW-NEXT: movzbl %cl, %eax
1669 ; AVX512BW-NEXT: vpinsrb $12, %eax, %xmm2, %xmm2
1670 ; AVX512BW-NEXT: vpextrb $13, %xmm1, %eax
1671 ; AVX512BW-NEXT: movsbl %al, %ecx
1672 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1673 ; AVX512BW-NEXT: shrl $8, %eax
1674 ; AVX512BW-NEXT: addb %cl, %al
1675 ; AVX512BW-NEXT: movl %eax, %edx
1676 ; AVX512BW-NEXT: shrb $7, %dl
1677 ; AVX512BW-NEXT: sarb $2, %al
1678 ; AVX512BW-NEXT: addb %dl, %al
1679 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1680 ; AVX512BW-NEXT: mulb %dil
1681 ; AVX512BW-NEXT: subb %al, %cl
1682 ; AVX512BW-NEXT: movzbl %cl, %eax
1683 ; AVX512BW-NEXT: vpinsrb $13, %eax, %xmm2, %xmm2
1684 ; AVX512BW-NEXT: vpextrb $14, %xmm1, %eax
1685 ; AVX512BW-NEXT: movsbl %al, %ecx
1686 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1687 ; AVX512BW-NEXT: shrl $8, %eax
1688 ; AVX512BW-NEXT: addb %cl, %al
1689 ; AVX512BW-NEXT: movl %eax, %edx
1690 ; AVX512BW-NEXT: shrb $7, %dl
1691 ; AVX512BW-NEXT: sarb $2, %al
1692 ; AVX512BW-NEXT: addb %dl, %al
1693 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1694 ; AVX512BW-NEXT: mulb %dil
1695 ; AVX512BW-NEXT: subb %al, %cl
1696 ; AVX512BW-NEXT: movzbl %cl, %eax
1697 ; AVX512BW-NEXT: vpinsrb $14, %eax, %xmm2, %xmm2
1698 ; AVX512BW-NEXT: vpextrb $15, %xmm1, %eax
1699 ; AVX512BW-NEXT: movsbl %al, %ecx
1700 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1701 ; AVX512BW-NEXT: shrl $8, %eax
1702 ; AVX512BW-NEXT: addb %cl, %al
1703 ; AVX512BW-NEXT: movl %eax, %edx
1704 ; AVX512BW-NEXT: shrb $7, %dl
1705 ; AVX512BW-NEXT: sarb $2, %al
1706 ; AVX512BW-NEXT: addb %dl, %al
1707 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1708 ; AVX512BW-NEXT: mulb %dil
1709 ; AVX512BW-NEXT: subb %al, %cl
1710 ; AVX512BW-NEXT: movzbl %cl, %eax
1711 ; AVX512BW-NEXT: vpinsrb $15, %eax, %xmm2, %xmm1
1712 ; AVX512BW-NEXT: vextracti32x4 $2, %zmm0, %xmm2
1713 ; AVX512BW-NEXT: vpextrb $1, %xmm2, %eax
1714 ; AVX512BW-NEXT: movsbl %al, %ecx
1715 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1716 ; AVX512BW-NEXT: shrl $8, %eax
1717 ; AVX512BW-NEXT: addb %cl, %al
1718 ; AVX512BW-NEXT: movl %eax, %edx
1719 ; AVX512BW-NEXT: shrb $7, %dl
1720 ; AVX512BW-NEXT: sarb $2, %al
1721 ; AVX512BW-NEXT: addb %dl, %al
1722 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1723 ; AVX512BW-NEXT: mulb %dil
1724 ; AVX512BW-NEXT: subb %al, %cl
1725 ; AVX512BW-NEXT: movzbl %cl, %esi
1726 ; AVX512BW-NEXT: vpextrb $0, %xmm2, %eax
1727 ; AVX512BW-NEXT: movsbl %al, %edx
1728 ; AVX512BW-NEXT: imull $-109, %edx, %eax
1729 ; AVX512BW-NEXT: shrl $8, %eax
1730 ; AVX512BW-NEXT: addb %dl, %al
1731 ; AVX512BW-NEXT: movl %eax, %ecx
1732 ; AVX512BW-NEXT: shrb $7, %cl
1733 ; AVX512BW-NEXT: sarb $2, %al
1734 ; AVX512BW-NEXT: addb %cl, %al
1735 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1736 ; AVX512BW-NEXT: mulb %dil
1737 ; AVX512BW-NEXT: subb %al, %dl
1738 ; AVX512BW-NEXT: movzbl %dl, %eax
1739 ; AVX512BW-NEXT: vmovd %eax, %xmm3
1740 ; AVX512BW-NEXT: vpinsrb $1, %esi, %xmm3, %xmm3
1741 ; AVX512BW-NEXT: vpextrb $2, %xmm2, %eax
1742 ; AVX512BW-NEXT: movsbl %al, %ecx
1743 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1744 ; AVX512BW-NEXT: shrl $8, %eax
1745 ; AVX512BW-NEXT: addb %cl, %al
1746 ; AVX512BW-NEXT: movl %eax, %edx
1747 ; AVX512BW-NEXT: shrb $7, %dl
1748 ; AVX512BW-NEXT: sarb $2, %al
1749 ; AVX512BW-NEXT: addb %dl, %al
1750 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1751 ; AVX512BW-NEXT: mulb %dil
1752 ; AVX512BW-NEXT: subb %al, %cl
1753 ; AVX512BW-NEXT: movzbl %cl, %eax
1754 ; AVX512BW-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3
1755 ; AVX512BW-NEXT: vpextrb $3, %xmm2, %eax
1756 ; AVX512BW-NEXT: movsbl %al, %ecx
1757 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1758 ; AVX512BW-NEXT: shrl $8, %eax
1759 ; AVX512BW-NEXT: addb %cl, %al
1760 ; AVX512BW-NEXT: movl %eax, %edx
1761 ; AVX512BW-NEXT: shrb $7, %dl
1762 ; AVX512BW-NEXT: sarb $2, %al
1763 ; AVX512BW-NEXT: addb %dl, %al
1764 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1765 ; AVX512BW-NEXT: mulb %dil
1766 ; AVX512BW-NEXT: subb %al, %cl
1767 ; AVX512BW-NEXT: movzbl %cl, %eax
1768 ; AVX512BW-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3
1769 ; AVX512BW-NEXT: vpextrb $4, %xmm2, %eax
1770 ; AVX512BW-NEXT: movsbl %al, %ecx
1771 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1772 ; AVX512BW-NEXT: shrl $8, %eax
1773 ; AVX512BW-NEXT: addb %cl, %al
1774 ; AVX512BW-NEXT: movl %eax, %edx
1775 ; AVX512BW-NEXT: shrb $7, %dl
1776 ; AVX512BW-NEXT: sarb $2, %al
1777 ; AVX512BW-NEXT: addb %dl, %al
1778 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1779 ; AVX512BW-NEXT: mulb %dil
1780 ; AVX512BW-NEXT: subb %al, %cl
1781 ; AVX512BW-NEXT: movzbl %cl, %eax
1782 ; AVX512BW-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3
1783 ; AVX512BW-NEXT: vpextrb $5, %xmm2, %eax
1784 ; AVX512BW-NEXT: movsbl %al, %ecx
1785 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1786 ; AVX512BW-NEXT: shrl $8, %eax
1787 ; AVX512BW-NEXT: addb %cl, %al
1788 ; AVX512BW-NEXT: movl %eax, %edx
1789 ; AVX512BW-NEXT: shrb $7, %dl
1790 ; AVX512BW-NEXT: sarb $2, %al
1791 ; AVX512BW-NEXT: addb %dl, %al
1792 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1793 ; AVX512BW-NEXT: mulb %dil
1794 ; AVX512BW-NEXT: subb %al, %cl
1795 ; AVX512BW-NEXT: movzbl %cl, %eax
1796 ; AVX512BW-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3
1797 ; AVX512BW-NEXT: vpextrb $6, %xmm2, %eax
1798 ; AVX512BW-NEXT: movsbl %al, %ecx
1799 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1800 ; AVX512BW-NEXT: shrl $8, %eax
1801 ; AVX512BW-NEXT: addb %cl, %al
1802 ; AVX512BW-NEXT: movl %eax, %edx
1803 ; AVX512BW-NEXT: shrb $7, %dl
1804 ; AVX512BW-NEXT: sarb $2, %al
1805 ; AVX512BW-NEXT: addb %dl, %al
1806 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1807 ; AVX512BW-NEXT: mulb %dil
1808 ; AVX512BW-NEXT: subb %al, %cl
1809 ; AVX512BW-NEXT: movzbl %cl, %eax
1810 ; AVX512BW-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3
1811 ; AVX512BW-NEXT: vpextrb $7, %xmm2, %eax
1812 ; AVX512BW-NEXT: movsbl %al, %ecx
1813 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1814 ; AVX512BW-NEXT: shrl $8, %eax
1815 ; AVX512BW-NEXT: addb %cl, %al
1816 ; AVX512BW-NEXT: movl %eax, %edx
1817 ; AVX512BW-NEXT: shrb $7, %dl
1818 ; AVX512BW-NEXT: sarb $2, %al
1819 ; AVX512BW-NEXT: addb %dl, %al
1820 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1821 ; AVX512BW-NEXT: mulb %dil
1822 ; AVX512BW-NEXT: subb %al, %cl
1823 ; AVX512BW-NEXT: movzbl %cl, %eax
1824 ; AVX512BW-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3
1825 ; AVX512BW-NEXT: vpextrb $8, %xmm2, %eax
1826 ; AVX512BW-NEXT: movsbl %al, %ecx
1827 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1828 ; AVX512BW-NEXT: shrl $8, %eax
1829 ; AVX512BW-NEXT: addb %cl, %al
1830 ; AVX512BW-NEXT: movl %eax, %edx
1831 ; AVX512BW-NEXT: shrb $7, %dl
1832 ; AVX512BW-NEXT: sarb $2, %al
1833 ; AVX512BW-NEXT: addb %dl, %al
1834 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1835 ; AVX512BW-NEXT: mulb %dil
1836 ; AVX512BW-NEXT: subb %al, %cl
1837 ; AVX512BW-NEXT: movzbl %cl, %eax
1838 ; AVX512BW-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3
1839 ; AVX512BW-NEXT: vpextrb $9, %xmm2, %eax
1840 ; AVX512BW-NEXT: movsbl %al, %ecx
1841 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1842 ; AVX512BW-NEXT: shrl $8, %eax
1843 ; AVX512BW-NEXT: addb %cl, %al
1844 ; AVX512BW-NEXT: movl %eax, %edx
1845 ; AVX512BW-NEXT: shrb $7, %dl
1846 ; AVX512BW-NEXT: sarb $2, %al
1847 ; AVX512BW-NEXT: addb %dl, %al
1848 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1849 ; AVX512BW-NEXT: mulb %dil
1850 ; AVX512BW-NEXT: subb %al, %cl
1851 ; AVX512BW-NEXT: movzbl %cl, %eax
1852 ; AVX512BW-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3
1853 ; AVX512BW-NEXT: vpextrb $10, %xmm2, %eax
1854 ; AVX512BW-NEXT: movsbl %al, %ecx
1855 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1856 ; AVX512BW-NEXT: shrl $8, %eax
1857 ; AVX512BW-NEXT: addb %cl, %al
1858 ; AVX512BW-NEXT: movl %eax, %edx
1859 ; AVX512BW-NEXT: shrb $7, %dl
1860 ; AVX512BW-NEXT: sarb $2, %al
1861 ; AVX512BW-NEXT: addb %dl, %al
1862 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1863 ; AVX512BW-NEXT: mulb %dil
1864 ; AVX512BW-NEXT: subb %al, %cl
1865 ; AVX512BW-NEXT: movzbl %cl, %eax
1866 ; AVX512BW-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3
1867 ; AVX512BW-NEXT: vpextrb $11, %xmm2, %eax
1868 ; AVX512BW-NEXT: movsbl %al, %ecx
1869 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1870 ; AVX512BW-NEXT: shrl $8, %eax
1871 ; AVX512BW-NEXT: addb %cl, %al
1872 ; AVX512BW-NEXT: movl %eax, %edx
1873 ; AVX512BW-NEXT: shrb $7, %dl
1874 ; AVX512BW-NEXT: sarb $2, %al
1875 ; AVX512BW-NEXT: addb %dl, %al
1876 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1877 ; AVX512BW-NEXT: mulb %dil
1878 ; AVX512BW-NEXT: subb %al, %cl
1879 ; AVX512BW-NEXT: movzbl %cl, %eax
1880 ; AVX512BW-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3
1881 ; AVX512BW-NEXT: vpextrb $12, %xmm2, %eax
1882 ; AVX512BW-NEXT: movsbl %al, %ecx
1883 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1884 ; AVX512BW-NEXT: shrl $8, %eax
1885 ; AVX512BW-NEXT: addb %cl, %al
1886 ; AVX512BW-NEXT: movl %eax, %edx
1887 ; AVX512BW-NEXT: shrb $7, %dl
1888 ; AVX512BW-NEXT: sarb $2, %al
1889 ; AVX512BW-NEXT: addb %dl, %al
1890 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1891 ; AVX512BW-NEXT: mulb %dil
1892 ; AVX512BW-NEXT: subb %al, %cl
1893 ; AVX512BW-NEXT: movzbl %cl, %eax
1894 ; AVX512BW-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3
1895 ; AVX512BW-NEXT: vpextrb $13, %xmm2, %eax
1896 ; AVX512BW-NEXT: movsbl %al, %ecx
1897 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1898 ; AVX512BW-NEXT: shrl $8, %eax
1899 ; AVX512BW-NEXT: addb %cl, %al
1900 ; AVX512BW-NEXT: movl %eax, %edx
1901 ; AVX512BW-NEXT: shrb $7, %dl
1902 ; AVX512BW-NEXT: sarb $2, %al
1903 ; AVX512BW-NEXT: addb %dl, %al
1904 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1905 ; AVX512BW-NEXT: mulb %dil
1906 ; AVX512BW-NEXT: subb %al, %cl
1907 ; AVX512BW-NEXT: movzbl %cl, %eax
1908 ; AVX512BW-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3
1909 ; AVX512BW-NEXT: vpextrb $14, %xmm2, %eax
1910 ; AVX512BW-NEXT: movsbl %al, %ecx
1911 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1912 ; AVX512BW-NEXT: shrl $8, %eax
1913 ; AVX512BW-NEXT: addb %cl, %al
1914 ; AVX512BW-NEXT: movl %eax, %edx
1915 ; AVX512BW-NEXT: shrb $7, %dl
1916 ; AVX512BW-NEXT: sarb $2, %al
1917 ; AVX512BW-NEXT: addb %dl, %al
1918 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1919 ; AVX512BW-NEXT: mulb %dil
1920 ; AVX512BW-NEXT: subb %al, %cl
1921 ; AVX512BW-NEXT: movzbl %cl, %eax
1922 ; AVX512BW-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3
1923 ; AVX512BW-NEXT: vpextrb $15, %xmm2, %eax
1924 ; AVX512BW-NEXT: movsbl %al, %ecx
1925 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1926 ; AVX512BW-NEXT: shrl $8, %eax
1927 ; AVX512BW-NEXT: addb %cl, %al
1928 ; AVX512BW-NEXT: movl %eax, %edx
1929 ; AVX512BW-NEXT: shrb $7, %dl
1930 ; AVX512BW-NEXT: sarb $2, %al
1931 ; AVX512BW-NEXT: addb %dl, %al
1932 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1933 ; AVX512BW-NEXT: mulb %dil
1934 ; AVX512BW-NEXT: subb %al, %cl
1935 ; AVX512BW-NEXT: movzbl %cl, %eax
1936 ; AVX512BW-NEXT: vpinsrb $15, %eax, %xmm3, %xmm2
1937 ; AVX512BW-NEXT: vinserti128 $1, %xmm1, %ymm2, %ymm1
1938 ; AVX512BW-NEXT: vextracti32x4 $1, %zmm0, %xmm2
1939 ; AVX512BW-NEXT: vpextrb $1, %xmm2, %eax
1940 ; AVX512BW-NEXT: movsbl %al, %ecx
1941 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1942 ; AVX512BW-NEXT: shrl $8, %eax
1943 ; AVX512BW-NEXT: addb %cl, %al
1944 ; AVX512BW-NEXT: movl %eax, %edx
1945 ; AVX512BW-NEXT: shrb $7, %dl
1946 ; AVX512BW-NEXT: sarb $2, %al
1947 ; AVX512BW-NEXT: addb %dl, %al
1948 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1949 ; AVX512BW-NEXT: mulb %dil
1950 ; AVX512BW-NEXT: subb %al, %cl
1951 ; AVX512BW-NEXT: movzbl %cl, %esi
1952 ; AVX512BW-NEXT: vpextrb $0, %xmm2, %eax
1953 ; AVX512BW-NEXT: movsbl %al, %edx
1954 ; AVX512BW-NEXT: imull $-109, %edx, %eax
1955 ; AVX512BW-NEXT: shrl $8, %eax
1956 ; AVX512BW-NEXT: addb %dl, %al
1957 ; AVX512BW-NEXT: movl %eax, %ecx
1958 ; AVX512BW-NEXT: shrb $7, %cl
1959 ; AVX512BW-NEXT: sarb $2, %al
1960 ; AVX512BW-NEXT: addb %cl, %al
1961 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1962 ; AVX512BW-NEXT: mulb %dil
1963 ; AVX512BW-NEXT: subb %al, %dl
1964 ; AVX512BW-NEXT: movzbl %dl, %eax
1965 ; AVX512BW-NEXT: vmovd %eax, %xmm3
1966 ; AVX512BW-NEXT: vpinsrb $1, %esi, %xmm3, %xmm3
1967 ; AVX512BW-NEXT: vpextrb $2, %xmm2, %eax
1968 ; AVX512BW-NEXT: movsbl %al, %ecx
1969 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1970 ; AVX512BW-NEXT: shrl $8, %eax
1971 ; AVX512BW-NEXT: addb %cl, %al
1972 ; AVX512BW-NEXT: movl %eax, %edx
1973 ; AVX512BW-NEXT: shrb $7, %dl
1974 ; AVX512BW-NEXT: sarb $2, %al
1975 ; AVX512BW-NEXT: addb %dl, %al
1976 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1977 ; AVX512BW-NEXT: mulb %dil
1978 ; AVX512BW-NEXT: subb %al, %cl
1979 ; AVX512BW-NEXT: movzbl %cl, %eax
1980 ; AVX512BW-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3
1981 ; AVX512BW-NEXT: vpextrb $3, %xmm2, %eax
1982 ; AVX512BW-NEXT: movsbl %al, %ecx
1983 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1984 ; AVX512BW-NEXT: shrl $8, %eax
1985 ; AVX512BW-NEXT: addb %cl, %al
1986 ; AVX512BW-NEXT: movl %eax, %edx
1987 ; AVX512BW-NEXT: shrb $7, %dl
1988 ; AVX512BW-NEXT: sarb $2, %al
1989 ; AVX512BW-NEXT: addb %dl, %al
1990 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
1991 ; AVX512BW-NEXT: mulb %dil
1992 ; AVX512BW-NEXT: subb %al, %cl
1993 ; AVX512BW-NEXT: movzbl %cl, %eax
1994 ; AVX512BW-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3
1995 ; AVX512BW-NEXT: vpextrb $4, %xmm2, %eax
1996 ; AVX512BW-NEXT: movsbl %al, %ecx
1997 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
1998 ; AVX512BW-NEXT: shrl $8, %eax
1999 ; AVX512BW-NEXT: addb %cl, %al
2000 ; AVX512BW-NEXT: movl %eax, %edx
2001 ; AVX512BW-NEXT: shrb $7, %dl
2002 ; AVX512BW-NEXT: sarb $2, %al
2003 ; AVX512BW-NEXT: addb %dl, %al
2004 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2005 ; AVX512BW-NEXT: mulb %dil
2006 ; AVX512BW-NEXT: subb %al, %cl
2007 ; AVX512BW-NEXT: movzbl %cl, %eax
2008 ; AVX512BW-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3
2009 ; AVX512BW-NEXT: vpextrb $5, %xmm2, %eax
2010 ; AVX512BW-NEXT: movsbl %al, %ecx
2011 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2012 ; AVX512BW-NEXT: shrl $8, %eax
2013 ; AVX512BW-NEXT: addb %cl, %al
2014 ; AVX512BW-NEXT: movl %eax, %edx
2015 ; AVX512BW-NEXT: shrb $7, %dl
2016 ; AVX512BW-NEXT: sarb $2, %al
2017 ; AVX512BW-NEXT: addb %dl, %al
2018 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2019 ; AVX512BW-NEXT: mulb %dil
2020 ; AVX512BW-NEXT: subb %al, %cl
2021 ; AVX512BW-NEXT: movzbl %cl, %eax
2022 ; AVX512BW-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3
2023 ; AVX512BW-NEXT: vpextrb $6, %xmm2, %eax
2024 ; AVX512BW-NEXT: movsbl %al, %ecx
2025 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2026 ; AVX512BW-NEXT: shrl $8, %eax
2027 ; AVX512BW-NEXT: addb %cl, %al
2028 ; AVX512BW-NEXT: movl %eax, %edx
2029 ; AVX512BW-NEXT: shrb $7, %dl
2030 ; AVX512BW-NEXT: sarb $2, %al
2031 ; AVX512BW-NEXT: addb %dl, %al
2032 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2033 ; AVX512BW-NEXT: mulb %dil
2034 ; AVX512BW-NEXT: subb %al, %cl
2035 ; AVX512BW-NEXT: movzbl %cl, %eax
2036 ; AVX512BW-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3
2037 ; AVX512BW-NEXT: vpextrb $7, %xmm2, %eax
2038 ; AVX512BW-NEXT: movsbl %al, %ecx
2039 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2040 ; AVX512BW-NEXT: shrl $8, %eax
2041 ; AVX512BW-NEXT: addb %cl, %al
2042 ; AVX512BW-NEXT: movl %eax, %edx
2043 ; AVX512BW-NEXT: shrb $7, %dl
2044 ; AVX512BW-NEXT: sarb $2, %al
2045 ; AVX512BW-NEXT: addb %dl, %al
2046 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2047 ; AVX512BW-NEXT: mulb %dil
2048 ; AVX512BW-NEXT: subb %al, %cl
2049 ; AVX512BW-NEXT: movzbl %cl, %eax
2050 ; AVX512BW-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3
2051 ; AVX512BW-NEXT: vpextrb $8, %xmm2, %eax
2052 ; AVX512BW-NEXT: movsbl %al, %ecx
2053 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2054 ; AVX512BW-NEXT: shrl $8, %eax
2055 ; AVX512BW-NEXT: addb %cl, %al
2056 ; AVX512BW-NEXT: movl %eax, %edx
2057 ; AVX512BW-NEXT: shrb $7, %dl
2058 ; AVX512BW-NEXT: sarb $2, %al
2059 ; AVX512BW-NEXT: addb %dl, %al
2060 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2061 ; AVX512BW-NEXT: mulb %dil
2062 ; AVX512BW-NEXT: subb %al, %cl
2063 ; AVX512BW-NEXT: movzbl %cl, %eax
2064 ; AVX512BW-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3
2065 ; AVX512BW-NEXT: vpextrb $9, %xmm2, %eax
2066 ; AVX512BW-NEXT: movsbl %al, %ecx
2067 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2068 ; AVX512BW-NEXT: shrl $8, %eax
2069 ; AVX512BW-NEXT: addb %cl, %al
2070 ; AVX512BW-NEXT: movl %eax, %edx
2071 ; AVX512BW-NEXT: shrb $7, %dl
2072 ; AVX512BW-NEXT: sarb $2, %al
2073 ; AVX512BW-NEXT: addb %dl, %al
2074 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2075 ; AVX512BW-NEXT: mulb %dil
2076 ; AVX512BW-NEXT: subb %al, %cl
2077 ; AVX512BW-NEXT: movzbl %cl, %eax
2078 ; AVX512BW-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3
2079 ; AVX512BW-NEXT: vpextrb $10, %xmm2, %eax
2080 ; AVX512BW-NEXT: movsbl %al, %ecx
2081 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2082 ; AVX512BW-NEXT: shrl $8, %eax
2083 ; AVX512BW-NEXT: addb %cl, %al
2084 ; AVX512BW-NEXT: movl %eax, %edx
2085 ; AVX512BW-NEXT: shrb $7, %dl
2086 ; AVX512BW-NEXT: sarb $2, %al
2087 ; AVX512BW-NEXT: addb %dl, %al
2088 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2089 ; AVX512BW-NEXT: mulb %dil
2090 ; AVX512BW-NEXT: subb %al, %cl
2091 ; AVX512BW-NEXT: movzbl %cl, %eax
2092 ; AVX512BW-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3
2093 ; AVX512BW-NEXT: vpextrb $11, %xmm2, %eax
2094 ; AVX512BW-NEXT: movsbl %al, %ecx
2095 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2096 ; AVX512BW-NEXT: shrl $8, %eax
2097 ; AVX512BW-NEXT: addb %cl, %al
2098 ; AVX512BW-NEXT: movl %eax, %edx
2099 ; AVX512BW-NEXT: shrb $7, %dl
2100 ; AVX512BW-NEXT: sarb $2, %al
2101 ; AVX512BW-NEXT: addb %dl, %al
2102 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2103 ; AVX512BW-NEXT: mulb %dil
2104 ; AVX512BW-NEXT: subb %al, %cl
2105 ; AVX512BW-NEXT: movzbl %cl, %eax
2106 ; AVX512BW-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3
2107 ; AVX512BW-NEXT: vpextrb $12, %xmm2, %eax
2108 ; AVX512BW-NEXT: movsbl %al, %ecx
2109 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2110 ; AVX512BW-NEXT: shrl $8, %eax
2111 ; AVX512BW-NEXT: addb %cl, %al
2112 ; AVX512BW-NEXT: movl %eax, %edx
2113 ; AVX512BW-NEXT: shrb $7, %dl
2114 ; AVX512BW-NEXT: sarb $2, %al
2115 ; AVX512BW-NEXT: addb %dl, %al
2116 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2117 ; AVX512BW-NEXT: mulb %dil
2118 ; AVX512BW-NEXT: subb %al, %cl
2119 ; AVX512BW-NEXT: movzbl %cl, %eax
2120 ; AVX512BW-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3
2121 ; AVX512BW-NEXT: vpextrb $13, %xmm2, %eax
2122 ; AVX512BW-NEXT: movsbl %al, %ecx
2123 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2124 ; AVX512BW-NEXT: shrl $8, %eax
2125 ; AVX512BW-NEXT: addb %cl, %al
2126 ; AVX512BW-NEXT: movl %eax, %edx
2127 ; AVX512BW-NEXT: shrb $7, %dl
2128 ; AVX512BW-NEXT: sarb $2, %al
2129 ; AVX512BW-NEXT: addb %dl, %al
2130 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2131 ; AVX512BW-NEXT: mulb %dil
2132 ; AVX512BW-NEXT: subb %al, %cl
2133 ; AVX512BW-NEXT: movzbl %cl, %eax
2134 ; AVX512BW-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3
2135 ; AVX512BW-NEXT: vpextrb $14, %xmm2, %eax
2136 ; AVX512BW-NEXT: movsbl %al, %ecx
2137 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2138 ; AVX512BW-NEXT: shrl $8, %eax
2139 ; AVX512BW-NEXT: addb %cl, %al
2140 ; AVX512BW-NEXT: movl %eax, %edx
2141 ; AVX512BW-NEXT: shrb $7, %dl
2142 ; AVX512BW-NEXT: sarb $2, %al
2143 ; AVX512BW-NEXT: addb %dl, %al
2144 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2145 ; AVX512BW-NEXT: mulb %dil
2146 ; AVX512BW-NEXT: subb %al, %cl
2147 ; AVX512BW-NEXT: movzbl %cl, %eax
2148 ; AVX512BW-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3
2149 ; AVX512BW-NEXT: vpextrb $15, %xmm2, %eax
2150 ; AVX512BW-NEXT: movsbl %al, %ecx
2151 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2152 ; AVX512BW-NEXT: shrl $8, %eax
2153 ; AVX512BW-NEXT: addb %cl, %al
2154 ; AVX512BW-NEXT: movl %eax, %edx
2155 ; AVX512BW-NEXT: shrb $7, %dl
2156 ; AVX512BW-NEXT: sarb $2, %al
2157 ; AVX512BW-NEXT: addb %dl, %al
2158 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2159 ; AVX512BW-NEXT: mulb %dil
2160 ; AVX512BW-NEXT: subb %al, %cl
2161 ; AVX512BW-NEXT: movzbl %cl, %eax
2162 ; AVX512BW-NEXT: vpinsrb $15, %eax, %xmm3, %xmm2
2163 ; AVX512BW-NEXT: vpextrb $1, %xmm0, %eax
2164 ; AVX512BW-NEXT: movsbl %al, %ecx
2165 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2166 ; AVX512BW-NEXT: shrl $8, %eax
2167 ; AVX512BW-NEXT: addb %cl, %al
2168 ; AVX512BW-NEXT: movl %eax, %edx
2169 ; AVX512BW-NEXT: shrb $7, %dl
2170 ; AVX512BW-NEXT: sarb $2, %al
2171 ; AVX512BW-NEXT: addb %dl, %al
2172 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2173 ; AVX512BW-NEXT: mulb %dil
2174 ; AVX512BW-NEXT: subb %al, %cl
2175 ; AVX512BW-NEXT: movzbl %cl, %esi
2176 ; AVX512BW-NEXT: vpextrb $0, %xmm0, %eax
2177 ; AVX512BW-NEXT: movsbl %al, %edx
2178 ; AVX512BW-NEXT: imull $-109, %edx, %eax
2179 ; AVX512BW-NEXT: shrl $8, %eax
2180 ; AVX512BW-NEXT: addb %dl, %al
2181 ; AVX512BW-NEXT: movl %eax, %ecx
2182 ; AVX512BW-NEXT: shrb $7, %cl
2183 ; AVX512BW-NEXT: sarb $2, %al
2184 ; AVX512BW-NEXT: addb %cl, %al
2185 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2186 ; AVX512BW-NEXT: mulb %dil
2187 ; AVX512BW-NEXT: subb %al, %dl
2188 ; AVX512BW-NEXT: movzbl %dl, %eax
2189 ; AVX512BW-NEXT: vmovd %eax, %xmm3
2190 ; AVX512BW-NEXT: vpinsrb $1, %esi, %xmm3, %xmm3
2191 ; AVX512BW-NEXT: vpextrb $2, %xmm0, %eax
2192 ; AVX512BW-NEXT: movsbl %al, %ecx
2193 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2194 ; AVX512BW-NEXT: shrl $8, %eax
2195 ; AVX512BW-NEXT: addb %cl, %al
2196 ; AVX512BW-NEXT: movl %eax, %edx
2197 ; AVX512BW-NEXT: shrb $7, %dl
2198 ; AVX512BW-NEXT: sarb $2, %al
2199 ; AVX512BW-NEXT: addb %dl, %al
2200 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2201 ; AVX512BW-NEXT: mulb %dil
2202 ; AVX512BW-NEXT: subb %al, %cl
2203 ; AVX512BW-NEXT: movzbl %cl, %eax
2204 ; AVX512BW-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3
2205 ; AVX512BW-NEXT: vpextrb $3, %xmm0, %eax
2206 ; AVX512BW-NEXT: movsbl %al, %ecx
2207 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2208 ; AVX512BW-NEXT: shrl $8, %eax
2209 ; AVX512BW-NEXT: addb %cl, %al
2210 ; AVX512BW-NEXT: movl %eax, %edx
2211 ; AVX512BW-NEXT: shrb $7, %dl
2212 ; AVX512BW-NEXT: sarb $2, %al
2213 ; AVX512BW-NEXT: addb %dl, %al
2214 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2215 ; AVX512BW-NEXT: mulb %dil
2216 ; AVX512BW-NEXT: subb %al, %cl
2217 ; AVX512BW-NEXT: movzbl %cl, %eax
2218 ; AVX512BW-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3
2219 ; AVX512BW-NEXT: vpextrb $4, %xmm0, %eax
2220 ; AVX512BW-NEXT: movsbl %al, %ecx
2221 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2222 ; AVX512BW-NEXT: shrl $8, %eax
2223 ; AVX512BW-NEXT: addb %cl, %al
2224 ; AVX512BW-NEXT: movl %eax, %edx
2225 ; AVX512BW-NEXT: shrb $7, %dl
2226 ; AVX512BW-NEXT: sarb $2, %al
2227 ; AVX512BW-NEXT: addb %dl, %al
2228 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2229 ; AVX512BW-NEXT: mulb %dil
2230 ; AVX512BW-NEXT: subb %al, %cl
2231 ; AVX512BW-NEXT: movzbl %cl, %eax
2232 ; AVX512BW-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3
2233 ; AVX512BW-NEXT: vpextrb $5, %xmm0, %eax
2234 ; AVX512BW-NEXT: movsbl %al, %ecx
2235 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2236 ; AVX512BW-NEXT: shrl $8, %eax
2237 ; AVX512BW-NEXT: addb %cl, %al
2238 ; AVX512BW-NEXT: movl %eax, %edx
2239 ; AVX512BW-NEXT: shrb $7, %dl
2240 ; AVX512BW-NEXT: sarb $2, %al
2241 ; AVX512BW-NEXT: addb %dl, %al
2242 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2243 ; AVX512BW-NEXT: mulb %dil
2244 ; AVX512BW-NEXT: subb %al, %cl
2245 ; AVX512BW-NEXT: movzbl %cl, %eax
2246 ; AVX512BW-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3
2247 ; AVX512BW-NEXT: vpextrb $6, %xmm0, %eax
2248 ; AVX512BW-NEXT: movsbl %al, %ecx
2249 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2250 ; AVX512BW-NEXT: shrl $8, %eax
2251 ; AVX512BW-NEXT: addb %cl, %al
2252 ; AVX512BW-NEXT: movl %eax, %edx
2253 ; AVX512BW-NEXT: shrb $7, %dl
2254 ; AVX512BW-NEXT: sarb $2, %al
2255 ; AVX512BW-NEXT: addb %dl, %al
2256 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2257 ; AVX512BW-NEXT: mulb %dil
2258 ; AVX512BW-NEXT: subb %al, %cl
2259 ; AVX512BW-NEXT: movzbl %cl, %eax
2260 ; AVX512BW-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3
2261 ; AVX512BW-NEXT: vpextrb $7, %xmm0, %eax
2262 ; AVX512BW-NEXT: movsbl %al, %ecx
2263 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2264 ; AVX512BW-NEXT: shrl $8, %eax
2265 ; AVX512BW-NEXT: addb %cl, %al
2266 ; AVX512BW-NEXT: movl %eax, %edx
2267 ; AVX512BW-NEXT: shrb $7, %dl
2268 ; AVX512BW-NEXT: sarb $2, %al
2269 ; AVX512BW-NEXT: addb %dl, %al
2270 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2271 ; AVX512BW-NEXT: mulb %dil
2272 ; AVX512BW-NEXT: subb %al, %cl
2273 ; AVX512BW-NEXT: movzbl %cl, %eax
2274 ; AVX512BW-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3
2275 ; AVX512BW-NEXT: vpextrb $8, %xmm0, %eax
2276 ; AVX512BW-NEXT: movsbl %al, %ecx
2277 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2278 ; AVX512BW-NEXT: shrl $8, %eax
2279 ; AVX512BW-NEXT: addb %cl, %al
2280 ; AVX512BW-NEXT: movl %eax, %edx
2281 ; AVX512BW-NEXT: shrb $7, %dl
2282 ; AVX512BW-NEXT: sarb $2, %al
2283 ; AVX512BW-NEXT: addb %dl, %al
2284 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2285 ; AVX512BW-NEXT: mulb %dil
2286 ; AVX512BW-NEXT: subb %al, %cl
2287 ; AVX512BW-NEXT: movzbl %cl, %eax
2288 ; AVX512BW-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3
2289 ; AVX512BW-NEXT: vpextrb $9, %xmm0, %eax
2290 ; AVX512BW-NEXT: movsbl %al, %ecx
2291 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2292 ; AVX512BW-NEXT: shrl $8, %eax
2293 ; AVX512BW-NEXT: addb %cl, %al
2294 ; AVX512BW-NEXT: movl %eax, %edx
2295 ; AVX512BW-NEXT: shrb $7, %dl
2296 ; AVX512BW-NEXT: sarb $2, %al
2297 ; AVX512BW-NEXT: addb %dl, %al
2298 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2299 ; AVX512BW-NEXT: mulb %dil
2300 ; AVX512BW-NEXT: subb %al, %cl
2301 ; AVX512BW-NEXT: movzbl %cl, %eax
2302 ; AVX512BW-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3
2303 ; AVX512BW-NEXT: vpextrb $10, %xmm0, %eax
2304 ; AVX512BW-NEXT: movsbl %al, %ecx
2305 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2306 ; AVX512BW-NEXT: shrl $8, %eax
2307 ; AVX512BW-NEXT: addb %cl, %al
2308 ; AVX512BW-NEXT: movl %eax, %edx
2309 ; AVX512BW-NEXT: shrb $7, %dl
2310 ; AVX512BW-NEXT: sarb $2, %al
2311 ; AVX512BW-NEXT: addb %dl, %al
2312 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2313 ; AVX512BW-NEXT: mulb %dil
2314 ; AVX512BW-NEXT: subb %al, %cl
2315 ; AVX512BW-NEXT: movzbl %cl, %eax
2316 ; AVX512BW-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3
2317 ; AVX512BW-NEXT: vpextrb $11, %xmm0, %eax
2318 ; AVX512BW-NEXT: movsbl %al, %ecx
2319 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2320 ; AVX512BW-NEXT: shrl $8, %eax
2321 ; AVX512BW-NEXT: addb %cl, %al
2322 ; AVX512BW-NEXT: movl %eax, %edx
2323 ; AVX512BW-NEXT: shrb $7, %dl
2324 ; AVX512BW-NEXT: sarb $2, %al
2325 ; AVX512BW-NEXT: addb %dl, %al
2326 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2327 ; AVX512BW-NEXT: mulb %dil
2328 ; AVX512BW-NEXT: subb %al, %cl
2329 ; AVX512BW-NEXT: movzbl %cl, %eax
2330 ; AVX512BW-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3
2331 ; AVX512BW-NEXT: vpextrb $12, %xmm0, %eax
2332 ; AVX512BW-NEXT: movsbl %al, %ecx
2333 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2334 ; AVX512BW-NEXT: shrl $8, %eax
2335 ; AVX512BW-NEXT: addb %cl, %al
2336 ; AVX512BW-NEXT: movl %eax, %edx
2337 ; AVX512BW-NEXT: shrb $7, %dl
2338 ; AVX512BW-NEXT: sarb $2, %al
2339 ; AVX512BW-NEXT: addb %dl, %al
2340 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2341 ; AVX512BW-NEXT: mulb %dil
2342 ; AVX512BW-NEXT: subb %al, %cl
2343 ; AVX512BW-NEXT: movzbl %cl, %eax
2344 ; AVX512BW-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3
2345 ; AVX512BW-NEXT: vpextrb $13, %xmm0, %eax
2346 ; AVX512BW-NEXT: movsbl %al, %ecx
2347 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2348 ; AVX512BW-NEXT: shrl $8, %eax
2349 ; AVX512BW-NEXT: addb %cl, %al
2350 ; AVX512BW-NEXT: movl %eax, %edx
2351 ; AVX512BW-NEXT: shrb $7, %dl
2352 ; AVX512BW-NEXT: sarb $2, %al
2353 ; AVX512BW-NEXT: addb %dl, %al
2354 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2355 ; AVX512BW-NEXT: mulb %dil
2356 ; AVX512BW-NEXT: subb %al, %cl
2357 ; AVX512BW-NEXT: movzbl %cl, %eax
2358 ; AVX512BW-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3
2359 ; AVX512BW-NEXT: vpextrb $14, %xmm0, %eax
2360 ; AVX512BW-NEXT: movsbl %al, %ecx
2361 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2362 ; AVX512BW-NEXT: shrl $8, %eax
2363 ; AVX512BW-NEXT: addb %cl, %al
2364 ; AVX512BW-NEXT: movl %eax, %edx
2365 ; AVX512BW-NEXT: shrb $7, %dl
2366 ; AVX512BW-NEXT: sarb $2, %al
2367 ; AVX512BW-NEXT: addb %dl, %al
2368 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2369 ; AVX512BW-NEXT: mulb %dil
2370 ; AVX512BW-NEXT: subb %al, %cl
2371 ; AVX512BW-NEXT: movzbl %cl, %eax
2372 ; AVX512BW-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3
2373 ; AVX512BW-NEXT: vpextrb $15, %xmm0, %eax
2374 ; AVX512BW-NEXT: movsbl %al, %ecx
2375 ; AVX512BW-NEXT: imull $-109, %ecx, %eax
2376 ; AVX512BW-NEXT: shrl $8, %eax
2377 ; AVX512BW-NEXT: addb %cl, %al
2378 ; AVX512BW-NEXT: movl %eax, %edx
2379 ; AVX512BW-NEXT: shrb $7, %dl
2380 ; AVX512BW-NEXT: sarb $2, %al
2381 ; AVX512BW-NEXT: addb %dl, %al
2382 ; AVX512BW-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
2383 ; AVX512BW-NEXT: mulb %dil
2384 ; AVX512BW-NEXT: subb %al, %cl
2385 ; AVX512BW-NEXT: movzbl %cl, %eax
2386 ; AVX512BW-NEXT: vpinsrb $15, %eax, %xmm3, %xmm0
2387 ; AVX512BW-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0
2388 ; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
2389 ; AVX512BW-NEXT: retq