1 /* 2 * HT Editor 3 * x86opc.cc 4 * 5 * Copyright (C) 1999-2002 Stefan Weyergraf 6 * Copyright (C) 2005-2011 Sebastian Biallas (sb@biallas.net) 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License version 2 as 10 * published by the Free Software Foundation. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 */ 21 22 #include "x86opc.h" 23 24 25 x86opc_insn_op x86_op_type[] = { 26 27 #define _0 0 28 {TYPE_0, 0, 0, SIZE_0}, 29 #define _064 _0+1 30 {TYPE_0, 0, INFO_DEFAULT_64, SIZE_0}, 31 32 #define Ap _064+1 33 {TYPE_A, 0, 0, SIZE_P}, 34 #define Cd Ap+1 35 {TYPE_C, 0, INFO_DEFAULT_64, SIZE_D}, 36 #define Dd Cd+1 37 {TYPE_D, 0, 0, SIZE_D}, 38 #define Eb Dd+1 39 {TYPE_E, 0, 0, SIZE_B}, 40 #define Ew Eb+1 41 {TYPE_E, 0, 0, SIZE_W}, 42 #define Ed Ew+1 43 {TYPE_E, 0, 0, SIZE_D}, 44 #define Eq Ed+1 45 {TYPE_E, 0, 0, SIZE_Q}, 46 #define Er Eq+1 47 {TYPE_E, 0, 0, SIZE_R}, 48 #define Ev Er+1 49 {TYPE_E, 0, 0, SIZE_V}, 50 #define Ev64 Ev+1 51 {TYPE_E, 0, INFO_DEFAULT_64, SIZE_V}, 52 #define Gb Ev64+1 53 {TYPE_G, 0, 0, SIZE_B}, 54 #define Gw Gb+1 55 {TYPE_G, 0, 0, SIZE_W}, 56 #define Gv Gw+1 57 {TYPE_G, 0, 0, SIZE_V}, 58 #define Gv64 Gv+1 59 {TYPE_G, 0, INFO_DEFAULT_64, SIZE_V}, 60 #define Gd Gv64+1 61 {TYPE_G, 0, 0, SIZE_D}, 62 #define Gr Gd+1 63 {TYPE_G, 0, 0, SIZE_R}, 64 #define Gq Gr+1 65 {TYPE_G, 0, 0, SIZE_Q}, 66 #define Ib Gq+1 67 {TYPE_I, 0, 0, SIZE_B}, 68 #define Iw Ib+1 69 {TYPE_I, 0, 0, SIZE_W}, 70 #define Id Iw+1 71 {TYPE_I, 0, 0, SIZE_D}, 72 #define Iv Id+1 73 {TYPE_I, 0, 0, SIZE_VV}, 74 #define Iv64 Iv+1 75 {TYPE_I, 0, INFO_DEFAULT_64, SIZE_VV}, 76 #define Ivq Iv64+1 77 {TYPE_I, 0, 0, SIZE_V}, 78 #define Ibv Ivq+1 79 {TYPE_I, 0, 0, SIZE_BV}, 80 #define sIbv Ibv+1 81 {TYPE_Is,0, 0, SIZE_BV}, 82 #define sIbv64 sIbv+1 83 {TYPE_Is,0, INFO_DEFAULT_64, SIZE_BV}, 84 #define I4 sIbv64+1 85 {TYPE_I4, 0, 0, SIZE_B}, 86 #define Jb I4+1 87 {TYPE_J, 0, 0, SIZE_B}, 88 #define Jv Jb+1 89 {TYPE_J, 0, 0, SIZE_VV}, 90 #define M Jv+1 91 {TYPE_M, 0, 0, SIZE_0}, 92 #define Mw M+1 93 {TYPE_M, 0, 0, SIZE_W}, 94 #define Md Mw+1 95 {TYPE_M, 0, 0, SIZE_D}, 96 #define Mp Md+1 97 {TYPE_M, 0, 0, SIZE_P}, 98 #define Mq Mp+1 99 {TYPE_M, 0, 0, SIZE_Q}, 100 #define Mv Mq+1 101 {TYPE_M, 0, 0, SIZE_V}, 102 #define Mr Mv+1 103 {TYPE_M, 0, 0, SIZE_R}, 104 #define Mo Mr+1 105 {TYPE_M, 0, 0, SIZE_O}, 106 #define Ms Mo+1 107 {TYPE_M, 0, 0, SIZE_S}, 108 #define Ml Ms+1 109 {TYPE_M, 0, 0, SIZE_L}, 110 #define Mt Ml+1 111 {TYPE_M, 0, 0, SIZE_T}, 112 #define Ma Mt+1 113 {TYPE_M, 0, 0, SIZE_A}, 114 #define Mu Ma+1 115 {TYPE_M, 0, 0, SIZE_U}, 116 #define My Mu+1 117 {TYPE_M, 0, 0, SIZE_Y}, 118 #define MRbr My+1 119 {TYPE_MR, SIZE_R, 0, SIZE_B}, 120 #define MRwr MRbr+1 121 {TYPE_MR, SIZE_R, 0, SIZE_W}, 122 #define MRwv MRwr+1 123 {TYPE_MR, SIZE_V, 0, SIZE_W}, 124 #define MRdr MRwv+1 125 {TYPE_MR, SIZE_R, 0, SIZE_D}, 126 #define MRbd MRdr+1 127 {TYPE_MR, SIZE_D, 0, SIZE_B}, 128 #define Ob MRbd+1 129 {TYPE_O, 0, 0, SIZE_B}, 130 #define Ov Ob+1 131 {TYPE_O, 0, 0, SIZE_V}, 132 #define Pd Ov+1 133 {TYPE_P, 0, 0, SIZE_D}, 134 #define Pq Pd+1 135 {TYPE_P, 0, 0, SIZE_Q}, 136 #define Pu Pq+1 137 {TYPE_P, 0, 0, SIZE_U}, 138 #define PRq Pu+1 139 {TYPE_PR, 0, 0, SIZE_Q}, 140 #define PRu PRq+1 141 {TYPE_PR, 0, 0, SIZE_U}, 142 #define Qd PRu+1 143 {TYPE_Q, 0, 0, SIZE_D}, 144 #define Qq Qd+1 145 {TYPE_Q, 0, 0, SIZE_Q}, 146 #define Qu Qq+1 147 {TYPE_Q, 0, 0, SIZE_U}, 148 #define Qz Qu+1 149 {TYPE_Q, 0, 0, SIZE_Z}, 150 #define Rw Qz+1 151 {TYPE_R, 0, 0, SIZE_W}, 152 #define Rd Rw+1 153 {TYPE_R, 0, 0, SIZE_D}, 154 #define Rq Rd+1 155 {TYPE_R, 0, 0, SIZE_Q}, 156 #define Rr Rq+1 157 {TYPE_R, 0, 0, SIZE_R}, 158 #define Rr64 Rr+1 159 {TYPE_R, 0, INFO_DEFAULT_64, SIZE_R}, 160 #define Rv Rr64+1 161 {TYPE_R, 0, 0, SIZE_V}, 162 #define RVw Rv+1 163 {TYPE_RV, 0, 0, SIZE_W}, 164 #define RVd RVw+1 165 {TYPE_RV, 0, 0, SIZE_D}, 166 #define RVq RVd+1 167 {TYPE_RV, 0, 0, SIZE_Q}, 168 #define Sw RVq+1 169 {TYPE_S, 0, 0, SIZE_W}, 170 171 #define Vd Sw+1 172 {TYPE_V, 0, 0, SIZE_D}, 173 #define Vq Vd+1 174 {TYPE_V, 0, 0, SIZE_Q}, 175 #define Vo Vq+1 176 {TYPE_V, 0, 0, SIZE_O}, 177 #define Vu Vo+1 178 {TYPE_V, 0, 0, SIZE_U}, 179 #define Vz Vu+1 180 {TYPE_V, 0, 0, SIZE_Z}, 181 #define VRq Vz+1 182 {TYPE_VR, 0, 0, SIZE_Q}, 183 #define VRo VRq+1 184 {TYPE_VR, 0, 0, SIZE_O}, 185 #define VVo VRo+1 186 {TYPE_VV, 0, 0, SIZE_O}, 187 #define VIo VVo+1 188 {TYPE_VI, 0, 0, SIZE_O}, 189 190 #define Wb VIo+1 191 {TYPE_W, 0, 0, SIZE_W}, 192 #define Ww Wb+1 193 {TYPE_W, 0, 0, SIZE_W}, 194 #define Wd Ww+1 195 {TYPE_W, 0, 0, SIZE_D}, 196 #define Wq Wd+1 197 {TYPE_W, 0, 0, SIZE_Q}, 198 #define Wo Wq+1 199 {TYPE_W, 0, 0, SIZE_O}, 200 #define Wu Wo+1 201 {TYPE_W, 0, 0, SIZE_U}, 202 #define Wz Wu+1 203 {TYPE_W, 0, 0, SIZE_Z}, 204 205 #define Yy Wz+1 206 {TYPE_Y, 0, 0, SIZE_Y}, 207 #define YVy Yy+1 208 {TYPE_YV, 0, 0, SIZE_Y}, 209 #define YIy YVy+1 210 {TYPE_YI, 0, 0, SIZE_Y}, 211 #define YRy YIy+1 212 {TYPE_YR, 0, 0, SIZE_Y}, 213 #define Xy YRy+1 214 {TYPE_X, 0, 0, SIZE_Y}, 215 #define Xd Xy+1 216 {TYPE_X, 0, 0, SIZE_D}, 217 #define Xq Xd+1 218 {TYPE_X, 0, 0, SIZE_Q}, 219 #define Xo Xq+1 220 {TYPE_X, 0, 0, SIZE_O}, 221 222 #define VD Xo+1 223 {TYPE_VD, 0, 0, SIZE_O}, 224 #define VS0d VD+1 225 {TYPE_VS, 0, 0, SIZE_D}, 226 #define VS0q VS0d+1 227 {TYPE_VS, 0, 0, SIZE_Q}, 228 #define VS0o VS0q+1 229 {TYPE_VS, 0, 0, SIZE_Q}, 230 #define VS00d VS0o+1 231 {TYPE_VS, 0, 1, SIZE_Q}, 232 #define VS00q VS00d+1 233 {TYPE_VS, 0, 1, SIZE_Q}, 234 #define VS00o VS00q+1 235 {TYPE_VS, 0, 1, SIZE_O}, 236 #define VS1d VS00o+1 237 {TYPE_VS, 1, 0, SIZE_D}, 238 #define VS1q VS1d+1 239 {TYPE_VS, 1, 0, SIZE_Q}, 240 #define VS1o VS1q+1 241 {TYPE_VS, 1, 0, SIZE_O}, 242 243 #define Ft VS1o+1 244 {TYPE_F, 0, 0, SIZE_T}, 245 246 #define __st Ft+1 247 {TYPE_Fx, 0, 0, SIZE_T}, 248 249 #define __1 __st+1 250 {TYPE_Ix, 1, 0, SIZE_B}, 251 #define __3 __1+1 252 {TYPE_Ix, 3, 0, SIZE_B}, 253 254 #define X__al __3+1 255 {TYPE_RXx, 0, 0, SIZE_B}, 256 #define X__cl X__al+1 257 {TYPE_RXx, 1, 0, SIZE_B}, 258 259 #define __al X__cl+1 260 {TYPE_Rx, 0, 0, SIZE_B}, 261 #define __cl __al+1 262 {TYPE_Rx, 1, 0, SIZE_B}, 263 #define __dl __cl+1 264 {TYPE_Rx, 2, 0, SIZE_B}, 265 #define __bl __dl+1 266 {TYPE_Rx, 3, 0, SIZE_B}, 267 #define __ah __bl+1 268 {TYPE_Rx, 4, 0, SIZE_B}, 269 #define __ch __ah+1 270 {TYPE_Rx, 5, 0, SIZE_B}, 271 #define __dh __ch+1 272 {TYPE_Rx, 6, 0, SIZE_B}, 273 #define __bh __dh+1 274 {TYPE_Rx, 7, 0, SIZE_B}, 275 276 #define X__ax __bh+1 277 {TYPE_RXx, 0, 0, SIZE_V}, 278 279 #define __ax X__ax+1 280 {TYPE_Rx, 0, 0, SIZE_V}, 281 #define __cx __ax+1 282 {TYPE_Rx, 1, 0, SIZE_V}, 283 #define __dx __cx+1 284 {TYPE_Rx, 2, 0, SIZE_V}, 285 #define __bx __dx+1 286 {TYPE_Rx, 3, 0, SIZE_V}, 287 #define __sp __bx+1 288 {TYPE_Rx, 4, 0, SIZE_V}, 289 #define __bp __sp+1 290 {TYPE_Rx, 5, 0, SIZE_V}, 291 #define __si __bp+1 292 {TYPE_Rx, 6, 0, SIZE_V}, 293 #define __di __si+1 294 {TYPE_Rx, 7, 0, SIZE_V}, 295 296 #define __ax64 __di+1 297 {TYPE_Rx, 0, INFO_DEFAULT_64, SIZE_V}, 298 #define __cx64 __ax64+1 299 {TYPE_Rx, 1, INFO_DEFAULT_64, SIZE_V}, 300 #define __dx64 __cx64+1 301 {TYPE_Rx, 2, INFO_DEFAULT_64, SIZE_V}, 302 #define __bx64 __dx64+1 303 {TYPE_Rx, 3, INFO_DEFAULT_64, SIZE_V}, 304 #define __sp64 __bx64+1 305 {TYPE_Rx, 4, INFO_DEFAULT_64, SIZE_V}, 306 #define __bp64 __sp64+1 307 {TYPE_Rx, 5, INFO_DEFAULT_64, SIZE_V}, 308 #define __si64 __bp64+1 309 {TYPE_Rx, 6, INFO_DEFAULT_64, SIZE_V}, 310 #define __di64 __si64+1 311 {TYPE_Rx, 7, INFO_DEFAULT_64, SIZE_V}, 312 313 #define X__axw __di64+1 314 {TYPE_RXx, 0, 0, SIZE_W}, 315 #define X__dxw X__axw+1 316 {TYPE_RXx, 2, 0, SIZE_W}, 317 318 #define __axdq X__dxw+1 319 {TYPE_Rx, 0, 0, SIZE_R}, 320 #define __cxdq __axdq+1 321 {TYPE_Rx, 1, 0, SIZE_R}, 322 #define __dxdq __cxdq+1 323 {TYPE_Rx, 2, 0, SIZE_R}, 324 #define __bxdq __dxdq+1 325 {TYPE_Rx, 3, 0, SIZE_R}, 326 #define __spdq __bxdq+1 327 {TYPE_Rx, 4, 0, SIZE_R}, 328 #define __bpdq __spdq+1 329 {TYPE_Rx, 5, 0, SIZE_R}, 330 #define __sidq __bpdq+1 331 {TYPE_Rx, 6, 0, SIZE_R}, 332 #define __didq __sidq+1 333 {TYPE_Rx, 7, 0, SIZE_R}, 334 335 #define __es __didq+1 336 {TYPE_Sx, 0, 0, SIZE_W}, 337 #define __cs __es+1 338 {TYPE_Sx, 1, 0, SIZE_W}, 339 #define __ss __cs+1 340 {TYPE_Sx, 2, 0, SIZE_W}, 341 #define __ds __ss+1 342 {TYPE_Sx, 3, 0, SIZE_W}, 343 #define __fs __ds+1 344 {TYPE_Sx, 4, 0, SIZE_W}, 345 #define __gs __fs+1 346 {TYPE_Sx, 5, 0, SIZE_W}, 347 348 #define __st0 __gs+1 349 {TYPE_F, 0, 0, SIZE_T}, 350 #define __st1 __st0+1 351 {TYPE_F, 1, 0, SIZE_T}, 352 #define __st2 __st1+1 353 {TYPE_F, 2, 0, SIZE_T}, 354 #define __st3 __st2+1 355 {TYPE_F, 3, 0, SIZE_T}, 356 #define __st4 __st3+1 357 {TYPE_F, 4, 0, SIZE_T}, 358 #define __st5 __st4+1 359 {TYPE_F, 5, 0, SIZE_T}, 360 #define __st6 __st5+1 361 {TYPE_F, 6, 0, SIZE_T}, 362 #define __st7 __st6+1 363 {TYPE_F, 7, 0, SIZE_T}, 364 365 #define XMM0 __st7+1 366 {TYPE_Vx, 0, 0, SIZE_O}, 367 }; 368 369 const char *x86_regs[4][8] = { 370 {"al", "cl", "dl", "bl", "ah", "ch", "dh", "bh"}, 371 {"ax", "cx", "dx", "bx", "sp", "bp", "si", "di"}, 372 {"eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi"}, 373 {"rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi"}, 374 }; 375 376 const char *x86_64regs[4][16] = { 377 {"al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", 378 "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b"}, 379 {"ax", "cx", "dx", "bx", "sp", "bp", "si", "di", 380 "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w"}, 381 {"eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", 382 "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d"}, 383 {"rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", 384 "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"}, 385 }; 386 387 const char *x86_ipregs[4] = { 388 "", "ip", "eip", "rip", 389 }; 390 391 const char *x86_segs[8] = { 392 "es", "cs", "ss", "ds", "fs", "gs", 0, 0 393 }; 394 395 #define GROUP_OPC_0F38 0 396 #define GROUP_OPC_660F38 1 397 #define GROUP_OPC_F20F38 2 398 #define GROUP_OPC_0F3A 3 399 #define GROUP_OPC_660F3A 4 400 #define GROUP_OPC_0F7A 5 401 #define GROUP_OPC_0F7B 6 402 #define GROUP_OPC_0F24 7 403 #define GROUP_OPC_0F25 8 404 405 #define GROUP_80 0 406 #define GROUP_81 1 407 #define GROUP_83 2 408 #define GROUP_8F 3 409 #define GROUP_C0 4 410 #define GROUP_C1 5 411 #define GROUP_C6 6 412 #define GROUP_C7 7 413 #define GROUP_D0 8 414 #define GROUP_D1 9 415 #define GROUP_D2 10 416 #define GROUP_D3 11 417 #define GROUP_F6 12 418 #define GROUP_F7 13 419 #define GROUP_FE 14 420 #define GROUP_FF 15 421 #define GROUP_EXT_00 16 422 #define GROUP_EXT_01 17 423 #define GROUP_EXT_18 18 424 #define GROUP_EXT_71 19 425 #define GROUP_EXT_72 20 426 #define GROUP_EXT_73 21 427 #define GROUP_EXT_AE 22 428 #define GROUP_EXT_F3_AE 23 429 #define GROUP_EXT_BA 24 430 #define GROUP_EXT_C7 25 431 #define GROUP_EXT_66_C7 26 432 #define GROUP_EXT_F3_C7 27 433 434 #define GROUP_SPECIAL_0F01_0 0 435 #define GROUP_SPECIAL_0F01_1 1 436 #define GROUP_SPECIAL_0F01_2 2 437 #define GROUP_SPECIAL_0F01_3 3 438 #define GROUP_SPECIAL_0F01_7 4 439 #define GROUP_SPECIAL_0FAE_0 5 440 #define GROUP_SPECIAL_0FAE_1 6 441 #define GROUP_SPECIAL_0FAE_2 7 442 #define GROUP_SPECIAL_0FAE_3 8 443 #define GROUP_SPECIAL_0FAE_4 9 444 #define GROUP_SPECIAL_0FAE_5 10 445 #define GROUP_SPECIAL_0FAE_6 11 446 #define GROUP_SPECIAL_0FAE_7 12 447 #define GROUP_SPECIAL_0FC7_6 13 448 #define GROUP_SPECIAL_0FC7_7 14 449 450 #define GROUP_0FAE 0 451 #define GROUP_660F71 1 452 #define GROUP_660F72 2 453 #define GROUP_660F73 3 454 #define GROUP_0F25_12 4 455 #define GROUP_0F25_12_L 5 456 #define GROUP_0F25_12_W 6 457 #define GROUP_0FA_12 7 458 #define GROUP_0FA_12_L 8 459 #define GROUP_0FA_12_W 9 460 #define GROUP_0F38_F3 10 461 #define GROUP_0F38_F3_W 11 462 463 /* 464 465 Opcode name modifiers 466 ~ ambigous size (need explicit "size ptr") 467 468 first char after ~: 469 | alternative mnemonics with same semantic (|je|jz) 470 ? different name depending on opsize (?16bit|32bit|64bit) 471 * different name depending on addrsize (*16bit|32bit|64bit) 472 & same as '?' for disassembler and '|' for assembler 473 */ 474 475 x86opc_insn x86_les = {"les", {Gv, Mp}}; 476 x86opc_insn x86_lds = {"lds", {Gv, Mp}}; 477 x86opc_insn x86_pop_group = {0, {SPECIAL_TYPE_GROUP, GROUP_8F}}; 478 479 x86opc_insn x86_32_insns[256] = { 480 /* 00 */ 481 {"add", {Eb, Gb}}, 482 {"add", {Ev, Gv}}, 483 {"add", {Gb, Eb}}, 484 {"add", {Gv, Ev}}, 485 {"add", {X__al, Ib}}, 486 {"add", {X__ax, Iv}}, 487 {"push", {__es}}, 488 {"pop", {__es}}, 489 /* 08 */ 490 {"or", {Eb, Gb}}, 491 {"or", {Ev, Gv}}, 492 {"or", {Gb, Eb}}, 493 {"or", {Gv, Ev}}, 494 {"or", {X__al, Ib}}, 495 {"or", {X__ax, Iv}}, 496 {"push", {__cs}}, 497 {0, {SPECIAL_TYPE_PREFIX}}, 498 /* 10 */ 499 {"adc", {Eb, Gb}}, 500 {"adc", {Ev, Gv}}, 501 {"adc", {Gb, Eb}}, 502 {"adc", {Gv, Ev}}, 503 {"adc", {X__al, Ib}}, 504 {"adc", {X__ax, Iv}}, 505 {"push", {__ss}}, 506 {"pop", {__ss}}, 507 /* 18 */ 508 {"sbb", {Eb, Gb}}, 509 {"sbb", {Ev, Gv}}, 510 {"sbb", {Gb, Eb}}, 511 {"sbb", {Gv, Ev}}, 512 {"sbb", {X__al, Ib}}, 513 {"sbb", {X__ax, Iv}}, 514 {"push", {__ds}}, 515 {"pop", {__ds}}, 516 /* 20 */ 517 {"and", {Eb, Gb}}, 518 {"and", {Ev, Gv}}, 519 {"and", {Gb, Eb}}, 520 {"and", {Gv, Ev}}, 521 {"and", {X__al, Ib}}, 522 {"and", {X__ax, Iv}}, 523 {0, {SPECIAL_TYPE_PREFIX}}, /* es-prefix */ 524 {"daa"}, 525 /* 28 */ 526 {"sub", {Eb, Gb}}, 527 {"sub", {Ev, Gv}}, 528 {"sub", {Gb, Eb}}, 529 {"sub", {Gv, Ev}}, 530 {"sub", {X__al, Ib}}, 531 {"sub", {X__ax, Iv}}, 532 {0, {SPECIAL_TYPE_PREFIX}}, /* cs-prefix */ 533 {"das"}, 534 /* 30 */ 535 {"xor", {Eb, Gb}}, 536 {"xor", {Ev, Gv}}, 537 {"xor", {Gb, Eb}}, 538 {"xor", {Gv, Ev}}, 539 {"xor", {X__al, Ib}}, 540 {"xor", {X__ax, Iv}}, 541 {0, {SPECIAL_TYPE_PREFIX}}, /* ss-prefix */ 542 {"aaa"}, 543 /* 38 */ 544 {"cmp", {Eb, Gb}}, 545 {"cmp", {Ev, Gv}}, 546 {"cmp", {Gb, Eb}}, 547 {"cmp", {Gv, Ev}}, 548 {"cmp", {X__al, Ib}}, 549 {"cmp", {X__ax, Iv}}, 550 {0, {SPECIAL_TYPE_PREFIX}}, /* ds-prefix */ 551 {"aas"}, 552 /* 40 */ 553 {"inc", {__ax}}, 554 {"inc", {__cx}}, 555 {"inc", {__dx}}, 556 {"inc", {__bx}}, 557 {"inc", {__sp}}, 558 {"inc", {__bp}}, 559 {"inc", {__si}}, 560 {"inc", {__di}}, 561 /* 48 */ 562 {"dec", {__ax}}, 563 {"dec", {__cx}}, 564 {"dec", {__dx}}, 565 {"dec", {__bx}}, 566 {"dec", {__sp}}, 567 {"dec", {__bp}}, 568 {"dec", {__si}}, 569 {"dec", {__di}}, 570 /* 50 */ 571 {"push", {__ax64}}, 572 {"push", {__cx64}}, 573 {"push", {__dx64}}, 574 {"push", {__bx64}}, 575 {"push", {__sp64}}, 576 {"push", {__bp64}}, 577 {"push", {__si64}}, 578 {"push", {__di64}}, 579 /* 58 */ 580 {"pop", {__ax64}}, 581 {"pop", {__cx64}}, 582 {"pop", {__dx64}}, 583 {"pop", {__bx64}}, 584 {"pop", {__sp64}}, 585 {"pop", {__bp64}}, 586 {"pop", {__si64}}, 587 {"pop", {__di64}}, 588 /* 60 */ 589 {"?pusha|pushad| x"}, 590 {"?popa|popad| x"}, 591 {"bound", {Gv, Mq}}, 592 {"arpl", {Ew, Gw}}, //{"movsxd", {Gv, Ed}}, 593 {0, {SPECIAL_TYPE_PREFIX}}, /* fs-prefix */ 594 {0, {SPECIAL_TYPE_PREFIX}}, /* gs-prefix */ 595 {0, {SPECIAL_TYPE_PREFIX}}, /* op-size prefix */ 596 {0, {SPECIAL_TYPE_PREFIX}}, /* addr-size prefix */ 597 /* 68 */ 598 {"push", {Iv64}}, 599 {"imul", {Gv, Ev, Iv}}, 600 {"push", {sIbv64}}, 601 {"imul", {Gv, Ev, sIbv}}, 602 {"insb"}, 603 {"?insw|insd|insd"}, 604 {"outsb"}, 605 {"?outsw|outsd|outsd"}, 606 /* 70 */ 607 {"jo", {Jb}}, 608 {"jno", {Jb}}, 609 {"|jc|jb|jnae", {Jb}}, 610 {"|jnc|jnb|jae", {Jb}}, 611 {"|jz|je", {Jb}}, 612 {"|jnz|jne", {Jb}}, 613 {"|jna|jbe", {Jb}}, 614 {"|ja|jnbe", {Jb}}, 615 /* 78 */ 616 {"js", {Jb}}, 617 {"jns", {Jb}}, 618 {"|jp|jpe", {Jb}}, 619 {"|jnp|jpo", {Jb}}, 620 {"|jl|jnge", {Jb}}, 621 {"|jnl|jge", {Jb}}, 622 {"|jng|jle", {Jb}}, 623 {"|jg|jnle", {Jb}}, 624 /* 80 */ 625 {0, {SPECIAL_TYPE_GROUP, GROUP_80}}, 626 {0, {SPECIAL_TYPE_GROUP, GROUP_81}}, 627 {0}, 628 {0, {SPECIAL_TYPE_GROUP, GROUP_83}}, 629 {"test", {Eb, Gb}}, 630 {"test", {Ev, Gv}}, 631 {"xchg", {Eb, Gb}}, 632 {"xchg", {Ev, Gv}}, 633 /* 88 */ 634 {"mov", {Eb, Gb}}, 635 {"mov", {Ev, Gv}}, 636 {"mov", {Gb, Eb}}, 637 {"mov", {Gv, Ev}}, 638 {"mov", {MRwv, Sw}}, 639 {"lea", {Gv, M}}, 640 {"mov", {Sw, MRwv}}, 641 {0, {SPECIAL_TYPE_PREFIX}}, // XOP prefix {0, {SPECIAL_TYPE_GROUP, GROUP_8F}}, 642 /* 90 */ 643 {"nop"}, /* same as xchg (e)ax, (e)ax */ 644 {"xchg", {X__ax, __cx}}, 645 {"xchg", {X__ax, __dx}}, 646 {"xchg", {X__ax, __bx}}, 647 {"xchg", {X__ax, __sp}}, 648 {"xchg", {X__ax, __bp}}, 649 {"xchg", {X__ax, __si}}, 650 {"xchg", {X__ax, __di}}, 651 /* 98 */ 652 {"?cbw|cwde|cdqe"}, 653 {"?cwd|cdq|cqo"}, 654 {"~call", {Ap}}, 655 {"fwait"}, 656 {"?pushf|pushfd|pushfq", {_064}}, 657 {"?popf|popfd|popfq", {_064}}, 658 {"sahf"}, 659 {"lahf"}, 660 /* A0 */ 661 {"mov", {X__al, Ob}}, 662 {"mov", {X__ax, Ov}}, 663 {"mov", {Ob, X__al}}, 664 {"mov", {Ov, X__ax}}, 665 {"movsb"}, 666 {"?movsw|movsd|movsq"}, 667 {"cmpsb"}, 668 {"?cmpsw|cmpsd|cmpsq"}, 669 /* A8 */ 670 {"test", {X__al, Ib}}, 671 {"test", {X__ax, Iv}}, 672 {"stosb"}, 673 {"?stosw|stosd|stosq"}, 674 {"lodsb"}, 675 {"?lodsw|lodsd|lodsq"}, 676 {"scasb"}, 677 {"?scasw|scasd|scasq"}, 678 /* B0 */ 679 {"mov", {__al, Ib}}, 680 {"mov", {__cl, Ib}}, 681 {"mov", {__dl, Ib}}, 682 {"mov", {__bl, Ib}}, 683 {"mov", {__ah, Ib}}, 684 {"mov", {__ch, Ib}}, 685 {"mov", {__dh, Ib}}, 686 {"mov", {__bh, Ib}}, 687 /* B8 */ 688 {"mov", {__ax, Ivq}}, 689 {"mov", {__cx, Ivq}}, 690 {"mov", {__dx, Ivq}}, 691 {"mov", {__bx, Ivq}}, 692 {"mov", {__sp, Ivq}}, 693 {"mov", {__bp, Ivq}}, 694 {"mov", {__si, Ivq}}, 695 {"mov", {__di, Ivq}}, 696 /* C0 */ 697 {0, {SPECIAL_TYPE_GROUP, GROUP_C0}}, 698 {0, {SPECIAL_TYPE_GROUP, GROUP_C1}}, 699 {"ret", {Iw}}, 700 {"ret"}, 701 {0, {SPECIAL_TYPE_PREFIX}}, // VEX prefix {"les", {Gv, Mp}} 702 {0, {SPECIAL_TYPE_PREFIX}}, // VEX prefix {"lds", {Gv, Mp}} 703 {0, {SPECIAL_TYPE_GROUP, GROUP_C6}}, 704 {0, {SPECIAL_TYPE_GROUP, GROUP_C7}}, 705 /* C8 */ 706 {"enter", {Iw, Ib}}, 707 {"leave"}, 708 {"retf", {Iw}}, 709 {"retf"}, 710 {"int", {__3}}, 711 {"int", {Ib}}, 712 {"into"}, 713 {"?iret|iretd|iretq"}, 714 /* D0 */ 715 {0, {SPECIAL_TYPE_GROUP, GROUP_D0}}, 716 {0, {SPECIAL_TYPE_GROUP, GROUP_D1}}, 717 {0, {SPECIAL_TYPE_GROUP, GROUP_D2}}, 718 {0, {SPECIAL_TYPE_GROUP, GROUP_D3}}, 719 {"aam", {Ib}}, 720 {"aad", {Ib}}, 721 {"setalc"}, 722 {"xlat"}, 723 /* D8 */ 724 {0, {SPECIAL_TYPE_FGROUP, 0}}, 725 {0, {SPECIAL_TYPE_FGROUP, 1}}, 726 {0, {SPECIAL_TYPE_FGROUP, 2}}, 727 {0, {SPECIAL_TYPE_FGROUP, 3}}, 728 {0, {SPECIAL_TYPE_FGROUP, 4}}, 729 {0, {SPECIAL_TYPE_FGROUP, 5}}, 730 {0, {SPECIAL_TYPE_FGROUP, 6}}, 731 {0, {SPECIAL_TYPE_FGROUP, 7}}, 732 /* E0 */ 733 {"|loopnz|loopne", {Jb}}, 734 {"|loopz|loope", {Jb}}, 735 {"loop", {Jb}}, 736 {"*jcxz|jecxz|jrcxz", {Jb}}, 737 {"in", {X__al, Ib}}, 738 {"in", {X__ax, Ib}}, 739 {"out", {Ib, X__al}}, 740 {"out", {Ib, X__ax}}, 741 /* E8 */ 742 {"call", {Jv}}, 743 {"jmp", {Jv}}, 744 {"~jmp", {Ap}}, 745 {"jmp", {Jb}}, 746 {"in", {X__al, X__dxw}}, 747 {"in", {X__ax, X__dxw}}, 748 {"out", {X__dxw, X__al}}, 749 {"out", {X__dxw, X__ax}}, 750 /* F0 */ 751 {0, {SPECIAL_TYPE_PREFIX}}, /* lock-prefix */ 752 {"smi"}, 753 {0, {SPECIAL_TYPE_PREFIX}}, /* repnz-prefix */ 754 {0, {SPECIAL_TYPE_PREFIX}}, /* rep-prefix */ 755 {"hlt"}, 756 {"cmc"}, 757 {0, {SPECIAL_TYPE_GROUP, GROUP_F6}}, 758 {0, {SPECIAL_TYPE_GROUP, GROUP_F7}}, 759 /* F8 */ 760 {"clc"}, 761 {"stc"}, 762 {"cli"}, 763 {"sti"}, 764 {"cld"}, 765 {"std"}, 766 {0, {SPECIAL_TYPE_GROUP, GROUP_FE}}, 767 {0, {SPECIAL_TYPE_GROUP, GROUP_FF}}, 768 }; 769 770 x86_64_insn_patch x86_64_insn_patches[] = { 771 {0x06, {0}}, // push es 772 {0x07, {0}}, // pop es 773 {0x0e, {0}}, // push cs 774 {0x16, {0}}, // push ss 775 {0x17, {0}}, // pop ss 776 {0x1e, {0}}, // push ds 777 {0x1f, {0}}, // pop ds 778 {0x27, {0}}, // daa 779 {0x2f, {0}}, // das 780 {0x37, {0}}, // aaa 781 {0x3f, {0}}, // aas 782 {0x40, {0}}, // REX prefixes 783 {0x41, {0}}, 784 {0x42, {0}}, 785 {0x43, {0}}, 786 {0x44, {0}}, 787 {0x45, {0}}, 788 {0x46, {0}}, 789 {0x47, {0}}, 790 {0x48, {0}}, 791 {0x49, {0}}, 792 {0x4a, {0}}, 793 {0x4b, {0}}, 794 {0x4c, {0}}, 795 {0x4d, {0}}, 796 {0x4e, {0}}, 797 {0x4f, {0}}, // .. 798 {0x60, {0}}, // pusha 799 {0x61, {0}}, // popa 800 {0x62, {0, {SPECIAL_TYPE_PREFIX}}}, // EVEX 801 {0x63, {"movsxd", {Gv, Ed}}}, 802 {0x9a, {0}}, // call Ap 803 {0xce, {0}}, // into 804 {0xd4, {0}}, // aam 805 {0xd5, {0}}, // aad 806 {0xd6, {0}}, // setalc 807 {0xea, {0}}, // jmp Ap 808 {-1, {0}}, 809 }; 810 811 x86opc_insn x86_insns_ext[256] = { 812 /* 00 */ 813 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_00}}, 814 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_01}}, 815 {"lar", {Gv, Ew}}, 816 {"lsl", {Gv, Ew}}, 817 {0}, 818 {"syscall"}, 819 {"clts"}, 820 {"sysret"}, 821 /* 08 */ 822 {"invd"}, 823 {"wbinvd"}, 824 {0}, 825 {"ud1"}, 826 {0}, 827 {"prefetch", {Eb}}, 828 {"femms"}, 829 {0, {SPECIAL_TYPE_PREFIX}}, 830 /* 10 */ 831 {"movups", {Vo, Wo}}, 832 {"movups", {Wo, Vo}}, 833 {"movlps", {Vq, Wq}}, 834 {"movlps", {Mq, Vq}}, 835 {"unpcklps", {Vo, Wq}}, 836 {"unpckhps", {Vo, Wq}}, 837 {"movhps", {Vq, Wq}}, 838 {"movhps", {Mq, Vq}}, 839 /* 18 */ 840 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_18}}, 841 {"~nop", {Ev}}, 842 {"~nop", {Ev}}, 843 {"~nop", {Ev}}, 844 {"~nop", {Ev}}, 845 {"~nop", {Ev}}, 846 {"~nop", {Ev}}, 847 {"~nop", {Ev}}, 848 /* 20 */ 849 {"mov", {Rr64, Cd}}, 850 {"mov", {Rr, Dd}}, 851 {"mov", {Cd, Rr}}, 852 {"mov", {Dd, Rr}}, 853 {0, {SPECIAL_TYPE_OPC_GROUP, GROUP_OPC_0F24}}, 854 {0, {SPECIAL_TYPE_OPC_GROUP, GROUP_OPC_0F25}}, 855 {0}, 856 {0}, 857 /* 28 */ 858 {"movaps", {Vo, Wo}}, 859 {"movaps", {Wo, Vo}}, 860 {"cvtpi2ps", {Vu, Qq}}, 861 {"movntps", {Mo, Vo}}, 862 {"cvttps2pi", {Pq, Wq}}, 863 {"cvtps2pi", {Pq, Wq}}, 864 {"ucomiss", {Vz, Wz}}, 865 {"comiss", {Vz, Wz}}, 866 /* 30 */ 867 {"wrmsr"}, 868 {"rdtsc"}, 869 {"rdmsr"}, 870 {"rdpmc"}, 871 {"sysenter"}, 872 {"sysexit"}, 873 {0}, 874 {"getsec"}, 875 /* 38 */ 876 {0, {SPECIAL_TYPE_OPC_GROUP, GROUP_OPC_0F38}}, 877 {0}, 878 {0, {SPECIAL_TYPE_OPC_GROUP, GROUP_OPC_0F3A}}, 879 {0}, 880 {0}, 881 {0}, 882 {0}, 883 {0}, 884 /* 40 */ 885 {"cmovo", {Gv, Ev}}, 886 {"cmovno", {Gv, Ev}}, 887 {"|cmovc|cmovb", {Gv, Ev}}, 888 {"|cmovnc|cmovnb", {Gv, Ev}}, 889 {"|cmovz|cmove", {Gv, Ev}}, 890 {"|cmovnz|cmovne", {Gv, Ev}}, 891 {"|cmova|cmovnbe", {Gv, Ev}}, 892 {"|cmovna|cmovbe", {Gv, Ev}}, 893 /* 48 */ 894 {"cmovs", {Gv, Ev}}, 895 {"cmovns", {Gv, Ev}}, 896 {"|cmovp|cmovpe", {Gv, Ev}}, 897 {"|cmovnp|cmovpo", {Gv, Ev}}, 898 {"|cmovl|cmovnge", {Gv, Ev}}, 899 {"|cmovnl|cmovge", {Gv, Ev}}, 900 {"|cmovng|cmovle", {Gv, Ev}}, 901 {"|cmovg|cmovnle", {Gv, Ev}}, 902 /* 50 */ 903 {"movmskps", {Gd, VRo}}, 904 {"sqrtps", {Vo, Wo}}, 905 {"rsqrtps", {Vo, Wo}}, 906 {"rcpps", {Vo, Wo}}, 907 {"andps", {Vo, Wo}}, 908 {"andnps", {Vo, Wo}}, 909 {"orps", {Vo, Wo}}, 910 {"xorps", {Vo, Wo}}, 911 /* 58 */ 912 {"addps", {Vo, Wo}}, 913 {"mulps", {Vo, Wo}}, 914 {"cvtps2pd", {Vo, Wq}}, 915 {"cvtdq2ps", {Vo, Wo}}, 916 {"subps", {Vo, Wo}}, 917 {"minps", {Vo, Wo}}, 918 {"divps", {Vo, Wo}}, 919 {"maxps", {Vo, Wo}}, 920 /* 60 */ 921 {"punpcklbw", {Pu, Qz}}, 922 {"punpcklwd", {Pu, Qz}}, 923 {"punpckldq", {Pu, Qz}}, 924 {"packsswb", {Pu, Qu}}, 925 {"pcmpgtb", {Pu, Qu}}, 926 {"pcmpgtw", {Pu, Qu}}, 927 {"pcmpgtd", {Pu, Qu}}, 928 {"packuswb", {Pu, Qu}}, 929 /* 68 */ 930 {"punpckhbw", {Pu, Qu}}, 931 {"punpckhwd", {Pu, Qu}}, 932 {"punpckhdq", {Pu, Qu}}, 933 {"packssdw", {Pu, Qu}}, 934 {0}, 935 {0}, 936 {"~movd", {Pu, Er}}, 937 {"movq", {Pu, Qu}}, 938 /* 70 */ 939 {"pshufw", {Pu, Qu, Ib}}, 940 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_71}}, 941 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_72}}, 942 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_73}}, 943 {"pcmpeqb", {Pu, Qu}}, 944 {"pcmpeqw", {Pu, Qu}}, 945 {"pcmpewd", {Pu, Qu}}, 946 {"emms"}, 947 /* 78 */ 948 {"vmread", {Ev64, Gv64}}, 949 {"vmwrite", {Gv64, Ev64}}, 950 {0, {SPECIAL_TYPE_OPC_GROUP, GROUP_OPC_0F7A}}, 951 {0, {SPECIAL_TYPE_OPC_GROUP, GROUP_OPC_0F7B}}, 952 {0}, 953 {0}, 954 {"~movd", {Er, Pq}}, 955 {"movq", {Qq, Pq}}, 956 /* 80 */ 957 {"jo", {Jv}}, 958 {"jno", {Jv}}, 959 {"|jc|jb|jnae", {Jv}}, 960 {"|jnc|jnb|jae", {Jv}}, 961 {"|jz|je", {Jv}}, 962 {"|jnz|jne", {Jv}}, 963 {"|jna|jbe", {Jv}}, 964 {"|ja|jnbe", {Jv}}, 965 /* 88 */ 966 {"js", {Jv}}, 967 {"jns", {Jv}}, 968 {"|jp|jpe", {Jv}}, 969 {"|jnp|jpo", {Jv}}, 970 {"|jl|jnge", {Jv}}, 971 {"|jnl|jge", {Jv}}, 972 {"|jng|jle", {Jv}}, 973 {"|jg|jnle", {Jv}}, 974 /* 90 */ 975 {"seto", {Eb}}, 976 {"setno", {Eb}}, 977 {"|setc|setb|setnae", {Eb}}, 978 {"|setnc|setnb|setae", {Eb}}, 979 {"|setz|sete", {Eb}}, 980 {"|setnz|setne", {Eb}}, 981 {"|setna|setbe", {Eb}}, 982 {"|seta|setnbe", {Eb}}, 983 /* 98 */ 984 {"sets", {Eb}}, 985 {"setns", {Eb}}, 986 {"|setp|setpe", {Eb}}, 987 {"|setnp|setpo", {Eb}}, 988 {"|setl|setnge", {Eb}}, 989 {"|setnl|setge", {Eb}}, 990 {"|setng|setle", {Eb}}, 991 {"|setg|setnle", {Eb}}, 992 /* A0 */ 993 {"push", {__fs}}, 994 {"pop", {__fs}}, 995 {"cpuid"}, 996 {"bt", {Ev, Gv}}, 997 {"shld", {Ev, Gv, Ib}}, 998 {"shld", {Ev, Gv, X__cl}}, 999 {0}, 1000 {0}, 1001 /* A8 */ 1002 {"push", {__gs}}, 1003 {"pop", {__gs}}, 1004 {"rsm"}, 1005 {"bts", {Ev, Gv}}, 1006 {"shrd", {Ev, Gv, Ib}}, 1007 {"shrd", {Ev, Gv, X__cl}}, 1008 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_AE}}, 1009 {"imul", {Gv, Ev}}, 1010 /* B0 */ 1011 {"cmpxchg", {Eb, Gb}}, 1012 {"cmpxchg", {Ev, Gv}}, 1013 {"lss", {Gv, Mp}}, 1014 {"btr", {Ev, Gv}}, 1015 {"lfs", {Gv, Mp}}, 1016 {"lgs", {Gv, Mp}}, 1017 {"~movzx", {Gv, Eb}}, 1018 {"~movzx", {Gv, Ew}}, 1019 /* B8 */ 1020 {"jmpe", {Jv}}, 1021 {"ud2"}, 1022 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_BA}}, 1023 {"btc", {Ev, Gv}}, 1024 {"bsf", {Gv, Ev}}, 1025 {"bsr", {Gv, Ev}}, 1026 {"~movsx", {Gv, Eb}}, 1027 {"~movsx", {Gv, Ew}}, 1028 /* C0 */ 1029 {"xadd", {Eb, Gb}}, 1030 {"xadd", {Ev, Gv}}, 1031 {"cmpCCps", {Vo, Wo, Ib}}, 1032 {"movnti", {Mr, Gr}}, 1033 {"pinsrw", {Pq, MRwr, Ib}}, 1034 {"pextrw", {Gr, PRq, Ib}}, 1035 {"shufps", {Vo, Wo, Ib}}, 1036 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_C7}}, 1037 /* C8 */ 1038 {"bswap", {__axdq}}, 1039 {"bswap", {__cxdq}}, 1040 {"bswap", {__dxdq}}, 1041 {"bswap", {__bxdq}}, 1042 {"bswap", {__spdq}}, 1043 {"bswap", {__bpdq}}, 1044 {"bswap", {__sidq}}, 1045 {"bswap", {__didq}}, 1046 /* D0 */ 1047 {0}, 1048 {"psrlw", {Pu, Qu}}, 1049 {"psrld", {Pu, Qu}}, 1050 {"psrlq", {Pu, Qu}}, 1051 {"paddq", {Pu, Qu}}, 1052 {"pmullw", {Pu, Qu}}, 1053 {0}, 1054 {"pmovmskb", {Gd, PRu}}, 1055 /* D8 */ 1056 {"psubusb", {Pu, Qu}}, 1057 {"psubusw", {Pu, Qu}}, 1058 {"pminub", {Pu, Qu}}, 1059 {"pand", {Pu, Qu}}, 1060 {"paddusb", {Pu, Qu}}, 1061 {"paddusw", {Pu, Qu}}, 1062 {"pmaxub", {Pu, Qu}}, 1063 {"pandn", {Pu, Qu}}, 1064 /* E0 */ 1065 {"pavgb", {Pu, Qu}}, 1066 {"psraw", {Pu, Qu}}, 1067 {"psrad", {Pu, Qu}}, 1068 {"pavgw", {Pu, Qu}}, 1069 {"pmulhuw", {Pu, Qu}}, 1070 {"pmulhw", {Pu, Qu}}, 1071 {0}, 1072 {"movntq", {Mq, Pq}}, 1073 /* E8 */ 1074 {"psubsb", {Pu, Qu}}, 1075 {"psubsw", {Pu, Qu}}, 1076 {"pminsw", {Pu, Qu}}, 1077 {"por", {Pu, Qu}}, 1078 {"paddsb", {Pu, Qu}}, 1079 {"paddsw", {Pu, Qu}}, 1080 {"pmaxsw", {Pu, Qu}}, 1081 {"pxor", {Pu, Qu}}, 1082 /* F0 */ 1083 {0}, 1084 {"psllw", {Pu, Qu}}, 1085 {"pslld", {Pu, Qu}}, 1086 {"psllq", {Pu, Qu}}, 1087 {"pmuludq", {Pu, Qu}}, 1088 {"pmaddwd", {Pu, Qu}}, 1089 {"psadbw", {Pu, Qu}}, 1090 {"maskmovq", {Pq, PRq}}, 1091 /* F8 */ 1092 {"psubb", {Pu, Qu}}, 1093 {"psubw", {Pu, Qu}}, 1094 {"psubd", {Pu, Qu}}, 1095 {"psubq", {Pu, Qu}}, 1096 {"paddb", {Pu, Qu}}, 1097 {"paddw", {Pu, Qu}}, 1098 {"paddd", {Pu, Qu}}, 1099 {0}, 1100 }; 1101 1102 x86opc_insn x86_insns_ext_66[256] = { 1103 /* 00 */ 1104 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_00}}, 1105 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_01}}, 1106 {"lar", {Gv, Ew}}, 1107 {"lsl", {Gv, Ew}}, 1108 {0}, 1109 {"syscall"}, 1110 {"clts"}, 1111 {"sysret"}, 1112 /* 08 */ 1113 {"invd"}, 1114 {"wbinvd"}, 1115 {0}, 1116 {"ud1"}, 1117 {0}, 1118 {"prefetch", {Eb}}, 1119 {"femms"}, 1120 {0, {SPECIAL_TYPE_PREFIX}}, 1121 /* 10 */ 1122 {"movupd", {Vo, Wo}}, 1123 {"movupd", {Wo, Vo}}, 1124 {"movlpd", {Vq, Wq}}, 1125 {"movlpd", {Mq, Vq}}, 1126 {"unpcklpd", {Vo, Wq}}, 1127 {"unpckhpd", {Vo, Wq}}, 1128 {"movhpd", {Vq, Wq}}, 1129 {"movhpd", {Mq, Vq}}, 1130 /* 18 */ 1131 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_18}}, 1132 {"~nop", {Ev}}, 1133 {"~nop", {Ev}}, 1134 {"~nop", {Ev}}, 1135 {"~nop", {Ev}}, 1136 {"~nop", {Ev}}, 1137 {"~nop", {Ev}}, 1138 {"~nop", {Ev}}, 1139 /* 20 */ 1140 {"mov", {Rr64, Cd}}, // default 64 1141 {"mov", {Rr, Dd}}, // default 32 1142 {"mov", {Cd, Rr}}, // default 64 1143 {"mov", {Dd, Rr}}, // default 32 1144 {0}, 1145 {0}, 1146 {0}, 1147 {0}, 1148 /* 28 */ 1149 {"movapd", {Vo, Wo}}, 1150 {"movapd", {Wo, Vo}}, 1151 {"cvtpi2pd", {Vo, Qq}}, 1152 {"movntpd", {Mo, Vo}}, 1153 {"cvttpd2pi", {Pq, Wo}}, 1154 {"cvtpd2pi", {Pq, Wo}}, 1155 {"ucomisd", {Vz, Wz}}, 1156 {"comisd", {Vz, Wz}}, 1157 /* 30 */ 1158 {"wrmsr"}, 1159 {"rdtsc"}, 1160 {"rdmsr"}, 1161 {"rdpmc"}, 1162 {"sysenter"}, 1163 {"sysexit"}, 1164 {0}, 1165 {"getsec"}, 1166 /* 38 */ 1167 {0, {SPECIAL_TYPE_OPC_GROUP, GROUP_OPC_660F38}}, 1168 {0}, 1169 {0, {SPECIAL_TYPE_OPC_GROUP, GROUP_OPC_660F3A}}, 1170 {0}, 1171 {0}, 1172 {0}, 1173 {0}, 1174 {0}, 1175 /* 40 */ 1176 {"cmovo", {Gv, Ev}}, 1177 {"cmovno", {Gv, Ev}}, 1178 {"|cmovc|cmovb", {Gv, Ev}}, 1179 {"|cmovnc|cmovnb", {Gv, Ev}}, 1180 {"|cmovz|cmove", {Gv, Ev}}, 1181 {"|cmovnz|cmovne", {Gv, Ev}}, 1182 {"|cmova|cmovnbe", {Gv, Ev}}, 1183 {"|cmovna|cmovbe", {Gv, Ev}}, 1184 /* 48 */ 1185 {"cmovs", {Gv, Ev}}, 1186 {"cmovns", {Gv, Ev}}, 1187 {"|cmovp|cmovpe", {Gv, Ev}}, 1188 {"|cmovnp|cmovpo", {Gv, Ev}}, 1189 {"|cmovl|cmovnge", {Gv, Ev}}, 1190 {"|cmovnl|cmovge", {Gv, Ev}}, 1191 {"|cmovng|cmovle", {Gv, Ev}}, 1192 {"|cmovg|cmovnle", {Gv, Ev}}, 1193 /* 50 */ 1194 {"movmskpd", {Gd, VRo}}, 1195 {"sqrtpd", {Vo, Wo}}, 1196 {0}, // {"rsqrtpd", {Vo, Wo}}, 1197 {0}, // {"rcppd", {Vo, Wo}}, 1198 {"andpd", {Vo, Wo}}, 1199 {"andnpd", {Vo, Wo}}, 1200 {"orpd", {Vo, Wo}}, 1201 {"xorpd", {Vo, Wo}}, 1202 /* 58 */ 1203 {"addpd", {Vo, Wo}}, 1204 {"mulpd", {Vo, Wo}}, 1205 {"cvtpd2ps", {Vo, Wo}}, 1206 {"cvtps2dq", {Vo, Wo}}, 1207 {"subpd", {Vo, Wo}}, 1208 {"minpd", {Vo, Wo}}, 1209 {"divpd", {Vo, Wo}}, 1210 {"maxpd", {Vo, Wo}}, 1211 /* 60 */ 1212 {"punpcklbw", {Pu, Qz}}, 1213 {"punpcklwd", {Pu, Qz}}, 1214 {"punpckldq", {Pu, Qz}}, 1215 {"packsswb", {Pu, Qu}}, 1216 {"pcmpgtb", {Pu, Qu}}, 1217 {"pcmpgtw", {Pu, Qu}}, 1218 {"pcmpgtd", {Pu, Qu}}, 1219 {"packuswb", {Pu, Qu}}, 1220 /* 68 */ 1221 {"punpckhbw", {Pu, Qu}}, 1222 {"punpckhwd", {Pu, Qu}}, 1223 {"punpckhdq", {Pu, Qu}}, 1224 {"packssdw", {Pu, Qu}}, 1225 {"punpcklqdq", {Vo, Wo}}, 1226 {"punpckhqdq", {Vo, Wo}}, 1227 {"~movd", {Vo, Er}}, 1228 {"movdqa", {Pu, Qu}}, 1229 /* 70 */ 1230 {"pshufd", {Pu, Qu, Ib}}, 1231 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_71}}, 1232 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_72}}, 1233 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_73}}, 1234 {"pcmpeqb", {Pu, Qu}}, 1235 {"pcmpeqw", {Pu, Qu}}, 1236 {"pcmpewd", {Pu, Qu}}, 1237 {0}, 1238 /* 78 */ 1239 {"extrq", {VRo, Ib, Ib}}, 1240 {"extrq", {Vo, VRo}}, 1241 {0}, 1242 {0}, 1243 {"haddpd", {Vo, Wo}}, 1244 {"hsubpd", {Vo, Wo}}, 1245 {"~movd", {Er, Vo}}, 1246 {"movdqa", {Wo, Vo}}, 1247 /* 80 */ 1248 {"jo", {Jv}}, 1249 {"jno", {Jv}}, 1250 {"|jc|jb|jnae", {Jv}}, 1251 {"|jnc|jnb|jae", {Jv}}, 1252 {"|jz|je", {Jv}}, 1253 {"|jnz|jne", {Jv}}, 1254 {"|jna|jbe", {Jv}}, 1255 {"|ja|jnbe", {Jv}}, 1256 /* 88 */ 1257 {"js", {Jv}}, 1258 {"jns", {Jv}}, 1259 {"|jp|jpe", {Jv}}, 1260 {"|jnp|jpo", {Jv}}, 1261 {"|jl|jnge", {Jv}}, 1262 {"|jnl|jge", {Jv}}, 1263 {"|jng|jle", {Jv}}, 1264 {"|jg|jnle", {Jv}}, 1265 /* 90 */ 1266 {"seto", {Eb}}, 1267 {"setno", {Eb}}, 1268 {"|setc|setb|setnae", {Eb}}, 1269 {"|setnc|setnb|setae", {Eb}}, 1270 {"|setz|sete", {Eb}}, 1271 {"|setnz|setne", {Eb}}, 1272 {"|setna|setbe", {Eb}}, 1273 {"|seta|setnbe", {Eb}}, 1274 /* 98 */ 1275 {"sets", {Eb}}, 1276 {"setns", {Eb}}, 1277 {"|setp|setpe", {Eb}}, 1278 {"|setnp|setpo", {Eb}}, 1279 {"|setl|setnge", {Eb}}, 1280 {"|setnl|setge", {Eb}}, 1281 {"|setng|setle", {Eb}}, 1282 {"|setg|setnle", {Eb}}, 1283 /* A0 */ 1284 {"push", {__fs}}, 1285 {"pop", {__fs}}, 1286 {"cpuid"}, 1287 {"bt", {Ev, Gv}}, 1288 {"shld", {Ev, Gv, Ib}}, 1289 {"shld", {Ev, Gv, X__cl}}, 1290 {0}, 1291 {0}, 1292 /* A8 */ 1293 {"push", {__gs}}, 1294 {"pop", {__gs}}, 1295 {"rsm"}, 1296 {"bts", {Ev, Gv}}, 1297 {"shrd", {Ev, Gv, Ib}}, 1298 {"shrd", {Ev, Gv, X__cl}}, 1299 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_AE}}, 1300 {"imul", {Gv, Ev}}, 1301 /* B0 */ 1302 {"cmpxchg", {Eb, Gb}}, 1303 {"cmpxchg", {Ev, Gv}}, 1304 {"lss", {Gv, Mp}}, 1305 {"btr", {Ev, Gv}}, 1306 {"lfs", {Gv, Mp}}, 1307 {"lgs", {Gv, Mp}}, 1308 {"~movzx", {Gv, Eb}}, 1309 {"~movzx", {Gv, Ew}}, 1310 /* B8 */ 1311 {"jmpe", {Jv}}, 1312 {"ud2"}, 1313 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_BA}}, 1314 {"btc", {Ev, Gv}}, 1315 {"bsf", {Gv, Ev}}, 1316 {"bsr", {Gv, Ev}}, 1317 {"~movsx", {Gv, Eb}}, 1318 {"~movsx", {Gv, Ew}}, 1319 /* C0 */ 1320 {"xadd", {Eb, Gb}}, 1321 {"xadd", {Ev, Gv}}, 1322 {"cmpCCpd", {Vo, Wo, Ib}}, 1323 {0}, 1324 {"pinsrw", {Vo, MRwr, Ib}}, 1325 {"pextrw", {Gr, VRo, Ib}}, 1326 {"shufpd", {Vo, Wo, Ib}}, 1327 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_66_C7}}, 1328 /* C8 */ 1329 {"bswap", {__axdq}}, 1330 {"bswap", {__cxdq}}, 1331 {"bswap", {__dxdq}}, 1332 {"bswap", {__bxdq}}, 1333 {"bswap", {__spdq}}, 1334 {"bswap", {__bpdq}}, 1335 {"bswap", {__sidq}}, 1336 {"bswap", {__didq}}, 1337 /* D0 */ 1338 {"addsubpd", {Vo, Wo}}, 1339 {"psrlw", {Pu, Qu}}, 1340 {"psrld", {Pu, Qu}}, 1341 {"psrlq", {Pu, Qu}}, 1342 {"paddq", {Pu, Qu}}, 1343 {"pmullw", {Pu, Qu}}, 1344 {"movq", {Wq, Vq}}, 1345 {"pmovmskb", {Gr, PRu}}, 1346 /* D8 */ 1347 {"psubusb", {Pu, Qu}}, 1348 {"psubusw", {Pu, Qu}}, 1349 {"pminub", {Pu, Qu}}, 1350 {"pand", {Pu, Qu}}, 1351 {"paddusb", {Pu, Qu}}, 1352 {"paddusw", {Pu, Qu}}, 1353 {"pmaxub", {Pu, Qu}}, 1354 {"pandn", {Pu, Qu}}, 1355 /* E0 */ 1356 {"pavgb", {Pu, Qu}}, 1357 {"psraw", {Pu, Qu}}, 1358 {"psrad", {Pu, Qu}}, 1359 {"pavgw", {Pu, Qu}}, 1360 {"pmulhuw", {Pu, Qu}}, 1361 {"pmulhw", {Pu, Qu}}, 1362 {"cvttpd2dq", {Vo, Wo}}, 1363 {"movntdq", {Mo, Vo}}, 1364 /* E8 */ 1365 {"psubsb", {Pu, Qu}}, 1366 {"psubsw", {Pu, Qu}}, 1367 {"pminsw", {Pu, Qu}}, 1368 {"por", {Pu, Qu}}, 1369 {"paddsb", {Pu, Qu}}, 1370 {"paddsw", {Pu, Qu}}, 1371 {"pmaxsw", {Pu, Qu}}, 1372 {"pxor", {Pu, Qu}}, 1373 /* F0 */ 1374 {0}, 1375 {"psllw", {Pu, Qu}}, 1376 {"pslld", {Pu, Qu}}, 1377 {"psllq", {Pu, Qu}}, 1378 {"pmuludq", {Pu, Qu}}, 1379 {"pmaddwd", {Pu, Qu}}, 1380 {"psadbw", {Pu, Qu}}, 1381 {"maskmovdqu", {Vo, VRo}}, 1382 /* F8 */ 1383 {"psubb", {Pu, Qu}}, 1384 {"psubw", {Pu, Qu}}, 1385 {"psubd", {Pu, Qu}}, 1386 {"psubq", {Pu, Qu}}, 1387 {"paddb", {Pu, Qu}}, 1388 {"paddw", {Pu, Qu}}, 1389 {"paddd", {Pu, Qu}}, 1390 {0}, 1391 }; 1392 1393 x86opc_insn x86_insns_ext_f2[256] = { 1394 /* 00 */ 1395 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1396 /* 08 */ 1397 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1398 /* 10 */ 1399 {"movsd", {Vq, Wq}}, 1400 {"movsd", {Wq, Vq}}, 1401 {"movddup", {Vo, Wq}}, 1402 {0}, 1403 {0}, 1404 {0}, 1405 {0}, 1406 {0}, 1407 /* 18 */ 1408 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1409 /* 20 */ 1410 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1411 /* 28 */ 1412 {0}, 1413 {0}, 1414 {"~cvtsi2sd", {Vq, Er}}, 1415 {"movntsd", {Mq, Vq}}, 1416 {"cvttsd2si", {Gr, Wq}}, 1417 {"cvtsd2si", {Gr, Wq}}, 1418 {0}, 1419 {0}, 1420 /* 30 */ 1421 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1422 /* 38 */ 1423 {0, {SPECIAL_TYPE_OPC_GROUP, GROUP_OPC_F20F38}}, 1424 {0}, 1425 {0}, 1426 {0}, 1427 {0}, 1428 {0}, 1429 {0}, 1430 {0}, 1431 /* 40 */ 1432 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1433 /* 48 */ 1434 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1435 /* 50 */ 1436 {0}, 1437 {"sqrtsd", {Vq, Wq}}, 1438 {0}, 1439 {0}, 1440 {0}, 1441 {0}, 1442 {0}, 1443 {0}, 1444 /* 58 */ 1445 {"addsd", {Vq, Wq}}, 1446 {"mulsd", {Vq, Wq}}, 1447 {"cvtsd2ss", {Vd, Wq}}, 1448 {0}, 1449 {"subsd", {Vq, Wq}}, 1450 {"minsd", {Vq, Wq}}, 1451 {"divsd", {Vq, Wq}}, 1452 {"maxsd", {Vq, Wq}}, 1453 /* 60 */ 1454 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1455 /* 68 */ 1456 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1457 /* 70 */ 1458 {"pshuflw", {Vo, Wo, Ib}}, 1459 {0}, 1460 {0}, 1461 {0}, 1462 {0}, 1463 {0}, 1464 {0}, 1465 {0}, 1466 /* 78 */ 1467 {"insertq", {Vo, VRo, Iw}}, 1468 {"insertq", {Vo, VRo}}, 1469 {0}, 1470 {0}, 1471 {"haddps", {Vo, Wo}}, 1472 {"hsubps", {Vo, Wo}}, 1473 {0}, 1474 {0}, 1475 /* 80 */ 1476 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1477 /* 88 */ 1478 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1479 /* 90 */ 1480 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1481 /* 98 */ 1482 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1483 /* a0 */ 1484 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1485 /* a8 */ 1486 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1487 /* b0 */ 1488 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1489 /* b8 */ 1490 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1491 /* c0 */ 1492 {0}, 1493 {0}, 1494 {"cmpCCsd", {Vq, Wq, Ib}}, 1495 {0}, 1496 {0}, 1497 {0}, 1498 {0}, 1499 {0}, 1500 /* c8 */ 1501 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1502 /* d0 */ 1503 {"addsubps", {Vo, Wo}}, 1504 {0}, 1505 {0}, 1506 {0}, 1507 {0}, 1508 {0}, 1509 {"movdq2q", {Pq, VRq}}, 1510 {0}, 1511 /* d8 */ 1512 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1513 /* e0 */ 1514 {0}, 1515 {0}, 1516 {0}, 1517 {0}, 1518 {0}, 1519 {0}, 1520 {"cvtpd2dq", {Vo, Wo}}, 1521 {0}, 1522 /* e8 */ 1523 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1524 /* f0 */ 1525 {"lddqu", {Vo, Mo}}, 1526 {0}, 1527 {0}, 1528 {0}, 1529 {0}, 1530 {0}, 1531 {0}, 1532 {0}, 1533 /* f8 */ 1534 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1535 }; 1536 1537 x86opc_insn x86_insns_ext_f3[256] = { 1538 /* 00 */ 1539 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1540 /* 08 */ 1541 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1542 /* 10 */ 1543 {"movss", {Vd, Wd}}, 1544 {"movss", {Wd, Vd}}, 1545 {"movsldup", {Vo, Wo}}, 1546 {0}, 1547 {0}, 1548 {0}, 1549 {"movshdup", {Vo, Wo}}, 1550 {0}, 1551 /* 18 */ 1552 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1553 /* 20 */ 1554 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1555 /* 28 */ 1556 {0}, 1557 {0}, 1558 {"~cvtsi2ss", {Vd, Er}}, 1559 {"movntss", {Md, Vd}}, 1560 {"cvttss2si", {Gr, Wd}}, 1561 {"cvtss2si", {Gr, Wd}}, 1562 {0}, 1563 {0}, 1564 /* 30 */ 1565 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1566 /* 38 */ 1567 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1568 /* 40 */ 1569 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1570 /* 48 */ 1571 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1572 /* 50 */ 1573 {0}, 1574 {"sqrtss", {Vd, Wd}}, 1575 {"rsqrtss", {Vd, Wd}}, 1576 {"rcpss", {Vd, Wd}}, 1577 {0}, 1578 {0}, 1579 {0}, 1580 {0}, 1581 /* 58 */ 1582 {"addss", {Vd, Wd}}, 1583 {"mulss", {Vd, Wd}}, 1584 {"cvtss2sd", {Vq, Wd}}, 1585 {"cvttps2dq", {Vo, Wo}}, 1586 {"subss", {Vd, Wd}}, 1587 {"minss", {Vd, Wd}}, 1588 {"divss", {Vd, Wd}}, 1589 {"maxss", {Vd, Wd}}, 1590 /* 60 */ 1591 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1592 /* 68 */ 1593 {0}, 1594 {0}, 1595 {0}, 1596 {0}, 1597 {0}, 1598 {0}, 1599 {0}, 1600 {"movdqu", {Vo, Wo}}, 1601 /* 70 */ 1602 {"pshufhw", {Vo, Wo, Ib}}, 1603 {0}, 1604 {0}, 1605 {0}, 1606 {0}, 1607 {0}, 1608 {0}, 1609 {0}, 1610 /* 78 */ 1611 {0}, 1612 {0}, 1613 {0}, 1614 {0}, 1615 {0}, 1616 {0}, 1617 {"movq", {Vo, Wq}}, 1618 {"movdqu", {Wo, Vo}}, 1619 /* 80 */ 1620 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1621 /* 88 */ 1622 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1623 /* 90 */ 1624 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1625 /* 98 */ 1626 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1627 /* a0 */ 1628 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1629 /* a8 */ 1630 {0}, 1631 {0}, 1632 {0}, 1633 {0}, 1634 {0}, 1635 {0}, 1636 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_F3_AE}}, 1637 {0}, 1638 /* b0 */ 1639 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1640 /* b8 */ 1641 {"popcnt", {Gv, Ev}}, 1642 {0}, 1643 {0}, 1644 {0}, 1645 {"tzcnt", {Gv, Ev}}, 1646 {"lzcnt", {Gv, Ev}}, 1647 {0}, 1648 {0}, 1649 /* c0 */ 1650 {0}, 1651 {0}, 1652 {"cmpCCss", {Vd, Wd, Ib}}, 1653 {0}, 1654 {0}, 1655 {0}, 1656 {0}, 1657 {0, {SPECIAL_TYPE_GROUP, GROUP_EXT_F3_C7}}, 1658 /* c8 */ 1659 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1660 /* d0 */ 1661 {0}, 1662 {0}, 1663 {0}, 1664 {0}, 1665 {0}, 1666 {0}, 1667 {"movq2dq", {Vo, PRq}}, 1668 {0}, 1669 /* d8 */ 1670 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1671 /* e0 */ 1672 {0}, 1673 {0}, 1674 {0}, 1675 {0}, 1676 {0}, 1677 {0}, 1678 {"cvtdq2pd", {Vo, Wq}}, 1679 {0}, 1680 /* e8 */ 1681 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1682 /* f0 */ 1683 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1684 /* f8 */ 1685 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1686 }; 1687 1688 x86opc_insn x86_opc_group_insns[X86_OPC_GROUPS][256] = { 1689 /* 0 - GROUP_OPC_0F38 */ 1690 { 1691 /* 00 */ 1692 {"pshufb", {Pu, Qu}}, 1693 {"phaddw", {Pu, Qu}}, 1694 {"phaddd", {Pu, Qu}}, 1695 {"phaddsw", {Pu, Qu}}, 1696 {"pmaddubsw", {Pu, Qu}}, 1697 {"phsubw", {Pu, Qu}}, 1698 {"phsubd", {Pu, Qu}}, 1699 {"phsubsw", {Pu, Qu}}, 1700 /* 08 */ 1701 {"psignb", {Pu, Qu}}, 1702 {"psignw", {Pu, Qu}}, 1703 {"psignd", {Pu, Qu}}, 1704 {"pmulhrsw", {Pu, Qu}}, 1705 {0}, 1706 {0}, 1707 {0}, 1708 {0}, 1709 /* 10 */ 1710 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1711 /* 18 */ 1712 {0}, 1713 {0}, 1714 {0}, 1715 {0}, 1716 {"pabsb", {Pu, Qu}}, 1717 {"pabsw", {Pu, Qu}}, 1718 {"pabsd", {Pu, Qu}}, 1719 {0}, 1720 /* 20 */ 1721 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1722 /* 28 */ 1723 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1724 /* 30 */ 1725 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1726 /* 38 */ 1727 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1728 /* 40 */ 1729 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1730 /* 48 */ 1731 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1732 /* 50 */ 1733 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1734 /* 58 */ 1735 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1736 /* 60 */ 1737 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1738 /* 68 */ 1739 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1740 /* 70 */ 1741 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1742 /* 78 */ 1743 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1744 /* 80 */ 1745 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1746 /* 88 */ 1747 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1748 /* 90 */ 1749 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1750 /* 98 */ 1751 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1752 /* a0 */ 1753 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1754 /* a8 */ 1755 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1756 /* b0 */ 1757 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1758 /* b8 */ 1759 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1760 /* c0 */ 1761 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1762 /* c8 */ 1763 {"sha1nexte", {Vo, Wo}}, 1764 {"sha1msg1", {Vo, Wo}}, 1765 {"sha1msg2", {Vo, Wo}}, 1766 {"sha256rnds2", {Vo, Wo}}, 1767 {"sha256msg1", {Vo, Wo}}, 1768 {"sha256msg2", {Vo, Wo}}, 1769 {0}, 1770 {0}, 1771 /* d0 */ 1772 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1773 /* d8 */ 1774 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1775 /* e0 */ 1776 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1777 /* e8 */ 1778 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1779 /* f0 */ 1780 {"movbe", {Gv, Mv}}, 1781 {"movbe", {Mv, Gv}}, 1782 {0}, 1783 {0}, 1784 {0}, 1785 {0}, 1786 {"adox", {Gr, Er}}, 1787 {0}, 1788 /* f8 */ 1789 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1790 }, 1791 /* 1 - GROUP_OPC_660F38 */ 1792 { 1793 /* 00 */ 1794 {"pshufb", {Pu, Qu}}, 1795 {"phaddw", {Pu, Qu}}, 1796 {"phaddd", {Pu, Qu}}, 1797 {"phaddsw", {Pu, Qu}}, 1798 {"pmaddubsw", {Pu, Qu}}, 1799 {"phsubw", {Pu, Qu}}, 1800 {"phsubd", {Pu, Qu}}, 1801 {"phsubsw", {Pu, Qu}}, 1802 /* 08 */ 1803 {"psignb", {Pu, Qu}}, 1804 {"psignw", {Pu, Qu}}, 1805 {"psignd", {Pu, Qu}}, 1806 {"pmulhrsw", {Pu, Qu}}, 1807 {0}, 1808 {0}, 1809 {0}, 1810 {0}, 1811 /* 10 */ 1812 {"pblendvb", {Vo, Wo, XMM0}}, 1813 {0}, 1814 {0}, 1815 {0}, 1816 {"blendvps", {Vo, Wo, XMM0}}, 1817 {"blendvpd", {Vo, Wo, XMM0}}, 1818 {0}, 1819 {"ptest", {Vo, Wo}}, 1820 /* 18 */ 1821 {0}, 1822 {0}, 1823 {0}, 1824 {0}, 1825 {"pabsb", {Pu, Qu}}, 1826 {"pabsw", {Pu, Qu}}, 1827 {"pabsd", {Pu, Qu}}, 1828 {0}, 1829 /* 20 */ 1830 {"pmovsxbw", {Vo, Wq}}, 1831 {"pmovsxbd", {Vo, Wd}}, 1832 {"pmovsxbq", {Vo, Ww}}, 1833 {"pmovsxwd", {Vo, Wq}}, 1834 {"pmovsxwq", {Vo, Wd}}, 1835 {"pmovsxdq", {Vo, Wq}}, 1836 {0}, 1837 {0}, 1838 /* 28 */ 1839 {"pmuldq", {Vo, Wo}}, 1840 {"pcmpeqq", {Vo, Wo}}, 1841 {"movntdqa", {Vo, Mo}}, 1842 {"packusdw", {Vo, Wo}}, 1843 {0}, 1844 {0}, 1845 {0}, 1846 {0}, 1847 /* 30 */ 1848 {"pmovzxbw", {Vo, Wq}}, 1849 {"pmovzxbd", {Vo, Wd}}, 1850 {"pmovzxbq", {Vo, Ww}}, 1851 {"pmovzxwd", {Vo, Wq}}, 1852 {"pmovzxwq", {Vo, Wd}}, 1853 {"pmovzxdq", {Vo, Wq}}, 1854 {0}, 1855 {"pcmpgtq", {Vo, Wo}}, 1856 /* 38 */ 1857 {"pminsb", {Vo, Wo}}, 1858 {"pminsd", {Vo, Wo}}, 1859 {"pminuw", {Vo, Wo}}, 1860 {"pminud", {Vo, Wo}}, 1861 {"pmaxsb", {Vo, Wo}}, 1862 {"pmaxsd", {Vo, Wo}}, 1863 {"pmaxuw", {Vo, Wo}}, 1864 {"pmaxud", {Vo, Wo}}, 1865 /* 40 */ 1866 {"pmulld", {Vo, Wo}}, 1867 {"phminposuw", {Vo, Wo}}, 1868 {0}, 1869 {0}, 1870 {0}, 1871 {0}, 1872 {0}, 1873 {0}, 1874 /* 48 */ 1875 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1876 /* 50 */ 1877 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1878 /* 58 */ 1879 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1880 /* 60 */ 1881 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1882 /* 68 */ 1883 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1884 /* 70 */ 1885 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1886 /* 78 */ 1887 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1888 /* 80 */ 1889 {"invept", {Gr, Mo}}, 1890 {"invvpid", {Gr, Mo}}, 1891 {"invpcid", {Gr, Mo}}, 1892 {0}, {0}, {0}, {0}, {0}, 1893 /* 88 */ 1894 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1895 /* 90 */ 1896 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1897 /* 98 */ 1898 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1899 /* a0 */ 1900 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1901 /* a8 */ 1902 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1903 /* b0 */ 1904 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1905 /* b8 */ 1906 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1907 /* c0 */ 1908 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1909 /* c8 */ 1910 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1911 /* d0 */ 1912 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1913 /* d8 */ 1914 {0}, 1915 {0}, 1916 {0}, 1917 {"aesimc", {Vo, Wo}}, 1918 {"aesenc", {Vo, Wo}}, 1919 {"aesenclast", {Vo, Wo}}, 1920 {"aesdec", {Vo, Wo}}, 1921 {"aesdeclast", {Vo, Wo}}, 1922 /* e0 */ 1923 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1924 /* e8 */ 1925 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1926 /* f0 */ 1927 {"movbe", {Gv, Mv}}, 1928 {"movbe", {Mv, Gv}}, 1929 {0}, 1930 {0}, 1931 {0}, 1932 {0}, 1933 {"adcx", {Gr, Er}}, 1934 {0}, 1935 /* f8 */ 1936 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1937 }, 1938 1939 /* 2 - GROUP_OPC_F20F38 */ 1940 { 1941 /* 00 */ 1942 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1943 /* 08 */ 1944 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1945 /* 10 */ 1946 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1947 /* 18 */ 1948 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1949 /* 20 */ 1950 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1951 /* 28 */ 1952 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1953 /* 30 */ 1954 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1955 /* 38 */ 1956 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1957 /* 40 */ 1958 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1959 /* 48 */ 1960 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1961 /* 50 */ 1962 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1963 /* 58 */ 1964 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1965 /* 60 */ 1966 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1967 /* 68 */ 1968 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1969 /* 70 */ 1970 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1971 /* 78 */ 1972 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1973 /* 80 */ 1974 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1975 /* 88 */ 1976 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1977 /* 90 */ 1978 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1979 /* 98 */ 1980 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1981 /* a0 */ 1982 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1983 /* a8 */ 1984 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1985 /* b0 */ 1986 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1987 /* b8 */ 1988 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1989 /* c0 */ 1990 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1991 /* c8 */ 1992 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1993 /* d0 */ 1994 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1995 /* d8 */ 1996 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1997 /* e0 */ 1998 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 1999 /* e8 */ 2000 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2001 /* f0 */ 2002 {"~crc32", {Gr, Eb}}, 2003 {"~crc32", {Gr, Ev}}, 2004 {0}, 2005 {0}, 2006 {0}, 2007 {0}, 2008 {0}, 2009 {0}, 2010 /* f8 */ 2011 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2012 }, 2013 /* 3 - GROUP_OPC_0F3A */ 2014 { 2015 /* 00 */ 2016 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2017 /* 08 */ 2018 {0}, 2019 {0}, 2020 {0}, 2021 {0}, 2022 {0}, 2023 {0}, 2024 {0}, 2025 {"palignr", {Pu, Qu, Ib}}, 2026 /* 10 */ 2027 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2028 /* 18 */ 2029 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2030 /* 20 */ 2031 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2032 /* 28 */ 2033 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2034 /* 30 */ 2035 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2036 /* 38 */ 2037 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2038 /* 40 */ 2039 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2040 /* 48 */ 2041 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2042 /* 50 */ 2043 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2044 /* 58 */ 2045 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2046 /* 60 */ 2047 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2048 /* 68 */ 2049 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2050 /* 70 */ 2051 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2052 /* 78 */ 2053 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2054 /* 80 */ 2055 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2056 /* 88 */ 2057 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2058 /* 90 */ 2059 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2060 /* 98 */ 2061 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2062 /* a0 */ 2063 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2064 /* a8 */ 2065 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2066 /* b0 */ 2067 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2068 /* b8 */ 2069 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2070 /* c0 */ 2071 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2072 /* c8 */ 2073 {0}, 2074 {0}, 2075 {0}, 2076 {0}, 2077 {"sha1rnds4", {Vo, Wo, Ib}}, 2078 {0}, 2079 {0}, 2080 {0}, 2081 /* d0 */ 2082 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2083 /* d8 */ 2084 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2085 /* e0 */ 2086 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2087 /* e8 */ 2088 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2089 /* f0 */ 2090 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2091 /* f8 */ 2092 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2093 }, 2094 /* 4 - GROUP_OPC_660F3A */ 2095 { 2096 /* 00 */ 2097 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2098 /* 08 */ 2099 {"roundps", {Vo, Wo, Ib}}, 2100 {"roundpd", {Vo, Wo, Ib}}, 2101 {"roundss", {Vo, Wo, Ib}}, 2102 {"roundsd", {Vo, Wo, Ib}}, 2103 {"blendps", {Vo, Wo, Ib}}, 2104 {"blendpd", {Vo, Wo, Ib}}, 2105 {"pblendw", {Vo, Wo, Ib}}, 2106 {"palignr", {Vo, Wo, Ib}}, 2107 /* 10 */ 2108 {0}, 2109 {0}, 2110 {0}, 2111 {0}, 2112 {"pextrb", {MRbr, Vo, Ib}}, 2113 {"pextrw", {MRwr, Vo, Ib}}, 2114 {"&pextrd|pextrd|pextrq", {Er, Vo, Ib}}, 2115 {"extractps", {MRdr, Vo, Ib}}, 2116 /* 18 */ 2117 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2118 /* 20 */ 2119 {"pinsrb", {Vo, MRbd, Ib}}, 2120 {"insertps", {Vo, Wd, Ib}}, 2121 {"&pinsrd|pinsrd|pinsrq", {Vo, Er, Ib}}, 2122 {0}, 2123 {0}, 2124 {0}, 2125 {0}, 2126 {0}, 2127 /* 28 */ 2128 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2129 /* 30 */ 2130 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2131 /* 38 */ 2132 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2133 /* 40 */ 2134 {"dpps", {Vo, Wo, Ib}}, 2135 {"dppd", {Vo, Wo, Ib}}, 2136 {"mpsadbw", {Vo, Wo, Ib}}, 2137 {0}, 2138 {"pclmulqdq", {Vo, Wo, Ib}}, 2139 {0}, 2140 {0}, 2141 {0}, 2142 /* 48 */ 2143 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2144 /* 50 */ 2145 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2146 /* 58 */ 2147 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2148 /* 60 */ 2149 {"pcmpestrm", {Vo, Wo, Ib}}, 2150 {"pcmpestri", {Vo, Wo, Ib}}, 2151 {"pcmpistrm", {Vo, Wo, Ib}}, 2152 {"pcmpistri", {Vo, Wo, Ib}}, 2153 {0}, 2154 {0}, 2155 {0}, 2156 {0}, 2157 /* 68 */ 2158 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2159 /* 70 */ 2160 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2161 /* 78 */ 2162 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2163 /* 80 */ 2164 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2165 /* 88 */ 2166 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2167 /* 90 */ 2168 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2169 /* 98 */ 2170 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2171 /* a0 */ 2172 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2173 /* a8 */ 2174 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2175 /* b0 */ 2176 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2177 /* b8 */ 2178 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2179 /* c0 */ 2180 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2181 /* c8 */ 2182 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2183 /* d0 */ 2184 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2185 /* d8 */ 2186 {0}, 2187 {0}, 2188 {0}, 2189 {0}, 2190 {0}, 2191 {0}, 2192 {0}, 2193 {"aeskeygenassist", {Vo, Wo, Ib}}, 2194 /* e0 */ 2195 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2196 /* e8 */ 2197 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2198 /* f0 */ 2199 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2200 /* f8 */ 2201 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2202 }, 2203 /* 5 - GROUP_OPC_0F7A */ 2204 { 2205 /* 00 */ 2206 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2207 /* 08 */ 2208 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2209 /* 10 */ 2210 {"frczps", {Vo, Wo}}, 2211 {"frczpd", {Vo, Wo}}, 2212 {"frczss", {Vo, Wd}}, 2213 {"frczsd", {Vo, Wq}}, 2214 {0}, 2215 {0}, 2216 {0}, 2217 {0}, 2218 /* 18 */ 2219 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2220 /* 20 */ 2221 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2222 /* 28 */ 2223 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2224 /* 30 */ 2225 {"cvtph2ps", {Vo, Wq}}, 2226 {"cvtps2ph", {Wq, Vo}}, 2227 {0}, 2228 {0}, 2229 {0}, 2230 {0}, 2231 {0}, 2232 {0}, 2233 /* 38 */ 2234 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2235 /* 40 */ 2236 {0}, 2237 {"phaddbw", {Vo, Wo}}, 2238 {"phaddbd", {Vo, Wo}}, 2239 {"phaddbq", {Vo, Wo}}, 2240 {0}, 2241 {0}, 2242 {"phaddwd", {Vo, Wo}}, 2243 {"phaddwq", {Vo, Wo}}, 2244 /* 48 */ 2245 {0}, 2246 {0}, 2247 {0}, 2248 {"phadddq", {Vo, Wo}}, 2249 {0}, 2250 {0}, 2251 {0}, 2252 {0}, 2253 /* 50 */ 2254 {0}, 2255 {"phaddubw", {Vo, Wo}}, 2256 {"phaddubd", {Vo, Wo}}, 2257 {"phaddubq", {Vo, Wo}}, 2258 {0}, 2259 {0}, 2260 {"phadduwd", {Vo, Wo}}, 2261 {"phadduwq", {Vo, Wo}}, 2262 /* 58 */ 2263 {0}, 2264 {0}, 2265 {0}, 2266 {"phaddudq", {Vo, Wo}}, 2267 {0}, 2268 {0}, 2269 {0}, 2270 {0}, 2271 /* 60 */ 2272 {0}, 2273 {"phsubbw", {Vo, Wo}}, 2274 {"phsubwd", {Vo, Wo}}, 2275 {"phsubdq", {Vo, Wo}}, 2276 {0}, 2277 {0}, 2278 {0}, 2279 {0}, 2280 /* 68 */ 2281 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2282 /* 70 */ 2283 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2284 /* 78 */ 2285 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2286 /* 80 */ 2287 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2288 /* 88 */ 2289 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2290 /* 90 */ 2291 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2292 /* 98 */ 2293 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2294 /* a0 */ 2295 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2296 /* a8 */ 2297 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2298 /* b0 */ 2299 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2300 /* b8 */ 2301 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2302 /* c0 */ 2303 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2304 /* c8 */ 2305 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2306 /* d0 */ 2307 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2308 /* d8 */ 2309 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2310 /* e0 */ 2311 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2312 /* e8 */ 2313 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2314 /* f0 */ 2315 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2316 /* f8 */ 2317 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2318 }, 2319 /* 6 - GROUP_OPC_0F7B */ 2320 { 2321 /* 00 */ 2322 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2323 /* 08 */ 2324 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2325 /* 10 */ 2326 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2327 /* 18 */ 2328 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2329 /* 20 */ 2330 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2331 /* 28 */ 2332 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2333 /* 30 */ 2334 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2335 /* 38 */ 2336 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2337 /* 40 */ 2338 {"protb", {Vo, Wo, Ib}}, 2339 {"protw", {Vo, Wo, Ib}}, 2340 {"protd", {Vo, Wo, Ib}}, 2341 {"protq", {Vo, Wo, Ib}}, 2342 {0}, 2343 {0}, 2344 {0}, 2345 {0}, 2346 /* 48 */ 2347 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2348 /* 50 */ 2349 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2350 /* 58 */ 2351 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2352 /* 60 */ 2353 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2354 /* 68 */ 2355 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2356 /* 70 */ 2357 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2358 /* 78 */ 2359 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2360 /* 80 */ 2361 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2362 /* 88 */ 2363 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2364 /* 90 */ 2365 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2366 /* 98 */ 2367 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2368 /* a0 */ 2369 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2370 /* a8 */ 2371 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2372 /* b0 */ 2373 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2374 /* b8 */ 2375 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2376 /* c0 */ 2377 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2378 /* c8 */ 2379 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2380 /* d0 */ 2381 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2382 /* d8 */ 2383 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2384 /* e0 */ 2385 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2386 /* e8 */ 2387 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2388 /* f0 */ 2389 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2390 /* f8 */ 2391 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2392 }, 2393 /* 6 - GROUP_OPC_0F24 */ 2394 { 2395 /* 00 */ 2396 {"fmaddps", {VD, VD, VS0o, VS1o}}, 2397 {"fmaddpd", {VD, VD, VS0o, VS1o}}, 2398 {"fmaddss", {VD, VD, VS0d, VS1d}}, 2399 {"fmaddsd", {VD, VD, VS0q, VS1q}}, 2400 {"fmaddps", {VD, VS0o, VS1o, VD}}, 2401 {"fmaddpd", {VD, VS0o, VS1o, VD}}, 2402 {"fmaddss", {VD, VS0d, VS1d, VD}}, 2403 {"fmaddsd", {VD, VS0q, VS1q, VD}}, 2404 /* 08 */ 2405 {"fmsubps", {VD, VD, VS0o, VS1o}}, 2406 {"fmsubpd", {VD, VD, VS0o, VS1o}}, 2407 {"fmsubss", {VD, VD, VS0d, VS1d}}, 2408 {"fmsubsd", {VD, VD, VS0q, VS1q}}, 2409 {"fmsubps", {VD, VS0o, VS1o, VD}}, 2410 {"fmsubpd", {VD, VS0o, VS1o, VD}}, 2411 {"fmsubss", {VD, VS0d, VS1d, VD}}, 2412 {"fmsubsd", {VD, VS0q, VS1q, VD}}, 2413 /* 10 */ 2414 {"fnmaddps", {VD, VD, VS0o, VS1o}}, 2415 {"fnmaddpd", {VD, VD, VS0o, VS1o}}, 2416 {"fnmaddss", {VD, VD, VS0d, VS1d}}, 2417 {"fnmaddsd", {VD, VD, VS0q, VS1q}}, 2418 {"fnmaddps", {VD, VS0o, VS1o, VD}}, 2419 {"fnmaddpd", {VD, VS0o, VS1o, VD}}, 2420 {"fnmaddss", {VD, VS0d, VS1d, VD}}, 2421 {"fnmaddsd", {VD, VS0q, VS1q, VD}}, 2422 /* 18 */ 2423 {"fnmsubps", {VD, VD, VS0o, VS1o}}, 2424 {"fnmsubpd", {VD, VD, VS0o, VS1o}}, 2425 {"fnmsubss", {VD, VD, VS0d, VS1d}}, 2426 {"fnmsubsd", {VD, VD, VS0q, VS1q}}, 2427 {"fnmsubps", {VD, VS0o, VS1o, VD}}, 2428 {"fnmsubpd", {VD, VS0o, VS1o, VD}}, 2429 {"fnmsubss", {VD, VS0d, VS1d, VD}}, 2430 {"fnmsubsd", {VD, VS0q, VS1q, VD}}, 2431 /* 20 */ 2432 {"permps", {VD, VD, VS0o, VS1o}}, 2433 {"permpd", {VD, VD, VS0o, VS1o}}, 2434 {"pcmov", {VD, VD, VS0o, VS1o}}, 2435 {"pperm", {VD, VD, VS0o, VS1o}}, 2436 {"permps", {VD, VS0o, VS1o, VD}}, 2437 {"permpd", {VD, VS0o, VS1o, VD}}, 2438 {"pcmov", {VD, VS0o, VS1o, VD}}, 2439 {"pperm", {VD, VS0o, VS1o, VD}}, 2440 /* 28 */ 2441 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2442 /* 30 */ 2443 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2444 /* 38 */ 2445 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2446 /* 40 */ 2447 {"protb", {VD, VS0o, VS1o}}, 2448 {"protw", {VD, VS0o, VS1o}}, 2449 {"protd", {VD, VS0o, VS1o}}, 2450 {"protq", {VD, VS0o, VS1o}}, 2451 {"pshlb", {VD, VS0o, VS1o}}, 2452 {"pshlw", {VD, VS0o, VS1o}}, 2453 {"pshld", {VD, VS0o, VS1o}}, 2454 {"pshlq", {VD, VS0o, VS1o}}, 2455 /* 48 */ 2456 {"pshab", {VD, VS0o, VS1o}}, 2457 {"pshaw", {VD, VS0o, VS1o}}, 2458 {"pshad", {VD, VS0o, VS1o}}, 2459 {"pshaq", {VD, VS0o, VS1o}}, 2460 {0}, 2461 {0}, 2462 {0}, 2463 {0}, 2464 /* 50 */ 2465 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2466 /* 58 */ 2467 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2468 /* 60 */ 2469 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2470 /* 68 */ 2471 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2472 /* 70 */ 2473 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2474 /* 78 */ 2475 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2476 /* 80 */ 2477 {0}, 2478 {0}, 2479 {0}, 2480 {0}, 2481 {0}, 2482 {"pmacssww", {VD, VS00o, VS1o, VD}}, 2483 {"pmacsswd", {VD, VS00o, VS1o, VD}}, 2484 {"pmacssdql", {VD, VS00o, VS1o, VD}}, 2485 /* 88 */ 2486 {0}, 2487 {0}, 2488 {0}, 2489 {0}, 2490 {0}, 2491 {0}, 2492 {"pmacssdd", {VD, VS00o, VS1o, VD}}, 2493 {"pmacssdqh", {VD, VS00o, VS1o, VD}}, 2494 /* 90 */ 2495 {0}, 2496 {0}, 2497 {0}, 2498 {0}, 2499 {0}, 2500 {"pmacsww", {VD, VS00o, VS1o, VD}}, 2501 {"pmacswd", {VD, VS00o, VS1o, VD}}, 2502 {"pmacsdql", {VD, VS00o, VS1o, VD}}, 2503 /* 98 */ 2504 {0}, 2505 {0}, 2506 {0}, 2507 {0}, 2508 {0}, 2509 {0}, 2510 {"pmacsdd", {VD, VS00o, VS1o, VD}}, 2511 {"pmacsdqh", {VD, VS00o, VS1o, VD}}, 2512 /* a0 */ 2513 {0}, 2514 {0}, 2515 {0}, 2516 {0}, 2517 {0}, 2518 {0}, 2519 {"pmadcsswd", {VD, VS00o, VS1o, VD}}, 2520 {0}, 2521 /* a8 */ 2522 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2523 /* b0 */ 2524 {0}, 2525 {0}, 2526 {0}, 2527 {0}, 2528 {0}, 2529 {0}, 2530 {"pmadcswd", {VD, VS00o, VS1o, VD}}, 2531 {0}, 2532 /* b8 */ 2533 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2534 /* c0 */ 2535 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2536 /* c8 */ 2537 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2538 /* d0 */ 2539 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2540 /* d8 */ 2541 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2542 /* e0 */ 2543 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2544 /* e8 */ 2545 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2546 /* f0 */ 2547 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2548 /* f8 */ 2549 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2550 }, 2551 /* 7 - GROUP_OPC_0F25 */ 2552 { 2553 /* 00 */ 2554 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2555 /* 08 */ 2556 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2557 /* 10 */ 2558 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2559 /* 18 */ 2560 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2561 /* 20 */ 2562 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2563 /* 28 */ 2564 {0}, 2565 {0}, 2566 {0}, 2567 {0}, 2568 {"comps", {VD, VS00o, VS1o, Ib}}, 2569 {"compd", {VD, VS00o, VS1o, Ib}}, 2570 {"comss", {VD, VS00d, VS1d, Ib}}, 2571 {"comsd", {VD, VS00q, VS1q, Ib}}, 2572 /* 30 */ 2573 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2574 /* 38 */ 2575 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2576 /* 40 */ 2577 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2578 /* 48 */ 2579 {0}, 2580 {0}, 2581 {0}, 2582 {0}, 2583 {"pcomb", {VD, VS00o, VS1o, Ib}}, 2584 {"pcomw", {VD, VS00o, VS1o, Ib}}, 2585 {"pcomd", {VD, VS00o, VS1o, Ib}}, 2586 {"pcomq", {VD, VS00o, VS1o, Ib}}, 2587 /* 50 */ 2588 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2589 /* 58 */ 2590 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2591 /* 60 */ 2592 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2593 /* 68 */ 2594 {0}, 2595 {0}, 2596 {0}, 2597 {0}, 2598 {"pcomub", {VD, VS00o, VS1o, Ib}}, 2599 {"pcomuw", {VD, VS00o, VS1o, Ib}}, 2600 {"pcomud", {VD, VS00o, VS1o, Ib}}, 2601 {"pcomuq", {VD, VS00o, VS1o, Ib}}, 2602 /* 70 */ 2603 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2604 /* 78 */ 2605 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2606 /* 80 */ 2607 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2608 /* 88 */ 2609 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2610 /* 90 */ 2611 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2612 /* 98 */ 2613 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2614 /* a0 */ 2615 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2616 /* a8 */ 2617 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2618 /* b0 */ 2619 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2620 /* b8 */ 2621 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2622 /* c0 */ 2623 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2624 /* c8 */ 2625 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2626 /* d0 */ 2627 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2628 /* d8 */ 2629 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2630 /* e0 */ 2631 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2632 /* e8 */ 2633 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2634 /* f0 */ 2635 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2636 /* f8 */ 2637 {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, 2638 }, 2639 }; 2640 2641 x86opc_insn x86_group_insns[][8] = { 2642 /* 0 - GROUP_80 */ 2643 { 2644 {"~add", {Eb, Ib}}, 2645 {"~or", {Eb, Ib}}, 2646 {"~adc", {Eb, Ib}}, 2647 {"~sbb", {Eb, Ib}}, 2648 {"~and", {Eb, Ib}}, 2649 {"~sub", {Eb, Ib}}, 2650 {"~xor", {Eb, Ib}}, 2651 {"~cmp", {Eb, Ib}}, 2652 }, 2653 /* 1 - GROUP_81 */ 2654 { 2655 {"~add", {Ev, Iv}}, 2656 {"~or", {Ev, Iv}}, 2657 {"~adc", {Ev, Iv}}, 2658 {"~sbb", {Ev, Iv}}, 2659 {"~and", {Ev, Iv}}, 2660 {"~sub", {Ev, Iv}}, 2661 {"~xor", {Ev, Iv}}, 2662 {"~cmp", {Ev, Iv}}, 2663 }, 2664 /* 2 - GROUP_83 */ 2665 { 2666 {"~add", {Ev, sIbv}}, 2667 {"~or", {Ev, sIbv}}, 2668 {"~adc", {Ev, sIbv}}, 2669 {"~sbb", {Ev, sIbv}}, 2670 {"~and", {Ev, sIbv}}, 2671 {"~sub", {Ev, sIbv}}, 2672 {"~xor", {Ev, sIbv}}, 2673 {"~cmp", {Ev, sIbv}}, 2674 }, 2675 /* 3 - GROUP_8F */ 2676 { 2677 {"~pop", {Ev64}}, 2678 {0}, 2679 {0}, 2680 {0}, 2681 {0}, 2682 {0}, 2683 {0}, 2684 {0}, 2685 }, 2686 /* 4 - GROUP_C0 */ 2687 { 2688 {"~rol", {Eb, Ib}}, 2689 {"~ror", {Eb, Ib}}, 2690 {"~rcl", {Eb, Ib}}, 2691 {"~rcr", {Eb, Ib}}, 2692 {"~shl", {Eb, Ib}}, 2693 {"~shr", {Eb, Ib}}, 2694 {"~sal", {Eb, Ib}}, 2695 {"~sar", {Eb, Ib}}, 2696 }, 2697 /* 5 - GROUP_C1 */ 2698 { 2699 {"~rol", {Ev, Ib}}, 2700 {"~ror", {Ev, Ib}}, 2701 {"~rcl", {Ev, Ib}}, 2702 {"~rcr", {Ev, Ib}}, 2703 {"~shl", {Ev, Ib}}, 2704 {"~shr", {Ev, Ib}}, 2705 {"~sal", {Ev, Ib}}, 2706 {"~sar", {Ev, Ib}}, 2707 }, 2708 /* 6 - GROUP_C6 */ 2709 { 2710 {"~mov", {Eb, Ib}}, 2711 {0}, 2712 {0}, 2713 {0}, 2714 {0}, 2715 {0}, 2716 {0}, 2717 {"xabort", {Ib}}, 2718 }, 2719 /* 7 - GROUP_C7 */ 2720 { 2721 {"~mov", {Ev, Iv}}, 2722 {0}, 2723 {0}, 2724 {0}, 2725 {0}, 2726 {0}, 2727 {0}, 2728 {"xbegin", {Jv}}, 2729 }, 2730 /* 8 - GROUP_D0 */ 2731 { 2732 {"~rol", {Eb, __1}}, 2733 {"~ror", {Eb, __1}}, 2734 {"~rcl", {Eb, __1}}, 2735 {"~rcr", {Eb, __1}}, 2736 {"~shl", {Eb, __1}}, 2737 {"~shr", {Eb, __1}}, 2738 {"~sal", {Eb, __1}}, 2739 {"~sar", {Eb, __1}}, 2740 }, 2741 /* 9 - GROUP_D1 */ 2742 { 2743 {"~rol", {Ev, __1}}, 2744 {"~ror", {Ev, __1}}, 2745 {"~rcl", {Ev, __1}}, 2746 {"~rcr", {Ev, __1}}, 2747 {"~shl", {Ev, __1}}, 2748 {"~shr", {Ev, __1}}, 2749 {"~sal", {Ev, __1}}, 2750 {"~sar", {Ev, __1}}, 2751 }, 2752 /* 10 - GROUP_D2 */ 2753 { 2754 {"~rol", {Eb, X__cl}}, 2755 {"~ror", {Eb, X__cl}}, 2756 {"~rcl", {Eb, X__cl}}, 2757 {"~rcr", {Eb, X__cl}}, 2758 {"~shl", {Eb, X__cl}}, 2759 {"~shr", {Eb, X__cl}}, 2760 {"~sal", {Eb, X__cl}}, 2761 {"~sar", {Eb, X__cl}}, 2762 }, 2763 /* 11 - GROUP_D3 */ 2764 { 2765 {"~rol", {Ev, X__cl}}, 2766 {"~ror", {Ev, X__cl}}, 2767 {"~rcl", {Ev, X__cl}}, 2768 {"~rcr", {Ev, X__cl}}, 2769 {"~shl", {Ev, X__cl}}, 2770 {"~shr", {Ev, X__cl}}, 2771 {"~sal", {Ev, X__cl}}, 2772 {"~sar", {Ev, X__cl}}, 2773 }, 2774 /* 12 - GROUP_F6 */ 2775 { 2776 {"~test", {Eb, Ib}}, 2777 {"~test", {Eb, Ib}}, 2778 {"~not", {Eb}}, 2779 {"~neg", {Eb}}, 2780 {"mul", {X__al, Eb}}, 2781 {"imul", {X__al, Eb}}, 2782 {"div", {X__al, Eb}}, 2783 {"idiv", {X__al, Eb}}, 2784 }, 2785 /* 13 - GROUP_F7 */ 2786 { 2787 {"~test", {Ev, Iv}}, 2788 {"~test", {Ev, Iv}}, 2789 {"~not", {Ev}}, 2790 {"~neg", {Ev}}, 2791 {"mul", {X__ax, Ev}}, 2792 {"imul", {X__ax, Ev}}, 2793 {"div", {X__ax, Ev}}, 2794 {"idiv", {X__ax, Ev}}, 2795 }, 2796 /* 14 - GROUP_FE */ 2797 { 2798 {"~inc", {Eb}}, 2799 {"~dec", {Eb}}, 2800 {0}, 2801 {0}, 2802 {0}, 2803 {0}, 2804 {0}, 2805 {0}, 2806 }, 2807 /* 15 - GROUP_FF */ 2808 { 2809 {"~inc", {Ev}}, 2810 {"~dec", {Ev}}, 2811 {"~call", {Ev64}}, 2812 {"~call", {Mp}}, 2813 {"~jmp", {Ev64}}, 2814 {"~jmp", {Mp}}, 2815 {"~push", {Ev64}}, 2816 {0}, 2817 }, 2818 /* 16 - GROUP_EXT_00 */ 2819 { 2820 {"sldt", {MRwv}}, 2821 {"str", {MRwv}}, 2822 {"lldt", {MRwv}}, 2823 {"ltr", {MRwv}}, 2824 {"verr", {MRwv}}, 2825 {"verw", {MRwv}}, 2826 {0}, 2827 {0}, 2828 }, 2829 /* 17 - GROUP_EXT_01 */ 2830 { 2831 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0F01_0}}, 2832 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0F01_1}}, 2833 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0F01_2}}, 2834 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0F01_3}}, 2835 {"smsw", {MRwv}}, 2836 {0}, 2837 {"lmsw", {MRwv}}, 2838 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0F01_7}}, 2839 }, 2840 /* 18 - GROUP_EXT_18 */ 2841 { 2842 {"prefetchnta", {M}}, 2843 {"prefetch0", {M}}, 2844 {"prefetch1", {M}}, 2845 {"prefetch2", {M}}, 2846 {"~nop", {Ev}}, 2847 {"~nop", {Ev}}, 2848 {"~nop", {Ev}}, 2849 {"~nop", {Ev}}, 2850 }, 2851 /* 16 - GROUP_EXT_71 */ 2852 { 2853 {0}, 2854 {0}, 2855 {"psrlw", {PRu, Ib}}, 2856 {0}, 2857 {"psraw", {PRu, Ib}}, 2858 {0}, 2859 {"psllw", {PRu, Ib}}, 2860 {0}, 2861 }, 2862 /* 17 - GROUP_EXT_72 */ 2863 { 2864 {0}, 2865 {0}, 2866 {"psrld", {PRu, Ib}}, 2867 {0}, 2868 {"psrad", {PRu, Ib}}, 2869 {0}, 2870 {"pslld", {PRu, Ib}}, 2871 {0}, 2872 }, 2873 /* 18 - GROUP_EXT_73 */ 2874 { 2875 {0}, 2876 {0}, 2877 {"psrlq", {PRu, Ib}}, 2878 {"psrldq", {PRu, Ib}}, 2879 {0}, 2880 {0}, 2881 {"psllq", {PRu, Ib}}, 2882 {"pslldq", {PRu, Ib}}, 2883 }, 2884 /* 22 - GROUP_EXT_AE */ 2885 { 2886 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FAE_0}}, 2887 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FAE_1}}, 2888 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FAE_2}}, 2889 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FAE_3}}, 2890 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FAE_4}}, 2891 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FAE_5}}, 2892 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FAE_6}}, 2893 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FAE_7}}, 2894 }, 2895 /* 22 - GROUP_EXT_F3_AE */ 2896 { 2897 {"rdfsbase", {Rr}}, 2898 {"rdgsbase", {Rr}}, 2899 {"wrfsbase", {Rr}}, 2900 {"wrgsbase", {Rr}}, 2901 {0}, 2902 {0}, 2903 {0}, 2904 {0}, 2905 }, 2906 /* 23 - GROUP_EXT_BA */ 2907 { 2908 {0}, 2909 {0}, 2910 {0}, 2911 {0}, 2912 {"~bt", {Ev, Ib}}, 2913 {"~bts", {Ev, Ib}}, 2914 {"~btr", {Ev, Ib}}, 2915 {"~btc", {Ev, Ib}}, 2916 }, 2917 /* 24 - GROUP_EXT_C7 */ 2918 { 2919 {0}, 2920 {"? |cmpxchg8b|cmpxchg16b", {M}}, 2921 {0}, 2922 {0}, 2923 {0}, 2924 {0}, 2925 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FC7_6}}, 2926 {0, {SPECIAL_TYPE_SGROUP, GROUP_SPECIAL_0FC7_7}}, 2927 }, 2928 /* 25 - GROUP_EXT_66_C7 */ 2929 { 2930 {0}, 2931 {0}, 2932 {0}, 2933 {0}, 2934 {0}, 2935 {0}, 2936 {"vmclear", {Mq}}, 2937 {0}, 2938 }, 2939 /* 26 - GROUP_EXT_F3_C7 */ 2940 { 2941 {0}, 2942 {0}, 2943 {0}, 2944 {0}, 2945 {0}, 2946 {0}, 2947 {"vmxon", {Mq}}, 2948 {0}, 2949 }, 2950 }; 2951 2952 x86opc_insn x86_special_group_insns[X86_SPECIAL_GROUPS][9] = { 2953 /* 0 - GROUP_SPECIAL_0F01_0 */ 2954 { 2955 {0}, 2956 {"vmcall"}, 2957 {"vmlaunch"}, 2958 {"vmresume"}, 2959 {"vmxoff"}, 2960 {0}, 2961 {0}, 2962 {0}, 2963 // with mod!=11: 2964 {"sgdt", {M}}, 2965 }, 2966 /* 1 - GROUP_SPECIAL_0F01_1 */ 2967 { 2968 {"monitor"}, 2969 {"mwait"}, 2970 {"clac"}, 2971 {"stac"}, 2972 {0}, 2973 {0}, 2974 {0}, 2975 {0}, 2976 // with mod!=11: 2977 {"sidt", {M}}, 2978 }, 2979 /* 2 - GROUP_SPECIAL_0F01_2 */ 2980 { 2981 {"xgetbv"}, 2982 {"xsetbv"}, 2983 {0}, 2984 {0}, 2985 {"vmfunc"}, 2986 {"xend"}, 2987 {"xtest"}, 2988 {0}, 2989 // with mod!=11: 2990 {"lgdt", {M}}, 2991 }, 2992 /* 3 - GROUP_SPECIAL_0F01_3 */ 2993 { 2994 {"vmrun"}, 2995 {"vmmcall"}, 2996 {"vmload"}, 2997 {"vmsave"}, 2998 {"stgi"}, 2999 {"clgi"}, 3000 {"skinit"}, 3001 {"invlpga"}, 3002 // with mod!=11: 3003 {"lidt", {M}}, 3004 }, 3005 /* 4 - GROUP_SPECIAL_0F01_7 */ 3006 { 3007 {"swapgs"}, 3008 {"rdtscp"}, 3009 {0}, 3010 {0}, 3011 {0}, 3012 {0}, 3013 {0}, 3014 {0}, 3015 // with mod!=11: 3016 {"invlpg", {M}}, 3017 }, 3018 /* 5 - GROUP_SPECIAL_0FAE_0 */ 3019 { 3020 {0}, 3021 {0}, 3022 {0}, 3023 {0}, 3024 {0}, 3025 {0}, 3026 {0}, 3027 {0}, 3028 // with mod!=11: 3029 {"?fxsave|fxsave|fxsave64", {M}}, 3030 }, 3031 /* 6 - GROUP_SPECIAL_0FAE_1 */ 3032 { 3033 {0}, 3034 {0}, 3035 {0}, 3036 {0}, 3037 {0}, 3038 {0}, 3039 {0}, 3040 {0}, 3041 // with mod!=11: 3042 {"?fxstor|fxstor|fxstor64", {M}}, 3043 }, 3044 /* 7 - GROUP_SPECIAL_0FAE_2 */ 3045 { 3046 {0}, 3047 {0}, 3048 {0}, 3049 {0}, 3050 {0}, 3051 {0}, 3052 {0}, 3053 {0}, 3054 // with mod!=11: 3055 {"ldmxcsr", {Md}}, 3056 }, 3057 /* 8 - GROUP_SPECIAL_0FAE_3 */ 3058 { 3059 {0}, 3060 {0}, 3061 {0}, 3062 {0}, 3063 {0}, 3064 {0}, 3065 {0}, 3066 {0}, 3067 // with mod!=11: 3068 {"stmxcsr", {Md}}, 3069 }, 3070 /* 9 - GROUP_SPECIAL_0FAE_4 */ 3071 { 3072 {0}, 3073 {0}, 3074 {0}, 3075 {0}, 3076 {0}, 3077 {0}, 3078 {0}, 3079 {0}, 3080 // with mod!=11: 3081 {"?xsave|xsave|xsave64", {M}}, 3082 }, 3083 /* 10 - GROUP_SPECIAL_0FAE_5 */ 3084 { 3085 {"lfence"}, 3086 {0}, 3087 {0}, 3088 {0}, 3089 {0}, 3090 {0}, 3091 {0}, 3092 {0}, 3093 // with mod!=11: 3094 {"?xrstor|xrstor|xrstor64", {M}}, 3095 }, 3096 /* 11 - GROUP_SPECIAL_0FAE_6 */ 3097 { 3098 {"mfence"}, 3099 {0}, 3100 {0}, 3101 {0}, 3102 {0}, 3103 {0}, 3104 {0}, 3105 {"?xsaveopt|xsaveopt|xsaveopt64", {M}}, 3106 // with mod!=11: 3107 {0}, 3108 }, 3109 /* 12 - GROUP_SPECIAL_0FAE_7 */ 3110 { 3111 {"sfence"}, 3112 {0}, 3113 {0}, 3114 {0}, 3115 {0}, 3116 {0}, 3117 {0}, 3118 {0}, 3119 // with mod!=11: 3120 {"clflush", {M}}, 3121 }, 3122 /* 12 - GROUP_SPECIAL_0FC7_6 */ 3123 { 3124 {"rdrand", {Rv}}, 3125 {"rdrand", {Rv}}, 3126 {"rdrand", {Rv}}, 3127 {"rdrand", {Rv}}, 3128 {"rdrand", {Rv}}, 3129 {"rdrand", {Rv}}, 3130 {"rdrand", {Rv}}, 3131 {"rdrand", {Rv}}, 3132 // with mod!=11: 3133 {"vmptrld", {Mq}}, 3134 }, 3135 /* 13 - GROUP_SPECIAL_0FC7_7 */ 3136 { 3137 {"rdseed", {Rv}}, 3138 {"rdseed", {Rv}}, 3139 {"rdseed", {Rv}}, 3140 {"rdseed", {Rv}}, 3141 {"rdseed", {Rv}}, 3142 {"rdseed", {Rv}}, 3143 {"rdseed", {Rv}}, 3144 {"rdseed", {Rv}}, 3145 // with mod!=11: 3146 {"vmptrst", {Mq}}, 3147 }, 3148 }; 3149 3150 /* 3151 * The ModR/M byte is < 0xC0 3152 */ 3153 3154 x86opc_insn x86_modfloat_group_insns[8][8] = { 3155 /* prefix D8 */ 3156 { 3157 {"~fadd", {Ms}}, 3158 {"~fmul", {Ms}}, 3159 {"~fcom", {Ms}}, 3160 {"~fcomp", {Ms}}, 3161 {"~fsub", {Ms}}, 3162 {"~fsubr", {Ms}}, 3163 {"~fdiv", {Ms}}, 3164 {"~fdivr", {Ms}}, 3165 }, 3166 /* prefix D9 */ 3167 { 3168 {"~fld", {Ms}}, 3169 {0}, 3170 {"~fst", {Ms}}, 3171 {"~fstp", {Ms}}, 3172 {"fldenv", {M}}, 3173 {"fldcw", {Mw}}, 3174 {"fstenv", {M}}, 3175 {"fstcw", {Mw}}, 3176 }, 3177 /* prefix DA */ 3178 { 3179 {"~fiadd", {Md}}, 3180 {"~fimul", {Md}}, 3181 {"~ficom", {Md}}, 3182 {"~ficomp", {Md}}, 3183 {"~fisub", {Md}}, 3184 {"~fisubr", {Md}}, 3185 {"~fidiv", {Md}}, 3186 {"~fidivr", {Md}}, 3187 }, 3188 /* prefix DB */ 3189 { 3190 {"~fild", {Md}}, 3191 {"~fisttp", {Md}}, 3192 {"~fist", {Md}}, 3193 {"~fistp", {Md}}, 3194 {0}, 3195 {"~fld", {Mt}}, 3196 {0}, 3197 {"~fstp", {Mt}}, 3198 }, 3199 /* prefix DC */ 3200 { 3201 {"~fadd", {Ml}}, 3202 {"~fmul", {Ml}}, 3203 {"~fcom", {Ml}}, 3204 {"~fcomp", {Ml}}, 3205 {"~fsub", {Ml}}, 3206 {"~fsubr", {Ml}}, 3207 {"~fdiv", {Ml}}, 3208 {"~fdivr", {Ml}}, 3209 }, 3210 /* prefix DD */ 3211 { 3212 {"~fld", {Ml}}, 3213 {"~fisttp", {Mq}}, 3214 {"~fst", {Ml}}, 3215 {"~fstp", {Ml}}, 3216 {"~frstor", {M}}, 3217 {0}, 3218 {"fsave", {M}}, 3219 {"fstsw", {Mw}}, 3220 }, 3221 /* prefix DE */ 3222 { 3223 {"~fiadd", {Mw}}, 3224 {"~fimul", {Mw}}, 3225 {"~ficom", {Mw}}, 3226 {"~ficomp", {Mw}}, 3227 {"~fisub", {Mw}}, 3228 {"~fisubr", {Mw}}, 3229 {"~fidiv", {Mw}}, 3230 {"~fidivr", {Mw}}, 3231 }, 3232 /* prefix DF */ 3233 { 3234 {"~fild", {Mw}}, 3235 {"~fisttp", {Mw}}, 3236 {"~fist", {Mw}}, 3237 {"~fistp", {Mw}}, 3238 {"~fbld", {Ma}}, 3239 {"~fild", {Mq}}, 3240 {"~fbstp", {Ma}}, 3241 {"~fistp", {Mq}}, 3242 } 3243 3244 }; 3245 3246 x86opc_insn fgroup_12[8] = { 3247 {"fnop"}, 3248 {0}, 3249 {0}, 3250 {0}, 3251 {0}, 3252 {0}, 3253 {0}, 3254 {0}, 3255 }; 3256 3257 x86opc_insn fgroup_14[8] = { 3258 {"fchs"}, 3259 {"fabs"}, 3260 {0}, 3261 {0}, 3262 {"ftst"}, 3263 {"fxam"}, 3264 {0}, 3265 {0}, 3266 }; 3267 3268 x86opc_insn fgroup_15[8] = { 3269 {"fld1"}, 3270 {"fldl2t"}, 3271 {"fldl2e"}, 3272 {"fldpi"}, 3273 {"fldlg2"}, 3274 {"fldln2"}, 3275 {"fldz"}, 3276 {0}, 3277 }; 3278 3279 x86opc_insn fgroup_16[8] = { 3280 {"f2xm1"}, 3281 {"fyl2x"}, 3282 {"fptan"}, 3283 {"fpatan"}, 3284 {"fxtract"}, 3285 {"fprem1"}, 3286 {"fdecstp"}, 3287 {"fincstp"}, 3288 }; 3289 3290 x86opc_insn fgroup_17[8] = { 3291 {"fprem"}, 3292 {"fyl2xp1"}, 3293 {"fsqrt"}, 3294 {"fsincos"}, 3295 {"frndint"}, 3296 {"fscale"}, 3297 {"fsin"}, 3298 {"fcos"}, 3299 }; 3300 3301 x86opc_insn fgroup_25[8] = { 3302 {0}, 3303 {"fucompp"}, 3304 {0}, 3305 {0}, 3306 {0}, 3307 {0}, 3308 {0}, 3309 {0}, 3310 }; 3311 3312 x86opc_insn fgroup_34[8] = { 3313 {0}, 3314 {0}, 3315 {"fclex"}, 3316 {"finit"}, 3317 {0}, 3318 {0}, 3319 {0}, 3320 {0}, 3321 }; 3322 3323 x86opc_insn fgroup_63[8] = { 3324 {0}, 3325 {"fcompp"}, 3326 {0}, 3327 {0}, 3328 {0}, 3329 {0}, 3330 {0}, 3331 {0}, 3332 }; 3333 3334 x86opc_insn fgroup_74[8] = { 3335 {"fstsw", {X__axw}}, 3336 {0}, 3337 {0}, 3338 {0}, 3339 {0}, 3340 {0}, 3341 {0}, 3342 {0}, 3343 }; 3344 3345 /* 3346 * The ModR/M byte is >= 0xC0 3347 */ 3348 3349 x86opc_finsn x86_float_group_insns[8][8] = { 3350 /* prefix D8 */ 3351 { 3352 {0, {"fadd", {__st, Ft}}}, 3353 {0, {"fmul", {__st, Ft}}}, 3354 {0, {"fcom", {__st, Ft}}}, 3355 {0, {"fcomp", {__st, Ft}}}, 3356 {0, {"fsub", {__st, Ft}}}, 3357 {0, {"fsubr", {__st, Ft}}}, 3358 {0, {"fdiv", {__st, Ft}}}, 3359 {0, {"fdivr", {__st, Ft}}}, 3360 }, 3361 /* prefix D9 */ 3362 { 3363 {0, {"fld", {__st, Ft}}}, 3364 {0, {"fxch", {__st, Ft}}}, 3365 {(x86opc_insn *)&fgroup_12}, 3366 {0}, 3367 {(x86opc_insn *)&fgroup_14}, 3368 {(x86opc_insn *)&fgroup_15}, 3369 {(x86opc_insn *)&fgroup_16}, 3370 {(x86opc_insn *)&fgroup_17}, 3371 }, 3372 /* prefix DA */ 3373 { 3374 {0, {"fcmovb", {__st, Ft}}}, 3375 {0, {"fcmove", {__st, Ft}}}, 3376 {0, {"fcmovbe", {__st, Ft}}}, 3377 {0, {"fcmovu", {__st, Ft}}}, 3378 {0}, 3379 {(x86opc_insn *)&fgroup_25}, 3380 {0}, 3381 {0}, 3382 }, 3383 /* prefix DB */ 3384 { 3385 {0, {"fcmovnb", {__st, Ft}}}, 3386 {0, {"fcmovne", {__st, Ft}}}, 3387 {0, {"fcmovnbe", {__st, Ft}}}, 3388 {0, {"fcmovnu", {__st, Ft}}}, 3389 {(x86opc_insn*)&fgroup_34}, 3390 {0, {"fucomi", {__st, Ft}}}, 3391 {0, {"fcomi", {__st, Ft}}}, 3392 {0}, 3393 }, 3394 /* prefix DC */ 3395 { 3396 {0, {"fadd", {Ft, __st}}}, 3397 {0, {"fmul", {Ft, __st}}}, 3398 {0}, 3399 {0}, 3400 {0, {"fsubr", {Ft, __st}}}, 3401 {0, {"fsub", {Ft, __st}}}, 3402 {0, {"fdivr", {Ft, __st}}}, 3403 {0, {"fdiv", {Ft, __st}}}, 3404 }, 3405 /* prefix DD */ 3406 { 3407 {0, {"ffree", {Ft}}}, 3408 {0}, 3409 {0, {"fst", {Ft}}}, 3410 {0, {"fstp", {Ft}}}, 3411 {0, {"fucom", {Ft, __st}}}, 3412 {0, {"fucomp", {Ft}}}, 3413 {0}, 3414 {0}, 3415 }, 3416 /* prefix DE */ 3417 { 3418 {0, {"faddp", {Ft, __st}}}, 3419 {0, {"fmulp", {Ft, __st}}}, 3420 {0}, 3421 {(x86opc_insn*)&fgroup_63}, 3422 {0, {"fsubrp", {Ft, __st}}}, 3423 {0, {"fsubp", {Ft, __st}}}, 3424 {0, {"fdivrp", {Ft, __st}}}, 3425 {0, {"fdivp", {Ft, __st}}}, 3426 }, 3427 /* prefix DF */ 3428 { 3429 {0, {"ffreep", {Ft}}}, 3430 {0}, 3431 {0}, 3432 {0}, 3433 {(x86opc_insn*)&fgroup_74}, 3434 {0, {"fucomip", {__st, Ft}}}, 3435 {0, {"fcomip", {__st, Ft}}}, 3436 {0}, 3437 }, 3438 3439 }; 3440 3441 3442 /* 3443 * The vex format insns 3444 */ 3445 3446 #define E0(e) static x86opc_vex_insn v##e[] = { 3447 #define E(e) {0}}; static x86opc_vex_insn v##e[] = { 3448 #define Elast {0}}; 3449 E0(00) 3450 {"vpshufb", _128|_66|_0f38, {Vo, VVo, Wo}}, 3451 {"vpshufb", _256|_66|_0f38, {Yy, YVy, Xy}}, 3452 {"vpermq", _256|_66|_0f3a|W1, {Yy, Xy, Ib}}, 3453 E(01) 3454 {"pvhaddw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3455 {"vphaddw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3456 {"vpermpd", _256|_66|_0f3a|W1, {Yy, Xy, Ib}}, 3457 E(02) 3458 {"vphaddd", _128|_66|_0f38, {Vo, VVo, Wo}}, 3459 {"vphaddd", _256|_66|_0f38, {Yy, YVy, Xy}}, 3460 {"vpblendd", _128|_66|_0f3a|W0, {Vo, VVo, Wo, Ib}}, 3461 {"vpblendd", _256|_66|_0f3a|W0, {Yy, YVy, Xy, Ib}}, 3462 E(03) 3463 {"vphaddsw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3464 {"vphaddsw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3465 E(04) 3466 {"vpermilps", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3467 {"vpermilps", _256|_66|_0f3a, {Yy, Xy, Ib}}, 3468 {"vpmaddubsw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3469 {"vpmaddubsw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3470 E(05) 3471 {"vphsubw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3472 {"vphsubw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3473 {"vpermilpd", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3474 {"vpermilpd", _256|_66|_0f3a, {Yy, Xy, Ib}}, 3475 E(06) 3476 {"vphsubd", _128|_66|_0f38, {Vo, VVo, Wo}}, 3477 {"vphsubd", _256|_66|_0f38, {Yy, YVy, Xy}}, 3478 {"vperm2f128", _256|_66|_0f3a, {Yy, YVy, Xy, Ib}}, 3479 E(07) 3480 {"vphsubsw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3481 {"vphsubsw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3482 E(08) 3483 {"vpsignb", _128|_66|_0f38, {Vo, VVo, Wo}}, 3484 {"vpsignb", _256|_66|_0f38, {Yy, YVy, Xy}}, 3485 {"vroundps", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3486 {"vroundps", _256|_66|_0f3a, {Yy, Xy, Ib}}, 3487 E(09) 3488 {"vpsignw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3489 {"vpsignw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3490 {"vroundpd", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3491 {"vroundpd", _256|_66|_0f3a, {Yy, Xy, Ib}}, 3492 E(0a) 3493 {"vpsignd", _128|_66|_0f38, {Vo, VVo, Wo}}, 3494 {"vpsignd", _256|_66|_0f38, {Yy, YVy, Xy}}, 3495 {"vroundss", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3496 E(0b) 3497 {"vpmulhrsw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3498 {"vpmulhrsw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3499 {"vroundsd", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3500 E(0c) 3501 {"vblendps", _128|_66|_0f3a, {Vo, VVo, Wo, Ib}}, 3502 {"vblendps", _256|_66|_0f3a, {Yy, YVy, Xy, Ib}}, 3503 {"vpermilps", _128|_66|_0f38, {Vo, VVo, Wo}}, 3504 {"vpermilps", _256|_66|_0f38, {Yy, YVy, Xy}}, 3505 E(0d) 3506 {"vpermilpd", _128|_66|_0f38, {Vo, VVo, Wo}}, 3507 {"vpermilpd", _256|_66|_0f38, {Yy, YVy, Xy}}, 3508 {"vblendpd", _128|_66|_0f3a, {Vo, VVo, Wo, Ib}}, 3509 {"vblendpd", _256|_66|_0f3a, {Yy, YVy, Xy, Ib}}, 3510 E(0e) 3511 {"vpblendw", _128|_66|_0f3a, {Vo, VVo, Wo, Ib}}, 3512 {"vpblendw", _256|_66|_0f3a, {Yy, YVy, Xy, Ib}}, 3513 {"vptestps", _128|_66|_0f38, {Vo, Wo}}, 3514 {"vptestps", _256|_66|_0f38, {Yy, Xy}}, 3515 E(0f) 3516 {"vpalignr", _128|_66|_0f3a, {Vo, VVo, Wo, Ib}}, 3517 {"vpalignr", _256|_66|_0f3a, {Yy, YVy, Xy, Ib}}, 3518 {"vptestpd", _128|_66|_0f38, {Vo, Wo}}, 3519 {"vptestpd", _256|_66|_0f38, {Yy, Xy}}, 3520 E(10) 3521 //{"vmovss", _128|_f3|_0f, {Vo, VVo, VRo}}, 3522 {"vmovss", _128|_f3|_0f, {Vo, VVo, Wd}}, 3523 //{"vmovsd", _128|_f2|_0f, {Vo, VVo, VRo}}, 3524 {"vmovsd", _128|_f2|_0f, {Vo, VVo, Wq}}, 3525 {"vmovups", _128|_0f, {Vo, Wo}}, 3526 {"vmovups", _256|_0f, {Yy, Xy}}, 3527 {"vmovupd", _128|_66|_0f, {Vo, Wo}}, 3528 {"vmovupd", _256|_66|_0f, {Yy, Xy}}, 3529 E(11) 3530 //{"vmovss", _128|_f3|_0f, {VRo, VVo, Vo}}, 3531 {"vmovss", _128|_f3|_0f, {Wd, VVo, Vo}}, 3532 //{"vmovsd", _128|_f2|_0f, {VRo, VVo, Vo}}, 3533 {"vmovsd", _128|_f2|_0f, {Wq, VVo, Vo}}, 3534 {"vmovups", _128|_0f, {Wo, Vo}}, 3535 {"vmovups", _256|_0f, {Xy, Yy}}, 3536 {"vmovupd", _128|_66|_0f, {Wo, Vo}}, 3537 {"vmovupd", _256|_66|_0f, {Xy, Yy}}, 3538 E(12) 3539 {0, _128|_0f25|W0, {SPECIAL_TYPE_GROUP, GROUP_0F25_12}}, 3540 {0, _128|_0f25|W1, {SPECIAL_TYPE_GROUP, GROUP_0F25_12_W}}, 3541 {0, _256|_0f25|W0, {SPECIAL_TYPE_GROUP, GROUP_0F25_12_L}}, 3542 {0, _128|_0fA|W0, {SPECIAL_TYPE_GROUP, GROUP_0FA_12}}, 3543 {0, _128|_0fA|W1, {SPECIAL_TYPE_GROUP, GROUP_0FA_12_W}}, 3544 {0, _256|_0fA|W0, {SPECIAL_TYPE_GROUP, GROUP_0FA_12_L}}, 3545 {"vmovddup", _128|_f2|_0f, {Vo, Wq}}, 3546 {"vmovddup", _256|_f2|_0f, {Yy, Xy}}, 3547 {"vmovhlps", _128|_0f, {Vo, VVo, VRo}}, 3548 {"vmovlps", _128|_0f, {Vo, VVo, Mq}}, 3549 {"vmovlpd", _128|_66|_0f, {Vo, VVo, Mq}}, 3550 {"vmovsldup", _128|_f3|_0f, {Vo, Wo}}, 3551 {"vmovsldup", _256|_f3|_0f, {Yy, Xy}}, 3552 E(13) 3553 {"vmovlps", _128|_0f, {Mq, Vo}}, 3554 {"vmovlpd", _128|_66|_0f, {Mq, Vo}}, 3555 {"vcvtph2ps", _128|_0f, {Vo, Wq}}, 3556 {"vcvtph2ps", _256|_66|_0f38, {Yy, Wo}}, 3557 E(14) 3558 {"vpextrb", _128|_66|_0f3a, {MRbr, Vo, Ib}}, 3559 {"vunpcklps", _128|_0f, {Vo, VVo, Wo}}, 3560 {"vunpcklps", _256|_0f, {Yy, YVy, Xy}}, 3561 {"vunpcklpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3562 {"vunpcklpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3563 E(15) 3564 {"vpextrw", _128|_66|_0f3a, {MRwr, Vo, Ib}}, 3565 {"vunpckhps", _128|_0f, {Vo, VVo, Wo}}, 3566 {"vunpckhps", _256|_0f, {Yy, YVy, Xy}}, 3567 {"vunpckhpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3568 {"vunpckhpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3569 E(16) 3570 {"vpextrd", _128|_66|_0f3a|W0, {Ed, Vo, Ib}}, 3571 {"vpextrq", _128|_66|_0f3a|W1, {Eq, Vo, Ib}}, 3572 {"vmovhps", _128|_0f, {Vo, VVo, Mq}}, 3573 {"vmovhpd", _128|_66|_0f, {Vo, VVo, Mq}}, 3574 {"vmovlhps", _128|_0f, {Vo, VVo, VRo}}, 3575 {"vmovshdup", _128|_f3|_0f, {Vo, Wo}}, 3576 {"vmovshdup", _256|_f3|_0f, {Yy, Xy}}, 3577 {"vpermps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 3578 E(17) 3579 {"vmovhps", _128|_0f, {Mq, Vo}}, 3580 {"vmovhpd", _128|_66|_0f, {Mq, Vo}}, 3581 {"vextractps", _128|_66|_0f3a, {Ed, Vo, Ib}}, 3582 {"vextractps", _128|_66|_0f3a|W1, {Eq, Vo, Ib}}, 3583 {"vptest", _128|_66|_0f38, {Vo, Wo}}, 3584 {"vptest", _256|_66|_0f38, {Yy, Xy}}, 3585 E(18) 3586 {"vbroadcastss", _128|_66|_0f38, {Vo, Wd}}, 3587 {"vbroadcastss", _256|_66|_0f38, {Yy, Wd}}, 3588 {"vinsertf128", _256|_66|_0f3a, {Yy, YVy, Xy, Ib}}, 3589 E(19) 3590 {"vbroadcastsd", _128|_66|_0f38, {Vo, Wq}}, 3591 {"vbroadcastsd", _256|_66|_0f38, {Yy, Wq}}, 3592 {"vextractf128", _256|_66|_0f3a, {Xy, Yy, Ib}}, 3593 E(1a) 3594 {"vbroadcastf128", _256|_66|_0f38, {Yy, Mo}}, 3595 E(1c) 3596 {"vpabsb", _128|_66|_0f38, {Vo, Wo}}, 3597 {"vpabsb", _256|_66|_0f38, {Yy, Xy}}, 3598 E(1d) 3599 {"vpabsw", _128|_66|_0f38, {Vo, Wo}}, 3600 {"vpabsw", _256|_66|_0f38, {Yy, Xy}}, 3601 {"vcvtps2ph", _128|_66|_0f3a, {Wq, Vo, Ib}}, 3602 {"vcvtps2ph", _256|_66|_0f3a, {Wo, Yy, Ib}}, 3603 E(1e) 3604 {"vpabsd", _128|_66|_0f38, {Vo, Wo}}, 3605 {"vpabsd", _256|_66|_0f38, {Yy, Xy}}, 3606 E(20) 3607 {"vpinsrb", _128|_66|_0f3a, {Vo, VVo, MRbd, Ib}}, 3608 {"vpmovsxbw", _128|_66|_0f38, {Vo, Wq}}, 3609 {"vpmovsxbw", _256|_66|_0f38, {Yy, Wo}}, 3610 E(21) 3611 {"vinsertps", _128|_66|_0f3a, {Vo, VVo, Wd, Ib}}, 3612 {"vpmovsxbd", _128|_66|_0f38, {Vo, Wd}}, 3613 {"vpmovsxbd", _256|_66|_0f38, {Yy, Wq}}, 3614 E(22) 3615 {"vpinsrd", _128|_66|_0f3a|W0, {Vo, VVo, Ed, Ib}}, 3616 {"vpinsrq", _128|_66|_0f3a|W1, {Vo, VVo, Eq, Ib}}, 3617 {"vpmovsxbq", _128|_66|_0f38, {Vo, Ww}}, 3618 {"vpmovsxbq", _256|_66|_0f38, {Yy, Wd}}, 3619 E(23) 3620 {"vpmovsxwd", _128|_66|_0f38, {Vo, Wq}}, 3621 {"vpmovsxwd", _256|_66|_0f38, {Yy, Wo}}, 3622 E(24) 3623 {"vpmovsxwq", _128|_66|_0f38, {Vo, Wd}}, 3624 {"vpmovsxwq", _256|_66|_0f38, {Yy, Wq}}, 3625 E(25) 3626 {"vpmovsxdq", _128|_66|_0f38, {Vo, Wq}}, 3627 {"vpmovsxdq", _256|_66|_0f38, {Yy, Wo}}, 3628 E(28) 3629 {"vmovapd", _128|_66|_0f, {Vo, Wo}}, 3630 {"vmovapd", _256|_66|_0f, {Yy, Xy}}, 3631 {"vpmuldq", _128|_66|_0f38, {Vo, VVo, Wo}}, 3632 {"vpmuldq", _256|_66|_0f38, {Yy, YVy, Xy}}, 3633 E(29) 3634 {"vmovapd", _128|_66|_0f, {Wo, Vo}}, 3635 {"vmovapd", _256|_66|_0f, {Xy, Yy}}, 3636 {"vpcmpeqq", _128|_66|_0f38, {Vo, VVo, Wo}}, 3637 {"vpcmpeqq", _256|_66|_0f38, {Yy, YVy, Xy}}, 3638 E(2a) 3639 {"vmovntdqa", _128|_66|_0f38, {Vo, Mo}}, 3640 {"vmovntdqa", _256|_66|_0f38, {Yy, My}}, 3641 {"vcvtsi2ss", _128|_f3|_0f|W0, {Vo, VVo, Ed}}, 3642 {"vcvtsi2ss", _128|_f3|_0f|W1, {Vo, VVo, Eq}}, 3643 {"vcvtsi2sd", _128|_f2|_0f|W0, {Vo, VVo, Ed}}, 3644 {"vcvtsi2sd", _128|_f2|_0f|W1, {Vo, VVo, Eq}}, 3645 E(2b) 3646 {"vmovntps", _128|_0f, {Mo, Vo}}, 3647 {"vmovntps", _256|_0f, {My, Xy}}, 3648 {"vmovntpd", _128|_66|_0f, {Mo, Vo}}, 3649 {"vmovntpd", _256|_66|_0f, {My, Xy}}, 3650 {"vpackusdw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3651 {"vpackusdw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3652 E(2c) 3653 {"vmaskmovps", _128|_66|_0f38, {Vo, VVo, Mo}}, 3654 {"vmaskmovps", _256|_66|_0f38, {Yy, YVy, My}}, 3655 {"vcvttss2si", _128|_f3|_0f|W0, {Gd, Wd}}, 3656 {"vcvttss2si", _128|_f3|_0f|W1, {Gq, Wd}}, 3657 {"vcvttsd2si", _128|_f2|_0f|W0, {Gd, Wq}}, 3658 {"vcvttsd2si", _128|_f2|_0f|W1, {Gq, Wq}}, 3659 E(2d) 3660 {"vcvtsd2si", _128|_f2|_0f|W0, {Gd, Wq}}, 3661 {"vcvtsd2si", _128|_f2|_0f|W1, {Gq, Wq}}, 3662 {"vcvtss2si", _128|_f3|_0f|W0, {Gd, Wd}}, 3663 {"vcvtss2si", _128|_f3|_0f|W1, {Gq, Wd}}, 3664 {"vmaskmovpd", _128|_66|_0f38, {Vo, VVo, Mo}}, 3665 {"vmaskmovpd", _256|_66|_0f38, {Yy, YVy, My}}, 3666 E(2e) 3667 {"vucomiss", _128|_0f, {Vo, Wd}}, 3668 {"vucomisd", _128|_66|_0f, {Vo, Wq}}, 3669 {"vmaskmovps", _128|_66|_0f38, {Mo, VVo, Vo}}, 3670 {"vmaskmovps", _256|_66|_0f38, {My, YVy, Yy}}, 3671 E(2f) 3672 {"vmaskmovpd", _128|_66|_0f38, {Mo, VVo, Vo}}, 3673 {"vmaskmovpd", _256|_66|_0f38, {My, YVy, Yy}}, 3674 {"vcomiss", _128|_0f, {Vo, Wd}}, 3675 {"vcomisd", _128|_66|_0f, {Vo, Wq}}, 3676 E(30) 3677 {"vpmovzxbw", _128|_66|_0f38, {Vo, Wq}}, 3678 {"vpmovzxbw", _256|_66|_0f38, {Yy, Wo}}, 3679 E(31) 3680 {"vpmovzxbd", _128|_66|_0f38, {Vo, Wd}}, 3681 {"vpmovzxbd", _256|_66|_0f38, {Yy, Wq}}, 3682 E(32) 3683 {"vpmovzxbq", _128|_66|_0f38, {Vo, Ww}}, 3684 {"vpmovzxbq", _256|_66|_0f38, {Yy, Wd}}, 3685 E(33) 3686 {"vpmovzxwd", _128|_66|_0f38, {Vo, Wq}}, 3687 {"vpmovzxwd", _256|_66|_0f38, {Yy, Wo}}, 3688 E(34) 3689 {"vpmovzxwq", _128|_66|_0f38, {Vo, Wd}}, 3690 {"vpmovzxwq", _256|_66|_0f38, {Yy, Wq}}, 3691 E(35) 3692 {"vpmovzxdq", _128|_66|_0f38, {Vo, Wq}}, 3693 {"vpmovzxdq", _256|_66|_0f38, {Yy, Wo}}, 3694 E(36) 3695 {"vpermd", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 3696 E(37) 3697 {"vpcmpgtq", _128|_66|_0f38, {Vo, VVo, Wo}}, 3698 {"vpcmpgtq", _256|_66|_0f38, {Yy, YVy, Xy}}, 3699 E(38) 3700 {"vpminsb", _128|_66|_0f38, {Vo, VVo, Wo}}, 3701 {"vpminsb", _256|_66|_0f38, {Yy, YVy, Xy}}, 3702 {"vinserti128", _256|_66|_0f3a, {Yy, YVy, Wo, Ib}}, 3703 E(39) 3704 {"vpminsd", _128|_66|_0f38, {Vo, VVo, Wo}}, 3705 {"vpminsd", _256|_66|_0f38, {Yy, YVy, Xy}}, 3706 {"vextracti128", _256|_66|_0f3a, {Wo, Yy, Ib}}, 3707 E(3a) 3708 {"vpminuw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3709 {"vpminuw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3710 E(3b) 3711 {"vpminud", _128|_66|_0f38, {Vo, VVo, Wo}}, 3712 {"vpminud", _256|_66|_0f38, {Yy, YVy, Xy}}, 3713 E(3c) 3714 {"vpmaxsb", _128|_66|_0f38, {Vo, VVo, Wo}}, 3715 {"vpmaxsb", _256|_66|_0f38, {Yy, YVy, Xy}}, 3716 E(3d) 3717 {"vpmaxsd", _128|_66|_0f38, {Vo, VVo, Wo}}, 3718 {"vpmaxsd", _256|_66|_0f38, {Yy, YVy, Xy}}, 3719 E(3e) 3720 {"vpmaxuw", _128|_66|_0f38, {Vo, VVo, Wo}}, 3721 {"vpmaxuw", _256|_66|_0f38, {Yy, YVy, Xy}}, 3722 E(3f) 3723 {"vpmaxud", _128|_66|_0f38, {Vo, VVo, Wo}}, 3724 {"vpmaxud", _256|_66|_0f38, {Yy, YVy, Xy}}, 3725 E(40) 3726 {"vpmulld", _128|_66|_0f38, {Vo, VVo, Wo}}, 3727 {"vpmulld", _256|_66|_0f38, {Yy, YVy, Xy}}, 3728 {"vdpps", _128|_66|_0f3a, {Vo, VVo, Wo, Ib}}, 3729 {"vdpps", _256|_66|_0f3a, {Yy, YVy, Xy, Ib}}, 3730 E(41) 3731 {"vdppd", _128|_66|_0f3a, {Vo, VVo, Wo, Ib}}, 3732 {"vphminposuw", _128|_66|_0f38, {Vo, Wo}}, 3733 E(42) 3734 {"vmpsadbw", _128|_66|_0f3a, {Vo, VVo, Wo, Ib}}, 3735 {"vmpsadbw", _256|_66|_0f3a, {Yy, YVy, Xy, Ib}}, 3736 E(44) 3737 {"vpclmulqdq", _128|_66|_0f3a, {Vo, VVo, Wo, Ib}}, 3738 E(45) 3739 {"vpsrlvd", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 3740 {"vpsrlvd", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 3741 {"vpsrlvq", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 3742 {"vpsrlvq", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 3743 E(46) 3744 {"vpsravd", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 3745 {"vpsravd", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 3746 {"vperm2i128", _256|_66|_0f3a|W0, {Yy, YVy, Xy, Ib}}, 3747 E(47) 3748 {"vpsllvd", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 3749 {"vpsllvd", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 3750 {"vpsllvq", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 3751 {"vpsllvq", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 3752 E(48) 3753 {"vpermil2ps", _128|_66|_0f3a|W0, {Vo, VVo, Wo, VIo, I4}}, 3754 {"vpermil2ps", _128|_66|_0f3a|W1, {Vo, VVo, VIo, Wo, I4}}, 3755 {"vpermil2ps", _256|_66|_0f3a|W0, {Yy, YVy, Xy, YIy, I4}}, 3756 {"vpermil2ps", _256|_66|_0f3a|W1, {Yy, YVy, YIy, Xy, I4}}, 3757 E(49) 3758 {"vpermil2pd", _128|_66|_0f3a|W0, {Vo, VVo, Wo, VIo, I4}}, 3759 {"vpermil2pd", _128|_66|_0f3a|W1, {Vo, VVo, VIo, Wo, I4}}, 3760 {"vpermil2pd", _256|_66|_0f3a|W0, {Yy, YVy, Xy, YIy, I4}}, 3761 {"vpermil2pd", _256|_66|_0f3a|W1, {Yy, YVy, YIy, Xy, I4}}, 3762 E(4a) 3763 {"vblendvps", _128|_66|_0f3a, {Vo, VVo, Wo, VIo}}, 3764 {"vblendvps", _256|_66|_0f3a, {Yy, YVy, Xy, YIy}}, 3765 E(4b) 3766 {"vblendvpd", _128|_66|_0f3a, {Vo, VVo, Wo, VIo}}, 3767 {"vblendvpd", _256|_66|_0f3a, {Yy, YVy, Xy, YIy}}, 3768 E(4c) 3769 {"vpblendvb", _128|_66|_0f3a, {Vo, VVo, Wo, VIo}}, 3770 {"vpblendvb", _256|_66|_0f3a, {Yy, YVy, Xy, VIo}}, 3771 E(50) 3772 {"vmovmskps", _128|_0f, {Gd, VRo}}, 3773 {"vmovmskps", _256|_0f, {Gd, YRy}}, 3774 {"vmovmskpd", _128|_66|_0f, {Gd, VRo}}, 3775 {"vmovmskpd", _256|_66|_0f, {Gd, YRy}}, 3776 E(51) 3777 {"vsqrtps", _128|_0f, {Vo, Wo}}, 3778 {"vsqrtps", _256|_0f, {Yy, Xy}}, 3779 {"vsqrtpd", _128|_66|_0f, {Vo, Wo}}, 3780 {"vsqrtpd", _256|_66|_0f, {Yy, Xy}}, 3781 {"vsqrtss", _128|_f3|_0f, {Vo, Wo}}, 3782 {"vsqrtsd", _128|_f2|_0f, {Vo, Wo}}, 3783 E(52) 3784 {"vrsqrtps", _128|_0f, {Vo, Wo}}, 3785 {"vrsqrtss", _128|_f3|_0f, {Vo, Wo}}, 3786 E(53) 3787 {"vrcpps", _128|_0f, {Vo, Wo}}, 3788 {"vrcpss", _128|_f3|_0f, {Vo, Wo}}, 3789 E(54) 3790 {"vandps", _128|_0f, {Vo, VVo, Wo}}, 3791 {"vandps", _256|_0f, {Yy, YVy, Xy}}, 3792 {"vandpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3793 {"vandpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3794 E(55) 3795 {"vandnps", _128|_0f, {Vo, VVo, Wo}}, 3796 {"vandnps", _256|_0f, {Yy, YVy, Xy}}, 3797 {"vandnpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3798 {"vandnpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3799 E(56) 3800 {"vorps", _128|_0f, {Vo, VVo, Wo}}, 3801 {"vorps", _256|_0f, {Yy, YVy, Xy}}, 3802 {"vorpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3803 {"vorpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3804 E(57) 3805 {"vxorps", _128|_0f, {Vo, VVo, Wo}}, 3806 {"vxorps", _256|_0f, {Yy, YVy, Xy}}, 3807 {"vxorpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3808 {"vxorpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3809 E(58) 3810 {"vaddps", _128|_0f, {Vo, VVo, Wo}}, 3811 {"vaddps", _256|_0f, {Yy, YVy, Xy}}, 3812 {"vaddpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3813 {"vaddpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3814 {"vaddss", _128|_f2|_0f, {Vo, VVo, Wo}}, 3815 {"vaddsd", _128|_f3|_0f, {Vo, VVo, Wo}}, 3816 {"vpbroadcastd", _128|_66|_0f38|W0, {Vo, Wd}}, 3817 {"vpbroadcastd", _256|_66|_0f38|W0, {Yy, Wd}}, 3818 E(59) 3819 {"vmulss", _128|_0f, {Vo, VVo, Wo}}, 3820 {"vmulps", _256|_0f, {Yy, YVy, Xy}}, 3821 {"vmulpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3822 {"vmulpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3823 {"vmulss", _128|_f2|_0f, {Vo, VVo, Wo}}, 3824 {"vmulsd", _128|_f3|_0f, {Vo, VVo, Wo}}, 3825 {"vpbroadcastq", _128|_66|_0f38|W0, {Vo, Wq}}, 3826 {"vpbroadcastq", _256|_66|_0f38|W0, {Yy, Wq}}, 3827 E(5a) 3828 {"vcvtps2pd", _128|_0f, {Vo, Wo}}, 3829 {"vcvtps2pd", _256|_0f, {Yy, Xy}}, 3830 {"vcvtpd2ps", _128|_66|_0f, {Vo, Wo}}, 3831 {"vcvtpd2ps", _256|_66|_0f, {Yy, Xy}}, 3832 {"vcvtss2sd", _128|_f3|_0f, {Vo, VVo, Wd}}, 3833 {"vcvtsd2ss", _128|_f2|_0f, {Vo, VVo, Wq}}, 3834 {"vbroadcasti128", _256|_66|_0f38, {Yy, Mo}}, 3835 E(5b) 3836 {"vcvtdq2ps", _128|_0f, {Vo, Wo}}, 3837 {"vcvtdq2ps", _256|_0f, {Yy, Xy}}, 3838 {"vcvtps2dq", _128|_66|_0f, {Vo, Wo}}, 3839 {"vcvtps2dq", _256|_66|_0f, {Yy, Xy}}, 3840 {"vcvttps2dq", _128|_f3|_0f, {Vo, Wo}}, 3841 {"vcvttps2dq", _256|_f3|_0f, {Yy, Xy}}, 3842 E(5c) 3843 {"vsubps", _128|_0f, {Vo, VVo, Wo}}, 3844 {"vsubps", _256|_0f, {Yy, YVy, Xy}}, 3845 {"vsubpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3846 {"vsubpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3847 {"vsubss", _128|_f2|_0f, {Vo, VVo, Wo}}, 3848 {"vsubsd", _128|_f3|_0f, {Vo, VVo, Wo}}, 3849 {"vfmaddsubps", _128|_66|_0f3a|W0, {Vo, VIo, Wo, VVo}}, 3850 {"vfmaddsubps", _128|_66|_0f3a|W1, {Vo, VIo, VVo, Wo}}, 3851 {"vfmaddsubps", _256|_66|_0f3a|W0, {Yy, YIy, Xy, YVy}}, 3852 {"vfmaddsubps", _256|_66|_0f3a|W1, {Yy, YIy, YVy, Xy}}, 3853 E(5d) 3854 {"vminps", _128|_0f, {Vo, VVo, Wo}}, 3855 {"vminps", _256|_0f, {Yy, YVy, Xy}}, 3856 {"vminpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3857 {"vminpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3858 {"vminss", _128|_f2|_0f, {Vo, VVo, Wo}}, 3859 {"vminsd", _128|_f3|_0f, {Vo, VVo, Wo}}, 3860 {"vfmaddsubpd", _128|_66|_0f3a|W0, {Vo, VIo, Wo, VVo}}, 3861 {"vfmaddsubpd", _128|_66|_0f3a|W1, {Vo, VIo, VVo, Wo}}, 3862 {"vfmaddsubpd", _256|_66|_0f3a|W0, {Yy, YIy, Xy, YVy}}, 3863 {"vfmaddsubpd", _256|_66|_0f3a|W1, {Yy, YIy, YVy, Xy}}, 3864 E(5e) 3865 {"vdivps", _128|_0f, {Vo, VVo, Wo}}, 3866 {"vdivps", _256|_0f, {Yy, YVy, Xy}}, 3867 {"vdivpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3868 {"vdivpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3869 {"vdivss", _128|_f2|_0f, {Vo, VVo, Wo}}, 3870 {"vdivsd", _128|_f3|_0f, {Vo, VVo, Wo}}, 3871 {"vfmsubaddps", _128|_66|_0f3a|W0, {Vo, VIo, Wo, VVo}}, 3872 {"vfmsubaddps", _128|_66|_0f3a|W1, {Vo, VIo, VVo, Wo}}, 3873 {"vfmsubaddps", _256|_66|_0f3a|W0, {Yy, YIy, Xy, YVy}}, 3874 {"vfmsubaddps", _256|_66|_0f3a|W1, {Yy, YIy, YVy, Xy}}, 3875 E(5f) 3876 {"vmaxps", _128|_0f, {Vo, VVo, Wo}}, 3877 {"vmaxps", _256|_0f, {Yy, YVy, Xy}}, 3878 {"vmaxpd", _128|_66|_0f, {Vo, VVo, Wo}}, 3879 {"vmaxpd", _256|_66|_0f, {Yy, YVy, Xy}}, 3880 {"vmaxss", _128|_f2|_0f, {Vo, VVo, Wo}}, 3881 {"vmaxsd", _128|_f3|_0f, {Vo, VVo, Wo}}, 3882 {"vfmsubaddpd", _128|_66|_0f3a|W0, {Vo, VIo, Wo, VVo}}, 3883 {"vfmsubaddpd", _128|_66|_0f3a|W1, {Vo, VIo, VVo, Wo}}, 3884 {"vfmsubaddpd", _256|_66|_0f3a|W0, {Yy, YIy, Xy, YVy}}, 3885 {"vfmsubaddpd", _256|_66|_0f3a|W1, {Yy, YIy, YVy, Xy}}, 3886 E(60) 3887 {"vpcmpestrm", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3888 {"vpunpcklbw", _128|_66|_0f, {Vo, VVo, Wo}}, 3889 {"vpunpcklbw", _256|_66|_0f, {Yy, YVy, Xy}}, 3890 E(61) 3891 {"vpcmpestri", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3892 {"vpunpcklwd", _128|_66|_0f, {Vo, VVo, Wo}}, 3893 {"vpunpcklwd", _256|_66|_0f, {Yy, YVy, Xy}}, 3894 E(62) 3895 {"vpcmpistrm", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3896 {"vpunpckldq", _128|_66|_0f, {Vo, VVo, Wo}}, 3897 {"vpunpckldq", _256|_66|_0f, {Yy, YVy, Xy}}, 3898 E(63) 3899 {"vpcmpistri", _128|_66|_0f3a, {Vo, Wo, Ib}}, 3900 {"vpacksswb", _128|_66|_0f, {Vo, VVo, Wo}}, 3901 {"vpacksswb", _256|_66|_0f, {Yy, YVy, Xy}}, 3902 E(64) 3903 {"vpcmpgtb", _128|_66|_0f, {Vo, VVo, Wo}}, 3904 {"vpcmpgtb", _256|_66|_0f, {Yy, YVy, Xy}}, 3905 E(65) 3906 {"vpcmpgtw", _128|_66|_0f, {Vo, VVo, Wo}}, 3907 {"vpcmpgtw", _256|_66|_0f, {Yy, YVy, Xy}}, 3908 E(66) 3909 {"vpcmpgtd", _128|_66|_0f, {Vo, VVo, Wo}}, 3910 {"vpcmpgtd", _256|_66|_0f, {Yy, YVy, Xy}}, 3911 E(67) 3912 {"vpackuswb", _128|_66|_0f, {Vo, VVo, Wo}}, 3913 {"vpackuswb", _256|_66|_0f, {Yy, YVy, Xy}}, 3914 E(68) 3915 {"vpunpckhbw", _128|_66|_0f, {Vo, VVo, Wo}}, 3916 {"vpunpckhbw", _256|_66|_0f, {Yy, YVy, Xy}}, 3917 {"vfmaddps", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 3918 {"vfmaddps", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 3919 {"vfmaddps", _256|_66|_0f3a|W0, {Yy, YIy, YVy, Xy}}, 3920 {"vfmaddps", _256|_66|_0f3a|W1, {Yy, YIy, Xy, YVy}}, 3921 E(69) 3922 {"vpunpckhwd", _128|_66|_0f, {Vo, VVo, Wo}}, 3923 {"vpunpckhwd", _256|_66|_0f, {Yy, YVy, Xy}}, 3924 {"vfmaddpd", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 3925 {"vfmaddpd", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 3926 {"vfmaddpd", _256|_66|_0f3a|W0, {Yy, YIy, YVy, Xy}}, 3927 {"vfmaddpd", _256|_66|_0f3a|W1, {Yy, YIy, Xy, YVy}}, 3928 E(6a) 3929 {"vpunpckhdq", _128|_66|_0f, {Vo, VVo, Wo}}, 3930 {"vpunpckhdq", _256|_66|_0f, {Yy, YVy, Xy}}, 3931 {"vfmaddss", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 3932 {"vfmaddss", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 3933 E(6b) 3934 {"vpackssdw", _128|_66|_0f, {Vo, VVo, Wo}}, 3935 {"vpackssdw", _256|_66|_0f, {Yy, YVy, Xy}}, 3936 {"vfmaddsd", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 3937 {"vfmaddsd", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 3938 E(6c) 3939 {"vpunpcklqdq", _128|_66|_0f, {Vo, VVo, Wo}}, 3940 {"vpunpcklqdq", _256|_66|_0f, {Yy, YVy, Xy}}, 3941 {"vfmsubps", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 3942 {"vfmsubps", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 3943 {"vfmsubps", _256|_66|_0f3a|W0, {Yy, YIy, YVy, Xy}}, 3944 {"vfmsubps", _256|_66|_0f3a|W1, {Yy, YIy, Xy, YVy}}, 3945 E(6d) 3946 {"vpunpckhqdq", _128|_66|_0f, {Vo, VVo, Wo}}, 3947 {"vpunpckhqdq", _256|_66|_0f, {Yy, YVy, Xy}}, 3948 {"vfmsubpd", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 3949 {"vfmsubpd", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 3950 {"vfmsubpd", _256|_66|_0f3a|W0, {Yy, YIy, YVy, Xy}}, 3951 {"vfmsubpd", _256|_66|_0f3a|W1, {Yy, YIy, Xy, YVy}}, 3952 E(6e) 3953 {"vmovd", _128|_66|_0f|W0, {Vo, Ed}}, 3954 {"vmovq", _128|_66|_0f|W1, {Vo, Eq}}, 3955 {"vfmsubss", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 3956 {"vfmsubss", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 3957 E(6f) 3958 {"vmovdqa", _128|_66|_0f, {Vo, Wo}}, 3959 {"vmovdqa", _256|_66|_0f, {Yy, Xy}}, 3960 {"vmovdqu", _128|_f3|_0f, {Vo, Wo}}, 3961 {"vmovdqu", _256|_f3|_0f, {Yy, Xy}}, 3962 {"vfmsubsd", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 3963 {"vfmsubsd", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 3964 E(70) 3965 {"vpshufd", _128|_66|_0f, {Vo, Wo, Ib}}, 3966 {"vpshufd", _256|_66|_0f, {Yy, Xy, Ib}}, 3967 {"vpshufhw", _128|_f3|_0f, {Vo, Wo, Ib}}, 3968 {"vpshufhw", _256|_f3|_0f, {Yy, Xy, Ib}}, 3969 {"vpshuflw", _128|_f2|_0f, {Vo, Wo, Ib}}, 3970 {"vpshuflw", _256|_f2|_0f, {Yy, Xy, Ib}}, 3971 E(71) 3972 {0, _128|_66|_0f, {SPECIAL_TYPE_GROUP, GROUP_660F71}}, 3973 E(72) 3974 {0, _128|_66|_0f, {SPECIAL_TYPE_GROUP, GROUP_660F72}}, 3975 E(73) 3976 {0, _128|_66|_0f, {SPECIAL_TYPE_GROUP, GROUP_660F73}}, 3977 E(74) 3978 {"vpcmpeqb", _128|_66|_0f, {Vo, VVo, Wo}}, 3979 {"vpcmpeqb", _256|_66|_0f, {Yy, YVy, Xy}}, 3980 E(75) 3981 {"vpcmpeqw", _128|_66|_0f, {Vo, VVo, Wo}}, 3982 {"vpcmpeqw", _256|_66|_0f, {Yy, YVy, Xy}}, 3983 E(76) 3984 {"vpcmpeqd", _128|_66|_0f, {Vo, VVo, Wo}}, 3985 {"vpcmpeqd", _256|_66|_0f, {Yy, YVy, Xy}}, 3986 E(77) 3987 {"vzeroupper", _128|_0f}, 3988 {"vzeroall", _256|_0f}, 3989 E(78) 3990 {"vpbroadcastb", _128|_66|_0f38|W0, {Vo, Wb}}, 3991 {"vpbroadcastb", _256|_66|_0f38|W0, {Yy, Wb}}, 3992 {"vfnmaddps", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 3993 {"vfnmaddps", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 3994 {"vfnmaddps", _256|_66|_0f3a|W0, {Yy, YIy, YVy, Xy}}, 3995 {"vfnmaddps", _256|_66|_0f3a|W1, {Yy, YIy, Xy, YVy}}, 3996 E(79) 3997 {"vpbroadcastw", _128|_66|_0f38|W0, {Vo, Ww}}, 3998 {"vpbroadcastw", _256|_66|_0f38|W0, {Yy, Ww}}, 3999 {"vfnmaddpd", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 4000 {"vfnmaddpd", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 4001 {"vfnmaddpd", _256|_66|_0f3a|W0, {Yy, YIy, YVy, Xy}}, 4002 {"vfnmaddpd", _256|_66|_0f3a|W1, {Yy, YIy, Xy, YVy}}, 4003 E(7a) 4004 {"vfnmaddss", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 4005 {"vfnmaddss", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 4006 E(7b) 4007 {"vfnmaddsd", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 4008 {"vfnmaddsd", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 4009 E(7c) 4010 {"vhaddpd", _128|_66|_0f, {Vo, VVo, Wo}}, 4011 {"vhaddpd", _256|_66|_0f, {Yy, YVy, Xy}}, 4012 {"vhaddss", _128|_f2|_0f, {Vo, VVo, Wo}}, 4013 {"vhaddss", _256|_f2|_0f, {Yy, YVy, Xy}}, 4014 {"vfnmsubps", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 4015 {"vfnmsubps", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 4016 {"vfnmsubps", _256|_66|_0f3a|W0, {Yy, YIy, YVy, Xy}}, 4017 {"vfnmsubps", _256|_66|_0f3a|W1, {Yy, YIy, Xy, YVy}}, 4018 E(7d) 4019 {"vhsubpd", _128|_66|_0f, {Vo, VVo, Wo}}, 4020 {"vhsubpd", _256|_66|_0f, {Yy, YVy, Xy}}, 4021 {"vhsubss", _128|_f2|_0f, {Vo, VVo, Wo}}, 4022 {"vhsubss", _256|_f2|_0f, {Yy, YVy, Xy}}, 4023 {"vfnmsubpd", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 4024 {"vfnmsubpd", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 4025 {"vfnmsubpd", _256|_66|_0f3a|W0, {Yy, YIy, YVy, Xy}}, 4026 {"vfnmsubpd", _256|_66|_0f3a|W1, {Yy, YIy, Xy, YVy}}, 4027 E(7e) 4028 {"vmovd", _128|_66|_0f|W0, {Ed, Vo}}, 4029 {"vmovq", _128|_66|_0f|W1, {Eq, Vo}}, 4030 {"vmovq", _128|_f3|_0f, {Vo, Wq}}, 4031 {"vfnmsubss", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 4032 {"vfnmsubss", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 4033 E(7f) 4034 {"vmovdqa", _128|_66|_0f, {Wo, Vo}}, 4035 {"vmovdqa", _256|_66|_0f, {Xy, Yy}}, 4036 {"vmovdqu", _128|_f3|_0f, {Wo, Vo}}, 4037 {"vmovdqu", _256|_f3|_0f, {Xy, Yy}}, 4038 {"vfnmsubsd", _128|_66|_0f3a|W0, {Vo, VIo, VVo, Wo}}, 4039 {"vfnmsubsd", _128|_66|_0f3a|W1, {Vo, VIo, Wo, VVo}}, 4040 E(80) 4041 {"vfrczpd", _128|_0f25, {Vo, Wo}}, 4042 {"vfrczpd", _256|_0f25, {Yy, Xy}}, 4043 E(81) 4044 {"vfrczps", _128|_0f25, {Vo, Wo}}, 4045 {"vfrczps", _256|_0f25, {Yy, Xy}}, 4046 E(82) 4047 {"vfrczsd", _128|_0f25, {Vo, Wo}}, 4048 {"vfrczsd", _256|_0f25, {Yy, Xy}}, 4049 E(83) 4050 {"vfrczss", _128|_0f25, {Vo, Wo}}, 4051 {"vfrczss", _256|_0f25, {Yy, Xy}}, 4052 E(85) 4053 {"vpmacssww", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4054 E(86) 4055 {"vpmacsswd", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4056 E(87) 4057 {"vpmacssdql", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4058 E(8c) 4059 {"vpmaskmovd", _128|_66|_0f38|W0, {Vo, VVo, Mo}}, 4060 {"vpmaskmovd", _256|_66|_0f38|W0, {Yy, YVy, My}}, 4061 {"vpmaskmovq", _128|_66|_0f38|W1, {Vo, VVo, Mo}}, 4062 {"vpmaskmovq", _256|_66|_0f38|W1, {Yy, YVy, My}}, 4063 E(8e) 4064 {"vpmacssdd", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4065 {"vpmaskmovd", _128|_66|_0f38|W0, {Mo, VVo, Vo}}, 4066 {"vpmaskmovd", _256|_66|_0f38|W0, {My, YVy, Yy}}, 4067 {"vpmaskmovq", _128|_66|_0f38|W1, {Mo, VVo, Vo}}, 4068 {"vpmaskmovq", _256|_66|_0f38|W1, {My, YVy, Yy}}, 4069 E(8f) 4070 {"vpmacssdqh", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4071 E(90) 4072 {"vprotb", _128|_0f25|W0, {Vo, Wo, VVo}}, 4073 {"vprotb", _128|_0f25|W1, {Vo, VVo, Wo}}, 4074 {"vpgatherdd", _128|_66|_0f38|W0, {Vo, Wd, VVo}}, 4075 {"vpgatherdd", _256|_66|_0f38|W0, {Yy, Xd, YVy}}, 4076 {"vpgatherdq", _128|_66|_0f38|W1, {Vo, Wd, VVo}}, 4077 {"vpgatherdq", _256|_66|_0f38|W1, {Yy, Xd, YVy}}, 4078 E(91) 4079 {"vprotw", _128|_0f25|W0, {Vo, Wo, VVo}}, 4080 {"vprotw", _128|_0f25|W1, {Vo, VVo, Wo}}, 4081 {"vpgatherqd", _128|_66|_0f38|W0, {Vo, Wq, VVo}}, 4082 {"vpgatherqd", _256|_66|_0f38|W0, {Yy, Xq, YVy}}, 4083 {"vpgatherqq", _128|_66|_0f38|W1, {Vo, Wq, VVo}}, 4084 {"vpgatherqq", _256|_66|_0f38|W1, {Yy, Xq, YVy}}, 4085 E(92) 4086 {"vprotd", _128|_0f25|W0, {Vo, Wo, VVo}}, 4087 {"vprotd", _128|_0f25|W1, {Vo, VVo, Wo}}, 4088 {"vgatherdps", _128|_66|_0f38|W0, {Vo, Wd, VVo}}, 4089 {"vgatherdps", _256|_66|_0f38|W0, {Yy, Xd, YVy}}, 4090 {"vgatherdpd", _128|_66|_0f38|W1, {Vo, Wd, VVo}}, 4091 {"vgatherdpd", _256|_66|_0f38|W1, {Yy, Xd, YVy}}, 4092 E(93) 4093 {"vprotq", _128|_0f25|W0, {Vo, Wo, VVo}}, 4094 {"vprotq", _128|_0f25|W1, {Vo, VVo, Wo}}, 4095 {"vgatherqps", _128|_66|_0f38|W0, {Vo, Wq, VVo}}, 4096 {"vgatherqps", _256|_66|_0f38|W0, {Yy, Xq, YVy}}, 4097 {"vgatherqpd", _128|_66|_0f38|W1, {Vo, Wq, VVo}}, 4098 {"vgatherqpd", _256|_66|_0f38|W1, {Yy, Xq, YVy}}, 4099 E(94) 4100 {"vpshlb", _128|_0f25|W0, {Vo, Wo, VVo}}, 4101 {"vpshlb", _128|_0f25|W1, {Vo, VVo, Wo}}, 4102 E(95) 4103 {"vpmacsww", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4104 {"vpshlw", _128|_0f25|W0, {Vo, Wo, VVo}}, 4105 {"vpshlw", _128|_0f25|W1, {Vo, VVo, Wo}}, 4106 E(96) 4107 {"vfmaddsub132ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4108 {"vfmaddsub132ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4109 {"vfmaddsub132pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4110 {"vfmaddsub132pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4111 {"vpmacswd", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4112 {"vpshld", _128|_0f25|W0, {Vo, Wo, VVo}}, 4113 {"vpshld", _128|_0f25|W1, {Vo, VVo, Wo}}, 4114 E(97) 4115 {"vfmaddsub132ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4116 {"vfmaddsub132sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4117 {"vpmacsdql", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4118 {"vpshlq", _128|_0f25|W0, {Vo, Wo, VVo}}, 4119 {"vpshlq", _128|_0f25|W1, {Vo, VVo, Wo}}, 4120 E(98) 4121 {"vfmadd132ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4122 {"vfmadd132ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4123 {"vfmadd132pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4124 {"vfmadd132pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4125 {"vpshab", _128|_0f25|W0, {Vo, Wo, VVo}}, 4126 {"vpshab", _128|_0f25|W1, {Vo, VVo, Wo}}, 4127 E(99) 4128 {"vfmadd132ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4129 {"vfmadd132sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4130 {"vpshaw", _128|_0f25|W0, {Vo, Wo, VVo}}, 4131 {"vpshaw", _128|_0f25|W1, {Vo, VVo, Wo}}, 4132 E(9a) 4133 {"vfmsub132ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4134 {"vfmsub132ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4135 {"vfmsub132pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4136 {"vfmsub132pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4137 {"vpshad", _128|_0f25|W0, {Vo, Wo, VVo}}, 4138 {"vpshad", _128|_0f25|W1, {Vo, VVo, Wo}}, 4139 E(9b) 4140 {"vfmsub132ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4141 {"vfmsub132sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4142 {"vpshaq", _128|_0f25|W0, {Vo, Wo, VVo}}, 4143 {"vpshaq", _128|_0f25|W1, {Vo, VVo, Wo}}, 4144 E(9c) 4145 {"vfnmadd132ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4146 {"vfnmadd132ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4147 {"vfnmadd132pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4148 {"vfnmadd132pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4149 E(9d) 4150 {"vfnmadd132ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4151 {"vfnmadd132sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4152 E(9e) 4153 {"vfnmsub132ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4154 {"vfnmsub132ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4155 {"vfnmsub132pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4156 {"vfnmsub132pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4157 {"vpmacsdd", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4158 E(9f) 4159 {"vfnmsub132ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4160 {"vfnmsub132sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4161 {"vpmacsdqh", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4162 E(a0) 4163 {"vcvtph2ps", _128|_0f24, {Vo, Wq, Ib}}, 4164 {"vcvtph2ps", _256|_0f24, {Yy, Xo, Ib}}, 4165 E(a1) 4166 {"vcvtps2ph", _128|_0f25, {Wq, Vo}}, 4167 {"vcvtps2ph", _256|_0f25, {Xo, Yy}}, 4168 E(a2) 4169 {"vpcmov", _128|_0f24|W0, {Vo, VVo, Wo, VIo}}, 4170 {"vpcmov", _256|_0f24|W0, {Yy, YVy, Xy, YIy}}, 4171 {"vpcmov", _128|_0f24|W1, {Vo, VVo, VIo, Wo}}, 4172 {"vpcmov", _256|_0f24|W1, {Yy, YVy, YIy, Xy}}, 4173 E(a3) 4174 {"vpperm", _128|_0f24|W0, {Vo, VVo, Wo, VIo}}, 4175 {"vpperm", _128|_0f24|W1, {Vo, VVo, VIo, Wo}}, 4176 E(a6) 4177 {"vfmaddsub213ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4178 {"vfmaddsub213ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4179 {"vfmaddsub213pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4180 {"vfmaddsub213pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4181 {"vpmadcsswd", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4182 E(a7) 4183 {"vfmaddsub213ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4184 {"vfmaddsub213sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4185 E(a8) 4186 {"vfmadd213ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4187 {"vfmadd213ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4188 {"vfmadd213pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4189 {"vfmadd213pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4190 E(a9) 4191 {"vfmadd213ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4192 {"vfmadd213sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4193 E(aa) 4194 {"vfmsub213ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4195 {"vfmsub213ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4196 {"vfmsub213pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4197 {"vfmsub213pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4198 E(ab) 4199 {"vfmsub213ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4200 {"vfmsub213sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4201 E(ac) 4202 {"vfnmadd213ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4203 {"vfnmadd213ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4204 {"vfnmadd213pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4205 {"vfnmadd213pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4206 E(ad) 4207 {"vfnmadd213ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4208 {"vfnmadd213sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4209 E(ae) 4210 {0, _0f, {SPECIAL_TYPE_GROUP, GROUP_0FAE}}, 4211 {"vfnmsub213ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4212 {"vfnmsub213ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4213 {"vfnmsub213pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4214 {"vfnmsub213pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4215 E(af) 4216 {"vfnmsub213ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4217 {"vfnmsub213sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4218 E(b6) 4219 {"vfmaddsub231ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4220 {"vfmaddsub231ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4221 {"vfmaddsub231pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4222 {"vfmaddsub231pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4223 {"vpmadcswd", _128|_0f24, {Vo, VVo, Wo, VIo}}, 4224 E(b7) 4225 {"vfmaddsub231ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4226 {"vfmaddsub231sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4227 E(b8) 4228 {"vfmadd231ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4229 {"vfmadd231ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4230 {"vfmadd231pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4231 {"vfmadd231pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4232 E(b9) 4233 {"vfmadd231ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4234 {"vfmadd231sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4235 E(ba) 4236 {"vfmsub231ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4237 {"vfmsub231ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4238 {"vfmsub231pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4239 {"vfmsub231pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4240 E(bb) 4241 {"vfmsub231ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4242 {"vfmsub231sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4243 E(bc) 4244 {"vfnmadd231ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4245 {"vfnmadd231ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4246 {"vfnmadd231pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4247 {"vfnmadd231pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4248 E(bd) 4249 {"vfnmadd231ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4250 {"vfnmadd231sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4251 E(be) 4252 {"vfnmsub231ps", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4253 {"vfnmsub231ps", _256|_66|_0f38|W0, {Yy, YVy, Xy}}, 4254 {"vfnmsub231pd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4255 {"vfnmsub231pd", _256|_66|_0f38|W1, {Yy, YVy, Xy}}, 4256 E(bf) 4257 {"vfnmsub231ss", _128|_66|_0f38|W0, {Vo, VVo, Wo}}, 4258 {"vfnmsub231sd", _128|_66|_0f38|W1, {Vo, VVo, Wo}}, 4259 E(c0) 4260 {"vprotb", _128|_0f24, {Vo, Wo, Ib}}, 4261 E(c1) 4262 {"vprotw", _128|_0f24, {Vo, Wo, Ib}}, 4263 {"vphaddbw", _128|_0f25, {Vo, Wo}}, 4264 E(c2) 4265 {"vcmpps", _128|_0f, {Vo, VVo, Wo, Ib}}, 4266 {"vcmpps", _256|_0f, {Yy, YVy, Xy, Ib}}, 4267 {"vcmppd", _128|_66|_0f, {Vo, VVo, Wo, Ib}}, 4268 {"vcmppd", _256|_66|_0f, {Yy, YVy, Xy, Ib}}, 4269 {"vcmpss", _128|_f2|_0f, {Vo, VVo, Wo, Ib}}, 4270 {"vcmpsd", _128|_f3|_0f, {Vo, VVo, Wo, Ib}}, 4271 {"vprotd", _128|_0f24, {Vo, Wo, Ib}}, 4272 {"vphaddbd", _128|_0f25, {Vo, Wo}}, 4273 E(c3) 4274 {"vprotq", _128|_0f24, {Vo, Wo, Ib}}, 4275 {"vphaddbd", _128|_0f25, {Vo, Wo}}, 4276 E(c4) 4277 {"pinsrw", _128|_66|_0f, {Vo, MRwr, Ib}}, 4278 E(c5) 4279 {"vpextrw", _128|_66|_0f, {Gr, VRo, Ib}}, 4280 E(c6) 4281 {"vshufps", _128|_0f, {Vo, VVo, Wo, Ib}}, 4282 {"vshufps", _256|_0f, {Yy, YVy, Xy, Ib}}, 4283 {"vshufpd", _128|_66|_0f, {Vo, VVo, Wo, Ib}}, 4284 {"vshufpd", _256|_66|_0f, {Yy, YVy, Xy, Ib}}, 4285 {"vphadddwd", _128|_0f25, {Vo, Wo}}, 4286 E(c7) 4287 {"vphadddwq", _128|_0f25, {Vo, Wo}}, 4288 E(cb) 4289 {"vphadddq", _128|_0f25, {Vo, Wo}}, 4290 E(cc) 4291 {"vpcomb", _128|_0f24, {Vo, VVo, Wo, Ib}}, 4292 E(cd) 4293 {"vpcomw", _128|_0f24, {Vo, VVo, Wo, Ib}}, 4294 E(ce) 4295 {"vpcomd", _128|_0f24, {Vo, VVo, Wo, Ib}}, 4296 E(cf) 4297 {"vpcomq", _128|_0f24, {Vo, VVo, Wo, Ib}}, 4298 E(d0) 4299 {"vaddsubpd", _128|_66|_0f, {Vo, VVo, Wo}}, 4300 {"vaddsubpd", _256|_66|_0f, {Yy, YVy, Xy}}, 4301 {"vaddsubss", _128|_f2|_0f, {Vo, VVo, Wo}}, 4302 {"vaddsubss", _256|_f2|_0f, {Yy, YVy, Xy}}, 4303 E(d1) 4304 {"vpsrlw", _128|_66|_0f, {Vo, VVo, Wo}}, 4305 {"vpsrlw", _256|_66|_0f, {Yy, YVy, Xy}}, 4306 {"vphaddubw", _128|_0f25, {Vo, Wo}}, 4307 E(d2) 4308 {"vpsrld", _128|_66|_0f, {Vo, VVo, Wo}}, 4309 {"vpsrld", _256|_66|_0f, {Yy, YVy, Xy}}, 4310 {"vphaddubd", _128|_0f25, {Vo, Wo}}, 4311 E(d3) 4312 {"vpsrlq", _128|_66|_0f, {Vo, VVo, Wo}}, 4313 {"vpsrlq", _256|_66|_0f, {Yy, YVy, Xy}}, 4314 {"vphaddubq", _128|_0f25, {Vo, Wo}}, 4315 E(d4) 4316 {"vpaddq", _128|_66|_0f, {Vo, VVo, Wo}}, 4317 {"vpaddq", _256|_66|_0f, {Yy, YVy, Xy}}, 4318 E(d5) 4319 {"vpmullw", _128|_66|_0f, {Vo, VVo, Wo}}, 4320 {"vpmullw", _256|_66|_0f, {Yy, YVy, Xy}}, 4321 E(d6) 4322 {"vmovq", _128|_66|_0f, {Wq, Vo}}, 4323 {"vphadduwd", _128|_0f25, {Vo, Wo}}, 4324 E(d7) 4325 {"vpmovmskb", _128|_66|_0f, {Gd, VRo}}, 4326 {"vpmovmskb", _256|_66|_0f, {Gq, YRy}}, 4327 {"vphadduwq", _128|_0f25, {Vo, Wo}}, 4328 {"vphaddwq", _128|_0f25, {Vo, Wo}}, // FIXME 4329 E(d8) 4330 {"vpsubusb", _128|_66|_0f, {Vo, VVo, Wo}}, 4331 {"vpsubusb", _256|_66|_0f, {Yy, YVy, Xy}}, 4332 E(d9) 4333 {"vpsubusw", _128|_66|_0f, {Vo, VVo, Wo}}, 4334 {"vpsubusw", _256|_66|_0f, {Yy, YVy, Xy}}, 4335 E(da) 4336 {"vpminub", _128|_66|_0f, {Vo, VVo, Wo}}, 4337 {"vpminub", _256|_66|_0f, {Yy, YVy, Xy}}, 4338 E(db) 4339 {"vpand", _128|_66|_0f, {Vo, VVo, Wo}}, 4340 {"vpand", _256|_66|_0f, {Yy, YVy, Xy}}, 4341 {"vaesimc", _128|_66|_0f38, {Vo, Wo}}, 4342 {"vphaddudq", _128|_0f25, {Vo, Wo}}, 4343 E(dc) 4344 {"vpaddusb", _128|_66|_0f, {Vo, VVo, Wo}}, 4345 {"vpaddusb", _256|_66|_0f, {Yy, YVy, Xy}}, 4346 {"vaesenc", _128|_66|_0f38, {Vo, VVo, Wo}}, 4347 E(dd) 4348 {"vpaddusw", _128|_66|_0f, {Vo, VVo, Wo}}, 4349 {"vpaddusw", _256|_66|_0f, {Yy, YVy, Xy}}, 4350 {"vaesenclast", _128|_66|_0f38, {Vo, VVo, Wo}}, 4351 E(de) 4352 {"vpmaxub", _128|_66|_0f, {Vo, VVo, Wo}}, 4353 {"vpmaxub", _256|_66|_0f, {Yy, YVy, Xy}}, 4354 {"vaesdec", _128|_66|_0f38, {Vo, VVo, Wo}}, 4355 E(df) 4356 {"vpandn", _128|_66|_0f, {Vo, VVo, Wo}}, 4357 {"vpandn", _256|_66|_0f, {Yy, YVy, Xy}}, 4358 {"vaesdeclast", _128|_66|_0f38, {Vo, VVo, Wo}}, 4359 {"vaeskeygenassist", _128|_66|_0f3a, {Vo, Wo, Ib}}, 4360 E(e0) 4361 {"vpavgb", _128|_66|_0f, {Vo, VVo, Wo}}, 4362 {"vpavgb", _256|_66|_0f, {Yy, YVy, Xy}}, 4363 E(e1) 4364 {"vpsraw", _128|_66|_0f, {Vo, VVo, Wo}}, 4365 {"vphsubbw", _128|_0f25, {Vo, Wo}}, 4366 E(e2) 4367 {"vpsrad", _128|_66|_0f, {Vo, VVo, Wo}}, 4368 {"vphsubwd", _128|_0f25, {Vo, Wo}}, 4369 E(e3) 4370 {"vpavgw", _128|_66|_0f, {Vo, VVo, Wo}}, 4371 {"vpavgw", _256|_66|_0f, {Yy, YVy, Xy}}, 4372 {"vphsubdq", _128|_0f25, {Vo, Wo}}, 4373 E(e4) 4374 {"vpmulhuw", _128|_66|_0f, {Vo, VVo, Wo}}, 4375 {"vpmulhuw", _256|_66|_0f, {Yy, YVy, Xy}}, 4376 E(e5) 4377 {"vpmulhw", _128|_66|_0f, {Vo, VVo, Wo}}, 4378 {"vpmulhw", _256|_66|_0f, {Yy, YVy, Xy}}, 4379 E(e6) 4380 {"vcvtdq2pd", _128|_f3|_0f, {Vo, Wo}}, 4381 {"vcvtdq2pd", _256|_f3|_0f, {Yy, Xy}}, 4382 {"vcvtpd2dq", _128|_f2|_0f, {Vo, Wo}}, 4383 {"vcvtpd2dq", _256|_f2|_0f, {Yy, Xy}}, 4384 {"vcvttpd2dq", _128|_66|_0f, {Vo, Wo}}, 4385 {"vcvttpd2dq", _256|_66|_0f, {Yy, Xy}}, 4386 E(e7) 4387 {"vmovntdq", _128|_66|_0f, {Mo, Vo}}, 4388 {"vmovntdq", _256|_66|_0f, {My, Yy}}, 4389 E(e8) 4390 {"vpsubsb", _128|_66|_0f, {Vo, VVo, Wo}}, 4391 {"vpsubsb", _256|_66|_0f, {Yy, YVy, Xy}}, 4392 E(e9) 4393 {"vpsubsw", _128|_66|_0f, {Vo, VVo, Wo}}, 4394 {"vpsubsw", _256|_66|_0f, {Yy, YVy, Xy}}, 4395 E(ea) 4396 {"vpminsw", _128|_66|_0f, {Vo, VVo, Wo}}, 4397 {"vpminsw", _256|_66|_0f, {Yy, YVy, Xy}}, 4398 E(eb) 4399 {"vpor", _128|_66|_0f, {Vo, VVo, Wo}}, 4400 {"vpor", _256|_66|_0f, {Yy, YVy, Xy}}, 4401 E(ec) 4402 {"vpaddsb", _128|_66|_0f, {Vo, VVo, Wo}}, 4403 {"vpaddsb", _256|_66|_0f, {Yy, YVy, Xy}}, 4404 {"vpcomub", _128|_0f24, {Vo, VVo, Wo, Ib}}, 4405 E(ed) 4406 {"vpaddsw", _128|_66|_0f, {Vo, VVo, Wo}}, 4407 {"vpaddsw", _256|_66|_0f, {Yy, YVy, Xy}}, 4408 {"vpcomuw", _128|_0f24, {Vo, VVo, Wo, Ib}}, 4409 E(ee) 4410 {"vpmaxsw", _128|_66|_0f, {Vo, VVo, Wo}}, 4411 {"vpmaxsw", _256|_66|_0f, {Yy, YVy, Xy}}, 4412 {"vpcomud", _128|_0f24, {Vo, VVo, Wo, Ib}}, 4413 E(ef) 4414 {"vpxor", _128|_66|_0f, {Vo, VVo, Wo}}, 4415 {"vpxor", _256|_66|_0f, {Yy, YVy, Xy}}, 4416 {"vpcomuq", _128|_0f24, {Vo, VVo, Wo, Ib}}, 4417 E(f0) 4418 {"vlddqu", _128|_f2|_0f, {Vo, Mo}}, 4419 {"vlddqu", _256|_f2|_0f, {Yy, My}}, 4420 {"rorx", _128|_f2|_0f3a|W0, {Gd, Ed, Ib}}, 4421 {"rorx", _128|_f2|_0f3a|W1, {Gq, Eq, Ib}}, 4422 E(f1) 4423 {"vpsllw", _128|_66|_0f, {Vo, VVo, Wo}}, 4424 E(f2) 4425 {"vpslld", _128|_66|_0f, {Vo, VVo, Wo}}, 4426 {"andn", _128|_0f38|W0, {Gd, RVd, Ed}}, 4427 {"andn", _128|_0f38|W1, {Gq, RVq, Eq}}, 4428 E(f3) 4429 {0, _128|_0f38|W0, {SPECIAL_TYPE_GROUP, GROUP_0F38_F3}}, 4430 {0, _128|_0f38|W1, {SPECIAL_TYPE_GROUP, GROUP_0F38_F3_W}}, 4431 {"vpsllq", _128|_66|_0f, {Vo, VVo, Wo}}, 4432 E(f4) 4433 {"vpmuludq", _128|_66|_0f, {Vo, VVo, Wo}}, 4434 {"vpmuludq", _256|_66|_0f, {Yy, YVy, Xy}}, 4435 E(f5) 4436 {"vpmaddwd", _128|_66|_0f, {Vo, VVo, Wo}}, 4437 {"vpmaddwd", _256|_66|_0f, {Yy, YVy, Xy}}, 4438 {"bzhi", _128|_0f38|W0, {Gd, RVd, Ed}}, 4439 {"bzhi", _128|_0f38|W1, {Gq, RVq, Eq}}, 4440 {"pdep", _128|_f2|_0f38|W0, {Gd, RVd, Ed}}, 4441 {"pdep", _128|_f2|_0f38|W1, {Gq, RVq, Eq}}, 4442 {"pext", _128|_f3|_0f38|W0, {Gd, RVd, Ed}}, 4443 {"pext", _128|_f3|_0f38|W1, {Gq, RVq, Eq}}, 4444 E(f6) 4445 {"vpsadbw", _128|_66|_0f, {Vo, VVo, Wo}}, 4446 {"vpsadbw", _256|_66|_0f, {Yy, YVy, Xy}}, 4447 {"mulx", _128|_f2|_0f38|W0, {Gd, RVd, Ed}}, 4448 {"mulx", _128|_f2|_0f38|W1, {Gq, RVq, Eq}}, 4449 E(f7) 4450 {"vmaskmovdqu", _128|_66|_0f, {Vo, VRo}}, 4451 {"bextr", _128|_0f38|W0, {Gd, RVd, Ed}}, 4452 {"bextr", _128|_0f38|W1, {Gq, RVq, Eq}}, 4453 {"sarx", _128|_f3|_0f38|W0, {Gd, RVd, Ed}}, 4454 {"sarx", _128|_f3|_0f38|W1, {Gq, RVq, Eq}}, 4455 {"shlx", _128|_66|_0f38|W0, {Gd, RVd, Ed}}, 4456 {"shlx", _128|_66|_0f38|W1, {Gq, RVq, Eq}}, 4457 {"shlx", _128|_f2|_0f38|W0, {Gd, RVd, Ed}}, 4458 {"shlx", _128|_f2|_0f38|W1, {Gq, RVq, Eq}}, 4459 E(f8) 4460 {"vpsubb", _128|_66|_0f, {Vo, VVo, Wo}}, 4461 {"vpsubb", _256|_66|_0f, {Yy, YVy, Xy}}, 4462 E(f9) 4463 {"vpsubw", _128|_66|_0f, {Vo, VVo, Wo}}, 4464 {"vpsubw", _256|_66|_0f, {Yy, YVy, Xy}}, 4465 E(fa) 4466 {"vpsubd", _128|_66|_0f, {Vo, VVo, Wo}}, 4467 {"vpsubd", _256|_66|_0f, {Yy, YVy, Xy}}, 4468 E(fb) 4469 {"vpsubq", _128|_66|_0f, {Vo, VVo, Wo}}, 4470 {"vpsubq", _256|_66|_0f, {Yy, YVy, Xy}}, 4471 E(fc) 4472 {"vpaddb", _128|_66|_0f, {Vo, VVo, Wo}}, 4473 {"vpaddb", _256|_66|_0f, {Yy, YVy, Xy}}, 4474 E(fd) 4475 {"vpaddw", _128|_66|_0f, {Vo, VVo, Wo}}, 4476 {"vpaddw", _256|_66|_0f, {Yy, YVy, Xy}}, 4477 E(fe) 4478 {"vpaddd", _128|_66|_0f, {Vo, VVo, Wo}}, 4479 {"vpaddd", _256|_66|_0f, {Yy, YVy, Xy}}, 4480 Elast 4481 4482 x86opc_vex_insn x86_group_vex_insns[][8] = { 4483 /* 0 - GROUP_0FAE */ 4484 { 4485 {0}, 4486 {0}, 4487 {"vldmxcsr", _0f, {Md}}, 4488 {"vstmxcsr", _0f, {Md}}, 4489 {0}, 4490 {0}, 4491 {0}, 4492 {0}, 4493 }, 4494 /* 1 - GROUP_660F71 */ 4495 { 4496 {0}, 4497 {0}, 4498 {"vpsrlw", _128|_66|_0f, {VVo, VRo, Ib}}, 4499 {0}, 4500 {"vpsraw", _128|_66|_0f, {VVo, VRo, Ib}}, 4501 {0}, 4502 {"vpsllw", _128|_66|_0f, {VVo, VRo, Ib}}, 4503 {0}, 4504 }, 4505 /* 2 - GROUP_660F72 */ 4506 { 4507 {0}, 4508 {0}, 4509 {"vpsrld", _128|_66|_0f, {VVo, VRo, Ib}}, 4510 {0}, 4511 {"vpsrad", _128|_66|_0f, {VVo, VRo, Ib}}, 4512 {0}, 4513 {"vpslld", _128|_66|_0f, {VVo, VRo, Ib}}, 4514 {0}, 4515 }, 4516 /* 3 - GROUP_660F73 */ 4517 { 4518 {0}, 4519 {0}, 4520 {"vpsrlq", _128|_66|_0f, {VVo, VRo, Ib}}, 4521 {"vpsrldq", _128|_66|_0f, {VVo, VRo, Ib}}, 4522 {0}, 4523 {0}, 4524 {"vpsllq", _128|_66|_0f, {VVo, VRo, Ib}}, 4525 {"vpslldq", _128|_66|_0f, {VVo, VRo, Ib}}, 4526 }, 4527 /* 4 - GROUP_0F25_12 */ 4528 { 4529 {"llwpcb", _128|_0f25|W0, {Rw}}, 4530 {"slwpcb", _128|_0f25|W0, {Rw}}, 4531 {0}, 4532 {0}, 4533 {0}, 4534 {0}, 4535 {0}, 4536 {0}, 4537 }, 4538 /* 5 - GROUP_0F25_12_L */ 4539 { 4540 {"llwpcb", _256|_0f25|W0, {Rd}}, 4541 {"slwpcb", _256|_0f25|W0, {Rd}}, 4542 {0}, 4543 {0}, 4544 {0}, 4545 {0}, 4546 {0}, 4547 {0}, 4548 }, 4549 /* 6 - GROUP_0F25_12_W */ 4550 { 4551 {"llwpcb", _128|_0f25|W1, {Rq}}, 4552 {"slwpcb", _128|_0f25|W1, {Rq}}, 4553 {0}, 4554 {0}, 4555 {0}, 4556 {0}, 4557 {0}, 4558 {0}, 4559 }, 4560 /* 7 - GROUP_0FA_12 */ 4561 { 4562 {"lwpins", _128|_0fA, {RVw, Ed, Iw}}, 4563 {"lwpval", _128|_0fA, {RVw, Ed, Iw}}, 4564 {0}, 4565 {0}, 4566 {0}, 4567 {0}, 4568 {0}, 4569 {0}, 4570 }, 4571 /* 8 - GROUP_0FA_12_L */ 4572 { 4573 {"lwpins", _256|_0fA, {RVd, Ed, Id}}, 4574 {"lwpval", _256|_0fA, {RVd, Ed, Id}}, 4575 {0}, 4576 {0}, 4577 {0}, 4578 {0}, 4579 {0}, 4580 {0}, 4581 }, 4582 /* 9 - GROUP_0FA_12_W */ 4583 { 4584 {"lwpins", _128|_0fA|W1, {RVq, Ed, Id}}, 4585 {"lwpval", _128|_0fA|W1, {RVq, Ed, Id}}, 4586 {0}, 4587 {0}, 4588 {0}, 4589 {0}, 4590 {0}, 4591 {0}, 4592 }, 4593 /* 12 - GROUP_0F38_F3 */ 4594 { 4595 {0}, 4596 {"blsr", _128|_0f38|W0, {RVd, Ed}}, 4597 {"blsmsk", _128|_0f38|W0, {RVd, Ed}}, 4598 {"blsi", _128|_0f38|W0, {RVd, Ed}}, 4599 {0}, 4600 {0}, 4601 {0}, 4602 {0}, 4603 }, 4604 /* 11 - GROUP_0F38_F3_W */ 4605 { 4606 {0}, 4607 {"blsr", _128|_0f38|W1, {RVq, Eq}}, 4608 {"blsmsk", _128|_0f38|W1, {RVq, Eq}}, 4609 {"blsi", _128|_0f38|W1, {RVq, Eq}}, 4610 {0}, 4611 {0}, 4612 {0}, 4613 {0}, 4614 }, 4615 }; 4616 4617 x86opc_vex_insn *x86_vex_insns[256] = { 4618 v00, v01, v02, v03, v04, v05, v06, v07, 4619 v08, v09, v0a, v0b, v0c, v0d, v0e, v0f, 4620 v10, v11, v12, v13, v14, v15, v16, v17, 4621 v18, v19, v1a, 0, v1c, v1d, v1e, 0, 4622 v20, v21, v22, v23, v24, v25, 0, 0, 4623 v28, v29, v2a, v2b, v2c, v2d, v2e, v2f, 4624 v30, v31, v32, v33, v34, v35, v36, v37, 4625 v38, v39, v3a, v3b, v3c, v3d, v3e, v3f, 4626 v40, v41, v42, 0, v44, v45, v46, v47, 4627 v48, v49, v4a, v4b, v4c, 0, 0, 0, 4628 v50, v51, v52, v53, v54, v55, v56, v57, 4629 v58, v59, v5a, v5b, v5c, v5d, v5e, v5f, 4630 v60, v61, v62, v63, v64, v65, v66, v67, 4631 v68, v69, v6a, v6b, v6c, v6d, v6e, v6f, 4632 v70, v71, v72, v73, v74, v75, v76, v77, 4633 v78, v79, v7a, v7b, v7c, v7d, v7e, v7f, 4634 v80, v81, v82, v83, 0, v85, v86, v87, 4635 0, 0, 0, 0, v8c, 0, v8e, v8f, 4636 v90, v91, v92, v93, v94, v95, v96, v97, 4637 v98, v99, v9a, v9b, v9c, v9d, v9e, v9f, 4638 va0, va1, va2, va3, 0, 0, va6, va7, 4639 va8, va9, vaa, vab, vac, vad, vae, vaf, 4640 0, 0, 0, 0, 0, 0, vb6, vb7, 4641 vb8, vb9, vba, vbb, vbc, vbd, vbe, vbf, 4642 vc0, vc1, vc2, vc3, vc4, vc5, vc6, vc7, 4643 0, 0, 0, vcb, vcc, vcd, vce, vcf, 4644 vd0, vd1, vd2, vd3, vd4, vd5, vd6, vd7, 4645 vd8, vd9, vda, vdb, vdc, vdd, vde, vdf, 4646 ve0, ve1, ve2, ve3, ve4, ve5, ve6, ve7, 4647 ve8, ve9, vea, veb, vec, ved, vee, vef, 4648 vf0, vf1, vf2, vf3, vf4, vf5, vf6, vf7, 4649 vf8, vf9, vfa, vfb, vfc, vfd, vfe, 0, 4650 }; 4651