9 #include "../../MCInst.h"
10 #include "../../LEB128.h"
13 #define FieldFromInstruction(fname, InsnType) \
14 static InsnType fname(InsnType insn, unsigned startBit, \
17 if (numBits == sizeof(InsnType)*8) \
18 fieldMask = (InsnType)(-1LL); \
20 fieldMask = (((InsnType)1 << numBits) - 1) << startBit; \
21 return (insn & fieldMask) >> startBit; \
24 static uint8_t DecoderTable32[] = {
609 static bool checkDecoderPredicate(
unsigned Idx,
uint64_t Bits) {
613 #define DecodeToMCInst(fname,fieldname, InsnType) \
614 static DecodeStatus fname(DecodeStatus S, unsigned Idx, InsnType insn, MCInst *MI, \
615 uint64_t Address, void *Decoder) { \
620 tmp = fieldname(insn, 13, 4); \
621 if (DecodeNop(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
622 tmp = fieldname(insn, 29, 3); \
623 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
624 tmp = fieldname(insn, 28, 1); \
625 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
626 tmp = fieldname(insn, 1, 1); \
627 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
628 tmp = fieldname(insn, 0, 1); \
629 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
632 tmp = fieldname(insn, 23, 5); \
633 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
634 tmp = fieldname(insn, 18, 5); \
635 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
636 tmp = fieldname(insn, 13, 5); \
637 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
638 tmp = fieldname(insn, 12, 1); \
639 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
640 tmp = fieldname(insn, 29, 3); \
641 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
642 tmp = fieldname(insn, 28, 1); \
643 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
644 tmp = fieldname(insn, 1, 1); \
645 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
646 tmp = fieldname(insn, 0, 1); \
647 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
650 tmp = fieldname(insn, 23, 5); \
651 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
652 tmp = fieldname(insn, 18, 5); \
653 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
654 tmp = fieldname(insn, 13, 5); \
655 if (DecodeScst5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
656 tmp = fieldname(insn, 12, 1); \
657 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
658 tmp = fieldname(insn, 29, 3); \
659 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
660 tmp = fieldname(insn, 28, 1); \
661 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
662 tmp = fieldname(insn, 1, 1); \
663 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
664 tmp = fieldname(insn, 0, 1); \
665 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
668 tmp = fieldname(insn, 23, 5); \
669 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
671 tmp |= fieldname(insn, 7, 1) << 0; \
672 tmp |= fieldname(insn, 9, 14) << 1; \
673 if (DecodeMemOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
674 tmp = fieldname(insn, 29, 3); \
675 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
676 tmp = fieldname(insn, 28, 1); \
677 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
678 tmp = fieldname(insn, 1, 1); \
679 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
680 tmp = fieldname(insn, 0, 1); \
681 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
684 tmp = fieldname(insn, 23, 5); \
685 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
686 tmp = fieldname(insn, 18, 5); \
687 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
688 tmp = fieldname(insn, 13, 5); \
689 MCOperand_CreateImm0(MI, tmp); \
690 tmp = fieldname(insn, 8, 5); \
691 MCOperand_CreateImm0(MI, tmp); \
692 tmp = fieldname(insn, 29, 3); \
693 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
694 tmp = fieldname(insn, 28, 1); \
695 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
696 tmp = fieldname(insn, 1, 1); \
697 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
698 tmp = fieldname(insn, 0, 1); \
699 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
702 tmp = fieldname(insn, 23, 5); \
703 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
704 tmp = fieldname(insn, 7, 16); \
705 if (DecodeMemOperand2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
706 tmp = fieldname(insn, 29, 3); \
707 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
708 tmp = fieldname(insn, 28, 1); \
709 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
710 tmp = fieldname(insn, 1, 1); \
711 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
712 tmp = fieldname(insn, 0, 1); \
713 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
716 tmp = fieldname(insn, 7, 21); \
717 if (DecodePCRelScst21(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
718 tmp = fieldname(insn, 29, 3); \
719 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
720 tmp = fieldname(insn, 28, 1); \
721 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
722 tmp = fieldname(insn, 1, 1); \
723 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
724 tmp = fieldname(insn, 0, 1); \
725 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
728 tmp = fieldname(insn, 23, 5); \
729 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
730 tmp = fieldname(insn, 18, 5); \
731 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
732 tmp = fieldname(insn, 13, 5); \
733 if (DecodeScst5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
734 tmp = fieldname(insn, 12, 1); \
735 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
736 tmp = fieldname(insn, 29, 3); \
737 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
738 tmp = fieldname(insn, 28, 1); \
739 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
740 tmp = fieldname(insn, 1, 1); \
741 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
742 tmp = fieldname(insn, 0, 1); \
743 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
746 tmp = fieldname(insn, 23, 5); \
747 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
748 tmp = fieldname(insn, 18, 5); \
749 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
750 tmp = fieldname(insn, 12, 1); \
751 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
752 tmp = fieldname(insn, 29, 3); \
753 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
754 tmp = fieldname(insn, 28, 1); \
755 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
756 tmp = fieldname(insn, 1, 1); \
757 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
758 tmp = fieldname(insn, 0, 1); \
759 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
762 tmp = fieldname(insn, 23, 5); \
763 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
764 tmp = fieldname(insn, 18, 5); \
765 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
766 tmp = fieldname(insn, 12, 1); \
767 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
768 tmp = fieldname(insn, 29, 3); \
769 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
770 tmp = fieldname(insn, 28, 1); \
771 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
772 tmp = fieldname(insn, 1, 1); \
773 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
774 tmp = fieldname(insn, 0, 1); \
775 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
778 tmp = fieldname(insn, 23, 5); \
779 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
780 tmp = fieldname(insn, 18, 5); \
781 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
782 tmp = fieldname(insn, 13, 5); \
783 if (DecodeScst5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
784 tmp = fieldname(insn, 12, 1); \
785 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
786 tmp = fieldname(insn, 29, 3); \
787 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
788 tmp = fieldname(insn, 28, 1); \
789 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
790 tmp = fieldname(insn, 1, 1); \
791 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
792 tmp = fieldname(insn, 0, 1); \
793 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
796 tmp = fieldname(insn, 23, 5); \
797 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
798 tmp = fieldname(insn, 18, 5); \
799 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
800 tmp = fieldname(insn, 13, 5); \
801 MCOperand_CreateImm0(MI, tmp); \
802 tmp = fieldname(insn, 12, 1); \
803 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
804 tmp = fieldname(insn, 29, 3); \
805 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
806 tmp = fieldname(insn, 28, 1); \
807 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
808 tmp = fieldname(insn, 1, 1); \
809 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
810 tmp = fieldname(insn, 0, 1); \
811 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
814 tmp = fieldname(insn, 23, 5); \
815 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
816 tmp = fieldname(insn, 18, 5); \
817 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
818 tmp = fieldname(insn, 12, 1); \
819 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
820 tmp = fieldname(insn, 29, 3); \
821 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
822 tmp = fieldname(insn, 28, 1); \
823 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
824 tmp = fieldname(insn, 1, 1); \
825 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
826 tmp = fieldname(insn, 0, 1); \
827 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
830 tmp = fieldname(insn, 23, 5); \
831 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
832 tmp = fieldname(insn, 13, 10); \
833 if (DecodePCRelScst10(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
834 tmp = fieldname(insn, 29, 3); \
835 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
836 tmp = fieldname(insn, 28, 1); \
837 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
838 tmp = fieldname(insn, 1, 1); \
839 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
840 tmp = fieldname(insn, 0, 1); \
841 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
844 tmp = fieldname(insn, 16, 12); \
845 if (DecodePCRelScst12(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
846 tmp = fieldname(insn, 13, 3); \
847 MCOperand_CreateImm0(MI, tmp); \
848 tmp = fieldname(insn, 29, 3); \
849 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
850 tmp = fieldname(insn, 28, 1); \
851 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
852 tmp = fieldname(insn, 1, 1); \
853 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
854 tmp = fieldname(insn, 0, 1); \
855 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
858 tmp = fieldname(insn, 23, 5); \
859 if (DecodeControlRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
860 tmp = fieldname(insn, 18, 5); \
861 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
862 tmp = fieldname(insn, 12, 1); \
863 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
864 tmp = fieldname(insn, 29, 3); \
865 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
866 tmp = fieldname(insn, 28, 1); \
867 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
868 tmp = fieldname(insn, 1, 1); \
869 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
870 tmp = fieldname(insn, 0, 1); \
871 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
874 tmp = fieldname(insn, 23, 5); \
875 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
876 tmp = fieldname(insn, 18, 5); \
877 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
878 tmp = fieldname(insn, 13, 5); \
879 MCOperand_CreateImm0(MI, tmp); \
880 tmp = fieldname(insn, 12, 1); \
881 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
882 tmp = fieldname(insn, 29, 3); \
883 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
884 tmp = fieldname(insn, 28, 1); \
885 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
886 tmp = fieldname(insn, 1, 1); \
887 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
888 tmp = fieldname(insn, 0, 1); \
889 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
892 tmp = fieldname(insn, 23, 5); \
893 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
894 tmp = fieldname(insn, 18, 5); \
895 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
896 tmp = fieldname(insn, 13, 5); \
897 MCOperand_CreateImm0(MI, tmp); \
898 tmp = fieldname(insn, 12, 1); \
899 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
900 tmp = fieldname(insn, 29, 3); \
901 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
902 tmp = fieldname(insn, 28, 1); \
903 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
904 tmp = fieldname(insn, 1, 1); \
905 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
906 tmp = fieldname(insn, 0, 1); \
907 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
910 tmp = fieldname(insn, 23, 5); \
911 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
912 tmp = fieldname(insn, 18, 5); \
913 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
914 tmp = fieldname(insn, 13, 5); \
915 MCOperand_CreateImm0(MI, tmp); \
916 tmp = fieldname(insn, 12, 1); \
917 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
918 tmp = fieldname(insn, 29, 3); \
919 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
920 tmp = fieldname(insn, 28, 1); \
921 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
922 tmp = fieldname(insn, 1, 1); \
923 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
924 tmp = fieldname(insn, 0, 1); \
925 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
928 tmp = fieldname(insn, 23, 5); \
929 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
930 tmp = fieldname(insn, 18, 5); \
931 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
932 tmp = fieldname(insn, 13, 5); \
933 MCOperand_CreateImm0(MI, tmp); \
934 tmp = fieldname(insn, 12, 1); \
935 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
936 tmp = fieldname(insn, 29, 3); \
937 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
938 tmp = fieldname(insn, 28, 1); \
939 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
940 tmp = fieldname(insn, 1, 1); \
941 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
942 tmp = fieldname(insn, 0, 1); \
943 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
946 tmp = fieldname(insn, 23, 5); \
947 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
948 tmp = fieldname(insn, 18, 5); \
949 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
950 tmp = fieldname(insn, 13, 5); \
951 MCOperand_CreateImm0(MI, tmp); \
952 tmp = fieldname(insn, 12, 1); \
953 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
954 tmp = fieldname(insn, 29, 3); \
955 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
956 tmp = fieldname(insn, 28, 1); \
957 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
958 tmp = fieldname(insn, 1, 1); \
959 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
960 tmp = fieldname(insn, 0, 1); \
961 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
964 tmp = fieldname(insn, 23, 5); \
965 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
966 tmp = fieldname(insn, 18, 5); \
967 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
968 tmp = fieldname(insn, 12, 1); \
969 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
970 tmp = fieldname(insn, 29, 3); \
971 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
972 tmp = fieldname(insn, 28, 1); \
973 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
974 tmp = fieldname(insn, 1, 1); \
975 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
976 tmp = fieldname(insn, 0, 1); \
977 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
980 tmp = fieldname(insn, 24, 4); \
981 if (DecodeRegPair4(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
983 tmp |= fieldname(insn, 7, 1) << 0; \
984 tmp |= fieldname(insn, 9, 15) << 1; \
985 if (DecodeMemOperandSc(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
986 tmp = fieldname(insn, 29, 3); \
987 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
988 tmp = fieldname(insn, 28, 1); \
989 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
990 tmp = fieldname(insn, 1, 1); \
991 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
992 tmp = fieldname(insn, 0, 1); \
993 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
996 tmp = fieldname(insn, 23, 5); \
997 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
998 tmp = fieldname(insn, 7, 16); \
999 if (DecodeScst16(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1000 tmp = fieldname(insn, 29, 3); \
1001 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1002 tmp = fieldname(insn, 28, 1); \
1003 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1004 tmp = fieldname(insn, 1, 1); \
1005 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1006 tmp = fieldname(insn, 0, 1); \
1007 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1010 tmp = fieldname(insn, 23, 5); \
1011 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1012 tmp = fieldname(insn, 18, 5); \
1013 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1014 tmp = fieldname(insn, 13, 5); \
1015 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1016 tmp = fieldname(insn, 12, 1); \
1017 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1018 tmp = fieldname(insn, 29, 3); \
1019 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1020 tmp = fieldname(insn, 28, 1); \
1021 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1022 tmp = fieldname(insn, 1, 1); \
1023 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1024 tmp = fieldname(insn, 0, 1); \
1025 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1028 tmp = fieldname(insn, 23, 5); \
1029 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1030 tmp = fieldname(insn, 18, 5); \
1031 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1032 tmp = fieldname(insn, 13, 5); \
1033 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1034 tmp = fieldname(insn, 12, 1); \
1035 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1036 tmp = fieldname(insn, 29, 3); \
1037 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1038 tmp = fieldname(insn, 28, 1); \
1039 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1040 tmp = fieldname(insn, 1, 1); \
1041 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1042 tmp = fieldname(insn, 0, 1); \
1043 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1046 tmp = fieldname(insn, 23, 5); \
1047 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1048 tmp = fieldname(insn, 18, 5); \
1049 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1050 tmp = fieldname(insn, 13, 5); \
1051 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1052 tmp = fieldname(insn, 12, 1); \
1053 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1054 tmp = fieldname(insn, 29, 3); \
1055 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1056 tmp = fieldname(insn, 28, 1); \
1057 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1058 tmp = fieldname(insn, 1, 1); \
1059 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1060 tmp = fieldname(insn, 0, 1); \
1061 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1064 tmp = fieldname(insn, 23, 5); \
1065 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1066 tmp = fieldname(insn, 13, 5); \
1067 if (DecodeScst5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1068 tmp = fieldname(insn, 29, 3); \
1069 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1070 tmp = fieldname(insn, 28, 1); \
1071 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1072 tmp = fieldname(insn, 1, 1); \
1073 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1074 tmp = fieldname(insn, 0, 1); \
1075 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1078 tmp = fieldname(insn, 23, 5); \
1079 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1080 tmp = fieldname(insn, 18, 5); \
1081 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1082 tmp = fieldname(insn, 13, 5); \
1083 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1084 tmp = fieldname(insn, 29, 3); \
1085 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1086 tmp = fieldname(insn, 28, 1); \
1087 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1088 tmp = fieldname(insn, 1, 1); \
1089 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1090 tmp = fieldname(insn, 0, 1); \
1091 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1094 tmp = fieldname(insn, 23, 5); \
1095 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1096 tmp = fieldname(insn, 18, 5); \
1097 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1098 tmp = fieldname(insn, 13, 5); \
1099 MCOperand_CreateImm0(MI, tmp); \
1100 tmp = fieldname(insn, 29, 3); \
1101 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1102 tmp = fieldname(insn, 28, 1); \
1103 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1104 tmp = fieldname(insn, 1, 1); \
1105 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1106 tmp = fieldname(insn, 0, 1); \
1107 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1110 tmp = fieldname(insn, 23, 5); \
1111 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1113 tmp |= fieldname(insn, 7, 1) << 0; \
1114 tmp |= fieldname(insn, 9, 14) << 1; \
1115 if (DecodeMemOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1116 tmp = fieldname(insn, 29, 3); \
1117 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1118 tmp = fieldname(insn, 28, 1); \
1119 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1120 tmp = fieldname(insn, 1, 1); \
1121 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1122 tmp = fieldname(insn, 0, 1); \
1123 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1126 tmp = fieldname(insn, 23, 5); \
1127 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1128 tmp = fieldname(insn, 18, 5); \
1129 if (DecodeScst5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1130 tmp = fieldname(insn, 12, 1); \
1131 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1132 tmp = fieldname(insn, 29, 3); \
1133 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1134 tmp = fieldname(insn, 28, 1); \
1135 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1136 tmp = fieldname(insn, 1, 1); \
1137 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1138 tmp = fieldname(insn, 0, 1); \
1139 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1142 tmp = fieldname(insn, 29, 3); \
1143 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1144 tmp = fieldname(insn, 28, 1); \
1145 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1146 tmp = fieldname(insn, 1, 1); \
1147 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1148 tmp = fieldname(insn, 0, 1); \
1149 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1152 tmp = fieldname(insn, 23, 5); \
1153 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1154 tmp = fieldname(insn, 16, 7); \
1155 if (DecodePCRelScst7(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1156 tmp = fieldname(insn, 13, 3); \
1157 MCOperand_CreateImm0(MI, tmp); \
1158 tmp = fieldname(insn, 29, 3); \
1159 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1160 tmp = fieldname(insn, 28, 1); \
1161 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1162 tmp = fieldname(insn, 1, 1); \
1163 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1164 tmp = fieldname(insn, 0, 1); \
1165 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1168 tmp = fieldname(insn, 18, 5); \
1169 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1170 tmp = fieldname(insn, 12, 1); \
1171 if (DecodeCrosspathX1(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1172 tmp = fieldname(insn, 29, 3); \
1173 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1174 tmp = fieldname(insn, 28, 1); \
1175 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1176 tmp = fieldname(insn, 1, 1); \
1177 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1178 tmp = fieldname(insn, 0, 1); \
1179 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1182 tmp = fieldname(insn, 18, 5); \
1183 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1184 tmp = fieldname(insn, 13, 3); \
1185 MCOperand_CreateImm0(MI, tmp); \
1186 tmp = fieldname(insn, 12, 1); \
1187 if (DecodeCrosspathX1(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1188 tmp = fieldname(insn, 29, 3); \
1189 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1190 tmp = fieldname(insn, 28, 1); \
1191 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1192 tmp = fieldname(insn, 1, 1); \
1193 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1194 tmp = fieldname(insn, 0, 1); \
1195 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1198 tmp = fieldname(insn, 23, 5); \
1199 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1200 tmp = fieldname(insn, 18, 5); \
1201 if (DecodeControlRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1202 tmp = fieldname(insn, 12, 1); \
1203 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1204 tmp = fieldname(insn, 29, 3); \
1205 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1206 tmp = fieldname(insn, 28, 1); \
1207 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1208 tmp = fieldname(insn, 1, 1); \
1209 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1210 tmp = fieldname(insn, 0, 1); \
1211 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1214 tmp = fieldname(insn, 23, 5); \
1215 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1216 tmp = fieldname(insn, 18, 5); \
1217 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1218 tmp = fieldname(insn, 13, 5); \
1219 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1220 tmp = fieldname(insn, 12, 1); \
1221 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1222 tmp = fieldname(insn, 29, 3); \
1223 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1224 tmp = fieldname(insn, 28, 1); \
1225 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1226 tmp = fieldname(insn, 1, 1); \
1227 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1228 tmp = fieldname(insn, 0, 1); \
1229 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1232 tmp = fieldname(insn, 23, 5); \
1233 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1234 tmp = fieldname(insn, 18, 5); \
1235 if (DecodeRegPair5(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1236 tmp = fieldname(insn, 13, 5); \
1237 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1238 tmp = fieldname(insn, 12, 1); \
1239 if (DecodeCrosspathX2(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1240 tmp = fieldname(insn, 29, 3); \
1241 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1242 tmp = fieldname(insn, 28, 1); \
1243 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1244 tmp = fieldname(insn, 1, 1); \
1245 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1246 tmp = fieldname(insn, 0, 1); \
1247 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1250 tmp = fieldname(insn, 23, 5); \
1251 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1252 tmp = fieldname(insn, 18, 5); \
1253 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1254 tmp = fieldname(insn, 13, 5); \
1255 if (DecodeGPRegsRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1256 tmp = fieldname(insn, 12, 1); \
1257 if (DecodeCrosspathX3(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1258 tmp = fieldname(insn, 29, 3); \
1259 if (DecodeCondRegister(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1260 tmp = fieldname(insn, 28, 1); \
1261 if (DecodeCondRegisterZero(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1262 tmp = fieldname(insn, 1, 1); \
1263 if (DecodeSide(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1264 tmp = fieldname(insn, 0, 1); \
1265 if (DecodeParallel(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1270 #define DecodeInstruction(fname, fieldname, decoder, InsnType) \
1271 static DecodeStatus fname(uint8_t DecodeTable[], MCInst *MI, \
1272 InsnType insn, uint64_t Address, \
1273 MCRegisterInfo *MRI, \
1275 uint64_t Bits = getFeatureBits(feature); \
1276 uint8_t *Ptr = DecodeTable; \
1277 uint32_t CurFieldValue = 0, ExpectedValue; \
1278 DecodeStatus S = MCDisassembler_Success; \
1279 unsigned Start, Len, NumToSkip, PIdx, Opc, DecodeIdx; \
1280 InsnType Val, FieldValue, PositiveMask, NegativeMask; \
1285 return MCDisassembler_Fail; \
1286 case MCD_OPC_ExtractField: { \
1290 CurFieldValue = (uint32_t) fieldname(insn, Start, Len); \
1293 case MCD_OPC_FilterValue: { \
1294 Val = (InsnType) decodeULEB128(++Ptr, &Len); \
1296 NumToSkip = *Ptr++; \
1297 NumToSkip |= (*Ptr++) << 8; \
1298 if (Val != CurFieldValue) \
1302 case MCD_OPC_CheckField: { \
1305 FieldValue = fieldname(insn, Start, Len); \
1306 ExpectedValue = (uint32_t) decodeULEB128(++Ptr, &Len); \
1308 NumToSkip = *Ptr++; \
1309 NumToSkip |= (*Ptr++) << 8; \
1310 if (ExpectedValue != FieldValue) \
1314 case MCD_OPC_CheckPredicate: { \
1315 PIdx = (uint32_t) decodeULEB128(++Ptr, &Len); \
1317 NumToSkip = *Ptr++; \
1318 NumToSkip |= (*Ptr++) << 8; \
1319 Pred = checkDecoderPredicate(PIdx, Bits); \
1325 case MCD_OPC_Decode: { \
1326 Opc = (unsigned) decodeULEB128(++Ptr, &Len); \
1328 DecodeIdx = (unsigned) decodeULEB128(Ptr, &Len); \
1330 MCInst_setOpcode(MI, Opc); \
1331 return decoder(S, DecodeIdx, insn, MI, Address, MRI); \
1333 case MCD_OPC_SoftFail: { \
1334 PositiveMask = (InsnType) decodeULEB128(++Ptr, &Len); \
1336 NegativeMask = (InsnType) decodeULEB128(Ptr, &Len); \
1338 Fail = (insn & PositiveMask) || (~insn & NegativeMask); \
1340 S = MCDisassembler_SoftFail; \
1343 case MCD_OPC_Fail: { \
1344 return MCDisassembler_Fail; \
1350 FieldFromInstruction(fieldFromInstruction_4,
uint32_t)
1351 DecodeToMCInst(decodeToMCInst_4, fieldFromInstruction_4,
uint32_t)
1352 DecodeInstruction(decodeInstruction_4, fieldFromInstruction_4, decodeToMCInst_4,
uint32_t)