12 #include "../../MCInst.h"
13 #include "../../LEB128.h"
16 #define FieldFromInstruction(fname, InsnType) \
17 static InsnType fname(InsnType insn, unsigned startBit, unsigned numBits) \
20 if (numBits == sizeof(InsnType)*8) \
21 fieldMask = (InsnType)(-1LL); \
23 fieldMask = (((InsnType)1 << numBits) - 1) << startBit; \
24 return (insn & fieldMask) >> startBit; \
27 static const uint8_t DecoderTable16[] = {
100 static const uint8_t DecoderTable32[] = {
836 static const uint8_t DecoderTable48[] = {
1681 static bool checkDecoderPredicate(
unsigned Idx,
uint64_t Bits)
1686 return getbool((Bits & SystemZ_FeatureFPExtension));
1688 return getbool((Bits & SystemZ_FeatureLoadStoreOnCond));
1690 return getbool((Bits & SystemZ_FeatureDistinctOps));
1692 return getbool((Bits & SystemZ_FeatureHighWord));
1694 return getbool((Bits & SystemZ_FeatureInterlockedAccess1));
1698 #define DecodeToMCInst(fname,fieldname, InsnType) \
1699 static DecodeStatus fname(DecodeStatus S, unsigned Idx, InsnType insn, MCInst *MI, \
1700 uint64_t Address, const void *Decoder) \
1706 tmp = fieldname(insn, 0, 4); \
1707 if (DecodeADDR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1710 tmp = fieldname(insn, 4, 4); \
1711 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1712 tmp = fieldname(insn, 0, 4); \
1713 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1716 tmp = fieldname(insn, 4, 4); \
1717 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1718 tmp = fieldname(insn, 0, 4); \
1719 if (DecodeADDR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1722 tmp = fieldname(insn, 4, 4); \
1723 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1724 tmp = fieldname(insn, 0, 4); \
1725 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1728 tmp = fieldname(insn, 4, 4); \
1729 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1730 tmp = fieldname(insn, 4, 4); \
1731 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1732 tmp = fieldname(insn, 0, 4); \
1733 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1736 tmp = fieldname(insn, 4, 4); \
1737 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1738 tmp = fieldname(insn, 0, 4); \
1739 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1742 tmp = fieldname(insn, 4, 4); \
1743 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1744 tmp = fieldname(insn, 0, 4); \
1745 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1748 tmp = fieldname(insn, 20, 4); \
1749 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1750 tmp = fieldname(insn, 0, 20); \
1751 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1754 tmp = fieldname(insn, 20, 4); \
1755 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1756 tmp = fieldname(insn, 0, 20); \
1757 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1760 tmp = fieldname(insn, 20, 4); \
1761 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1762 tmp = fieldname(insn, 20, 4); \
1763 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1764 tmp = fieldname(insn, 0, 20); \
1765 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1768 tmp = fieldname(insn, 20, 4); \
1769 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1770 tmp = fieldname(insn, 20, 4); \
1771 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1772 tmp = fieldname(insn, 0, 20); \
1773 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1776 tmp = fieldname(insn, 20, 4); \
1777 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1778 tmp = fieldname(insn, 0, 20); \
1779 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1782 tmp = fieldname(insn, 20, 4); \
1783 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1784 tmp = fieldname(insn, 0, 20); \
1785 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1788 tmp = fieldname(insn, 20, 4); \
1789 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1790 tmp = fieldname(insn, 20, 4); \
1791 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1792 tmp = fieldname(insn, 0, 16); \
1793 if (decodeBDAddr32Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1796 tmp = fieldname(insn, 0, 16); \
1797 if (decodeBDAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1798 tmp = fieldname(insn, 16, 8); \
1799 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1802 tmp = fieldname(insn, 20, 4); \
1803 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1804 tmp = fieldname(insn, 20, 4); \
1805 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1806 tmp = fieldname(insn, 0, 16); \
1807 if (decodeU16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1810 tmp = fieldname(insn, 20, 4); \
1811 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1812 tmp = fieldname(insn, 20, 4); \
1813 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1814 tmp = fieldname(insn, 0, 16); \
1815 if (decodeU16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1818 tmp = fieldname(insn, 20, 4); \
1819 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1820 tmp = fieldname(insn, 0, 16); \
1821 if (decodeU16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1824 tmp = fieldname(insn, 20, 4); \
1825 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1826 tmp = fieldname(insn, 0, 16); \
1827 if (decodeU16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1830 tmp = fieldname(insn, 20, 4); \
1831 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1832 tmp = fieldname(insn, 0, 16); \
1833 if (decodeU16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1836 tmp = fieldname(insn, 0, 16); \
1837 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1840 tmp = fieldname(insn, 20, 4); \
1841 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1842 tmp = fieldname(insn, 0, 16); \
1843 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1846 tmp = fieldname(insn, 20, 4); \
1847 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1848 tmp = fieldname(insn, 0, 16); \
1849 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1852 tmp = fieldname(insn, 20, 4); \
1853 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1854 tmp = fieldname(insn, 20, 4); \
1855 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1856 tmp = fieldname(insn, 0, 16); \
1857 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1860 tmp = fieldname(insn, 20, 4); \
1861 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1862 tmp = fieldname(insn, 20, 4); \
1863 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1864 tmp = fieldname(insn, 0, 16); \
1865 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1868 tmp = fieldname(insn, 20, 4); \
1869 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1870 tmp = fieldname(insn, 0, 16); \
1871 if (decodeS16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1874 tmp = fieldname(insn, 20, 4); \
1875 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1876 tmp = fieldname(insn, 0, 16); \
1877 if (decodeS16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1880 tmp = fieldname(insn, 20, 4); \
1881 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1882 tmp = fieldname(insn, 20, 4); \
1883 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1884 tmp = fieldname(insn, 0, 16); \
1885 if (decodeS16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1888 tmp = fieldname(insn, 20, 4); \
1889 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1890 tmp = fieldname(insn, 20, 4); \
1891 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1892 tmp = fieldname(insn, 0, 16); \
1893 if (decodeS16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1896 tmp = fieldname(insn, 4, 4); \
1897 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1900 tmp = fieldname(insn, 4, 4); \
1901 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1902 tmp = fieldname(insn, 0, 4); \
1903 if (decodeAccessRegOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1906 tmp = fieldname(insn, 4, 4); \
1907 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1908 tmp = fieldname(insn, 0, 4); \
1909 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1910 tmp = fieldname(insn, 4, 4); \
1911 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1912 tmp = fieldname(insn, 0, 4); \
1913 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1916 tmp = fieldname(insn, 4, 4); \
1917 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1918 tmp = fieldname(insn, 0, 4); \
1919 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1922 tmp = fieldname(insn, 4, 4); \
1923 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1924 tmp = fieldname(insn, 0, 4); \
1925 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1928 tmp = fieldname(insn, 4, 4); \
1929 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1930 tmp = fieldname(insn, 0, 4); \
1931 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1934 tmp = fieldname(insn, 4, 4); \
1935 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1936 tmp = fieldname(insn, 4, 4); \
1937 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1938 tmp = fieldname(insn, 0, 4); \
1939 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1942 tmp = fieldname(insn, 4, 4); \
1943 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1944 tmp = fieldname(insn, 4, 4); \
1945 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1946 tmp = fieldname(insn, 0, 4); \
1947 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1950 tmp = fieldname(insn, 4, 4); \
1951 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1952 tmp = fieldname(insn, 4, 4); \
1953 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1954 tmp = fieldname(insn, 0, 4); \
1955 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1958 tmp = fieldname(insn, 12, 4); \
1959 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1960 tmp = fieldname(insn, 12, 4); \
1961 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1962 tmp = fieldname(insn, 4, 4); \
1963 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1964 tmp = fieldname(insn, 0, 4); \
1965 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1968 tmp = fieldname(insn, 4, 4); \
1969 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1970 tmp = fieldname(insn, 0, 4); \
1971 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1974 tmp = fieldname(insn, 4, 4); \
1975 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1976 tmp = fieldname(insn, 4, 4); \
1977 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1978 tmp = fieldname(insn, 0, 4); \
1979 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1982 tmp = fieldname(insn, 12, 4); \
1983 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1984 tmp = fieldname(insn, 12, 4); \
1985 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1986 tmp = fieldname(insn, 4, 4); \
1987 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1988 tmp = fieldname(insn, 0, 4); \
1989 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1992 tmp = fieldname(insn, 4, 4); \
1993 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1994 tmp = fieldname(insn, 0, 4); \
1995 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
1998 tmp = fieldname(insn, 4, 4); \
1999 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2000 tmp = fieldname(insn, 12, 4); \
2001 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2002 tmp = fieldname(insn, 0, 4); \
2003 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2004 tmp = fieldname(insn, 8, 4); \
2005 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2008 tmp = fieldname(insn, 4, 4); \
2009 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2010 tmp = fieldname(insn, 12, 4); \
2011 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2012 tmp = fieldname(insn, 0, 4); \
2013 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2014 tmp = fieldname(insn, 8, 4); \
2015 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2018 tmp = fieldname(insn, 4, 4); \
2019 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2020 tmp = fieldname(insn, 12, 4); \
2021 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2022 tmp = fieldname(insn, 0, 4); \
2023 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2026 tmp = fieldname(insn, 4, 4); \
2027 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2028 tmp = fieldname(insn, 4, 4); \
2029 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2030 tmp = fieldname(insn, 0, 4); \
2031 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2034 tmp = fieldname(insn, 4, 4); \
2035 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2036 tmp = fieldname(insn, 12, 4); \
2037 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2038 tmp = fieldname(insn, 0, 4); \
2039 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2042 tmp = fieldname(insn, 4, 4); \
2043 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2044 tmp = fieldname(insn, 12, 4); \
2045 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2046 tmp = fieldname(insn, 0, 4); \
2047 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2048 tmp = fieldname(insn, 8, 4); \
2049 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2052 tmp = fieldname(insn, 4, 4); \
2053 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2054 tmp = fieldname(insn, 12, 4); \
2055 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2056 tmp = fieldname(insn, 0, 4); \
2057 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2060 tmp = fieldname(insn, 4, 4); \
2061 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2062 tmp = fieldname(insn, 12, 4); \
2063 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2064 tmp = fieldname(insn, 0, 4); \
2065 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2066 tmp = fieldname(insn, 8, 4); \
2067 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2070 tmp = fieldname(insn, 4, 4); \
2071 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2072 tmp = fieldname(insn, 12, 4); \
2073 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2074 tmp = fieldname(insn, 0, 4); \
2075 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2078 tmp = fieldname(insn, 4, 4); \
2079 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2082 tmp = fieldname(insn, 4, 4); \
2083 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2086 tmp = fieldname(insn, 4, 4); \
2087 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2090 tmp = fieldname(insn, 4, 4); \
2091 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2092 tmp = fieldname(insn, 12, 4); \
2093 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2094 tmp = fieldname(insn, 0, 4); \
2095 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2096 tmp = fieldname(insn, 8, 4); \
2097 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2100 tmp = fieldname(insn, 4, 4); \
2101 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2102 tmp = fieldname(insn, 12, 4); \
2103 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2104 tmp = fieldname(insn, 0, 4); \
2105 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2106 tmp = fieldname(insn, 8, 4); \
2107 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2110 tmp = fieldname(insn, 4, 4); \
2111 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2112 tmp = fieldname(insn, 12, 4); \
2113 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2114 tmp = fieldname(insn, 0, 4); \
2115 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2116 tmp = fieldname(insn, 8, 4); \
2117 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2120 tmp = fieldname(insn, 4, 4); \
2121 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2122 tmp = fieldname(insn, 0, 4); \
2123 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2126 tmp = fieldname(insn, 4, 4); \
2127 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2128 tmp = fieldname(insn, 0, 4); \
2129 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2132 tmp = fieldname(insn, 4, 4); \
2133 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2134 tmp = fieldname(insn, 0, 4); \
2135 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2138 tmp = fieldname(insn, 4, 4); \
2139 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2140 tmp = fieldname(insn, 12, 4); \
2141 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2142 tmp = fieldname(insn, 0, 4); \
2143 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2146 tmp = fieldname(insn, 4, 4); \
2147 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2148 tmp = fieldname(insn, 12, 4); \
2149 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2150 tmp = fieldname(insn, 0, 4); \
2151 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2154 tmp = fieldname(insn, 4, 4); \
2155 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2156 tmp = fieldname(insn, 12, 4); \
2157 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2158 tmp = fieldname(insn, 0, 4); \
2159 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2162 tmp = fieldname(insn, 4, 4); \
2163 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2164 tmp = fieldname(insn, 12, 4); \
2165 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2166 tmp = fieldname(insn, 0, 4); \
2167 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2168 tmp = fieldname(insn, 8, 4); \
2169 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2172 tmp = fieldname(insn, 4, 4); \
2173 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2174 tmp = fieldname(insn, 12, 4); \
2175 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2176 tmp = fieldname(insn, 0, 4); \
2177 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2178 tmp = fieldname(insn, 8, 4); \
2179 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2182 tmp = fieldname(insn, 4, 4); \
2183 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2184 tmp = fieldname(insn, 12, 4); \
2185 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2186 tmp = fieldname(insn, 0, 4); \
2187 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2188 tmp = fieldname(insn, 8, 4); \
2189 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2192 tmp = fieldname(insn, 4, 4); \
2193 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2194 tmp = fieldname(insn, 12, 4); \
2195 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2196 tmp = fieldname(insn, 0, 4); \
2197 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2198 tmp = fieldname(insn, 8, 4); \
2199 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2202 tmp = fieldname(insn, 4, 4); \
2203 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2204 tmp = fieldname(insn, 12, 4); \
2205 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2206 tmp = fieldname(insn, 0, 4); \
2207 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2208 tmp = fieldname(insn, 8, 4); \
2209 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2212 tmp = fieldname(insn, 4, 4); \
2213 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2214 tmp = fieldname(insn, 12, 4); \
2215 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2216 tmp = fieldname(insn, 0, 4); \
2217 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2218 tmp = fieldname(insn, 8, 4); \
2219 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2222 tmp = fieldname(insn, 4, 4); \
2223 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2224 tmp = fieldname(insn, 0, 4); \
2225 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2228 tmp = fieldname(insn, 4, 4); \
2229 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2230 tmp = fieldname(insn, 0, 4); \
2231 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2234 tmp = fieldname(insn, 4, 4); \
2235 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2236 tmp = fieldname(insn, 0, 4); \
2237 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2240 tmp = fieldname(insn, 4, 4); \
2241 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2242 tmp = fieldname(insn, 12, 4); \
2243 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2244 tmp = fieldname(insn, 0, 4); \
2245 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2248 tmp = fieldname(insn, 4, 4); \
2249 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2250 tmp = fieldname(insn, 12, 4); \
2251 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2252 tmp = fieldname(insn, 0, 4); \
2253 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2256 tmp = fieldname(insn, 4, 4); \
2257 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2258 tmp = fieldname(insn, 12, 4); \
2259 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2260 tmp = fieldname(insn, 0, 4); \
2261 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2264 tmp = fieldname(insn, 4, 4); \
2265 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2266 tmp = fieldname(insn, 12, 4); \
2267 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2268 tmp = fieldname(insn, 0, 4); \
2269 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2270 tmp = fieldname(insn, 8, 4); \
2271 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2274 tmp = fieldname(insn, 4, 4); \
2275 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2276 tmp = fieldname(insn, 12, 4); \
2277 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2278 tmp = fieldname(insn, 0, 4); \
2279 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2280 tmp = fieldname(insn, 8, 4); \
2281 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2284 tmp = fieldname(insn, 4, 4); \
2285 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2286 tmp = fieldname(insn, 12, 4); \
2287 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2288 tmp = fieldname(insn, 0, 4); \
2289 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2290 tmp = fieldname(insn, 8, 4); \
2291 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2294 tmp = fieldname(insn, 4, 4); \
2295 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2296 tmp = fieldname(insn, 0, 4); \
2297 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2300 tmp = fieldname(insn, 4, 4); \
2301 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2302 tmp = fieldname(insn, 0, 4); \
2303 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2306 tmp = fieldname(insn, 4, 4); \
2307 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2308 tmp = fieldname(insn, 4, 4); \
2309 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2310 tmp = fieldname(insn, 0, 4); \
2311 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2314 tmp = fieldname(insn, 4, 4); \
2315 if (DecodeGR128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2316 tmp = fieldname(insn, 4, 4); \
2317 if (DecodeGR128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2318 tmp = fieldname(insn, 0, 4); \
2319 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2322 tmp = fieldname(insn, 4, 4); \
2323 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2324 tmp = fieldname(insn, 0, 4); \
2325 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2328 tmp = fieldname(insn, 4, 4); \
2329 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2330 tmp = fieldname(insn, 4, 4); \
2331 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2332 tmp = fieldname(insn, 0, 4); \
2333 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2336 tmp = fieldname(insn, 4, 4); \
2337 if (DecodeGR128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2338 tmp = fieldname(insn, 4, 4); \
2339 if (DecodeGR128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2340 tmp = fieldname(insn, 0, 4); \
2341 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2344 tmp = fieldname(insn, 4, 4); \
2345 if (DecodeGR128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2346 tmp = fieldname(insn, 0, 4); \
2347 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2350 tmp = fieldname(insn, 4, 4); \
2351 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2352 tmp = fieldname(insn, 4, 4); \
2353 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2354 tmp = fieldname(insn, 0, 4); \
2355 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2356 tmp = fieldname(insn, 12, 4); \
2357 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2360 tmp = fieldname(insn, 4, 4); \
2361 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2362 tmp = fieldname(insn, 0, 4); \
2363 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2364 tmp = fieldname(insn, 12, 4); \
2365 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2368 tmp = fieldname(insn, 4, 4); \
2369 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2370 tmp = fieldname(insn, 4, 4); \
2371 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2372 tmp = fieldname(insn, 0, 4); \
2373 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2374 tmp = fieldname(insn, 12, 4); \
2375 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2378 tmp = fieldname(insn, 4, 4); \
2379 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2380 tmp = fieldname(insn, 0, 4); \
2381 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2382 tmp = fieldname(insn, 12, 4); \
2383 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2386 tmp = fieldname(insn, 20, 4); \
2387 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2388 tmp = fieldname(insn, 20, 4); \
2389 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2390 tmp = fieldname(insn, 16, 4); \
2391 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2392 tmp = fieldname(insn, 0, 16); \
2393 if (decodeBDAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2396 tmp = fieldname(insn, 36, 4); \
2397 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2398 tmp = fieldname(insn, 0, 32); \
2399 if (decodePC32DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2402 tmp = fieldname(insn, 36, 4); \
2403 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2404 tmp = fieldname(insn, 0, 32); \
2405 if (decodeS32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2408 tmp = fieldname(insn, 0, 32); \
2409 if (decodePC32DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2412 tmp = fieldname(insn, 36, 4); \
2413 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2414 tmp = fieldname(insn, 0, 32); \
2415 if (decodePC32DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2418 tmp = fieldname(insn, 36, 4); \
2419 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2420 tmp = fieldname(insn, 36, 4); \
2421 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2422 tmp = fieldname(insn, 0, 32); \
2423 if (decodeU32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2426 tmp = fieldname(insn, 36, 4); \
2427 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2428 tmp = fieldname(insn, 36, 4); \
2429 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2430 tmp = fieldname(insn, 0, 32); \
2431 if (decodeU32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2434 tmp = fieldname(insn, 36, 4); \
2435 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2436 tmp = fieldname(insn, 0, 32); \
2437 if (decodeU32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2440 tmp = fieldname(insn, 36, 4); \
2441 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2442 tmp = fieldname(insn, 0, 32); \
2443 if (decodeU32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2446 tmp = fieldname(insn, 36, 4); \
2447 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2448 tmp = fieldname(insn, 0, 32); \
2449 if (decodeU32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2452 tmp = fieldname(insn, 36, 4); \
2453 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2454 tmp = fieldname(insn, 36, 4); \
2455 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2456 tmp = fieldname(insn, 0, 32); \
2457 if (decodeS32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2460 tmp = fieldname(insn, 36, 4); \
2461 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2462 tmp = fieldname(insn, 36, 4); \
2463 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2464 tmp = fieldname(insn, 0, 32); \
2465 if (decodeS32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2468 tmp = fieldname(insn, 36, 4); \
2469 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2470 tmp = fieldname(insn, 36, 4); \
2471 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2472 tmp = fieldname(insn, 0, 32); \
2473 if (decodeU32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2476 tmp = fieldname(insn, 36, 4); \
2477 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2478 tmp = fieldname(insn, 0, 32); \
2479 if (decodeS32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2482 tmp = fieldname(insn, 36, 4); \
2483 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2484 tmp = fieldname(insn, 0, 32); \
2485 if (decodePC32DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2488 tmp = fieldname(insn, 36, 4); \
2489 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2490 tmp = fieldname(insn, 36, 4); \
2491 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2492 tmp = fieldname(insn, 0, 32); \
2493 if (decodeS32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2496 tmp = fieldname(insn, 36, 4); \
2497 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2498 tmp = fieldname(insn, 0, 32); \
2499 if (decodeS32ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2502 tmp = fieldname(insn, 16, 24); \
2503 if (decodeBDLAddr64Disp12Len8Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2504 tmp = fieldname(insn, 0, 16); \
2505 if (decodeBDAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2508 tmp = fieldname(insn, 36, 4); \
2509 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2510 tmp = fieldname(insn, 8, 28); \
2511 if (decodeBDXAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2514 tmp = fieldname(insn, 36, 4); \
2515 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2516 tmp = fieldname(insn, 36, 4); \
2517 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2518 tmp = fieldname(insn, 8, 28); \
2519 if (decodeBDXAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2522 tmp = fieldname(insn, 36, 4); \
2523 if (DecodeGR128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2524 tmp = fieldname(insn, 36, 4); \
2525 if (DecodeGR128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2526 tmp = fieldname(insn, 8, 28); \
2527 if (decodeBDXAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2530 tmp = fieldname(insn, 36, 4); \
2531 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2532 tmp = fieldname(insn, 8, 28); \
2533 if (decodeBDXAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2536 tmp = fieldname(insn, 36, 4); \
2537 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2538 tmp = fieldname(insn, 8, 28); \
2539 if (decodeBDXAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2542 tmp = fieldname(insn, 36, 4); \
2543 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2544 tmp = fieldname(insn, 36, 4); \
2545 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2546 tmp = fieldname(insn, 8, 28); \
2547 if (decodeBDXAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2550 tmp = fieldname(insn, 36, 4); \
2551 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2552 tmp = fieldname(insn, 8, 28); \
2553 if (decodeBDXAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2556 tmp = fieldname(insn, 16, 16); \
2557 if (decodeBDAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2558 tmp = fieldname(insn, 0, 16); \
2559 if (decodeS16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2562 tmp = fieldname(insn, 16, 16); \
2563 if (decodeBDAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2564 tmp = fieldname(insn, 0, 16); \
2565 if (decodeU16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2568 tmp = fieldname(insn, 36, 4); \
2569 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2570 tmp = fieldname(insn, 32, 4); \
2571 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2572 tmp = fieldname(insn, 8, 24); \
2573 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2576 tmp = fieldname(insn, 36, 4); \
2577 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2578 tmp = fieldname(insn, 32, 4); \
2579 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2580 tmp = fieldname(insn, 8, 24); \
2581 if (decodeBDAddr32Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2584 tmp = fieldname(insn, 36, 4); \
2585 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2586 tmp = fieldname(insn, 36, 4); \
2587 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2588 tmp = fieldname(insn, 32, 4); \
2589 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2590 tmp = fieldname(insn, 8, 24); \
2591 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2594 tmp = fieldname(insn, 36, 4); \
2595 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2596 tmp = fieldname(insn, 32, 4); \
2597 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2598 tmp = fieldname(insn, 8, 24); \
2599 if (decodeBDAddr32Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2602 tmp = fieldname(insn, 36, 4); \
2603 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2604 tmp = fieldname(insn, 36, 4); \
2605 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2606 tmp = fieldname(insn, 32, 4); \
2607 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2608 tmp = fieldname(insn, 8, 24); \
2609 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2612 tmp = fieldname(insn, 8, 24); \
2613 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2614 tmp = fieldname(insn, 32, 8); \
2615 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2618 tmp = fieldname(insn, 8, 24); \
2619 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2620 tmp = fieldname(insn, 32, 8); \
2621 if (decodeS8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2624 tmp = fieldname(insn, 36, 4); \
2625 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2626 tmp = fieldname(insn, 36, 4); \
2627 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2628 tmp = fieldname(insn, 8, 24); \
2629 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2632 tmp = fieldname(insn, 36, 4); \
2633 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2634 tmp = fieldname(insn, 36, 4); \
2635 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2636 tmp = fieldname(insn, 8, 24); \
2637 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2638 tmp = fieldname(insn, 32, 4); \
2639 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2642 tmp = fieldname(insn, 36, 4); \
2643 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2644 tmp = fieldname(insn, 8, 24); \
2645 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2648 tmp = fieldname(insn, 36, 4); \
2649 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2650 tmp = fieldname(insn, 8, 24); \
2651 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2652 tmp = fieldname(insn, 32, 4); \
2653 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2656 tmp = fieldname(insn, 36, 4); \
2657 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2658 tmp = fieldname(insn, 36, 4); \
2659 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2660 tmp = fieldname(insn, 8, 24); \
2661 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2664 tmp = fieldname(insn, 36, 4); \
2665 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2666 tmp = fieldname(insn, 36, 4); \
2667 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2668 tmp = fieldname(insn, 8, 24); \
2669 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2670 tmp = fieldname(insn, 32, 4); \
2671 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2674 tmp = fieldname(insn, 36, 4); \
2675 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2676 tmp = fieldname(insn, 8, 24); \
2677 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2680 tmp = fieldname(insn, 36, 4); \
2681 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2682 tmp = fieldname(insn, 8, 24); \
2683 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2684 tmp = fieldname(insn, 32, 4); \
2685 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2688 tmp = fieldname(insn, 36, 4); \
2689 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2690 tmp = fieldname(insn, 32, 4); \
2691 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2692 tmp = fieldname(insn, 8, 24); \
2693 if (decodeBDAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2696 tmp = fieldname(insn, 36, 4); \
2697 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2698 tmp = fieldname(insn, 36, 4); \
2699 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2700 tmp = fieldname(insn, 32, 4); \
2701 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2702 tmp = fieldname(insn, 24, 8); \
2703 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2704 tmp = fieldname(insn, 16, 8); \
2705 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2706 tmp = fieldname(insn, 8, 8); \
2707 if (decodeU6ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2710 tmp = fieldname(insn, 36, 4); \
2711 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2712 tmp = fieldname(insn, 36, 4); \
2713 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2714 tmp = fieldname(insn, 32, 4); \
2715 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2716 tmp = fieldname(insn, 24, 8); \
2717 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2718 tmp = fieldname(insn, 16, 8); \
2719 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2720 tmp = fieldname(insn, 8, 8); \
2721 if (decodeU6ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2724 tmp = fieldname(insn, 36, 4); \
2725 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2726 tmp = fieldname(insn, 36, 4); \
2727 if (DecodeGRH32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2728 tmp = fieldname(insn, 32, 4); \
2729 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2730 tmp = fieldname(insn, 24, 8); \
2731 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2732 tmp = fieldname(insn, 16, 8); \
2733 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2734 tmp = fieldname(insn, 8, 8); \
2735 if (decodeU6ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2738 tmp = fieldname(insn, 36, 4); \
2739 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2740 tmp = fieldname(insn, 32, 4); \
2741 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2742 tmp = fieldname(insn, 16, 16); \
2743 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2746 tmp = fieldname(insn, 36, 4); \
2747 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2748 tmp = fieldname(insn, 32, 4); \
2749 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2750 tmp = fieldname(insn, 12, 4); \
2751 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2752 tmp = fieldname(insn, 16, 16); \
2753 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2756 tmp = fieldname(insn, 36, 4); \
2757 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2758 tmp = fieldname(insn, 32, 4); \
2759 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2760 tmp = fieldname(insn, 16, 16); \
2761 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2764 tmp = fieldname(insn, 36, 4); \
2765 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2766 tmp = fieldname(insn, 32, 4); \
2767 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2768 tmp = fieldname(insn, 12, 4); \
2769 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2770 tmp = fieldname(insn, 16, 16); \
2771 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2774 tmp = fieldname(insn, 36, 4); \
2775 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2776 tmp = fieldname(insn, 8, 8); \
2777 if (decodeS8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2778 tmp = fieldname(insn, 16, 16); \
2779 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2782 tmp = fieldname(insn, 36, 4); \
2783 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2784 tmp = fieldname(insn, 8, 8); \
2785 if (decodeS8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2786 tmp = fieldname(insn, 32, 4); \
2787 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2788 tmp = fieldname(insn, 16, 16); \
2789 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2792 tmp = fieldname(insn, 36, 4); \
2793 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2794 tmp = fieldname(insn, 8, 8); \
2795 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2796 tmp = fieldname(insn, 16, 16); \
2797 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2800 tmp = fieldname(insn, 36, 4); \
2801 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2802 tmp = fieldname(insn, 8, 8); \
2803 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2804 tmp = fieldname(insn, 32, 4); \
2805 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2806 tmp = fieldname(insn, 16, 16); \
2807 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2810 tmp = fieldname(insn, 36, 4); \
2811 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2812 tmp = fieldname(insn, 8, 8); \
2813 if (decodeS8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2814 tmp = fieldname(insn, 16, 16); \
2815 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2818 tmp = fieldname(insn, 36, 4); \
2819 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2820 tmp = fieldname(insn, 8, 8); \
2821 if (decodeS8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2822 tmp = fieldname(insn, 32, 4); \
2823 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2824 tmp = fieldname(insn, 16, 16); \
2825 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2828 tmp = fieldname(insn, 36, 4); \
2829 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2830 tmp = fieldname(insn, 8, 8); \
2831 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2832 tmp = fieldname(insn, 16, 16); \
2833 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2836 tmp = fieldname(insn, 36, 4); \
2837 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2838 tmp = fieldname(insn, 8, 8); \
2839 if (decodeU8ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2840 tmp = fieldname(insn, 32, 4); \
2841 if (decodeU4ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2842 tmp = fieldname(insn, 16, 16); \
2843 if (decodePC16DBLOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2846 tmp = fieldname(insn, 36, 4); \
2847 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2848 tmp = fieldname(insn, 32, 4); \
2849 if (DecodeGR32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2850 tmp = fieldname(insn, 16, 16); \
2851 if (decodeS16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2854 tmp = fieldname(insn, 36, 4); \
2855 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2856 tmp = fieldname(insn, 32, 4); \
2857 if (DecodeGR64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2858 tmp = fieldname(insn, 16, 16); \
2859 if (decodeS16ImmOperand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2862 tmp = fieldname(insn, 36, 4); \
2863 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2864 tmp = fieldname(insn, 16, 20); \
2865 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2868 tmp = fieldname(insn, 36, 4); \
2869 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2870 tmp = fieldname(insn, 16, 20); \
2871 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2874 tmp = fieldname(insn, 36, 4); \
2875 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2876 tmp = fieldname(insn, 36, 4); \
2877 if (DecodeFP128BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2878 tmp = fieldname(insn, 16, 20); \
2879 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2882 tmp = fieldname(insn, 36, 4); \
2883 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2884 tmp = fieldname(insn, 16, 20); \
2885 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2888 tmp = fieldname(insn, 36, 4); \
2889 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2890 tmp = fieldname(insn, 36, 4); \
2891 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2892 tmp = fieldname(insn, 16, 20); \
2893 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2896 tmp = fieldname(insn, 36, 4); \
2897 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2898 tmp = fieldname(insn, 36, 4); \
2899 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2900 tmp = fieldname(insn, 16, 20); \
2901 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2904 tmp = fieldname(insn, 12, 4); \
2905 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2906 tmp = fieldname(insn, 12, 4); \
2907 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2908 tmp = fieldname(insn, 36, 4); \
2909 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2910 tmp = fieldname(insn, 16, 20); \
2911 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2914 tmp = fieldname(insn, 12, 4); \
2915 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2916 tmp = fieldname(insn, 12, 4); \
2917 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2918 tmp = fieldname(insn, 36, 4); \
2919 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2920 tmp = fieldname(insn, 16, 20); \
2921 if (decodeBDXAddr64Disp12Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2924 tmp = fieldname(insn, 36, 4); \
2925 if (DecodeFP32BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2926 tmp = fieldname(insn, 8, 28); \
2927 if (decodeBDXAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2930 tmp = fieldname(insn, 36, 4); \
2931 if (DecodeFP64BitRegisterClass(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2932 tmp = fieldname(insn, 8, 28); \
2933 if (decodeBDXAddr64Disp20Operand(MI, tmp, Address, Decoder) == MCDisassembler_Fail) return MCDisassembler_Fail; \
2938 #define DecodeInstruction(fname, fieldname, decoder, InsnType) \
2939 static DecodeStatus fname(const uint8_t DecodeTable[], MCInst *MI, \
2940 InsnType insn, uint64_t Address, const MCRegisterInfo *MRI, int feature) \
2942 uint64_t Bits = getFeatureBits(feature); \
2943 const uint8_t *Ptr = DecodeTable; \
2944 uint32_t CurFieldValue = 0, ExpectedValue; \
2945 DecodeStatus S = MCDisassembler_Success; \
2946 unsigned Start, Len, NumToSkip, PIdx, Opc, DecodeIdx; \
2947 InsnType Val, FieldValue, PositiveMask, NegativeMask; \
2952 return MCDisassembler_Fail; \
2953 case MCD_OPC_ExtractField: { \
2957 CurFieldValue = (uint32_t)fieldname(insn, Start, Len); \
2960 case MCD_OPC_FilterValue: { \
2961 Val = (InsnType)decodeULEB128(++Ptr, &Len); \
2963 NumToSkip = *Ptr++; \
2964 NumToSkip |= (*Ptr++) << 8; \
2965 if (Val != CurFieldValue) \
2969 case MCD_OPC_CheckField: { \
2972 FieldValue = fieldname(insn, Start, Len); \
2973 ExpectedValue = (uint32_t)decodeULEB128(++Ptr, &Len); \
2975 NumToSkip = *Ptr++; \
2976 NumToSkip |= (*Ptr++) << 8; \
2977 if (ExpectedValue != FieldValue) \
2981 case MCD_OPC_CheckPredicate: { \
2982 PIdx = (uint32_t)decodeULEB128(++Ptr, &Len); \
2984 NumToSkip = *Ptr++; \
2985 NumToSkip |= (*Ptr++) << 8; \
2986 Pred = checkDecoderPredicate(PIdx, Bits); \
2992 case MCD_OPC_Decode: { \
2993 Opc = (unsigned)decodeULEB128(++Ptr, &Len); \
2995 DecodeIdx = (unsigned)decodeULEB128(Ptr, &Len); \
2997 MCInst_setOpcode(MI, Opc); \
2998 return decoder(S, DecodeIdx, insn, MI, Address, MRI); \
3000 case MCD_OPC_SoftFail: { \
3001 PositiveMask = (InsnType)decodeULEB128(++Ptr, &Len); \
3003 NegativeMask = (InsnType)decodeULEB128(Ptr, &Len); \
3005 Fail = (insn & PositiveMask) || (~insn & NegativeMask); \
3007 S = MCDisassembler_SoftFail; \
3010 case MCD_OPC_Fail: { \
3011 return MCDisassembler_Fail; \
3017 FieldFromInstruction(fieldFromInstruction,
uint64_t)
3018 DecodeToMCInst(decodeToMCInst, fieldFromInstruction,
uint64_t)
int decodeInstruction(struct InternalInstruction *insn, byteReader_t reader, const void *readerArg, uint64_t startLoc, DisassemblerMode mode)