two_byte_opcodes.isa (6582:7e1af04f4ead) two_byte_opcodes.isa (6584:5355f44912f6)
1// Copyright (c) 2008 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

--- 581 unchanged lines hidden (view full) ---

590 0x3: PACKSSDW(Vo,Wo);
591 0x4: PUNPCKLQDQ(Vo,Wq);
592 0x5: PUNPCKHQDQ(Vo,Wq);
593 0x6: WarnUnimpl::movd_Vo_Ed();
594 0x7: WarnUnimpl::movdqa_Vo_Wo();
595 }
596 default: UD2();
597 }
1// Copyright (c) 2008 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

--- 581 unchanged lines hidden (view full) ---

590 0x3: PACKSSDW(Vo,Wo);
591 0x4: PUNPCKLQDQ(Vo,Wq);
592 0x5: PUNPCKHQDQ(Vo,Wq);
593 0x6: WarnUnimpl::movd_Vo_Ed();
594 0x7: WarnUnimpl::movdqa_Vo_Wo();
595 }
596 default: UD2();
597 }
598 }
599 0x0E: decode LEGACY_DECODEVAL {
600 // no prefix
601 0x0: decode OPCODE_OP_BOTTOM3 {
602 0x0: pshufw_Pq_Qq_Ib();
603 //0x1: group13_pshimw();
604 0x1: decode MODRM_REG {
605 0x2: decode LEGACY_OP {
606 0x0: psrlw_PRq_Ib();
607 0x1: psrlw_VRo_Ib();
598 0x0E: decode LEGACY_DECODEVAL {
599 // no prefix
600 0x0: decode OPCODE_OP_BOTTOM3 {
601 0x0: WarnUnimpl::pshufw_Pq_Qq_Ib();
602 //0x1: group13_pshimw();
603 0x1: decode MODRM_REG {
604 0x2: decode LEGACY_OP {
605 0x0: PSRLW(PRq,Ib);
606 0x1: PSRLW(VRo,Ib);
607 }
608 0x4: decode LEGACY_OP {
609 0x0: PSRAW(PRq,Ib);
610 0x1: PSRAW(VRo,Ib);
611 }
612 0x6: decode LEGACY_OP {
613 0x0: PSLLW(PRq,Ib);
614 0x1: PSLLW(VRo,Ib);
615 }
616 default: UD2();
608 }
617 }
609 0x4: decode LEGACY_OP {
610 0x0: psraw_PRq_Ib();
611 0x1: psraw_VRo_Ib();
618 //0x2: group14_pshimd();
619 0x2: decode MODRM_REG {
620 0x2: decode LEGACY_OP {
621 0x0: PSRLD(PRq,Ib);
622 0x1: PSRLD(VRo,Ib);
623 }
624 0x4: decode LEGACY_OP {
625 0x0: PSRAD(PRq,Ib);
626 0x1: PSRAD(VRo,Ib);
627 }
628 0x6: decode LEGACY_OP {
629 0x0: PSLLD(PRq,Ib);
630 0x1: PSLLD(VRo,Ib);
631 }
632 default: UD2();
612 }
633 }
613 0x6: decode LEGACY_OP {
614 0x0: psllw_PRq_Ib();
615 0x1: psllw_VRo_Ib();
634 //0x3: group15_pshimq();
635 0x3: decode MODRM_REG {
636 0x2: decode LEGACY_OP {
637 0x0: PSRLQ(PRq,Ib);
638 0x1: PSRLQ(VRo,Ib);
639 }
640 0x3: decode LEGACY_OP {
641 0x0: UD2();
642 0x1: WarnUnimpl::psrldq_VRo_Ib();
643 }
644 0x6: decode LEGACY_OP {
645 0x0: PSLLQ(PRq,Ib);
646 0x1: PSLLQ(VRo,Ib);
647 }
648 0x7: decode LEGACY_OP {
649 0x0: UD2();
650 0x1: WarnUnimpl::pslldq_VRo_Ib();
651 }
652 default: Inst::UD2();
616 }
653 }
617 default: Inst::UD2();
654 0x4: Inst::PCMPEQB(Pq,Qq);
655 0x5: Inst::PCMPEQW(Pq,Qq);
656 0x6: Inst::PCMPEQD(Pq,Qq);
657 0x7: WarnUnimpl::emms();
618 }
658 }
619 //0x2: group14_pshimd();
620 0x2: decode MODRM_REG {
621 0x2: decode LEGACY_OP {
622 0x0: psrld_PRq_Ib();
623 0x1: psrld_VRo_Ib();
624 }
625 0x4: decode LEGACY_OP {
626 0x0: psrad_PRq_Ib();
627 0x1: psrad_VRo_Ib();
628 }
629 0x6: decode LEGACY_OP {
630 0x0: pslld_PRq_Ib();
631 0x1: pslld_VRo_Ib();
632 }
633 default: Inst::UD2();
659 // repe (0xF3)
660 0x4: decode OPCODE_OP_BOTTOM3 {
661 0x0: WarnUnimpl::pshufhw_Vo_Wo_Ib();
662 default: UD2();
634 }
663 }
635 //0x3: group15_pshimq();
636 0x3: decode MODRM_REG {
637 0x2: decode LEGACY_OP {
638 0x0: psrlq_PRq_Ib();
639 0x1: psrlq_VRo_Ib();
664 // operand size (0x66)
665 0x1: decode OPCODE_OP_BOTTOM3 {
666 0x0: WarnUnimpl::pshufd_Vo_Wo_Ib();
667 //0x1: group13_pshimw();
668 0x1: decode MODRM_REG {
669 0x2: decode LEGACY_OP {
670 0x0: PSRLW(PRq,Ib);
671 0x1: PSRLW(VRo,Ib);
672 }
673 0x4: decode LEGACY_OP {
674 0x0: PSRAW(PRq,Ib);
675 0x1: PSRAW(VRo,Ib);
676 }
677 0x6: decode LEGACY_OP {
678 0x0: PSLLW(PRq,Ib);
679 0x1: PSLLW(VRo,Ib);
680 }
681 default: Inst::UD2();
640 }
682 }
641 0x3: decode LEGACY_OP {
642 0x0: Inst::UD2();
643 0x1: psrldq_VRo_Ib();
683 //0x2: group14_pshimd();
684 0x2: decode MODRM_REG {
685 0x2: decode LEGACY_OP {
686 0x0: PSRLD(PRq,Ib);
687 0x1: PSRLD(VRo,Ib);
688 }
689 0x4: decode LEGACY_OP {
690 0x0: PSRAD(PRq,Ib);
691 0x1: PSRAD(VRo,Ib);
692 }
693 0x6: decode LEGACY_OP {
694 0x0: PSLLD(PRq,Ib);
695 0x1: PSLLD(VRo,Ib);
696 }
697 default: UD2();
644 }
698 }
645 0x6: decode LEGACY_OP {
646 0x0: psllq_PRq_Ib();
647 0x1: psllq_VRo_Ib();
699 //0x3: group15_pshimq();
700 0x3: decode MODRM_REG {
701 0x2: decode LEGACY_OP {
702 0x0: PSRLQ(PRq,Ib);
703 0x1: PSRLQ(VRo,Ib);
704 }
705 0x3: decode LEGACY_OP {
706 0x0: UD2();
707 0x1: WarnUnimpl::psrldq_VRo_Ib();
708 }
709 0x6: decode LEGACY_OP {
710 0x0: PSLLQ(PRq,Ib);
711 0x1: PSLLQ(VRo,Ib);
712 }
713 0x7: decode LEGACY_OP {
714 0x0: UD2();
715 0x1: WarnUnimpl::pslldq_VRo_Ib();
716 }
717 default: UD2();
648 }
718 }
649 0x7: decode LEGACY_OP {
650 0x0: Inst::UD2();
651 0x1: pslldq_VRo_Ib();
652 }
653 default: Inst::UD2();
719 0x4: PCMPEQB(Vo,Wo);
720 0x5: PCMPEQW(Vo,Wo);
721 0x6: PCMPEQD(Vo,Wo);
722 default: UD2();
654 }
723 }
655 0x4: Inst::PCMPEQB(Pq,Qq);
656 0x5: Inst::PCMPEQW(Pq,Qq);
657 0x6: Inst::PCMPEQD(Pq,Qq);
658 0x7: emms();
724 // repne (0xF2)
725 0x8: decode OPCODE_OP_BOTTOM3 {
726 0x0: WarnUnimpl::pshuflw_Vo_Wo_Ib();
727 default: UD2();
728 }
729 default: UD2();
659 }
730 }
660 // repe (0xF3)
661 0x4: decode OPCODE_OP_BOTTOM3 {
662 0x0: pshufhw_Vo_Wo_Ib();
663 default: Inst::UD2();
664 }
665 // operand size (0x66)
666 0x1: decode OPCODE_OP_BOTTOM3 {
667 0x0: pshufd_Vo_Wo_Ib();
668 //0x1: group13_pshimw();
669 0x1: decode MODRM_REG {
670 0x2: decode LEGACY_OP {
671 0x0: psrlw_PRq_Ib();
672 0x1: psrlw_VRo_Ib();
673 }
674 0x4: decode LEGACY_OP {
675 0x0: psraw_PRq_Ib();
676 0x1: psraw_VRo_Ib();
677 }
678 0x6: decode LEGACY_OP {
679 0x0: psllw_PRq_Ib();
680 0x1: psllw_VRo_Ib();
681 }
682 default: Inst::UD2();
731 0x0F: decode LEGACY_DECODEVAL {
732 // no prefix
733 0x0: decode OPCODE_OP_BOTTOM3 {
734 0x0: WarnUnimpl::vmread_Ed_or_Eq_Gd_or_Gq();
735 0x1: WarnUnimpl::vmwrite_Gd_or_Gq_Ed_or_Eq();
736 0x6: MOVD(Edp,Pdp);
737 0x7: MOVQ(Qq,Pq);
738 default: UD2();
683 }
739 }
684 //0x2: group14_pshimd();
685 0x2: decode MODRM_REG {
686 0x2: decode LEGACY_OP {
687 0x0: psrld_PRq_Ib();
688 0x1: psrld_VRo_Ib();
689 }
690 0x4: decode LEGACY_OP {
691 0x0: psrad_PRq_Ib();
692 0x1: psrad_VRo_Ib();
693 }
694 0x6: decode LEGACY_OP {
695 0x0: pslld_PRq_Ib();
696 0x1: pslld_VRo_Ib();
697 }
698 default: Inst::UD2();
740 // repe (0xF3)
741 0x4: decode OPCODE_OP_BOTTOM3 {
742 0x6: MOVQ(Vq,Wq);
743 0x7: WarnUnimpl::movdqu_Wo_Vo();
744 default: UD2();
699 }
745 }
700 //0x3: group15_pshimq();
701 0x3: decode MODRM_REG {
702 0x2: decode LEGACY_OP {
703 0x0: psrlq_PRq_Ib();
704 0x1: psrlq_VRo_Ib();
705 }
706 0x3: decode LEGACY_OP {
707 0x0: Inst::UD2();
708 0x1: psrldq_VRo_Ib();
709 }
710 0x6: decode LEGACY_OP {
711 0x0: psllq_PRq_Ib();
712 0x1: psllq_VRo_Ib();
713 }
714 0x7: decode LEGACY_OP {
715 0x0: Inst::UD2();
716 0x1: pslldq_VRo_Ib();
717 }
718 default: Inst::UD2();
746 // operand size (0x66)
747 0x1: decode OPCODE_OP_BOTTOM3 {
748 0x4: WarnUnimpl::haddpd_Vo_Wo();
749 0x5: WarnUnimpl::hsubpd_Vo_Wo();
750 0x6: WarnUnimpl::movd_Ed_Vd();
751 0x7: WarnUnimpl::movdqa_Wo_Vo();
752 default: UD2();
719 }
753 }
720 0x4: Inst::PCMPEQB(Vo,Wo);
721 0x5: Inst::PCMPEQW(Vo,Wo);
722 0x6: Inst::PCMPEQD(Vo,Wo);
723 default: Inst::UD2();
754 // repne (0xF2)
755 0x8: decode OPCODE_OP_BOTTOM3 {
756 0x4: WarnUnimpl::haddps_Vo_Wo();
757 0x5: WarnUnimpl::hsubps_Vo_Wo();
758 default: UD2();
759 }
760 default: UD2();
724 }
761 }
725 // repne (0xF2)
726 0x8: decode OPCODE_OP_BOTTOM3 {
727 0x0: pshuflw_Vo_Wo_Ib();
728 default: Inst::UD2();
729 }
730 default: Inst::UD2();
731 }
732 0x0F: decode LEGACY_DECODEVAL {
733 // no prefix
734 0x0: decode OPCODE_OP_BOTTOM3 {
735 0x0: vmread_Ed_or_Eq_Gd_or_Gq();
736 0x1: vmwrite_Gd_or_Gq_Ed_or_Eq();
737 0x6: Inst::MOVD(Edp,Pdp);
738 0x7: Inst::MOVQ(Qq,Pq);
739 default: Inst::UD2();
740 }
741 // repe (0xF3)
742 0x4: decode OPCODE_OP_BOTTOM3 {
743 0x6: Inst::MOVQ(Vq,Wq);
744 0x7: movdqu_Wo_Vo();
745 default: Inst::UD2();
746 }
747 // operand size (0x66)
748 0x1: decode OPCODE_OP_BOTTOM3 {
749 0x4: haddpd_Vo_Wo();
750 0x5: hsubpd_Vo_Wo();
751 0x6: movd_Ed_Vd();
752 0x7: movdqa_Wo_Vo();
753 default: Inst::UD2();
754 }
755 // repne (0xF2)
756 0x8: decode OPCODE_OP_BOTTOM3 {
757 0x4: haddps_Vo_Wo();
758 0x5: hsubps_Vo_Wo();
759 default: Inst::UD2();
760 }
761 default: Inst::UD2();
762 }
763 format Inst {
764 0x10: decode OPCODE_OP_BOTTOM3 {
765 0x0: JO(Jz);
766 0x1: JNO(Jz);
767 0x2: JB(Jz);
768 0x3: JNB(Jz);
769 0x4: JZ(Jz);
770 0x5: JNZ(Jz);
771 0x6: JBE(Jz);

--- 167 unchanged lines hidden (view full) ---

939 4: BSWAP_D(Bd);
940 8: BSWAP_Q(Bq);
941 default: UD2();
942 }
943 }
944 0x1A: decode LEGACY_DECODEVAL {
945 // no prefix
946 0x0: decode OPCODE_OP_BOTTOM3 {
762 0x10: decode OPCODE_OP_BOTTOM3 {
763 0x0: JO(Jz);
764 0x1: JNO(Jz);
765 0x2: JB(Jz);
766 0x3: JNB(Jz);
767 0x4: JZ(Jz);
768 0x5: JNZ(Jz);
769 0x6: JBE(Jz);

--- 167 unchanged lines hidden (view full) ---

937 4: BSWAP_D(Bd);
938 8: BSWAP_Q(Bq);
939 default: UD2();
940 }
941 }
942 0x1A: decode LEGACY_DECODEVAL {
943 // no prefix
944 0x0: decode OPCODE_OP_BOTTOM3 {
947 0x1: psrlw_Pq_Qq();
948 0x2: psrld_Pq_Qq();
949 0x3: psrlq_Pq_Qq();
945 0x1: Inst::PSRLW(Pq,Qq);
946 0x2: Inst::PSRLD(Pq,Qq);
947 0x3: Inst::PSRLQ(Pq,Qq);
950 0x4: Inst::PADDQ(Pq,Qq);
951 0x5: Inst::PMULLW(Pq,Qq);
952 0x7: pmovmskb_Gd_PRq();
953 default: Inst::UD2();
954 }
955 // repe (0xF3)
956 0x4: decode OPCODE_OP_BOTTOM3 {
957 0x6: movq2dq_Vo_PRq();
958 default: Inst::UD2();
959 }
960 // operand size (0x66)
961 0x1: decode OPCODE_OP_BOTTOM3 {
962 0x0: addsubpd_Vo_Wo();
948 0x4: Inst::PADDQ(Pq,Qq);
949 0x5: Inst::PMULLW(Pq,Qq);
950 0x7: pmovmskb_Gd_PRq();
951 default: Inst::UD2();
952 }
953 // repe (0xF3)
954 0x4: decode OPCODE_OP_BOTTOM3 {
955 0x6: movq2dq_Vo_PRq();
956 default: Inst::UD2();
957 }
958 // operand size (0x66)
959 0x1: decode OPCODE_OP_BOTTOM3 {
960 0x0: addsubpd_Vo_Wo();
963 0x1: psrlw_Vo_Wo();
964 0x2: psrld_Vo_Wo();
965 0x3: psrlq_Vo_Wo();
961 0x1: Inst::PSRLW(Vo,Wo);
962 0x2: Inst::PSRLD(Vo,Wo);
963 0x3: Inst::PSRLQ(Vo,Wo);
966 0x4: Inst::PADDQ(Vo,Wo);
967 0x5: Inst::PMULLW(Vo,Wo);
968 0x6: Inst::MOVQ(Wq,Vq);
969 0x7: pmovmskb_Gd_VRo();
970 }
971 // repne (0xF2)
972 0x8: decode OPCODE_OP_BOTTOM3 {
973 0x0: addsubps_Vo_Wo();

--- 28 unchanged lines hidden (view full) ---

1002 }
1003 default: UD2();
1004 }
1005 }
1006 0x1C: decode LEGACY_DECODEVAL {
1007 // no prefix
1008 0x0: decode OPCODE_OP_BOTTOM3 {
1009 0x0: pavgb_Pq_Qq();
964 0x4: Inst::PADDQ(Vo,Wo);
965 0x5: Inst::PMULLW(Vo,Wo);
966 0x6: Inst::MOVQ(Wq,Vq);
967 0x7: pmovmskb_Gd_VRo();
968 }
969 // repne (0xF2)
970 0x8: decode OPCODE_OP_BOTTOM3 {
971 0x0: addsubps_Vo_Wo();

--- 28 unchanged lines hidden (view full) ---

1000 }
1001 default: UD2();
1002 }
1003 }
1004 0x1C: decode LEGACY_DECODEVAL {
1005 // no prefix
1006 0x0: decode OPCODE_OP_BOTTOM3 {
1007 0x0: pavgb_Pq_Qq();
1010 0x1: psraw_Pq_Qq();
1011 0x2: psrad_Pq_Qq();
1008 0x1: Inst::PSRAW(Pq,Qq);
1009 0x2: Inst::PSRAD(Pq,Qq);
1012 0x3: pavgw_Pq_Qq();
1013 0x4: Inst::PMULHUW(Pq,Qq);
1014 0x5: Inst::PMULHW(Pq,Qq);
1015 0x7: movntq_Mq_Pq();
1016 default: Inst::UD2();
1017 }
1018 // repe (0xF3)
1019 0x4: decode OPCODE_OP_BOTTOM3 {
1020 0x6: Inst::CVTDQ2PD(Vo,Wq);
1021 default: Inst::UD2();
1022 }
1023 // operand size (0x66)
1024 0x1: decode OPCODE_OP_BOTTOM3 {
1025 0x0: pavgb_Vo_Wo();
1010 0x3: pavgw_Pq_Qq();
1011 0x4: Inst::PMULHUW(Pq,Qq);
1012 0x5: Inst::PMULHW(Pq,Qq);
1013 0x7: movntq_Mq_Pq();
1014 default: Inst::UD2();
1015 }
1016 // repe (0xF3)
1017 0x4: decode OPCODE_OP_BOTTOM3 {
1018 0x6: Inst::CVTDQ2PD(Vo,Wq);
1019 default: Inst::UD2();
1020 }
1021 // operand size (0x66)
1022 0x1: decode OPCODE_OP_BOTTOM3 {
1023 0x0: pavgb_Vo_Wo();
1026 0x1: psraw_Vo_Wo();
1027 0x2: psrad_Vo_Wo();
1024 0x1: Inst::PSRAW(Vo,Wo);
1025 0x2: Inst::PSRAD(Vo,Wo);
1028 0x3: pavgw_Vo_Wo();
1029 0x4: Inst::PMULHUW(Vo,Wo);
1030 0x5: Inst::PMULHW(Vo,Wo);
1031 0x6: cvttpd2dq_Vo_Wo();
1032 0x7: movntdq_Mo_Vo();
1033 }
1034 // repne (0xF2)
1035 0x8: decode OPCODE_OP_BOTTOM3 {

--- 27 unchanged lines hidden (view full) ---

1063 0x7: PXOR(Vo,Wo);
1064 }
1065 default: UD2();
1066 }
1067 }
1068 0x1E: decode LEGACY_DECODEVAL {
1069 // no prefix
1070 0x0: decode OPCODE_OP_BOTTOM3 {
1026 0x3: pavgw_Vo_Wo();
1027 0x4: Inst::PMULHUW(Vo,Wo);
1028 0x5: Inst::PMULHW(Vo,Wo);
1029 0x6: cvttpd2dq_Vo_Wo();
1030 0x7: movntdq_Mo_Vo();
1031 }
1032 // repne (0xF2)
1033 0x8: decode OPCODE_OP_BOTTOM3 {

--- 27 unchanged lines hidden (view full) ---

1061 0x7: PXOR(Vo,Wo);
1062 }
1063 default: UD2();
1064 }
1065 }
1066 0x1E: decode LEGACY_DECODEVAL {
1067 // no prefix
1068 0x0: decode OPCODE_OP_BOTTOM3 {
1071 0x1: psllw_Pq_Qq();
1072 0x2: pslld_Pq_Qq();
1073 0x3: psllq_Pq_Qq();
1069 0x1: Inst::PSLLW(Pq,Qq);
1070 0x2: Inst::PSLLD(Pq,Qq);
1071 0x3: Inst::PSLLQ(Pq,Qq);
1074 0x4: Inst::PMULUDQ(Pq,Qq);
1075 0x5: pmaddwd_Pq_Qq();
1076 0x6: Inst::PSADBW(Pq,Qq);
1077 0x7: maskmovq_Pq_PRq();
1078 default: Inst::UD2();
1079 }
1080 // operand size (0x66)
1081 0x1: decode OPCODE_OP_BOTTOM3 {
1072 0x4: Inst::PMULUDQ(Pq,Qq);
1073 0x5: pmaddwd_Pq_Qq();
1074 0x6: Inst::PSADBW(Pq,Qq);
1075 0x7: maskmovq_Pq_PRq();
1076 default: Inst::UD2();
1077 }
1078 // operand size (0x66)
1079 0x1: decode OPCODE_OP_BOTTOM3 {
1082 0x1: psllw_Vo_Wo();
1083 0x2: pslld_Vo_Wo();
1084 0x3: psllq_Vo_Wo();
1080 0x1: Inst::PSLLW(Vo,Wo);
1081 0x2: Inst::PSLLD(Vo,Wo);
1082 0x3: Inst::PSLLQ(Vo,Wo);
1085 0x4: Inst::PMULUDQ(Vo,Wo);
1086 0x5: pmaddwd_Vo_Wo();
1087 0x6: Inst::PSADBW(Vo,Wo);
1088 0x7: maskmovdqu_Vo_VRo();
1089 default: Inst::UD2();
1090 }
1091 // repne (0xF2)
1092 0x8: decode OPCODE_OP_BOTTOM3 {

--- 38 unchanged lines hidden ---
1083 0x4: Inst::PMULUDQ(Vo,Wo);
1084 0x5: pmaddwd_Vo_Wo();
1085 0x6: Inst::PSADBW(Vo,Wo);
1086 0x7: maskmovdqu_Vo_VRo();
1087 default: Inst::UD2();
1088 }
1089 // repne (0xF2)
1090 0x8: decode OPCODE_OP_BOTTOM3 {

--- 38 unchanged lines hidden ---