llvm.org GIT mirror llvm / e80993a
[X86][SSE] Merged UNPCK shuffle decode comments. NFC. Now that we can recognise different vector sizes - will make future AVX512 additions easier. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253258 91177308-0d34-0410-b5e6-96231b3b80d8 Simon Pilgrim 4 years ago
1 changed file(s) with 105 addition(s) and 223 deletion(s). Raw diff Collapse all Expand all
2121 using namespace llvm;
2222
2323 static unsigned getVectorRegSize(unsigned RegNo) {
24
2524 if (X86::ZMM0 <= RegNo && RegNo <= X86::ZMM31)
2625 return 512;
2726 if (X86::YMM0 <= RegNo && RegNo <= X86::YMM31)
2827 return 256;
2928 if (X86::XMM0 <= RegNo && RegNo <= X86::XMM31)
3029 return 128;
30 if (X86::MM0 <= RegNo && RegNo <= X86::MM7)
31 return 64;
3132
3233 llvm_unreachable("Unknown vector reg!");
3334 return 0;
203204 Src1Name = getRegName(MI->getOperand(1).getReg());
204205 DestName = getRegName(MI->getOperand(0).getReg());
205206 break;
207
206208 case X86::VBLENDPDYrri:
207209 Src2Name = getRegName(MI->getOperand(2).getReg());
208210 // FALL THROUGH.
228230 Src1Name = getRegName(MI->getOperand(1).getReg());
229231 DestName = getRegName(MI->getOperand(0).getReg());
230232 break;
233
231234 case X86::VBLENDPSYrri:
232235 Src2Name = getRegName(MI->getOperand(2).getReg());
233236 // FALL THROUGH.
253256 Src1Name = getRegName(MI->getOperand(1).getReg());
254257 DestName = getRegName(MI->getOperand(0).getReg());
255258 break;
259
256260 case X86::VPBLENDWYrri:
257261 Src2Name = getRegName(MI->getOperand(2).getReg());
258262 // FALL THROUGH.
317321 DestName = getRegName(MI->getOperand(0).getReg());
318322 DecodeMOVHLPSMask(2, ShuffleMask);
319323 break;
324
320325 CASE_MOVDUP(MOVSLDUP, r)
321326 Src1Name = getRegName(MI->getOperand(MI->getNumOperands() - 1).getReg());
322327 // FALL THROUGH.
326331 DecodeMOVSLDUPMask(VT, ShuffleMask);
327332 break;
328333 }
334
329335 CASE_MOVDUP(MOVSHDUP, r)
330336 Src1Name = getRegName(MI->getOperand(MI->getNumOperands() - 1).getReg());
331337 // FALL THROUGH.
335341 DecodeMOVSHDUPMask(VT, ShuffleMask);
336342 break;
337343 }
344
338345 case X86::VMOVDDUPYrr:
339346 Src1Name = getRegName(MI->getOperand(1).getReg());
340347 // FALL THROUGH.
404411 MI->getOperand(MI->getNumOperands() - 1).getImm(),
405412 ShuffleMask);
406413 break;
414
407415 case X86::VPALIGNR256rr:
408416 Src1Name = getRegName(MI->getOperand(2).getReg());
409417 // FALL THROUGH.
428436 MI->getOperand(MI->getNumOperands() - 1).getImm(),
429437 ShuffleMask);
430438 break;
439
431440 case X86::VPSHUFDYri:
432441 Src1Name = getRegName(MI->getOperand(1).getReg());
433442 // FALL THROUGH.
451460 MI->getOperand(MI->getNumOperands() - 1).getImm(),
452461 ShuffleMask);
453462 break;
463
454464 case X86::VPSHUFHWYri:
455465 Src1Name = getRegName(MI->getOperand(1).getReg());
456466 // FALL THROUGH.
461471 MI->getOperand(MI->getNumOperands() - 1).getImm(),
462472 ShuffleMask);
463473 break;
474
464475 case X86::PSHUFLWri:
465476 case X86::VPSHUFLWri:
466477 Src1Name = getRegName(MI->getOperand(1).getReg());
473484 MI->getOperand(MI->getNumOperands() - 1).getImm(),
474485 ShuffleMask);
475486 break;
487
476488 case X86::VPSHUFLWYri:
477489 Src1Name = getRegName(MI->getOperand(1).getReg());
478490 // FALL THROUGH.
504516 break;
505517
506518 case X86::MMX_PUNPCKHBWirr:
507 Src2Name = getRegName(MI->getOperand(2).getReg());
508 case X86::MMX_PUNPCKHBWirm:
509 Src1Name = getRegName(MI->getOperand(1).getReg());
510 DestName = getRegName(MI->getOperand(0).getReg());
511 DecodeUNPCKHMask(MVT::v8i8, ShuffleMask);
512 break;
513 case X86::MMX_PUNPCKHWDirr:
514 Src2Name = getRegName(MI->getOperand(2).getReg());
515 case X86::MMX_PUNPCKHWDirm:
516 Src1Name = getRegName(MI->getOperand(1).getReg());
517 DestName = getRegName(MI->getOperand(0).getReg());
518 DecodeUNPCKHMask(MVT::v4i16, ShuffleMask);
519 break;
520 case X86::MMX_PUNPCKHDQirr:
521 Src2Name = getRegName(MI->getOperand(2).getReg());
522 case X86::MMX_PUNPCKHDQirm:
523 Src1Name = getRegName(MI->getOperand(1).getReg());
524 DestName = getRegName(MI->getOperand(0).getReg());
525 DecodeUNPCKHMask(MVT::v2i32, ShuffleMask);
526 break;
527519 case X86::PUNPCKHBWrr:
528520 case X86::VPUNPCKHBWrr:
529 Src2Name = getRegName(MI->getOperand(2).getReg());
530 // FALL THROUGH.
521 case X86::VPUNPCKHBWYrr:
522 Src2Name = getRegName(MI->getOperand(2).getReg());
523 // FALL THROUGH.
524 case X86::MMX_PUNPCKHBWirm:
531525 case X86::PUNPCKHBWrm:
532526 case X86::VPUNPCKHBWrm:
533 Src1Name = getRegName(MI->getOperand(1).getReg());
534 DestName = getRegName(MI->getOperand(0).getReg());
535 DecodeUNPCKHMask(MVT::v16i8, ShuffleMask);
536 break;
537 case X86::VPUNPCKHBWYrr:
538 Src2Name = getRegName(MI->getOperand(2).getReg());
539 // FALL THROUGH.
540527 case X86::VPUNPCKHBWYrm:
541528 Src1Name = getRegName(MI->getOperand(1).getReg());
542529 DestName = getRegName(MI->getOperand(0).getReg());
543 DecodeUNPCKHMask(MVT::v32i8, ShuffleMask);
544 break;
530 DecodeUNPCKHMask(getRegOperandVectorVT(MI, MVT::i8, 0), ShuffleMask);
531 break;
532
533 case X86::MMX_PUNPCKHWDirr:
545534 case X86::PUNPCKHWDrr:
546535 case X86::VPUNPCKHWDrr:
547 Src2Name = getRegName(MI->getOperand(2).getReg());
548 // FALL THROUGH.
536 case X86::VPUNPCKHWDYrr:
537 Src2Name = getRegName(MI->getOperand(2).getReg());
538 // FALL THROUGH.
539 case X86::MMX_PUNPCKHWDirm:
549540 case X86::PUNPCKHWDrm:
550541 case X86::VPUNPCKHWDrm:
551 Src1Name = getRegName(MI->getOperand(1).getReg());
552 DestName = getRegName(MI->getOperand(0).getReg());
553 DecodeUNPCKHMask(MVT::v8i16, ShuffleMask);
554 break;
555 case X86::VPUNPCKHWDYrr:
556 Src2Name = getRegName(MI->getOperand(2).getReg());
557 // FALL THROUGH.
558542 case X86::VPUNPCKHWDYrm:
559543 Src1Name = getRegName(MI->getOperand(1).getReg());
560544 DestName = getRegName(MI->getOperand(0).getReg());
561 DecodeUNPCKHMask(MVT::v16i16, ShuffleMask);
562 break;
545 DecodeUNPCKHMask(getRegOperandVectorVT(MI, MVT::i16, 0), ShuffleMask);
546 break;
547
548 case X86::MMX_PUNPCKHDQirr:
563549 case X86::PUNPCKHDQrr:
564550 case X86::VPUNPCKHDQrr:
565 Src2Name = getRegName(MI->getOperand(2).getReg());
566 // FALL THROUGH.
551 case X86::VPUNPCKHDQYrr:
552 case X86::VPUNPCKHDQZrr:
553 Src2Name = getRegName(MI->getOperand(2).getReg());
554 // FALL THROUGH.
555 case X86::MMX_PUNPCKHDQirm:
567556 case X86::PUNPCKHDQrm:
568557 case X86::VPUNPCKHDQrm:
569 Src1Name = getRegName(MI->getOperand(1).getReg());
570 DestName = getRegName(MI->getOperand(0).getReg());
571 DecodeUNPCKHMask(MVT::v4i32, ShuffleMask);
572 break;
573 case X86::VPUNPCKHDQYrr:
574 Src2Name = getRegName(MI->getOperand(2).getReg());
575 // FALL THROUGH.
576558 case X86::VPUNPCKHDQYrm:
577 Src1Name = getRegName(MI->getOperand(1).getReg());
578 DestName = getRegName(MI->getOperand(0).getReg());
579 DecodeUNPCKHMask(MVT::v8i32, ShuffleMask);
580 break;
581 case X86::VPUNPCKHDQZrr:
582 Src2Name = getRegName(MI->getOperand(2).getReg());
583 // FALL THROUGH.
584559 case X86::VPUNPCKHDQZrm:
585560 Src1Name = getRegName(MI->getOperand(1).getReg());
586561 DestName = getRegName(MI->getOperand(0).getReg());
587 DecodeUNPCKHMask(MVT::v16i32, ShuffleMask);
588 break;
562 DecodeUNPCKHMask(getRegOperandVectorVT(MI, MVT::i32, 0), ShuffleMask);
563 break;
564
589565 case X86::PUNPCKHQDQrr:
590566 case X86::VPUNPCKHQDQrr:
567 case X86::VPUNPCKHQDQYrr:
568 case X86::VPUNPCKHQDQZrr:
591569 Src2Name = getRegName(MI->getOperand(2).getReg());
592570 // FALL THROUGH.
593571 case X86::PUNPCKHQDQrm:
594572 case X86::VPUNPCKHQDQrm:
595 Src1Name = getRegName(MI->getOperand(1).getReg());
596 DestName = getRegName(MI->getOperand(0).getReg());
597 DecodeUNPCKHMask(MVT::v2i64, ShuffleMask);
598 break;
599 case X86::VPUNPCKHQDQYrr:
600 Src2Name = getRegName(MI->getOperand(2).getReg());
601 // FALL THROUGH.
602573 case X86::VPUNPCKHQDQYrm:
603 Src1Name = getRegName(MI->getOperand(1).getReg());
604 DestName = getRegName(MI->getOperand(0).getReg());
605 DecodeUNPCKHMask(MVT::v4i64, ShuffleMask);
606 break;
607 case X86::VPUNPCKHQDQZrr:
608 Src2Name = getRegName(MI->getOperand(2).getReg());
609 // FALL THROUGH.
610574 case X86::VPUNPCKHQDQZrm:
611575 Src1Name = getRegName(MI->getOperand(1).getReg());
612576 DestName = getRegName(MI->getOperand(0).getReg());
613 DecodeUNPCKHMask(MVT::v8i64, ShuffleMask);
577 DecodeUNPCKHMask(getRegOperandVectorVT(MI, MVT::i64, 0), ShuffleMask);
614578 break;
615579
616580 case X86::MMX_PUNPCKLBWirr:
617 Src2Name = getRegName(MI->getOperand(2).getReg());
618 case X86::MMX_PUNPCKLBWirm:
619 Src1Name = getRegName(MI->getOperand(1).getReg());
620 DestName = getRegName(MI->getOperand(0).getReg());
621 DecodeUNPCKLMask(MVT::v8i8, ShuffleMask);
622 break;
623 case X86::MMX_PUNPCKLWDirr:
624 Src2Name = getRegName(MI->getOperand(2).getReg());
625 case X86::MMX_PUNPCKLWDirm:
626 Src1Name = getRegName(MI->getOperand(1).getReg());
627 DestName = getRegName(MI->getOperand(0).getReg());
628 DecodeUNPCKLMask(MVT::v4i16, ShuffleMask);
629 break;
630 case X86::MMX_PUNPCKLDQirr:
631 Src2Name = getRegName(MI->getOperand(2).getReg());
632 case X86::MMX_PUNPCKLDQirm:
633 Src1Name = getRegName(MI->getOperand(1).getReg());
634 DestName = getRegName(MI->getOperand(0).getReg());
635 DecodeUNPCKLMask(MVT::v2i32, ShuffleMask);
636 break;
637581 case X86::PUNPCKLBWrr:
638582 case X86::VPUNPCKLBWrr:
639 Src2Name = getRegName(MI->getOperand(2).getReg());
640 // FALL THROUGH.
583 case X86::VPUNPCKLBWYrr:
584 Src2Name = getRegName(MI->getOperand(2).getReg());
585 // FALL THROUGH.
586 case X86::MMX_PUNPCKLBWirm:
641587 case X86::PUNPCKLBWrm:
642588 case X86::VPUNPCKLBWrm:
643 Src1Name = getRegName(MI->getOperand(1).getReg());
644 DestName = getRegName(MI->getOperand(0).getReg());
645 DecodeUNPCKLMask(MVT::v16i8, ShuffleMask);
646 break;
647 case X86::VPUNPCKLBWYrr:
648 Src2Name = getRegName(MI->getOperand(2).getReg());
649 // FALL THROUGH.
650589 case X86::VPUNPCKLBWYrm:
651590 Src1Name = getRegName(MI->getOperand(1).getReg());
652591 DestName = getRegName(MI->getOperand(0).getReg());
653 DecodeUNPCKLMask(MVT::v32i8, ShuffleMask);
654 break;
592 DecodeUNPCKLMask(getRegOperandVectorVT(MI, MVT::i8, 0), ShuffleMask);
593 break;
594
595 case X86::MMX_PUNPCKLWDirr:
655596 case X86::PUNPCKLWDrr:
656597 case X86::VPUNPCKLWDrr:
657 Src2Name = getRegName(MI->getOperand(2).getReg());
658 // FALL THROUGH.
598 case X86::VPUNPCKLWDYrr:
599 Src2Name = getRegName(MI->getOperand(2).getReg());
600 // FALL THROUGH.
601 case X86::MMX_PUNPCKLWDirm:
659602 case X86::PUNPCKLWDrm:
660603 case X86::VPUNPCKLWDrm:
661 Src1Name = getRegName(MI->getOperand(1).getReg());
662 DestName = getRegName(MI->getOperand(0).getReg());
663 DecodeUNPCKLMask(MVT::v8i16, ShuffleMask);
664 break;
665 case X86::VPUNPCKLWDYrr:
666 Src2Name = getRegName(MI->getOperand(2).getReg());
667 // FALL THROUGH.
668604 case X86::VPUNPCKLWDYrm:
669605 Src1Name = getRegName(MI->getOperand(1).getReg());
670606 DestName = getRegName(MI->getOperand(0).getReg());
671 DecodeUNPCKLMask(MVT::v16i16, ShuffleMask);
672 break;
607 DecodeUNPCKLMask(getRegOperandVectorVT(MI, MVT::i16, 0), ShuffleMask);
608 break;
609
610 case X86::MMX_PUNPCKLDQirr:
673611 case X86::PUNPCKLDQrr:
674612 case X86::VPUNPCKLDQrr:
675 Src2Name = getRegName(MI->getOperand(2).getReg());
676 // FALL THROUGH.
613 case X86::VPUNPCKLDQYrr:
614 case X86::VPUNPCKLDQZrr:
615 Src2Name = getRegName(MI->getOperand(2).getReg());
616 // FALL THROUGH.
617 case X86::MMX_PUNPCKLDQirm:
677618 case X86::PUNPCKLDQrm:
678619 case X86::VPUNPCKLDQrm:
679 Src1Name = getRegName(MI->getOperand(1).getReg());
680 DestName = getRegName(MI->getOperand(0).getReg());
681 DecodeUNPCKLMask(MVT::v4i32, ShuffleMask);
682 break;
683 case X86::VPUNPCKLDQYrr:
684 Src2Name = getRegName(MI->getOperand(2).getReg());
685 // FALL THROUGH.
686620 case X86::VPUNPCKLDQYrm:
687 Src1Name = getRegName(MI->getOperand(1).getReg());
688 DestName = getRegName(MI->getOperand(0).getReg());
689 DecodeUNPCKLMask(MVT::v8i32, ShuffleMask);
690 break;
691 case X86::VPUNPCKLDQZrr:
692 Src2Name = getRegName(MI->getOperand(2).getReg());
693 // FALL THROUGH.
694621 case X86::VPUNPCKLDQZrm:
695622 Src1Name = getRegName(MI->getOperand(1).getReg());
696623 DestName = getRegName(MI->getOperand(0).getReg());
697 DecodeUNPCKLMask(MVT::v16i32, ShuffleMask);
698 break;
624 DecodeUNPCKLMask(getRegOperandVectorVT(MI, MVT::i32, 0), ShuffleMask);
625 break;
626
699627 case X86::PUNPCKLQDQrr:
700628 case X86::VPUNPCKLQDQrr:
629 case X86::VPUNPCKLQDQYrr:
630 case X86::VPUNPCKLQDQZrr:
701631 Src2Name = getRegName(MI->getOperand(2).getReg());
702632 // FALL THROUGH.
703633 case X86::PUNPCKLQDQrm:
704634 case X86::VPUNPCKLQDQrm:
705 Src1Name = getRegName(MI->getOperand(1).getReg());
706 DestName = getRegName(MI->getOperand(0).getReg());
707 DecodeUNPCKLMask(MVT::v2i64, ShuffleMask);
708 break;
709 case X86::VPUNPCKLQDQYrr:
710 Src2Name = getRegName(MI->getOperand(2).getReg());
711 // FALL THROUGH.
712635 case X86::VPUNPCKLQDQYrm:
713 Src1Name = getRegName(MI->getOperand(1).getReg());
714 DestName = getRegName(MI->getOperand(0).getReg());
715 DecodeUNPCKLMask(MVT::v4i64, ShuffleMask);
716 break;
717 case X86::VPUNPCKLQDQZrr:
718 Src2Name = getRegName(MI->getOperand(2).getReg());
719 // FALL THROUGH.
720636 case X86::VPUNPCKLQDQZrm:
721637 Src1Name = getRegName(MI->getOperand(1).getReg());
722638 DestName = getRegName(MI->getOperand(0).getReg());
723 DecodeUNPCKLMask(MVT::v8i64, ShuffleMask);
639 DecodeUNPCKLMask(getRegOperandVectorVT(MI, MVT::i64, 0), ShuffleMask);
724640 break;
725641
726642 case X86::SHUFPDrri:
736652 Src1Name = getRegName(MI->getOperand(1).getReg());
737653 DestName = getRegName(MI->getOperand(0).getReg());
738654 break;
655
739656 case X86::VSHUFPDYrri:
740657 Src2Name = getRegName(MI->getOperand(2).getReg());
741658 // FALL THROUGH.
761678 Src1Name = getRegName(MI->getOperand(1).getReg());
762679 DestName = getRegName(MI->getOperand(0).getReg());
763680 break;
681
764682 case X86::VSHUFPSYrri:
765683 Src2Name = getRegName(MI->getOperand(2).getReg());
766684 // FALL THROUGH.
772690 Src1Name = getRegName(MI->getOperand(1).getReg());
773691 DestName = getRegName(MI->getOperand(0).getReg());
774692 break;
693
775694 CASE_VSHUF(64X2, r)
776695 CASE_VSHUF(64X2, m)
777696 CASE_VSHUF(32X4, r)
793712 }
794713 break;
795714 }
715
796716 case X86::UNPCKLPDrr:
797717 case X86::VUNPCKLPDrr:
718 case X86::VUNPCKLPDYrr:
719 case X86::VUNPCKLPDZrr:
798720 Src2Name = getRegName(MI->getOperand(2).getReg());
799721 // FALL THROUGH.
800722 case X86::UNPCKLPDrm:
801723 case X86::VUNPCKLPDrm:
802 DecodeUNPCKLMask(MVT::v2f64, ShuffleMask);
803 Src1Name = getRegName(MI->getOperand(1).getReg());
804 DestName = getRegName(MI->getOperand(0).getReg());
805 break;
806 case X86::VUNPCKLPDYrr:
807 Src2Name = getRegName(MI->getOperand(2).getReg());
808 // FALL THROUGH.
809724 case X86::VUNPCKLPDYrm:
810 DecodeUNPCKLMask(MVT::v4f64, ShuffleMask);
811 Src1Name = getRegName(MI->getOperand(1).getReg());
812 DestName = getRegName(MI->getOperand(0).getReg());
813 break;
814 case X86::VUNPCKLPDZrr:
815 Src2Name = getRegName(MI->getOperand(2).getReg());
816 // FALL THROUGH.
817725 case X86::VUNPCKLPDZrm:
818 DecodeUNPCKLMask(MVT::v8f64, ShuffleMask);
819 Src1Name = getRegName(MI->getOperand(1).getReg());
820 DestName = getRegName(MI->getOperand(0).getReg());
821 break;
726 DecodeUNPCKLMask(getRegOperandVectorVT(MI, MVT::f64, 0), ShuffleMask);
727 Src1Name = getRegName(MI->getOperand(1).getReg());
728 DestName = getRegName(MI->getOperand(0).getReg());
729 break;
730
822731 case X86::UNPCKLPSrr:
823732 case X86::VUNPCKLPSrr:
733 case X86::VUNPCKLPSYrr:
734 case X86::VUNPCKLPSZrr:
824735 Src2Name = getRegName(MI->getOperand(2).getReg());
825736 // FALL THROUGH.
826737 case X86::UNPCKLPSrm:
827738 case X86::VUNPCKLPSrm:
828 DecodeUNPCKLMask(MVT::v4f32, ShuffleMask);
829 Src1Name = getRegName(MI->getOperand(1).getReg());
830 DestName = getRegName(MI->getOperand(0).getReg());
831 break;
832 case X86::VUNPCKLPSYrr:
833 Src2Name = getRegName(MI->getOperand(2).getReg());
834 // FALL THROUGH.
835739 case X86::VUNPCKLPSYrm:
836 DecodeUNPCKLMask(MVT::v8f32, ShuffleMask);
837 Src1Name = getRegName(MI->getOperand(1).getReg());
838 DestName = getRegName(MI->getOperand(0).getReg());
839 break;
840 case X86::VUNPCKLPSZrr:
841 Src2Name = getRegName(MI->getOperand(2).getReg());
842 // FALL THROUGH.
843740 case X86::VUNPCKLPSZrm:
844 DecodeUNPCKLMask(MVT::v16f32, ShuffleMask);
845 Src1Name = getRegName(MI->getOperand(1).getReg());
846 DestName = getRegName(MI->getOperand(0).getReg());
847 break;
741 DecodeUNPCKLMask(getRegOperandVectorVT(MI, MVT::f32, 0), ShuffleMask);
742 Src1Name = getRegName(MI->getOperand(1).getReg());
743 DestName = getRegName(MI->getOperand(0).getReg());
744 break;
745
848746 case X86::UNPCKHPDrr:
849747 case X86::VUNPCKHPDrr:
748 case X86::VUNPCKHPDYrr:
749 case X86::VUNPCKHPDZrr:
850750 Src2Name = getRegName(MI->getOperand(2).getReg());
851751 // FALL THROUGH.
852752 case X86::UNPCKHPDrm:
853753 case X86::VUNPCKHPDrm:
854 DecodeUNPCKHMask(MVT::v2f64, ShuffleMask);
855 Src1Name = getRegName(MI->getOperand(1).getReg());
856 DestName = getRegName(MI->getOperand(0).getReg());
857 break;
858 case X86::VUNPCKHPDYrr:
859 Src2Name = getRegName(MI->getOperand(2).getReg());
860 // FALL THROUGH.
861754 case X86::VUNPCKHPDYrm:
862 DecodeUNPCKHMask(MVT::v4f64, ShuffleMask);
863 Src1Name = getRegName(MI->getOperand(1).getReg());
864 DestName = getRegName(MI->getOperand(0).getReg());
865 break;
866 case X86::VUNPCKHPDZrr:
867 Src2Name = getRegName(MI->getOperand(2).getReg());
868 // FALL THROUGH.
869755 case X86::VUNPCKHPDZrm:
870 DecodeUNPCKHMask(MVT::v8f64, ShuffleMask);
871 Src1Name = getRegName(MI->getOperand(1).getReg());
872 DestName = getRegName(MI->getOperand(0).getReg());
873 break;
756 DecodeUNPCKHMask(getRegOperandVectorVT(MI, MVT::f64, 0), ShuffleMask);
757 Src1Name = getRegName(MI->getOperand(1).getReg());
758 DestName = getRegName(MI->getOperand(0).getReg());
759 break;
760
874761 case X86::UNPCKHPSrr:
875762 case X86::VUNPCKHPSrr:
763 case X86::VUNPCKHPSYrr:
764 case X86::VUNPCKHPSZrr:
876765 Src2Name = getRegName(MI->getOperand(2).getReg());
877766 // FALL THROUGH.
878767 case X86::UNPCKHPSrm:
879768 case X86::VUNPCKHPSrm:
880 DecodeUNPCKHMask(MVT::v4f32, ShuffleMask);
881 Src1Name = getRegName(MI->getOperand(1).getReg());
882 DestName = getRegName(MI->getOperand(0).getReg());
883 break;
884 case X86::VUNPCKHPSYrr:
885 Src2Name = getRegName(MI->getOperand(2).getReg());
886 // FALL THROUGH.
887769 case X86::VUNPCKHPSYrm:
888 DecodeUNPCKHMask(MVT::v8f32, ShuffleMask);
889 Src1Name = getRegName(MI->getOperand(1).getReg());
890 DestName = getRegName(MI->getOperand(0).getReg());
891 break;
892 case X86::VUNPCKHPSZrr:
893 Src2Name = getRegName(MI->getOperand(2).getReg());
894 // FALL THROUGH.
895770 case X86::VUNPCKHPSZrm:
896 DecodeUNPCKHMask(MVT::v16f32, ShuffleMask);
897 Src1Name = getRegName(MI->getOperand(1).getReg());
898 DestName = getRegName(MI->getOperand(0).getReg());
899 break;
771 DecodeUNPCKHMask(getRegOperandVectorVT(MI, MVT::f32, 0), ShuffleMask);
772 Src1Name = getRegName(MI->getOperand(1).getReg());
773 DestName = getRegName(MI->getOperand(0).getReg());
774 break;
775
900776 case X86::VPERMILPSri:
901777 Src1Name = getRegName(MI->getOperand(1).getReg());
902778 // FALL THROUGH.
907783 ShuffleMask);
908784 DestName = getRegName(MI->getOperand(0).getReg());
909785 break;
786
910787 case X86::VPERMILPSYri:
911788 Src1Name = getRegName(MI->getOperand(1).getReg());
912789 // FALL THROUGH.
917794 ShuffleMask);
918795 DestName = getRegName(MI->getOperand(0).getReg());
919796 break;
797
920798 case X86::VPERMILPDri:
921799 Src1Name = getRegName(MI->getOperand(1).getReg());
922800 // FALL THROUGH.
927805 ShuffleMask);
928806 DestName = getRegName(MI->getOperand(0).getReg());
929807 break;
808
930809 case X86::VPERMILPDYri:
931810 Src1Name = getRegName(MI->getOperand(1).getReg());
932811 // FALL THROUGH.
937816 ShuffleMask);
938817 DestName = getRegName(MI->getOperand(0).getReg());
939818 break;
819
940820 case X86::VPERM2F128rr:
941821 case X86::VPERM2I128rr:
942822 Src2Name = getRegName(MI->getOperand(2).getReg());
951831 Src1Name = getRegName(MI->getOperand(1).getReg());
952832 DestName = getRegName(MI->getOperand(0).getReg());
953833 break;
834
954835 case X86::VPERMQYri:
955836 case X86::VPERMPDYri:
956837 Src1Name = getRegName(MI->getOperand(1).getReg());
999880 DecodeZeroMoveLowMask(MVT::v2i64, ShuffleMask);
1000881 DestName = getRegName(MI->getOperand(0).getReg());
1001882 break;
883
1002884 case X86::MOVDI2PDIrm:
1003885 case X86::VMOVDI2PDIrm:
1004886 DecodeZeroMoveLowMask(MVT::v4i32, ShuffleMask);