Intel.hs (18199B)
1 {-# OPTIONS_HADDOCK prune #-} 2 {-# LANGUAGE OverloadedStrings #-} 3 4 -- | 5 -- Module: Vestigia.Contract.Intel 6 -- Copyright: (c) 2026 Jared Tobin 7 -- License: MIT 8 -- Maintainer: Jared Tobin <jared@ppad.tech> 9 -- 10 -- Intel's data-operand-independent-timing contract (DOITM), row by 11 -- row, transcribed from Intel's list. 12 -- 13 -- == Source 14 -- 15 -- Intel, /Data Operand Independent Timing Instructions/, document ID 16 -- 768547, updated 2026-02-23, Table 1 \"Documented Data Operand 17 -- Independent Timing Instructions\" (840 mnemonic\/opcode rows, 594 18 -- distinct mnemonics), retrieved 2026-10-27 from @www.intel.com@ 19 -- under 20 -- @\/content\/www\/us\/en\/developer\/articles\/technical\/@ 21 -- @software-security-guidance\/resources\/@, saved from a browser 22 -- (the host refuses automated retrieval; sha256 of the page as saved 23 -- @0f67179a44c9f872ab240c3363ee664340beea36ce4a07cbfe1a34cc7adb6a10@). 24 -- The revision of 2023-02-28, as the Internet Archive kept it through 25 -- 2025-11-13, lacks BSWAP, CQO, MOVAPS, MOVSS, MOVUPS, ROL, ROR, 26 -- RORX, SHLD, SHRD, and XORPS; this one adds them and drops none. 27 -- 28 -- == Rule 29 -- 30 -- A row names a mnemonic and an opcode byte: the instruction's last 31 -- opcode byte, after any prefixes, VEX or EVEX payload, and escape 32 -- bytes. The list's own preface reads: 33 -- 34 -- > The table below lists instructions that have data-independent 35 -- > timing. [...] Note that these data operand independent timing 36 -- > instructions may have variable latency for reasons unrelated to 37 -- > the data values (for example, loading data from memory or the 38 -- > encoding of the instruction). 39 -- 40 -- The @REP_@ rows carry a footnote, \"These REP_ instructions' 41 -- latency varies based on the loop count (*CX)\", whose marker is 42 -- dropped from their names here: a count that depends on the secret 43 -- repeats the instruction a different number of times, which is 44 -- control flow. 45 46 module Vestigia.Contract.Intel ( 47 instructions 48 ) where 49 50 import qualified Data.Text as T 51 import Data.Word (Word8) 52 53 -- | Every row: a mnemonic, as the list spells it, and an opcode byte. 54 instructions :: [(T.Text, Word8)] 55 instructions = 56 [ ("ADC", 0x10), ("ADC", 0x11), ("ADC", 0x12), ("ADC", 0x13), ("ADC", 0x14) 57 , ("ADC", 0x15), ("ADC", 0x80), ("ADC", 0x81), ("ADC", 0x82), ("ADC", 0x83) 58 , ("ADCX", 0xf6), ("ADD", 0x00), ("ADD", 0x01), ("ADD", 0x02), ("ADD", 0x03) 59 , ("ADD", 0x04), ("ADD", 0x05), ("ADD", 0x80), ("ADD", 0x81), ("ADD", 0x82) 60 , ("ADD", 0x83), ("ADOX", 0xf6), ("AESDEC", 0xde), ("AESDECLAST", 0xdf) 61 , ("AESENC", 0xdc), ("AESENCLAST", 0xdd), ("AESIMC", 0xdb) 62 , ("AESKEYGENASSIST", 0xdf), ("AND", 0x20), ("AND", 0x21), ("AND", 0x22) 63 , ("AND", 0x23), ("AND", 0x24), ("AND", 0x25), ("AND", 0x80), ("AND", 0x81) 64 , ("AND", 0x82), ("AND", 0x83), ("ANDN", 0xf2), ("BSWAP", 0xc8) 65 , ("BSWAP", 0xc9), ("BSWAP", 0xca), ("BSWAP", 0xcb), ("BSWAP", 0xcc) 66 , ("BSWAP", 0xcd), ("BSWAP", 0xce), ("BSWAP", 0xcf), ("BT", 0xa3) 67 , ("BT", 0xba), ("BTC", 0xba), ("BTC", 0xbb), ("BTR", 0xb3), ("BTR", 0xba) 68 , ("BTS", 0xab), ("BTS", 0xba), ("CMOVB", 0x42), ("CMOVBE", 0x46) 69 , ("CMOVL", 0x4c), ("CMOVLE", 0x4e), ("CMOVNB", 0x43), ("CMOVNBE", 0x47) 70 , ("CMOVNL", 0x4d), ("CMOVNLE", 0x4f), ("CMOVNO", 0x41), ("CMOVNP", 0x4b) 71 , ("CMOVNS", 0x49), ("CMOVNZ", 0x45), ("CMOVO", 0x40), ("CMOVP", 0x4a) 72 , ("CMOVS", 0x48), ("CMOVZ", 0x44), ("CMP", 0x38), ("CMP", 0x39) 73 , ("CMP", 0x3a), ("CMP", 0x3b), ("CMP", 0x3c), ("CMP", 0x3d), ("CMP", 0x80) 74 , ("CMP", 0x81), ("CMP", 0x82), ("CMP", 0x83), ("CQO", 0x99), ("DEC", 0x48) 75 , ("DEC", 0x49), ("DEC", 0x4a), ("DEC", 0x4b), ("DEC", 0x4c), ("DEC", 0x4d) 76 , ("DEC", 0x4e), ("DEC", 0x4f), ("DEC", 0xfe), ("DEC", 0xff) 77 , ("GF2P8AFFINEINVQB", 0xcf), ("GF2P8AFFINEQB", 0xce), ("GF2P8MULB", 0xcf) 78 , ("IMUL", 0x69), ("IMUL", 0x6b), ("IMUL", 0xaf), ("IMUL", 0xf6) 79 , ("IMUL", 0xf7), ("INC", 0x40), ("INC", 0x41), ("INC", 0x42), ("INC", 0x43) 80 , ("INC", 0x44), ("INC", 0x45), ("INC", 0x46), ("INC", 0x47), ("INC", 0xfe) 81 , ("INC", 0xff), ("KADDB", 0x4a), ("KADDD", 0x4a), ("KADDQ", 0x4a) 82 , ("KADDW", 0x4a), ("KANDB", 0x41), ("KANDD", 0x41), ("KANDNB", 0x42) 83 , ("KANDND", 0x42), ("KANDNQ", 0x42), ("KANDNW", 0x42), ("KANDQ", 0x41) 84 , ("KANDW", 0x41), ("KMOVB", 0x90), ("KMOVB", 0x91), ("KMOVB", 0x92) 85 , ("KMOVB", 0x93), ("KMOVD", 0x90), ("KMOVD", 0x91), ("KMOVD", 0x92) 86 , ("KMOVD", 0x93), ("KMOVQ", 0x90), ("KMOVQ", 0x91), ("KMOVQ", 0x92) 87 , ("KMOVQ", 0x93), ("KMOVW", 0x90), ("KMOVW", 0x91), ("KMOVW", 0x92) 88 , ("KMOVW", 0x93), ("KNOTB", 0x44), ("KNOTD", 0x44), ("KNOTQ", 0x44) 89 , ("KNOTW", 0x44), ("KORB", 0x45), ("KORD", 0x45), ("KORQ", 0x45) 90 , ("KORTESTB", 0x98), ("KORTESTD", 0x98), ("KORTESTQ", 0x98) 91 , ("KORTESTW", 0x98), ("KORW", 0x45), ("KSHIFTLB", 0x32), ("KSHIFTLD", 0x33) 92 , ("KSHIFTLQ", 0x33), ("KSHIFTLW", 0x32), ("KSHIFTRB", 0x30) 93 , ("KSHIFTRD", 0x31), ("KSHIFTRQ", 0x31), ("KSHIFTRW", 0x30) 94 , ("KTESTB", 0x99), ("KTESTD", 0x99), ("KTESTQ", 0x99), ("KTESTW", 0x99) 95 , ("KUNPCKBW", 0x4b), ("KUNPCKDQ", 0x4b), ("KUNPCKWD", 0x4b) 96 , ("KXNORB", 0x46), ("KXNORD", 0x46), ("KXNORQ", 0x46), ("KXNORW", 0x46) 97 , ("KXORB", 0x47), ("KXORD", 0x47), ("KXORQ", 0x47), ("KXORW", 0x47) 98 , ("LDDQU", 0xf0), ("LEA", 0x8d), ("MOV", 0x88), ("MOV", 0x89), ("MOV", 0x8a) 99 , ("MOV", 0x8b), ("MOV", 0xa0), ("MOV", 0xa1), ("MOV", 0xa2), ("MOV", 0xa3) 100 , ("MOV", 0xb0), ("MOV", 0xb1), ("MOV", 0xb2), ("MOV", 0xb3), ("MOV", 0xb4) 101 , ("MOV", 0xb5), ("MOV", 0xb6), ("MOV", 0xb7), ("MOV", 0xb8), ("MOV", 0xb9) 102 , ("MOV", 0xba), ("MOV", 0xbb), ("MOV", 0xbc), ("MOV", 0xbd), ("MOV", 0xbe) 103 , ("MOV", 0xbf), ("MOV", 0xc6), ("MOV", 0xc7), ("MOVAPS", 0x28) 104 , ("MOVAPS", 0x29), ("MOVD", 0x6e), ("MOVD", 0x7e), ("MOVDDUP", 0x12) 105 , ("MOVDQ2Q", 0xd6), ("MOVDQA", 0x6f), ("MOVDQA", 0x7f), ("MOVDQU", 0x6f) 106 , ("MOVDQU", 0x7f), ("MOVNTDQ", 0xe7), ("MOVNTDQA", 0x2a), ("MOVQ", 0x6e) 107 , ("MOVQ", 0x7e), ("MOVQ", 0xd6), ("MOVSB", 0xa4), ("MOVSD", 0xa5) 108 , ("MOVSHDUP", 0x16), ("MOVSLDUP", 0x12), ("MOVSQ", 0xa5), ("MOVSS", 0x10) 109 , ("MOVSS", 0x11), ("MOVSW", 0xa5), ("MOVSX", 0xbe), ("MOVSX", 0xbf) 110 , ("MOVSXD", 0x63), ("MOVUPS", 0x10), ("MOVUPS", 0x11), ("MOVZX", 0xb6) 111 , ("MOVZX", 0xb7), ("MPSADBW", 0x42), ("MUL", 0xf6), ("MUL", 0xf7) 112 , ("MULX", 0xf6), ("NEG", 0xf6), ("NEG", 0xf7), ("NOT", 0xf6), ("NOT", 0xf7) 113 , ("OR", 0x08), ("OR", 0x80), ("OR", 0x81), ("OR", 0x82), ("OR", 0x83) 114 , ("OR", 0x09), ("OR", 0x0a), ("OR", 0x0b), ("OR", 0x0c), ("OR", 0x0d) 115 , ("PABSB", 0x1c), ("PABSD", 0x1e), ("PABSW", 0x1d), ("PACKSSDW", 0x6b) 116 , ("PACKSSWB", 0x63), ("PACKUSDW", 0x2b), ("PACKUSWB", 0x67), ("PADDB", 0xfc) 117 , ("PADDD", 0xfe), ("PADDQ", 0xd4), ("PADDSB", 0xec), ("PADDSW", 0xed) 118 , ("PADDUSB", 0xdc), ("PADDUSW", 0xdd), ("PADDW", 0xfd), ("PALIGNR", 0x0f) 119 , ("PAND", 0xdb), ("PANDN", 0xdf), ("PAVGB", 0xe0), ("PAVGW", 0xe3) 120 , ("PBLENDVB", 0x10), ("PBLENDW", 0x0e), ("PCLMULQDQ", 0x44) 121 , ("PCMPEQB", 0x74), ("PCMPEQD", 0x76), ("PCMPEQQ", 0x29), ("PCMPEQW", 0x75) 122 , ("PCMPGTB", 0x64), ("PCMPGTD", 0x66), ("PCMPGTQ", 0x37), ("PCMPGTW", 0x65) 123 , ("PEXTRB", 0x14), ("PEXTRD", 0x16), ("PEXTRQ", 0x16), ("PEXTRW", 0x15) 124 , ("PEXTRW", 0xc5), ("PHADDD", 0x02), ("PHADDSW", 0x03), ("PHADDW", 0x01) 125 , ("PHMINPOSUW", 0x41), ("PHSUBD", 0x06), ("PHSUBSW", 0x07), ("PHSUBW", 0x05) 126 , ("PINSRB", 0x20), ("PINSRD", 0x22), ("PINSRQ", 0x22), ("PINSRW", 0xc4) 127 , ("PMADDUBSW", 0x04), ("PMADDWD", 0xf5), ("PMAXSB", 0x3c), ("PMAXSW", 0xee) 128 , ("PMAXUB", 0xde), ("PMAXUD", 0x3f), ("PMAXUW", 0x3e), ("PMINSB", 0x38) 129 , ("PMINSW", 0xea), ("PMINUB", 0xda), ("PMINUD", 0x3b), ("PMINUW", 0x3a) 130 , ("PMOVMSKB", 0xd7), ("PMOVSXBD", 0x21), ("PMOVSXBQ", 0x22) 131 , ("PMOVSXBW", 0x20), ("PMOVSXDQ", 0x25), ("PMOVSXWD", 0x23) 132 , ("PMOVSXWQ", 0x24), ("PMOVZXBD", 0x31), ("PMOVZXBQ", 0x32) 133 , ("PMOVZXBW", 0x30), ("PMOVZXDQ", 0x35), ("PMOVZXWD", 0x33) 134 , ("PMOVZXWQ", 0x34), ("PMULDQ", 0x28), ("PMULHRSW", 0x0b), ("PMULHUW", 0xe4) 135 , ("PMULHW", 0xe5), ("PMULLD", 0x40), ("PMULLW", 0xd5), ("PMULUDQ", 0xf4) 136 , ("POP", 0x58), ("POP", 0x59), ("POP", 0x5a), ("POP", 0x5b), ("POP", 0x5c) 137 , ("POP", 0x5d), ("POP", 0x5e), ("POP", 0x5f), ("POP", 0x8f), ("POR", 0xeb) 138 , ("PSADBW", 0xf6), ("PSHUFB", 0x00), ("PSHUFD", 0x70), ("PSHUFHW", 0x70) 139 , ("PSHUFLW", 0x70), ("PSIGNB", 0x08), ("PSIGND", 0x0a), ("PSIGNW", 0x09) 140 , ("PSLLD", 0x72), ("PSLLD", 0xf2), ("PSLLDQ", 0x73), ("PSLLQ", 0x73) 141 , ("PSLLQ", 0xf3), ("PSLLW", 0x71), ("PSLLW", 0xf1), ("PSRAD", 0x72) 142 , ("PSRAD", 0xe2), ("PSRAW", 0x71), ("PSRAW", 0xe1), ("PSRLD", 0x72) 143 , ("PSRLD", 0xd2), ("PSRLDQ", 0x73), ("PSRLQ", 0x73), ("PSRLQ", 0xd3) 144 , ("PSRLW", 0x71), ("PSRLW", 0xd1), ("PSUBB", 0xf8), ("PSUBD", 0xfa) 145 , ("PSUBQ", 0xfb), ("PSUBSB", 0xe8), ("PSUBSW", 0xe9), ("PSUBUSB", 0xd8) 146 , ("PSUBUSW", 0xd9), ("PSUBW", 0xf9), ("PTEST", 0x17), ("PUNPCKHBW", 0x68) 147 , ("PUNPCKHDQ", 0x6a), ("PUNPCKHQDQ", 0x6d), ("PUNPCKHWD", 0x69) 148 , ("PUNPCKLBW", 0x60), ("PUNPCKLDQ", 0x62), ("PUNPCKLQDQ", 0x6c) 149 , ("PUNPCKLWD", 0x61), ("PUSH", 0x50), ("PUSH", 0x51), ("PUSH", 0x52) 150 , ("PUSH", 0x53), ("PUSH", 0x54), ("PUSH", 0x55), ("PUSH", 0x56) 151 , ("PUSH", 0x57), ("PUSH", 0x68), ("PUSH", 0x6a), ("PUSH", 0xff) 152 , ("PXOR", 0xef), ("REP_MOVSB", 0xa4), ("REP_MOVSD", 0xa5) 153 , ("REP_MOVSW", 0xa5), ("REP_STOSB", 0xaa), ("REP_STOSD", 0xab) 154 , ("REP_STOSW", 0xab), ("ROL", 0xc0), ("ROL", 0xc1), ("ROL", 0xd0) 155 , ("ROL", 0xd1), ("ROL", 0xd2), ("ROL", 0xd3), ("ROR", 0xc0), ("ROR", 0xc1) 156 , ("ROR", 0xd0), ("ROR", 0xd1), ("ROR", 0xd2), ("ROR", 0xd3), ("RORX", 0xf0) 157 , ("SAR", 0xc0), ("SAR", 0xc1), ("SAR", 0xd0), ("SAR", 0xd1), ("SAR", 0xd2) 158 , ("SAR", 0xd3), ("SBB", 0x18), ("SBB", 0x19), ("SBB", 0x1a), ("SBB", 0x1b) 159 , ("SBB", 0x1c), ("SBB", 0x1d), ("SBB", 0x80), ("SBB", 0x81), ("SBB", 0x82) 160 , ("SBB", 0x83), ("SETB", 0x92), ("SETBE", 0x96), ("SETL", 0x9c) 161 , ("SETLE", 0x9e), ("SETNB", 0x93), ("SETNBE", 0x97), ("SETNL", 0x9d) 162 , ("SETNLE", 0x9f), ("SETNO", 0x91), ("SETNP", 0x9b), ("SETNS", 0x99) 163 , ("SETNZ", 0x95), ("SETO", 0x90), ("SETP", 0x9a), ("SETS", 0x98) 164 , ("SETZ", 0x94), ("SHA1MSG1", 0xc9), ("SHA1MSG2", 0xca), ("SHA1NEXTE", 0xc8) 165 , ("SHA1RNDS4", 0xcc), ("SHA256MSG1", 0xcc), ("SHA256MSG2", 0xcd) 166 , ("SHA256RNDS2", 0xcb), ("SHL", 0xc0), ("SHL", 0xc1), ("SHL", 0xd0) 167 , ("SHL", 0xd1), ("SHL", 0xd2), ("SHL", 0xd3), ("SHLD", 0x24), ("SHLD", 0xa4) 168 , ("SHLD", 0xa5), ("SHLX", 0xf7), ("SHR", 0xc0), ("SHR", 0xc1), ("SHR", 0xd0) 169 , ("SHR", 0xd1), ("SHR", 0xd2), ("SHR", 0xd3), ("SHRD", 0x2c), ("SHRD", 0xac) 170 , ("SHRD", 0xad), ("SHRX", 0xf7), ("SUB", 0x28), ("SUB", 0x29), ("SUB", 0x2a) 171 , ("SUB", 0x2b), ("SUB", 0x2c), ("SUB", 0x2d), ("SUB", 0x80), ("SUB", 0x81) 172 , ("SUB", 0x82), ("SUB", 0x83), ("TEST", 0x84), ("TEST", 0x85) 173 , ("TEST", 0xa8), ("TEST", 0xa9), ("TEST", 0xf6), ("TEST", 0xf7) 174 , ("VAESDEC", 0xde), ("VAESDECLAST", 0xdf), ("VAESENC", 0xdc) 175 , ("VAESENCLAST", 0xdd), ("VAESIMC", 0xdb), ("VAESKEYGENASSIST", 0xdf) 176 , ("VALIGND", 0x03), ("VALIGNQ", 0x03), ("VBLENDMPD", 0x65) 177 , ("VBLENDMPS", 0x65), ("VBROADCASTF128", 0x1a), ("VBROADCASTF32X2", 0x19) 178 , ("VBROADCASTF32X4", 0x1a), ("VBROADCASTF32X8", 0x1b) 179 , ("VBROADCASTF64X2", 0x1a), ("VBROADCASTF64X4", 0x1b) 180 , ("VBROADCASTI128", 0x5a), ("VBROADCASTI32X2", 0x59) 181 , ("VBROADCASTI32X4", 0x5a), ("VBROADCASTI32X8", 0x5b) 182 , ("VBROADCASTI64X2", 0x5a), ("VBROADCASTI64X4", 0x5b) 183 , ("VBROADCASTSD", 0x19), ("VBROADCASTSS", 0x18), ("VCOMPRESSPD", 0x8a) 184 , ("VCOMPRESSPS", 0x8a), ("VDBPSADBW", 0x42), ("VEXPANDPD", 0x88) 185 , ("VEXPANDPS", 0x88), ("VEXTRACTF128", 0x19), ("VEXTRACTF32X4", 0x19) 186 , ("VEXTRACTF32X8", 0x1b), ("VEXTRACTF64X2", 0x19), ("VEXTRACTF64X4", 0x1b) 187 , ("VEXTRACTI128", 0x39), ("VEXTRACTI32X4", 0x39), ("VEXTRACTI32X8", 0x3b) 188 , ("VEXTRACTI64X2", 0x39), ("VEXTRACTI64X4", 0x3b) 189 , ("VGF2P8AFFINEINVQB", 0xcf), ("VGF2P8AFFINEQB", 0xce), ("VGF2P8MULB", 0xcf) 190 , ("VINSERTF128", 0x18), ("VINSERTF32X4", 0x18), ("VINSERTF32X8", 0x1a) 191 , ("VINSERTF64X2", 0x18), ("VINSERTF64X4", 0x1a), ("VINSERTI128", 0x38) 192 , ("VINSERTI32X4", 0x38), ("VINSERTI32X8", 0x3a), ("VINSERTI64X2", 0x38) 193 , ("VINSERTI64X4", 0x3a), ("VLDDQU", 0xf0), ("VMOVD", 0x6e), ("VMOVD", 0x7e) 194 , ("VMOVDDUP", 0x12), ("VMOVDQA", 0x6f), ("VMOVDQA", 0x7f) 195 , ("VMOVDQA32", 0x6f), ("VMOVDQA32", 0x7f), ("VMOVDQA64", 0x6f) 196 , ("VMOVDQA64", 0x7f), ("VMOVDQU", 0x6f), ("VMOVDQU", 0x7f) 197 , ("VMOVDQU16", 0x6f), ("VMOVDQU16", 0x7f), ("VMOVDQU32", 0x6f) 198 , ("VMOVDQU32", 0x7f), ("VMOVDQU64", 0x6f), ("VMOVDQU64", 0x7f) 199 , ("VMOVDQU8", 0x6f), ("VMOVDQU8", 0x7f), ("VMOVNTDQ", 0xe7) 200 , ("VMOVNTDQA", 0x2a), ("VMOVQ", 0x6e), ("VMOVQ", 0x7e), ("VMOVQ", 0xd6) 201 , ("VMOVSD", 0x10), ("VMOVSD", 0x11), ("VMOVSHDUP", 0x16) 202 , ("VMOVSLDUP", 0x12), ("VMPSADBW", 0x42), ("VPABSB", 0x1c), ("VPABSD", 0x1e) 203 , ("VPABSQ", 0x1f), ("VPABSW", 0x1d), ("VPACKSSDW", 0x6b) 204 , ("VPACKSSWB", 0x63), ("VPACKUSDW", 0x2b), ("VPACKUSWB", 0x67) 205 , ("VPADDB", 0xfc), ("VPADDD", 0xfe), ("VPADDQ", 0xd4), ("VPADDSB", 0xec) 206 , ("VPADDSW", 0xed), ("VPADDUSB", 0xdc), ("VPADDUSW", 0xdd), ("VPADDW", 0xfd) 207 , ("VPALIGNR", 0x0f), ("VPAND", 0xdb), ("VPANDD", 0xdb), ("VPANDN", 0xdf) 208 , ("VPANDND", 0xdf), ("VPANDNQ", 0xdf), ("VPANDQ", 0xdb), ("VPAVGB", 0xe0) 209 , ("VPAVGW", 0xe3), ("VPBLENDD", 0x02), ("VPBLENDMB", 0x66) 210 , ("VPBLENDMD", 0x64), ("VPBLENDMQ", 0x64), ("VPBLENDMW", 0x66) 211 , ("VPBLENDVB", 0x4c), ("VPBLENDW", 0x0e), ("VPBROADCASTB", 0x78) 212 , ("VPBROADCASTB", 0x7a), ("VPBROADCASTD", 0x58), ("VPBROADCASTD", 0x7c) 213 , ("VPBROADCASTMB2Q", 0x2a), ("VPBROADCASTMW2D", 0x3a) 214 , ("VPBROADCASTQ", 0x59), ("VPBROADCASTQ", 0x7c), ("VPBROADCASTW", 0x79) 215 , ("VPBROADCASTW", 0x7b), ("VPCLMULQDQ", 0x44), ("VPCMPB", 0x3f) 216 , ("VPCMPEQB", 0x74), ("VPCMPEQD", 0x76), ("VPCMPEQQ", 0x29) 217 , ("VPCMPEQW", 0x75), ("VPCMPGTB", 0x64), ("VPCMPGTD", 0x66) 218 , ("VPCMPGTQ", 0x37), ("VPCMPGTW", 0x65), ("VPCMPQ", 0x1f), ("VPCMPUB", 0x3e) 219 , ("VPCMPUD", 0x1e), ("VPCMPUQ", 0x1e), ("VPCMPUW", 0x3e), ("VPCMPW", 0x3f) 220 , ("VPERM2F128", 0x06), ("VPERM2I128", 0x46), ("VPERMD", 0x36) 221 , ("VPERMI2D", 0x76), ("VPERMI2PD", 0x77), ("VPERMI2PS", 0x77) 222 , ("VPERMI2Q", 0x76), ("VPERMI2W", 0x75), ("VPERMILPD", 0x05) 223 , ("VPERMILPD", 0x0d), ("VPERMILPS", 0x04), ("VPERMILPS", 0x0c) 224 , ("VPERMPD", 0x01), ("VPERMPD", 0x16), ("VPERMPS", 0x16), ("VPERMQ", 0x00) 225 , ("VPERMQ", 0x36), ("VPERMT2D", 0x7e), ("VPERMT2PD", 0x7f) 226 , ("VPERMT2PS", 0x7f), ("VPERMT2Q", 0x7e), ("VPERMT2W", 0x7d) 227 , ("VPERMW", 0x8d), ("VPEXTRB", 0x14), ("VPEXTRD", 0x16), ("VPEXTRQ", 0x16) 228 , ("VPEXTRW", 0x15), ("VPEXTRW", 0xc5), ("VPHADDD", 0x02), ("VPHADDSW", 0x03) 229 , ("VPHADDW", 0x01), ("VPHMINPOSUW", 0x41), ("VPHSUBD", 0x06) 230 , ("VPHSUBSW", 0x07), ("VPHSUBW", 0x05), ("VPINSRB", 0x20), ("VPINSRD", 0x22) 231 , ("VPINSRQ", 0x22), ("VPINSRW", 0xc4), ("VPLZCNTD", 0x44) 232 , ("VPLZCNTQ", 0x44), ("VPMADD52HUQ", 0xb5), ("VPMADD52LUQ", 0xb4) 233 , ("VPMADDUBSW", 0x04), ("VPMADDWD", 0xf5), ("VPMAXSB", 0x3c) 234 , ("VPMAXSQ", 0x3d), ("VPMAXSW", 0xee), ("VPMAXUB", 0xde), ("VPMAXUD", 0x3f) 235 , ("VPMAXUQ", 0x3f), ("VPMAXUW", 0x3e), ("VPMINSB", 0x38), ("VPMINSQ", 0x39) 236 , ("VPMINSW", 0xea), ("VPMINUB", 0xda), ("VPMINUD", 0x3b), ("VPMINUQ", 0x3b) 237 , ("VPMINUW", 0x3a), ("VPMOVB2M", 0x29), ("VPMOVD2M", 0x39) 238 , ("VPMOVDB", 0x31), ("VPMOVDW", 0x33), ("VPMOVM2B", 0x28) 239 , ("VPMOVM2D", 0x38), ("VPMOVM2Q", 0x38), ("VPMOVM2W", 0x28) 240 , ("VPMOVMSKB", 0xd7), ("VPMOVQ2M", 0x39), ("VPMOVQB", 0x32) 241 , ("VPMOVQD", 0x35), ("VPMOVQW", 0x34), ("VPMOVSDB", 0x21) 242 , ("VPMOVSDW", 0x23), ("VPMOVSQB", 0x22), ("VPMOVSQD", 0x25) 243 , ("VPMOVSQW", 0x24), ("VPMOVSWB", 0x20), ("VPMOVSXBD", 0x21) 244 , ("VPMOVSXBQ", 0x22), ("VPMOVSXBW", 0x20), ("VPMOVSXDQ", 0x25) 245 , ("VPMOVSXWD", 0x23), ("VPMOVSXWQ", 0x24), ("VPMOVUSDB", 0x11) 246 , ("VPMOVUSDW", 0x13), ("VPMOVUSQB", 0x12), ("VPMOVUSQD", 0x15) 247 , ("VPMOVUSQW", 0x14), ("VPMOVUSWB", 0x10), ("VPMOVW2M", 0x29) 248 , ("VPMOVWB", 0x30), ("VPMOVZXBD", 0x31), ("VPMOVZXBQ", 0x32) 249 , ("VPMOVZXBW", 0x30), ("VPMOVZXDQ", 0x35), ("VPMOVZXWD", 0x33) 250 , ("VPMOVZXWQ", 0x34), ("VPMULDQ", 0x28), ("VPMULHRSW", 0x0b) 251 , ("VPMULHUW", 0xe4), ("VPMULHW", 0xe5), ("VPMULLD", 0x40), ("VPMULLQ", 0x40) 252 , ("VPMULLW", 0xd5), ("VPMULUDQ", 0xf4), ("VPOR", 0xeb), ("VPORD", 0xeb) 253 , ("VPORQ", 0xeb), ("VPROLD", 0x72), ("VPROLQ", 0x72), ("VPROLVD", 0x15) 254 , ("VPROLVQ", 0x15), ("VPRORD", 0x72), ("VPRORQ", 0x72), ("VPRORVD", 0x14) 255 , ("VPRORVQ", 0x14), ("VPSADBW", 0xf6), ("VPSHLDD", 0x71), ("VPSHLDQ", 0x71) 256 , ("VPSHLDVD", 0x71), ("VPSHLDVQ", 0x71), ("VPSHLDVW", 0x70) 257 , ("VPSHLDW", 0x70), ("VPSHRDD", 0x73), ("VPSHRDQ", 0x73), ("VPSHRDVD", 0x73) 258 , ("VPSHRDVQ", 0x73), ("VPSHRDVW", 0x72), ("VPSHRDW", 0x72) 259 , ("VPSHUFB", 0x00), ("VPSHUFD", 0x70), ("VPSHUFHW", 0x70) 260 , ("VPSHUFLW", 0x70), ("VPSIGNB", 0x08), ("VPSIGND", 0x0a), ("VPSIGNW", 0x09) 261 , ("VPSLLD", 0x72), ("VPSLLD", 0xf2), ("VPSLLDQ", 0x73), ("VPSLLQ", 0x73) 262 , ("VPSLLQ", 0xf3), ("VPSLLVD", 0x47), ("VPSLLVQ", 0x47), ("VPSLLVW", 0x12) 263 , ("VPSLLW", 0x71), ("VPSLLW", 0xf1), ("VPSRAD", 0x72), ("VPSRAD", 0xe2) 264 , ("VPSRAQ", 0x72), ("VPSRAQ", 0xe2), ("VPSRAVD", 0x46), ("VPSRAVQ", 0x46) 265 , ("VPSRAVW", 0x11), ("VPSRAW", 0x71), ("VPSRAW", 0xe1), ("VPSRLD", 0x72) 266 , ("VPSRLD", 0xd2), ("VPSRLDQ", 0x73), ("VPSRLQ", 0x73), ("VPSRLQ", 0xd3) 267 , ("VPSRLVD", 0x45), ("VPSRLVQ", 0x45), ("VPSRLVW", 0x10), ("VPSRLW", 0x71) 268 , ("VPSRLW", 0xd1), ("VPSUBB", 0xf8), ("VPSUBD", 0xfa), ("VPSUBQ", 0xfb) 269 , ("VPSUBSB", 0xe8), ("VPSUBSW", 0xe9), ("VPSUBUSB", 0xd8) 270 , ("VPSUBUSW", 0xd9), ("VPSUBW", 0xf9), ("VPTERNLOGD", 0x25) 271 , ("VPTERNLOGQ", 0x25), ("VPTEST", 0x17), ("VPTESTMB", 0x26) 272 , ("VPTESTMD", 0x27), ("VPTESTMQ", 0x27), ("VPTESTMW", 0x26) 273 , ("VPTESTNMB", 0x26), ("VPTESTNMD", 0x27), ("VPTESTNMQ", 0x27) 274 , ("VPTESTNMW", 0x26), ("VPUNPCKHBW", 0x68), ("VPUNPCKHDQ", 0x6a) 275 , ("VPUNPCKHQDQ", 0x6d), ("VPUNPCKHWD", 0x69), ("VPUNPCKLBW", 0x60) 276 , ("VPUNPCKLDQ", 0x62), ("VPUNPCKLQDQ", 0x6c), ("VPUNPCKLWD", 0x61) 277 , ("VPXOR", 0xef), ("VPXORD", 0xef), ("VPXORQ", 0xef), ("VSHUFF32X4", 0x23) 278 , ("VSHUFF64X2", 0x23), ("VSHUFI32X4", 0x43), ("VSHUFI64X2", 0x43) 279 , ("VZEROALL", 0x77), ("VZEROUPPER", 0x77), ("XOR", 0x30), ("XOR", 0x31) 280 , ("XOR", 0x32), ("XOR", 0x33), ("XOR", 0x34), ("XOR", 0x35), ("XOR", 0x80) 281 , ("XOR", 0x81), ("XOR", 0x82), ("XOR", 0x83), ("XORPS", 0x57) 282 ]