1 /// Types and constants of X86 architecture 2 module capstone.x86; 3 4 import std.conv: to; 5 import std.typecons: BitFlags; 6 7 import capstone.api; 8 import capstone.capstone; 9 import capstone.detail; 10 import capstone.instruction; 11 import capstone.instructiongroup; 12 import capstone.internal; 13 import capstone.register; 14 import capstone.utils; 15 16 /// Architecture-specific Register variant 17 class X86Register : RegisterImpl!X86RegisterId { 18 package this(in Capstone cs, in int id) { 19 super(cs, id); 20 } 21 } 22 23 /// Architecture-specific InstructionGroup variant 24 class X86InstructionGroup : InstructionGroupImpl!X86InstructionGroupId { 25 package this(in Capstone cs, in int id) { 26 super(cs, id); 27 } 28 } 29 30 /// Architecture-specific Detail variant 31 class X86Detail : DetailImpl!(X86Register, X86InstructionGroup, X86InstructionDetail) { 32 package this(in Capstone cs, cs_detail* internal) { 33 super(cs, internal); 34 } 35 } 36 37 /// Architecture-specific instruction variant 38 class X86Instruction : InstructionImpl!(X86InstructionId, X86Register, X86Detail) { 39 package this(in Capstone cs, cs_insn* internal) { 40 super(cs, internal); 41 } 42 } 43 44 /// Architecture-specific Capstone variant 45 class CapstoneX86 : CapstoneImpl!(X86InstructionId, X86Instruction) { 46 /** Creates an architecture-specific instance with a given mode of interpretation 47 48 Params: 49 modeFlags = The (initial) mode of interpretation, which can still be changed later on 50 */ 51 this(in ModeFlags modeFlags){ 52 super(Arch.x86, modeFlags); 53 } 54 } 55 56 /// Instruction encoding info 57 struct X86Encoding { 58 ubyte modrmOffset; /// ModR/M offset, or 0 when irrelevant 59 60 ubyte dispOffset; /// Displacement offset, or 0 when irrelevant. 61 ubyte dispSize; /// Size of displacement 62 63 ubyte immOffset; /// Immediate offset, or 0 when irrelevant. 64 ubyte immSize; /// Size of immediate 65 66 package this(cs_x86_encoding internal){ 67 modrmOffset = internal.modrm_offset; 68 dispOffset = internal.disp_offset; 69 dispSize = internal.disp_size; 70 immOffset = internal.imm_offset; 71 immSize = internal.imm_size; 72 } 73 } 74 75 /** Instruction's operand referring to memory 76 77 This is associated with the `X86OpType.mem` operand type 78 */ 79 struct X86OpMem { 80 X86Register segment; /// Segment register (or `X86Register.invalid` if irrelevant) 81 X86Register base; /// Base register (or `X86Register.invalid` if irrelevant) 82 X86Register index; /// Index register (or `X86Register.invalid` if irrelevant) 83 int scale; /// Scale for index register 84 long disp; /// Displacement value 85 86 package this(in Capstone cs, x86_op_mem internal){ 87 segment = new X86Register(cs, internal.segment); 88 base = new X86Register(cs, internal.base); 89 index = new X86Register(cs, internal.index); 90 scale = internal.scale; 91 disp = internal.disp; 92 } 93 } 94 95 /// Union of possible operand types 96 union X86OpValue { 97 X86Register reg; /// Register value for REG operand 98 long imm; /// Immediate value for IMM operand 99 X86OpMem mem; /// Base/index/scale/disp value for MEM operand 100 } 101 102 /// Instruction's operand 103 struct X86Op { 104 X86OpType type; /// Operand type 105 SafeUnion!X86OpValue value; /// Operand value of type `type` 106 alias value this; /// Convenient access to value (as in original bindings) 107 108 ubyte size; /// Size of this operand (in bytes) 109 110 /** How is this operand accessed? (READ, WRITE or READ|WRITE) 111 112 NOTE: This field is irrelevant, i.e. equals 0, if engine is compiled in DIET mode. 113 */ 114 AccessFlags access; 115 116 X86AvxBroadcast avxBcast; /// AVX broadcast type, or `X86AvxBroadcast.invalid` 117 bool avxZeroOpmask; /// AVX zero opmask {z} 118 119 package this(in Capstone cs, cs_x86_op internal){ 120 type = internal.type.to!X86OpType; 121 final switch(internal.type) { 122 case X86OpType.invalid: 123 break; 124 case X86OpType.reg: 125 value.reg = new X86Register(cs, internal.reg); 126 break; 127 case X86OpType.imm: 128 value.imm = internal.imm; 129 break; 130 case X86OpType.mem: 131 value.mem = X86OpMem(cs, internal.mem); 132 break; 133 } 134 size = internal.size; 135 access = cast(AccessType)internal.access; 136 avxBcast = internal.avx_bcast.to!X86AvxBroadcast; 137 avxZeroOpmask = internal.avx_zero_opmask; 138 } 139 } 140 141 /// X86-specific information about an instruction 142 struct X86InstructionDetail { 143 /** Instruction prefix, which can be up to 4 bytes. 144 145 A prefix byte gets value 0 when irrelevant. 146 $(OL 147 $(LI `prefix[0]` indicates REP/REPNE/LOCK prefix (See `X86Prefix.rep`, `X86Prefix.repne`, `X86Prefix.lock`)) 148 $(LI `prefix[1]` indicates segment override (irrelevant for x86_64): 149 See `X86Prefix.cs`,`X86Prefix.ss`,`X86Prefix.ds`,`X86Prefix.es`,`X86Prefix.fs`,`X86Prefix.gs`) 150 $(LI `prefix[2]` indicates operand-size override (`X86Prefix.opsize`)) 151 $(LI `prefix[3]` indicates address-size override (`X86Prefix.addrsize`)) 152 ) 153 */ 154 ubyte[] prefix; // TODO: Split? Get rid of trailing 0 bytes? 155 156 /** Instruction opcode, wich can be from 1 to 4 bytes in size. 157 158 This contains VEX opcode as well. A trailing opcode byte gets value 0 when irrelevant. 159 */ 160 ubyte[] opcode; // TODO: Get rid of irrelevant trailing bytes? 161 ubyte rex; /// REX prefix: only a non-zero value is relavant for x86_64 162 ubyte addrSize; /// Address size 163 ubyte modRM; /// ModR/M byte 164 ubyte sib; /// SIB value, or 0 when irrelevant 165 long disp; /// Displacement value, or 0 when irrelevant 166 167 // SIB state 168 X86Register sibIndex; /// SIB index register, or `X86Register.invalid` when irrelevant 169 byte sibScale; /// SIB scale. Only applicable if `sibIndex` is relavant 170 X86Register sibBase; /// SIB base register, or `X86Register.invalid` when irrelevant 171 172 X86XopCc xopCc; /// XOP Code Condition 173 X86SseCodeCondition sseCc; /// SSE code condition 174 X86AvxCodeCondition avxCc; /// AVX code condition 175 bool avxSae; /// AVX suppress all exceptions 176 X86AvxRoundingMode avxRM; /// AVX static rounding mode 177 178 union{ 179 EFlags eflags; /// EFLAGS updated by this instruction 180 FpuFlags fpuFlags; /// FPUFLAGS updated by this instruction 181 } 182 183 X86Op[] operands; /// Operands for this instruction. 184 X86Encoding encoding; /// Encoding information 185 186 package this(in Capstone cs, cs_arch_detail arch_detail){ 187 auto internal = arch_detail.x86; 188 prefix = internal.prefix.dup; 189 opcode = internal.opcode.dup; 190 rex = internal.rex; 191 addrSize = internal.addr_size; 192 modRM = internal.modrm; 193 sib = internal.sib; 194 disp = internal.disp; 195 sibIndex = new X86Register(cs, internal.sib_index); 196 sibScale = internal.sib_scale; 197 sibBase = new X86Register(cs, internal.sib_base); 198 xopCc = internal.xop_cc.to!X86XopCc; 199 sseCc = internal.sse_cc.to!X86SseCodeCondition; 200 avxCc = internal.avx_cc.to!X86AvxCodeCondition; 201 eflags = cast(EFlag)internal.eflags; // covers fpuFlags too 202 avxRM = internal.avx_rm.to!X86AvxRoundingMode; 203 encoding = X86Encoding(internal.encoding); 204 205 foreach(op; internal.operands[0..internal.op_count]) 206 operands ~= X86Op(cs, op); 207 } 208 } 209 210 /// Operand type for instruction's operands 211 enum X86OpType { 212 invalid = 0, /// Invalid 213 reg, /// Register operand (`X86Register`) 214 imm, /// Immediate operand (`long`) 215 mem, /// Memory operand (`X86OpMem`) 216 } 217 218 /// XOP Code Condition type 219 enum X86XopCc { 220 invalid = 0, 221 lt, 222 le, 223 gt, 224 ge, 225 eq, 226 neq, 227 false_, 228 true_, 229 } 230 231 /// AVX broadcast type 232 enum X86AvxBroadcast { 233 invalid = 0, /// Invalid 234 bcast_2, /// Avx512 broadcast type {1to2} 235 bcast_4, /// Avx512 broadcast type {1to4} 236 bcast_8, /// Avx512 broadcast type {1to8} 237 bcast_16 /// Avx512 broadcast type {1to16} 238 } 239 240 /// SSE code condition type 241 enum X86SseCodeCondition { 242 invalid = 0, 243 eq, 244 lt, 245 le, 246 unord, 247 neq, 248 nlt, 249 nle, 250 ord, 251 eq_uq, 252 nge, 253 ngt, 254 false_, 255 neq_oq, 256 ge, 257 gt, 258 true_ 259 } 260 261 /// AVX code condition type 262 enum X86AvxCodeCondition { 263 invalid = 0, 264 eq, 265 lt, 266 le, 267 unord, 268 neq, 269 nlt, 270 nle, 271 ord, 272 eq_uq, 273 nge, 274 ngt, 275 false_, 276 neq_oq, 277 ge, 278 gt, 279 true_, 280 eq_os, 281 lt_oq, 282 le_oq, 283 unord_s, 284 neq_us, 285 nlt_uq, 286 nle_uq, 287 ord_s, 288 eq_us, 289 nge_uq, 290 ngt_uq, 291 false_os, 292 neq_os, 293 ge_oq, 294 gt_oq, 295 true_us 296 } 297 298 /// AVX static rounding mode type 299 enum X86AvxRoundingMode { 300 invalid = 0, /// Invalid 301 rn, /// Round to nearest 302 rd, /// Round down 303 ru, /// Round up 304 rz /// Round toward zero 305 } 306 307 /// Instruction prefixes - used in `X86InstructionDetail.prefix[]` 308 enum X86Prefix { 309 lock = 0xf0, /// Rock (cs_x86.prefix[0] 310 rep = 0xf3, /// Rep (cs_x86.prefix[0] 311 repne = 0xf2, /// Repne (cs_x86.prefix[0] 312 313 cs = 0x2e, /// Segment override cs (cs_x86.prefix[1] 314 ss = 0x36, /// Segment override ss (cs_x86.prefix[1] 315 ds = 0x3e, /// Segment override ds (cs_x86.prefix[1] 316 es = 0x26, /// Segment override es (cs_x86.prefix[1] 317 fs = 0x64, /// Segment override fs (cs_x86.prefix[1] 318 gs = 0x65, /// Segment override gs (cs_x86.prefix[1] 319 320 opsize = 0x66, /// Operand-size override (cs_x86.prefix[2] 321 addrsize = 0x67 /// Address-size override (cs_x86.prefix[3] 322 } 323 324 /// Subflags of EFLAGS 325 enum EFlag : ulong { 326 mod_af = 1UL << 0, 327 mod_cf = 1UL << 1, 328 mod_sf = 1UL << 2, 329 mod_zf = 1UL << 3, 330 mod_pf = 1UL << 4, 331 mod_of = 1UL << 5, 332 mod_tf = 1UL << 6, 333 mod_if = 1UL << 7, 334 mod_df = 1UL << 8, 335 mod_nt = 1UL << 9, 336 mod_rf = 1UL << 10, 337 prior_of = 1UL << 11, 338 prior_sf = 1UL << 12, 339 prior_zf = 1UL << 13, 340 prior_af = 1UL << 14, 341 prior_pf = 1UL << 15, 342 prior_cf = 1UL << 16, 343 prior_tf = 1UL << 17, 344 prior_if = 1UL << 18, 345 prior_df = 1UL << 19, 346 prior_nt = 1UL << 20, 347 reset_of = 1UL << 21, 348 reset_cf = 1UL << 22, 349 reset_df = 1UL << 23, 350 reset_if = 1UL << 24, 351 reset_sf = 1UL << 25, 352 reset_af = 1UL << 26, 353 reset_tf = 1UL << 27, 354 reset_nt = 1UL << 28, 355 reset_pf = 1UL << 29, 356 set_cf = 1UL << 30, 357 set_df = 1UL << 31, 358 set_if = 1UL << 32, 359 test_of = 1UL << 33, 360 test_sf = 1UL << 34, 361 test_zf = 1UL << 35, 362 test_pf = 1UL << 36, 363 test_cf = 1UL << 37, 364 test_nt = 1UL << 38, 365 test_df = 1UL << 39, 366 undef_of = 1UL << 40, 367 undef_sf = 1UL << 41, 368 undef_zf = 1UL << 42, 369 undef_pf = 1UL << 43, 370 undef_af = 1UL << 44, 371 undef_cf = 1UL << 45, 372 reset_rf = 1UL << 46, 373 test_rf = 1UL << 47, 374 test_if = 1UL << 48, 375 test_tf = 1UL << 49, 376 test_af = 1UL << 50, 377 reset_zf = 1UL << 51, 378 set_of = 1UL << 52, 379 set_sf = 1UL << 53, 380 set_zf = 1UL << 54, 381 set_af = 1UL << 55, 382 set_pf = 1UL << 56, 383 reset_0f = 1UL << 57, 384 reset_ac = 1UL << 58 385 } 386 alias EFlags = BitFlags!EFlag; 387 388 /// Subflags of FPU_FLAGS 389 enum FpuFlag : ulong { 390 mod_c0 = 1UL << 0, 391 mod_c1 = 1UL << 1, 392 mod_c2 = 1UL << 2, 393 mod_c3 = 1UL << 3, 394 reset_c0 = 1UL << 4, 395 reset_c1 = 1UL << 5, 396 reset_c2 = 1UL << 6, 397 reset_c3 = 1UL << 7, 398 set_c0 = 1UL << 8, 399 set_c1 = 1UL << 9, 400 set_c2 = 1UL << 10, 401 set_c3 = 1UL << 11, 402 undef_c0 = 1UL << 12, 403 undef_c1 = 1UL << 13, 404 undef_c2 = 1UL << 14, 405 undef_c3 = 1UL << 15, 406 test_c0 = 1UL << 16, 407 test_c1 = 1UL << 17, 408 test_c2 = 1UL << 18, 409 test_c3 = 1UL << 19, 410 } 411 alias FpuFlags = BitFlags!FpuFlag; 412 413 /// X86 registers 414 enum X86RegisterId { 415 invalid = 0, 416 ah, al, ax, bh, bl, 417 bp, bpl, bx, ch, cl, 418 cs, cx, dh, di, dil, 419 dl, ds, dx, eax, ebp, 420 ebx, ecx, edi, edx, eflags, 421 eip, eiz, es, esi, esp, 422 fpsw, fs, gs, ip, rax, 423 rbp, rbx, rcx, rdi, rdx, 424 rip, riz, rsi, rsp, si, 425 sil, sp, spl, ss, cr0, 426 cr1, cr2, cr3, cr4, cr5, 427 cr6, cr7, cr8, cr9, cr10, 428 cr11, cr12, cr13, cr14, cr15, 429 dr0, dr1, dr2, dr3, dr4, 430 dr5, dr6, dr7, dr8, dr9, 431 dr10, dr11, dr12, dr13, dr14, 432 dr15, fp0, fp1, fp2, fp3, 433 fp4, fp5, fp6, fp7, 434 k0, k1, k2, k3, k4, 435 k5, k6, k7, mm0, mm1, 436 mm2, mm3, mm4, mm5, mm6, 437 mm7, r8, r9, r10, r11, 438 r12, r13, r14, r15, 439 st0, st1, st2, st3, 440 st4, st5, st6, st7, 441 xmm0, xmm1, xmm2, xmm3, xmm4, 442 xmm5, xmm6, xmm7, xmm8, xmm9, 443 xmm10, xmm11, xmm12, xmm13, xmm14, 444 xmm15, xmm16, xmm17, xmm18, xmm19, 445 xmm20, xmm21, xmm22, xmm23, xmm24, 446 xmm25, xmm26, xmm27, xmm28, xmm29, 447 xmm30, xmm31, ymm0, ymm1, ymm2, 448 ymm3, ymm4, ymm5, ymm6, ymm7, 449 ymm8, ymm9, ymm10, ymm11, ymm12, 450 ymm13, ymm14, ymm15, ymm16, ymm17, 451 ymm18, ymm19, ymm20, ymm21, ymm22, 452 ymm23, ymm24, ymm25, ymm26, ymm27, 453 ymm28, ymm29, ymm30, ymm31, zmm0, 454 zmm1, zmm2, zmm3, zmm4, zmm5, 455 zmm6, zmm7, zmm8, zmm9, zmm10, 456 zmm11, zmm12, zmm13, zmm14, zmm15, 457 zmm16, zmm17, zmm18, zmm19, zmm20, 458 zmm21, zmm22, zmm23, zmm24, zmm25, 459 zmm26, zmm27, zmm28, zmm29, zmm30, 460 zmm31, r8b, r9b, r10b, r11b, 461 r12b, r13b, r14b, r15b, r8d, 462 r9d, r10d, r11d, r12d, r13d, 463 r14d, r15d, r8w, r9w, r10w, 464 r11w, r12w, r13w, r14w, r15w, 465 } 466 467 /// X86 instructions 468 enum X86InstructionId { 469 invalid = 0, 470 471 aaa, 472 aad, 473 aam, 474 aas, 475 fabs, 476 adc, 477 adcx, 478 add, 479 addpd, 480 addps, 481 addsd, 482 addss, 483 addsubpd, 484 addsubps, 485 fadd, 486 fiadd, 487 faddp, 488 adox, 489 aesdeclast, 490 aesdec, 491 aesenclast, 492 aesenc, 493 aesimc, 494 aeskeygenassist, 495 and, 496 andn, 497 andnpd, 498 andnps, 499 andpd, 500 andps, 501 arpl, 502 bextr, 503 blcfill, 504 blci, 505 blcic, 506 blcmsk, 507 blcs, 508 blendpd, 509 blendps, 510 blendvpd, 511 blendvps, 512 blsfill, 513 blsi, 514 blsic, 515 blsmsk, 516 blsr, 517 bound, 518 bsf, 519 bsr, 520 bswap, 521 bt, 522 btc, 523 btr, 524 bts, 525 bzhi, 526 call, 527 cbw, 528 cdq, 529 cdqe, 530 fchs, 531 clac, 532 clc, 533 cld, 534 clflush, 535 clflushopt, 536 clgi, 537 cli, 538 clts, 539 clwb, 540 cmc, 541 cmova, 542 cmovae, 543 cmovb, 544 cmovbe, 545 fcmovbe, 546 fcmovb, 547 cmove, 548 fcmove, 549 cmovg, 550 cmovge, 551 cmovl, 552 cmovle, 553 fcmovnbe, 554 fcmovnb, 555 cmovne, 556 fcmovne, 557 cmovno, 558 cmovnp, 559 fcmovnu, 560 cmovns, 561 cmovo, 562 cmovp, 563 fcmovu, 564 cmovs, 565 cmp, 566 cmpsb, 567 cmpsq, 568 cmpsw, 569 cmpxchg16b, 570 cmpxchg, 571 cmpxchg8b, 572 comisd, 573 comiss, 574 fcomp, 575 fcomip, 576 fcomi, 577 fcom, 578 fcos, 579 cpuid, 580 cqo, 581 crc32, 582 cvtdq2pd, 583 cvtdq2ps, 584 cvtpd2dq, 585 cvtpd2ps, 586 cvtps2dq, 587 cvtps2pd, 588 cvtsd2si, 589 cvtsd2ss, 590 cvtsi2sd, 591 cvtsi2ss, 592 cvtss2sd, 593 cvtss2si, 594 cvttpd2dq, 595 cvttps2dq, 596 cvttsd2si, 597 cvttss2si, 598 cwd, 599 cwde, 600 daa, 601 das, 602 data16, 603 dec, 604 div, 605 divpd, 606 divps, 607 fdivr, 608 fidivr, 609 fdivrp, 610 divsd, 611 divss, 612 fdiv, 613 fidiv, 614 fdivp, 615 dppd, 616 dpps, 617 ret, 618 encls, 619 enclu, 620 enter, 621 extractps, 622 extrq, 623 f2xm1, 624 lcall, 625 ljmp, 626 fbld, 627 fbstp, 628 fcompp, 629 fdecstp, 630 femms, 631 ffree, 632 ficom, 633 ficomp, 634 fincstp, 635 fldcw, 636 fldenv, 637 fldl2e, 638 fldl2t, 639 fldlg2, 640 fldln2, 641 fldpi, 642 fnclex, 643 fninit, 644 fnop, 645 fnstcw, 646 fnstsw, 647 fpatan, 648 fprem, 649 fprem1, 650 fptan, 651 ffreep, 652 frndint, 653 frstor, 654 fnsave, 655 fscale, 656 fsetpm, 657 fsincos, 658 fnstenv, 659 fxam, 660 fxrstor, 661 fxrstor64, 662 fxsave, 663 fxsave64, 664 fxtract, 665 fyl2x, 666 fyl2xp1, 667 movapd, 668 movaps, 669 orpd, 670 orps, 671 vmovapd, 672 vmovaps, 673 xorpd, 674 xorps, 675 getsec, 676 haddpd, 677 haddps, 678 hlt, 679 hsubpd, 680 hsubps, 681 idiv, 682 fild, 683 imul, 684 in_, 685 inc, 686 insb, 687 insertps, 688 insertq, 689 insd, 690 insw, 691 int_, 692 int1, 693 int3, 694 into, 695 invd, 696 invept, 697 invlpg, 698 invlpga, 699 invpcid, 700 invvpid, 701 iret, 702 iretd, 703 iretq, 704 fisttp, 705 fist, 706 fistp, 707 ucomisd, 708 ucomiss, 709 vcomisd, 710 vcomiss, 711 vcvtsd2ss, 712 vcvtsi2sd, 713 vcvtsi2ss, 714 vcvtss2sd, 715 vcvttsd2si, 716 vcvttsd2usi, 717 vcvttss2si, 718 vcvttss2usi, 719 vcvtusi2sd, 720 vcvtusi2ss, 721 vucomisd, 722 vucomiss, 723 jae, 724 ja, 725 jbe, 726 jb, 727 jcxz, 728 jecxz, 729 je, 730 jge, 731 jg, 732 jle, 733 jl, 734 jmp, 735 jne, 736 jno, 737 jnp, 738 jns, 739 jo, 740 jp, 741 jrcxz, 742 js, 743 kandb, 744 kandd, 745 kandnb, 746 kandnd, 747 kandnq, 748 kandnw, 749 kandq, 750 kandw, 751 kmovb, 752 kmovd, 753 kmovq, 754 kmovw, 755 knotb, 756 knotd, 757 knotq, 758 knotw, 759 korb, 760 kord, 761 korq, 762 kortestb, 763 kortestd, 764 kortestq, 765 kortestw, 766 korw, 767 kshiftlb, 768 kshiftld, 769 kshiftlq, 770 kshiftlw, 771 kshiftrb, 772 kshiftrd, 773 kshiftrq, 774 kshiftrw, 775 kunpckbw, 776 kxnorb, 777 kxnord, 778 kxnorq, 779 kxnorw, 780 kxorb, 781 kxord, 782 kxorq, 783 kxorw, 784 lahf, 785 lar, 786 lddqu, 787 ldmxcsr, 788 lds, 789 fldz, 790 fld1, 791 fld, 792 lea, 793 leave, 794 les, 795 lfence, 796 lfs, 797 lgdt, 798 lgs, 799 lidt, 800 lldt, 801 lmsw, 802 or, 803 sub, 804 xor, 805 lodsb, 806 lodsd, 807 lodsq, 808 lodsw, 809 loop, 810 loope, 811 loopne, 812 retf, 813 retfq, 814 lsl, 815 lss, 816 ltr, 817 xadd, 818 lzcnt, 819 maskmovdqu, 820 maxpd, 821 maxps, 822 maxsd, 823 maxss, 824 mfence, 825 minpd, 826 minps, 827 minsd, 828 minss, 829 cvtpd2pi, 830 cvtpi2pd, 831 cvtpi2ps, 832 cvtps2pi, 833 cvttpd2pi, 834 cvttps2pi, 835 emms, 836 maskmovq, 837 movd, 838 movdq2q, 839 movntq, 840 movq2dq, 841 movq, 842 pabsb, 843 pabsd, 844 pabsw, 845 packssdw, 846 packsswb, 847 packuswb, 848 paddb, 849 paddd, 850 paddq, 851 paddsb, 852 paddsw, 853 paddusb, 854 paddusw, 855 paddw, 856 palignr, 857 pandn, 858 pand, 859 pavgb, 860 pavgw, 861 pcmpeqb, 862 pcmpeqd, 863 pcmpeqw, 864 pcmpgtb, 865 pcmpgtd, 866 pcmpgtw, 867 pextrw, 868 phaddsw, 869 phaddw, 870 phaddd, 871 phsubd, 872 phsubsw, 873 phsubw, 874 pinsrw, 875 pmaddubsw, 876 pmaddwd, 877 pmaxsw, 878 pmaxub, 879 pminsw, 880 pminub, 881 pmovmskb, 882 pmulhrsw, 883 pmulhuw, 884 pmulhw, 885 pmullw, 886 pmuludq, 887 por, 888 psadbw, 889 pshufb, 890 pshufw, 891 psignb, 892 psignd, 893 psignw, 894 pslld, 895 psllq, 896 psllw, 897 psrad, 898 psraw, 899 psrld, 900 psrlq, 901 psrlw, 902 psubb, 903 psubd, 904 psubq, 905 psubsb, 906 psubsw, 907 psubusb, 908 psubusw, 909 psubw, 910 punpckhbw, 911 punpckhdq, 912 punpckhwd, 913 punpcklbw, 914 punpckldq, 915 punpcklwd, 916 pxor, 917 monitor, 918 montmul, 919 mov, 920 movabs, 921 movbe, 922 movddup, 923 movdqa, 924 movdqu, 925 movhlps, 926 movhpd, 927 movhps, 928 movlhps, 929 movlpd, 930 movlps, 931 movmskpd, 932 movmskps, 933 movntdqa, 934 movntdq, 935 movnti, 936 movntpd, 937 movntps, 938 movntsd, 939 movntss, 940 movsb, 941 movsd, 942 movshdup, 943 movsldup, 944 movsq, 945 movss, 946 movsw, 947 movsx, 948 movsxd, 949 movupd, 950 movups, 951 movzx, 952 mpsadbw, 953 mul, 954 mulpd, 955 mulps, 956 mulsd, 957 mulss, 958 mulx, 959 fmul, 960 fimul, 961 fmulp, 962 mwait, 963 neg, 964 nop, 965 not, 966 out_, 967 outsb, 968 outsd, 969 outsw, 970 packusdw, 971 pause, 972 pavgusb, 973 pblendvb, 974 pblendw, 975 pclmulqdq, 976 pcmpeqq, 977 pcmpestri, 978 pcmpestrm, 979 pcmpgtq, 980 pcmpistri, 981 pcmpistrm, 982 pcommit, 983 pdep, 984 pext, 985 pextrb, 986 pextrd, 987 pextrq, 988 pf2id, 989 pf2iw, 990 pfacc, 991 pfadd, 992 pfcmpeq, 993 pfcmpge, 994 pfcmpgt, 995 pfmax, 996 pfmin, 997 pfmul, 998 pfnacc, 999 pfpnacc, 1000 pfrcpit1, 1001 pfrcpit2, 1002 pfrcp, 1003 pfrsqit1, 1004 pfrsqrt, 1005 pfsubr, 1006 pfsub, 1007 phminposuw, 1008 pi2fd, 1009 pi2fw, 1010 pinsrb, 1011 pinsrd, 1012 pinsrq, 1013 pmaxsb, 1014 pmaxsd, 1015 pmaxud, 1016 pmaxuw, 1017 pminsb, 1018 pminsd, 1019 pminud, 1020 pminuw, 1021 pmovsxbd, 1022 pmovsxbq, 1023 pmovsxbw, 1024 pmovsxdq, 1025 pmovsxwd, 1026 pmovsxwq, 1027 pmovzxbd, 1028 pmovzxbq, 1029 pmovzxbw, 1030 pmovzxdq, 1031 pmovzxwd, 1032 pmovzxwq, 1033 pmuldq, 1034 pmulhrw, 1035 pmulld, 1036 pop, 1037 popaw, 1038 popal, 1039 popcnt, 1040 popf, 1041 popfd, 1042 popfq, 1043 prefetch, 1044 prefetchnta, 1045 prefetcht0, 1046 prefetcht1, 1047 prefetcht2, 1048 prefetchw, 1049 pshufd, 1050 pshufhw, 1051 pshuflw, 1052 pslldq, 1053 psrldq, 1054 pswapd, 1055 ptest, 1056 punpckhqdq, 1057 punpcklqdq, 1058 push, 1059 pushaw, 1060 pushal, 1061 pushf, 1062 pushfd, 1063 pushfq, 1064 rcl, 1065 rcpps, 1066 rcpss, 1067 rcr, 1068 rdfsbase, 1069 rdgsbase, 1070 rdmsr, 1071 rdpmc, 1072 rdrand, 1073 rdseed, 1074 rdtsc, 1075 rdtscp, 1076 rol, 1077 ror, 1078 rorx, 1079 roundpd, 1080 roundps, 1081 roundsd, 1082 roundss, 1083 rsm, 1084 rsqrtps, 1085 rsqrtss, 1086 sahf, 1087 sal, 1088 salc, 1089 sar, 1090 sarx, 1091 sbb, 1092 scasb, 1093 scasd, 1094 scasq, 1095 scasw, 1096 setae, 1097 seta, 1098 setbe, 1099 setb, 1100 sete, 1101 setge, 1102 setg, 1103 setle, 1104 setl, 1105 setne, 1106 setno, 1107 setnp, 1108 setns, 1109 seto, 1110 setp, 1111 sets, 1112 sfence, 1113 sgdt, 1114 sha1msg1, 1115 sha1msg2, 1116 sha1nexte, 1117 sha1rnds4, 1118 sha256msg1, 1119 sha256msg2, 1120 sha256rnds2, 1121 shl, 1122 shld, 1123 shlx, 1124 shr, 1125 shrd, 1126 shrx, 1127 shufpd, 1128 shufps, 1129 sidt, 1130 fsin, 1131 skinit, 1132 sldt, 1133 smsw, 1134 sqrtpd, 1135 sqrtps, 1136 sqrtsd, 1137 sqrtss, 1138 fsqrt, 1139 stac, 1140 stc, 1141 std, 1142 stgi, 1143 sti, 1144 stmxcsr, 1145 stosb, 1146 stosd, 1147 stosq, 1148 stosw, 1149 str, 1150 fst, 1151 fstp, 1152 fstpnce, 1153 fxch, 1154 subpd, 1155 subps, 1156 fsubr, 1157 fisubr, 1158 fsubrp, 1159 subsd, 1160 subss, 1161 fsub, 1162 fisub, 1163 fsubp, 1164 swapgs, 1165 syscall, 1166 sysenter, 1167 sysexit, 1168 sysret, 1169 t1mskc, 1170 test, 1171 ud2, 1172 ftst, 1173 tzcnt, 1174 tzmsk, 1175 fucomip, 1176 fucomi, 1177 fucompp, 1178 fucomp, 1179 fucom, 1180 ud2b, 1181 unpckhpd, 1182 unpckhps, 1183 unpcklpd, 1184 unpcklps, 1185 vaddpd, 1186 vaddps, 1187 vaddsd, 1188 vaddss, 1189 vaddsubpd, 1190 vaddsubps, 1191 vaesdeclast, 1192 vaesdec, 1193 vaesenclast, 1194 vaesenc, 1195 vaesimc, 1196 vaeskeygenassist, 1197 valignd, 1198 valignq, 1199 vandnpd, 1200 vandnps, 1201 vandpd, 1202 vandps, 1203 vblendmpd, 1204 vblendmps, 1205 vblendpd, 1206 vblendps, 1207 vblendvpd, 1208 vblendvps, 1209 vbroadcastf128, 1210 vbroadcasti32x4, 1211 vbroadcasti64x4, 1212 vbroadcastsd, 1213 vbroadcastss, 1214 vcompresspd, 1215 vcompressps, 1216 vcvtdq2pd, 1217 vcvtdq2ps, 1218 vcvtpd2dqx, 1219 vcvtpd2dq, 1220 vcvtpd2psx, 1221 vcvtpd2ps, 1222 vcvtpd2udq, 1223 vcvtph2ps, 1224 vcvtps2dq, 1225 vcvtps2pd, 1226 vcvtps2ph, 1227 vcvtps2udq, 1228 vcvtsd2si, 1229 vcvtsd2usi, 1230 vcvtss2si, 1231 vcvtss2usi, 1232 vcvttpd2dqx, 1233 vcvttpd2dq, 1234 vcvttpd2udq, 1235 vcvttps2dq, 1236 vcvttps2udq, 1237 vcvtudq2pd, 1238 vcvtudq2ps, 1239 vdivpd, 1240 vdivps, 1241 vdivsd, 1242 vdivss, 1243 vdppd, 1244 vdpps, 1245 verr, 1246 verw, 1247 vexp2pd, 1248 vexp2ps, 1249 vexpandpd, 1250 vexpandps, 1251 vextractf128, 1252 vextractf32x4, 1253 vextractf64x4, 1254 vextracti128, 1255 vextracti32x4, 1256 vextracti64x4, 1257 vextractps, 1258 vfmadd132pd, 1259 vfmadd132ps, 1260 vfmaddpd, 1261 vfmadd213pd, 1262 vfmadd231pd, 1263 vfmaddps, 1264 vfmadd213ps, 1265 vfmadd231ps, 1266 vfmaddsd, 1267 vfmadd213sd, 1268 vfmadd132sd, 1269 vfmadd231sd, 1270 vfmaddss, 1271 vfmadd213ss, 1272 vfmadd132ss, 1273 vfmadd231ss, 1274 vfmaddsub132pd, 1275 vfmaddsub132ps, 1276 vfmaddsubpd, 1277 vfmaddsub213pd, 1278 vfmaddsub231pd, 1279 vfmaddsubps, 1280 vfmaddsub213ps, 1281 vfmaddsub231ps, 1282 vfmsub132pd, 1283 vfmsub132ps, 1284 vfmsubadd132pd, 1285 vfmsubadd132ps, 1286 vfmsubaddpd, 1287 vfmsubadd213pd, 1288 vfmsubadd231pd, 1289 vfmsubaddps, 1290 vfmsubadd213ps, 1291 vfmsubadd231ps, 1292 vfmsubpd, 1293 vfmsub213pd, 1294 vfmsub231pd, 1295 vfmsubps, 1296 vfmsub213ps, 1297 vfmsub231ps, 1298 vfmsubsd, 1299 vfmsub213sd, 1300 vfmsub132sd, 1301 vfmsub231sd, 1302 vfmsubss, 1303 vfmsub213ss, 1304 vfmsub132ss, 1305 vfmsub231ss, 1306 vfnmadd132pd, 1307 vfnmadd132ps, 1308 vfnmaddpd, 1309 vfnmadd213pd, 1310 vfnmadd231pd, 1311 vfnmaddps, 1312 vfnmadd213ps, 1313 vfnmadd231ps, 1314 vfnmaddsd, 1315 vfnmadd213sd, 1316 vfnmadd132sd, 1317 vfnmadd231sd, 1318 vfnmaddss, 1319 vfnmadd213ss, 1320 vfnmadd132ss, 1321 vfnmadd231ss, 1322 vfnmsub132pd, 1323 vfnmsub132ps, 1324 vfnmsubpd, 1325 vfnmsub213pd, 1326 vfnmsub231pd, 1327 vfnmsubps, 1328 vfnmsub213ps, 1329 vfnmsub231ps, 1330 vfnmsubsd, 1331 vfnmsub213sd, 1332 vfnmsub132sd, 1333 vfnmsub231sd, 1334 vfnmsubss, 1335 vfnmsub213ss, 1336 vfnmsub132ss, 1337 vfnmsub231ss, 1338 vfrczpd, 1339 vfrczps, 1340 vfrczsd, 1341 vfrczss, 1342 vorpd, 1343 vorps, 1344 vxorpd, 1345 vxorps, 1346 vgatherdpd, 1347 vgatherdps, 1348 vgatherpf0dpd, 1349 vgatherpf0dps, 1350 vgatherpf0qpd, 1351 vgatherpf0qps, 1352 vgatherpf1dpd, 1353 vgatherpf1dps, 1354 vgatherpf1qpd, 1355 vgatherpf1qps, 1356 vgatherqpd, 1357 vgatherqps, 1358 vhaddpd, 1359 vhaddps, 1360 vhsubpd, 1361 vhsubps, 1362 vinsertf128, 1363 vinsertf32x4, 1364 vinsertf32x8, 1365 vinsertf64x2, 1366 vinsertf64x4, 1367 vinserti128, 1368 vinserti32x4, 1369 vinserti32x8, 1370 vinserti64x2, 1371 vinserti64x4, 1372 vinsertps, 1373 vlddqu, 1374 vldmxcsr, 1375 vmaskmovdqu, 1376 vmaskmovpd, 1377 vmaskmovps, 1378 vmaxpd, 1379 vmaxps, 1380 vmaxsd, 1381 vmaxss, 1382 vmcall, 1383 vmclear, 1384 vmfunc, 1385 vminpd, 1386 vminps, 1387 vminsd, 1388 vminss, 1389 vmlaunch, 1390 vmload, 1391 vmmcall, 1392 vmovq, 1393 vmovddup, 1394 vmovd, 1395 vmovdqa32, 1396 vmovdqa64, 1397 vmovdqa, 1398 vmovdqu16, 1399 vmovdqu32, 1400 vmovdqu64, 1401 vmovdqu8, 1402 vmovdqu, 1403 vmovhlps, 1404 vmovhpd, 1405 vmovhps, 1406 vmovlhps, 1407 vmovlpd, 1408 vmovlps, 1409 vmovmskpd, 1410 vmovmskps, 1411 vmovntdqa, 1412 vmovntdq, 1413 vmovntpd, 1414 vmovntps, 1415 vmovsd, 1416 vmovshdup, 1417 vmovsldup, 1418 vmovss, 1419 vmovupd, 1420 vmovups, 1421 vmpsadbw, 1422 vmptrld, 1423 vmptrst, 1424 vmread, 1425 vmresume, 1426 vmrun, 1427 vmsave, 1428 vmulpd, 1429 vmulps, 1430 vmulsd, 1431 vmulss, 1432 vmwrite, 1433 vmxoff, 1434 vmxon, 1435 vpabsb, 1436 vpabsd, 1437 vpabsq, 1438 vpabsw, 1439 vpackssdw, 1440 vpacksswb, 1441 vpackusdw, 1442 vpackuswb, 1443 vpaddb, 1444 vpaddd, 1445 vpaddq, 1446 vpaddsb, 1447 vpaddsw, 1448 vpaddusb, 1449 vpaddusw, 1450 vpaddw, 1451 vpalignr, 1452 vpandd, 1453 vpandnd, 1454 vpandnq, 1455 vpandn, 1456 vpandq, 1457 vpand, 1458 vpavgb, 1459 vpavgw, 1460 vpblendd, 1461 vpblendmb, 1462 vpblendmd, 1463 vpblendmq, 1464 vpblendmw, 1465 vpblendvb, 1466 vpblendw, 1467 vpbroadcastb, 1468 vpbroadcastd, 1469 vpbroadcastmb2q, 1470 vpbroadcastmw2d, 1471 vpbroadcastq, 1472 vpbroadcastw, 1473 vpclmulqdq, 1474 vpcmov, 1475 vpcmpb, 1476 vpcmpd, 1477 vpcmpeqb, 1478 vpcmpeqd, 1479 vpcmpeqq, 1480 vpcmpeqw, 1481 vpcmpestri, 1482 vpcmpestrm, 1483 vpcmpgtb, 1484 vpcmpgtd, 1485 vpcmpgtq, 1486 vpcmpgtw, 1487 vpcmpistri, 1488 vpcmpistrm, 1489 vpcmpq, 1490 vpcmpub, 1491 vpcmpud, 1492 vpcmpuq, 1493 vpcmpuw, 1494 vpcmpw, 1495 vpcomb, 1496 vpcomd, 1497 vpcompressd, 1498 vpcompressq, 1499 vpcomq, 1500 vpcomub, 1501 vpcomud, 1502 vpcomuq, 1503 vpcomuw, 1504 vpcomw, 1505 vpconflictd, 1506 vpconflictq, 1507 vperm2f128, 1508 vperm2i128, 1509 vpermd, 1510 vpermi2d, 1511 vpermi2pd, 1512 vpermi2ps, 1513 vpermi2q, 1514 vpermil2pd, 1515 vpermil2ps, 1516 vpermilpd, 1517 vpermilps, 1518 vpermpd, 1519 vpermps, 1520 vpermq, 1521 vpermt2d, 1522 vpermt2pd, 1523 vpermt2ps, 1524 vpermt2q, 1525 vpexpandd, 1526 vpexpandq, 1527 vpextrb, 1528 vpextrd, 1529 vpextrq, 1530 vpextrw, 1531 vpgatherdd, 1532 vpgatherdq, 1533 vpgatherqd, 1534 vpgatherqq, 1535 vphaddbd, 1536 vphaddbq, 1537 vphaddbw, 1538 vphadddq, 1539 vphaddd, 1540 vphaddsw, 1541 vphaddubd, 1542 vphaddubq, 1543 vphaddubw, 1544 vphaddudq, 1545 vphadduwd, 1546 vphadduwq, 1547 vphaddwd, 1548 vphaddwq, 1549 vphaddw, 1550 vphminposuw, 1551 vphsubbw, 1552 vphsubdq, 1553 vphsubd, 1554 vphsubsw, 1555 vphsubwd, 1556 vphsubw, 1557 vpinsrb, 1558 vpinsrd, 1559 vpinsrq, 1560 vpinsrw, 1561 vplzcntd, 1562 vplzcntq, 1563 vpmacsdd, 1564 vpmacsdqh, 1565 vpmacsdql, 1566 vpmacssdd, 1567 vpmacssdqh, 1568 vpmacssdql, 1569 vpmacsswd, 1570 vpmacssww, 1571 vpmacswd, 1572 vpmacsww, 1573 vpmadcsswd, 1574 vpmadcswd, 1575 vpmaddubsw, 1576 vpmaddwd, 1577 vpmaskmovd, 1578 vpmaskmovq, 1579 vpmaxsb, 1580 vpmaxsd, 1581 vpmaxsq, 1582 vpmaxsw, 1583 vpmaxub, 1584 vpmaxud, 1585 vpmaxuq, 1586 vpmaxuw, 1587 vpminsb, 1588 vpminsd, 1589 vpminsq, 1590 vpminsw, 1591 vpminub, 1592 vpminud, 1593 vpminuq, 1594 vpminuw, 1595 vpmovdb, 1596 vpmovdw, 1597 vpmovm2b, 1598 vpmovm2d, 1599 vpmovm2q, 1600 vpmovm2w, 1601 vpmovmskb, 1602 vpmovqb, 1603 vpmovqd, 1604 vpmovqw, 1605 vpmovsdb, 1606 vpmovsdw, 1607 vpmovsqb, 1608 vpmovsqd, 1609 vpmovsqw, 1610 vpmovsxbd, 1611 vpmovsxbq, 1612 vpmovsxbw, 1613 vpmovsxdq, 1614 vpmovsxwd, 1615 vpmovsxwq, 1616 vpmovusdb, 1617 vpmovusdw, 1618 vpmovusqb, 1619 vpmovusqd, 1620 vpmovusqw, 1621 vpmovzxbd, 1622 vpmovzxbq, 1623 vpmovzxbw, 1624 vpmovzxdq, 1625 vpmovzxwd, 1626 vpmovzxwq, 1627 vpmuldq, 1628 vpmulhrsw, 1629 vpmulhuw, 1630 vpmulhw, 1631 vpmulld, 1632 vpmullq, 1633 vpmullw, 1634 vpmuludq, 1635 vpord, 1636 vporq, 1637 vpor, 1638 vpperm, 1639 vprotb, 1640 vprotd, 1641 vprotq, 1642 vprotw, 1643 vpsadbw, 1644 vpscatterdd, 1645 vpscatterdq, 1646 vpscatterqd, 1647 vpscatterqq, 1648 vpshab, 1649 vpshad, 1650 vpshaq, 1651 vpshaw, 1652 vpshlb, 1653 vpshld, 1654 vpshlq, 1655 vpshlw, 1656 vpshufb, 1657 vpshufd, 1658 vpshufhw, 1659 vpshuflw, 1660 vpsignb, 1661 vpsignd, 1662 vpsignw, 1663 vpslldq, 1664 vpslld, 1665 vpsllq, 1666 vpsllvd, 1667 vpsllvq, 1668 vpsllw, 1669 vpsrad, 1670 vpsraq, 1671 vpsravd, 1672 vpsravq, 1673 vpsraw, 1674 vpsrldq, 1675 vpsrld, 1676 vpsrlq, 1677 vpsrlvd, 1678 vpsrlvq, 1679 vpsrlw, 1680 vpsubb, 1681 vpsubd, 1682 vpsubq, 1683 vpsubsb, 1684 vpsubsw, 1685 vpsubusb, 1686 vpsubusw, 1687 vpsubw, 1688 vptestmd, 1689 vptestmq, 1690 vptestnmd, 1691 vptestnmq, 1692 vptest, 1693 vpunpckhbw, 1694 vpunpckhdq, 1695 vpunpckhqdq, 1696 vpunpckhwd, 1697 vpunpcklbw, 1698 vpunpckldq, 1699 vpunpcklqdq, 1700 vpunpcklwd, 1701 vpxord, 1702 vpxorq, 1703 vpxor, 1704 vrcp14pd, 1705 vrcp14ps, 1706 vrcp14sd, 1707 vrcp14ss, 1708 vrcp28pd, 1709 vrcp28ps, 1710 vrcp28sd, 1711 vrcp28ss, 1712 vrcpps, 1713 vrcpss, 1714 vrndscalepd, 1715 vrndscaleps, 1716 vrndscalesd, 1717 vrndscaless, 1718 vroundpd, 1719 vroundps, 1720 vroundsd, 1721 vroundss, 1722 vrsqrt14pd, 1723 vrsqrt14ps, 1724 vrsqrt14sd, 1725 vrsqrt14ss, 1726 vrsqrt28pd, 1727 vrsqrt28ps, 1728 vrsqrt28sd, 1729 vrsqrt28ss, 1730 vrsqrtps, 1731 vrsqrtss, 1732 vscatterdpd, 1733 vscatterdps, 1734 vscatterpf0dpd, 1735 vscatterpf0dps, 1736 vscatterpf0qpd, 1737 vscatterpf0qps, 1738 vscatterpf1dpd, 1739 vscatterpf1dps, 1740 vscatterpf1qpd, 1741 vscatterpf1qps, 1742 vscatterqpd, 1743 vscatterqps, 1744 vshufpd, 1745 vshufps, 1746 vsqrtpd, 1747 vsqrtps, 1748 vsqrtsd, 1749 vsqrtss, 1750 vstmxcsr, 1751 vsubpd, 1752 vsubps, 1753 vsubsd, 1754 vsubss, 1755 vtestpd, 1756 vtestps, 1757 vunpckhpd, 1758 vunpckhps, 1759 vunpcklpd, 1760 vunpcklps, 1761 vzeroall, 1762 vzeroupper, 1763 wait, 1764 wbinvd, 1765 wrfsbase, 1766 wrgsbase, 1767 wrmsr, 1768 xabort, 1769 xacquire, 1770 xbegin, 1771 xchg, 1772 xcryptcbc, 1773 xcryptcfb, 1774 xcryptctr, 1775 xcryptecb, 1776 xcryptofb, 1777 xend, 1778 xgetbv, 1779 xlatb, 1780 xrelease, 1781 xrstor, 1782 xrstor64, 1783 xrstors, 1784 xrstors64, 1785 xsave, 1786 xsave64, 1787 xsavec, 1788 xsavec64, 1789 xsaveopt, 1790 xsaveopt64, 1791 xsaves, 1792 xsaves64, 1793 xsetbv, 1794 xsha1, 1795 xsha256, 1796 xstore, 1797 xtest, 1798 fdisi8087_nop, 1799 feni8087_nop, 1800 1801 // pseudo instructions 1802 cmpss, 1803 cmpeqss, 1804 cmpltss, 1805 cmpless, 1806 cmpunordss, 1807 cmpneqss, 1808 cmpnltss, 1809 cmpnless, 1810 cmpordss, 1811 1812 cmpsd, 1813 cmpeqsd, 1814 cmpltsd, 1815 cmplesd, 1816 cmpunordsd, 1817 cmpneqsd, 1818 cmpnltsd, 1819 cmpnlesd, 1820 cmpordsd, 1821 1822 cmpps, 1823 cmpeqps, 1824 cmpltps, 1825 cmpleps, 1826 cmpunordps, 1827 cmpneqps, 1828 cmpnltps, 1829 cmpnleps, 1830 cmpordps, 1831 1832 cmppd, 1833 cmpeqpd, 1834 cmpltpd, 1835 cmplepd, 1836 cmpunordpd, 1837 cmpneqpd, 1838 cmpnltpd, 1839 cmpnlepd, 1840 cmpordpd, 1841 1842 vcmpss, 1843 vcmpeqss, 1844 vcmpltss, 1845 vcmpless, 1846 vcmpunordss, 1847 vcmpneqss, 1848 vcmpnltss, 1849 vcmpnless, 1850 vcmpordss, 1851 vcmpeq_uqss, 1852 vcmpngess, 1853 vcmpngtss, 1854 vcmpfalsess, 1855 vcmpneq_oqss, 1856 vcmpgess, 1857 vcmpgtss, 1858 vcmptruess, 1859 vcmpeq_osss, 1860 vcmplt_oqss, 1861 vcmple_oqss, 1862 vcmpunord_sss, 1863 vcmpneq_usss, 1864 vcmpnlt_uqss, 1865 vcmpnle_uqss, 1866 vcmpord_sss, 1867 vcmpeq_usss, 1868 vcmpnge_uqss, 1869 vcmpngt_uqss, 1870 vcmpfalse_osss, 1871 vcmpneq_osss, 1872 vcmpge_oqss, 1873 vcmpgt_oqss, 1874 vcmptrue_usss, 1875 1876 vcmpsd, 1877 vcmpeqsd, 1878 vcmpltsd, 1879 vcmplesd, 1880 vcmpunordsd, 1881 vcmpneqsd, 1882 vcmpnltsd, 1883 vcmpnlesd, 1884 vcmpordsd, 1885 vcmpeq_uqsd, 1886 vcmpngesd, 1887 vcmpngtsd, 1888 vcmpfalsesd, 1889 vcmpneq_oqsd, 1890 vcmpgesd, 1891 vcmpgtsd, 1892 vcmptruesd, 1893 vcmpeq_ossd, 1894 vcmplt_oqsd, 1895 vcmple_oqsd, 1896 vcmpunord_ssd, 1897 vcmpneq_ussd, 1898 vcmpnlt_uqsd, 1899 vcmpnle_uqsd, 1900 vcmpord_ssd, 1901 vcmpeq_ussd, 1902 vcmpnge_uqsd, 1903 vcmpngt_uqsd, 1904 vcmpfalse_ossd, 1905 vcmpneq_ossd, 1906 vcmpge_oqsd, 1907 vcmpgt_oqsd, 1908 vcmptrue_ussd, 1909 1910 vcmpps, 1911 vcmpeqps, 1912 vcmpltps, 1913 vcmpleps, 1914 vcmpunordps, 1915 vcmpneqps, 1916 vcmpnltps, 1917 vcmpnleps, 1918 vcmpordps, 1919 vcmpeq_uqps, 1920 vcmpngeps, 1921 vcmpngtps, 1922 vcmpfalseps, 1923 vcmpneq_oqps, 1924 vcmpgeps, 1925 vcmpgtps, 1926 vcmptrueps, 1927 vcmpeq_osps, 1928 vcmplt_oqps, 1929 vcmple_oqps, 1930 vcmpunord_sps, 1931 vcmpneq_usps, 1932 vcmpnlt_uqps, 1933 vcmpnle_uqps, 1934 vcmpord_sps, 1935 vcmpeq_usps, 1936 vcmpnge_uqps, 1937 vcmpngt_uqps, 1938 vcmpfalse_osps, 1939 vcmpneq_osps, 1940 vcmpge_oqps, 1941 vcmpgt_oqps, 1942 vcmptrue_usps, 1943 1944 vcmppd, 1945 vcmpeqpd, 1946 vcmpltpd, 1947 vcmplepd, 1948 vcmpunordpd, 1949 vcmpneqpd, 1950 vcmpnltpd, 1951 vcmpnlepd, 1952 vcmpordpd, 1953 vcmpeq_uqpd, 1954 vcmpngepd, 1955 vcmpngtpd, 1956 vcmpfalsepd, 1957 vcmpneq_oqpd, 1958 vcmpgepd, 1959 vcmpgtpd, 1960 vcmptruepd, 1961 vcmpeq_ospd, 1962 vcmplt_oqpd, 1963 vcmple_oqpd, 1964 vcmpunord_spd, 1965 vcmpneq_uspd, 1966 vcmpnlt_uqpd, 1967 vcmpnle_uqpd, 1968 vcmpord_spd, 1969 vcmpeq_uspd, 1970 vcmpnge_uqpd, 1971 vcmpngt_uqpd, 1972 vcmpfalse_ospd, 1973 vcmpneq_ospd, 1974 vcmpge_oqpd, 1975 vcmpgt_oqpd, 1976 vcmptrue_uspd, 1977 1978 ud0, 1979 endbr32, 1980 endbr64, 1981 } 1982 1983 /// Group of X86 instructions 1984 enum X86InstructionGroupId { 1985 invalid = 0, 1986 1987 // Generic groups 1988 // all jump instructions (conditional+direct+indirect jumps) 1989 jump, 1990 // all call instructions 1991 call, 1992 // all return instructions 1993 ret, 1994 // all interrupt instructions (int+syscall) 1995 int_, 1996 // all interrupt return instructions 1997 iret, 1998 // all privileged instructions 1999 privilege, 2000 // all relative branching instructions 2001 branch_relative, 2002 2003 // Architecture-specific groups 2004 vm = 128, /// All virtualization instructions (VT-x + AMD-V) 2005 grp_3dnow, 2006 aes, 2007 adx, 2008 avx, 2009 avx2, 2010 avx512, 2011 bmi, 2012 bmi2, 2013 cmov, 2014 f16c, 2015 fma, 2016 fma4, 2017 fsgsbase, 2018 hle, 2019 mmx, 2020 mode32, 2021 mode64, 2022 rtm, 2023 sha, 2024 sse1, 2025 sse2, 2026 sse3, 2027 sse41, 2028 sse42, 2029 sse4a, 2030 ssse3, 2031 pclmul, 2032 xop, 2033 cdi, 2034 eri, 2035 tbm, 2036 grp_16bitmode, 2037 not64bitmode, 2038 sgx, 2039 dqi, 2040 bwi, 2041 pfi, 2042 vlx, 2043 smap, 2044 novlx, 2045 fpu, 2046 }