Home | History | Annotate | Download | only in x86

Lines Matching refs:modifiers

291         # Modifiers
292 self.modifiers = kwargs.pop("modifiers", [])
326 if len(self.modifiers) > 3:
327 raise ValueError("too many modifiers: %s" % (self.modifiers,))
341 mods = ["MOD_%s" % x for x in self.modifiers]
381 def __init__(self, groupname, suffix=None, parser=None, modifiers=None,
396 if modifiers is None:
397 self.modifiers = []
399 self.modifiers = modifiers
463 modifiers=self.modifiers,
484 if len(self.modifiers) > 3:
485 raise ValueError("too many modifiers")
486 mods_str = ["0x%02X" % x for x in self.modifiers]
488 # Ensure modifiers is at least 3 long
665 modifiers=["Op0Add", "OpSizeR", "DOpS64R"],
673 modifiers=["PreAdd", "Op0Add"],
684 modifiers=["Op0Add", "Op1Add"],
692 modifiers=["Op0Add", "Op1Add", "Op2Add"],
702 modifiers=["SpAdd", "Op0Add"],
713 modifiers=["SpAdd", "Op0Add", "Op1Add"],
1069 modifiers=["Op1Add"],
1077 modifiers=["Op1Add"],
1084 modifiers=["Op1Add"],
1092 modifiers=["Op1Add"],
1099 modifiers=["Op1Add"],
1105 add_insn("movsbw", "movszx", suffix="b", modifiers=[0xBE])
1106 add_insn("movsbl", "movszx", suffix="b", modifiers=[0xBE])
1107 add_insn("movswl", "movszx", suffix="w", modifiers=[0xBE])
1108 add_insn("movsbq", "movszx", suffix="b", modifiers=[0xBE], only64=True)
1109 add_insn("movswq", "movszx", suffix="w", modifiers=[0xBE], only64=True)
1110 add_insn("movsx", "movszx", modifiers=[0xBE])
1111 add_insn("movzbw", "movszx", suffix="b", modifiers=[0xB6])
1112 add_insn("movzbl", "movszx", suffix="b", modifiers=[0xB6])
1113 add_insn("movzwl", "movszx", suffix="w", modifiers=[0xB6])
1114 add_insn("movzbq", "movszx", suffix="b", modifiers=[0xB6], only64=True)
1115 add_insn("movzwq", "movszx", suffix="w", modifiers=[0xB6], only64=True)
1116 add_insn("movzx", "movszx", modifiers=[0xB6])
1344 add_insn("pusha", "onebyte", modifiers=[0x60, 0], cpu=["186"], not64=True)
1345 add_insn("pushad", "onebyte", parser="nasm", modifiers=[0x60, 32],
1347 add_insn("pushal", "onebyte", parser="gas", modifiers=[0x60, 32],
1349 add_insn("pushaw", "onebyte", modifiers=[0x60, 16], cpu=["186"], not64=True)
1473 add_insn("popa", "onebyte", modifiers=[0x61, 0], cpu=["186"], not64=True)
1474 add_insn("popad", "onebyte", parser="nasm", modifiers=[0x61, 32],
1476 add_insn("popal", "onebyte", parser="gas", modifiers=[0x61, 32],
1478 add_insn("popaw", "onebyte", modifiers=[0x61, 16], cpu=["186"], not64=True)
1747 modifiers=["Op0Add"],
1753 add_insn("lds", "ldes", modifiers=[0xC5])
1754 add_insn("les", "ldes", modifiers=[0xC4])
1760 modifiers=["Op1Add"],
1766 add_insn("lfs", "lfgss", modifiers=[0xB4])
1767 add_insn("lgs", "lfgss", modifiers=[0xB5])
1768 add_insn("lss", "lfgss", modifiers=[0xB2])
1773 add_insn("clc", "onebyte", modifiers=[0xF8])
1774 add_insn("cld", "onebyte", modifiers=[0xFC])
1775 add_insn("cli", "onebyte", modifiers=[0xFA])
1776 add_insn("clts", "twobyte", modifiers=[0x0F, 0x06], cpu=["286", "Priv"])
1777 add_insn("cmc", "onebyte", modifiers=[0xF5])
1778 add_insn("lahf", "onebyte", modifiers=[0x9F])
1779 add_insn("sahf", "onebyte", modifiers=[0x9E])
1780 add_insn("pushf", "onebyte", modifiers=[0x9C, 0, 64])
1781 add_insn("pushfd", "onebyte", parser="nasm", modifiers=[0x9C, 32],
1783 add_insn("pushfl", "onebyte", parser="gas", modifiers=[0x9C, 32],
1785 add_insn("pushfw", "onebyte", modifiers=[0x9C, 16, 64])
1786 add_insn("pushfq", "onebyte", modifiers=[0x9C, 64, 64], only64=True)
1787 add_insn("popf", "onebyte", modifiers=[0x9D, 0, 64])
1788 add_insn("popfd", "onebyte", parser="nasm", modifiers=[0x9D, 32],
1790 add_insn("popfl", "onebyte", parser="gas", modifiers=[0x9D, 32],
1792 add_insn("popfw", "onebyte", modifiers=[0x9D, 16, 64])
1793 add_insn("popfq", "onebyte", modifiers=[0x9D, 64, 64], only64=True)
1794 add_insn("stc", "onebyte", modifiers=[0xF9])
1795 add_insn("std", "onebyte", modifiers=[0xFD])
1796 add_insn("sti", "onebyte", modifiers=[0xFB])
1803 modifiers=["Op0Add"],
1810 modifiers=["Op2Add", "Op1AddSp"],
1820 modifiers=["Gap", "SpAdd"],
1827 modifiers=["Gap", "SpAdd"],
1835 modifiers=["Gap", "SpAdd"],
1843 modifiers=["Gap", "SpAdd"],
1852 modifiers=["Gap", "SpAdd"],
1863 modifiers=["Gap", "SpAdd"],
1874 modifiers=["Gap", "SpAdd"],
1883 modifiers=["Gap", "SpAdd"],
1895 modifiers=["Gap", "SpAdd"],
1903 modifiers=["Gap", "SpAdd"],
1915 modifiers=["Op0Add"],
1923 modifiers=["Op0Add"],
1929 add_insn("add", "arith", modifiers=[0x00, 0])
1930 add_insn("or", "arith", modifiers=[0x08, 1])
1931 add_insn("adc", "arith", modifiers=[0x10, 2])
1932 add_insn("sbb", "arith", modifiers=[0x18, 3])
1933 add_insn("and", "arith", modifiers=[0x20, 4])
1934 add_insn("sub", "arith", modifiers=[0x28, 5])
1935 add_insn("xor", "arith", modifiers=[0x30, 6])
1936 add_insn("cmp", "arith", modifiers=[0x38, 7])
1943 modifiers=["Gap", "SpAdd"],
1951 modifiers=["Op0Add"],
1957 modifiers=["Gap", "SpAdd"],
1964 modifiers=["Gap", "SpAdd"],
1970 add_insn("inc", "incdec", modifiers=[0x40, 0])
1971 add_insn("dec", "incdec", modifiers=[0x48, 1])
1979 modifiers=["SpAdd"],
1985 add_insn("not", "f6", modifiers=[2])
1986 add_insn("neg", "f6", modifiers=[3])
1987 add_insn("mul", "f6", modifiers=[4])
1996 modifiers=["SpAdd"],
2005 modifiers=["SpAdd"],
2012 add_insn("div", "div", modifiers=[6])
2013 add_insn("idiv", "div", modifiers=[7])
2061 modifiers=["Op0Add"],
2065 modifiers=["Op0Add"],
2069 add_insn("aaa", "onebyte", modifiers=[0x37], not64=True)
2070 add_insn("aas", "onebyte", modifiers=[0x3F], not64=True)
2071 add_insn("daa", "onebyte", modifiers=[0x27], not64=True)
2072 add_insn("das", "onebyte", modifiers=[0x2F], not64=True)
2073 add_insn("aad", "aadm", modifiers=[0x01], not64=True)
2074 add_insn("aam", "aadm", modifiers=[0x00], not64=True)
2079 add_insn("cbw", "onebyte", modifiers=[0x98, 16])
2080 add_insn("cwde", "onebyte", modifiers=[0x98, 32], cpu=["386"])
2081 add_insn("cdqe", "onebyte", modifiers=[0x98, 64], only64=True)
2082 add_insn("cwd", "onebyte", modifiers=[0x99, 16])
2083 add_insn("cdq", "onebyte", modifiers=[0x99, 32], cpu=["386"])
2084 add_insn("cqo", "onebyte", modifiers=[0x99, 64], only64=True)
2089 add_insn("cbtw", "onebyte", parser="gas", modifiers=[0x98, 16])
2090 add_insn("cwtl", "onebyte", parser="gas", modifiers=[0x98, 32], cpu=["386"])
2091 add_insn("cltq", "onebyte", parser="gas", modifiers=[0x98, 64], only64=True)
2092 add_insn("cwtd", "onebyte", parser="gas", modifiers=[0x99, 16])
2093 add_insn("cltd", "onebyte", parser="gas", modifiers=[0x99, 32], cpu=["386"])
2094 add_insn("cqto", "onebyte", parser="gas", modifiers=[0x99, 64], only64=True)
2161 modifiers=["SpAdd"],
2169 modifiers=["SpAdd"],
2178 modifiers=["SpAdd"],
2189 modifiers=["SpAdd"],
2195 add_insn("rol", "shift", modifiers=[0])
2196 add_insn("ror", "shift", modifiers=[1])
2197 add_insn("rcl", "shift", modifiers=[2])
2198 add_insn("rcr", "shift", modifiers=[3])
2199 add_insn("sal", "shift", modifiers=[4])
2200 add_insn("shl", "shift", modifiers=[4])
2201 add_insn("shr", "shift", modifiers=[5])
2202 add_insn("sar", "shift", modifiers=[7])
2211 modifiers=["Op1Add"],
2220 modifiers=["Op1Add"],
2232 modifiers=["Op1Add"],
2238 add_insn("shld", "shlrd", modifiers=[0xA4])
2239 add_insn("shrd", "shlrd", modifiers=[0xAC])
2599 modifiers=["SpAdd"],
2604 modifiers=["SpAdd"],
2617 modifiers=["Gap", "Op0Add"],
2624 modifiers=["Gap", "Op0Add"],
2629 add_insn("ljmp", "ljmpcall", parser="gas", modifiers=[5, 0xEA])
2630 add_insn("lcall", "ljmpcall", parser="gas", modifiers=[3, 0x9A])
2637 modifiers=["Op0Add"],
2642 modifiers=["Op0Add"],
2647 modifiers=["Op0Add", "OpSizeR"],
2652 modifiers=["Op0Add", "OpSizeR"],
2658 modifiers=["Op0Add", "OpSizeR"],
2665 modifiers=["Op0Add", "OpSizeR"],
2669 add_insn("ret", "retnf", modifiers=[0xC2])
2670 add_insn("retw", "retnf", parser="gas", modifiers=[0xC2, 16])
2671 add_insn("retl", "retnf", parser="gas", modifiers=[0xC2], not64=True)
2672 add_insn("retq", "retnf", parser="gas", modifiers=[0xC2], only64=True)
2673 add_insn("retn", "retnf", parser="nasm", modifiers=[0xC2])
2674 add_insn("retf", "retnf", parser="nasm", modifiers=[0xCA, 64])
2675 add_insn("lret", "retnf", parser="gas", modifiers=[0xCA], suffix="z")
2676 add_insn("lretw", "retnf", parser="gas", modifiers=[0xCA, 16], suffix="w")
2677 add_insn("lretl", "retnf", parser="gas", modifiers=[0xCA], suffix="l")
2678 add_insn("lretq", "retnf", parser="gas", modifiers=[0xCA, 64], only64=True,
2721 add_insn("leave", "onebyte", modifiers=[0xC9, 0, 64], cpu=["186"])
2722 add_insn("leavew", "onebyte", parser="gas", modifiers=[0xC9, 16, 0],
2724 add_insn("leavel", "onebyte", parser="gas", modifiers=[0xC9, 0, 64],
2726 add_insn("leaveq", "onebyte", parser="gas", modifiers=[0xC9, 0, 64],
2751 modifiers=["Op0Add"],
2757 modifiers=["Op1Add"],
2765 modifiers=["Op1Add"],
2771 modifiers=["Op1Add"],
2778 modifiers=["Op1Add"],
2783 add_insn("jo", "jcc", modifiers=[0x00])
2784 add_insn("jno", "jcc", modifiers=[0x01])
2785 add_insn("jb", "jcc", modifiers=[0x02])
2786 add_insn("jc", "jcc", modifiers=[0x02])
2787 add_insn("jnae", "jcc", modifiers=[0x02])
2788 add_insn("jnb", "jcc", modifiers=[0x03])
2789 add_insn("jnc", "jcc", modifiers=[0x03])
2790 add_insn("jae", "jcc", modifiers=[0x03])
2791 add_insn("je", "jcc", modifiers=[0x04])
2792 add_insn("jz", "jcc", modifiers=[0x04])
2793 add_insn("jne", "jcc", modifiers=[0x05])
2794 add_insn("jnz", "jcc", modifiers=[0x05])
2795 add_insn("jbe", "jcc", modifiers=[0x06])
2796 add_insn("jna", "jcc", modifiers=[0x06])
2797 add_insn("jnbe", "jcc", modifiers=[0x07])
2798 add_insn("ja", "jcc", modifiers=[0x07])
2799 add_insn("js", "jcc", modifiers=[0x08])
2800 add_insn("jns", "jcc", modifiers=[0x09])
2801 add_insn("jp", "jcc", modifiers=[0x0A])
2802 add_insn("jpe", "jcc", modifiers=[0x0A])
2803 add_insn("jnp", "jcc", modifiers=[0x0B])
2804 add_insn("jpo", "jcc", modifiers=[0x0B])
2805 add_insn("jl", "jcc", modifiers=[0x0C])
2806 add_insn("jnge", "jcc", modifiers=[0x0C])
2807 add_insn("jnl", "jcc", modifiers=[0x0D])
2808 add_insn("jge", "jcc", modifiers=[0x0D])
2809 add_insn("jle", "jcc", modifiers=[0x0E])
2810 add_insn("jng", "jcc", modifiers=[0x0E])
2811 add_insn("jnle", "jcc", modifiers=[0x0F])
2812 add_insn("jg", "jcc", modifiers=[0x0F])
2818 modifiers=["AdSizeR"],
2822 modifiers=["AdSizeR"],
2827 add_insn("jcxz", "jcxz", modifiers=[16])
2828 add_insn("jecxz", "jcxz", modifiers=[32], cpu=["386"])
2829 add_insn("jrcxz", "jcxz", modifiers=[64], only64=True)
2855 modifiers=["Op0Add"],
2860 modifiers=["Op0Add"],
2866 add_insn("loop", "loop", modifiers=[2])
2867 add_insn("loopz", "loop", modifiers=[1])
2868 add_insn("loope", "loop", modifiers=[1])
2869 add_insn("loopnz", "loop", modifiers=[0])
2870 add_insn("loopne", "loop", modifiers=[0])
2872 # GAS w/l/q suffixes have to set addrsize via modifiers
2877 modifiers=["Gap", "AdSizeR"],
2884 modifiers=["Op0Add", "AdSizeR"],
2899 modifiers=["Op0Add"],
2905 add_insn("loop"+sfx, "loop"+sfx, parser="gas", modifiers=[2, sz])
2906 add_insn("loopz"+sfx, "loop"+sfx, parser="gas", modifiers=[1, sz])
2907 add_insn("loope"+sfx, "loop"+sfx, parser="gas", modifiers=[1, sz])
2908 add_insn("loopnz"+sfx, "loop"+sfx, parser="gas", modifiers=[0, sz])
2909 add_insn("loopne"+sfx, "loop"+sfx, parser="gas", modifiers=[0, sz])
2917 modifiers=["Op1Add"],
2922 add_insn("seto", "setcc", modifiers=[0x00])
2923 add_insn("setno", "setcc", modifiers=[0x01])
2924 add_insn("setb", "setcc", modifiers=[0x02])
2925 add_insn("setc", "setcc", modifiers=[0x02])
2926 add_insn("setnae", "setcc", modifiers=[0x02])
2927 add_insn("setnb", "setcc", modifiers=[0x03])
2928 add_insn("setnc", "setcc", modifiers=[0x03])
2929 add_insn("setae", "setcc", modifiers=[0x03])
2930 add_insn("sete", "setcc", modifiers=[0x04])
2931 add_insn("setz", "setcc", modifiers=[0x04])
2932 add_insn("setne", "setcc", modifiers=[0x05])
2933 add_insn("setnz", "setcc", modifiers=[0x05])
2934 add_insn("setbe", "setcc", modifiers=[0x06])
2935 add_insn("setna", "setcc", modifiers=[0x06])
2936 add_insn("setnbe", "setcc", modifiers=[0x07])
2937 add_insn("seta", "setcc", modifiers=[0x07])
2938 add_insn("sets", "setcc", modifiers=[0x08])
2939 add_insn("setns", "setcc", modifiers=[0x09])
2940 add_insn("setp", "setcc", modifiers=[0x0A])
2941 add_insn("setpe", "setcc", modifiers=[0x0A])
2942 add_insn("setnp", "setcc", modifiers=[0x0B])
2943 add_insn("setpo", "setcc", modifiers=[0x0B])
2944 add_insn("setl", "setcc", modifiers=[0x0C])
2945 add_insn("setnge", "setcc", modifiers=[0x0C])
2946 add_insn("setnl", "setcc", modifiers=[0x0D])
2947 add_insn("setge", "setcc", modifiers=[0x0D])
2948 add_insn("setle", "setcc", modifiers=[0x0E])
2949 add_insn("setng", "setcc", modifiers=[0x0E])
2950 add_insn("setnle", "setcc", modifiers=[0x0F])
2951 add_insn("setg", "setcc", modifiers=[0x0F])
2956 add_insn("cmpsb", "onebyte", modifiers=[0xA6, 0])
2957 add_insn("cmpsw", "onebyte", modifiers=[0xA7, 16])
2969 add_insn("cmpsl", "onebyte", parser="gas", modifiers=[0xA7, 32], cpu=["386"])
2970 add_insn("cmpsq", "onebyte", modifiers=[0xA7, 64], only64=True)
2971 add_insn("insb", "onebyte", modifiers=[0x6C, 0])
2972 add_insn("insw", "onebyte", modifiers=[0x6D, 16])
2973 add_insn("insd", "onebyte", parser="nasm", modifiers=[0x6D, 32], cpu=["386"])
2974 add_insn("insl", "onebyte", parser="gas", modifiers=[0x6D, 32], cpu=["386"])
2975 add_insn("outsb", "onebyte", modifiers=[0x6E, 0])
2976 add_insn("outsw", "onebyte", modifiers=[0x6F, 16])
2977 add_insn("outsd", "onebyte", parser="nasm", modifiers=[0x6F, 32],
2979 add_insn("outsl", "onebyte", parser="gas", modifiers=[0x6F, 32], cpu=["386"])
2980 add_insn("lodsb", "onebyte", modifiers=[0xAC, 0])
2981 add_insn("lodsw", "onebyte", modifiers=[0xAD, 16])
2982 add_insn("lodsd", "onebyte", parser="nasm", modifiers=[0xAD, 32],
2984 add_insn("lodsl", "onebyte", parser="gas", modifiers=[0xAD, 32], cpu=["386"])
2985 add_insn("lodsq", "onebyte", modifiers=[0xAD, 64], only64=True)
2986 add_insn("movsb", "onebyte", modifiers=[0xA4, 0])
2987 add_insn("movsw", "onebyte", modifiers=[0xA5, 16])
2999 add_insn("movsl", "onebyte", parser="gas", modifiers=[0xA5, 32], cpu=["386"])
3000 add_insn("movsq", "onebyte", modifiers=[0xA5, 64], only64=True)
3002 add_insn("smovb", "onebyte", parser="gas", modifiers=[0xA4, 0])
3003 add_insn("smovw", "onebyte", parser="gas", modifiers=[0xA5, 16])
3004 add_insn("smovl", "onebyte", parser="gas", modifiers=[0xA5, 32], cpu=["386"])
3005 add_insn("smovq", "onebyte", parser="gas", modifiers=[0xA5, 64], only64=True)
3006 add_insn("scasb", "onebyte", modifiers=[0xAE, 0])
3007 add_insn("scasw", "onebyte", modifiers=[0xAF, 16])
3008 add_insn("scasd", "onebyte", parser="nasm", modifiers=[0xAF, 32],
3010 add_insn("scasl", "onebyte", parser="gas", modifiers=[0xAF, 32], cpu=["386"])
3011 add_insn("scasq", "onebyte", modifiers=[0xAF, 64], only64=True)
3013 add_insn("sscab", "onebyte", parser="gas", modifiers=[0xAE, 0])
3014 add_insn("sscaw", "onebyte", parser="gas", modifiers=[0xAF, 16])
3015 add_insn("sscal", "onebyte", parser="gas", modifiers=[0xAF, 32], cpu=["386"])
3016 add_insn("sscaq", "onebyte", parser="gas", modifiers=[0xAF, 64], only64=True)
3017 add_insn("stosb", "onebyte", modifiers=[0xAA, 0])
3018 add_insn("stosw", "onebyte", modifiers=[0xAB, 16])
3019 add_insn("stosd", "onebyte", parser="nasm", modifiers=[0xAB, 32],
3021 add_insn("stosl", "onebyte", parser="gas", modifiers=[0xAB, 32], cpu=["386"])
3022 add_insn("stosq", "onebyte", modifiers=[0xAB, 64], only64=True)
3023 add_insn("xlatb", "onebyte", modifiers=[0xD7, 0])
3036 modifiers=["Op1Add"],
3045 modifiers=["Gap", "SpAdd"],
3052 add_insn("bt", "bittest", modifiers=[0xA3, 4])
3053 add_insn("bts", "bittest", modifiers=[0xAB, 5])
3054 add_insn("btr", "bittest", modifiers=[0xB3, 6])
3055 add_insn("btc", "bittest", modifiers=[0xBB, 7])
3063 modifiers=["Op1Add"],
3069 add_insn("bsf", "bsfr", modifiers=[0xBC], cpu=["386"])
3070 add_insn("bsr", "bsfr", modifiers=[0xBD], cpu=["386"])
3080 add_insn("int3", "onebyte", modifiers=[0xCC])
3081 add_insn("int03", "onebyte", parser="nasm", modifiers=[0xCC])
3082 add_insn("into", "onebyte", modifiers=[0xCE], not64=True)
3083 add_insn("iret", "onebyte", modifiers=[0xCF])
3084 add_insn("iretw", "onebyte", modifiers=[0xCF, 16])
3085 add_insn("iretd", "onebyte", parser="nasm", modifiers=[0xCF, 32],
3087 add_insn("iretl", "onebyte", parser="gas", modifiers=[0xCF, 32], cpu=["386"])
3088 add_insn("iretq", "onebyte", modifiers=[0xCF, 64], only64=True)
3089 add_insn("rsm", "twobyte", modifiers=[0x0F, 0xAA], cpu=["586", "SMM"])
3102 add_insn("hlt", "onebyte", modifiers=[0xF4], cpu=["Priv"])
3103 add_insn("nop", "onebyte", modifiers=[0x90])
3111 modifiers=["Op1Add"],
3118 modifiers=["Op1Add"],
3124 add_insn("lar", "larlsl", modifiers=[0x02], cpu=["286", "Prot"])
3125 add_insn("lsl", "larlsl", modifiers=[0x03], cpu=["286", "Prot"])
3139 modifiers=[2, 0x0F, 0x01], cpu=["286", "Priv"])
3141 modifiers=[3, 0x0F, 0x01], cpu=["286", "Priv"])
3143 modifiers=[0, 0x0F, 0x01], cpu=["286", "Priv"])
3145 modifiers=[1, 0x0F, 0x01], cpu=["286", "Priv"])
3167 modifiers=["SpAdd", "Op1Add"],
3172 add_insn("lldt", "prot286", modifiers=[2, 0], cpu=["286", "Prot", "Priv"])
3173 add_insn("ltr", "prot286", modifiers=[3, 0], cpu=["286", "Prot", "Priv"])
3174 add_insn("verr", "prot286", modifiers=[4, 0], cpu=["286", "Prot"])
3175 add_insn("verw", "prot286", modifiers=[5, 0], cpu=["286", "Prot"])
3176 add_insn("lmsw", "prot286", modifiers=[6, 1], cpu=["286", "Priv"])
3183 modifiers=["SpAdd", "Op1Add"],
3191 modifiers=["SpAdd", "Op1Add"],
3197 add_insn("sldt", "sldtmsw", modifiers=[0, 0])
3198 add_insn("smsw", "sldtmsw", modifiers=[4, 1])
3203 add_insn("fcompp", "twobyte", modifiers=[0xDE, 0xD9], cpu=["FPU"])
3204 add_insn("fucompp", "twobyte", modifiers=[0xDA, 0xE9], cpu=["286", "FPU"])
3205 add_insn("ftst", "twobyte", modifiers=[0xD9, 0xE4], cpu=["FPU"])
3206 add_insn("fxam", "twobyte", modifiers=[0xD9, 0xE5], cpu=["FPU"])
3207 add_insn("fld1", "twobyte", modifiers=[0xD9, 0xE8], cpu=["FPU"])
3208 add_insn("fldl2t", "twobyte", modifiers=[0xD9, 0xE9], cpu=["FPU"])
3209 add_insn("fldl2e", "twobyte", modifiers=[0xD9, 0xEA], cpu=["FPU"])
3210 add_insn("fldpi", "twobyte", modifiers=[0xD9, 0xEB], cpu=["FPU"])
3211 add_insn("fldlg2", "twobyte", modifiers=[0xD9, 0xEC], cpu=["FPU"])
3212 add_insn("fldln2", "twobyte", modifiers=[0xD9, 0xED], cpu=["FPU"])
3213 add_insn("fldz", "twobyte", modifiers=[0xD9, 0xEE], cpu=["FPU"])
3214 add_insn("f2xm1", "twobyte", modifiers=[0xD9, 0xF0], cpu=["FPU"])
3215 add_insn("fyl2x", "twobyte", modifiers=[0xD9, 0xF1], cpu=["FPU"])
3216 add_insn("fptan", "twobyte", modifiers=[0xD9, 0xF2], cpu=["FPU"])
3217 add_insn("fpatan", "twobyte", modifiers=[0xD9, 0xF3], cpu=["FPU"])
3218 add_insn("fxtract", "twobyte", modifiers=[0xD9, 0xF4], cpu=["FPU"])
3219 add_insn("fprem1", "twobyte", modifiers=[0xD9, 0xF5], cpu=["286", "FPU"])
3220 add_insn("fdecstp", "twobyte", modifiers=[0xD9, 0xF6], cpu=["FPU"])
3221 add_insn("fincstp", "twobyte", modifiers=[0xD9, 0xF7], cpu=["FPU"])
3222 add_insn("fprem", "twobyte", modifiers=[0xD9, 0xF8], cpu=["FPU"])
3223 add_insn("fyl2xp1", "twobyte", modifiers=[0xD9, 0xF9], cpu=["FPU"])
3224 add_insn("fsqrt", "twobyte", modifiers=[0xD9, 0xFA], cpu=["FPU"])
3225 add_insn("fsincos", "twobyte", modifiers=[0xD9, 0xFB], cpu=["286", "FPU"])
3226 add_insn("frndint", "twobyte", modifiers=[0xD9, 0xFC], cpu=["FPU"])
3227 add_insn("fscale", "twobyte", modifiers=[0xD9, 0xFD], cpu=["FPU"])
3228 add_insn("fsin", "twobyte", modifiers=[0xD9, 0xFE], cpu=["286", "FPU"])
3229 add_insn("fcos", "twobyte", modifiers=[0xD9, 0xFF], cpu=["286", "FPU"])
3230 add_insn("fchs", "twobyte", modifiers=[0xD9, 0xE0], cpu=["FPU"])
3231 add_insn("fabs", "twobyte", modifiers=[0xD9, 0xE1], cpu=["FPU"])
3232 add_insn("fninit", "twobyte", modifiers=[0xDB, 0xE3], cpu=["FPU"])
3233 add_insn("finit", "threebyte", modifiers=[0x9B, 0xDB, 0xE3], cpu=["FPU"])
3234 add_insn("fnclex", "twobyte", modifiers=[0xDB, 0xE2], cpu=["FPU"])
3235 add_insn("fclex", "threebyte", modifiers=[0x9B, 0xDB, 0xE2], cpu=["FPU"])
3238 modifiers=[6, 0xD9], cpu=["FPU"])
3240 modifiers=[6, 0x9B, 0xD9], cpu=["FPU"])
3242 modifiers=[4, 0xD9], cpu=["FPU"])
3244 modifiers=[6, 0xDD], cpu=["FPU"])
3246 modifiers=[6, 0x9B, 0xDD], cpu=["FPU"])
3248 modifiers=[4, 0xDD], cpu=["FPU"])
3249 add_insn("fnop", "twobyte", modifiers=[0xD9, 0xD0], cpu=["FPU"])
3250 add_insn("fwait", "onebyte", modifiers=[0x9B], cpu=["FPU"])
3252 add_insn("wait", "onebyte", modifiers=[0x9B])
3308 modifiers=["SpAdd"],
3313 add_insn("fldt", "fldstpt", modifiers=[5])
3314 add_insn("fstpt", "fldstpt", modifiers=[7])
3319 modifiers=["SpAdd"],
3326 modifiers=["SpAdd"],
3333 modifiers=["Gap", "Op0Add", "SpAdd"],
3341 modifiers=["SpAdd"],
3346 add_insn("fild", "fildstp", modifiers=[0, 2, 5])
3347 add_insn("fistp", "fildstp", modifiers=[3, 2, 7])
3351 modifiers=["SpAdd"],
3356 add_insn("fbld", "fbldstp", modifiers=[4])
3357 add_insn("fildll", "fbldstp", parser="gas", modifiers=[5])
3358 add_insn("fbstp", "fbldstp", modifiers=[6])
3359 add_insn("fistpll", "fbldstp", parser="gas", modifiers=[7])
3413 modifiers=["Gap", "SpAdd"],
3420 modifiers=["Gap", "SpAdd"],
3426 modifiers=["Op1Add"],
3433 modifiers=["Gap", "SpAdd"],
3441 modifiers=["Op1Add"],
3447 modifiers=["Op1Add"],
3452 add_insn("fcom", "fcom", modifiers=[0xD0, 2])
3453 add_insn("fcomp", "fcom", modifiers=[0xD8, 3])
3460 modifiers=["Op0Add", "Op1Add"],
3465 modifiers=["Op0Add", "Op1Add"],
3470 add_insn("fucom", "fcom2", modifiers=[0xDD, 0xE0])
3471 add_insn("fucomp", "fcom2", modifiers=[0xDD, 0xE8])
3479 modifiers=["Gap", "Gap", "SpAdd"],
3486 modifiers=["Gap", "Gap", "SpAdd"],
3492 modifiers=["Gap", "Op1Add"],
3497 modifiers=["Gap", "Op1Add"],
3503 modifiers=["Op1Add"],
3509 modifiers=["Op1Add"],
3516 modifiers=["Gap", "Op1Add"],
3521 add_insn("fadd", "farith", modifiers=[0xC0, 0xC0, 0])
3522 add_insn("fsub", "farith", modifiers=[0xE8, 0xE0, 4])
3523 add_insn("fsubr", "farith", modifiers=[0xE0, 0xE8, 5])
3524 add_insn("fmul", "farith", modifiers=[0xC8, 0xC8, 1])
3525 add_insn("fdiv", "farith", modifiers=[0xF8, 0xF0, 6])
3526 add_insn("fdivr", "farith", modifiers=[0xF0, 0xF8, 7])
3530 modifiers=["Op1Add"],
3535 modifiers=["Op1Add"],
3540 modifiers=["Op1Add"],
3545 add_insn("faddp", "farithp", modifiers=[0xC0])
3546 add_insn("fsubp", "farithp", parser="nasm", modifiers=[0xE8])
3547 add_insn("fsubp", "farithp", parser="gas", modifiers=[0xE0])
3548 add_insn("fsubrp", "farithp", parser="nasm", modifiers=[0xE0])
3549 add_insn("fsubrp", "farithp", parser="gas", modifiers=[0xE8])
3550 add_insn("fmulp", "farithp", modifiers=[0xC8])
3551 add_insn("fdivp", "farithp", parser="nasm", modifiers=[0xF8])
3552 add_insn("fdivp", "farithp", parser="gas", modifiers=[0xF0])
3553 add_insn("fdivrp", "farithp", parser="nasm", modifiers=[0xF0])
3554 add_insn("fdivrp", "farithp", parser="gas", modifiers=[0xF8])
3562 modifiers=["SpAdd", "Op0Add"],
3569 modifiers=["SpAdd", "Op0Add"],
3574 add_insn("fist", "fiarith", modifiers=[2, 0xDB])
3575 add_insn("ficom", "fiarith", modifiers=[2, 0xDA])
3576 add_insn("ficomp", "fiarith", modifiers=[3, 0xDA])
3577 add_insn("fiadd", "fiarith", modifiers=[0, 0xDA])
3578 add_insn("fisub", "fiarith", modifiers=[4, 0xDA])
3579 add_insn("fisubr", "fiarith", modifiers=[5, 0xDA])
3580 add_insn("fimul", "fiarith", modifiers=[1, 0xDA])
3581 add_insn("fidiv", "fiarith", modifiers=[6, 0xDA])
3582 add_insn("fidivr", "fiarith", modifiers=[7, 0xDA])
3590 modifiers=["SpAdd"],
3595 add_insn("fldcw", "fldnstcw", modifiers=[5])
3596 add_insn("fnstcw", "fldnstcw", modifiers=[7])
3637 modifiers=["Op0Add"],
3641 add_insn("ffree", "ffree", modifiers=[0xDD])
3642 add_insn("ffreep", "ffree", modifiers=[0xDF], cpu=["686", "FPU", "Undoc"])
3665 modifiers=["Op1Add"],
3671 add_insn("xadd", "cmpxchgxadd", modifiers=[0xC0])
3672 add_insn("cmpxchg", "cmpxchgxadd", modifiers=[0xB0])
3673 add_insn("cmpxchg486", "cmpxchgxadd", parser="nasm", modifiers=[0xA6],
3676 add_insn("invd", "twobyte", modifiers=[0x0F, 0x08], cpu=["486", "Priv"])
3677 add_insn("wbinvd", "twobyte", modifiers=[0x0F, 0x09], cpu=["486", "Priv"])
3678 add_insn("invlpg", "twobytemem", modifiers=[7, 0x0F, 0x01],
3684 add_insn("cpuid", "twobyte", modifiers=[0x0F, 0xA2], cpu=["486"])
3689 add_insn("wrmsr", "twobyte", modifiers=[0x0F, 0x30], cpu=["586", "Priv"])
3690 add_insn("rdtsc", "twobyte", modifiers=[0x0F, 0x31], cpu=["586"])
3691 add_insn("rdmsr", "twobyte", modifiers=[0x0F, 0x32], cpu=["586", "Priv"])
3705 add_insn("sysenter", "twobyte", modifiers=[0x0F, 0x34], cpu=["686"],
3707 add_insn("sysexit", "twobyte", modifiers=[0x0F, 0x35], cpu=["686", "Priv"],
3711 modifiers=[0, 0x0F, 0xAE], cpu=["686", "FPU"])
3713 modifiers=[1, 0x0F, 0xAE], cpu=["686", "FPU"])
3714 add_insn("rdpmc", "twobyte", modifiers=[0x0F, 0x33], cpu=["686"])
3715 add_insn("ud2", "twobyte", modifiers=[0x0F, 0x0B], cpu=["286"])
3716 add_insn("ud1", "twobyte", modifiers=[0x0F, 0xB9], cpu=["286", "Undoc"])
3722 modifiers=["Op1Add"],
3728 add_insn("cmovo", "cmovcc", modifiers=[0x00])
3729 add_insn("cmovno", "cmovcc", modifiers=[0x01])
3730 add_insn("cmovb", "cmovcc", modifiers=[0x02])
3731 add_insn("cmovc", "cmovcc", modifiers=[0x02])
3732 add_insn("cmovnae", "cmovcc", modifiers=[0x02])
3733 add_insn("cmovnb", "cmovcc", modifiers=[0x03])
3734 add_insn("cmovnc", "cmovcc", modifiers=[0x03])
3735 add_insn("cmovae", "cmovcc", modifiers=[0x03])
3736 add_insn("cmove", "cmovcc", modifiers=[0x04])
3737 add_insn("cmovz", "cmovcc", modifiers=[0x04])
3738 add_insn("cmovne", "cmovcc", modifiers=[0x05])
3739 add_insn("cmovnz", "cmovcc", modifiers=[0x05])
3740 add_insn("cmovbe", "cmovcc", modifiers=[0x06])
3741 add_insn("cmovna", "cmovcc", modifiers=[0x06])
3742 add_insn("cmovnbe", "cmovcc", modifiers=[0x07])
3743 add_insn("cmova", "cmovcc", modifiers=[0x07])
3744 add_insn("cmovs", "cmovcc", modifiers=[0x08])
3745 add_insn("cmovns", "cmovcc", modifiers=[0x09])
3746 add_insn("cmovp", "cmovcc", modifiers=[0x0A])
3747 add_insn("cmovpe", "cmovcc", modifiers=[0x0A])
3748 add_insn("cmovnp", "cmovcc", modifiers=[0x0B])
3749 add_insn("cmovpo", "cmovcc", modifiers=[0x0B])
3750 add_insn("cmovl", "cmovcc", modifiers=[0x0C])
3751 add_insn("cmovnge", "cmovcc", modifiers=[0x0C])
3752 add_insn("cmovnl", "cmovcc", modifiers=[0x0D])
3753 add_insn("cmovge", "cmovcc", modifiers=[0x0D])
3754 add_insn("cmovle", "cmovcc", modifiers=[0x0E])
3755 add_insn("cmovng", "cmovcc", modifiers=[0x0E])
3756 add_insn("cmovnle", "cmovcc", modifiers=[0x0F])
3757 add_insn("cmovg", "cmovcc", modifiers=[0x0F])
3761 modifiers=["Op0Add", "Op1Add"],
3766 add_insn("fcmovb", "fcmovcc", modifiers=[0xDA, 0xC0])
3767 add_insn("fcmove", "fcmovcc", modifiers=[0xDA, 0xC8])
3768 add_insn("fcmovbe", "fcmovcc", modifiers=[0xDA, 0xD0])
3769 add_insn("fcmovu", "fcmovcc", modifiers=[0xDA, 0xD8])
3770 add_insn("fcmovnb", "fcmovcc", modifiers=[0xDB, 0xC0])
3771 add_insn("fcmovne", "fcmovcc", modifiers=[0xDB, 0xC8])
3772 add_insn("fcmovnbe", "fcmovcc", modifiers=[0xDB, 0xD0])
3773 add_insn("fcmovnu", "fcmovcc", modifiers=[0xDB, 0xD8])
3775 add_insn("fcomi", "fcom2", modifiers=[0xDB, 0xF0], cpu=["686", "FPU"])
3776 add_insn("fucomi", "fcom2", modifiers=[0xDB, 0xE8], cpu=["686", "FPU"])
3777 add_insn("fcomip", "fcom2", modifiers=[0xDF, 0xF0], cpu=["686", "FPU"])
3778 add_insn("fucomip", "fcom2", modifiers=[0xDF, 0xE8], cpu=["686", "FPU"])
3807 add_insn("lfence", "threebyte", modifiers=[0x0F, 0xAE, 0xE8], cpu=["P3"])
3808 add_insn("mfence", "threebyte", modifiers=[0x0F, 0xAE, 0xF0], cpu=["P3"])
3809 add_insn("pause", "onebyte_prefix", modifiers=[0xF3, 0x90], cpu=["P4"])
3815 add_insn("emms", "twobyte", modifiers=[0x0F, 0x77], cpu=["MMX"])
3946 modifiers=["Op1Add"],
3952 modifiers=["Op1Add"],
3958 add_insn("packssdw", "mmxsse2", modifiers=[0x6B])
3959 add_insn("packsswb", "mmxsse2", modifiers=[0x63])
3960 add_insn("packuswb", "mmxsse2", modifiers=[0x67])
3961 add_insn("paddb", "mmxsse2", modifiers=[0xFC])
3962 add_insn("paddw", "mmxsse2", modifiers=[0xFD])
3963 add_insn("paddd", "mmxsse2", modifiers=[0xFE])
3964 add_insn("paddq", "mmxsse2", modifiers=[0xD4])
3965 add_insn("paddsb", "mmxsse2", modifiers=[0xEC])
3966 add_insn("paddsw", "mmxsse2", modifiers=[0xED])
3967 add_insn("paddusb", "mmxsse2", modifiers=[0xDC])
3968 add_insn("paddusw", "mmxsse2", modifiers=[0xDD])
3969 add_insn("pand", "mmxsse2", modifiers=[0xDB])
3970 add_insn("pandn", "mmxsse2", modifiers=[0xDF])
3971 add_insn("pcmpeqb", "mmxsse2", modifiers=[0x74])
3972 add_insn("pcmpeqw", "mmxsse2", modifiers=[0x75])
3973 add_insn("pcmpeqd", "mmxsse2", modifiers=[0x76])
3974 add_insn("pcmpgtb", "mmxsse2", modifiers=[0x64])
3975 add_insn("pcmpgtw", "mmxsse2", modifiers=[0x65])
3976 add_insn("pcmpgtd", "mmxsse2", modifiers=[0x66])
3977 add_insn("pmaddwd", "mmxsse2", modifiers=[0xF5])
3978 add_insn("pmulhw", "mmxsse2", modifiers=[0xE5])
3979 add_insn("pmullw", "mmxsse2", modifiers=[0xD5])
3980 add_insn("por", "mmxsse2", modifiers=[0xEB])
3981 add_insn("psubb", "mmxsse2", modifiers=[0xF8])
3982 add_insn("psubw", "mmxsse2", modifiers=[0xF9])
3983 add_insn("psubd", "mmxsse2", modifiers=[0xFA])
3984 add_insn("psubq", "mmxsse2", modifiers=[0xFB])
3985 add_insn("psubsb", "mmxsse2", modifiers=[0xE8])
3986 add_insn("psubsw", "mmxsse2", modifiers=[0xE9])
3987 add_insn("psubusb", "mmxsse2", modifiers=[0xD8])
3988 add_insn("psubusw", "mmxsse2", modifiers=[0xD9])
3989 add_insn("punpckhbw", "mmxsse2", modifiers=[0x68])
3990 add_insn("punpckhwd", "mmxsse2", modifiers=[0x69])
3991 add_insn("punpckhdq", "mmxsse2", modifiers=[0x6A])
3992 add_insn("punpcklbw", "mmxsse2", modifiers=[0x60])
3993 add_insn("punpcklwd", "mmxsse2", modifiers=[0x61])
3994 add_insn("punpckldq", "mmxsse2", modifiers=[0x62])
3995 add_insn("pxor", "mmxsse2", modifiers=[0xEF])
3998 add_insn("vpackssdw", "xmm_xmm128_256avx2", modifiers=[0x66, 0x6B, VEXL0], avx=True)
3999 add_insn("vpacksswb", "xmm_xmm128_256avx2", modifiers=[0x66, 0x63, VEXL0], avx=True)
4000 add_insn("vpackuswb", "xmm_xmm128_256avx2", modifiers=[0x66, 0x67, VEXL0], avx=True)
4001 add_insn("vpaddb", "xmm_xmm128_256avx2", modifiers=[0x66, 0xFC, VEXL0], avx=True)
4002 add_insn("vpaddw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xFD, VEXL0], avx=True)
4003 add_insn("vpaddd", "xmm_xmm128_256avx2", modifiers=[0x66, 0xFE, VEXL0], avx=True)
4004 add_insn("vpaddq", "xmm_xmm128_256avx2", modifiers=[0x66, 0xD4, VEXL0], avx=True)
4005 add_insn("vpaddsb", "xmm_xmm128_256avx2", modifiers=[0x66, 0xEC, VEXL0], avx=True)
4006 add_insn("vpaddsw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xED, VEXL0], avx=True)
4007 add_insn("vpaddusb", "xmm_xmm128_256avx2", modifiers=[0x66, 0xDC, VEXL0], avx=True)
4008 add_insn("vpaddusw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xDD, VEXL0], avx=True)
4009 add_insn("vpand", "xmm_xmm128_256avx2", modifiers=[0x66, 0xDB, VEXL0], avx=True)
4010 add_insn("vpandn", "xmm_xmm128_256avx2", modifiers=[0x66, 0xDF, VEXL0], avx=True)
4011 add_insn("vpcmpeqb", "xmm_xmm128_256avx2", modifiers=[0x66, 0x74, VEXL0], avx=True)
4012 add_insn("vpcmpeqw", "xmm_xmm128_256avx2", modifiers=[0x66, 0x75, VEXL0], avx=True)
4013 add_insn("vpcmpeqd", "xmm_xmm128_256avx2", modifiers=[0x66, 0x76, VEXL0], avx=True)
4014 add_insn("vpcmpgtb", "xmm_xmm128_256avx2", modifiers=[0x66, 0x64, VEXL0], avx=True)
4015 add_insn("vpcmpgtw", "xmm_xmm128_256avx2", modifiers=[0x66, 0x65, VEXL0], avx=True)
4016 add_insn("vpcmpgtd", "xmm_xmm128_256avx2", modifiers=[0x66, 0x66, VEXL0], avx=True)
4017 add_insn("vpmaddwd", "xmm_xmm128_256avx2", modifiers=[0x66, 0xF5, VEXL0], avx=True)
4018 add_insn("vpmulhw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xE5, VEXL0], avx=True)
4019 add_insn("vpmullw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xD5, VEXL0], avx=True)
4020 add_insn("vpor", "xmm_xmm128_256avx2", modifiers=[0x66, 0xEB, VEXL0], avx=True)
4021 add_insn("vpsubb", "xmm_xmm128_256avx2", modifiers=[0x66, 0xF8, VEXL0], avx=True)
4022 add_insn("vpsubw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xF9, VEXL0], avx=True)
4023 modifiers=[0x66, 0xFA, VEXL0], avx=True)
4024 add_insn("vpsubq", "xmm_xmm128_256avx2", modifiers=[0x66, 0xFB, VEXL0], avx=True)
4025 add_insn("vpsubsb", "xmm_xmm128_256avx2", modifiers=[0x66, 0xE8, VEXL0], avx=True)
4026 add_insn("vpsubsw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xE9, VEXL0], avx=True)
4027 add_insn("vpsubusb", "xmm_xmm128_256avx2", modifiers=[0x66, 0xD8, VEXL0], avx=True)
4028 add_insn("vpsubusw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xD9, VEXL0], avx=True)
4029 add_insn("vpunpckhbw", "xmm_xmm128_256avx2", modifiers=[0x66, 0x68, VEXL0], avx=True)
4030 add_insn("vpunpckhwd", "xmm_xmm128_256avx2", modifiers=[0x66, 0x69, VEXL0], avx=True)
4031 add_insn("vpunpckhdq", "xmm_xmm128_256avx2", modifiers=[0x66, 0x6A, VEXL0], avx=True)
4032 add_insn("vpunpcklbw", "xmm_xmm128_256avx2", modifiers=[0x66, 0x60, VEXL0], avx=True)
4033 add_insn("vpunpcklwd", "xmm_xmm128_256avx2", modifiers=[0x66, 0x61, VEXL0], avx=True)
4034 add_insn("vpunpckldq", "xmm_xmm128_256avx2", modifiers=[0x66, 0x62, VEXL0], avx=True)
4035 add_insn("vpxor", "xmm_xmm128_256avx2", modifiers=[0x66, 0xEF, VEXL0], avx=True)
4039 modifiers=["Op1Add"],
4045 modifiers=["Gap", "Op1Add", "SpAdd"],
4052 modifiers=["Op1Add"],
4059 modifiers=["Gap", "Op1Add", "SpAdd"],
4066 add_insn("psllw", "pshift", modifiers=[0xF1, 0x71, 6])
4067 add_insn("pslld", "pshift", modifiers=[0xF2, 0x72, 6])
4068 add_insn("psllq", "pshift", modifiers=[0xF3, 0x73, 6])
4069 add_insn("psraw", "pshift", modifiers=[0xE1, 0x71, 4])
4070 add_insn("psrad", "pshift", modifiers=[0xE2, 0x72, 4])
4071 add_insn("psrlw", "pshift", modifiers=[0xD1, 0x71, 2])
4072 add_insn("psrld", "pshift", modifiers=[0xD2, 0x72, 2])
4073 add_insn("psrlq", "pshift", modifiers=[0xD3, 0x73, 2])
4075 # Ran out of modifiers, so AVX has to be separate
4079 modifiers=["Op1Add"],
4087 modifiers=["Gap", "Op1Add", "SpAdd"],
4096 modifiers=["Op1Add"],
4105 modifiers=["Gap", "Op1Add", "SpAdd"],
4114 add_insn("vpsllw", "vpshift", modifiers=[0xF1, 0x71, 6])
4115 add_insn("vpslld", "vpshift", modifiers=[0xF2, 0x72, 6])
4116 add_insn("vpsllq", "vpshift", modifiers=[0xF3, 0x73, 6])
4117 add_insn("vpsraw", "vpshift", modifiers=[0xE1, 0x71, 4])
4118 add_insn("vpsrad", "vpshift", modifiers=[0xE2, 0x72, 4])
4119 add_insn("vpsrlw", "vpshift", modifiers=[0xD1, 0x71, 2])
4120 add_insn("vpsrld", "vpshift", modifiers=[0xD2, 0x72, 2])
4121 add_insn("vpsrlq", "vpshift", modifiers=[0xD3, 0x73, 2])
4126 add_insn("pavgb", "mmxsse2", modifiers=[0xE0], cpu=["P3", "MMX"])
4127 add_insn("pavgw", "mmxsse2", modifiers=[0xE3], cpu=["P3", "MMX"])
4128 add_insn("pmaxsw", "mmxsse2", modifiers=[0xEE], cpu=["P3", "MMX"])
4129 add_insn("pmaxub", "mmxsse2", modifiers=[0xDE], cpu=["P3", "MMX"])
4130 add_insn("pminsw", "mmxsse2", modifiers=[0xEA], cpu=["P3", "MMX"])
4131 add_insn("pminub", "mmxsse2", modifiers=[0xDA], cpu=["P3", "MMX"])
4132 add_insn("pmulhuw", "mmxsse2", modifiers=[0xE4], cpu=["P3", "MMX"])
4133 add_insn("psadbw", "mmxsse2", modifiers=[0xF6], cpu=["P3", "MMX"])
4136 add_insn("vpavgb", "xmm_xmm128_256avx2", modifiers=[0x66, 0xE0, VEXL0], avx=True)
4137 add_insn("vpavgw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xE3, VEXL0], avx=True)
4138 add_insn("vpmaxsw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xEE, VEXL0], avx=True)
4139 add_insn("vpmaxub", "xmm_xmm128_256avx2", modifiers=[0x66, 0xDE, VEXL0], avx=True)
4140 add_insn("vpminsw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xEA, VEXL0], avx=True)
4141 add_insn("vpminub", "xmm_xmm128_256avx2", modifiers=[0x66, 0xDA, VEXL0], avx=True)
4142 add_insn("vpmulhuw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xE4, VEXL0], avx=True)
4143 add_insn("vpsadbw", "xmm_xmm128_256avx2", modifiers=[0x66, 0xF6, VEXL0], avx=True)
4145 add_insn("prefetchnta", "twobytemem", modifiers=[0, 0x0F, 0x18], cpu=["P3"])
4146 add_insn("prefetcht0", "twobytemem", modifiers=[1, 0x0F, 0x18], cpu=["P3"])
4147 add_insn("prefetcht1", "twobytemem", modifiers=[2, 0x0F, 0x18], cpu=["P3"])
4148 add_insn("prefetcht2", "twobytemem", modifiers=[3, 0x0F, 0x18], cpu=["P3"])
4150 add_insn("sfence", "threebyte", modifiers=[0x0F, 0xAE, 0xF8], cpu=["P3"])
4154 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4161 modifiers=["PreAdd", "Op1Add"],
4170 modifiers=["PreAdd", "Op1Add"],
4178 modifiers=["PreAdd", "Op1Add"],
4189 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4196 modifiers=["PreAdd", "Op1Add"],
4205 modifiers=["PreAdd", "Op1Add"],
4213 modifiers=["PreAdd", "Op1Add"],
4224 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4231 modifiers=["PreAdd", "Op1Add"],
4239 add_insn("addps", "xmm_xmm128", modifiers=[0, 0x58])
4240 add_insn("andnps", "xmm_xmm128", modifiers=[0, 0x55])
4241 add_insn("andps", "xmm_xmm128", modifiers=[0, 0x54])
4242 add_insn("divps", "xmm_xmm128", modifiers=[0, 0x5E])
4243 add_insn("maxps", "xmm_xmm128", modifiers=[0, 0x5F])
4244 add_insn("minps", "xmm_xmm128", modifiers=[0, 0x5D])
4245 add_insn("mulps", "xmm_xmm128", modifiers=[0, 0x59])
4246 add_insn("orps", "xmm_xmm128", modifiers=[0, 0x56])
4247 add_insn("rcpps", "xmm_xmm128", modifiers=[0, 0x53])
4248 add_insn("rsqrtps", "xmm_xmm128", modifiers=[0, 0x52])
4249 add_insn("sqrtps", "xmm_xmm128", modifiers=[0, 0x51])
4250 add_insn("subps", "xmm_xmm128", modifiers=[0, 0x5C])
4251 add_insn("unpckhps", "xmm_xmm128", modifiers=[0, 0x15])
4252 add_insn("unpcklps", "xmm_xmm128", modifiers=[0, 0x14])
4253 add_insn("xorps", "xmm_xmm128", modifiers=[0, 0x57])
4255 add_insn("vaddps", "xmm_xmm128_256", modifiers=[0, 0x58, VEXL0], avx=True)
4256 add_insn("vandnps", "xmm_xmm128_256", modifiers=[0, 0x55, VEXL0], avx=True)
4257 add_insn("vandps", "xmm_xmm128_256", modifiers=[0, 0x54, VEXL0], avx=True)
4258 add_insn("vdivps", "xmm_xmm128_256", modifiers=[0, 0x5E, VEXL0], avx=True)
4259 add_insn("vmaxps", "xmm_xmm128_256", modifiers=[0, 0x5F, VEXL0], avx=True)
4260 add_insn("vminps", "xmm_xmm128_256", modifiers=[0, 0x5D, VEXL0], avx=True)
4261 add_insn("vmulps", "xmm_xmm128_256", modifiers=[0, 0x59, VEXL0], avx=True)
4262 add_insn("vorps", "xmm_xmm128_256", modifiers=[0, 0x56, VEXL0], avx=True)
4264 add_insn("vsubps", "xmm_xmm128_256", modifiers=[0, 0x5C, VEXL0], avx=True)
4265 add_insn("vunpckhps", "xmm_xmm128_256", modifiers=[0, 0x15, VEXL0], avx=True)
4266 add_insn("vunpcklps", "xmm_xmm128_256", modifiers=[0, 0x14, VEXL0], avx=True)
4267 add_insn("vxorps", "xmm_xmm128_256", modifiers=[0, 0x57, VEXL0], avx=True)
4272 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4280 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4289 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4298 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4305 add_insn("cvtss2si", "cvt_rx_xmm32", modifiers=[0xF3, 0x2D])
4306 add_insn("cvttss2si", "cvt_rx_xmm32", modifiers=[0xF3, 0x2C])
4307 add_insn("vcvtss2si", "cvt_rx_xmm32", modifiers=[0xF3, 0x2D, VEXL0], avx=True)
4308 add_insn("vcvttss2si", "cvt_rx_xmm32", modifiers=[0xF3, 0x2C, VEXL0], avx=True)
4312 modifiers=["Op1Add"],
4318 modifiers=["Op1Add"],
4323 add_insn("cvtps2pi", "cvt_mm_xmm64", modifiers=[0x2D])
4324 add_insn("cvttps2pi", "cvt_mm_xmm64", modifiers=[0x2C])
4328 modifiers=["Op1Add"],
4333 add_insn("cvtpi2ps", "cvt_xmm_mm_ps", modifiers=[0x2A])
4340 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4349 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4358 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4368 modifiers=["PreAdd", "Op1Add"],
4378 modifiers=["PreAdd", "Op1Add"],
4388 modifiers=["PreAdd", "Op1Add"],
4397 add_insn("cvtsi2ss", "cvt_xmm_rmx", modifiers=[0xF3, 0x2A])
4398 add_insn("vcvtsi2ss", "cvt_xmm_rmx", modifiers=[0xF3, 0x2A, VEXL0], avx=True)
4402 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4409 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4416 modifiers=["PreAdd", "Op1Add"],
4425 modifiers=["PreAdd", "Op1Add"],
4433 add_insn("addss", "xmm_xmm32", modifiers=[0xF3, 0x58])
4434 add_insn("comiss", "xmm_xmm32", modifiers=[0, 0x2F])
4435 add_insn("divss", "xmm_xmm32", modifiers=[0xF3, 0x5E])
4436 add_insn("maxss", "xmm_xmm32", modifiers=[0xF3, 0x5F])
4437 add_insn("minss", "xmm_xmm32", modifiers=[0xF3, 0x5D])
4438 add_insn("mulss", "xmm_xmm32", modifiers=[0xF3, 0x59])
4439 add_insn("rcpss", "xmm_xmm32", modifiers=[0xF3, 0x53])
4440 add_insn("rsqrtss", "xmm_xmm32", modifiers=[0xF3, 0x52])
4441 add_insn("sqrtss", "xmm_xmm32", modifiers=[0xF3, 0x51])
4442 add_insn("subss", "xmm_xmm32", modifiers=[0xF3, 0x5C])
4443 add_insn("ucomiss", "xmm_xmm32", modifiers=[0, 0x2E])
4445 add_insn("vaddss", "xmm_xmm32", modifiers=[0xF3, 0x58, VEXL0], avx=True)
4447 add_insn("vdivss", "xmm_xmm32", modifiers=[0xF3, 0x5E, VEXL0], avx=True)
4448 add_insn("vmaxss", "xmm_xmm32", modifiers=[0xF3, 0x5F, VEXL0], avx=True)
4449 add_insn("vminss", "xmm_xmm32", modifiers=[0xF3, 0x5D, VEXL0], avx=True)
4450 add_insn("vmulss", "xmm_xmm32", modifiers=[0xF3, 0x59, VEXL0], avx=True)
4451 add_insn("vrcpss", "xmm_xmm32", modifiers=[0xF3, 0x53, VEXL0], avx=True)
4452 add_insn("vrsqrtss", "xmm_xmm32", modifiers=[0xF3, 0x52, VEXL0], avx=True)
4453 add_insn("vsqrtss", "xmm_xmm32", modifiers=[0xF3, 0x51, VEXL0], avx=True)
4454 add_insn("vsubss", "xmm_xmm32", modifiers=[0xF3, 0x5C, VEXL0], avx=True)
4458 modifiers=["Imm8", "PreAdd", "SetVEX"],
4464 modifiers=["Imm8", "PreAdd"],
4472 modifiers=["Imm8", "PreAdd"],
4481 modifiers=["Imm8", "PreAdd", "SetVEX"],
4488 modifiers=["Imm8", "PreAdd", "SetVEX"],
4495 modifiers=["Imm8", "PreAdd"],
4504 modifiers=["Imm8", "PreAdd"],
4521 add_insn("cmp"+cc+"ps", "ssecmp_128", modifiers=[ib])
4522 add_insn("cmp"+cc+"ss", "ssecmp_32", modifiers=[ib, 0xF3])
4557 add_insn("vcmp"+cc+"ps", "ssecmp_128", modifiers=[ib, 0, VEXL0], avx=True)
4558 add_insn("vcmp"+cc+"ss", "ssecmp_32", modifiers=[ib, 0xF3, VEXL0], avx=True)
4562 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4568 add_insn("cmpps", "xmm_xmm128_imm", modifiers=[0, 0xC2])
4569 add_insn("shufps", "xmm_xmm128_imm", modifiers=[0, 0xC6])
4574 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4581 modifiers=["PreAdd", "Op1Add"],
4591 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4598 modifiers=["PreAdd", "Op1Add"],
4607 modifiers=["PreAdd", "Op1Add"],
4615 add_insn("vcmpps", "xmm_xmm128_imm_256", modifiers=[0, 0xC2, VEXL0], avx=True)
4616 add_insn("vshufps", "xmm_xmm128_imm_256", modifiers=[0, 0xC6, VEXL0], avx=True)
4620 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4628 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4636 modifiers=["PreAdd", "Op1Add"],
4646 modifiers=["PreAdd", "Op1Add"],
4655 add_insn("cmpss", "xmm_xmm32_imm", modifiers=[0xF3, 0xC2])
4656 add_insn("vcmpss", "xmm_xmm32_imm", modifiers=[0xF3, 0xC2, VEXL0], avx=True)
4660 modifiers=["SpAdd", "SetVEX"],
4665 add_insn("ldmxcsr", "ldstmxcsr", modifiers=[2])
4666 add_insn("stmxcsr", "ldstmxcsr", modifiers=[3])
4667 add_insn("vldmxcsr", "ldstmxcsr", modifiers=[2, VEXL0], avx=True)
4668 add_insn("vstmxcsr", "ldstmxcsr", modifiers=[3, VEXL0], avx=True)
4678 # Too many modifiers, so can't reuse first two cases for AVX version
4682 modifiers=["PreAdd", "Op1Add"],
4691 modifiers=["PreAdd", "Op1Add", "Op1Add"],
4698 modifiers=["PreAdd", "Op1Add"],
4705 modifiers=["PreAdd", "Op1Add", "Op1Add"],
4712 modifiers=["PreAdd", "Op1Add"],
4719 modifiers=["PreAdd", "Op1Add", "Op1Add"],
4725 add_insn("movaps", "movau", modifiers=[0, 0x28, 0x01])
4726 add_insn("movups", "movau", modifiers=[0, 0x10, 0x01])
4727 add_insn("vmovaps", "movau", modifiers=[0, 0x28, 0x01], avx=True)
4728 add_insn("vmovups", "movau", modifiers=[0, 0x10, 0x01], avx=True)
4732 modifiers=["Op1Add", "SetVEX"],
4738 modifiers=["Op1Add"],
4745 add_insn("movhlps", "movhllhps", modifiers=[0x12])
4746 add_insn("movlhps", "movhllhps", modifiers=[0x16])
4747 add_insn("vmovhlps", "movhllhps", modifiers=[0x12, VEXL0], avx=True)
4748 add_insn("vmovlhps", "movhllhps", modifiers=[0x16, VEXL0], avx=True)
4752 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4759 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4766 modifiers=["PreAdd", "Op1Add"],
4774 add_insn("movhps", "movhlp", modifiers=[0, 0x16])
4775 add_insn("movlps", "movhlp", modifiers=[0, 0x12])
4776 add_insn("vmovhps", "movhlp", modifiers=[0, 0x16, VEXL0], avx=True)
4777 add_insn("vmovlps", "movhlp", modifiers=[0, 0x12, VEXL0], avx=True)
4782 modifiers=["PreAdd", "SetVEX"],
4790 modifiers=["PreAdd", "SetVEX"],
4799 modifiers=["PreAdd"],
4808 modifiers=["PreAdd"],
4817 add_insn("vmovmskps", "movmsk", modifiers=[0, VEXL0], avx=True)
4821 modifiers=["PreAdd", "Op1Add", "SetVEX"],
4828 modifiers=["PreAdd", "Op1Add"],
4835 add_insn("movntps", "movnt", modifiers=[0, 0x2B])
4836 add_insn("vmovntps", "movnt", modifiers=[0, 0x2B, VEXL0], avx=True)
4848 modifiers=["SetVEX"],
4855 modifiers=["SetVEX"],
4862 modifiers=["SetVEX"],
4877 add_insn("vmovss", "movss", modifiers=[VEXL0], avx=True)
4890 modifiers=["SetVEX"],
4908 modifiers=["SetVEX"],
4918 modifiers=["SetVEX"],
4926 modifiers=["SetVEX"],
4935 modifiers=["SetVEX"],
4944 add_insn("vpextrw", "pextrw", modifiers=[VEXL0], avx=True)
4975 modifiers=["SetVEX"],
4984 modifiers=["SetVEX"],
4995 modifiers=["SetVEX"],
5035 add_insn("vpinsrw", "pinsrw", modifiers=[VEXL0], avx=True)
5047 modifiers=["SetVEX"],
5072 modifiers=["SetVEX"],
5091 add_insn("vpmovmskb", "pmovmskb", modifiers=[VEXL0], avx=True)
5107 modifiers=["PreAdd", "Op1Add", "SetVEX"],
5114 modifiers=["PreAdd", "Op1Add", "SetVEX"],
5121 modifiers=["PreAdd", "Op1Add"],
5130 modifiers=["PreAdd", "Op1Add"],
5138 add_insn("addsd", "xmm_xmm64", modifiers=[0xF2, 0x58])
5139 add_insn("comisd", "xmm_xmm64", modifiers=[0x66, 0x2F])
5140 add_insn("cvtdq2pd", "xmm_xmm64", modifiers=[0xF3, 0xE6])
5141 add_insn("cvtps2pd", "xmm_xmm64", modifiers=[0, 0x5A])
5142 add_insn("cvtsd2ss", "xmm_xmm64", modifiers=[0xF2, 0x5A])
5143 add_insn("divsd", "xmm_xmm64", modifiers=[0xF2, 0x5E])
5144 add_insn("maxsd", "xmm_xmm64", modifiers=[0xF2, 0x5F])
5145 add_insn("minsd", "xmm_xmm64", modifiers=[0xF2, 0x5D])
5146 add_insn("mulsd", "xmm_xmm64", modifiers=[0xF2, 0x59])
5147 add_insn("subsd", "xmm_xmm64", modifiers=[0xF2, 0x5C])
5148 add_insn("sqrtsd", "xmm_xmm64", modifiers=[0xF2, 0x51])
5149 add_insn("ucomisd", "xmm_xmm64", modifiers=[0x66, 0x2E])
5151 add_insn("vaddsd", "xmm_xmm64", modifiers=[0xF2, 0x58, VEXL0], avx=True)
5154 add_insn("vcvtsd2ss", "xmm_xmm64", modifiers=[0xF2, 0x5A, VEXL0], avx=True)
5155 add_insn("vdivsd", "xmm_xmm64", modifiers=[0xF2, 0x5E, VEXL0], avx=True)
5156 add_insn("vmaxsd", "xmm_xmm64", modifiers=[0xF2, 0x5F, VEXL0], avx=True)
5157 add_insn("vminsd", "xmm_xmm64", modifiers=[0xF2, 0x5D, VEXL0], avx=True)
5158 add_insn("vmulsd", "xmm_xmm64", modifiers=[0xF2, 0x59, VEXL0], avx=True)
5159 add_insn("vsubsd", "xmm_xmm64", modifiers=[0xF2, 0x5C, VEXL0], avx=True)
5160 add_insn("vsqrtsd", "xmm_xmm64", modifiers=[0xF2, 0x51, VEXL0], avx=True)
5162 add_insn("addpd", "xmm_xmm128", modifiers=[0x66, 0x58], cpu=["SSE2"])
5163 add_insn("andnpd", "xmm_xmm128", modifiers=[0x66, 0x55], cpu=["SSE2"])
5164 add_insn("andpd", "xmm_xmm128", modifiers=[0x66, 0x54], cpu=["SSE2"])
5165 add_insn("cvtdq2ps", "xmm_xmm128", modifiers=[0, 0x5B], cpu=["SSE2"])
5166 add_insn("cvtpd2dq", "xmm_xmm128", modifiers=[0xF2, 0xE6], cpu=["SSE2"])
5167 add_insn("cvtpd2ps", "xmm_xmm128", modifiers=[0x66, 0x5A], cpu=["SSE2"])
5168 add_insn("cvtps2dq", "xmm_xmm128", modifiers=[0x66, 0x5B], cpu=["SSE2"])
5169 add_insn("divpd", "xmm_xmm128", modifiers=[0x66, 0x5E], cpu=["SSE2"])
5170 add_insn("maxpd", "xmm_xmm128", modifiers=[0x66, 0x5F], cpu=["SSE2"])
5171 add_insn("minpd", "xmm_xmm128", modifiers=[0x66, 0x5D], cpu=["SSE2"])
5172 add_insn("mulpd", "xmm_xmm128", modifiers=[0x66, 0x59], cpu=["SSE2"])
5173 add_insn("orpd", "xmm_xmm128", modifiers=[0x66, 0x56], cpu=["SSE2"])
5174 add_insn("sqrtpd", "xmm_xmm128", modifiers=[0x66, 0x51], cpu=["SSE2"])
5175 add_insn("subpd", "xmm_xmm128", modifiers=[0x66, 0x5C], cpu=["SSE2"])
5176 add_insn("unpckhpd", "xmm_xmm128", modifiers=[0x66, 0x15], cpu=["SSE2"])
5177 add_insn("unpcklpd", "xmm_xmm128", modifiers=[0x66, 0x14], cpu=["SSE2"])
5178 add_insn("xorpd", "xmm_xmm128", modifiers=[0x66, 0x57], cpu=["SSE2"])
5180 add_insn("vaddpd", "xmm_xmm128_256", modifiers=[0x66, 0x58, VEXL0], avx=True)
5181 add_insn("vandnpd", "xmm_xmm128_256", modifiers=[0x66, 0x55, VEXL0], avx=True)
5182 add_insn("vandpd", "xmm_xmm128_256", modifiers=[0x66, 0x54, VEXL0], avx=True)
5185 add_insn("vdivpd", "xmm_xmm128_256", modifiers=[0x66, 0x5E, VEXL0], avx=True)
5186 add_insn("vmaxpd", "xmm_xmm128_256", modifiers=[0x66, 0x5F, VEXL0], avx=True)
5187 add_insn("vminpd", "xmm_xmm128_256", modifiers=[0x66, 0x5D, VEXL0], avx=True)
5188 add_insn("vmulpd", "xmm_xmm128_256", modifiers=[0x66, 0x59, VEXL0], avx=True)
5189 add_insn("vorpd", "xmm_xmm128_256", modifiers=[0x66, 0x56, VEXL0], avx=True)
5191 add_insn("vsubpd", "xmm_xmm128_256", modifiers=[0x66, 0x5C, VEXL0], avx=True)
5192 add_insn("vunpckhpd", "xmm_xmm128_256", modifiers=[0x66, 0x15, VEXL0], avx=True)
5193 add_insn("vunpcklpd", "xmm_xmm128_256", modifiers=[0x66, 0x14, VEXL0], avx=True)
5194 add_insn("vxorpd", "xmm_xmm128_256", modifiers=[0x66, 0x57, VEXL0], avx=True)
5198 modifiers=["Imm8", "PreAdd", "SetVEX"],
5205 modifiers=["Imm8", "PreAdd", "SetVEX"],
5212 modifiers=["Imm8", "PreAdd"],
5221 modifiers=["Imm8", "PreAdd"],
5230 add_insn("cmp"+cc+"sd", "ssecmp_64", modifiers=[ib, 0xF2])
5231 add_insn("cmp"+cc+"pd", "ssecmp_128", modifiers=[ib, 0x66])
5234 add_insn("vcmp"+cc+"sd", "ssecmp_64", modifiers=[ib, 0xF2, VEXL0], avx=True)
5235 add_insn("vcmp"+cc+"pd", "ssecmp_128", modifiers=[ib, 0x66, VEXL0], avx=True)
5237 add_insn("cmppd", "xmm_xmm128_imm", modifiers=[0x66, 0xC2], cpu=["SSE2"])
5238 add_insn("shufpd", "xmm_xmm128_imm", modifiers=[0x66, 0xC6], cpu=["SSE2"])
5239 add_insn("vcmppd", "xmm_xmm128_imm_256", modifiers=[0x66, 0xC2, VEXL0], avx=True)
5240 add_insn("vshufpd", "xmm_xmm128_imm_256", modifiers=[0x66, 0xC6, VEXL0], avx=True)
5242 add_insn("cvtsi2sd", "cvt_xmm_rmx", modifiers=[0xF2, 0x2A], cpu=["SSE2"])
5243 add_insn("vcvtsi2sd", "cvt_xmm_rmx", modifiers=[0xF2, 0x2A, VEXL0], avx=True)
5248 modifiers=["PreAdd", "Op1Add", "SetVEX"],
5256 modifiers=["PreAdd", "Op1Add", "SetVEX"],
5265 modifiers=["PreAdd", "Op1Add", "SetVEX"],
5274 modifiers=["PreAdd", "Op1Add", "SetVEX"],
5281 add_insn("cvtsd2si", "cvt_rx_xmm64", modifiers=[0xF2, 0x2D])
5282 add_insn("vcvtsd2si", "cvt_rx_xmm64", modifiers=[0xF2, 0x2D, VEXL0], avx=True)
5286 modifiers=["PreAdd", "Op1Add"],
5292 add_insn("cvtpd2pi", "cvt_mm_xmm", modifiers=[0x66, 0x2D], cpu=["SSE2"])
5296 modifiers=["PreAdd", "Op1Add"],
5302 modifiers=[0x66, 0x2A], cpu=["SSE2"])
5307 modifiers=["SetVEX"],
5315 modifiers=["SetVEX"],
5341 add_insn("vcmpsd", "cmpsd", modifiers=[VEXL0], avx=True)
5343 add_insn("movapd", "movau", modifiers=[0x66, 0x28, 0x01], cpu=["SSE2"])
5344 add_insn("movupd", "movau", modifiers=[0x66, 0x10, 0x01], cpu=["SSE2"])
5345 add_insn("vmovapd", "movau", modifiers=[0x66, 0x28, 0x01], avx=True)
5346 add_insn("vmovupd", "movau", modifiers=[0x66, 0x10, 0x01], avx=True)
5348 add_insn("movhpd", "movhlp", modifiers=[0x66, 0x16], cpu=["SSE2"])
5349 add_insn("movlpd", "movhlp", modifiers=[0x66, 0x12], cpu=["SSE2"])
5350 add_insn("vmovhpd", "movhlp", modifiers=[0x66, 0x16, VEXL0], avx=True)
5351 add_insn("vmovlpd", "movhlp", modifiers=[0x66, 0x12, VEXL0], avx=True)
5353 add_insn("movmskpd", "movmsk", modifiers=[0x66], cpu=["SSE2"])
5354 add_insn("vmovmskpd", "movmsk", modifiers=[0x66, VEXL0], avx=True)
5356 add_insn("movntpd", "movnt", modifiers=[0x66, 0x2B], cpu=["SSE2"])
5357 add_insn("movntdq", "movnt", modifiers=[0x66, 0xE7], cpu=["SSE2"])
5358 add_insn("vmovntpd", "movnt", modifiers=[0x66, 0x2B, VEXL0], avx=True)
5359 add_insn("vmovntdq", "movnt", modifiers=[0x66, 0xE7, VEXL0], avx=True)
5364 modifiers=["SetVEX"],
5371 modifiers=["SetVEX"],
5378 modifiers=["SetVEX"],
5392 add_insn("vmovsd", "movsd", modifiers=[VEXL0], avx=True)
5399 modifiers=["Op2Add"],
5409 modifiers=["Op2Add"],
5417 add_insn("invept", "eptvpid", modifiers=[0])
5418 add_insn("invvpid", "eptvpid", modifiers=[1])
5420 add_insn("vmcall", "threebyte", modifiers=[0x0F, 0x01, 0xC1], cpu=["P4"])
5421 add_insn("vmlaunch", "threebyte", modifiers=[0x0F, 0x01, 0xC2], cpu=["P4"])
5422 add_insn("vmresume", "threebyte", modifiers=[0x0F, 0x01, 0xC3], cpu=["P4"])
5423 add_insn("vmxoff", "threebyte", modifiers=[0x0F, 0x01, 0xC4], cpu=["P4"])
5462 modifiers=["SpAdd"],
5467 add_insn("vmptrld", "vmxtwobytemem", modifiers=[6])
5468 add_insn("vmptrst", "vmxtwobytemem", modifiers=[7])
5471 modifiers=["PreAdd"],
5477 add_insn("vmclear", "vmxthreebytemem", modifiers=[0x66])
5478 add_insn("vmxon", "vmxthreebytemem", modifiers=[0xF3])
5483 add_insn("getsec", "twobyte", modifiers=[0x0F, 0x37], cpu=["SMX"])
5485 add_insn("cvttpd2pi", "cvt_mm_xmm", modifiers=[0x66, 0x2C], cpu=["SSE2"])
5486 add_insn("cvttsd2si", "cvt_rx_xmm64", modifiers=[0xF2, 0x2C], cpu=["SSE2"])
5487 add_insn("cvttpd2dq", "xmm_xmm128", modifiers=[0x66, 0xE6], cpu=["SSE2"])
5488 add_insn("cvttps2dq", "xmm_xmm128", modifiers=[0xF3, 0x5B], cpu=["SSE2"])
5489 add_insn("pmuludq", "mmxsse2", modifiers=[0xF4], cpu=["SSE2"])
5490 add_insn("pshufd", "xmm_xmm128_imm", modifiers=[0x66, 0x70], cpu=["SSE2"])
5491 add_insn("pshufhw", "xmm_xmm128_imm", modifiers=[0xF3, 0x70], cpu=["SSE2"])
5492 add_insn("pshuflw", "xmm_xmm128_imm", modifiers=[0xF2, 0x70], cpu=["SSE2"])
5493 add_insn("punpckhqdq", "xmm_xmm128", modifiers=[0x66, 0x6D], cpu=["SSE2"])
5494 add_insn("punpcklqdq", "xmm_xmm128", modifiers=[0x66, 0x6C], cpu=["SSE2"])
5496 add_insn("vcvttsd2si", "cvt_rx_xmm64", modifiers=[0xF2, 0x2C, VEXL0], avx=True)
5499 add_insn("vpmuludq", "xmm_xmm128_256avx2", modifiers=[0x66, 0xF4, VEXL0], avx=True)
5500 add_insn("vpshufd", "xmm_xmm128_imm_256avx2", modifiers=[0x66, 0x70, VEXL0], avx=True)
5501 add_insn("vpshufhw", "xmm_xmm128_imm_256avx2", modifiers=[0xF3, 0x70, VEXL0], avx=True)
5502 add_insn("vpshuflw", "xmm_xmm128_imm_256avx2", modifiers=[0xF2, 0x70, VEXL0], avx=True)
5503 add_insn("vpunpckhqdq", "xmm_xmm128_256avx2", modifiers=[0x66, 0x6D, VEXL0], avx=True)
5504 add_insn("vpunpcklqdq", "xmm_xmm128_256avx2", modifiers=[0x66, 0x6C, VEXL0], avx=True)
5506 add_insn("cvtss2sd", "xmm_xmm32", modifiers=[0xF3, 0x5A], cpu=["SSE2"])
5507 add_insn("vcvtss2sd", "xmm_xmm32", modifiers=[0xF3, 0x5A, VEXL0], avx=True)
5511 modifiers=["SetVEX"],
5518 add_insn("vmaskmovdqu", "maskmovdqu", modifiers=[VEXL0], avx=True)
5520 add_insn("movdqa", "movau", modifiers=[0x66, 0x6F, 0x10], cpu=["SSE2"])
5521 add_insn("movdqu", "movau", modifiers=[0xF3, 0x6F, 0x10], cpu=["SSE2"])
5522 add_insn("vmovdqa", "movau", modifiers=[0x66, 0x6F, 0x10], avx=True)
5523 add_insn("vmovdqu", "movau", modifiers=[0xF3, 0x6F, 0x10], avx=True)
5545 modifiers=["SpAdd", "SetVEX"],
5553 modifiers=["SpAdd", "SetVEX"],
5562 modifiers=["SpAdd"],
5571 modifiers=["SpAdd"],
5580 add_insn("pslldq", "pslrldq", modifiers=[7])
5581 add_insn("psrldq", "pslrldq", modifiers=[3])
5582 add_insn("vpslldq", "pslrldq", modifiers=[7, VEXL0], avx=True)
5583 add_insn("vpsrldq", "pslrldq", modifiers=[3, VEXL0], avx=True)
5588 add_insn("addsubpd", "xmm_xmm128", modifiers=[0x66, 0xD0], cpu=["SSE3"])
5589 add_insn("addsubps", "xmm_xmm128", modifiers=[0xF2, 0xD0], cpu=["SSE3"])
5590 add_insn("haddpd", "xmm_xmm128", modifiers=[0x66, 0x7C], cpu=["SSE3"])
5591 add_insn("haddps", "xmm_xmm128", modifiers=[0xF2, 0x7C], cpu=["SSE3"])
5592 add_insn("hsubpd", "xmm_xmm128", modifiers=[0x66, 0x7D], cpu=["SSE3"])
5593 add_insn("hsubps", "xmm_xmm128", modifiers=[0xF2, 0x7D], cpu=["SSE3"])
5595 add_insn("vaddsubpd", "xmm_xmm128_256", modifiers=[0x66, 0xD0, VEXL0], avx=True)
5596 add_insn("vaddsubps", "xmm_xmm128_256", modifiers=[0xF2, 0xD0, VEXL0], avx=True)
5597 add_insn("vhaddpd", "xmm_xmm128_256", modifiers=[0x66, 0x7C, VEXL0], avx=True)
5598 add_insn("vhaddps", "xmm_xmm128_256", modifiers=[0xF2, 0x7C, VEXL0], avx=True)
5599 add_insn("vhsubpd", "xmm_xmm128_256", modifiers=[0x66, 0x7D, VEXL0], avx=True)
5600 add_insn("vhsubps", "xmm_xmm128_256", modifiers=[0xF2, 0x7D, VEXL0], avx=True)
5602 add_insn("movshdup", "xmm_xmm128", modifiers=[0xF3, 0x16], cpu=["SSE3"])
5603 add_insn("movsldup", "xmm_xmm128", modifiers=[0xF3, 0x12], cpu=["SSE3"])
5604 add_insn("fisttp", "fildstp", modifiers=[1, 0, 1], cpu=["SSE3"])
5605 add_insn("fisttpll", "fildstp", suffix="q", modifiers=[7], cpu=["SSE3"])
5606 add_insn("movddup", "xmm_xmm64", modifiers=[0xF2, 0x12], cpu=["SSE3"])
5607 add_insn("monitor", "threebyte", modifiers=[0x0F, 0x01, 0xC8], cpu=["SSE3"])
5608 add_insn("mwait", "threebyte", modifiers=[0x0F, 0x01, 0xC9], cpu=["SSE3"])
5612 modifiers=["SetVEX"],
5626 add_insn("vlddqu", "lddqu", modifiers=[VEXL0], avx=True)
5635 modifiers=["Op2Add"],
5641 modifiers=["Op2Add", "SetVEX"],
5648 modifiers=["Op2Add"],
5657 modifiers=["Op2Add"],
5665 modifiers=["Op2Add"],
5673 add_insn("pshufb", "ssse3", modifiers=[0x00])
5674 add_insn("phaddw", "ssse3", modifiers=[0x01])
5675 add_insn("phaddd", "ssse3", modifiers=[0x02])
5676 add_insn("phaddsw", "ssse3", modifiers=[0x03])
5677 add_insn("pmaddubsw", "ssse3", modifiers=[0x04])
5678 add_insn("phsubw", "ssse3", modifiers=[0x05])
5679 add_insn("phsubd", "ssse3", modifiers=[0x06])
5680 add_insn("phsubsw", "ssse3", modifiers=[0x07])
5681 add_insn("psignb", "ssse3", modifiers=[0x08])
5682 add_insn("psignw", "ssse3", modifiers=[0x09])
5683 add_insn("psignd", "ssse3", modifiers=[0x0A])
5684 add_insn("pmulhrsw", "ssse3", modifiers=[0x0B])
5685 add_insn("pabsb", "ssse3", modifiers=[0x1C])
5686 add_insn("pabsw", "ssse3", modifiers=[0x1D])
5687 add_insn("pabsd", "ssse3", modifiers=[0x1E])
5689 add_insn("vpshufb", "ssse3", modifiers=[0x00, VEXL0], avx=True)
5690 add_insn("vphaddw", "ssse3", modifiers=[0x01, VEXL0], avx=True)
5691 add_insn("vphaddd", "ssse3", modifiers=[0x02, VEXL0], avx=True)
5692 add_insn("vphaddsw", "ssse3", modifiers=[0x03, VEXL0], avx=True)
5693 add_insn("vpmaddubsw", "ssse3", modifiers=[0x04, VEXL0], avx=True)
5694 add_insn("vphsubw", "ssse3", modifiers=[0x05, VEXL0], avx=True)
5695 add_insn("vphsubd", "ssse3", modifiers=[0x06, VEXL0], avx=True)
5696 add_insn("vphsubsw", "ssse3", modifiers=[0x07, VEXL0], avx=True)
5697 add_insn("vpsignb", "ssse3", modifiers=[0x08, VEXL0], avx=True)
5698 add_insn("vpsignw", "ssse3", modifiers=[0x09, VEXL0], avx=True)
5699 add_insn("vpsignd", "ssse3", modifiers=[0x0A, VEXL0], avx=True)
5700 add_insn("vpmulhrsw", "ssse3", modifiers=[0x0B, VEXL0], avx=True)
5705 modifiers=["Op2Add"],
5712 modifiers=["Op2Add"],
5719 add_insn("palignr", "ssse3imm", modifiers=[0x0F])
5720 add_insn("vpalignr", "sse4imm_256avx2", modifiers=[0x0F, VEXL0], avx=True)
5728 modifiers=["Op2Add", "SetVEX"],
5735 modifiers=["Op2Add"],
5742 add_insn("packusdw", "sse4", modifiers=[0x2B])
5743 add_insn("pcmpeqq", "sse4", modifiers=[0x29])
5744 add_insn("pcmpgtq", "sse4", modifiers=[0x37])
5745 add_insn("phminposuw", "sse4", modifiers=[0x41])
5746 add_insn("pmaxsb", "sse4", modifiers=[0x3C])
5747 add_insn("pmaxsd", "sse4", modifiers=[0x3D])
5748 add_insn("pmaxud", "sse4", modifiers=[0x3F])
5749 add_insn("pmaxuw", "sse4", modifiers=[0x3E])
5750 add_insn("pminsb", "sse4", modifiers=[0x38])
5751 add_insn("pminsd", "sse4", modifiers=[0x39])
5752 add_insn("pminud", "sse4", modifiers=[0x3B])
5753 add_insn("pminuw", "sse4", modifiers=[0x3A])
5754 add_insn("pmuldq", "sse4", modifiers=[0x28])
5755 add_insn("pmulld", "sse4", modifiers=[0x40])
5756 add_insn("ptest", "sse4", modifiers=[0x17])
5759 add_insn("vpackusdw", "ssse3", modifiers=[0x2B, VEXL0], avx=True)
5760 add_insn("vpcmpeqq", "ssse3", modifiers=[0x29, VEXL0], avx=True)
5761 add_insn("vpcmpgtq", "ssse3", modifiers=[0x37, VEXL0], avx=True)
5763 add_insn("vpmaxsb", "ssse3", modifiers=[0x3C, VEXL0], avx=True)
5764 add_insn("vpmaxsd", "ssse3", modifiers=[0x3D, VEXL0], avx=True)
5765 add_insn("vpmaxud", "ssse3", modifiers=[0x3F, VEXL0], avx=True)
5766 add_insn("vpmaxuw", "ssse3", modifiers=[0x3E, VEXL0], avx=True)
5767 add_insn("vpminsb", "ssse3", modifiers=[0x38, VEXL0], avx=True)
5768 add_insn("vpminsd", "ssse3", modifiers=[0x39, VEXL0], avx=True)
5769 add_insn("vpminud", "ssse3", modifiers=[0x3B, VEXL0], avx=True)
5770 add_insn("vpminuw", "ssse3", modifiers=[0x3A, VEXL0], avx=True)
5771 add_insn("vpmuldq", "ssse3", modifiers=[0x28, VEXL0], avx=True)
5772 add_insn("vpmulld", "ssse3", modifiers=[0x40, VEXL0], avx=True)
5774 add_insn("vptest", "sse4", modifiers=[0x17, VEXL0], avx=True)
5778 modifiers=["Op2Add", "SetVEX"],
5786 modifiers=["Op2Add"],
5796 modifiers=["Op2Add"],
5805 modifiers=["Op2Add"],
5817 modifiers=["Op2Add", "SetVEX"],
5825 modifiers=["Op2Add"],
5835 modifiers=["Op2Add"],
5844 modifiers=["Op2Add"],
5856 modifiers=["Op2Add", "SetVEX"],
5864 modifiers=["Op2Add"],
5876 modifiers=["Op2Add", "SetVEX"],
5884 modifiers=["Op2Add", "SetVEX"],
5892 modifiers=["Op2Add"],
5902 modifiers=["Op2Add"],
5911 add_insn("blendpd", "sse4imm", modifiers=[0x0D])
5912 add_insn("blendps", "sse4imm", modifiers=[0x0C])
5913 add_insn("dppd", "sse4imm", modifiers=[0x41])
5914 add_insn("dpps", "sse4imm", modifiers=[0x40])
5915 add_insn("mpsadbw", "sse4imm", modifiers=[0x42])
5916 add_insn("pblendw", "sse4imm", modifiers=[0x0E])
5917 add_insn("roundpd", "sse4imm", modifiers=[0x09])
5918 add_insn("roundps", "sse4imm", modifiers=[0x08])
5919 add_insn("roundsd", "sse4m64imm", modifiers=[0x0B])
5920 add_insn("roundss", "sse4m32imm", modifiers=[0x0A])
5924 add_insn("vblendpd", "sse4imm_256", modifiers=[0x0D, VEXL0], avx=True)
5925 add_insn("vblendps", "sse4imm_256", modifiers=[0x0C, VEXL0], avx=True)
5926 add_insn("vdppd", "sse4imm", modifiers=[0x41, VEXL0], avx=True)
5927 add_insn("vdpps", "sse4imm_256", modifiers=[0x40, VEXL0], avx=True)
5928 add_insn("vmpsadbw", "sse4imm_256avx2", modifiers=[0x42, VEXL0], avx=True)
5929 add_insn("vpblendw", "sse4imm_256avx2", modifiers=[0x0E, VEXL0], avx=True)
5931 add_insn("vroundsd", "sse4m64imm", modifiers=[0x0B, VEXL0], avx=True)
5932 add_insn("vroundss", "sse4m32imm", modifiers=[0x0A, VEXL0], avx=True)
5936 modifiers=["Op2Add"],
5943 modifiers=["Op2Add"],
5950 add_insn("blendvpd", "sse4xmm0", modifiers=[0x15])
5951 add_insn("blendvps", "sse4xmm0", modifiers=[0x14])
5952 add_insn("pblendvb", "sse4xmm0", modifiers=[0x10])
5957 modifiers=["Op2Add"],
5967 modifiers=["Op2Add"],
5976 add_insn("vblendvpd", "avx_sse4xmm0", modifiers=[0x4B])
5977 add_insn("vblendvps", "avx_sse4xmm0", modifiers=[0x4A])
5982 modifiers=["Op2Add"],
5992 modifiers=["Op2Add"],
6001 add_insn("vpblendvb", "avx2_sse4xmm0", modifiers=[0x4C])
6026 modifiers=["SetVEX"],
6034 modifiers=["SetVEX"],
6043 add_insn("vextractps", "extractps", modifiers=[VEXL0], avx=True)
6047 modifiers=["SetVEX"],
6055 modifiers=["SetVEX"],
6081 add_insn("vinsertps", "insertps", modifiers=[VEXL0], avx=True)
6085 modifiers=["SetVEX"],
6099 add_insn("vmovntdqa", "movntdqa", modifiers=[VEXL0], avx=True)
6103 modifiers=["Op2Add", "SetVEX"],
6110 add_insn("pcmpestri", "sse4pcmpstr", modifiers=[0x61])
6111 add_insn("pcmpestrm", "sse4pcmpstr", modifiers=[0x60])
6112 add_insn("pcmpistri", "sse4pcmpstr", modifiers=[0x63])
6113 add_insn("pcmpistrm", "sse4pcmpstr", modifiers=[0x62])
6115 add_insn("vpcmpestri", "sse4pcmpstr", modifiers=[0x61, VEXL0], avx=True)
6116 add_insn("vpcmpestrm", "sse4pcmpstr", modifiers=[0x60, VEXL0], avx=True)
6117 add_insn("vpcmpistri", "sse4pcmpstr", modifiers=[0x63, VEXL0], avx=True)
6118 modifiers=[0x62, VEXL0], avx=True)
6122 modifiers=["SetVEX"],
6130 modifiers=["SetVEX"],
6138 modifiers=["SetVEX"],
6147 add_insn("vpextrb", "pextrb", modifiers=[VEXL0], avx=True)
6151 modifiers=["SetVEX"],
6159 add_insn("vpextrd", "pextrd", modifiers=[VEXL0], avx=True)
6163 modifiers=["SetVEX"],
6172 add_insn("vpextrq", "pextrq", modifiers=[VEXL0], avx=True)
6176 modifiers=["SetVEX"],
6184 modifiers=["SetVEX"],
6210 add_insn("vpinsrb", "pinsrb", modifiers=[VEXL0], avx=True)
6214 modifiers=["SetVEX"],
6231 add_insn("vpinsrd", "pinsrd", modifiers=[VEXL0], avx=True)
6235 modifiers=["SetVEX"],
6254 add_insn("vpinsrq", "pinsrq", modifiers=[VEXL0], avx=True)
6259 modifiers=["Op2Add", "SetVEX"],
6266 modifiers=["Op2Add", "SetVEX"],
6273 modifiers=["Op2Add"],
6281 modifiers=["Op2Add"],
6288 add_insn("pmovsxbw", "sse4m64", modifiers=[0x20])
6289 add_insn("pmovsxwd", "sse4m64", modifiers=[0x23])
6290 add_insn("pmovsxdq", "sse4m64", modifiers=[0x25])
6291 add_insn("pmovzxbw", "sse4m64", modifiers=[0x30])
6292 add_insn("pmovzxwd", "sse4m64", modifiers=[0x33])
6293 add_insn("pmovzxdq", "sse4m64", modifiers=[0x35])
6295 add_insn("vpmovsxbw", "sse4m64", modifiers=[0x20, VEXL0], avx=True)
6296 add_insn("vpmovsxwd", "sse4m64", modifiers=[0x23, VEXL0], avx=True)
6297 add_insn("vpmovsxdq", "sse4m64", modifiers=[0x25, VEXL0], avx=True)
6298 add_insn("vpmovzxbw", "sse4m64", modifiers=[0x30, VEXL0], avx=True)
6299 add_insn("vpmovzxwd", "sse4m64", modifiers=[0x33, VEXL0], avx=True)
6300 add_insn("vpmovzxdq", "sse4m64", modifiers=[0x35, VEXL0], avx=True)
6302 add_insn("pmovsxbd", "sse4m32", modifiers=[0x21])
6303 add_insn("pmovsxwq", "sse4m32", modifiers=[0x24])
6304 add_insn("pmovzxbd", "sse4m32", modifiers=[0x31])
6305 add_insn("pmovzxwq", "sse4m32", modifiers=[0x34])
6307 add_insn("vpmovsxbd", "sse4m32", modifiers=[0x21, VEXL0], avx=True)
6308 add_insn("vpmovsxwq", "sse4m32", modifiers=[0x24, VEXL0], avx=True)
6309 add_insn("vpmovzxbd", "sse4m32", modifiers=[0x31, VEXL0], avx=True)
6310 add_insn("vpmovzxwq", "sse4m32", modifiers=[0x34, VEXL0], avx=True)
6312 add_insn("pmovsxbq", "sse4m16", modifiers=[0x22])
6313 add_insn("pmovzxbq", "sse4m16", modifiers=[0x32])
6315 add_insn("vpmovsxbq", "sse4m16", modifiers=[0x22, VEXL0], avx=True)
6316 add_insn("vpmovzxbq", "sse4m16", modifiers=[0x32, VEXL0], avx=True)
6321 modifiers=["Op1Add"],
6328 add_insn("popcnt", "cnt", modifiers=[0xB8], cpu=["SSE42"])
6397 modifiers=["PreAdd", "Op1Add"],
6405 modifiers=["PreAdd", "Op1Add"],
6412 add_insn("vmovshdup", "avx_xmm_xmm128", modifiers=[0xF3, 0x16])
6413 add_insn("vmovsldup", "avx_xmm_xmm128", modifiers=[0xF3, 0x12])
6414 add_insn("vrcpps", "avx_xmm_xmm128", modifiers=[0, 0x53])
6415 add_insn("vrsqrtps", "avx_xmm_xmm128", modifiers=[0, 0x52])
6416 add_insn("vsqrtps", "avx_xmm_xmm128", modifiers=[0, 0x51])
6417 add_insn("vsqrtpd", "avx_xmm_xmm128", modifiers=[0x66, 0x51])
6418 add_insn("vcvtdq2ps", "avx_xmm_xmm128", modifiers=[0, 0x5B])
6419 add_insn("vcvtps2dq", "avx_xmm_xmm128", modifiers=[0x66, 0x5B])
6420 add_insn("vcvttps2dq", "avx_xmm_xmm128", modifiers=[0xF3, 0x5B])
6424 modifiers=["Op2Add"],
6433 modifiers=["Op2Add"],
6442 modifiers=["Op2Add"],
6450 add_insn("vroundpd", "avx_sse4imm", modifiers=[0x09])
6451 add_insn("vroundps", "avx_sse4imm", modifiers=[0x08])
6455 modifiers=["PreAdd", "Op1Add"],
6463 modifiers=["PreAdd", "Op1Add"],
6471 modifiers=["PreAdd", "Op1Add"],
6478 add_insn("vmovddup", "vmovddup", modifiers=[0xF2, 0x12])
6484 modifiers=["PreAdd", "Op1Add"],
6492 modifiers=["PreAdd", "Op1Add"],
6499 add_insn("vcomisd", "avx_xmm_xmm64", modifiers=[0x66, 0x2F], avx=True)
6500 add_insn("vucomisd", "avx_xmm_xmm64", modifiers=[0x66, 0x2E], avx=True)
6506 modifiers=["PreAdd", "Op1Add"],
6514 modifiers=["PreAdd", "Op1Add"],
6521 add_insn("vcomiss", "avx_xmm_xmm32", modifiers=[0, 0x2F], avx=True)
6522 add_insn("vucomiss", "avx_xmm_xmm32", modifiers=[0, 0x2E], avx=True)
6527 modifiers=["PreAdd", "Op1Add"],
6535 modifiers=["PreAdd", "Op1Add"],
6543 modifiers=["PreAdd", "Op1Add"],
6550 add_insn("vcvtdq2pd", "avx_cvt_xmm64", modifiers=[0xF3, 0xE6])
6551 add_insn("vcvtps2pd", "avx_cvt_xmm64", modifiers=[0, 0x5A])
6557 modifiers=["Op2Add"],
6563 add_insn("vphminposuw", "avx_ssse3_2op", modifiers=[0x41], avx=True)
6569 modifiers=["Op2Add"],
6575 add_insn("vpabsb", "avx2_ssse3_2op", modifiers=[0x1C], avx=True)
6576 modifiers=[0x1D], avx=True)
6577 add_insn("vpabsd", "avx2_ssse3_2op", modifiers=[0x1E], avx=True)
6583 modifiers=["PreAdd", "Op1Add"],
6591 modifiers=["PreAdd", "Op1Add"],
6600 modifiers=["PreAdd", "Op1Add"],
6608 modifiers=["PreAdd", "Op1Add"],
6615 add_insn("vcvtpd2dqx", "avx_cvt_xmm128_x", modifiers=[0xF2, 0xE6], parser="gas")
6616 add_insn("vcvtpd2dqy", "avx_cvt_xmm128_y", modifiers=[0xF2, 0xE6], parser="gas")
6617 add_insn("vcvtpd2dq", "avx_cvt_xmm128", modifiers=[0xF2, 0xE6])
6619 add_insn("vcvtpd2psx", "avx_cvt_xmm128_x", modifiers=[0x66, 0x5A], parser="gas")
6620 add_insn("vcvtpd2psy", "avx_cvt_xmm128_y", modifiers=[0x66, 0x5A], parser="gas")
6621 add_insn("vcvtpd2ps", "avx_cvt_xmm128", modifiers=[0x66, 0x5A])
6623 add_insn("vcvttpd2dqx", "avx_cvt_xmm128_x", modifiers=[0x66, 0xE6], parser="gas")
6624 add_insn("vcvttpd2dqy", "avx_cvt_xmm128_y", modifiers=[0x66, 0xE6], parser="gas")
6625 add_insn("vcvttpd2dq", "avx_cvt_xmm128", modifiers=[0x66, 0xE6])
6628 add_insn("vtestps", "sse4", modifiers=[0x0E, VEXL0], avx=True)
6629 add_insn("vtestpd", "sse4", modifiers=[0x0F, VEXL0], avx=True)
6680 modifiers=["Op2Add"],
6687 add_insn("vbroadcastf128", "vbroadcastif128", modifiers=[0x1A], cpu=["AVX"])
6688 add_insn("vbroadcasti128", "vbroadcastif128", modifiers=[0x5A], cpu=["AVX2"])
6691 modifiers=["Op2Add"],
6699 add_insn("vextractf128", "vextractif128", modifiers=[0x19], cpu=["AVX"])
6700 add_insn("vextracti128", "vextractif128", modifiers=[0x39], cpu=["AVX2"])
6703 modifiers=["Op2Add"],
6712 add_insn("vinsertf128", "vinsertif128", modifiers=[0x18], cpu=["AVX"])
6713 add_insn("vinserti128", "vinsertif128", modifiers=[0x38], cpu=["AVX2"])
6717 modifiers=["SetVEX"],
6721 add_insn("vzeroall", "vzero", modifiers=[VEXL1])
6722 add_insn("vzeroupper", "vzero", modifiers=[VEXL0])
6725 modifiers=["Op2Add"],
6733 modifiers=["Op2Add"],
6741 modifiers=["Op2Add"],
6749 modifiers=["Op2Add"],
6757 add_insn("vmaskmovps", "vmaskmov", modifiers=[0x2C], cpu=["AVX"])
6758 add_insn("vmaskmovpd", "vmaskmov", modifiers=[0x2D], cpu=["AVX"])
6762 modifiers=["Op2Add"],
6771 modifiers=["Op2Add"],
6780 modifiers=["Op2Add"],
6789 modifiers=["Op2Add"],
6797 add_insn("vpermilpd", "vpermil", modifiers=[0x05])
6798 add_insn("vpermilps", "vpermil", modifiers=[0x04])
6822 modifiers=["Op2Add"],
6831 add_insn("vpermd", "vperm_var_avx2", modifiers=[0x36])
6832 add_insn("vpermps", "vperm_var_avx2", modifiers=[0x16])
6837 modifiers=["Op2Add"],
6846 add_insn("vpermq", "vperm_imm_avx2", modifiers=[0x00])
6847 add_insn("vpermpd", "vperm_imm_avx2", modifiers=[0x01])
6956 modifiers=["Op2Add"],
6968 modifiers=["Op2Add"],
6977 add_insn("vpsrlvd", "vpshiftv_vexw0_avx2", modifiers=[0x45])
6978 add_insn("vpsrlvq", "vpshiftv_vexw1_avx2", modifiers=[0x45])
6979 add_insn("vpsravd", "vpshiftv_vexw0_avx2", modifiers=[0x46])
6981 add_insn("vpsllvd", "vpshiftv_vexw0_avx2", modifiers=[0x47])
6982 add_insn("vpsllvq", "vpshiftv_vexw1_avx2", modifiers=[0x47])
6984 add_insn("vpmaskmovd", "vmaskmov", modifiers=[0x8C], cpu=["AVX2"])
6990 modifiers=["Op2Add"],
7002 modifiers=["Op2Add"],
7011 add_insn("vpmaskmovq", "vmaskmov_vexw1_avx2", modifiers=[0x8C])
7016 modifiers=["Op2Add"],
7026 add_insn("vpblendd", "vex_66_0F3A_imm8_avx2", modifiers=[0x02])
7031 modifiers=["Op2Add"],
7041 modifiers=["Op2Add"],
7049 add_insn("vgatherdpd", "gather_64x_64x", modifiers=[0x92])
7050 add_insn("vpgatherdq", "gather_64x_64x", modifiers=[0x90])
7054 modifiers=["Op2Add"],
7064 modifiers=["Op2Add"],
7072 add_insn("vgatherqpd", "gather_64x_64y", modifiers=[0x93])
7073 add_insn("vpgatherqq", "gather_64x_64y", modifiers=[0x91])
7077 modifiers=["Op2Add"],
7087 modifiers=["Op2Add"],
7095 add_insn("vgatherdps", "gather_32x_32y", modifiers=[0x92])
7096 add_insn("vpgatherdd", "gather_32x_32y", modifiers=[0x90])
7100 modifiers=["Op2Add"],
7110 modifiers=["Op2Add"],
7118 add_insn("vgatherqps", "gather_32x_32y_128", modifiers=[0x93])
7119 add_insn("vpgatherqd", "gather_32x_32y_128", modifiers=[0x91])
7128 modifiers=["Op2Add"],
7138 modifiers=["Op2Add"],
7150 modifiers=["Op2Add"],
7160 modifiers=["Op2Add"],
7171 modifiers=["Op2Add"],
7182 modifiers=["Op2Add"],
7193 modifiers=["Op2Add"],
7204 modifiers=["Op2Add"],
7217 add_insn("vfmadd"+order+comb, "vfma_"+comb, modifiers=[0x98+ov+cv])
7218 add_insn("vfmsub"+order+comb, "vfma_"+comb, modifiers=[0x9A+ov+cv])
7219 add_insn("vfnmsub"+order+comb, "vfma_"+comb, modifiers=[0x9E+ov+cv])
7220 add_insn("vfnmadd"+order+comb, "vfma_"+comb, modifiers=[0x9C+ov+cv])
7224 add_insn("vfmaddsub"+order+comb, "vfma_"+comb, modifiers=[0x96+ov])
7225 add_insn("vfmsubadd"+order+comb, "vfma_"+comb, modifiers=[0x97+ov])
7233 modifiers=["Op1Add", "Op2Add", "SetVEX"],
7240 modifiers=["Op1Add", "Op2Add"],
7249 add_insn("aesenc", "aes", modifiers=[0x38, 0xDC])
7250 add_insn("aesenclast", "aes", modifiers=[0x38, 0xDD])
7251 add_insn("aesdec", "aes", modifiers=[0x38, 0xDE])
7252 add_insn("aesdeclast", "aes", modifiers=[0x38, 0xDF])
7254 add_insn("vaesenc", "aes", modifiers=[0x38, 0xDC, VEXL0], avx=True)
7255 add_insn("vaesenclast", "aes", modifiers=[0x38, 0xDD, VEXL0], avx=True)
7256 add_insn("vaesdec", "aes", modifiers=[0x38, 0xDE, VEXL0], avx=True)
7257 add_insn("vaesdeclast", "aes", modifiers=[0x38, 0xDF, VEXL0], avx=True)
7261 modifiers=["Op1Add", "Op2Add", "SetVEX"],
7267 add_insn("aesimc", "aesimc", modifiers=[0x38, 0xDB])
7268 add_insn("vaesimc", "aesimc", modifiers=[0x38, 0xDB, VEXL0], avx=True)
7273 modifiers=["Op1Add", "Op2Add", "SetVEX"],
7280 add_insn("aeskeygenassist", "aes_imm", modifiers=[0x3A, 0xDF])
7281 add_insn("vaeskeygenassist", "aes_imm", modifiers=[0x3A, 0xDF, VEXL0],
7290 modifiers=["Op1Add", "Op2Add", "SetVEX"],
7298 modifiers=["Op1Add", "Op2Add"],
7307 add_insn("pclmulqdq", "pclmulqdq", modifiers=[0x3A, 0x44])
7308 add_insn("vpclmulqdq", "pclmulqdq", modifiers=[0x3A, 0x44, VEXL0], avx=True)
7312 modifiers=["Imm8", "SetVEX"],
7319 modifiers=["Imm8"],
7328 add_insn("pclmul"+comb+"qdq", "pclmulqdq_fixed", modifiers=[combval])
7330 modifiers=[combval, VEXL0], avx=True)
7362 modifiers=['SpAdd'],
7371 modifiers=['SpAdd'],
7376 add_insn("rdfsbase", "fs_gs_base", modifiers=[0], only64=True)
7377 add_insn("rdgsbase", "fs_gs_base", modifiers=[1], only64=True)
7378 add_insn("wrfsbase", "fs_gs_base", modifiers=[2], only64=True)
7379 add_insn("wrgsbase", "fs_gs_base", modifiers=[3], only64=True)
7415 modifiers=["PreAdd", "Op2Add"],
7423 modifiers=["PreAdd", "Op2Add"],
7431 modifiers=["PreAdd", "Op2Add"],
7439 modifiers=["PreAdd", "Op2Add"],
7445 add_insn("vcvtps2ph", "avx_cvtps2ph", modifiers=[0x66, 0x1D], avx=True)
7446 add_insn("vcvtph2ps", "avx_cvtph2ps", modifiers=[0x66, 0x13], avx=True)
7509 modifiers=["Op1Add"],
7516 modifiers=["Op1Add"],
7521 add_insn("vfrczpd", "vfrc_pdps", modifiers=[0x01])
7522 add_insn("vfrczps", "vfrc_pdps", modifiers=[0x00])
7593 modifiers=["Op1Add", "Imm8"],
7601 modifiers=["Op1Add"],
7617 add_insn("vpcom"+sfx, "vpcom_imm", modifiers=[opc])
7620 add_insn("vpcom"+cc+sfx, "vpcom", modifiers=[opc, ib])
7622 add_insn("vpcomne"+sfx, "vpcom", modifiers=[opc, 5])
7626 modifiers=["Op1Add"],
7632 add_insn("vphaddbw", "vphaddsub", modifiers=[0xC1])
7633 add_insn("vphaddbd", "vphaddsub", modifiers=[0xC2])
7634 add_insn("vphaddbq", "vphaddsub", modifiers=[0xC3])
7635 add_insn("vphaddwd", "vphaddsub", modifiers=[0xC6])
7636 add_insn("vphaddwq", "vphaddsub", modifiers=[0xC7])
7637 add_insn("vphadddq", "vphaddsub", modifiers=[0xCB])
7639 add_insn("vphaddubw", "vphaddsub", modifiers=[0xD1])
7640 add_insn("vphaddubd", "vphaddsub", modifiers=[0xD2])
7641 add_insn("vphaddubq", "vphaddsub", modifiers=[0xD3])
7642 add_insn("vphadduwd", "vphaddsub", modifiers=[0xD6])
7643 add_insn("vphadduwq", "vphaddsub", modifiers=[0xD7])
7644 add_insn("vphaddudq", "vphaddsub", modifiers=[0xD8])
7646 add_insn("vphsubbw", "vphaddsub", modifiers=[0xE1])
7647 add_insn("vphsubwd", "vphaddsub", modifiers=[0xE2])
7648 add_insn("vphsubdq", "vphaddsub", modifiers=[0xE3])
7652 modifiers=["Op1Add"],
7660 add_insn("vpmacsdd", "vpma", modifiers=[0x9E])
7661 add_insn("vpmacsdqh", "vpma", modifiers=[0x9F])
7662 add_insn("vpmacsdql", "vpma", modifiers=[0x97])
7663 add_insn("vpmacssdd", "vpma", modifiers=[0x8E])
7664 add_insn("vpmacssdqh", "vpma", modifiers=[0x8F])
7665 add_insn("vpmacssdql", "vpma", modifiers=[0x87])
7666 add_insn("vpmacsswd", "vpma", modifiers=[0x86])
7667 add_insn("vpmacssww", "vpma", modifiers=[0x85])
7668 add_insn("vpmacswd", "vpma", modifiers=[0x96])
7669 add_insn("vpmacsww", "vpma", modifiers=[0x95])
7670 add_insn("vpmadcsswd", "vpma", modifiers=[0xA6])
7671 add_insn("vpmadcswd", "vpma", modifiers=[0xB6])
7695 modifiers=["Op1Add"],
7704 modifiers=["Op1Add"],
7713 modifiers=["Op1Add"],
7720 add_insn("vprot"+sfx, "vprot", modifiers=[opc])
7724 modifiers=["Op1Add"],
7733 modifiers=["Op1Add"],
7741 add_insn("vpsha"+sfx, "amd_vpshift", modifiers=[0x98+opc])
7742 add_insn("vpshl"+sfx, "amd_vpshift", modifiers=[0x94+opc])
7750 modifiers=["Op2Add"],
7761 modifiers=["Op2Add"],
7772 modifiers=["Op2Add"],
7783 modifiers=["Op2Add"],
7793 add_insn("vfmaddpd", "fma_128_256", modifiers=[0x69])
7794 add_insn("vfmaddps", "fma_128_256", modifiers=[0x68])
7795 add_insn("vfmaddsubpd", "fma_128_256", modifiers=[0x5D])
7796 add_insn("vfmaddsubps", "fma_128_256", modifiers=[0x5C])
7797 add_insn("vfmsubaddpd", "fma_128_256", modifiers=[0x5F])
7798 add_insn("vfmsubaddps", "fma_128_256", modifiers=[0x5E])
7799 add_insn("vfmsubpd", "fma_128_256", modifiers=[0x6D])
7800 add_insn("vfmsubps", "fma_128_256", modifiers=[0x6C])
7801 add_insn("vfnmaddpd", "fma_128_256", modifiers=[0x79])
7802 add_insn("vfnmaddps", "fma_128_256", modifiers=[0x78])
7803 add_insn("vfnmsubpd", "fma_128_256", modifiers=[0x7D])
7804 add_insn("vfnmsubps", "fma_128_256", modifiers=[0x7C])
7809 modifiers=["Op2Add"],
7820 modifiers=["Op2Add"],
7831 modifiers=["Op2Add"],
7841 add_insn("vfmaddsd", "fma_128_m64", modifiers=[0x6B])
7842 add_insn("vfmaddss", "fma_128_m32", modifiers=[0x6A])
7843 add_insn("vfmsubsd", "fma_128_m64", modifiers=[0x6F])
7844 add_insn("vfmsubss", "fma_128_m32", modifiers=[0x6E])
7845 add_insn("vfnmaddsd", "fma_128_m64", modifiers=[0x7B])
7846 add_insn("vfnmaddss", "fma_128_m32", modifiers=[0x7A])
7847 add_insn("vfnmsubsd", "fma_128_m64", modifiers=[0x7F])
7848 add_insn("vfnmsubss", "fma_128_m32", modifiers=[0x7E])
7853 add_insn("xgetbv", "threebyte", modifiers=[0x0F, 0x01, 0xD0],
7855 add_insn("xsetbv", "threebyte", modifiers=[0x0F, 0x01, 0xD1],
7857 add_insn("xsave", "twobytemem", modifiers=[4, 0x0F, 0xAE],
7859 add_insn("xrstor", "twobytemem", modifiers=[5, 0x0F, 0xAE],
7862 add_insn("xsaveopt", "twobytemem", modifiers=[6, 0x0F, 0xAE],
7866 modifiers=["SpAdd", "Op0Add", "Op1Add"],
7871 add_insn("xsaveopt64", "xsaveopt64", modifiers=[6, 0x0F, 0xAE],
7896 add_insn("tzcnt", "cnt", modifiers=[0xBC], cpu=["BMI1"])
7902 modifiers=["PreAdd", "Op2Add", "SpAdd" ],
7911 add_insn("blsr", "vex_gpr_ndd_rm_0F38_regext", modifiers=[0x00, 0xF3, 1],
7913 add_insn("blsmsk", "vex_gpr_ndd_rm_0F38_regext", modifiers=[0x00, 0xF3, 2],
7915 add_insn("blsi", "vex_gpr_ndd_rm_0F38_regext", modifiers=[0x00, 0xF3, 3],
7921 modifiers=["PreAdd", "Op1Add", "Op2Add"],
7930 add_insn("rorx", "vex_gpr_reg_rm_0F_imm8", modifiers=[0xF2, 0x3A, 0xF0],
7936 modifiers=["PreAdd", "Op1Add", "Op2Add"],
7945 add_insn("andn", "vex_gpr_reg_nds_rm_0F", modifiers=[0x00, 0x38, 0xF2],
7948 add_insn("pdep", "vex_gpr_reg_nds_rm_0F", modifiers=[0xF2, 0x38, 0xF5],
7950 add_insn("pext", "vex_gpr_reg_nds_rm_0F", modifiers=[0xF3, 0x38, 0xF5],
7956 modifiers=["PreAdd", "Op1Add", "Op2Add"],
7965 modifiers=[0x00, 0x38, 0xF5],
7967 add_insn("bextr","vex_gpr_reg_rm_nds_0F", modifiers=[0x00, 0x38, 0xF7],
7969 add_insn("shlx", "vex_gpr_reg_rm_nds_0F", modifiers=[0x66, 0x38, 0xF7],
7971 add_insn("shrx", "vex_gpr_reg_rm_nds_0F", modifiers=[0xF2, 0x38, 0xF7],
7973 add_insn("sarx", "vex_gpr_reg_rm_nds_0F", modifiers=[0xF3, 0x38, 0xF7],
7976 add_insn("mulx", "vex_gpr_reg_nds_rm_0F", modifiers=[0xF2, 0x38, 0xF6],
8005 add_insn("prefetch", "twobytemem", modifiers=[0x00, 0x0F, 0x0D], cpu=["3DNow"])
8006 add_insn("prefetchw", "twobytemem", modifiers=[0x01, 0x0F, 0x0D], cpu=["3DNow"])
8007 add_insn("femms", "twobyte", modifiers=[0x0F, 0x0E], cpu=["3DNow"])
8011 modifiers=["Imm8"],
8016 add_insn("pavgusb", "now3d", modifiers=[0xBF])
8017 add_insn("pf2id", "now3d", modifiers=[0x1D])
8018 add_insn("pf2iw", "now3d", modifiers=[0x1C], cpu=["Athlon", "3DNow"])
8019 add_insn("pfacc", "now3d", modifiers=[0xAE])
8020 add_insn("pfadd", "now3d", modifiers=[0x9E])
8021 add_insn("pfcmpeq", "now3d", modifiers=[0xB0])
8022 add_insn("pfcmpge", "now3d", modifiers=[0x90])
8023 add_insn("pfcmpgt", "now3d", modifiers=[0xA0])
8024 add_insn("pfmax", "now3d", modifiers=[0xA4])
8025 add_insn("pfmin", "now3d", modifiers=[0x94])
8026 add_insn("pfmul", "now3d", modifiers=[0xB4])
8027 add_insn("pfnacc", "now3d", modifiers=[0x8A], cpu=["Athlon", "3DNow"])
8028 add_insn("pfpnacc", "now3d", modifiers=[0x8E], cpu=["Athlon", "3DNow"])
8029 add_insn("pfrcp", "now3d", modifiers=[0x96])
8030 add_insn("pfrcpit1", "now3d", modifiers=[0xA6])
8031 add_insn("pfrcpit2", "now3d", modifiers=[0xB6])
8032 add_insn("pfrsqit1", "now3d", modifiers=[0xA7])
8033 add_insn("pfrsqrt", "now3d", modifiers=[0x97])
8034 add_insn("pfsub", "now3d", modifiers=[0x9A])
8035 add_insn("pfsubr", "now3d", modifiers=[0xAA])
8036 add_insn("pi2fd", "now3d", modifiers=[0x0D])
8037 add_insn("pi2fw", "now3d", modifiers=[0x0C], cpu=["Athlon", "3DNow"])
8038 add_insn("pmulhrwa", "now3d", modifiers=[0xB7])
8039 add_insn("pswapd", "now3d", modifiers=[0xBB], cpu=["Athlon", "3DNow"])
8045 add_insn("syscall", "twobyte", modifiers=[0x0F, 0x05], cpu=["686", "AMD"])
8047 add_insn("sysret"+(sfx or ""), "twobyte", suffix=sfx, modifiers=[0x0F, 0x07],
8049 add_insn("lzcnt", "cnt", modifiers=[0xBD], cpu=["LZCNT"])
8055 add_insn("swapgs", "threebyte", modifiers=[0x0F, 0x01, 0xF8], only64=True)
8056 add_insn("rdtscp", "threebyte", modifiers=[0x0F, 0x01, 0xF9],
8072 add_insn("clgi", "threebyte", modifiers=[0x0F, 0x01, 0xDD], cpu=["SVM"])
8073 add_insn("stgi", "threebyte", modifiers=[0x0F, 0x01, 0xDC], cpu=["SVM"])
8074 add_insn("vmmcall", "threebyte", modifiers=[0x0F, 0x01, 0xD9], cpu=["SVM"])
8101 modifiers=["Op2Add"],
8106 modifiers=["Op2Add"],
8110 add_insn("vmload", "svm_rax", modifiers=[0xDA])
8111 add_insn("vmrun", "svm_rax", modifiers=[0xD8])
8112 add_insn("vmsave", "svm_rax", modifiers=[0xDB])
8120 modifiers=["Imm8", "PreAdd", "Op1Add"],
8125 add_insn("xstore", "padlock", modifiers=[0xC0, 0x00, 0xA7])
8126 add_insn("xstorerng", "padlock", modifiers=[0xC0, 0x00, 0xA7])
8127 add_insn("xcryptecb", "padlock", modifiers=[0xC8, 0xF3, 0xA7])
8128 add_insn("xcryptcbc", "padlock", modifiers=[0xD0, 0xF3, 0xA7])
8129 add_insn("xcryptctr", "padlock", modifiers=[0xD8, 0xF3, 0xA7])
8130 add_insn("xcryptcfb", "padlock", modifiers=[0xE0, 0xF3, 0xA7])
8131 add_insn("xcryptofb", "padlock", modifiers=[0xE8, 0xF3, 0xA7])
8132 add_insn("montmul", "padlock", modifiers=[0xC0, 0xF3, 0xA6])
8133 add_insn("xsha1", "padlock", modifiers=[0xC8, 0xF3, 0xA6])
8134 add_insn("xsha256", "padlock", modifiers=[0xD0, 0xF3, 0xA6])
8142 modifiers=["Op1Add"],
8147 add_insn("paddsiw", "cyrixmmx", modifiers=[0x51])
8148 add_insn("paveb", "cyrixmmx", modifiers=[0x50])
8149 add_insn("pdistib", "cyrixmmx", modifiers=[0x54])
8150 add_insn("pmagw", "cyrixmmx", modifiers=[0x52])
8151 add_insn("pmulhriw", "cyrixmmx", modifiers=[0x5D])
8152 add_insn("pmulhrwc", "cyrixmmx", modifiers=[0x59])
8153 add_insn("pmvgezb", "cyrixmmx", modifiers=[0x5C])
8154 add_insn("pmvlzb", "cyrixmmx", modifiers=[0x5B])
8155 add_insn("pmvnzb", "cyrixmmx", modifiers=[0x5A])
8156 add_insn("pmvzb", "cyrixmmx", modifiers=[0x58])
8157 add_insn("psubsiw", "cyrixmmx", modifiers=[0x55])
8171 add_insn("smint", "twobyte", modifiers=[0x0F, 0x38], cpu=["686", "Cyrix"])
8172 add_insn("smintold", "twobyte", modifiers=[0x0F, 0x7E], cpu=["486", "Cyrix", "Obs"])
8176 modifiers=["Op1Add"],
8180 add_insn("rdshr", "rdwrshr", modifiers=[0x00])
8181 add_insn("wrshr", "rdwrshr", modifiers=[0x01])
8193 modifiers=["Op1Add"],
8197 add_insn("rsldt", "cyrixsmm", modifiers=[0x7B])
8198 add_insn("rsts", "cyrixsmm", modifiers=[0x7D])
8199 add_insn("svldt", "cyrixsmm", modifiers=[0x7A])
8200 add_insn("svts", "cyrixsmm", modifiers=[0x7C])
8214 add_insn("fsetpm", "twobyte", modifiers=[0xDB, 0xE4], cpu=["286", "FPU", "Obs"])
8215 add_insn("loadall", "twobyte", modifiers=[0x0F, 0x07], cpu=["386", "Undoc"])
8216 add_insn("loadall286", "twobyte", modifiers=[0x0F, 0x05], cpu=["286", "Undoc"])
8217 add_insn("salc", "onebyte", modifiers=[0xD6], cpu=["Undoc"], not64=True)
8218 add_insn("smi", "onebyte", modifiers=[0xF1], cpu=["386", "Undoc"])