Changeset 1973 for binutils/trunk/opcodes/i386-dis.c
- Timestamp:
- Feb 6, 2017, 1:00:00 PM (8 years ago)
- Location:
- binutils/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
binutils/trunk ¶
-
Property svn:mergeinfo
set to
/binutils/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
TabularUnified binutils/trunk/opcodes/i386-dis.c ¶
r970 r1973 1 1 /* Print i386 instructions for GDB, the GNU debugger. 2 Copyright (C) 1988-201 4Free Software Foundation, Inc.2 Copyright (C) 1988-2016 Free Software Foundation, Inc. 3 3 4 4 This file is part of the GNU opcodes library. … … 103 103 static void OP_Monitor (int, int); 104 104 static void OP_Mwait (int, int); 105 static void OP_Mwaitx (int, int); 105 106 static void NOP_Fixup1 (int, int); 106 107 static void NOP_Fixup2 (int, int); … … 222 223 } 223 224 225 /* Possible values for prefix requirement. */ 226 #define PREFIX_IGNORED_SHIFT 16 227 #define PREFIX_IGNORED_REPZ (PREFIX_REPZ << PREFIX_IGNORED_SHIFT) 228 #define PREFIX_IGNORED_REPNZ (PREFIX_REPNZ << PREFIX_IGNORED_SHIFT) 229 #define PREFIX_IGNORED_DATA (PREFIX_DATA << PREFIX_IGNORED_SHIFT) 230 #define PREFIX_IGNORED_ADDR (PREFIX_ADDR << PREFIX_IGNORED_SHIFT) 231 #define PREFIX_IGNORED_LOCK (PREFIX_LOCK << PREFIX_IGNORED_SHIFT) 232 233 /* Opcode prefixes. */ 234 #define PREFIX_OPCODE (PREFIX_REPZ \ 235 | PREFIX_REPNZ \ 236 | PREFIX_DATA) 237 238 /* Prefixes ignored. */ 239 #define PREFIX_IGNORED (PREFIX_IGNORED_REPZ \ 240 | PREFIX_IGNORED_REPNZ \ 241 | PREFIX_IGNORED_DATA) 242 224 243 #define XX { NULL, 0 } 225 #define Bad_Opcode NULL, { { NULL, 0 } } 244 #define Bad_Opcode NULL, { { NULL, 0 } }, 0 226 245 227 246 #define Eb { OP_E, b_mode } … … 240 259 #define Edqd { OP_E, dqd_mode } 241 260 #define Eq { OP_E, q_mode } 242 #define indirEv { OP_indirE, stack_v_mode }261 #define indirEv { OP_indirE, indir_v_mode } 243 262 #define indirEp { OP_indirE, f_mode } 244 263 #define stackEv { OP_E, stack_v_mode } … … 543 562 f_mode, 544 563 const_1_mode, 564 /* v_mode for indirect branch opcodes. */ 565 indir_v_mode, 545 566 /* v_mode for stack-related opcodes. */ 546 567 stack_v_mode, … … 664 685 }; 665 686 666 #define FLOAT NULL, { { NULL, FLOATCODE } } 667 668 #define DIS386(T, I) NULL, { { NULL, (T)}, { NULL, (I) } } 687 #define FLOAT NULL, { { NULL, FLOATCODE } }, 0 688 689 #define DIS386(T, I) NULL, { { NULL, (T)}, { NULL, (I) } }, 0 690 #define DIS386_PREFIX(T, I, P) NULL, { { NULL, (T)}, { NULL, (I) } }, P 669 691 #define REG_TABLE(I) DIS386 (USE_REG_TABLE, (I)) 670 692 #define MOD_TABLE(I) DIS386 (USE_MOD_TABLE, (I)) … … 673 695 #define X86_64_TABLE(I) DIS386 (USE_X86_64_TABLE, (I)) 674 696 #define THREE_BYTE_TABLE(I) DIS386 (USE_3BYTE_TABLE, (I)) 697 #define THREE_BYTE_TABLE_PREFIX(I, P) DIS386_PREFIX (USE_3BYTE_TABLE, (I), P) 675 698 #define XOP_8F_TABLE(I) DIS386 (USE_XOP_8F_TABLE, (I)) 676 699 #define VEX_C4_TABLE(I) DIS386 (USE_VEX_C4_TABLE, (I)) … … 738 761 MOD_0F01_REG_2, 739 762 MOD_0F01_REG_3, 763 MOD_0F01_REG_5, 740 764 MOD_0F01_REG_7, 741 765 MOD_0F12_PREFIX_0, … … 782 806 MOD_0FB4, 783 807 MOD_0FB5, 808 MOD_0FC3, 784 809 MOD_0FC7_REG_3, 785 810 MOD_0FC7_REG_4, … … 799 824 MOD_VEX_0F17, 800 825 MOD_VEX_0F2B, 826 MOD_VEX_W_0_0F41_P_0_LEN_1, 827 MOD_VEX_W_1_0F41_P_0_LEN_1, 828 MOD_VEX_W_0_0F41_P_2_LEN_1, 829 MOD_VEX_W_1_0F41_P_2_LEN_1, 830 MOD_VEX_W_0_0F42_P_0_LEN_1, 831 MOD_VEX_W_1_0F42_P_0_LEN_1, 832 MOD_VEX_W_0_0F42_P_2_LEN_1, 833 MOD_VEX_W_1_0F42_P_2_LEN_1, 834 MOD_VEX_W_0_0F44_P_0_LEN_1, 835 MOD_VEX_W_1_0F44_P_0_LEN_1, 836 MOD_VEX_W_0_0F44_P_2_LEN_1, 837 MOD_VEX_W_1_0F44_P_2_LEN_1, 838 MOD_VEX_W_0_0F45_P_0_LEN_1, 839 MOD_VEX_W_1_0F45_P_0_LEN_1, 840 MOD_VEX_W_0_0F45_P_2_LEN_1, 841 MOD_VEX_W_1_0F45_P_2_LEN_1, 842 MOD_VEX_W_0_0F46_P_0_LEN_1, 843 MOD_VEX_W_1_0F46_P_0_LEN_1, 844 MOD_VEX_W_0_0F46_P_2_LEN_1, 845 MOD_VEX_W_1_0F46_P_2_LEN_1, 846 MOD_VEX_W_0_0F47_P_0_LEN_1, 847 MOD_VEX_W_1_0F47_P_0_LEN_1, 848 MOD_VEX_W_0_0F47_P_2_LEN_1, 849 MOD_VEX_W_1_0F47_P_2_LEN_1, 850 MOD_VEX_W_0_0F4A_P_0_LEN_1, 851 MOD_VEX_W_1_0F4A_P_0_LEN_1, 852 MOD_VEX_W_0_0F4A_P_2_LEN_1, 853 MOD_VEX_W_1_0F4A_P_2_LEN_1, 854 MOD_VEX_W_0_0F4B_P_0_LEN_1, 855 MOD_VEX_W_1_0F4B_P_0_LEN_1, 856 MOD_VEX_W_0_0F4B_P_2_LEN_1, 801 857 MOD_VEX_0F50, 802 858 MOD_VEX_0F71_REG_2, … … 810 866 MOD_VEX_0F73_REG_6, 811 867 MOD_VEX_0F73_REG_7, 868 MOD_VEX_W_0_0F91_P_0_LEN_0, 869 MOD_VEX_W_1_0F91_P_0_LEN_0, 870 MOD_VEX_W_0_0F91_P_2_LEN_0, 871 MOD_VEX_W_1_0F91_P_2_LEN_0, 872 MOD_VEX_W_0_0F92_P_0_LEN_0, 873 MOD_VEX_W_0_0F92_P_2_LEN_0, 874 MOD_VEX_W_0_0F92_P_3_LEN_0, 875 MOD_VEX_W_1_0F92_P_3_LEN_0, 876 MOD_VEX_W_0_0F93_P_0_LEN_0, 877 MOD_VEX_W_0_0F93_P_2_LEN_0, 878 MOD_VEX_W_0_0F93_P_3_LEN_0, 879 MOD_VEX_W_1_0F93_P_3_LEN_0, 880 MOD_VEX_W_0_0F98_P_0_LEN_0, 881 MOD_VEX_W_1_0F98_P_0_LEN_0, 882 MOD_VEX_W_0_0F98_P_2_LEN_0, 883 MOD_VEX_W_1_0F98_P_2_LEN_0, 884 MOD_VEX_W_0_0F99_P_0_LEN_0, 885 MOD_VEX_W_1_0F99_P_0_LEN_0, 886 MOD_VEX_W_0_0F99_P_2_LEN_0, 887 MOD_VEX_W_1_0F99_P_2_LEN_0, 812 888 MOD_VEX_0FAE_REG_2, 813 889 MOD_VEX_0FAE_REG_3, … … 824 900 MOD_VEX_0F388C_PREFIX_2, 825 901 MOD_VEX_0F388E_PREFIX_2, 902 MOD_VEX_W_0_0F3A30_P_2_LEN_0, 903 MOD_VEX_W_1_0F3A30_P_2_LEN_0, 904 MOD_VEX_W_0_0F3A31_P_2_LEN_0, 905 MOD_VEX_W_1_0F3A31_P_2_LEN_0, 906 MOD_VEX_W_0_0F3A32_P_2_LEN_0, 907 MOD_VEX_W_1_0F3A32_P_2_LEN_0, 908 MOD_VEX_W_0_0F3A33_P_2_LEN_0, 909 MOD_VEX_W_1_0F3A33_P_2_LEN_0, 826 910 827 911 MOD_EVEX_0F10_PREFIX_1, … … 849 933 RM_0F01_REG_2, 850 934 RM_0F01_REG_3, 935 RM_0F01_REG_5, 851 936 RM_0F01_REG_7, 852 937 RM_0FAE_REG_5, … … 907 992 PREFIX_0FBD, 908 993 PREFIX_0FC2, 909 PREFIX_0FC3, 910 PREFIX_0FC7_REG_6, 994 PREFIX_MOD_0_0FC3, 995 PREFIX_MOD_0_0FC7_REG_6, 996 PREFIX_MOD_3_0FC7_REG_6, 997 PREFIX_MOD_3_0FC7_REG_7, 911 998 PREFIX_0FD0, 912 999 PREFIX_0FD6, … … 1611 1698 X86_64_D4, 1612 1699 X86_64_D5, 1700 X86_64_E8, 1701 X86_64_E9, 1613 1702 X86_64_EA, 1614 1703 X86_64_0F01_REG_0, … … 2352 2441 int bytemode; 2353 2442 } op[MAX_OPERANDS]; 2443 unsigned int prefix_requirement; 2354 2444 }; 2355 2445 … … 2379 2469 'R' => print 'w', 'l' or 'q' ('d' for 'l' and 'e' in Intel mode) 2380 2470 'S' => print 'w', 'l' or 'q' if suffix_always is true 2381 'T' => print 'q' in 64bit mode and behave as 'P' otherwise 2382 'U' => print 'q' in 64bit mode and behave as 'Q' otherwise 2383 'V' => print 'q' in 64bit mode and behave as 'S' otherwise 2471 'T' => print 'q' in 64bit mode if instruction has no operand size 2472 prefix and behave as 'P' otherwise 2473 'U' => print 'q' in 64bit mode if instruction has no operand size 2474 prefix and behave as 'Q' otherwise 2475 'V' => print 'q' in 64bit mode if instruction has no operand size 2476 prefix and behave as 'S' otherwise 2384 2477 'W' => print 'b', 'w' or 'l' ('d' in Intel mode) 2385 2478 'X' => print 's', 'd' depending on data16 prefix (for XMM) … … 2389 2482 '!' => change condition from true to false or from false to true. 2390 2483 '%' => add 1 upper case letter to the macro. 2484 '^' => print 'w' or 'l' depending on operand size prefix or 2485 suffix_always is true (lcall/ljmp). 2486 '@' => print 'q' for Intel64 ISA, 'w' or 'q' for AMD64 ISA depending 2487 on operand size prefix. 2488 '&' => print 'q' in 64bit mode for Intel64 ISA or if instruction 2489 has no operand size prefix for AMD64 ISA, behave as 'P' 2490 otherwise 2391 2491 2392 2492 2 upper case letter macros: 2393 "XY" => print 'x' or 'y' if no register operands or suffix_always 2394 is true. 2493 "XY" => print 'x' or 'y' if suffix_always is true or no register 2494 operands and no broadcast. 2495 "XZ" => print 'x', 'y', or 'z' if suffix_always is true or no 2496 register operands and no broadcast. 2395 2497 "XW" => print 's', 'd' depending on the VEX.W bit (for FMA) 2396 2498 "LQ" => print 'l' ('d' in Intel mode) or 'q' for memory operand … … 2412 2514 static const struct dis386 dis386[] = { 2413 2515 /* 00 */ 2414 { "addB", { Ebh1, Gb } },2415 { "addS", { Evh1, Gv } },2416 { "addB", { Gb, EbS } },2417 { "addS", { Gv, EvS } },2418 { "addB", { AL, Ib } },2419 { "addS", { eAX, Iv } },2516 { "addB", { Ebh1, Gb }, 0 }, 2517 { "addS", { Evh1, Gv }, 0 }, 2518 { "addB", { Gb, EbS }, 0 }, 2519 { "addS", { Gv, EvS }, 0 }, 2520 { "addB", { AL, Ib }, 0 }, 2521 { "addS", { eAX, Iv }, 0 }, 2420 2522 { X86_64_TABLE (X86_64_06) }, 2421 2523 { X86_64_TABLE (X86_64_07) }, 2422 2524 /* 08 */ 2423 { "orB", { Ebh1, Gb } },2424 { "orS", { Evh1, Gv } },2425 { "orB", { Gb, EbS } },2426 { "orS", { Gv, EvS } },2427 { "orB", { AL, Ib } },2428 { "orS", { eAX, Iv } },2525 { "orB", { Ebh1, Gb }, 0 }, 2526 { "orS", { Evh1, Gv }, 0 }, 2527 { "orB", { Gb, EbS }, 0 }, 2528 { "orS", { Gv, EvS }, 0 }, 2529 { "orB", { AL, Ib }, 0 }, 2530 { "orS", { eAX, Iv }, 0 }, 2429 2531 { X86_64_TABLE (X86_64_0D) }, 2430 2532 { Bad_Opcode }, /* 0x0f extended opcode escape */ 2431 2533 /* 10 */ 2432 { "adcB", { Ebh1, Gb } },2433 { "adcS", { Evh1, Gv } },2434 { "adcB", { Gb, EbS } },2435 { "adcS", { Gv, EvS } },2436 { "adcB", { AL, Ib } },2437 { "adcS", { eAX, Iv } },2534 { "adcB", { Ebh1, Gb }, 0 }, 2535 { "adcS", { Evh1, Gv }, 0 }, 2536 { "adcB", { Gb, EbS }, 0 }, 2537 { "adcS", { Gv, EvS }, 0 }, 2538 { "adcB", { AL, Ib }, 0 }, 2539 { "adcS", { eAX, Iv }, 0 }, 2438 2540 { X86_64_TABLE (X86_64_16) }, 2439 2541 { X86_64_TABLE (X86_64_17) }, 2440 2542 /* 18 */ 2441 { "sbbB", { Ebh1, Gb } },2442 { "sbbS", { Evh1, Gv } },2443 { "sbbB", { Gb, EbS } },2444 { "sbbS", { Gv, EvS } },2445 { "sbbB", { AL, Ib } },2446 { "sbbS", { eAX, Iv } },2543 { "sbbB", { Ebh1, Gb }, 0 }, 2544 { "sbbS", { Evh1, Gv }, 0 }, 2545 { "sbbB", { Gb, EbS }, 0 }, 2546 { "sbbS", { Gv, EvS }, 0 }, 2547 { "sbbB", { AL, Ib }, 0 }, 2548 { "sbbS", { eAX, Iv }, 0 }, 2447 2549 { X86_64_TABLE (X86_64_1E) }, 2448 2550 { X86_64_TABLE (X86_64_1F) }, 2449 2551 /* 20 */ 2450 { "andB", { Ebh1, Gb } },2451 { "andS", { Evh1, Gv } },2452 { "andB", { Gb, EbS } },2453 { "andS", { Gv, EvS } },2454 { "andB", { AL, Ib } },2455 { "andS", { eAX, Iv } },2552 { "andB", { Ebh1, Gb }, 0 }, 2553 { "andS", { Evh1, Gv }, 0 }, 2554 { "andB", { Gb, EbS }, 0 }, 2555 { "andS", { Gv, EvS }, 0 }, 2556 { "andB", { AL, Ib }, 0 }, 2557 { "andS", { eAX, Iv }, 0 }, 2456 2558 { Bad_Opcode }, /* SEG ES prefix */ 2457 2559 { X86_64_TABLE (X86_64_27) }, 2458 2560 /* 28 */ 2459 { "subB", { Ebh1, Gb } },2460 { "subS", { Evh1, Gv } },2461 { "subB", { Gb, EbS } },2462 { "subS", { Gv, EvS } },2463 { "subB", { AL, Ib } },2464 { "subS", { eAX, Iv } },2561 { "subB", { Ebh1, Gb }, 0 }, 2562 { "subS", { Evh1, Gv }, 0 }, 2563 { "subB", { Gb, EbS }, 0 }, 2564 { "subS", { Gv, EvS }, 0 }, 2565 { "subB", { AL, Ib }, 0 }, 2566 { "subS", { eAX, Iv }, 0 }, 2465 2567 { Bad_Opcode }, /* SEG CS prefix */ 2466 2568 { X86_64_TABLE (X86_64_2F) }, 2467 2569 /* 30 */ 2468 { "xorB", { Ebh1, Gb } },2469 { "xorS", { Evh1, Gv } },2470 { "xorB", { Gb, EbS } },2471 { "xorS", { Gv, EvS } },2472 { "xorB", { AL, Ib } },2473 { "xorS", { eAX, Iv } },2570 { "xorB", { Ebh1, Gb }, 0 }, 2571 { "xorS", { Evh1, Gv }, 0 }, 2572 { "xorB", { Gb, EbS }, 0 }, 2573 { "xorS", { Gv, EvS }, 0 }, 2574 { "xorB", { AL, Ib }, 0 }, 2575 { "xorS", { eAX, Iv }, 0 }, 2474 2576 { Bad_Opcode }, /* SEG SS prefix */ 2475 2577 { X86_64_TABLE (X86_64_37) }, 2476 2578 /* 38 */ 2477 { "cmpB", { Eb, Gb } },2478 { "cmpS", { Ev, Gv } },2479 { "cmpB", { Gb, EbS } },2480 { "cmpS", { Gv, EvS } },2481 { "cmpB", { AL, Ib } },2482 { "cmpS", { eAX, Iv } },2579 { "cmpB", { Eb, Gb }, 0 }, 2580 { "cmpS", { Ev, Gv }, 0 }, 2581 { "cmpB", { Gb, EbS }, 0 }, 2582 { "cmpS", { Gv, EvS }, 0 }, 2583 { "cmpB", { AL, Ib }, 0 }, 2584 { "cmpS", { eAX, Iv }, 0 }, 2483 2585 { Bad_Opcode }, /* SEG DS prefix */ 2484 2586 { X86_64_TABLE (X86_64_3F) }, 2485 2587 /* 40 */ 2486 { "inc{S|}", { RMeAX } },2487 { "inc{S|}", { RMeCX } },2488 { "inc{S|}", { RMeDX } },2489 { "inc{S|}", { RMeBX } },2490 { "inc{S|}", { RMeSP } },2491 { "inc{S|}", { RMeBP } },2492 { "inc{S|}", { RMeSI } },2493 { "inc{S|}", { RMeDI } },2588 { "inc{S|}", { RMeAX }, 0 }, 2589 { "inc{S|}", { RMeCX }, 0 }, 2590 { "inc{S|}", { RMeDX }, 0 }, 2591 { "inc{S|}", { RMeBX }, 0 }, 2592 { "inc{S|}", { RMeSP }, 0 }, 2593 { "inc{S|}", { RMeBP }, 0 }, 2594 { "inc{S|}", { RMeSI }, 0 }, 2595 { "inc{S|}", { RMeDI }, 0 }, 2494 2596 /* 48 */ 2495 { "dec{S|}", { RMeAX } },2496 { "dec{S|}", { RMeCX } },2497 { "dec{S|}", { RMeDX } },2498 { "dec{S|}", { RMeBX } },2499 { "dec{S|}", { RMeSP } },2500 { "dec{S|}", { RMeBP } },2501 { "dec{S|}", { RMeSI } },2502 { "dec{S|}", { RMeDI } },2597 { "dec{S|}", { RMeAX }, 0 }, 2598 { "dec{S|}", { RMeCX }, 0 }, 2599 { "dec{S|}", { RMeDX }, 0 }, 2600 { "dec{S|}", { RMeBX }, 0 }, 2601 { "dec{S|}", { RMeSP }, 0 }, 2602 { "dec{S|}", { RMeBP }, 0 }, 2603 { "dec{S|}", { RMeSI }, 0 }, 2604 { "dec{S|}", { RMeDI }, 0 }, 2503 2605 /* 50 */ 2504 { "pushV", { RMrAX } },2505 { "pushV", { RMrCX } },2506 { "pushV", { RMrDX } },2507 { "pushV", { RMrBX } },2508 { "pushV", { RMrSP } },2509 { "pushV", { RMrBP } },2510 { "pushV", { RMrSI } },2511 { "pushV", { RMrDI } },2606 { "pushV", { RMrAX }, 0 }, 2607 { "pushV", { RMrCX }, 0 }, 2608 { "pushV", { RMrDX }, 0 }, 2609 { "pushV", { RMrBX }, 0 }, 2610 { "pushV", { RMrSP }, 0 }, 2611 { "pushV", { RMrBP }, 0 }, 2612 { "pushV", { RMrSI }, 0 }, 2613 { "pushV", { RMrDI }, 0 }, 2512 2614 /* 58 */ 2513 { "popV", { RMrAX } },2514 { "popV", { RMrCX } },2515 { "popV", { RMrDX } },2516 { "popV", { RMrBX } },2517 { "popV", { RMrSP } },2518 { "popV", { RMrBP } },2519 { "popV", { RMrSI } },2520 { "popV", { RMrDI } },2615 { "popV", { RMrAX }, 0 }, 2616 { "popV", { RMrCX }, 0 }, 2617 { "popV", { RMrDX }, 0 }, 2618 { "popV", { RMrBX }, 0 }, 2619 { "popV", { RMrSP }, 0 }, 2620 { "popV", { RMrBP }, 0 }, 2621 { "popV", { RMrSI }, 0 }, 2622 { "popV", { RMrDI }, 0 }, 2521 2623 /* 60 */ 2522 2624 { X86_64_TABLE (X86_64_60) }, … … 2529 2631 { Bad_Opcode }, /* adr size prefix */ 2530 2632 /* 68 */ 2531 { "pushT", { sIv } },2532 { "imulS", { Gv, Ev, Iv } },2533 { "pushT", { sIbT } },2534 { "imulS", { Gv, Ev, sIb } },2535 { "ins{b|}", { Ybr, indirDX } },2633 { "pushT", { sIv }, 0 }, 2634 { "imulS", { Gv, Ev, Iv }, 0 }, 2635 { "pushT", { sIbT }, 0 }, 2636 { "imulS", { Gv, Ev, sIb }, 0 }, 2637 { "ins{b|}", { Ybr, indirDX }, 0 }, 2536 2638 { X86_64_TABLE (X86_64_6D) }, 2537 { "outs{b|}", { indirDXr, Xb } },2639 { "outs{b|}", { indirDXr, Xb }, 0 }, 2538 2640 { X86_64_TABLE (X86_64_6F) }, 2539 2641 /* 70 */ 2540 { "joH", { Jb, BND, cond_jump_flag } },2541 { "jnoH", { Jb, BND, cond_jump_flag } },2542 { "jbH", { Jb, BND, cond_jump_flag } },2543 { "jaeH", { Jb, BND, cond_jump_flag } },2544 { "jeH", { Jb, BND, cond_jump_flag } },2545 { "jneH", { Jb, BND, cond_jump_flag } },2546 { "jbeH", { Jb, BND, cond_jump_flag } },2547 { "jaH", { Jb, BND, cond_jump_flag } },2642 { "joH", { Jb, BND, cond_jump_flag }, 0 }, 2643 { "jnoH", { Jb, BND, cond_jump_flag }, 0 }, 2644 { "jbH", { Jb, BND, cond_jump_flag }, 0 }, 2645 { "jaeH", { Jb, BND, cond_jump_flag }, 0 }, 2646 { "jeH", { Jb, BND, cond_jump_flag }, 0 }, 2647 { "jneH", { Jb, BND, cond_jump_flag }, 0 }, 2648 { "jbeH", { Jb, BND, cond_jump_flag }, 0 }, 2649 { "jaH", { Jb, BND, cond_jump_flag }, 0 }, 2548 2650 /* 78 */ 2549 { "jsH", { Jb, BND, cond_jump_flag } },2550 { "jnsH", { Jb, BND, cond_jump_flag } },2551 { "jpH", { Jb, BND, cond_jump_flag } },2552 { "jnpH", { Jb, BND, cond_jump_flag } },2553 { "jlH", { Jb, BND, cond_jump_flag } },2554 { "jgeH", { Jb, BND, cond_jump_flag } },2555 { "jleH", { Jb, BND, cond_jump_flag } },2556 { "jgH", { Jb, BND, cond_jump_flag } },2651 { "jsH", { Jb, BND, cond_jump_flag }, 0 }, 2652 { "jnsH", { Jb, BND, cond_jump_flag }, 0 }, 2653 { "jpH", { Jb, BND, cond_jump_flag }, 0 }, 2654 { "jnpH", { Jb, BND, cond_jump_flag }, 0 }, 2655 { "jlH", { Jb, BND, cond_jump_flag }, 0 }, 2656 { "jgeH", { Jb, BND, cond_jump_flag }, 0 }, 2657 { "jleH", { Jb, BND, cond_jump_flag }, 0 }, 2658 { "jgH", { Jb, BND, cond_jump_flag }, 0 }, 2557 2659 /* 80 */ 2558 2660 { REG_TABLE (REG_80) }, … … 2560 2662 { Bad_Opcode }, 2561 2663 { REG_TABLE (REG_82) }, 2562 { "testB", { Eb, Gb } },2563 { "testS", { Ev, Gv } },2564 { "xchgB", { Ebh2, Gb } },2565 { "xchgS", { Evh2, Gv } },2664 { "testB", { Eb, Gb }, 0 }, 2665 { "testS", { Ev, Gv }, 0 }, 2666 { "xchgB", { Ebh2, Gb }, 0 }, 2667 { "xchgS", { Evh2, Gv }, 0 }, 2566 2668 /* 88 */ 2567 { "movB", { Ebh3, Gb } },2568 { "movS", { Evh3, Gv } },2569 { "movB", { Gb, EbS } },2570 { "movS", { Gv, EvS } },2571 { "movD", { Sv, Sw } },2669 { "movB", { Ebh3, Gb }, 0 }, 2670 { "movS", { Evh3, Gv }, 0 }, 2671 { "movB", { Gb, EbS }, 0 }, 2672 { "movS", { Gv, EvS }, 0 }, 2673 { "movD", { Sv, Sw }, 0 }, 2572 2674 { MOD_TABLE (MOD_8D) }, 2573 { "movD", { Sw, Sv } },2675 { "movD", { Sw, Sv }, 0 }, 2574 2676 { REG_TABLE (REG_8F) }, 2575 2677 /* 90 */ 2576 2678 { PREFIX_TABLE (PREFIX_90) }, 2577 { "xchgS", { RMeCX, eAX } },2578 { "xchgS", { RMeDX, eAX } },2579 { "xchgS", { RMeBX, eAX } },2580 { "xchgS", { RMeSP, eAX } },2581 { "xchgS", { RMeBP, eAX } },2582 { "xchgS", { RMeSI, eAX } },2583 { "xchgS", { RMeDI, eAX } },2679 { "xchgS", { RMeCX, eAX }, 0 }, 2680 { "xchgS", { RMeDX, eAX }, 0 }, 2681 { "xchgS", { RMeBX, eAX }, 0 }, 2682 { "xchgS", { RMeSP, eAX }, 0 }, 2683 { "xchgS", { RMeBP, eAX }, 0 }, 2684 { "xchgS", { RMeSI, eAX }, 0 }, 2685 { "xchgS", { RMeDI, eAX }, 0 }, 2584 2686 /* 98 */ 2585 { "cW{t|}R", { XX } },2586 { "cR{t|}O", { XX } },2687 { "cW{t|}R", { XX }, 0 }, 2688 { "cR{t|}O", { XX }, 0 }, 2587 2689 { X86_64_TABLE (X86_64_9A) }, 2588 2690 { Bad_Opcode }, /* fwait */ 2589 { "pushfT", { XX } },2590 { "popfT", { XX } },2591 { "sahf", { XX } },2592 { "lahf", { XX } },2691 { "pushfT", { XX }, 0 }, 2692 { "popfT", { XX }, 0 }, 2693 { "sahf", { XX }, 0 }, 2694 { "lahf", { XX }, 0 }, 2593 2695 /* a0 */ 2594 { "mov%LB", { AL, Ob } },2595 { "mov%LS", { eAX, Ov } },2596 { "mov%LB", { Ob, AL } },2597 { "mov%LS", { Ov, eAX } },2598 { "movs{b|}", { Ybr, Xb } },2599 { "movs{R|}", { Yvr, Xv } },2600 { "cmps{b|}", { Xb, Yb } },2601 { "cmps{R|}", { Xv, Yv } },2696 { "mov%LB", { AL, Ob }, 0 }, 2697 { "mov%LS", { eAX, Ov }, 0 }, 2698 { "mov%LB", { Ob, AL }, 0 }, 2699 { "mov%LS", { Ov, eAX }, 0 }, 2700 { "movs{b|}", { Ybr, Xb }, 0 }, 2701 { "movs{R|}", { Yvr, Xv }, 0 }, 2702 { "cmps{b|}", { Xb, Yb }, 0 }, 2703 { "cmps{R|}", { Xv, Yv }, 0 }, 2602 2704 /* a8 */ 2603 { "testB", { AL, Ib } },2604 { "testS", { eAX, Iv } },2605 { "stosB", { Ybr, AL } },2606 { "stosS", { Yvr, eAX } },2607 { "lodsB", { ALr, Xb } },2608 { "lodsS", { eAXr, Xv } },2609 { "scasB", { AL, Yb } },2610 { "scasS", { eAX, Yv } },2705 { "testB", { AL, Ib }, 0 }, 2706 { "testS", { eAX, Iv }, 0 }, 2707 { "stosB", { Ybr, AL }, 0 }, 2708 { "stosS", { Yvr, eAX }, 0 }, 2709 { "lodsB", { ALr, Xb }, 0 }, 2710 { "lodsS", { eAXr, Xv }, 0 }, 2711 { "scasB", { AL, Yb }, 0 }, 2712 { "scasS", { eAX, Yv }, 0 }, 2611 2713 /* b0 */ 2612 { "movB", { RMAL, Ib } },2613 { "movB", { RMCL, Ib } },2614 { "movB", { RMDL, Ib } },2615 { "movB", { RMBL, Ib } },2616 { "movB", { RMAH, Ib } },2617 { "movB", { RMCH, Ib } },2618 { "movB", { RMDH, Ib } },2619 { "movB", { RMBH, Ib } },2714 { "movB", { RMAL, Ib }, 0 }, 2715 { "movB", { RMCL, Ib }, 0 }, 2716 { "movB", { RMDL, Ib }, 0 }, 2717 { "movB", { RMBL, Ib }, 0 }, 2718 { "movB", { RMAH, Ib }, 0 }, 2719 { "movB", { RMCH, Ib }, 0 }, 2720 { "movB", { RMDH, Ib }, 0 }, 2721 { "movB", { RMBH, Ib }, 0 }, 2620 2722 /* b8 */ 2621 { "mov%LV", { RMeAX, Iv64 } },2622 { "mov%LV", { RMeCX, Iv64 } },2623 { "mov%LV", { RMeDX, Iv64 } },2624 { "mov%LV", { RMeBX, Iv64 } },2625 { "mov%LV", { RMeSP, Iv64 } },2626 { "mov%LV", { RMeBP, Iv64 } },2627 { "mov%LV", { RMeSI, Iv64 } },2628 { "mov%LV", { RMeDI, Iv64 } },2723 { "mov%LV", { RMeAX, Iv64 }, 0 }, 2724 { "mov%LV", { RMeCX, Iv64 }, 0 }, 2725 { "mov%LV", { RMeDX, Iv64 }, 0 }, 2726 { "mov%LV", { RMeBX, Iv64 }, 0 }, 2727 { "mov%LV", { RMeSP, Iv64 }, 0 }, 2728 { "mov%LV", { RMeBP, Iv64 }, 0 }, 2729 { "mov%LV", { RMeSI, Iv64 }, 0 }, 2730 { "mov%LV", { RMeDI, Iv64 }, 0 }, 2629 2731 /* c0 */ 2630 2732 { REG_TABLE (REG_C0) }, 2631 2733 { REG_TABLE (REG_C1) }, 2632 { "retT", { Iw, BND } },2633 { "retT", { BND } },2734 { "retT", { Iw, BND }, 0 }, 2735 { "retT", { BND }, 0 }, 2634 2736 { X86_64_TABLE (X86_64_C4) }, 2635 2737 { X86_64_TABLE (X86_64_C5) }, … … 2637 2739 { REG_TABLE (REG_C7) }, 2638 2740 /* c8 */ 2639 { "enterT", { Iw, Ib } },2640 { "leaveT", { XX } },2641 { "Jret{|f}P", { Iw } },2642 { "Jret{|f}P", { XX } },2643 { "int3", { XX } },2644 { "int", { Ib } },2741 { "enterT", { Iw, Ib }, 0 }, 2742 { "leaveT", { XX }, 0 }, 2743 { "Jret{|f}P", { Iw }, 0 }, 2744 { "Jret{|f}P", { XX }, 0 }, 2745 { "int3", { XX }, 0 }, 2746 { "int", { Ib }, 0 }, 2645 2747 { X86_64_TABLE (X86_64_CE) }, 2646 { "iret%LP", { XX } },2748 { "iret%LP", { XX }, 0 }, 2647 2749 /* d0 */ 2648 2750 { REG_TABLE (REG_D0) }, … … 2653 2755 { X86_64_TABLE (X86_64_D5) }, 2654 2756 { Bad_Opcode }, 2655 { "xlat", { DSBX } },2757 { "xlat", { DSBX }, 0 }, 2656 2758 /* d8 */ 2657 2759 { FLOAT }, … … 2664 2766 { FLOAT }, 2665 2767 /* e0 */ 2666 { "loopneFH", { Jb, XX, loop_jcxz_flag } },2667 { "loopeFH", { Jb, XX, loop_jcxz_flag } },2668 { "loopFH", { Jb, XX, loop_jcxz_flag } },2669 { "jEcxzH", { Jb, XX, loop_jcxz_flag } },2670 { "inB", { AL, Ib } },2671 { "inG", { zAX, Ib } },2672 { "outB", { Ib, AL } },2673 { "outG", { Ib, zAX } },2768 { "loopneFH", { Jb, XX, loop_jcxz_flag }, 0 }, 2769 { "loopeFH", { Jb, XX, loop_jcxz_flag }, 0 }, 2770 { "loopFH", { Jb, XX, loop_jcxz_flag }, 0 }, 2771 { "jEcxzH", { Jb, XX, loop_jcxz_flag }, 0 }, 2772 { "inB", { AL, Ib }, 0 }, 2773 { "inG", { zAX, Ib }, 0 }, 2774 { "outB", { Ib, AL }, 0 }, 2775 { "outG", { Ib, zAX }, 0 }, 2674 2776 /* e8 */ 2675 { "callT", { Jv, BND }},2676 { "jmpT", { Jv, BND }},2777 { X86_64_TABLE (X86_64_E8) }, 2778 { X86_64_TABLE (X86_64_E9) }, 2677 2779 { X86_64_TABLE (X86_64_EA) }, 2678 { "jmp", { Jb, BND } },2679 { "inB", { AL, indirDX } },2680 { "inG", { zAX, indirDX } },2681 { "outB", { indirDX, AL } },2682 { "outG", { indirDX, zAX } },2780 { "jmp", { Jb, BND }, 0 }, 2781 { "inB", { AL, indirDX }, 0 }, 2782 { "inG", { zAX, indirDX }, 0 }, 2783 { "outB", { indirDX, AL }, 0 }, 2784 { "outG", { indirDX, zAX }, 0 }, 2683 2785 /* f0 */ 2684 2786 { Bad_Opcode }, /* lock prefix */ 2685 { "icebp", { XX } },2787 { "icebp", { XX }, 0 }, 2686 2788 { Bad_Opcode }, /* repne */ 2687 2789 { Bad_Opcode }, /* repz */ 2688 { "hlt", { XX } },2689 { "cmc", { XX } },2790 { "hlt", { XX }, 0 }, 2791 { "cmc", { XX }, 0 }, 2690 2792 { REG_TABLE (REG_F6) }, 2691 2793 { REG_TABLE (REG_F7) }, 2692 2794 /* f8 */ 2693 { "clc", { XX } },2694 { "stc", { XX } },2695 { "cli", { XX } },2696 { "sti", { XX } },2697 { "cld", { XX } },2698 { "std", { XX } },2795 { "clc", { XX }, 0 }, 2796 { "stc", { XX }, 0 }, 2797 { "cli", { XX }, 0 }, 2798 { "sti", { XX }, 0 }, 2799 { "cld", { XX }, 0 }, 2800 { "std", { XX }, 0 }, 2699 2801 { REG_TABLE (REG_FE) }, 2700 2802 { REG_TABLE (REG_FF) }, … … 2705 2807 { REG_TABLE (REG_0F00 ) }, 2706 2808 { REG_TABLE (REG_0F01 ) }, 2707 { "larS", { Gv, Ew } },2708 { "lslS", { Gv, Ew } },2809 { "larS", { Gv, Ew }, 0 }, 2810 { "lslS", { Gv, Ew }, 0 }, 2709 2811 { Bad_Opcode }, 2710 { "syscall", { XX } },2711 { "clts", { XX } },2712 { "sysret%LP", { XX } },2812 { "syscall", { XX }, 0 }, 2813 { "clts", { XX }, 0 }, 2814 { "sysret%LP", { XX }, 0 }, 2713 2815 /* 08 */ 2714 { "invd", { XX } },2715 { "wbinvd", { XX } },2816 { "invd", { XX }, 0 }, 2817 { "wbinvd", { XX }, 0 }, 2716 2818 { Bad_Opcode }, 2717 { "ud2", { XX } },2819 { "ud2", { XX }, 0 }, 2718 2820 { Bad_Opcode }, 2719 2821 { REG_TABLE (REG_0F0D) }, 2720 { "femms", { XX } },2721 { "", { MX, EM, OPSUF } }, /* See OP_3DNowSuffix. */2822 { "femms", { XX }, 0 }, 2823 { "", { MX, EM, OPSUF }, 0 }, /* See OP_3DNowSuffix. */ 2722 2824 /* 10 */ 2723 2825 { PREFIX_TABLE (PREFIX_0F10) }, … … 2725 2827 { PREFIX_TABLE (PREFIX_0F12) }, 2726 2828 { MOD_TABLE (MOD_0F13) }, 2727 { "unpcklpX", { XM, EXx } },2728 { "unpckhpX", { XM, EXx } },2829 { "unpcklpX", { XM, EXx }, PREFIX_OPCODE }, 2830 { "unpckhpX", { XM, EXx }, PREFIX_OPCODE }, 2729 2831 { PREFIX_TABLE (PREFIX_0F16) }, 2730 2832 { MOD_TABLE (MOD_0F17) }, 2731 2833 /* 18 */ 2732 2834 { REG_TABLE (REG_0F18) }, 2733 { "nopQ", { Ev } },2835 { "nopQ", { Ev }, 0 }, 2734 2836 { PREFIX_TABLE (PREFIX_0F1A) }, 2735 2837 { PREFIX_TABLE (PREFIX_0F1B) }, 2736 { "nopQ", { Ev } },2737 { "nopQ", { Ev } },2738 { "nopQ", { Ev } },2739 { "nopQ", { Ev } },2838 { "nopQ", { Ev }, 0 }, 2839 { "nopQ", { Ev }, 0 }, 2840 { "nopQ", { Ev }, 0 }, 2841 { "nopQ", { Ev }, 0 }, 2740 2842 /* 20 */ 2741 { "movZ", { Rm, Cm } },2742 { "movZ", { Rm, Dm } },2743 { "movZ", { Cm, Rm } },2744 { "movZ", { Dm, Rm } },2843 { "movZ", { Rm, Cm }, 0 }, 2844 { "movZ", { Rm, Dm }, 0 }, 2845 { "movZ", { Cm, Rm }, 0 }, 2846 { "movZ", { Dm, Rm }, 0 }, 2745 2847 { MOD_TABLE (MOD_0F24) }, 2746 2848 { Bad_Opcode }, … … 2748 2850 { Bad_Opcode }, 2749 2851 /* 28 */ 2750 { "movapX", { XM, EXx } },2751 { "movapX", { EXxS, XM } },2852 { "movapX", { XM, EXx }, PREFIX_OPCODE }, 2853 { "movapX", { EXxS, XM }, PREFIX_OPCODE }, 2752 2854 { PREFIX_TABLE (PREFIX_0F2A) }, 2753 2855 { PREFIX_TABLE (PREFIX_0F2B) }, … … 2757 2859 { PREFIX_TABLE (PREFIX_0F2F) }, 2758 2860 /* 30 */ 2759 { "wrmsr", { XX } },2760 { "rdtsc", { XX } },2761 { "rdmsr", { XX } },2762 { "rdpmc", { XX } },2763 { "sysenter", { XX } },2764 { "sysexit", { XX } },2861 { "wrmsr", { XX }, 0 }, 2862 { "rdtsc", { XX }, 0 }, 2863 { "rdmsr", { XX }, 0 }, 2864 { "rdpmc", { XX }, 0 }, 2865 { "sysenter", { XX }, 0 }, 2866 { "sysexit", { XX }, 0 }, 2765 2867 { Bad_Opcode }, 2766 { "getsec", { XX } },2868 { "getsec", { XX }, 0 }, 2767 2869 /* 38 */ 2768 { THREE_BYTE_TABLE (THREE_BYTE_0F38) },2870 { THREE_BYTE_TABLE_PREFIX (THREE_BYTE_0F38, PREFIX_OPCODE) }, 2769 2871 { Bad_Opcode }, 2770 { THREE_BYTE_TABLE (THREE_BYTE_0F3A) },2872 { THREE_BYTE_TABLE_PREFIX (THREE_BYTE_0F3A, PREFIX_OPCODE) }, 2771 2873 { Bad_Opcode }, 2772 2874 { Bad_Opcode }, … … 2775 2877 { Bad_Opcode }, 2776 2878 /* 40 */ 2777 { "cmovoS", { Gv, Ev } },2778 { "cmovnoS", { Gv, Ev } },2779 { "cmovbS", { Gv, Ev } },2780 { "cmovaeS", { Gv, Ev } },2781 { "cmoveS", { Gv, Ev } },2782 { "cmovneS", { Gv, Ev } },2783 { "cmovbeS", { Gv, Ev } },2784 { "cmovaS", { Gv, Ev } },2879 { "cmovoS", { Gv, Ev }, 0 }, 2880 { "cmovnoS", { Gv, Ev }, 0 }, 2881 { "cmovbS", { Gv, Ev }, 0 }, 2882 { "cmovaeS", { Gv, Ev }, 0 }, 2883 { "cmoveS", { Gv, Ev }, 0 }, 2884 { "cmovneS", { Gv, Ev }, 0 }, 2885 { "cmovbeS", { Gv, Ev }, 0 }, 2886 { "cmovaS", { Gv, Ev }, 0 }, 2785 2887 /* 48 */ 2786 { "cmovsS", { Gv, Ev } },2787 { "cmovnsS", { Gv, Ev } },2788 { "cmovpS", { Gv, Ev } },2789 { "cmovnpS", { Gv, Ev } },2790 { "cmovlS", { Gv, Ev } },2791 { "cmovgeS", { Gv, Ev } },2792 { "cmovleS", { Gv, Ev } },2793 { "cmovgS", { Gv, Ev } },2888 { "cmovsS", { Gv, Ev }, 0 }, 2889 { "cmovnsS", { Gv, Ev }, 0 }, 2890 { "cmovpS", { Gv, Ev }, 0 }, 2891 { "cmovnpS", { Gv, Ev }, 0 }, 2892 { "cmovlS", { Gv, Ev }, 0 }, 2893 { "cmovgeS", { Gv, Ev }, 0 }, 2894 { "cmovleS", { Gv, Ev }, 0 }, 2895 { "cmovgS", { Gv, Ev }, 0 }, 2794 2896 /* 50 */ 2795 2897 { MOD_TABLE (MOD_0F51) }, … … 2797 2899 { PREFIX_TABLE (PREFIX_0F52) }, 2798 2900 { PREFIX_TABLE (PREFIX_0F53) }, 2799 { "andpX", { XM, EXx } },2800 { "andnpX", { XM, EXx } },2801 { "orpX", { XM, EXx } },2802 { "xorpX", { XM, EXx } },2901 { "andpX", { XM, EXx }, PREFIX_OPCODE }, 2902 { "andnpX", { XM, EXx }, PREFIX_OPCODE }, 2903 { "orpX", { XM, EXx }, PREFIX_OPCODE }, 2904 { "xorpX", { XM, EXx }, PREFIX_OPCODE }, 2803 2905 /* 58 */ 2804 2906 { PREFIX_TABLE (PREFIX_0F58) }, … … 2814 2916 { PREFIX_TABLE (PREFIX_0F61) }, 2815 2917 { PREFIX_TABLE (PREFIX_0F62) }, 2816 { "packsswb", { MX, EM } },2817 { "pcmpgtb", { MX, EM } },2818 { "pcmpgtw", { MX, EM } },2819 { "pcmpgtd", { MX, EM } },2820 { "packuswb", { MX, EM } },2918 { "packsswb", { MX, EM }, PREFIX_OPCODE }, 2919 { "pcmpgtb", { MX, EM }, PREFIX_OPCODE }, 2920 { "pcmpgtw", { MX, EM }, PREFIX_OPCODE }, 2921 { "pcmpgtd", { MX, EM }, PREFIX_OPCODE }, 2922 { "packuswb", { MX, EM }, PREFIX_OPCODE }, 2821 2923 /* 68 */ 2822 { "punpckhbw", { MX, EM } },2823 { "punpckhwd", { MX, EM } },2824 { "punpckhdq", { MX, EM } },2825 { "packssdw", { MX, EM } },2924 { "punpckhbw", { MX, EM }, PREFIX_OPCODE }, 2925 { "punpckhwd", { MX, EM }, PREFIX_OPCODE }, 2926 { "punpckhdq", { MX, EM }, PREFIX_OPCODE }, 2927 { "packssdw", { MX, EM }, PREFIX_OPCODE }, 2826 2928 { PREFIX_TABLE (PREFIX_0F6C) }, 2827 2929 { PREFIX_TABLE (PREFIX_0F6D) }, 2828 { "movK", { MX, Edq } },2930 { "movK", { MX, Edq }, PREFIX_OPCODE }, 2829 2931 { PREFIX_TABLE (PREFIX_0F6F) }, 2830 2932 /* 70 */ … … 2833 2935 { REG_TABLE (REG_0F72) }, 2834 2936 { REG_TABLE (REG_0F73) }, 2835 { "pcmpeqb", { MX, EM } },2836 { "pcmpeqw", { MX, EM } },2837 { "pcmpeqd", { MX, EM } },2838 { "emms", { XX } },2937 { "pcmpeqb", { MX, EM }, PREFIX_OPCODE }, 2938 { "pcmpeqw", { MX, EM }, PREFIX_OPCODE }, 2939 { "pcmpeqd", { MX, EM }, PREFIX_OPCODE }, 2940 { "emms", { XX }, PREFIX_OPCODE }, 2839 2941 /* 78 */ 2840 2942 { PREFIX_TABLE (PREFIX_0F78) }, … … 2847 2949 { PREFIX_TABLE (PREFIX_0F7F) }, 2848 2950 /* 80 */ 2849 { "joH", { Jv, BND, cond_jump_flag } },2850 { "jnoH", { Jv, BND, cond_jump_flag } },2851 { "jbH", { Jv, BND, cond_jump_flag } },2852 { "jaeH", { Jv, BND, cond_jump_flag } },2853 { "jeH", { Jv, BND, cond_jump_flag } },2854 { "jneH", { Jv, BND, cond_jump_flag } },2855 { "jbeH", { Jv, BND, cond_jump_flag } },2856 { "jaH", { Jv, BND, cond_jump_flag } },2951 { "joH", { Jv, BND, cond_jump_flag }, 0 }, 2952 { "jnoH", { Jv, BND, cond_jump_flag }, 0 }, 2953 { "jbH", { Jv, BND, cond_jump_flag }, 0 }, 2954 { "jaeH", { Jv, BND, cond_jump_flag }, 0 }, 2955 { "jeH", { Jv, BND, cond_jump_flag }, 0 }, 2956 { "jneH", { Jv, BND, cond_jump_flag }, 0 }, 2957 { "jbeH", { Jv, BND, cond_jump_flag }, 0 }, 2958 { "jaH", { Jv, BND, cond_jump_flag }, 0 }, 2857 2959 /* 88 */ 2858 { "jsH", { Jv, BND, cond_jump_flag } },2859 { "jnsH", { Jv, BND, cond_jump_flag } },2860 { "jpH", { Jv, BND, cond_jump_flag } },2861 { "jnpH", { Jv, BND, cond_jump_flag } },2862 { "jlH", { Jv, BND, cond_jump_flag } },2863 { "jgeH", { Jv, BND, cond_jump_flag } },2864 { "jleH", { Jv, BND, cond_jump_flag } },2865 { "jgH", { Jv, BND, cond_jump_flag } },2960 { "jsH", { Jv, BND, cond_jump_flag }, 0 }, 2961 { "jnsH", { Jv, BND, cond_jump_flag }, 0 }, 2962 { "jpH", { Jv, BND, cond_jump_flag }, 0 }, 2963 { "jnpH", { Jv, BND, cond_jump_flag }, 0 }, 2964 { "jlH", { Jv, BND, cond_jump_flag }, 0 }, 2965 { "jgeH", { Jv, BND, cond_jump_flag }, 0 }, 2966 { "jleH", { Jv, BND, cond_jump_flag }, 0 }, 2967 { "jgH", { Jv, BND, cond_jump_flag }, 0 }, 2866 2968 /* 90 */ 2867 { "seto", { Eb } },2868 { "setno", { Eb } },2869 { "setb", { Eb } },2870 { "setae", { Eb } },2871 { "sete", { Eb } },2872 { "setne", { Eb } },2873 { "setbe", { Eb } },2874 { "seta", { Eb } },2969 { "seto", { Eb }, 0 }, 2970 { "setno", { Eb }, 0 }, 2971 { "setb", { Eb }, 0 }, 2972 { "setae", { Eb }, 0 }, 2973 { "sete", { Eb }, 0 }, 2974 { "setne", { Eb }, 0 }, 2975 { "setbe", { Eb }, 0 }, 2976 { "seta", { Eb }, 0 }, 2875 2977 /* 98 */ 2876 { "sets", { Eb } },2877 { "setns", { Eb } },2878 { "setp", { Eb } },2879 { "setnp", { Eb } },2880 { "setl", { Eb } },2881 { "setge", { Eb } },2882 { "setle", { Eb } },2883 { "setg", { Eb } },2978 { "sets", { Eb }, 0 }, 2979 { "setns", { Eb }, 0 }, 2980 { "setp", { Eb }, 0 }, 2981 { "setnp", { Eb }, 0 }, 2982 { "setl", { Eb }, 0 }, 2983 { "setge", { Eb }, 0 }, 2984 { "setle", { Eb }, 0 }, 2985 { "setg", { Eb }, 0 }, 2884 2986 /* a0 */ 2885 { "pushT", { fs } },2886 { "popT", { fs } },2887 { "cpuid", { XX } },2888 { "btS", { Ev, Gv } },2889 { "shldS", { Ev, Gv, Ib } },2890 { "shldS", { Ev, Gv, CL } },2987 { "pushT", { fs }, 0 }, 2988 { "popT", { fs }, 0 }, 2989 { "cpuid", { XX }, 0 }, 2990 { "btS", { Ev, Gv }, 0 }, 2991 { "shldS", { Ev, Gv, Ib }, 0 }, 2992 { "shldS", { Ev, Gv, CL }, 0 }, 2891 2993 { REG_TABLE (REG_0FA6) }, 2892 2994 { REG_TABLE (REG_0FA7) }, 2893 2995 /* a8 */ 2894 { "pushT", { gs } },2895 { "popT", { gs } },2896 { "rsm", { XX } },2897 { "btsS", { Evh1, Gv } },2898 { "shrdS", { Ev, Gv, Ib } },2899 { "shrdS", { Ev, Gv, CL } },2996 { "pushT", { gs }, 0 }, 2997 { "popT", { gs }, 0 }, 2998 { "rsm", { XX }, 0 }, 2999 { "btsS", { Evh1, Gv }, 0 }, 3000 { "shrdS", { Ev, Gv, Ib }, 0 }, 3001 { "shrdS", { Ev, Gv, CL }, 0 }, 2900 3002 { REG_TABLE (REG_0FAE) }, 2901 { "imulS", { Gv, Ev } },3003 { "imulS", { Gv, Ev }, 0 }, 2902 3004 /* b0 */ 2903 { "cmpxchgB", { Ebh1, Gb } },2904 { "cmpxchgS", { Evh1, Gv } },3005 { "cmpxchgB", { Ebh1, Gb }, 0 }, 3006 { "cmpxchgS", { Evh1, Gv }, 0 }, 2905 3007 { MOD_TABLE (MOD_0FB2) }, 2906 { "btrS", { Evh1, Gv } },3008 { "btrS", { Evh1, Gv }, 0 }, 2907 3009 { MOD_TABLE (MOD_0FB4) }, 2908 3010 { MOD_TABLE (MOD_0FB5) }, 2909 { "movz{bR|x}", { Gv, Eb } },2910 { "movz{wR|x}", { Gv, Ew } }, /* yes, there really is movzww ! */3011 { "movz{bR|x}", { Gv, Eb }, 0 }, 3012 { "movz{wR|x}", { Gv, Ew }, 0 }, /* yes, there really is movzww ! */ 2911 3013 /* b8 */ 2912 3014 { PREFIX_TABLE (PREFIX_0FB8) }, 2913 { "ud1", { XX } },3015 { "ud1", { XX }, 0 }, 2914 3016 { REG_TABLE (REG_0FBA) }, 2915 { "btcS", { Evh1, Gv } },3017 { "btcS", { Evh1, Gv }, 0 }, 2916 3018 { PREFIX_TABLE (PREFIX_0FBC) }, 2917 3019 { PREFIX_TABLE (PREFIX_0FBD) }, 2918 { "movs{bR|x}", { Gv, Eb } },2919 { "movs{wR|x}", { Gv, Ew } }, /* yes, there really is movsww ! */3020 { "movs{bR|x}", { Gv, Eb }, 0 }, 3021 { "movs{wR|x}", { Gv, Ew }, 0 }, /* yes, there really is movsww ! */ 2920 3022 /* c0 */ 2921 { "xaddB", { Ebh1, Gb } },2922 { "xaddS", { Evh1, Gv } },3023 { "xaddB", { Ebh1, Gb }, 0 }, 3024 { "xaddS", { Evh1, Gv }, 0 }, 2923 3025 { PREFIX_TABLE (PREFIX_0FC2) }, 2924 { PREFIX_TABLE (PREFIX_0FC3) },2925 { "pinsrw", { MX, Edqw, Ib } },2926 { "pextrw", { Gdq, MS, Ib } },2927 { "shufpX", { XM, EXx, Ib } },3026 { MOD_TABLE (MOD_0FC3) }, 3027 { "pinsrw", { MX, Edqw, Ib }, PREFIX_OPCODE }, 3028 { "pextrw", { Gdq, MS, Ib }, PREFIX_OPCODE }, 3029 { "shufpX", { XM, EXx, Ib }, PREFIX_OPCODE }, 2928 3030 { REG_TABLE (REG_0FC7) }, 2929 3031 /* c8 */ 2930 { "bswap", { RMeAX } },2931 { "bswap", { RMeCX } },2932 { "bswap", { RMeDX } },2933 { "bswap", { RMeBX } },2934 { "bswap", { RMeSP } },2935 { "bswap", { RMeBP } },2936 { "bswap", { RMeSI } },2937 { "bswap", { RMeDI } },3032 { "bswap", { RMeAX }, 0 }, 3033 { "bswap", { RMeCX }, 0 }, 3034 { "bswap", { RMeDX }, 0 }, 3035 { "bswap", { RMeBX }, 0 }, 3036 { "bswap", { RMeSP }, 0 }, 3037 { "bswap", { RMeBP }, 0 }, 3038 { "bswap", { RMeSI }, 0 }, 3039 { "bswap", { RMeDI }, 0 }, 2938 3040 /* d0 */ 2939 3041 { PREFIX_TABLE (PREFIX_0FD0) }, 2940 { "psrlw", { MX, EM } },2941 { "psrld", { MX, EM } },2942 { "psrlq", { MX, EM } },2943 { "paddq", { MX, EM } },2944 { "pmullw", { MX, EM } },3042 { "psrlw", { MX, EM }, PREFIX_OPCODE }, 3043 { "psrld", { MX, EM }, PREFIX_OPCODE }, 3044 { "psrlq", { MX, EM }, PREFIX_OPCODE }, 3045 { "paddq", { MX, EM }, PREFIX_OPCODE }, 3046 { "pmullw", { MX, EM }, PREFIX_OPCODE }, 2945 3047 { PREFIX_TABLE (PREFIX_0FD6) }, 2946 3048 { MOD_TABLE (MOD_0FD7) }, 2947 3049 /* d8 */ 2948 { "psubusb", { MX, EM } },2949 { "psubusw", { MX, EM } },2950 { "pminub", { MX, EM } },2951 { "pand", { MX, EM } },2952 { "paddusb", { MX, EM } },2953 { "paddusw", { MX, EM } },2954 { "pmaxub", { MX, EM } },2955 { "pandn", { MX, EM } },3050 { "psubusb", { MX, EM }, PREFIX_OPCODE }, 3051 { "psubusw", { MX, EM }, PREFIX_OPCODE }, 3052 { "pminub", { MX, EM }, PREFIX_OPCODE }, 3053 { "pand", { MX, EM }, PREFIX_OPCODE }, 3054 { "paddusb", { MX, EM }, PREFIX_OPCODE }, 3055 { "paddusw", { MX, EM }, PREFIX_OPCODE }, 3056 { "pmaxub", { MX, EM }, PREFIX_OPCODE }, 3057 { "pandn", { MX, EM }, PREFIX_OPCODE }, 2956 3058 /* e0 */ 2957 { "pavgb", { MX, EM } },2958 { "psraw", { MX, EM } },2959 { "psrad", { MX, EM } },2960 { "pavgw", { MX, EM } },2961 { "pmulhuw", { MX, EM } },2962 { "pmulhw", { MX, EM } },3059 { "pavgb", { MX, EM }, PREFIX_OPCODE }, 3060 { "psraw", { MX, EM }, PREFIX_OPCODE }, 3061 { "psrad", { MX, EM }, PREFIX_OPCODE }, 3062 { "pavgw", { MX, EM }, PREFIX_OPCODE }, 3063 { "pmulhuw", { MX, EM }, PREFIX_OPCODE }, 3064 { "pmulhw", { MX, EM }, PREFIX_OPCODE }, 2963 3065 { PREFIX_TABLE (PREFIX_0FE6) }, 2964 3066 { PREFIX_TABLE (PREFIX_0FE7) }, 2965 3067 /* e8 */ 2966 { "psubsb", { MX, EM } },2967 { "psubsw", { MX, EM } },2968 { "pminsw", { MX, EM } },2969 { "por", { MX, EM } },2970 { "paddsb", { MX, EM } },2971 { "paddsw", { MX, EM } },2972 { "pmaxsw", { MX, EM } },2973 { "pxor", { MX, EM } },3068 { "psubsb", { MX, EM }, PREFIX_OPCODE }, 3069 { "psubsw", { MX, EM }, PREFIX_OPCODE }, 3070 { "pminsw", { MX, EM }, PREFIX_OPCODE }, 3071 { "por", { MX, EM }, PREFIX_OPCODE }, 3072 { "paddsb", { MX, EM }, PREFIX_OPCODE }, 3073 { "paddsw", { MX, EM }, PREFIX_OPCODE }, 3074 { "pmaxsw", { MX, EM }, PREFIX_OPCODE }, 3075 { "pxor", { MX, EM }, PREFIX_OPCODE }, 2974 3076 /* f0 */ 2975 3077 { PREFIX_TABLE (PREFIX_0FF0) }, 2976 { "psllw", { MX, EM } },2977 { "pslld", { MX, EM } },2978 { "psllq", { MX, EM } },2979 { "pmuludq", { MX, EM } },2980 { "pmaddwd", { MX, EM } },2981 { "psadbw", { MX, EM } },3078 { "psllw", { MX, EM }, PREFIX_OPCODE }, 3079 { "pslld", { MX, EM }, PREFIX_OPCODE }, 3080 { "psllq", { MX, EM }, PREFIX_OPCODE }, 3081 { "pmuludq", { MX, EM }, PREFIX_OPCODE }, 3082 { "pmaddwd", { MX, EM }, PREFIX_OPCODE }, 3083 { "psadbw", { MX, EM }, PREFIX_OPCODE }, 2982 3084 { PREFIX_TABLE (PREFIX_0FF7) }, 2983 3085 /* f8 */ 2984 { "psubb", { MX, EM } },2985 { "psubw", { MX, EM } },2986 { "psubd", { MX, EM } },2987 { "psubq", { MX, EM } },2988 { "paddb", { MX, EM } },2989 { "paddw", { MX, EM } },2990 { "paddd", { MX, EM } },3086 { "psubb", { MX, EM }, PREFIX_OPCODE }, 3087 { "psubw", { MX, EM }, PREFIX_OPCODE }, 3088 { "psubd", { MX, EM }, PREFIX_OPCODE }, 3089 { "psubq", { MX, EM }, PREFIX_OPCODE }, 3090 { "paddb", { MX, EM }, PREFIX_OPCODE }, 3091 { "paddw", { MX, EM }, PREFIX_OPCODE }, 3092 { "paddd", { MX, EM }, PREFIX_OPCODE }, 2991 3093 { Bad_Opcode }, 2992 3094 }; … … 3038 3140 }; 3039 3141 3040 static const unsigned char twobyte_has_mandatory_prefix[256] = {3041 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */3042 /* ------------------------------- */3043 /* 00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0f */3044 /* 10 */ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* 1f */3045 /* 20 */ 0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0, /* 2f */3046 /* 30 */ 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 3f */3047 /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */3048 /* 50 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 5f */3049 /* 60 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 6f */3050 /* 70 */ 1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1, /* 7f */3051 /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */3052 /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */3053 /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */3054 /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */3055 /* c0 */ 0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0, /* cf */3056 /* d0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* df */3057 /* e0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ef */3058 /* f0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 /* ff */3059 /* ------------------------------- */3060 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */3061 };3062 3063 3142 static char obuf[100]; 3064 3143 static char *obufp; … … 3077 3156 static int last_seg_prefix; 3078 3157 static int fwait_prefix; 3079 /* The PREFIX_REPZ/PREFIX_REPNZ/PREFIX_DATA prefix is mandatory. */3080 static int mandatory_prefix;3081 3158 /* The active segment register prefix. */ 3082 3159 static int active_seg_prefix; … … 3301 3378 /* REG_80 */ 3302 3379 { 3303 { "addA", { Ebh1, Ib } },3304 { "orA", { Ebh1, Ib } },3305 { "adcA", { Ebh1, Ib } },3306 { "sbbA", { Ebh1, Ib } },3307 { "andA", { Ebh1, Ib } },3308 { "subA", { Ebh1, Ib } },3309 { "xorA", { Ebh1, Ib } },3310 { "cmpA", { Eb, Ib } },3380 { "addA", { Ebh1, Ib }, 0 }, 3381 { "orA", { Ebh1, Ib }, 0 }, 3382 { "adcA", { Ebh1, Ib }, 0 }, 3383 { "sbbA", { Ebh1, Ib }, 0 }, 3384 { "andA", { Ebh1, Ib }, 0 }, 3385 { "subA", { Ebh1, Ib }, 0 }, 3386 { "xorA", { Ebh1, Ib }, 0 }, 3387 { "cmpA", { Eb, Ib }, 0 }, 3311 3388 }, 3312 3389 /* REG_81 */ 3313 3390 { 3314 { "addQ", { Evh1, Iv } },3315 { "orQ", { Evh1, Iv } },3316 { "adcQ", { Evh1, Iv } },3317 { "sbbQ", { Evh1, Iv } },3318 { "andQ", { Evh1, Iv } },3319 { "subQ", { Evh1, Iv } },3320 { "xorQ", { Evh1, Iv } },3321 { "cmpQ", { Ev, Iv } },3391 { "addQ", { Evh1, Iv }, 0 }, 3392 { "orQ", { Evh1, Iv }, 0 }, 3393 { "adcQ", { Evh1, Iv }, 0 }, 3394 { "sbbQ", { Evh1, Iv }, 0 }, 3395 { "andQ", { Evh1, Iv }, 0 }, 3396 { "subQ", { Evh1, Iv }, 0 }, 3397 { "xorQ", { Evh1, Iv }, 0 }, 3398 { "cmpQ", { Ev, Iv }, 0 }, 3322 3399 }, 3323 3400 /* REG_82 */ 3324 3401 { 3325 { "addQ", { Evh1, sIb } },3326 { "orQ", { Evh1, sIb } },3327 { "adcQ", { Evh1, sIb } },3328 { "sbbQ", { Evh1, sIb } },3329 { "andQ", { Evh1, sIb } },3330 { "subQ", { Evh1, sIb } },3331 { "xorQ", { Evh1, sIb } },3332 { "cmpQ", { Ev, sIb } },3402 { "addQ", { Evh1, sIb }, 0 }, 3403 { "orQ", { Evh1, sIb }, 0 }, 3404 { "adcQ", { Evh1, sIb }, 0 }, 3405 { "sbbQ", { Evh1, sIb }, 0 }, 3406 { "andQ", { Evh1, sIb }, 0 }, 3407 { "subQ", { Evh1, sIb }, 0 }, 3408 { "xorQ", { Evh1, sIb }, 0 }, 3409 { "cmpQ", { Ev, sIb }, 0 }, 3333 3410 }, 3334 3411 /* REG_8F */ 3335 3412 { 3336 { "popU", { stackEv } },3413 { "popU", { stackEv }, 0 }, 3337 3414 { XOP_8F_TABLE (XOP_09) }, 3338 3415 { Bad_Opcode }, … … 3343 3420 /* REG_C0 */ 3344 3421 { 3345 { "rolA", { Eb, Ib } },3346 { "rorA", { Eb, Ib } },3347 { "rclA", { Eb, Ib } },3348 { "rcrA", { Eb, Ib } },3349 { "shlA", { Eb, Ib } },3350 { "shrA", { Eb, Ib } },3351 { Bad_Opcode }, 3352 { "sarA", { Eb, Ib } },3422 { "rolA", { Eb, Ib }, 0 }, 3423 { "rorA", { Eb, Ib }, 0 }, 3424 { "rclA", { Eb, Ib }, 0 }, 3425 { "rcrA", { Eb, Ib }, 0 }, 3426 { "shlA", { Eb, Ib }, 0 }, 3427 { "shrA", { Eb, Ib }, 0 }, 3428 { Bad_Opcode }, 3429 { "sarA", { Eb, Ib }, 0 }, 3353 3430 }, 3354 3431 /* REG_C1 */ 3355 3432 { 3356 { "rolQ", { Ev, Ib } },3357 { "rorQ", { Ev, Ib } },3358 { "rclQ", { Ev, Ib } },3359 { "rcrQ", { Ev, Ib } },3360 { "shlQ", { Ev, Ib } },3361 { "shrQ", { Ev, Ib } },3362 { Bad_Opcode }, 3363 { "sarQ", { Ev, Ib } },3433 { "rolQ", { Ev, Ib }, 0 }, 3434 { "rorQ", { Ev, Ib }, 0 }, 3435 { "rclQ", { Ev, Ib }, 0 }, 3436 { "rcrQ", { Ev, Ib }, 0 }, 3437 { "shlQ", { Ev, Ib }, 0 }, 3438 { "shrQ", { Ev, Ib }, 0 }, 3439 { Bad_Opcode }, 3440 { "sarQ", { Ev, Ib }, 0 }, 3364 3441 }, 3365 3442 /* REG_C6 */ 3366 3443 { 3367 { "movA", { Ebh3, Ib } },3444 { "movA", { Ebh3, Ib }, 0 }, 3368 3445 { Bad_Opcode }, 3369 3446 { Bad_Opcode }, … … 3376 3453 /* REG_C7 */ 3377 3454 { 3378 { "movQ", { Evh3, Iv } },3455 { "movQ", { Evh3, Iv }, 0 }, 3379 3456 { Bad_Opcode }, 3380 3457 { Bad_Opcode }, … … 3387 3464 /* REG_D0 */ 3388 3465 { 3389 { "rolA", { Eb, I1 } },3390 { "rorA", { Eb, I1 } },3391 { "rclA", { Eb, I1 } },3392 { "rcrA", { Eb, I1 } },3393 { "shlA", { Eb, I1 } },3394 { "shrA", { Eb, I1 } },3395 { Bad_Opcode }, 3396 { "sarA", { Eb, I1 } },3466 { "rolA", { Eb, I1 }, 0 }, 3467 { "rorA", { Eb, I1 }, 0 }, 3468 { "rclA", { Eb, I1 }, 0 }, 3469 { "rcrA", { Eb, I1 }, 0 }, 3470 { "shlA", { Eb, I1 }, 0 }, 3471 { "shrA", { Eb, I1 }, 0 }, 3472 { Bad_Opcode }, 3473 { "sarA", { Eb, I1 }, 0 }, 3397 3474 }, 3398 3475 /* REG_D1 */ 3399 3476 { 3400 { "rolQ", { Ev, I1 } },3401 { "rorQ", { Ev, I1 } },3402 { "rclQ", { Ev, I1 } },3403 { "rcrQ", { Ev, I1 } },3404 { "shlQ", { Ev, I1 } },3405 { "shrQ", { Ev, I1 } },3406 { Bad_Opcode }, 3407 { "sarQ", { Ev, I1 } },3477 { "rolQ", { Ev, I1 }, 0 }, 3478 { "rorQ", { Ev, I1 }, 0 }, 3479 { "rclQ", { Ev, I1 }, 0 }, 3480 { "rcrQ", { Ev, I1 }, 0 }, 3481 { "shlQ", { Ev, I1 }, 0 }, 3482 { "shrQ", { Ev, I1 }, 0 }, 3483 { Bad_Opcode }, 3484 { "sarQ", { Ev, I1 }, 0 }, 3408 3485 }, 3409 3486 /* REG_D2 */ 3410 3487 { 3411 { "rolA", { Eb, CL } },3412 { "rorA", { Eb, CL } },3413 { "rclA", { Eb, CL } },3414 { "rcrA", { Eb, CL } },3415 { "shlA", { Eb, CL } },3416 { "shrA", { Eb, CL } },3417 { Bad_Opcode }, 3418 { "sarA", { Eb, CL } },3488 { "rolA", { Eb, CL }, 0 }, 3489 { "rorA", { Eb, CL }, 0 }, 3490 { "rclA", { Eb, CL }, 0 }, 3491 { "rcrA", { Eb, CL }, 0 }, 3492 { "shlA", { Eb, CL }, 0 }, 3493 { "shrA", { Eb, CL }, 0 }, 3494 { Bad_Opcode }, 3495 { "sarA", { Eb, CL }, 0 }, 3419 3496 }, 3420 3497 /* REG_D3 */ 3421 3498 { 3422 { "rolQ", { Ev, CL } },3423 { "rorQ", { Ev, CL } },3424 { "rclQ", { Ev, CL } },3425 { "rcrQ", { Ev, CL } },3426 { "shlQ", { Ev, CL } },3427 { "shrQ", { Ev, CL } },3428 { Bad_Opcode }, 3429 { "sarQ", { Ev, CL } },3499 { "rolQ", { Ev, CL }, 0 }, 3500 { "rorQ", { Ev, CL }, 0 }, 3501 { "rclQ", { Ev, CL }, 0 }, 3502 { "rcrQ", { Ev, CL }, 0 }, 3503 { "shlQ", { Ev, CL }, 0 }, 3504 { "shrQ", { Ev, CL }, 0 }, 3505 { Bad_Opcode }, 3506 { "sarQ", { Ev, CL }, 0 }, 3430 3507 }, 3431 3508 /* REG_F6 */ 3432 3509 { 3433 { "testA", { Eb, Ib } },3434 { Bad_Opcode }, 3435 { "notA", { Ebh1 } },3436 { "negA", { Ebh1 } },3437 { "mulA", { Eb } }, /* Don't print the implicit %al register, */3438 { "imulA", { Eb } }, /* to distinguish these opcodes from other */3439 { "divA", { Eb } }, /* mul/imul opcodes. Do the same for div */3440 { "idivA", { Eb } }, /* and idiv for consistency. */3510 { "testA", { Eb, Ib }, 0 }, 3511 { Bad_Opcode }, 3512 { "notA", { Ebh1 }, 0 }, 3513 { "negA", { Ebh1 }, 0 }, 3514 { "mulA", { Eb }, 0 }, /* Don't print the implicit %al register, */ 3515 { "imulA", { Eb }, 0 }, /* to distinguish these opcodes from other */ 3516 { "divA", { Eb }, 0 }, /* mul/imul opcodes. Do the same for div */ 3517 { "idivA", { Eb }, 0 }, /* and idiv for consistency. */ 3441 3518 }, 3442 3519 /* REG_F7 */ 3443 3520 { 3444 { "testQ", { Ev, Iv } },3445 { Bad_Opcode }, 3446 { "notQ", { Evh1 } },3447 { "negQ", { Evh1 } },3448 { "mulQ", { Ev } }, /* Don't print the implicit register. */3449 { "imulQ", { Ev } },3450 { "divQ", { Ev } },3451 { "idivQ", { Ev } },3521 { "testQ", { Ev, Iv }, 0 }, 3522 { Bad_Opcode }, 3523 { "notQ", { Evh1 }, 0 }, 3524 { "negQ", { Evh1 }, 0 }, 3525 { "mulQ", { Ev }, 0 }, /* Don't print the implicit register. */ 3526 { "imulQ", { Ev }, 0 }, 3527 { "divQ", { Ev }, 0 }, 3528 { "idivQ", { Ev }, 0 }, 3452 3529 }, 3453 3530 /* REG_FE */ 3454 3531 { 3455 { "incA", { Ebh1 } },3456 { "decA", { Ebh1 } },3532 { "incA", { Ebh1 }, 0 }, 3533 { "decA", { Ebh1 }, 0 }, 3457 3534 }, 3458 3535 /* REG_FF */ 3459 3536 { 3460 { "incQ", { Evh1 } },3461 { "decQ", { Evh1 } },3462 { "call{ T|}", { indirEv, BND }},3537 { "incQ", { Evh1 }, 0 }, 3538 { "decQ", { Evh1 }, 0 }, 3539 { "call{&|}", { indirEv, BND }, 0 }, 3463 3540 { MOD_TABLE (MOD_FF_REG_3) }, 3464 { "jmp{ T|}", { indirEv, BND }},3541 { "jmp{&|}", { indirEv, BND }, 0 }, 3465 3542 { MOD_TABLE (MOD_FF_REG_5) }, 3466 { "pushU", { stackEv } },3543 { "pushU", { stackEv }, 0 }, 3467 3544 { Bad_Opcode }, 3468 3545 }, 3469 3546 /* REG_0F00 */ 3470 3547 { 3471 { "sldtD", { Sv } },3472 { "strD", { Sv } },3473 { "lldt", { Ew } },3474 { "ltr", { Ew } },3475 { "verr", { Ew } },3476 { "verw", { Ew } },3548 { "sldtD", { Sv }, 0 }, 3549 { "strD", { Sv }, 0 }, 3550 { "lldt", { Ew }, 0 }, 3551 { "ltr", { Ew }, 0 }, 3552 { "verr", { Ew }, 0 }, 3553 { "verw", { Ew }, 0 }, 3477 3554 { Bad_Opcode }, 3478 3555 { Bad_Opcode }, … … 3484 3561 { MOD_TABLE (MOD_0F01_REG_2) }, 3485 3562 { MOD_TABLE (MOD_0F01_REG_3) }, 3486 { "smswD", { Sv } },3487 { Bad_Opcode},3488 { "lmsw", { Ew } },3563 { "smswD", { Sv }, 0 }, 3564 { MOD_TABLE (MOD_0F01_REG_5) }, 3565 { "lmsw", { Ew }, 0 }, 3489 3566 { MOD_TABLE (MOD_0F01_REG_7) }, 3490 3567 }, 3491 3568 /* REG_0F0D */ 3492 3569 { 3493 { "prefetch", { Mb } },3494 { "prefetchw", { Mb } },3495 { "prefetchwt1", { Mb } },3496 { "prefetch", { Mb } },3497 { "prefetch", { Mb } },3498 { "prefetch", { Mb } },3499 { "prefetch", { Mb } },3500 { "prefetch", { Mb } },3570 { "prefetch", { Mb }, 0 }, 3571 { "prefetchw", { Mb }, 0 }, 3572 { "prefetchwt1", { Mb }, 0 }, 3573 { "prefetch", { Mb }, 0 }, 3574 { "prefetch", { Mb }, 0 }, 3575 { "prefetch", { Mb }, 0 }, 3576 { "prefetch", { Mb }, 0 }, 3577 { "prefetch", { Mb }, 0 }, 3501 3578 }, 3502 3579 /* REG_0F18 */ … … 3544 3621 /* REG_0FA6 */ 3545 3622 { 3546 { "montmul", { { OP_0f07, 0 } } },3547 { "xsha1", { { OP_0f07, 0 } } },3548 { "xsha256", { { OP_0f07, 0 } } },3623 { "montmul", { { OP_0f07, 0 } }, 0 }, 3624 { "xsha1", { { OP_0f07, 0 } }, 0 }, 3625 { "xsha256", { { OP_0f07, 0 } }, 0 }, 3549 3626 }, 3550 3627 /* REG_0FA7 */ 3551 3628 { 3552 { "xstore-rng", { { OP_0f07, 0 } } },3553 { "xcrypt-ecb", { { OP_0f07, 0 } } },3554 { "xcrypt-cbc", { { OP_0f07, 0 } } },3555 { "xcrypt-ctr", { { OP_0f07, 0 } } },3556 { "xcrypt-cfb", { { OP_0f07, 0 } } },3557 { "xcrypt-ofb", { { OP_0f07, 0 } } },3629 { "xstore-rng", { { OP_0f07, 0 } }, 0 }, 3630 { "xcrypt-ecb", { { OP_0f07, 0 } }, 0 }, 3631 { "xcrypt-cbc", { { OP_0f07, 0 } }, 0 }, 3632 { "xcrypt-ctr", { { OP_0f07, 0 } }, 0 }, 3633 { "xcrypt-cfb", { { OP_0f07, 0 } }, 0 }, 3634 { "xcrypt-ofb", { { OP_0f07, 0 } }, 0 }, 3558 3635 }, 3559 3636 /* REG_0FAE */ … … 3574 3651 { Bad_Opcode }, 3575 3652 { Bad_Opcode }, 3576 { "btQ", { Ev, Ib } },3577 { "btsQ", { Evh1, Ib } },3578 { "btrQ", { Evh1, Ib } },3579 { "btcQ", { Evh1, Ib } },3653 { "btQ", { Ev, Ib }, 0 }, 3654 { "btsQ", { Evh1, Ib }, 0 }, 3655 { "btrQ", { Evh1, Ib }, 0 }, 3656 { "btcQ", { Evh1, Ib }, 0 }, 3580 3657 }, 3581 3658 /* REG_0FC7 */ 3582 3659 { 3583 3660 { Bad_Opcode }, 3584 { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } } },3661 { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } }, 0 }, 3585 3662 { Bad_Opcode }, 3586 3663 { MOD_TABLE (MOD_0FC7_REG_3) }, … … 3637 3714 /* REG_XOP_LWPCB */ 3638 3715 { 3639 { "llwpcb", { { OP_LWPCB_E, 0 } } },3640 { "slwpcb", { { OP_LWPCB_E, 0 } } },3716 { "llwpcb", { { OP_LWPCB_E, 0 } }, 0 }, 3717 { "slwpcb", { { OP_LWPCB_E, 0 } }, 0 }, 3641 3718 }, 3642 3719 /* REG_XOP_LWP */ 3643 3720 { 3644 { "lwpins", { { OP_LWP_E, 0 }, Ed, Iq } },3645 { "lwpval", { { OP_LWP_E, 0 }, Ed, Iq } },3721 { "lwpins", { { OP_LWP_E, 0 }, Ed, Iq }, 0 }, 3722 { "lwpval", { { OP_LWP_E, 0 }, Ed, Iq }, 0 }, 3646 3723 }, 3647 3724 /* REG_XOP_TBM_01 */ 3648 3725 { 3649 3726 { Bad_Opcode }, 3650 { "blcfill", { { OP_LWP_E, 0 }, Ev } },3651 { "blsfill", { { OP_LWP_E, 0 }, Ev } },3652 { "blcs", { { OP_LWP_E, 0 }, Ev } },3653 { "tzmsk", { { OP_LWP_E, 0 }, Ev } },3654 { "blcic", { { OP_LWP_E, 0 }, Ev } },3655 { "blsic", { { OP_LWP_E, 0 }, Ev } },3656 { "t1mskc", { { OP_LWP_E, 0 }, Ev } },3727 { "blcfill", { { OP_LWP_E, 0 }, Ev }, 0 }, 3728 { "blsfill", { { OP_LWP_E, 0 }, Ev }, 0 }, 3729 { "blcs", { { OP_LWP_E, 0 }, Ev }, 0 }, 3730 { "tzmsk", { { OP_LWP_E, 0 }, Ev }, 0 }, 3731 { "blcic", { { OP_LWP_E, 0 }, Ev }, 0 }, 3732 { "blsic", { { OP_LWP_E, 0 }, Ev }, 0 }, 3733 { "t1mskc", { { OP_LWP_E, 0 }, Ev }, 0 }, 3657 3734 }, 3658 3735 /* REG_XOP_TBM_02 */ 3659 3736 { 3660 3737 { Bad_Opcode }, 3661 { "blcmsk", { { OP_LWP_E, 0 }, Ev } },3662 { Bad_Opcode }, 3663 { Bad_Opcode }, 3664 { Bad_Opcode }, 3665 { Bad_Opcode }, 3666 { "blci", { { OP_LWP_E, 0 }, Ev } },3738 { "blcmsk", { { OP_LWP_E, 0 }, Ev }, 0 }, 3739 { Bad_Opcode }, 3740 { Bad_Opcode }, 3741 { Bad_Opcode }, 3742 { Bad_Opcode }, 3743 { "blci", { { OP_LWP_E, 0 }, Ev }, 0 }, 3667 3744 }, 3668 3745 #define NEED_REG_TABLE … … 3674 3751 /* PREFIX_90 */ 3675 3752 { 3676 { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } }, 3677 { "pause", { XX } }, 3678 { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } }, 3753 { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } }, 0 }, 3754 { "pause", { XX }, 0 }, 3755 { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } }, 0 }, 3756 { NULL, { { NULL, 0 } }, PREFIX_IGNORED } 3679 3757 }, 3680 3758 3681 3759 /* PREFIX_0F10 */ 3682 3760 { 3683 { "movups", { XM, EXx } },3684 { "movss", { XM, EXd } },3685 { "movupd", { XM, EXx } },3686 { "movsd", { XM, EXq } },3761 { "movups", { XM, EXx }, PREFIX_OPCODE }, 3762 { "movss", { XM, EXd }, PREFIX_OPCODE }, 3763 { "movupd", { XM, EXx }, PREFIX_OPCODE }, 3764 { "movsd", { XM, EXq }, PREFIX_OPCODE }, 3687 3765 }, 3688 3766 3689 3767 /* PREFIX_0F11 */ 3690 3768 { 3691 { "movups", { EXxS, XM } },3692 { "movss", { EXdS, XM } },3693 { "movupd", { EXxS, XM } },3694 { "movsd", { EXqS, XM } },3769 { "movups", { EXxS, XM }, PREFIX_OPCODE }, 3770 { "movss", { EXdS, XM }, PREFIX_OPCODE }, 3771 { "movupd", { EXxS, XM }, PREFIX_OPCODE }, 3772 { "movsd", { EXqS, XM }, PREFIX_OPCODE }, 3695 3773 }, 3696 3774 … … 3698 3776 { 3699 3777 { MOD_TABLE (MOD_0F12_PREFIX_0) }, 3700 { "movsldup", { XM, EXx } },3701 { "movlpd", { XM, EXq } },3702 { "movddup", { XM, EXq } },3778 { "movsldup", { XM, EXx }, PREFIX_OPCODE }, 3779 { "movlpd", { XM, EXq }, PREFIX_OPCODE }, 3780 { "movddup", { XM, EXq }, PREFIX_OPCODE }, 3703 3781 }, 3704 3782 … … 3706 3784 { 3707 3785 { MOD_TABLE (MOD_0F16_PREFIX_0) }, 3708 { "movshdup", { XM, EXx } },3709 { "movhpd", { XM, EXq } },3786 { "movshdup", { XM, EXx }, PREFIX_OPCODE }, 3787 { "movhpd", { XM, EXq }, PREFIX_OPCODE }, 3710 3788 }, 3711 3789 … … 3713 3791 { 3714 3792 { MOD_TABLE (MOD_0F1A_PREFIX_0) }, 3715 { "bndcl", { Gbnd, Ev_bnd } },3716 { "bndmov", { Gbnd, Ebnd } },3717 { "bndcu", { Gbnd, Ev_bnd } },3793 { "bndcl", { Gbnd, Ev_bnd }, 0 }, 3794 { "bndmov", { Gbnd, Ebnd }, 0 }, 3795 { "bndcu", { Gbnd, Ev_bnd }, 0 }, 3718 3796 }, 3719 3797 … … 3722 3800 { MOD_TABLE (MOD_0F1B_PREFIX_0) }, 3723 3801 { MOD_TABLE (MOD_0F1B_PREFIX_1) }, 3724 { "bndmov", { Ebnd, Gbnd } },3725 { "bndcn", { Gbnd, Ev_bnd } },3802 { "bndmov", { Ebnd, Gbnd }, 0 }, 3803 { "bndcn", { Gbnd, Ev_bnd }, 0 }, 3726 3804 }, 3727 3805 3728 3806 /* PREFIX_0F2A */ 3729 3807 { 3730 { "cvtpi2ps", { XM, EMCq } },3731 { "cvtsi2ss%LQ", { XM, Ev } },3732 { "cvtpi2pd", { XM, EMCq } },3733 { "cvtsi2sd%LQ", { XM, Ev } },3808 { "cvtpi2ps", { XM, EMCq }, PREFIX_OPCODE }, 3809 { "cvtsi2ss%LQ", { XM, Ev }, PREFIX_OPCODE }, 3810 { "cvtpi2pd", { XM, EMCq }, PREFIX_OPCODE }, 3811 { "cvtsi2sd%LQ", { XM, Ev }, 0 }, 3734 3812 }, 3735 3813 … … 3744 3822 /* PREFIX_0F2C */ 3745 3823 { 3746 { "cvttps2pi", { MXC, EXq } },3747 { "cvttss2siY", { Gv, EXd } },3748 { "cvttpd2pi", { MXC, EXx } },3749 { "cvttsd2siY", { Gv, EXq } },3824 { "cvttps2pi", { MXC, EXq }, PREFIX_OPCODE }, 3825 { "cvttss2siY", { Gv, EXd }, PREFIX_OPCODE }, 3826 { "cvttpd2pi", { MXC, EXx }, PREFIX_OPCODE }, 3827 { "cvttsd2siY", { Gv, EXq }, PREFIX_OPCODE }, 3750 3828 }, 3751 3829 3752 3830 /* PREFIX_0F2D */ 3753 3831 { 3754 { "cvtps2pi", { MXC, EXq } },3755 { "cvtss2siY", { Gv, EXd } },3756 { "cvtpd2pi", { MXC, EXx } },3757 { "cvtsd2siY", { Gv, EXq } },3832 { "cvtps2pi", { MXC, EXq }, PREFIX_OPCODE }, 3833 { "cvtss2siY", { Gv, EXd }, PREFIX_OPCODE }, 3834 { "cvtpd2pi", { MXC, EXx }, PREFIX_OPCODE }, 3835 { "cvtsd2siY", { Gv, EXq }, PREFIX_OPCODE }, 3758 3836 }, 3759 3837 3760 3838 /* PREFIX_0F2E */ 3761 3839 { 3762 { "ucomiss",{ XM, EXd } },3763 { Bad_Opcode }, 3764 { "ucomisd",{ XM, EXq } },3840 { "ucomiss",{ XM, EXd }, 0 }, 3841 { Bad_Opcode }, 3842 { "ucomisd",{ XM, EXq }, 0 }, 3765 3843 }, 3766 3844 3767 3845 /* PREFIX_0F2F */ 3768 3846 { 3769 { "comiss", { XM, EXd } },3770 { Bad_Opcode }, 3771 { "comisd", { XM, EXq } },3847 { "comiss", { XM, EXd }, 0 }, 3848 { Bad_Opcode }, 3849 { "comisd", { XM, EXq }, 0 }, 3772 3850 }, 3773 3851 3774 3852 /* PREFIX_0F51 */ 3775 3853 { 3776 { "sqrtps", { XM, EXx } },3777 { "sqrtss", { XM, EXd } },3778 { "sqrtpd", { XM, EXx } },3779 { "sqrtsd", { XM, EXq } },3854 { "sqrtps", { XM, EXx }, PREFIX_OPCODE }, 3855 { "sqrtss", { XM, EXd }, PREFIX_OPCODE }, 3856 { "sqrtpd", { XM, EXx }, PREFIX_OPCODE }, 3857 { "sqrtsd", { XM, EXq }, PREFIX_OPCODE }, 3780 3858 }, 3781 3859 3782 3860 /* PREFIX_0F52 */ 3783 3861 { 3784 { "rsqrtps",{ XM, EXx } },3785 { "rsqrtss",{ XM, EXd } },3862 { "rsqrtps",{ XM, EXx }, PREFIX_OPCODE }, 3863 { "rsqrtss",{ XM, EXd }, PREFIX_OPCODE }, 3786 3864 }, 3787 3865 3788 3866 /* PREFIX_0F53 */ 3789 3867 { 3790 { "rcpps", { XM, EXx } },3791 { "rcpss", { XM, EXd } },3868 { "rcpps", { XM, EXx }, PREFIX_OPCODE }, 3869 { "rcpss", { XM, EXd }, PREFIX_OPCODE }, 3792 3870 }, 3793 3871 3794 3872 /* PREFIX_0F58 */ 3795 3873 { 3796 { "addps", { XM, EXx } },3797 { "addss", { XM, EXd } },3798 { "addpd", { XM, EXx } },3799 { "addsd", { XM, EXq } },3874 { "addps", { XM, EXx }, PREFIX_OPCODE }, 3875 { "addss", { XM, EXd }, PREFIX_OPCODE }, 3876 { "addpd", { XM, EXx }, PREFIX_OPCODE }, 3877 { "addsd", { XM, EXq }, PREFIX_OPCODE }, 3800 3878 }, 3801 3879 3802 3880 /* PREFIX_0F59 */ 3803 3881 { 3804 { "mulps", { XM, EXx } },3805 { "mulss", { XM, EXd } },3806 { "mulpd", { XM, EXx } },3807 { "mulsd", { XM, EXq } },3882 { "mulps", { XM, EXx }, PREFIX_OPCODE }, 3883 { "mulss", { XM, EXd }, PREFIX_OPCODE }, 3884 { "mulpd", { XM, EXx }, PREFIX_OPCODE }, 3885 { "mulsd", { XM, EXq }, PREFIX_OPCODE }, 3808 3886 }, 3809 3887 3810 3888 /* PREFIX_0F5A */ 3811 3889 { 3812 { "cvtps2pd", { XM, EXq } },3813 { "cvtss2sd", { XM, EXd } },3814 { "cvtpd2ps", { XM, EXx } },3815 { "cvtsd2ss", { XM, EXq } },3890 { "cvtps2pd", { XM, EXq }, PREFIX_OPCODE }, 3891 { "cvtss2sd", { XM, EXd }, PREFIX_OPCODE }, 3892 { "cvtpd2ps", { XM, EXx }, PREFIX_OPCODE }, 3893 { "cvtsd2ss", { XM, EXq }, PREFIX_OPCODE }, 3816 3894 }, 3817 3895 3818 3896 /* PREFIX_0F5B */ 3819 3897 { 3820 { "cvtdq2ps", { XM, EXx } },3821 { "cvttps2dq", { XM, EXx } },3822 { "cvtps2dq", { XM, EXx } },3898 { "cvtdq2ps", { XM, EXx }, PREFIX_OPCODE }, 3899 { "cvttps2dq", { XM, EXx }, PREFIX_OPCODE }, 3900 { "cvtps2dq", { XM, EXx }, PREFIX_OPCODE }, 3823 3901 }, 3824 3902 3825 3903 /* PREFIX_0F5C */ 3826 3904 { 3827 { "subps", { XM, EXx } },3828 { "subss", { XM, EXd } },3829 { "subpd", { XM, EXx } },3830 { "subsd", { XM, EXq } },3905 { "subps", { XM, EXx }, PREFIX_OPCODE }, 3906 { "subss", { XM, EXd }, PREFIX_OPCODE }, 3907 { "subpd", { XM, EXx }, PREFIX_OPCODE }, 3908 { "subsd", { XM, EXq }, PREFIX_OPCODE }, 3831 3909 }, 3832 3910 3833 3911 /* PREFIX_0F5D */ 3834 3912 { 3835 { "minps", { XM, EXx } },3836 { "minss", { XM, EXd } },3837 { "minpd", { XM, EXx } },3838 { "minsd", { XM, EXq } },3913 { "minps", { XM, EXx }, PREFIX_OPCODE }, 3914 { "minss", { XM, EXd }, PREFIX_OPCODE }, 3915 { "minpd", { XM, EXx }, PREFIX_OPCODE }, 3916 { "minsd", { XM, EXq }, PREFIX_OPCODE }, 3839 3917 }, 3840 3918 3841 3919 /* PREFIX_0F5E */ 3842 3920 { 3843 { "divps", { XM, EXx } },3844 { "divss", { XM, EXd } },3845 { "divpd", { XM, EXx } },3846 { "divsd", { XM, EXq } },3921 { "divps", { XM, EXx }, PREFIX_OPCODE }, 3922 { "divss", { XM, EXd }, PREFIX_OPCODE }, 3923 { "divpd", { XM, EXx }, PREFIX_OPCODE }, 3924 { "divsd", { XM, EXq }, PREFIX_OPCODE }, 3847 3925 }, 3848 3926 3849 3927 /* PREFIX_0F5F */ 3850 3928 { 3851 { "maxps", { XM, EXx } },3852 { "maxss", { XM, EXd } },3853 { "maxpd", { XM, EXx } },3854 { "maxsd", { XM, EXq } },3929 { "maxps", { XM, EXx }, PREFIX_OPCODE }, 3930 { "maxss", { XM, EXd }, PREFIX_OPCODE }, 3931 { "maxpd", { XM, EXx }, PREFIX_OPCODE }, 3932 { "maxsd", { XM, EXq }, PREFIX_OPCODE }, 3855 3933 }, 3856 3934 3857 3935 /* PREFIX_0F60 */ 3858 3936 { 3859 { "punpcklbw",{ MX, EMd } },3860 { Bad_Opcode }, 3861 { "punpcklbw",{ MX, EMx } },3937 { "punpcklbw",{ MX, EMd }, PREFIX_OPCODE }, 3938 { Bad_Opcode }, 3939 { "punpcklbw",{ MX, EMx }, PREFIX_OPCODE }, 3862 3940 }, 3863 3941 3864 3942 /* PREFIX_0F61 */ 3865 3943 { 3866 { "punpcklwd",{ MX, EMd } },3867 { Bad_Opcode }, 3868 { "punpcklwd",{ MX, EMx } },3944 { "punpcklwd",{ MX, EMd }, PREFIX_OPCODE }, 3945 { Bad_Opcode }, 3946 { "punpcklwd",{ MX, EMx }, PREFIX_OPCODE }, 3869 3947 }, 3870 3948 3871 3949 /* PREFIX_0F62 */ 3872 3950 { 3873 { "punpckldq",{ MX, EMd } },3874 { Bad_Opcode }, 3875 { "punpckldq",{ MX, EMx } },3951 { "punpckldq",{ MX, EMd }, PREFIX_OPCODE }, 3952 { Bad_Opcode }, 3953 { "punpckldq",{ MX, EMx }, PREFIX_OPCODE }, 3876 3954 }, 3877 3955 … … 3880 3958 { Bad_Opcode }, 3881 3959 { Bad_Opcode }, 3882 { "punpcklqdq", { XM, EXx } },3960 { "punpcklqdq", { XM, EXx }, PREFIX_OPCODE }, 3883 3961 }, 3884 3962 … … 3887 3965 { Bad_Opcode }, 3888 3966 { Bad_Opcode }, 3889 { "punpckhqdq", { XM, EXx } },3967 { "punpckhqdq", { XM, EXx }, PREFIX_OPCODE }, 3890 3968 }, 3891 3969 3892 3970 /* PREFIX_0F6F */ 3893 3971 { 3894 { "movq", { MX, EM } },3895 { "movdqu", { XM, EXx } },3896 { "movdqa", { XM, EXx } },3972 { "movq", { MX, EM }, PREFIX_OPCODE }, 3973 { "movdqu", { XM, EXx }, PREFIX_OPCODE }, 3974 { "movdqa", { XM, EXx }, PREFIX_OPCODE }, 3897 3975 }, 3898 3976 3899 3977 /* PREFIX_0F70 */ 3900 3978 { 3901 { "pshufw", { MX, EM, Ib } },3902 { "pshufhw",{ XM, EXx, Ib } },3903 { "pshufd", { XM, EXx, Ib } },3904 { "pshuflw",{ XM, EXx, Ib } },3979 { "pshufw", { MX, EM, Ib }, PREFIX_OPCODE }, 3980 { "pshufhw",{ XM, EXx, Ib }, PREFIX_OPCODE }, 3981 { "pshufd", { XM, EXx, Ib }, PREFIX_OPCODE }, 3982 { "pshuflw",{ XM, EXx, Ib }, PREFIX_OPCODE }, 3905 3983 }, 3906 3984 … … 3909 3987 { Bad_Opcode }, 3910 3988 { Bad_Opcode }, 3911 { "psrldq", { XS, Ib } },3989 { "psrldq", { XS, Ib }, 0 }, 3912 3990 }, 3913 3991 … … 3916 3994 { Bad_Opcode }, 3917 3995 { Bad_Opcode }, 3918 { "pslldq", { XS, Ib } },3996 { "pslldq", { XS, Ib }, 0 }, 3919 3997 }, 3920 3998 3921 3999 /* PREFIX_0F78 */ 3922 4000 { 3923 {"vmread", { Em, Gm } },3924 { Bad_Opcode }, 3925 {"extrq", { XS, Ib, Ib } },3926 {"insertq", { XM, XS, Ib, Ib } },4001 {"vmread", { Em, Gm }, 0 }, 4002 { Bad_Opcode }, 4003 {"extrq", { XS, Ib, Ib }, 0 }, 4004 {"insertq", { XM, XS, Ib, Ib }, 0 }, 3927 4005 }, 3928 4006 3929 4007 /* PREFIX_0F79 */ 3930 4008 { 3931 {"vmwrite", { Gm, Em } },3932 { Bad_Opcode }, 3933 {"extrq", { XM, XS } },3934 {"insertq", { XM, XS } },4009 {"vmwrite", { Gm, Em }, 0 }, 4010 { Bad_Opcode }, 4011 {"extrq", { XM, XS }, 0 }, 4012 {"insertq", { XM, XS }, 0 }, 3935 4013 }, 3936 4014 … … 3939 4017 { Bad_Opcode }, 3940 4018 { Bad_Opcode }, 3941 { "haddpd", { XM, EXx } },3942 { "haddps", { XM, EXx } },4019 { "haddpd", { XM, EXx }, PREFIX_OPCODE }, 4020 { "haddps", { XM, EXx }, PREFIX_OPCODE }, 3943 4021 }, 3944 4022 … … 3947 4025 { Bad_Opcode }, 3948 4026 { Bad_Opcode }, 3949 { "hsubpd", { XM, EXx } },3950 { "hsubps", { XM, EXx } },4027 { "hsubpd", { XM, EXx }, PREFIX_OPCODE }, 4028 { "hsubps", { XM, EXx }, PREFIX_OPCODE }, 3951 4029 }, 3952 4030 3953 4031 /* PREFIX_0F7E */ 3954 4032 { 3955 { "movK", { Edq, MX } },3956 { "movq", { XM, EXq } },3957 { "movK", { Edq, XM } },4033 { "movK", { Edq, MX }, PREFIX_OPCODE }, 4034 { "movq", { XM, EXq }, PREFIX_OPCODE }, 4035 { "movK", { Edq, XM }, PREFIX_OPCODE }, 3958 4036 }, 3959 4037 3960 4038 /* PREFIX_0F7F */ 3961 4039 { 3962 { "movq", { EMS, MX } },3963 { "movdqu", { EXxS, XM } },3964 { "movdqa", { EXxS, XM } },4040 { "movq", { EMS, MX }, PREFIX_OPCODE }, 4041 { "movdqu", { EXxS, XM }, PREFIX_OPCODE }, 4042 { "movdqa", { EXxS, XM }, PREFIX_OPCODE }, 3965 4043 }, 3966 4044 … … 3968 4046 { 3969 4047 { Bad_Opcode }, 3970 { "rdfsbase", { Ev } },4048 { "rdfsbase", { Ev }, 0 }, 3971 4049 }, 3972 4050 … … 3974 4052 { 3975 4053 { Bad_Opcode }, 3976 { "rdgsbase", { Ev } },4054 { "rdgsbase", { Ev }, 0 }, 3977 4055 }, 3978 4056 … … 3980 4058 { 3981 4059 { Bad_Opcode }, 3982 { "wrfsbase", { Ev } },4060 { "wrfsbase", { Ev }, 0 }, 3983 4061 }, 3984 4062 … … 3986 4064 { 3987 4065 { Bad_Opcode }, 3988 { "wrgsbase", { Ev } },4066 { "wrgsbase", { Ev }, 0 }, 3989 4067 }, 3990 4068 3991 4069 /* PREFIX_0FAE_REG_6 */ 3992 4070 { 3993 { "xsaveopt", { FXSAVE } },3994 { Bad_Opcode }, 3995 { "clwb", { Mb } },4071 { "xsaveopt", { FXSAVE }, 0 }, 4072 { Bad_Opcode }, 4073 { "clwb", { Mb }, 0 }, 3996 4074 }, 3997 4075 3998 4076 /* PREFIX_0FAE_REG_7 */ 3999 4077 { 4000 { "clflush", { Mb } },4001 { Bad_Opcode }, 4002 { "clflushopt", { Mb } },4078 { "clflush", { Mb }, 0 }, 4079 { Bad_Opcode }, 4080 { "clflushopt", { Mb }, 0 }, 4003 4081 }, 4004 4082 4005 4083 /* PREFIX_RM_0_0FAE_REG_7 */ 4006 4084 { 4007 { "sfence", { Skip_MODRM } },4008 { Bad_Opcode }, 4009 { "pcommit", { Skip_MODRM } },4085 { "sfence", { Skip_MODRM }, 0 }, 4086 { Bad_Opcode }, 4087 { "pcommit", { Skip_MODRM }, 0 }, 4010 4088 }, 4011 4089 … … 4013 4091 { 4014 4092 { Bad_Opcode }, 4015 { "popcntS", { Gv, Ev } },4093 { "popcntS", { Gv, Ev }, 0 }, 4016 4094 }, 4017 4095 4018 4096 /* PREFIX_0FBC */ 4019 4097 { 4020 { "bsfS", { Gv, Ev } },4021 { "tzcntS", { Gv, Ev } },4022 { "bsfS", { Gv, Ev } },4098 { "bsfS", { Gv, Ev }, 0 }, 4099 { "tzcntS", { Gv, Ev }, 0 }, 4100 { "bsfS", { Gv, Ev }, 0 }, 4023 4101 }, 4024 4102 4025 4103 /* PREFIX_0FBD */ 4026 4104 { 4027 { "bsrS", { Gv, Ev } },4028 { "lzcntS", { Gv, Ev } },4029 { "bsrS", { Gv, Ev } },4105 { "bsrS", { Gv, Ev }, 0 }, 4106 { "lzcntS", { Gv, Ev }, 0 }, 4107 { "bsrS", { Gv, Ev }, 0 }, 4030 4108 }, 4031 4109 4032 4110 /* PREFIX_0FC2 */ 4033 4111 { 4034 { "cmpps", { XM, EXx, CMP } }, 4035 { "cmpss", { XM, EXd, CMP } }, 4036 { "cmppd", { XM, EXx, CMP } }, 4037 { "cmpsd", { XM, EXq, CMP } }, 4038 }, 4039 4040 /* PREFIX_0FC3 */ 4041 { 4042 { "movntiS", { Ma, Gv } }, 4043 }, 4044 4045 /* PREFIX_0FC7_REG_6 */ 4046 { 4047 { "vmptrld",{ Mq } }, 4048 { "vmxon", { Mq } }, 4049 { "vmclear",{ Mq } }, 4112 { "cmpps", { XM, EXx, CMP }, PREFIX_OPCODE }, 4113 { "cmpss", { XM, EXd, CMP }, PREFIX_OPCODE }, 4114 { "cmppd", { XM, EXx, CMP }, PREFIX_OPCODE }, 4115 { "cmpsd", { XM, EXq, CMP }, PREFIX_OPCODE }, 4116 }, 4117 4118 /* PREFIX_MOD_0_0FC3 */ 4119 { 4120 { "movntiS", { Ev, Gv }, PREFIX_OPCODE }, 4121 }, 4122 4123 /* PREFIX_MOD_0_0FC7_REG_6 */ 4124 { 4125 { "vmptrld",{ Mq }, 0 }, 4126 { "vmxon", { Mq }, 0 }, 4127 { "vmclear",{ Mq }, 0 }, 4128 }, 4129 4130 /* PREFIX_MOD_3_0FC7_REG_6 */ 4131 { 4132 { "rdrand", { Ev }, 0 }, 4133 { Bad_Opcode }, 4134 { "rdrand", { Ev }, 0 } 4135 }, 4136 4137 /* PREFIX_MOD_3_0FC7_REG_7 */ 4138 { 4139 { "rdseed", { Ev }, 0 }, 4140 { "rdpid", { Em }, 0 }, 4141 { "rdseed", { Ev }, 0 }, 4050 4142 }, 4051 4143 … … 4054 4146 { Bad_Opcode }, 4055 4147 { Bad_Opcode }, 4056 { "addsubpd", { XM, EXx } },4057 { "addsubps", { XM, EXx } },4148 { "addsubpd", { XM, EXx }, 0 }, 4149 { "addsubps", { XM, EXx }, 0 }, 4058 4150 }, 4059 4151 … … 4061 4153 { 4062 4154 { Bad_Opcode }, 4063 { "movq2dq",{ XM, MS } },4064 { "movq", { EXqS, XM } },4065 { "movdq2q",{ MX, XS } },4155 { "movq2dq",{ XM, MS }, 0 }, 4156 { "movq", { EXqS, XM }, 0 }, 4157 { "movdq2q",{ MX, XS }, 0 }, 4066 4158 }, 4067 4159 … … 4069 4161 { 4070 4162 { Bad_Opcode }, 4071 { "cvtdq2pd", { XM, EXq } },4072 { "cvttpd2dq", { XM, EXx } },4073 { "cvtpd2dq", { XM, EXx } },4163 { "cvtdq2pd", { XM, EXq }, PREFIX_OPCODE }, 4164 { "cvttpd2dq", { XM, EXx }, PREFIX_OPCODE }, 4165 { "cvtpd2dq", { XM, EXx }, PREFIX_OPCODE }, 4074 4166 }, 4075 4167 4076 4168 /* PREFIX_0FE7 */ 4077 4169 { 4078 { "movntq", { Mq, MX } },4170 { "movntq", { Mq, MX }, PREFIX_OPCODE }, 4079 4171 { Bad_Opcode }, 4080 4172 { MOD_TABLE (MOD_0FE7_PREFIX_2) }, … … 4091 4183 /* PREFIX_0FF7 */ 4092 4184 { 4093 { "maskmovq", { MX, MS } },4094 { Bad_Opcode }, 4095 { "maskmovdqu", { XM, XS } },4185 { "maskmovq", { MX, MS }, PREFIX_OPCODE }, 4186 { Bad_Opcode }, 4187 { "maskmovdqu", { XM, XS }, PREFIX_OPCODE }, 4096 4188 }, 4097 4189 … … 4100 4192 { Bad_Opcode }, 4101 4193 { Bad_Opcode }, 4102 { "pblendvb", { XM, EXx, XMM0 } },4194 { "pblendvb", { XM, EXx, XMM0 }, PREFIX_OPCODE }, 4103 4195 }, 4104 4196 … … 4107 4199 { Bad_Opcode }, 4108 4200 { Bad_Opcode }, 4109 { "blendvps", { XM, EXx, XMM0 } },4201 { "blendvps", { XM, EXx, XMM0 }, PREFIX_OPCODE }, 4110 4202 }, 4111 4203 … … 4114 4206 { Bad_Opcode }, 4115 4207 { Bad_Opcode }, 4116 { "blendvpd", { XM, EXx, XMM0 } },4208 { "blendvpd", { XM, EXx, XMM0 }, PREFIX_OPCODE }, 4117 4209 }, 4118 4210 … … 4121 4213 { Bad_Opcode }, 4122 4214 { Bad_Opcode }, 4123 { "ptest", { XM, EXx } },4215 { "ptest", { XM, EXx }, PREFIX_OPCODE }, 4124 4216 }, 4125 4217 … … 4128 4220 { Bad_Opcode }, 4129 4221 { Bad_Opcode }, 4130 { "pmovsxbw", { XM, EXq } },4222 { "pmovsxbw", { XM, EXq }, PREFIX_OPCODE }, 4131 4223 }, 4132 4224 … … 4135 4227 { Bad_Opcode }, 4136 4228 { Bad_Opcode }, 4137 { "pmovsxbd", { XM, EXd } },4229 { "pmovsxbd", { XM, EXd }, PREFIX_OPCODE }, 4138 4230 }, 4139 4231 … … 4142 4234 { Bad_Opcode }, 4143 4235 { Bad_Opcode }, 4144 { "pmovsxbq", { XM, EXw } },4236 { "pmovsxbq", { XM, EXw }, PREFIX_OPCODE }, 4145 4237 }, 4146 4238 … … 4149 4241 { Bad_Opcode }, 4150 4242 { Bad_Opcode }, 4151 { "pmovsxwd", { XM, EXq } },4243 { "pmovsxwd", { XM, EXq }, PREFIX_OPCODE }, 4152 4244 }, 4153 4245 … … 4156 4248 { Bad_Opcode }, 4157 4249 { Bad_Opcode }, 4158 { "pmovsxwq", { XM, EXd } },4250 { "pmovsxwq", { XM, EXd }, PREFIX_OPCODE }, 4159 4251 }, 4160 4252 … … 4163 4255 { Bad_Opcode }, 4164 4256 { Bad_Opcode }, 4165 { "pmovsxdq", { XM, EXq } },4257 { "pmovsxdq", { XM, EXq }, PREFIX_OPCODE }, 4166 4258 }, 4167 4259 … … 4170 4262 { Bad_Opcode }, 4171 4263 { Bad_Opcode }, 4172 { "pmuldq", { XM, EXx } },4264 { "pmuldq", { XM, EXx }, PREFIX_OPCODE }, 4173 4265 }, 4174 4266 … … 4177 4269 { Bad_Opcode }, 4178 4270 { Bad_Opcode }, 4179 { "pcmpeqq", { XM, EXx } },4271 { "pcmpeqq", { XM, EXx }, PREFIX_OPCODE }, 4180 4272 }, 4181 4273 … … 4191 4283 { Bad_Opcode }, 4192 4284 { Bad_Opcode }, 4193 { "packusdw", { XM, EXx } },4285 { "packusdw", { XM, EXx }, PREFIX_OPCODE }, 4194 4286 }, 4195 4287 … … 4198 4290 { Bad_Opcode }, 4199 4291 { Bad_Opcode }, 4200 { "pmovzxbw", { XM, EXq } },4292 { "pmovzxbw", { XM, EXq }, PREFIX_OPCODE }, 4201 4293 }, 4202 4294 … … 4205 4297 { Bad_Opcode }, 4206 4298 { Bad_Opcode }, 4207 { "pmovzxbd", { XM, EXd } },4299 { "pmovzxbd", { XM, EXd }, PREFIX_OPCODE }, 4208 4300 }, 4209 4301 … … 4212 4304 { Bad_Opcode }, 4213 4305 { Bad_Opcode }, 4214 { "pmovzxbq", { XM, EXw } },4306 { "pmovzxbq", { XM, EXw }, PREFIX_OPCODE }, 4215 4307 }, 4216 4308 … … 4219 4311 { Bad_Opcode }, 4220 4312 { Bad_Opcode }, 4221 { "pmovzxwd", { XM, EXq } },4313 { "pmovzxwd", { XM, EXq }, PREFIX_OPCODE }, 4222 4314 }, 4223 4315 … … 4226 4318 { Bad_Opcode }, 4227 4319 { Bad_Opcode }, 4228 { "pmovzxwq", { XM, EXd } },4320 { "pmovzxwq", { XM, EXd }, PREFIX_OPCODE }, 4229 4321 }, 4230 4322 … … 4233 4325 { Bad_Opcode }, 4234 4326 { Bad_Opcode }, 4235 { "pmovzxdq", { XM, EXq } },4327 { "pmovzxdq", { XM, EXq }, PREFIX_OPCODE }, 4236 4328 }, 4237 4329 … … 4240 4332 { Bad_Opcode }, 4241 4333 { Bad_Opcode }, 4242 { "pcmpgtq", { XM, EXx } },4334 { "pcmpgtq", { XM, EXx }, PREFIX_OPCODE }, 4243 4335 }, 4244 4336 … … 4247 4339 { Bad_Opcode }, 4248 4340 { Bad_Opcode }, 4249 { "pminsb", { XM, EXx } },4341 { "pminsb", { XM, EXx }, PREFIX_OPCODE }, 4250 4342 }, 4251 4343 … … 4254 4346 { Bad_Opcode }, 4255 4347 { Bad_Opcode }, 4256 { "pminsd", { XM, EXx } },4348 { "pminsd", { XM, EXx }, PREFIX_OPCODE }, 4257 4349 }, 4258 4350 … … 4261 4353 { Bad_Opcode }, 4262 4354 { Bad_Opcode }, 4263 { "pminuw", { XM, EXx } },4355 { "pminuw", { XM, EXx }, PREFIX_OPCODE }, 4264 4356 }, 4265 4357 … … 4268 4360 { Bad_Opcode }, 4269 4361 { Bad_Opcode }, 4270 { "pminud", { XM, EXx } },4362 { "pminud", { XM, EXx }, PREFIX_OPCODE }, 4271 4363 }, 4272 4364 … … 4275 4367 { Bad_Opcode }, 4276 4368 { Bad_Opcode }, 4277 { "pmaxsb", { XM, EXx } },4369 { "pmaxsb", { XM, EXx }, PREFIX_OPCODE }, 4278 4370 }, 4279 4371 … … 4282 4374 { Bad_Opcode }, 4283 4375 { Bad_Opcode }, 4284 { "pmaxsd", { XM, EXx } },4376 { "pmaxsd", { XM, EXx }, PREFIX_OPCODE }, 4285 4377 }, 4286 4378 … … 4289 4381 { Bad_Opcode }, 4290 4382 { Bad_Opcode }, 4291 { "pmaxuw", { XM, EXx } },4383 { "pmaxuw", { XM, EXx }, PREFIX_OPCODE }, 4292 4384 }, 4293 4385 … … 4296 4388 { Bad_Opcode }, 4297 4389 { Bad_Opcode }, 4298 { "pmaxud", { XM, EXx } },4390 { "pmaxud", { XM, EXx }, PREFIX_OPCODE }, 4299 4391 }, 4300 4392 … … 4303 4395 { Bad_Opcode }, 4304 4396 { Bad_Opcode }, 4305 { "pmulld", { XM, EXx } },4397 { "pmulld", { XM, EXx }, PREFIX_OPCODE }, 4306 4398 }, 4307 4399 … … 4310 4402 { Bad_Opcode }, 4311 4403 { Bad_Opcode }, 4312 { "phminposuw", { XM, EXx } },4404 { "phminposuw", { XM, EXx }, PREFIX_OPCODE }, 4313 4405 }, 4314 4406 … … 4317 4409 { Bad_Opcode }, 4318 4410 { Bad_Opcode }, 4319 { "invept", { Gm, Mo } },4411 { "invept", { Gm, Mo }, PREFIX_OPCODE }, 4320 4412 }, 4321 4413 … … 4324 4416 { Bad_Opcode }, 4325 4417 { Bad_Opcode }, 4326 { "invvpid", { Gm, Mo } },4418 { "invvpid", { Gm, Mo }, PREFIX_OPCODE }, 4327 4419 }, 4328 4420 … … 4331 4423 { Bad_Opcode }, 4332 4424 { Bad_Opcode }, 4333 { "invpcid", { Gm, M } },4425 { "invpcid", { Gm, M }, PREFIX_OPCODE }, 4334 4426 }, 4335 4427 4336 4428 /* PREFIX_0F38C8 */ 4337 4429 { 4338 { "sha1nexte", { XM, EXxmm } },4430 { "sha1nexte", { XM, EXxmm }, PREFIX_OPCODE }, 4339 4431 }, 4340 4432 4341 4433 /* PREFIX_0F38C9 */ 4342 4434 { 4343 { "sha1msg1", { XM, EXxmm } },4435 { "sha1msg1", { XM, EXxmm }, PREFIX_OPCODE }, 4344 4436 }, 4345 4437 4346 4438 /* PREFIX_0F38CA */ 4347 4439 { 4348 { "sha1msg2", { XM, EXxmm } },4440 { "sha1msg2", { XM, EXxmm }, PREFIX_OPCODE }, 4349 4441 }, 4350 4442 4351 4443 /* PREFIX_0F38CB */ 4352 4444 { 4353 { "sha256rnds2", { XM, EXxmm, XMM0 } },4445 { "sha256rnds2", { XM, EXxmm, XMM0 }, PREFIX_OPCODE }, 4354 4446 }, 4355 4447 4356 4448 /* PREFIX_0F38CC */ 4357 4449 { 4358 { "sha256msg1", { XM, EXxmm } },4450 { "sha256msg1", { XM, EXxmm }, PREFIX_OPCODE }, 4359 4451 }, 4360 4452 4361 4453 /* PREFIX_0F38CD */ 4362 4454 { 4363 { "sha256msg2", { XM, EXxmm } },4455 { "sha256msg2", { XM, EXxmm }, PREFIX_OPCODE }, 4364 4456 }, 4365 4457 … … 4368 4460 { Bad_Opcode }, 4369 4461 { Bad_Opcode }, 4370 { "aesimc", { XM, EXx } },4462 { "aesimc", { XM, EXx }, PREFIX_OPCODE }, 4371 4463 }, 4372 4464 … … 4375 4467 { Bad_Opcode }, 4376 4468 { Bad_Opcode }, 4377 { "aesenc", { XM, EXx } },4469 { "aesenc", { XM, EXx }, PREFIX_OPCODE }, 4378 4470 }, 4379 4471 … … 4382 4474 { Bad_Opcode }, 4383 4475 { Bad_Opcode }, 4384 { "aesenclast", { XM, EXx } },4476 { "aesenclast", { XM, EXx }, PREFIX_OPCODE }, 4385 4477 }, 4386 4478 … … 4389 4481 { Bad_Opcode }, 4390 4482 { Bad_Opcode }, 4391 { "aesdec", { XM, EXx } },4483 { "aesdec", { XM, EXx }, PREFIX_OPCODE }, 4392 4484 }, 4393 4485 … … 4396 4488 { Bad_Opcode }, 4397 4489 { Bad_Opcode }, 4398 { "aesdeclast", { XM, EXx } },4490 { "aesdeclast", { XM, EXx }, PREFIX_OPCODE }, 4399 4491 }, 4400 4492 4401 4493 /* PREFIX_0F38F0 */ 4402 4494 { 4403 { "movbeS", { Gv, { MOVBE_Fixup, v_mode } } },4404 { Bad_Opcode }, 4405 { "movbeS", { Gv, { MOVBE_Fixup, v_mode } } },4406 { "crc32", { Gdq, { CRC32_Fixup, b_mode } } },4495 { "movbeS", { Gv, { MOVBE_Fixup, v_mode } }, PREFIX_OPCODE }, 4496 { Bad_Opcode }, 4497 { "movbeS", { Gv, { MOVBE_Fixup, v_mode } }, PREFIX_OPCODE }, 4498 { "crc32", { Gdq, { CRC32_Fixup, b_mode } }, PREFIX_OPCODE }, 4407 4499 }, 4408 4500 4409 4501 /* PREFIX_0F38F1 */ 4410 4502 { 4411 { "movbeS", { { MOVBE_Fixup, v_mode }, Gv } },4412 { Bad_Opcode }, 4413 { "movbeS", { { MOVBE_Fixup, v_mode }, Gv } },4414 { "crc32", { Gdq, { CRC32_Fixup, v_mode } } },4503 { "movbeS", { { MOVBE_Fixup, v_mode }, Gv }, PREFIX_OPCODE }, 4504 { Bad_Opcode }, 4505 { "movbeS", { { MOVBE_Fixup, v_mode }, Gv }, PREFIX_OPCODE }, 4506 { "crc32", { Gdq, { CRC32_Fixup, v_mode } }, PREFIX_OPCODE }, 4415 4507 }, 4416 4508 … … 4418 4510 { 4419 4511 { Bad_Opcode }, 4420 { "adoxS", { Gdq, Edq} },4421 { "adcxS", { Gdq, Edq} },4512 { "adoxS", { Gdq, Edq}, PREFIX_OPCODE }, 4513 { "adcxS", { Gdq, Edq}, PREFIX_OPCODE }, 4422 4514 { Bad_Opcode }, 4423 4515 }, … … 4427 4519 { Bad_Opcode }, 4428 4520 { Bad_Opcode }, 4429 { "roundps", { XM, EXx, Ib } },4521 { "roundps", { XM, EXx, Ib }, PREFIX_OPCODE }, 4430 4522 }, 4431 4523 … … 4434 4526 { Bad_Opcode }, 4435 4527 { Bad_Opcode }, 4436 { "roundpd", { XM, EXx, Ib } },4528 { "roundpd", { XM, EXx, Ib }, PREFIX_OPCODE }, 4437 4529 }, 4438 4530 … … 4441 4533 { Bad_Opcode }, 4442 4534 { Bad_Opcode }, 4443 { "roundss", { XM, EXd, Ib } },4535 { "roundss", { XM, EXd, Ib }, PREFIX_OPCODE }, 4444 4536 }, 4445 4537 … … 4448 4540 { Bad_Opcode }, 4449 4541 { Bad_Opcode }, 4450 { "roundsd", { XM, EXq, Ib } },4542 { "roundsd", { XM, EXq, Ib }, PREFIX_OPCODE }, 4451 4543 }, 4452 4544 … … 4455 4547 { Bad_Opcode }, 4456 4548 { Bad_Opcode }, 4457 { "blendps", { XM, EXx, Ib } },4549 { "blendps", { XM, EXx, Ib }, PREFIX_OPCODE }, 4458 4550 }, 4459 4551 … … 4462 4554 { Bad_Opcode }, 4463 4555 { Bad_Opcode }, 4464 { "blendpd", { XM, EXx, Ib } },4556 { "blendpd", { XM, EXx, Ib }, PREFIX_OPCODE }, 4465 4557 }, 4466 4558 … … 4469 4561 { Bad_Opcode }, 4470 4562 { Bad_Opcode }, 4471 { "pblendw", { XM, EXx, Ib } },4563 { "pblendw", { XM, EXx, Ib }, PREFIX_OPCODE }, 4472 4564 }, 4473 4565 … … 4476 4568 { Bad_Opcode }, 4477 4569 { Bad_Opcode }, 4478 { "pextrb", { Edqb, XM, Ib } },4570 { "pextrb", { Edqb, XM, Ib }, PREFIX_OPCODE }, 4479 4571 }, 4480 4572 … … 4483 4575 { Bad_Opcode }, 4484 4576 { Bad_Opcode }, 4485 { "pextrw", { Edqw, XM, Ib } },4577 { "pextrw", { Edqw, XM, Ib }, PREFIX_OPCODE }, 4486 4578 }, 4487 4579 … … 4490 4582 { Bad_Opcode }, 4491 4583 { Bad_Opcode }, 4492 { "pextrK", { Edq, XM, Ib } },4584 { "pextrK", { Edq, XM, Ib }, PREFIX_OPCODE }, 4493 4585 }, 4494 4586 … … 4497 4589 { Bad_Opcode }, 4498 4590 { Bad_Opcode }, 4499 { "extractps", { Edqd, XM, Ib } },4591 { "extractps", { Edqd, XM, Ib }, PREFIX_OPCODE }, 4500 4592 }, 4501 4593 … … 4504 4596 { Bad_Opcode }, 4505 4597 { Bad_Opcode }, 4506 { "pinsrb", { XM, Edqb, Ib } },4598 { "pinsrb", { XM, Edqb, Ib }, PREFIX_OPCODE }, 4507 4599 }, 4508 4600 … … 4511 4603 { Bad_Opcode }, 4512 4604 { Bad_Opcode }, 4513 { "insertps", { XM, EXd, Ib } },4605 { "insertps", { XM, EXd, Ib }, PREFIX_OPCODE }, 4514 4606 }, 4515 4607 … … 4518 4610 { Bad_Opcode }, 4519 4611 { Bad_Opcode }, 4520 { "pinsrK", { XM, Edq, Ib } },4612 { "pinsrK", { XM, Edq, Ib }, PREFIX_OPCODE }, 4521 4613 }, 4522 4614 … … 4525 4617 { Bad_Opcode }, 4526 4618 { Bad_Opcode }, 4527 { "dpps", { XM, EXx, Ib } },4619 { "dpps", { XM, EXx, Ib }, PREFIX_OPCODE }, 4528 4620 }, 4529 4621 … … 4532 4624 { Bad_Opcode }, 4533 4625 { Bad_Opcode }, 4534 { "dppd", { XM, EXx, Ib } },4626 { "dppd", { XM, EXx, Ib }, PREFIX_OPCODE }, 4535 4627 }, 4536 4628 … … 4539 4631 { Bad_Opcode }, 4540 4632 { Bad_Opcode }, 4541 { "mpsadbw", { XM, EXx, Ib } },4633 { "mpsadbw", { XM, EXx, Ib }, PREFIX_OPCODE }, 4542 4634 }, 4543 4635 … … 4546 4638 { Bad_Opcode }, 4547 4639 { Bad_Opcode }, 4548 { "pclmulqdq", { XM, EXx, PCLMUL } },4640 { "pclmulqdq", { XM, EXx, PCLMUL }, PREFIX_OPCODE }, 4549 4641 }, 4550 4642 … … 4553 4645 { Bad_Opcode }, 4554 4646 { Bad_Opcode }, 4555 { "pcmpestrm", { XM, EXx, Ib } },4647 { "pcmpestrm", { XM, EXx, Ib }, PREFIX_OPCODE }, 4556 4648 }, 4557 4649 … … 4560 4652 { Bad_Opcode }, 4561 4653 { Bad_Opcode }, 4562 { "pcmpestri", { XM, EXx, Ib } },4654 { "pcmpestri", { XM, EXx, Ib }, PREFIX_OPCODE }, 4563 4655 }, 4564 4656 … … 4567 4659 { Bad_Opcode }, 4568 4660 { Bad_Opcode }, 4569 { "pcmpistrm", { XM, EXx, Ib } },4661 { "pcmpistrm", { XM, EXx, Ib }, PREFIX_OPCODE }, 4570 4662 }, 4571 4663 … … 4574 4666 { Bad_Opcode }, 4575 4667 { Bad_Opcode }, 4576 { "pcmpistri", { XM, EXx, Ib } },4668 { "pcmpistri", { XM, EXx, Ib }, PREFIX_OPCODE }, 4577 4669 }, 4578 4670 4579 4671 /* PREFIX_0F3ACC */ 4580 4672 { 4581 { "sha1rnds4", { XM, EXxmm, Ib } },4673 { "sha1rnds4", { XM, EXxmm, Ib }, PREFIX_OPCODE }, 4582 4674 }, 4583 4675 … … 4586 4678 { Bad_Opcode }, 4587 4679 { Bad_Opcode }, 4588 { "aeskeygenassist", { XM, EXx, Ib } },4680 { "aeskeygenassist", { XM, EXx, Ib }, PREFIX_OPCODE }, 4589 4681 }, 4590 4682 … … 4754 4846 { VEX_W_TABLE (VEX_W_0F5A_P_0) }, 4755 4847 { VEX_LEN_TABLE (VEX_LEN_0F5A_P_1) }, 4756 { "vcvtpd2ps%XY", { XMM, EXx } },4848 { "vcvtpd2ps%XY", { XMM, EXx }, 0 }, 4757 4849 { VEX_LEN_TABLE (VEX_LEN_0F5A_P_3) }, 4758 4850 }, … … 5557 5649 { Bad_Opcode }, 5558 5650 { Bad_Opcode }, 5559 { "vcvtph2ps", { XM, EXxmmq } },5651 { "vcvtph2ps", { XM, EXxmmq }, 0 }, 5560 5652 }, 5561 5653 … … 5844 5936 { Bad_Opcode }, 5845 5937 { Bad_Opcode }, 5846 { "vpsrlv%LW", { XM, Vex, EXx } },5938 { "vpsrlv%LW", { XM, Vex, EXx }, 0 }, 5847 5939 }, 5848 5940 … … 5858 5950 { Bad_Opcode }, 5859 5951 { Bad_Opcode }, 5860 { "vpsllv%LW", { XM, Vex, EXx } },5952 { "vpsllv%LW", { XM, Vex, EXx }, 0 }, 5861 5953 }, 5862 5954 … … 5914 6006 { Bad_Opcode }, 5915 6007 { Bad_Opcode }, 5916 { "vpgatherd%LW", { XM, MVexVSIBDWpX, Vex } },6008 { "vpgatherd%LW", { XM, MVexVSIBDWpX, Vex }, 0 }, 5917 6009 }, 5918 6010 … … 5921 6013 { Bad_Opcode }, 5922 6014 { Bad_Opcode }, 5923 { "vpgatherq%LW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ } },6015 { "vpgatherq%LW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ }, 0 }, 5924 6016 }, 5925 6017 … … 5928 6020 { Bad_Opcode }, 5929 6021 { Bad_Opcode }, 5930 { "vgatherdp%XW", { XM, MVexVSIBDWpX, Vex } },6022 { "vgatherdp%XW", { XM, MVexVSIBDWpX, Vex }, 0 }, 5931 6023 }, 5932 6024 … … 5935 6027 { Bad_Opcode }, 5936 6028 { Bad_Opcode }, 5937 { "vgatherqp%XW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ } },6029 { "vgatherqp%XW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ }, 0 }, 5938 6030 }, 5939 6031 … … 5942 6034 { Bad_Opcode }, 5943 6035 { Bad_Opcode }, 5944 { "vfmaddsub132p%XW", { XM, Vex, EXx } },6036 { "vfmaddsub132p%XW", { XM, Vex, EXx }, 0 }, 5945 6037 }, 5946 6038 … … 5949 6041 { Bad_Opcode }, 5950 6042 { Bad_Opcode }, 5951 { "vfmsubadd132p%XW", { XM, Vex, EXx } },6043 { "vfmsubadd132p%XW", { XM, Vex, EXx }, 0 }, 5952 6044 }, 5953 6045 … … 5956 6048 { Bad_Opcode }, 5957 6049 { Bad_Opcode }, 5958 { "vfmadd132p%XW", { XM, Vex, EXx } },6050 { "vfmadd132p%XW", { XM, Vex, EXx }, 0 }, 5959 6051 }, 5960 6052 … … 5963 6055 { Bad_Opcode }, 5964 6056 { Bad_Opcode }, 5965 { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6057 { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 5966 6058 }, 5967 6059 … … 5970 6062 { Bad_Opcode }, 5971 6063 { Bad_Opcode }, 5972 { "vfmsub132p%XW", { XM, Vex, EXx } },6064 { "vfmsub132p%XW", { XM, Vex, EXx }, 0 }, 5973 6065 }, 5974 6066 … … 5977 6069 { Bad_Opcode }, 5978 6070 { Bad_Opcode }, 5979 { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6071 { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 5980 6072 }, 5981 6073 … … 5984 6076 { Bad_Opcode }, 5985 6077 { Bad_Opcode }, 5986 { "vfnmadd132p%XW", { XM, Vex, EXx } },6078 { "vfnmadd132p%XW", { XM, Vex, EXx }, 0 }, 5987 6079 }, 5988 6080 … … 5991 6083 { Bad_Opcode }, 5992 6084 { Bad_Opcode }, 5993 { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6085 { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 5994 6086 }, 5995 6087 … … 5998 6090 { Bad_Opcode }, 5999 6091 { Bad_Opcode }, 6000 { "vfnmsub132p%XW", { XM, Vex, EXx } },6092 { "vfnmsub132p%XW", { XM, Vex, EXx }, 0 }, 6001 6093 }, 6002 6094 … … 6005 6097 { Bad_Opcode }, 6006 6098 { Bad_Opcode }, 6007 { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6099 { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 6008 6100 }, 6009 6101 … … 6012 6104 { Bad_Opcode }, 6013 6105 { Bad_Opcode }, 6014 { "vfmaddsub213p%XW", { XM, Vex, EXx } },6106 { "vfmaddsub213p%XW", { XM, Vex, EXx }, 0 }, 6015 6107 { Bad_Opcode }, 6016 6108 }, … … 6020 6112 { Bad_Opcode }, 6021 6113 { Bad_Opcode }, 6022 { "vfmsubadd213p%XW", { XM, Vex, EXx } },6114 { "vfmsubadd213p%XW", { XM, Vex, EXx }, 0 }, 6023 6115 }, 6024 6116 … … 6027 6119 { Bad_Opcode }, 6028 6120 { Bad_Opcode }, 6029 { "vfmadd213p%XW", { XM, Vex, EXx } },6121 { "vfmadd213p%XW", { XM, Vex, EXx }, 0 }, 6030 6122 }, 6031 6123 … … 6034 6126 { Bad_Opcode }, 6035 6127 { Bad_Opcode }, 6036 { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6128 { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 6037 6129 }, 6038 6130 … … 6041 6133 { Bad_Opcode }, 6042 6134 { Bad_Opcode }, 6043 { "vfmsub213p%XW", { XM, Vex, EXx } },6135 { "vfmsub213p%XW", { XM, Vex, EXx }, 0 }, 6044 6136 }, 6045 6137 … … 6048 6140 { Bad_Opcode }, 6049 6141 { Bad_Opcode }, 6050 { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6142 { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 6051 6143 }, 6052 6144 … … 6055 6147 { Bad_Opcode }, 6056 6148 { Bad_Opcode }, 6057 { "vfnmadd213p%XW", { XM, Vex, EXx } },6149 { "vfnmadd213p%XW", { XM, Vex, EXx }, 0 }, 6058 6150 }, 6059 6151 … … 6062 6154 { Bad_Opcode }, 6063 6155 { Bad_Opcode }, 6064 { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6156 { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 6065 6157 }, 6066 6158 … … 6069 6161 { Bad_Opcode }, 6070 6162 { Bad_Opcode }, 6071 { "vfnmsub213p%XW", { XM, Vex, EXx } },6163 { "vfnmsub213p%XW", { XM, Vex, EXx }, 0 }, 6072 6164 }, 6073 6165 … … 6076 6168 { Bad_Opcode }, 6077 6169 { Bad_Opcode }, 6078 { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6170 { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 6079 6171 }, 6080 6172 … … 6083 6175 { Bad_Opcode }, 6084 6176 { Bad_Opcode }, 6085 { "vfmaddsub231p%XW", { XM, Vex, EXx } },6177 { "vfmaddsub231p%XW", { XM, Vex, EXx }, 0 }, 6086 6178 }, 6087 6179 … … 6090 6182 { Bad_Opcode }, 6091 6183 { Bad_Opcode }, 6092 { "vfmsubadd231p%XW", { XM, Vex, EXx } },6184 { "vfmsubadd231p%XW", { XM, Vex, EXx }, 0 }, 6093 6185 }, 6094 6186 … … 6097 6189 { Bad_Opcode }, 6098 6190 { Bad_Opcode }, 6099 { "vfmadd231p%XW", { XM, Vex, EXx } },6191 { "vfmadd231p%XW", { XM, Vex, EXx }, 0 }, 6100 6192 }, 6101 6193 … … 6104 6196 { Bad_Opcode }, 6105 6197 { Bad_Opcode }, 6106 { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6198 { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 6107 6199 }, 6108 6200 … … 6111 6203 { Bad_Opcode }, 6112 6204 { Bad_Opcode }, 6113 { "vfmsub231p%XW", { XM, Vex, EXx } },6205 { "vfmsub231p%XW", { XM, Vex, EXx }, 0 }, 6114 6206 }, 6115 6207 … … 6118 6210 { Bad_Opcode }, 6119 6211 { Bad_Opcode }, 6120 { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6212 { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 6121 6213 }, 6122 6214 … … 6125 6217 { Bad_Opcode }, 6126 6218 { Bad_Opcode }, 6127 { "vfnmadd231p%XW", { XM, Vex, EXx } },6219 { "vfnmadd231p%XW", { XM, Vex, EXx }, 0 }, 6128 6220 }, 6129 6221 … … 6132 6224 { Bad_Opcode }, 6133 6225 { Bad_Opcode }, 6134 { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6226 { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 6135 6227 }, 6136 6228 … … 6139 6231 { Bad_Opcode }, 6140 6232 { Bad_Opcode }, 6141 { "vfnmsub231p%XW", { XM, Vex, EXx } },6233 { "vfnmsub231p%XW", { XM, Vex, EXx }, 0 }, 6142 6234 }, 6143 6235 … … 6146 6238 { Bad_Opcode }, 6147 6239 { Bad_Opcode }, 6148 { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },6240 { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, 6149 6241 }, 6150 6242 … … 6372 6464 { Bad_Opcode }, 6373 6465 { Bad_Opcode }, 6374 { "vcvtps2ph", { EXxmmq, XM, Ib } },6466 { "vcvtps2ph", { EXxmmq, XM, Ib }, 0 }, 6375 6467 }, 6376 6468 … … 6512 6604 { Bad_Opcode }, 6513 6605 { Bad_Opcode }, 6514 { "vfmaddsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6606 { "vfmaddsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6515 6607 }, 6516 6608 … … 6519 6611 { Bad_Opcode }, 6520 6612 { Bad_Opcode }, 6521 { "vfmaddsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6613 { "vfmaddsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6522 6614 }, 6523 6615 … … 6526 6618 { Bad_Opcode }, 6527 6619 { Bad_Opcode }, 6528 { "vfmsubaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6620 { "vfmsubaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6529 6621 }, 6530 6622 … … 6533 6625 { Bad_Opcode }, 6534 6626 { Bad_Opcode }, 6535 { "vfmsubaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6627 { "vfmsubaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6536 6628 }, 6537 6629 … … 6569 6661 { Bad_Opcode }, 6570 6662 { Bad_Opcode }, 6571 { "vfmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6663 { "vfmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6572 6664 }, 6573 6665 … … 6576 6668 { Bad_Opcode }, 6577 6669 { Bad_Opcode }, 6578 { "vfmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6670 { "vfmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6579 6671 }, 6580 6672 … … 6597 6689 { Bad_Opcode }, 6598 6690 { Bad_Opcode }, 6599 { "vfmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6691 { "vfmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6600 6692 }, 6601 6693 … … 6604 6696 { Bad_Opcode }, 6605 6697 { Bad_Opcode }, 6606 { "vfmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6698 { "vfmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6607 6699 }, 6608 6700 … … 6625 6717 { Bad_Opcode }, 6626 6718 { Bad_Opcode }, 6627 { "vfnmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6719 { "vfnmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6628 6720 }, 6629 6721 … … 6632 6724 { Bad_Opcode }, 6633 6725 { Bad_Opcode }, 6634 { "vfnmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6726 { "vfnmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6635 6727 }, 6636 6728 … … 6653 6745 { Bad_Opcode }, 6654 6746 { Bad_Opcode }, 6655 { "vfnmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6747 { "vfnmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6656 6748 { Bad_Opcode }, 6657 6749 }, … … 6661 6753 { Bad_Opcode }, 6662 6754 { Bad_Opcode }, 6663 { "vfnmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },6755 { "vfnmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 6664 6756 }, 6665 6757 … … 6701 6793 /* X86_64_06 */ 6702 6794 { 6703 { "pushP", { es } },6795 { "pushP", { es }, 0 }, 6704 6796 }, 6705 6797 6706 6798 /* X86_64_07 */ 6707 6799 { 6708 { "popP", { es } },6800 { "popP", { es }, 0 }, 6709 6801 }, 6710 6802 6711 6803 /* X86_64_0D */ 6712 6804 { 6713 { "pushP", { cs } },6805 { "pushP", { cs }, 0 }, 6714 6806 }, 6715 6807 6716 6808 /* X86_64_16 */ 6717 6809 { 6718 { "pushP", { ss } },6810 { "pushP", { ss }, 0 }, 6719 6811 }, 6720 6812 6721 6813 /* X86_64_17 */ 6722 6814 { 6723 { "popP", { ss } },6815 { "popP", { ss }, 0 }, 6724 6816 }, 6725 6817 6726 6818 /* X86_64_1E */ 6727 6819 { 6728 { "pushP", { ds } },6820 { "pushP", { ds }, 0 }, 6729 6821 }, 6730 6822 6731 6823 /* X86_64_1F */ 6732 6824 { 6733 { "popP", { ds } },6825 { "popP", { ds }, 0 }, 6734 6826 }, 6735 6827 6736 6828 /* X86_64_27 */ 6737 6829 { 6738 { "daa", { XX } },6830 { "daa", { XX }, 0 }, 6739 6831 }, 6740 6832 6741 6833 /* X86_64_2F */ 6742 6834 { 6743 { "das", { XX } },6835 { "das", { XX }, 0 }, 6744 6836 }, 6745 6837 6746 6838 /* X86_64_37 */ 6747 6839 { 6748 { "aaa", { XX } },6840 { "aaa", { XX }, 0 }, 6749 6841 }, 6750 6842 6751 6843 /* X86_64_3F */ 6752 6844 { 6753 { "aas", { XX } },6845 { "aas", { XX }, 0 }, 6754 6846 }, 6755 6847 6756 6848 /* X86_64_60 */ 6757 6849 { 6758 { "pushaP", { XX } },6850 { "pushaP", { XX }, 0 }, 6759 6851 }, 6760 6852 6761 6853 /* X86_64_61 */ 6762 6854 { 6763 { "popaP", { XX } },6855 { "popaP", { XX }, 0 }, 6764 6856 }, 6765 6857 … … 6772 6864 /* X86_64_63 */ 6773 6865 { 6774 { "arpl", { Ew, Gw } },6775 { "movs{lq|xd}", { Gv, Ed } },6866 { "arpl", { Ew, Gw }, 0 }, 6867 { "movs{lq|xd}", { Gv, Ed }, 0 }, 6776 6868 }, 6777 6869 6778 6870 /* X86_64_6D */ 6779 6871 { 6780 { "ins{R|}", { Yzr, indirDX } },6781 { "ins{G|}", { Yzr, indirDX } },6872 { "ins{R|}", { Yzr, indirDX }, 0 }, 6873 { "ins{G|}", { Yzr, indirDX }, 0 }, 6782 6874 }, 6783 6875 6784 6876 /* X86_64_6F */ 6785 6877 { 6786 { "outs{R|}", { indirDXr, Xz } },6787 { "outs{G|}", { indirDXr, Xz } },6878 { "outs{R|}", { indirDXr, Xz }, 0 }, 6879 { "outs{G|}", { indirDXr, Xz }, 0 }, 6788 6880 }, 6789 6881 6790 6882 /* X86_64_9A */ 6791 6883 { 6792 { "Jcall{T|}", { Ap } },6884 { "Jcall{T|}", { Ap }, 0 }, 6793 6885 }, 6794 6886 … … 6807 6899 /* X86_64_CE */ 6808 6900 { 6809 { "into", { XX } },6901 { "into", { XX }, 0 }, 6810 6902 }, 6811 6903 6812 6904 /* X86_64_D4 */ 6813 6905 { 6814 { "aam", { Ib } },6906 { "aam", { Ib }, 0 }, 6815 6907 }, 6816 6908 6817 6909 /* X86_64_D5 */ 6818 6910 { 6819 { "aad", { Ib } }, 6911 { "aad", { Ib }, 0 }, 6912 }, 6913 6914 /* X86_64_E8 */ 6915 { 6916 { "callP", { Jv, BND }, 0 }, 6917 { "call@", { Jv, BND }, 0 } 6918 }, 6919 6920 /* X86_64_E9 */ 6921 { 6922 { "jmpP", { Jv, BND }, 0 }, 6923 { "jmp@", { Jv, BND }, 0 } 6820 6924 }, 6821 6925 6822 6926 /* X86_64_EA */ 6823 6927 { 6824 { "Jjmp{T|}", { Ap } },6928 { "Jjmp{T|}", { Ap }, 0 }, 6825 6929 }, 6826 6930 6827 6931 /* X86_64_0F01_REG_0 */ 6828 6932 { 6829 { "sgdt{Q|IQ}", { M } },6830 { "sgdt", { M } },6933 { "sgdt{Q|IQ}", { M }, 0 }, 6934 { "sgdt", { M }, 0 }, 6831 6935 }, 6832 6936 6833 6937 /* X86_64_0F01_REG_1 */ 6834 6938 { 6835 { "sidt{Q|IQ}", { M } },6836 { "sidt", { M } },6939 { "sidt{Q|IQ}", { M }, 0 }, 6940 { "sidt", { M }, 0 }, 6837 6941 }, 6838 6942 6839 6943 /* X86_64_0F01_REG_2 */ 6840 6944 { 6841 { "lgdt{Q|Q}", { M } },6842 { "lgdt", { M } },6945 { "lgdt{Q|Q}", { M }, 0 }, 6946 { "lgdt", { M }, 0 }, 6843 6947 }, 6844 6948 6845 6949 /* X86_64_0F01_REG_3 */ 6846 6950 { 6847 { "lidt{Q|Q}", { M } },6848 { "lidt", { M } },6951 { "lidt{Q|Q}", { M }, 0 }, 6952 { "lidt", { M }, 0 }, 6849 6953 }, 6850 6954 }; … … 6855 6959 { 6856 6960 /* 00 */ 6857 { "pshufb", { MX, EM } },6858 { "phaddw", { MX, EM } },6859 { "phaddd", { MX, EM } },6860 { "phaddsw", { MX, EM } },6861 { "pmaddubsw", { MX, EM } },6862 { "phsubw", { MX, EM } },6863 { "phsubd", { MX, EM } },6864 { "phsubsw", { MX, EM } },6961 { "pshufb", { MX, EM }, PREFIX_OPCODE }, 6962 { "phaddw", { MX, EM }, PREFIX_OPCODE }, 6963 { "phaddd", { MX, EM }, PREFIX_OPCODE }, 6964 { "phaddsw", { MX, EM }, PREFIX_OPCODE }, 6965 { "pmaddubsw", { MX, EM }, PREFIX_OPCODE }, 6966 { "phsubw", { MX, EM }, PREFIX_OPCODE }, 6967 { "phsubd", { MX, EM }, PREFIX_OPCODE }, 6968 { "phsubsw", { MX, EM }, PREFIX_OPCODE }, 6865 6969 /* 08 */ 6866 { "psignb", { MX, EM } },6867 { "psignw", { MX, EM } },6868 { "psignd", { MX, EM } },6869 { "pmulhrsw", { MX, EM } },6970 { "psignb", { MX, EM }, PREFIX_OPCODE }, 6971 { "psignw", { MX, EM }, PREFIX_OPCODE }, 6972 { "psignd", { MX, EM }, PREFIX_OPCODE }, 6973 { "pmulhrsw", { MX, EM }, PREFIX_OPCODE }, 6870 6974 { Bad_Opcode }, 6871 6975 { Bad_Opcode }, … … 6886 6990 { Bad_Opcode }, 6887 6991 { Bad_Opcode }, 6888 { "pabsb", { MX, EM } },6889 { "pabsw", { MX, EM } },6890 { "pabsd", { MX, EM } },6992 { "pabsb", { MX, EM }, PREFIX_OPCODE }, 6993 { "pabsw", { MX, EM }, PREFIX_OPCODE }, 6994 { "pabsd", { MX, EM }, PREFIX_OPCODE }, 6891 6995 { Bad_Opcode }, 6892 6996 /* 20 */ … … 7162 7266 { PREFIX_TABLE (PREFIX_0F3A0D) }, 7163 7267 { PREFIX_TABLE (PREFIX_0F3A0E) }, 7164 { "palignr", { MX, EM, Ib } },7268 { "palignr", { MX, EM, Ib }, PREFIX_OPCODE }, 7165 7269 /* 10 */ 7166 7270 { Bad_Opcode }, … … 7474 7578 { Bad_Opcode }, 7475 7579 /* 20 */ 7476 { "ptest", { XX } },7580 { "ptest", { XX }, PREFIX_OPCODE }, 7477 7581 { Bad_Opcode }, 7478 7582 { Bad_Opcode }, … … 7511 7615 /* 40 */ 7512 7616 { Bad_Opcode }, 7513 { "phaddbw", { XM, EXq } },7514 { "phaddbd", { XM, EXq } },7515 { "phaddbq", { XM, EXq } },7516 { Bad_Opcode }, 7517 { Bad_Opcode }, 7518 { "phaddwd", { XM, EXq } },7519 { "phaddwq", { XM, EXq } },7617 { "phaddbw", { XM, EXq }, PREFIX_OPCODE }, 7618 { "phaddbd", { XM, EXq }, PREFIX_OPCODE }, 7619 { "phaddbq", { XM, EXq }, PREFIX_OPCODE }, 7620 { Bad_Opcode }, 7621 { Bad_Opcode }, 7622 { "phaddwd", { XM, EXq }, PREFIX_OPCODE }, 7623 { "phaddwq", { XM, EXq }, PREFIX_OPCODE }, 7520 7624 /* 48 */ 7521 7625 { Bad_Opcode }, 7522 7626 { Bad_Opcode }, 7523 7627 { Bad_Opcode }, 7524 { "phadddq", { XM, EXq } },7628 { "phadddq", { XM, EXq }, PREFIX_OPCODE }, 7525 7629 { Bad_Opcode }, 7526 7630 { Bad_Opcode }, … … 7529 7633 /* 50 */ 7530 7634 { Bad_Opcode }, 7531 { "phaddubw", { XM, EXq } },7532 { "phaddubd", { XM, EXq } },7533 { "phaddubq", { XM, EXq } },7534 { Bad_Opcode }, 7535 { Bad_Opcode }, 7536 { "phadduwd", { XM, EXq } },7537 { "phadduwq", { XM, EXq } },7635 { "phaddubw", { XM, EXq }, PREFIX_OPCODE }, 7636 { "phaddubd", { XM, EXq }, PREFIX_OPCODE }, 7637 { "phaddubq", { XM, EXq }, PREFIX_OPCODE }, 7638 { Bad_Opcode }, 7639 { Bad_Opcode }, 7640 { "phadduwd", { XM, EXq }, PREFIX_OPCODE }, 7641 { "phadduwq", { XM, EXq }, PREFIX_OPCODE }, 7538 7642 /* 58 */ 7539 7643 { Bad_Opcode }, 7540 7644 { Bad_Opcode }, 7541 7645 { Bad_Opcode }, 7542 { "phaddudq", { XM, EXq } },7646 { "phaddudq", { XM, EXq }, PREFIX_OPCODE }, 7543 7647 { Bad_Opcode }, 7544 7648 { Bad_Opcode }, … … 7547 7651 /* 60 */ 7548 7652 { Bad_Opcode }, 7549 { "phsubbw", { XM, EXq } },7550 { "phsubbd", { XM, EXq } },7551 { "phsubbq", { XM, EXq } },7653 { "phsubbw", { XM, EXq }, PREFIX_OPCODE }, 7654 { "phsubbd", { XM, EXq }, PREFIX_OPCODE }, 7655 { "phsubbq", { XM, EXq }, PREFIX_OPCODE }, 7552 7656 { Bad_Opcode }, 7553 7657 { Bad_Opcode }, … … 7881 7985 { Bad_Opcode }, 7882 7986 { Bad_Opcode }, 7883 { "vpmacssww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7884 { "vpmacsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7885 { "vpmacssdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7987 { "vpmacssww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 7988 { "vpmacsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 7989 { "vpmacssdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 7886 7990 /* 88 */ 7887 7991 { Bad_Opcode }, … … 7891 7995 { Bad_Opcode }, 7892 7996 { Bad_Opcode }, 7893 { "vpmacssdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7894 { "vpmacssdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7997 { "vpmacssdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 7998 { "vpmacssdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 7895 7999 /* 90 */ 7896 8000 { Bad_Opcode }, … … 7899 8003 { Bad_Opcode }, 7900 8004 { Bad_Opcode }, 7901 { "vpmacsww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7902 { "vpmacswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7903 { "vpmacsdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },8005 { "vpmacsww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 8006 { "vpmacswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 8007 { "vpmacsdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 7904 8008 /* 98 */ 7905 8009 { Bad_Opcode }, … … 7909 8013 { Bad_Opcode }, 7910 8014 { Bad_Opcode }, 7911 { "vpmacsdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7912 { "vpmacsdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },8015 { "vpmacsdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 8016 { "vpmacsdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 7913 8017 /* a0 */ 7914 8018 { Bad_Opcode }, 7915 8019 { Bad_Opcode }, 7916 { "vpcmov", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7917 { "vpperm", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },7918 { Bad_Opcode }, 7919 { Bad_Opcode }, 7920 { "vpmadcsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },8020 { "vpcmov", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 8021 { "vpperm", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 8022 { Bad_Opcode }, 8023 { Bad_Opcode }, 8024 { "vpmadcsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 7921 8025 { Bad_Opcode }, 7922 8026 /* a8 */ … … 7936 8040 { Bad_Opcode }, 7937 8041 { Bad_Opcode }, 7938 { "vpmadcswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },8042 { "vpmadcswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 }, 0 }, 7939 8043 { Bad_Opcode }, 7940 8044 /* b8 */ … … 7948 8052 { Bad_Opcode }, 7949 8053 /* c0 */ 7950 { "vprotb", { XM, Vex_2src_1, Ib } },7951 { "vprotw", { XM, Vex_2src_1, Ib } },7952 { "vprotd", { XM, Vex_2src_1, Ib } },7953 { "vprotq", { XM, Vex_2src_1, Ib } },8054 { "vprotb", { XM, Vex_2src_1, Ib }, 0 }, 8055 { "vprotw", { XM, Vex_2src_1, Ib }, 0 }, 8056 { "vprotd", { XM, Vex_2src_1, Ib }, 0 }, 8057 { "vprotq", { XM, Vex_2src_1, Ib }, 0 }, 7954 8058 { Bad_Opcode }, 7955 8059 { Bad_Opcode }, … … 8169 8273 { VEX_LEN_TABLE (VEX_LEN_0FXOP_09_80) }, 8170 8274 { VEX_LEN_TABLE (VEX_LEN_0FXOP_09_81) }, 8171 { "vfrczss", { XM, EXd } },8172 { "vfrczsd", { XM, EXq } },8275 { "vfrczss", { XM, EXd }, 0 }, 8276 { "vfrczsd", { XM, EXq }, 0 }, 8173 8277 { Bad_Opcode }, 8174 8278 { Bad_Opcode }, … … 8185 8289 { Bad_Opcode }, 8186 8290 /* 90 */ 8187 { "vprotb", { XM, Vex_2src_1, Vex_2src_2 } },8188 { "vprotw", { XM, Vex_2src_1, Vex_2src_2 } },8189 { "vprotd", { XM, Vex_2src_1, Vex_2src_2 } },8190 { "vprotq", { XM, Vex_2src_1, Vex_2src_2 } },8191 { "vpshlb", { XM, Vex_2src_1, Vex_2src_2 } },8192 { "vpshlw", { XM, Vex_2src_1, Vex_2src_2 } },8193 { "vpshld", { XM, Vex_2src_1, Vex_2src_2 } },8194 { "vpshlq", { XM, Vex_2src_1, Vex_2src_2 } },8291 { "vprotb", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8292 { "vprotw", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8293 { "vprotd", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8294 { "vprotq", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8295 { "vpshlb", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8296 { "vpshlw", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8297 { "vpshld", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8298 { "vpshlq", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8195 8299 /* 98 */ 8196 { "vpshab", { XM, Vex_2src_1, Vex_2src_2 } },8197 { "vpshaw", { XM, Vex_2src_1, Vex_2src_2 } },8198 { "vpshad", { XM, Vex_2src_1, Vex_2src_2 } },8199 { "vpshaq", { XM, Vex_2src_1, Vex_2src_2 } },8300 { "vpshab", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8301 { "vpshaw", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8302 { "vpshad", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8303 { "vpshaq", { XM, Vex_2src_1, Vex_2src_2 }, 0 }, 8200 8304 { Bad_Opcode }, 8201 8305 { Bad_Opcode }, … … 8240 8344 /* c0 */ 8241 8345 { Bad_Opcode }, 8242 { "vphaddbw", { XM, EXxmm } },8243 { "vphaddbd", { XM, EXxmm } },8244 { "vphaddbq", { XM, EXxmm } },8245 { Bad_Opcode }, 8246 { Bad_Opcode }, 8247 { "vphaddwd", { XM, EXxmm } },8248 { "vphaddwq", { XM, EXxmm } },8346 { "vphaddbw", { XM, EXxmm }, 0 }, 8347 { "vphaddbd", { XM, EXxmm }, 0 }, 8348 { "vphaddbq", { XM, EXxmm }, 0 }, 8349 { Bad_Opcode }, 8350 { Bad_Opcode }, 8351 { "vphaddwd", { XM, EXxmm }, 0 }, 8352 { "vphaddwq", { XM, EXxmm }, 0 }, 8249 8353 /* c8 */ 8250 8354 { Bad_Opcode }, 8251 8355 { Bad_Opcode }, 8252 8356 { Bad_Opcode }, 8253 { "vphadddq", { XM, EXxmm } },8357 { "vphadddq", { XM, EXxmm }, 0 }, 8254 8358 { Bad_Opcode }, 8255 8359 { Bad_Opcode }, … … 8258 8362 /* d0 */ 8259 8363 { Bad_Opcode }, 8260 { "vphaddubw", { XM, EXxmm } },8261 { "vphaddubd", { XM, EXxmm } },8262 { "vphaddubq", { XM, EXxmm } },8263 { Bad_Opcode }, 8264 { Bad_Opcode }, 8265 { "vphadduwd", { XM, EXxmm } },8266 { "vphadduwq", { XM, EXxmm } },8364 { "vphaddubw", { XM, EXxmm }, 0 }, 8365 { "vphaddubd", { XM, EXxmm }, 0 }, 8366 { "vphaddubq", { XM, EXxmm }, 0 }, 8367 { Bad_Opcode }, 8368 { Bad_Opcode }, 8369 { "vphadduwd", { XM, EXxmm }, 0 }, 8370 { "vphadduwq", { XM, EXxmm }, 0 }, 8267 8371 /* d8 */ 8268 8372 { Bad_Opcode }, 8269 8373 { Bad_Opcode }, 8270 8374 { Bad_Opcode }, 8271 { "vphaddudq", { XM, EXxmm } },8375 { "vphaddudq", { XM, EXxmm }, 0 }, 8272 8376 { Bad_Opcode }, 8273 8377 { Bad_Opcode }, … … 8276 8380 /* e0 */ 8277 8381 { Bad_Opcode }, 8278 { "vphsubbw", { XM, EXxmm } },8279 { "vphsubwd", { XM, EXxmm } },8280 { "vphsubdq", { XM, EXxmm } },8382 { "vphsubbw", { XM, EXxmm }, 0 }, 8383 { "vphsubwd", { XM, EXxmm }, 0 }, 8384 { "vphsubdq", { XM, EXxmm }, 0 }, 8281 8385 { Bad_Opcode }, 8282 8386 { Bad_Opcode }, … … 8332 8436 { Bad_Opcode }, 8333 8437 /* 10 */ 8334 { "bextr", { Gv, Ev, Iq } },8438 { "bextr", { Gv, Ev, Iq }, 0 }, 8335 8439 { Bad_Opcode }, 8336 8440 { REG_TABLE (REG_XOP_LWP) }, … … 8702 8806 { PREFIX_TABLE (PREFIX_VEX_0F52) }, 8703 8807 { PREFIX_TABLE (PREFIX_VEX_0F53) }, 8704 { "vandpX", { XM, Vex, EXx } },8705 { "vandnpX", { XM, Vex, EXx } },8706 { "vorpX", { XM, Vex, EXx } },8707 { "vxorpX", { XM, Vex, EXx } },8808 { "vandpX", { XM, Vex, EXx }, 0 }, 8809 { "vandnpX", { XM, Vex, EXx }, 0 }, 8810 { "vorpX", { XM, Vex, EXx }, 0 }, 8811 { "vxorpX", { XM, Vex, EXx }, 0 }, 8708 8812 /* 58 */ 8709 8813 { PREFIX_TABLE (PREFIX_VEX_0F58) }, … … 8830 8934 { PREFIX_TABLE (PREFIX_VEX_0FC4) }, 8831 8935 { PREFIX_TABLE (PREFIX_VEX_0FC5) }, 8832 { "vshufpX", { XM, Vex, EXx, Ib } },8936 { "vshufpX", { XM, Vex, EXx, Ib }, 0 }, 8833 8937 { Bad_Opcode }, 8834 8938 /* c8 */ … … 9550 9654 /* VEX_LEN_0F2A_P_1 */ 9551 9655 { 9552 { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev } },9553 { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev } },9656 { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev }, 0 }, 9657 { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev }, 0 }, 9554 9658 }, 9555 9659 9556 9660 /* VEX_LEN_0F2A_P_3 */ 9557 9661 { 9558 { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev } },9559 { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev } },9662 { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev }, 0 }, 9663 { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev }, 0 }, 9560 9664 }, 9561 9665 9562 9666 /* VEX_LEN_0F2C_P_1 */ 9563 9667 { 9564 { "vcvttss2siY", { Gv, EXdScalar } },9565 { "vcvttss2siY", { Gv, EXdScalar } },9668 { "vcvttss2siY", { Gv, EXdScalar }, 0 }, 9669 { "vcvttss2siY", { Gv, EXdScalar }, 0 }, 9566 9670 }, 9567 9671 9568 9672 /* VEX_LEN_0F2C_P_3 */ 9569 9673 { 9570 { "vcvttsd2siY", { Gv, EXqScalar } },9571 { "vcvttsd2siY", { Gv, EXqScalar } },9674 { "vcvttsd2siY", { Gv, EXqScalar }, 0 }, 9675 { "vcvttsd2siY", { Gv, EXqScalar }, 0 }, 9572 9676 }, 9573 9677 9574 9678 /* VEX_LEN_0F2D_P_1 */ 9575 9679 { 9576 { "vcvtss2siY", { Gv, EXdScalar } },9577 { "vcvtss2siY", { Gv, EXdScalar } },9680 { "vcvtss2siY", { Gv, EXdScalar }, 0 }, 9681 { "vcvtss2siY", { Gv, EXdScalar }, 0 }, 9578 9682 }, 9579 9683 9580 9684 /* VEX_LEN_0F2D_P_3 */ 9581 9685 { 9582 { "vcvtsd2siY", { Gv, EXqScalar } },9583 { "vcvtsd2siY", { Gv, EXqScalar } },9686 { "vcvtsd2siY", { Gv, EXqScalar }, 0 }, 9687 { "vcvtsd2siY", { Gv, EXqScalar }, 0 }, 9584 9688 }, 9585 9689 … … 9797 9901 /* VEX_LEN_0F6E_P_2 */ 9798 9902 { 9799 { "vmovK", { XMScalar, Edq } },9800 { "vmovK", { XMScalar, Edq } },9903 { "vmovK", { XMScalar, Edq }, 0 }, 9904 { "vmovK", { XMScalar, Edq }, 0 }, 9801 9905 }, 9802 9906 … … 9809 9913 /* VEX_LEN_0F7E_P_2 */ 9810 9914 { 9811 { "vmovK", { Edq, XMScalar } },9812 { "vmovK", { Edq, XMScalar } },9915 { "vmovK", { Edq, XMScalar }, 0 }, 9916 { "vmovK", { Edq, XMScalar }, 0 }, 9813 9917 }, 9814 9918 … … 9988 10092 /* VEX_LEN_0F38F2_P_0 */ 9989 10093 { 9990 { "andnS", { Gdq, VexGdq, Edq } },10094 { "andnS", { Gdq, VexGdq, Edq }, 0 }, 9991 10095 }, 9992 10096 9993 10097 /* VEX_LEN_0F38F3_R_1_P_0 */ 9994 10098 { 9995 { "blsrS", { VexGdq, Edq } },10099 { "blsrS", { VexGdq, Edq }, 0 }, 9996 10100 }, 9997 10101 9998 10102 /* VEX_LEN_0F38F3_R_2_P_0 */ 9999 10103 { 10000 { "blsmskS", { VexGdq, Edq } },10104 { "blsmskS", { VexGdq, Edq }, 0 }, 10001 10105 }, 10002 10106 10003 10107 /* VEX_LEN_0F38F3_R_3_P_0 */ 10004 10108 { 10005 { "blsiS", { VexGdq, Edq } },10109 { "blsiS", { VexGdq, Edq }, 0 }, 10006 10110 }, 10007 10111 10008 10112 /* VEX_LEN_0F38F5_P_0 */ 10009 10113 { 10010 { "bzhiS", { Gdq, Edq, VexGdq } },10114 { "bzhiS", { Gdq, Edq, VexGdq }, 0 }, 10011 10115 }, 10012 10116 10013 10117 /* VEX_LEN_0F38F5_P_1 */ 10014 10118 { 10015 { "pextS", { Gdq, VexGdq, Edq } },10119 { "pextS", { Gdq, VexGdq, Edq }, 0 }, 10016 10120 }, 10017 10121 10018 10122 /* VEX_LEN_0F38F5_P_3 */ 10019 10123 { 10020 { "pdepS", { Gdq, VexGdq, Edq } },10124 { "pdepS", { Gdq, VexGdq, Edq }, 0 }, 10021 10125 }, 10022 10126 10023 10127 /* VEX_LEN_0F38F6_P_3 */ 10024 10128 { 10025 { "mulxS", { Gdq, VexGdq, Edq } },10129 { "mulxS", { Gdq, VexGdq, Edq }, 0 }, 10026 10130 }, 10027 10131 10028 10132 /* VEX_LEN_0F38F7_P_0 */ 10029 10133 { 10030 { "bextrS", { Gdq, Edq, VexGdq } },10134 { "bextrS", { Gdq, Edq, VexGdq }, 0 }, 10031 10135 }, 10032 10136 10033 10137 /* VEX_LEN_0F38F7_P_1 */ 10034 10138 { 10035 { "sarxS", { Gdq, Edq, VexGdq } },10139 { "sarxS", { Gdq, Edq, VexGdq }, 0 }, 10036 10140 }, 10037 10141 10038 10142 /* VEX_LEN_0F38F7_P_2 */ 10039 10143 { 10040 { "shlxS", { Gdq, Edq, VexGdq } },10144 { "shlxS", { Gdq, Edq, VexGdq }, 0 }, 10041 10145 }, 10042 10146 10043 10147 /* VEX_LEN_0F38F7_P_3 */ 10044 10148 { 10045 { "shrxS", { Gdq, Edq, VexGdq } },10149 { "shrxS", { Gdq, Edq, VexGdq }, 0 }, 10046 10150 }, 10047 10151 … … 10088 10192 /* VEX_LEN_0F3A16_P_2 */ 10089 10193 { 10090 { "vpextrK", { Edq, XM, Ib } },10194 { "vpextrK", { Edq, XM, Ib }, 0 }, 10091 10195 }, 10092 10196 10093 10197 /* VEX_LEN_0F3A17_P_2 */ 10094 10198 { 10095 { "vextractps", { Edqd, XM, Ib } },10199 { "vextractps", { Edqd, XM, Ib }, 0 }, 10096 10200 }, 10097 10201 … … 10120 10224 /* VEX_LEN_0F3A22_P_2 */ 10121 10225 { 10122 { "vpinsrK", { XM, Vex128, Edq, Ib } },10226 { "vpinsrK", { XM, Vex128, Edq, Ib }, 0 }, 10123 10227 }, 10124 10228 … … 10193 10297 /* VEX_LEN_0F3A6A_P_2 */ 10194 10298 { 10195 { "vfmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },10299 { "vfmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 }, 0 }, 10196 10300 }, 10197 10301 10198 10302 /* VEX_LEN_0F3A6B_P_2 */ 10199 10303 { 10200 { "vfmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },10304 { "vfmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 }, 0 }, 10201 10305 }, 10202 10306 10203 10307 /* VEX_LEN_0F3A6E_P_2 */ 10204 10308 { 10205 { "vfmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },10309 { "vfmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 }, 0 }, 10206 10310 }, 10207 10311 10208 10312 /* VEX_LEN_0F3A6F_P_2 */ 10209 10313 { 10210 { "vfmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },10314 { "vfmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 }, 0 }, 10211 10315 }, 10212 10316 10213 10317 /* VEX_LEN_0F3A7A_P_2 */ 10214 10318 { 10215 { "vfnmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },10319 { "vfnmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 }, 0 }, 10216 10320 }, 10217 10321 10218 10322 /* VEX_LEN_0F3A7B_P_2 */ 10219 10323 { 10220 { "vfnmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },10324 { "vfnmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 }, 0 }, 10221 10325 }, 10222 10326 10223 10327 /* VEX_LEN_0F3A7E_P_2 */ 10224 10328 { 10225 { "vfnmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },10329 { "vfnmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 }, 0 }, 10226 10330 }, 10227 10331 10228 10332 /* VEX_LEN_0F3A7F_P_2 */ 10229 10333 { 10230 { "vfnmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },10334 { "vfnmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 }, 0 }, 10231 10335 }, 10232 10336 … … 10238 10342 /* VEX_LEN_0F3AF0_P_3 */ 10239 10343 { 10240 { "rorxS", { Gdq, Edq, Ib } },10344 { "rorxS", { Gdq, Edq, Ib }, 0 }, 10241 10345 }, 10242 10346 10243 10347 /* VEX_LEN_0FXOP_08_CC */ 10244 10348 { 10245 { "vpcomb", { XM, Vex128, EXx, Ib } },10349 { "vpcomb", { XM, Vex128, EXx, Ib }, 0 }, 10246 10350 }, 10247 10351 10248 10352 /* VEX_LEN_0FXOP_08_CD */ 10249 10353 { 10250 { "vpcomw", { XM, Vex128, EXx, Ib } },10354 { "vpcomw", { XM, Vex128, EXx, Ib }, 0 }, 10251 10355 }, 10252 10356 10253 10357 /* VEX_LEN_0FXOP_08_CE */ 10254 10358 { 10255 { "vpcomd", { XM, Vex128, EXx, Ib } },10359 { "vpcomd", { XM, Vex128, EXx, Ib }, 0 }, 10256 10360 }, 10257 10361 10258 10362 /* VEX_LEN_0FXOP_08_CF */ 10259 10363 { 10260 { "vpcomq", { XM, Vex128, EXx, Ib } },10364 { "vpcomq", { XM, Vex128, EXx, Ib }, 0 }, 10261 10365 }, 10262 10366 10263 10367 /* VEX_LEN_0FXOP_08_EC */ 10264 10368 { 10265 { "vpcomub", { XM, Vex128, EXx, Ib } },10369 { "vpcomub", { XM, Vex128, EXx, Ib }, 0 }, 10266 10370 }, 10267 10371 10268 10372 /* VEX_LEN_0FXOP_08_ED */ 10269 10373 { 10270 { "vpcomuw", { XM, Vex128, EXx, Ib } },10374 { "vpcomuw", { XM, Vex128, EXx, Ib }, 0 }, 10271 10375 }, 10272 10376 10273 10377 /* VEX_LEN_0FXOP_08_EE */ 10274 10378 { 10275 { "vpcomud", { XM, Vex128, EXx, Ib } },10379 { "vpcomud", { XM, Vex128, EXx, Ib }, 0 }, 10276 10380 }, 10277 10381 10278 10382 /* VEX_LEN_0FXOP_08_EF */ 10279 10383 { 10280 { "vpcomuq", { XM, Vex128, EXx, Ib } },10384 { "vpcomuq", { XM, Vex128, EXx, Ib }, 0 }, 10281 10385 }, 10282 10386 10283 10387 /* VEX_LEN_0FXOP_09_80 */ 10284 10388 { 10285 { "vfrczps", { XM, EXxmm } },10286 { "vfrczps", { XM, EXymmq } },10389 { "vfrczps", { XM, EXxmm }, 0 }, 10390 { "vfrczps", { XM, EXymmq }, 0 }, 10287 10391 }, 10288 10392 10289 10393 /* VEX_LEN_0FXOP_09_81 */ 10290 10394 { 10291 { "vfrczpd", { XM, EXxmm } },10292 { "vfrczpd", { XM, EXymmq } },10395 { "vfrczpd", { XM, EXxmm }, 0 }, 10396 { "vfrczpd", { XM, EXymmq }, 0 }, 10293 10397 }, 10294 10398 }; … … 10297 10401 { 10298 10402 /* VEX_W_0F10_P_0 */ 10299 { "vmovups", { XM, EXx } },10403 { "vmovups", { XM, EXx }, 0 }, 10300 10404 }, 10301 10405 { 10302 10406 /* VEX_W_0F10_P_1 */ 10303 { "vmovss", { XMVexScalar, VexScalar, EXdScalar } },10407 { "vmovss", { XMVexScalar, VexScalar, EXdScalar }, 0 }, 10304 10408 }, 10305 10409 { 10306 10410 /* VEX_W_0F10_P_2 */ 10307 { "vmovupd", { XM, EXx } },10411 { "vmovupd", { XM, EXx }, 0 }, 10308 10412 }, 10309 10413 { 10310 10414 /* VEX_W_0F10_P_3 */ 10311 { "vmovsd", { XMVexScalar, VexScalar, EXqScalar } },10415 { "vmovsd", { XMVexScalar, VexScalar, EXqScalar }, 0 }, 10312 10416 }, 10313 10417 { 10314 10418 /* VEX_W_0F11_P_0 */ 10315 { "vmovups", { EXxS, XM } },10419 { "vmovups", { EXxS, XM }, 0 }, 10316 10420 }, 10317 10421 { 10318 10422 /* VEX_W_0F11_P_1 */ 10319 { "vmovss", { EXdVexScalarS, VexScalar, XMScalar } },10423 { "vmovss", { EXdVexScalarS, VexScalar, XMScalar }, 0 }, 10320 10424 }, 10321 10425 { 10322 10426 /* VEX_W_0F11_P_2 */ 10323 { "vmovupd", { EXxS, XM } },10427 { "vmovupd", { EXxS, XM }, 0 }, 10324 10428 }, 10325 10429 { 10326 10430 /* VEX_W_0F11_P_3 */ 10327 { "vmovsd", { EXqVexScalarS, VexScalar, XMScalar } },10431 { "vmovsd", { EXqVexScalarS, VexScalar, XMScalar }, 0 }, 10328 10432 }, 10329 10433 { 10330 10434 /* VEX_W_0F12_P_0_M_0 */ 10331 { "vmovlps", { XM, Vex128, EXq } },10435 { "vmovlps", { XM, Vex128, EXq }, 0 }, 10332 10436 }, 10333 10437 { 10334 10438 /* VEX_W_0F12_P_0_M_1 */ 10335 { "vmovhlps", { XM, Vex128, EXq } },10439 { "vmovhlps", { XM, Vex128, EXq }, 0 }, 10336 10440 }, 10337 10441 { 10338 10442 /* VEX_W_0F12_P_1 */ 10339 { "vmovsldup", { XM, EXx } },10443 { "vmovsldup", { XM, EXx }, 0 }, 10340 10444 }, 10341 10445 { 10342 10446 /* VEX_W_0F12_P_2 */ 10343 { "vmovlpd", { XM, Vex128, EXq } },10447 { "vmovlpd", { XM, Vex128, EXq }, 0 }, 10344 10448 }, 10345 10449 { 10346 10450 /* VEX_W_0F12_P_3 */ 10347 { "vmovddup", { XM, EXymmq } },10451 { "vmovddup", { XM, EXymmq }, 0 }, 10348 10452 }, 10349 10453 { 10350 10454 /* VEX_W_0F13_M_0 */ 10351 { "vmovlpX", { EXq, XM } },10455 { "vmovlpX", { EXq, XM }, 0 }, 10352 10456 }, 10353 10457 { 10354 10458 /* VEX_W_0F14 */ 10355 { "vunpcklpX", { XM, Vex, EXx } },10459 { "vunpcklpX", { XM, Vex, EXx }, 0 }, 10356 10460 }, 10357 10461 { 10358 10462 /* VEX_W_0F15 */ 10359 { "vunpckhpX", { XM, Vex, EXx } },10463 { "vunpckhpX", { XM, Vex, EXx }, 0 }, 10360 10464 }, 10361 10465 { 10362 10466 /* VEX_W_0F16_P_0_M_0 */ 10363 { "vmovhps", { XM, Vex128, EXq } },10467 { "vmovhps", { XM, Vex128, EXq }, 0 }, 10364 10468 }, 10365 10469 { 10366 10470 /* VEX_W_0F16_P_0_M_1 */ 10367 { "vmovlhps", { XM, Vex128, EXq } },10471 { "vmovlhps", { XM, Vex128, EXq }, 0 }, 10368 10472 }, 10369 10473 { 10370 10474 /* VEX_W_0F16_P_1 */ 10371 { "vmovshdup", { XM, EXx } },10475 { "vmovshdup", { XM, EXx }, 0 }, 10372 10476 }, 10373 10477 { 10374 10478 /* VEX_W_0F16_P_2 */ 10375 { "vmovhpd", { XM, Vex128, EXq } },10479 { "vmovhpd", { XM, Vex128, EXq }, 0 }, 10376 10480 }, 10377 10481 { 10378 10482 /* VEX_W_0F17_M_0 */ 10379 { "vmovhpX", { EXq, XM } },10483 { "vmovhpX", { EXq, XM }, 0 }, 10380 10484 }, 10381 10485 { 10382 10486 /* VEX_W_0F28 */ 10383 { "vmovapX", { XM, EXx } },10487 { "vmovapX", { XM, EXx }, 0 }, 10384 10488 }, 10385 10489 { 10386 10490 /* VEX_W_0F29 */ 10387 { "vmovapX", { EXxS, XM } },10491 { "vmovapX", { EXxS, XM }, 0 }, 10388 10492 }, 10389 10493 { 10390 10494 /* VEX_W_0F2B_M_0 */ 10391 { "vmovntpX", { Mx, XM } },10495 { "vmovntpX", { Mx, XM }, 0 }, 10392 10496 }, 10393 10497 { 10394 10498 /* VEX_W_0F2E_P_0 */ 10395 { "vucomiss", { XMScalar, EXdScalar } },10499 { "vucomiss", { XMScalar, EXdScalar }, 0 }, 10396 10500 }, 10397 10501 { 10398 10502 /* VEX_W_0F2E_P_2 */ 10399 { "vucomisd", { XMScalar, EXqScalar } },10503 { "vucomisd", { XMScalar, EXqScalar }, 0 }, 10400 10504 }, 10401 10505 { 10402 10506 /* VEX_W_0F2F_P_0 */ 10403 { "vcomiss", { XMScalar, EXdScalar } },10507 { "vcomiss", { XMScalar, EXdScalar }, 0 }, 10404 10508 }, 10405 10509 { 10406 10510 /* VEX_W_0F2F_P_2 */ 10407 { "vcomisd", { XMScalar, EXqScalar } },10511 { "vcomisd", { XMScalar, EXqScalar }, 0 }, 10408 10512 }, 10409 10513 { 10410 10514 /* VEX_W_0F41_P_0_LEN_1 */ 10411 { "kandw", { MaskG, MaskVex, MaskR }},10412 { "kandq", { MaskG, MaskVex, MaskR }},10515 { MOD_TABLE (MOD_VEX_W_0_0F41_P_0_LEN_1) }, 10516 { MOD_TABLE (MOD_VEX_W_1_0F41_P_0_LEN_1) }, 10413 10517 }, 10414 10518 { 10415 10519 /* VEX_W_0F41_P_2_LEN_1 */ 10416 { "kandb", { MaskG, MaskVex, MaskR }},10417 { "kandd", { MaskG, MaskVex, MaskR } },10520 { MOD_TABLE (MOD_VEX_W_0_0F41_P_2_LEN_1) }, 10521 { MOD_TABLE (MOD_VEX_W_1_0F41_P_2_LEN_1) } 10418 10522 }, 10419 10523 { 10420 10524 /* VEX_W_0F42_P_0_LEN_1 */ 10421 { "kandnw", { MaskG, MaskVex, MaskR }},10422 { "kandnq", { MaskG, MaskVex, MaskR }},10525 { MOD_TABLE (MOD_VEX_W_0_0F42_P_0_LEN_1) }, 10526 { MOD_TABLE (MOD_VEX_W_1_0F42_P_0_LEN_1) }, 10423 10527 }, 10424 10528 { 10425 10529 /* VEX_W_0F42_P_2_LEN_1 */ 10426 { "kandnb", { MaskG, MaskVex, MaskR }},10427 { "kandnd", { MaskG, MaskVex, MaskR }},10530 { MOD_TABLE (MOD_VEX_W_0_0F42_P_2_LEN_1) }, 10531 { MOD_TABLE (MOD_VEX_W_1_0F42_P_2_LEN_1) }, 10428 10532 }, 10429 10533 { 10430 10534 /* VEX_W_0F44_P_0_LEN_0 */ 10431 { "knotw", { MaskG, MaskR }},10432 { "knotq", { MaskG, MaskR }},10535 { MOD_TABLE (MOD_VEX_W_0_0F44_P_0_LEN_1) }, 10536 { MOD_TABLE (MOD_VEX_W_1_0F44_P_0_LEN_1) }, 10433 10537 }, 10434 10538 { 10435 10539 /* VEX_W_0F44_P_2_LEN_0 */ 10436 { "knotb", { MaskG, MaskR }},10437 { "knotd", { MaskG, MaskR }},10540 { MOD_TABLE (MOD_VEX_W_0_0F44_P_2_LEN_1) }, 10541 { MOD_TABLE (MOD_VEX_W_1_0F44_P_2_LEN_1) }, 10438 10542 }, 10439 10543 { 10440 10544 /* VEX_W_0F45_P_0_LEN_1 */ 10441 { "korw", { MaskG, MaskVex, MaskR }},10442 { "korq", { MaskG, MaskVex, MaskR }},10545 { MOD_TABLE (MOD_VEX_W_0_0F45_P_0_LEN_1) }, 10546 { MOD_TABLE (MOD_VEX_W_1_0F45_P_0_LEN_1) }, 10443 10547 }, 10444 10548 { 10445 10549 /* VEX_W_0F45_P_2_LEN_1 */ 10446 { "korb", { MaskG, MaskVex, MaskR }},10447 { "kord", { MaskG, MaskVex, MaskR }},10550 { MOD_TABLE (MOD_VEX_W_0_0F45_P_2_LEN_1) }, 10551 { MOD_TABLE (MOD_VEX_W_1_0F45_P_2_LEN_1) }, 10448 10552 }, 10449 10553 { 10450 10554 /* VEX_W_0F46_P_0_LEN_1 */ 10451 { "kxnorw", { MaskG, MaskVex, MaskR }},10452 { "kxnorq", { MaskG, MaskVex, MaskR }},10555 { MOD_TABLE (MOD_VEX_W_0_0F46_P_0_LEN_1) }, 10556 { MOD_TABLE (MOD_VEX_W_1_0F46_P_0_LEN_1) }, 10453 10557 }, 10454 10558 { 10455 10559 /* VEX_W_0F46_P_2_LEN_1 */ 10456 { "kxnorb", { MaskG, MaskVex, MaskR }},10457 { "kxnord", { MaskG, MaskVex, MaskR }},10560 { MOD_TABLE (MOD_VEX_W_0_0F46_P_2_LEN_1) }, 10561 { MOD_TABLE (MOD_VEX_W_1_0F46_P_2_LEN_1) }, 10458 10562 }, 10459 10563 { 10460 10564 /* VEX_W_0F47_P_0_LEN_1 */ 10461 { "kxorw", { MaskG, MaskVex, MaskR }},10462 { "kxorq", { MaskG, MaskVex, MaskR }},10565 { MOD_TABLE (MOD_VEX_W_0_0F47_P_0_LEN_1) }, 10566 { MOD_TABLE (MOD_VEX_W_1_0F47_P_0_LEN_1) }, 10463 10567 }, 10464 10568 { 10465 10569 /* VEX_W_0F47_P_2_LEN_1 */ 10466 { "kxorb", { MaskG, MaskVex, MaskR }},10467 { "kxord", { MaskG, MaskVex, MaskR }},10570 { MOD_TABLE (MOD_VEX_W_0_0F47_P_2_LEN_1) }, 10571 { MOD_TABLE (MOD_VEX_W_1_0F47_P_2_LEN_1) }, 10468 10572 }, 10469 10573 { 10470 10574 /* VEX_W_0F4A_P_0_LEN_1 */ 10471 { "kaddw", { MaskG, MaskVex, MaskR }},10472 { "kaddq", { MaskG, MaskVex, MaskR }},10575 { MOD_TABLE (MOD_VEX_W_0_0F4A_P_0_LEN_1) }, 10576 { MOD_TABLE (MOD_VEX_W_1_0F4A_P_0_LEN_1) }, 10473 10577 }, 10474 10578 { 10475 10579 /* VEX_W_0F4A_P_2_LEN_1 */ 10476 { "kaddb", { MaskG, MaskVex, MaskR }},10477 { "kaddd", { MaskG, MaskVex, MaskR }},10580 { MOD_TABLE (MOD_VEX_W_0_0F4A_P_2_LEN_1) }, 10581 { MOD_TABLE (MOD_VEX_W_1_0F4A_P_2_LEN_1) }, 10478 10582 }, 10479 10583 { 10480 10584 /* VEX_W_0F4B_P_0_LEN_1 */ 10481 { "kunpckwd", { MaskG, MaskVex, MaskR }},10482 { "kunpckdq", { MaskG, MaskVex, MaskR }},10585 { MOD_TABLE (MOD_VEX_W_0_0F4B_P_0_LEN_1) }, 10586 { MOD_TABLE (MOD_VEX_W_1_0F4B_P_0_LEN_1) }, 10483 10587 }, 10484 10588 { 10485 10589 /* VEX_W_0F4B_P_2_LEN_1 */ 10486 { "kunpckbw", { MaskG, MaskVex, MaskR }},10590 { MOD_TABLE (MOD_VEX_W_0_0F4B_P_2_LEN_1) }, 10487 10591 }, 10488 10592 { 10489 10593 /* VEX_W_0F50_M_0 */ 10490 { "vmovmskpX", { Gdq, XS } },10594 { "vmovmskpX", { Gdq, XS }, 0 }, 10491 10595 }, 10492 10596 { 10493 10597 /* VEX_W_0F51_P_0 */ 10494 { "vsqrtps", { XM, EXx } },10598 { "vsqrtps", { XM, EXx }, 0 }, 10495 10599 }, 10496 10600 { 10497 10601 /* VEX_W_0F51_P_1 */ 10498 { "vsqrtss", { XMScalar, VexScalar, EXdScalar } },10602 { "vsqrtss", { XMScalar, VexScalar, EXdScalar }, 0 }, 10499 10603 }, 10500 10604 { 10501 10605 /* VEX_W_0F51_P_2 */ 10502 { "vsqrtpd", { XM, EXx } },10606 { "vsqrtpd", { XM, EXx }, 0 }, 10503 10607 }, 10504 10608 { 10505 10609 /* VEX_W_0F51_P_3 */ 10506 { "vsqrtsd", { XMScalar, VexScalar, EXqScalar } },10610 { "vsqrtsd", { XMScalar, VexScalar, EXqScalar }, 0 }, 10507 10611 }, 10508 10612 { 10509 10613 /* VEX_W_0F52_P_0 */ 10510 { "vrsqrtps", { XM, EXx } },10614 { "vrsqrtps", { XM, EXx }, 0 }, 10511 10615 }, 10512 10616 { 10513 10617 /* VEX_W_0F52_P_1 */ 10514 { "vrsqrtss", { XMScalar, VexScalar, EXdScalar } },10618 { "vrsqrtss", { XMScalar, VexScalar, EXdScalar }, 0 }, 10515 10619 }, 10516 10620 { 10517 10621 /* VEX_W_0F53_P_0 */ 10518 { "vrcpps", { XM, EXx } },10622 { "vrcpps", { XM, EXx }, 0 }, 10519 10623 }, 10520 10624 { 10521 10625 /* VEX_W_0F53_P_1 */ 10522 { "vrcpss", { XMScalar, VexScalar, EXdScalar } },10626 { "vrcpss", { XMScalar, VexScalar, EXdScalar }, 0 }, 10523 10627 }, 10524 10628 { 10525 10629 /* VEX_W_0F58_P_0 */ 10526 { "vaddps", { XM, Vex, EXx } },10630 { "vaddps", { XM, Vex, EXx }, 0 }, 10527 10631 }, 10528 10632 { 10529 10633 /* VEX_W_0F58_P_1 */ 10530 { "vaddss", { XMScalar, VexScalar, EXdScalar } },10634 { "vaddss", { XMScalar, VexScalar, EXdScalar }, 0 }, 10531 10635 }, 10532 10636 { 10533 10637 /* VEX_W_0F58_P_2 */ 10534 { "vaddpd", { XM, Vex, EXx } },10638 { "vaddpd", { XM, Vex, EXx }, 0 }, 10535 10639 }, 10536 10640 { 10537 10641 /* VEX_W_0F58_P_3 */ 10538 { "vaddsd", { XMScalar, VexScalar, EXqScalar } },10642 { "vaddsd", { XMScalar, VexScalar, EXqScalar }, 0 }, 10539 10643 }, 10540 10644 { 10541 10645 /* VEX_W_0F59_P_0 */ 10542 { "vmulps", { XM, Vex, EXx } },10646 { "vmulps", { XM, Vex, EXx }, 0 }, 10543 10647 }, 10544 10648 { 10545 10649 /* VEX_W_0F59_P_1 */ 10546 { "vmulss", { XMScalar, VexScalar, EXdScalar } },10650 { "vmulss", { XMScalar, VexScalar, EXdScalar }, 0 }, 10547 10651 }, 10548 10652 { 10549 10653 /* VEX_W_0F59_P_2 */ 10550 { "vmulpd", { XM, Vex, EXx } },10654 { "vmulpd", { XM, Vex, EXx }, 0 }, 10551 10655 }, 10552 10656 { 10553 10657 /* VEX_W_0F59_P_3 */ 10554 { "vmulsd", { XMScalar, VexScalar, EXqScalar } },10658 { "vmulsd", { XMScalar, VexScalar, EXqScalar }, 0 }, 10555 10659 }, 10556 10660 { 10557 10661 /* VEX_W_0F5A_P_0 */ 10558 { "vcvtps2pd", { XM, EXxmmq } },10662 { "vcvtps2pd", { XM, EXxmmq }, 0 }, 10559 10663 }, 10560 10664 { 10561 10665 /* VEX_W_0F5A_P_1 */ 10562 { "vcvtss2sd", { XMScalar, VexScalar, EXdScalar } },10666 { "vcvtss2sd", { XMScalar, VexScalar, EXdScalar }, 0 }, 10563 10667 }, 10564 10668 { 10565 10669 /* VEX_W_0F5A_P_3 */ 10566 { "vcvtsd2ss", { XMScalar, VexScalar, EXqScalar } },10670 { "vcvtsd2ss", { XMScalar, VexScalar, EXqScalar }, 0 }, 10567 10671 }, 10568 10672 { 10569 10673 /* VEX_W_0F5B_P_0 */ 10570 { "vcvtdq2ps", { XM, EXx } },10674 { "vcvtdq2ps", { XM, EXx }, 0 }, 10571 10675 }, 10572 10676 { 10573 10677 /* VEX_W_0F5B_P_1 */ 10574 { "vcvttps2dq", { XM, EXx } },10678 { "vcvttps2dq", { XM, EXx }, 0 }, 10575 10679 }, 10576 10680 { 10577 10681 /* VEX_W_0F5B_P_2 */ 10578 { "vcvtps2dq", { XM, EXx } },10682 { "vcvtps2dq", { XM, EXx }, 0 }, 10579 10683 }, 10580 10684 { 10581 10685 /* VEX_W_0F5C_P_0 */ 10582 { "vsubps", { XM, Vex, EXx } },10686 { "vsubps", { XM, Vex, EXx }, 0 }, 10583 10687 }, 10584 10688 { 10585 10689 /* VEX_W_0F5C_P_1 */ 10586 { "vsubss", { XMScalar, VexScalar, EXdScalar } },10690 { "vsubss", { XMScalar, VexScalar, EXdScalar }, 0 }, 10587 10691 }, 10588 10692 { 10589 10693 /* VEX_W_0F5C_P_2 */ 10590 { "vsubpd", { XM, Vex, EXx } },10694 { "vsubpd", { XM, Vex, EXx }, 0 }, 10591 10695 }, 10592 10696 { 10593 10697 /* VEX_W_0F5C_P_3 */ 10594 { "vsubsd", { XMScalar, VexScalar, EXqScalar } },10698 { "vsubsd", { XMScalar, VexScalar, EXqScalar }, 0 }, 10595 10699 }, 10596 10700 { 10597 10701 /* VEX_W_0F5D_P_0 */ 10598 { "vminps", { XM, Vex, EXx } },10702 { "vminps", { XM, Vex, EXx }, 0 }, 10599 10703 }, 10600 10704 { 10601 10705 /* VEX_W_0F5D_P_1 */ 10602 { "vminss", { XMScalar, VexScalar, EXdScalar } },10706 { "vminss", { XMScalar, VexScalar, EXdScalar }, 0 }, 10603 10707 }, 10604 10708 { 10605 10709 /* VEX_W_0F5D_P_2 */ 10606 { "vminpd", { XM, Vex, EXx } },10710 { "vminpd", { XM, Vex, EXx }, 0 }, 10607 10711 }, 10608 10712 { 10609 10713 /* VEX_W_0F5D_P_3 */ 10610 { "vminsd", { XMScalar, VexScalar, EXqScalar } },10714 { "vminsd", { XMScalar, VexScalar, EXqScalar }, 0 }, 10611 10715 }, 10612 10716 { 10613 10717 /* VEX_W_0F5E_P_0 */ 10614 { "vdivps", { XM, Vex, EXx } },10718 { "vdivps", { XM, Vex, EXx }, 0 }, 10615 10719 }, 10616 10720 { 10617 10721 /* VEX_W_0F5E_P_1 */ 10618 { "vdivss", { XMScalar, VexScalar, EXdScalar } },10722 { "vdivss", { XMScalar, VexScalar, EXdScalar }, 0 }, 10619 10723 }, 10620 10724 { 10621 10725 /* VEX_W_0F5E_P_2 */ 10622 { "vdivpd", { XM, Vex, EXx } },10726 { "vdivpd", { XM, Vex, EXx }, 0 }, 10623 10727 }, 10624 10728 { 10625 10729 /* VEX_W_0F5E_P_3 */ 10626 { "vdivsd", { XMScalar, VexScalar, EXqScalar } },10730 { "vdivsd", { XMScalar, VexScalar, EXqScalar }, 0 }, 10627 10731 }, 10628 10732 { 10629 10733 /* VEX_W_0F5F_P_0 */ 10630 { "vmaxps", { XM, Vex, EXx } },10734 { "vmaxps", { XM, Vex, EXx }, 0 }, 10631 10735 }, 10632 10736 { 10633 10737 /* VEX_W_0F5F_P_1 */ 10634 { "vmaxss", { XMScalar, VexScalar, EXdScalar } },10738 { "vmaxss", { XMScalar, VexScalar, EXdScalar }, 0 }, 10635 10739 }, 10636 10740 { 10637 10741 /* VEX_W_0F5F_P_2 */ 10638 { "vmaxpd", { XM, Vex, EXx } },10742 { "vmaxpd", { XM, Vex, EXx }, 0 }, 10639 10743 }, 10640 10744 { 10641 10745 /* VEX_W_0F5F_P_3 */ 10642 { "vmaxsd", { XMScalar, VexScalar, EXqScalar } },10746 { "vmaxsd", { XMScalar, VexScalar, EXqScalar }, 0 }, 10643 10747 }, 10644 10748 { 10645 10749 /* VEX_W_0F60_P_2 */ 10646 { "vpunpcklbw", { XM, Vex, EXx } },10750 { "vpunpcklbw", { XM, Vex, EXx }, 0 }, 10647 10751 }, 10648 10752 { 10649 10753 /* VEX_W_0F61_P_2 */ 10650 { "vpunpcklwd", { XM, Vex, EXx } },10754 { "vpunpcklwd", { XM, Vex, EXx }, 0 }, 10651 10755 }, 10652 10756 { 10653 10757 /* VEX_W_0F62_P_2 */ 10654 { "vpunpckldq", { XM, Vex, EXx } },10758 { "vpunpckldq", { XM, Vex, EXx }, 0 }, 10655 10759 }, 10656 10760 { 10657 10761 /* VEX_W_0F63_P_2 */ 10658 { "vpacksswb", { XM, Vex, EXx } },10762 { "vpacksswb", { XM, Vex, EXx }, 0 }, 10659 10763 }, 10660 10764 { 10661 10765 /* VEX_W_0F64_P_2 */ 10662 { "vpcmpgtb", { XM, Vex, EXx } },10766 { "vpcmpgtb", { XM, Vex, EXx }, 0 }, 10663 10767 }, 10664 10768 { 10665 10769 /* VEX_W_0F65_P_2 */ 10666 { "vpcmpgtw", { XM, Vex, EXx } },10770 { "vpcmpgtw", { XM, Vex, EXx }, 0 }, 10667 10771 }, 10668 10772 { 10669 10773 /* VEX_W_0F66_P_2 */ 10670 { "vpcmpgtd", { XM, Vex, EXx } },10774 { "vpcmpgtd", { XM, Vex, EXx }, 0 }, 10671 10775 }, 10672 10776 { 10673 10777 /* VEX_W_0F67_P_2 */ 10674 { "vpackuswb", { XM, Vex, EXx } },10778 { "vpackuswb", { XM, Vex, EXx }, 0 }, 10675 10779 }, 10676 10780 { 10677 10781 /* VEX_W_0F68_P_2 */ 10678 { "vpunpckhbw", { XM, Vex, EXx } },10782 { "vpunpckhbw", { XM, Vex, EXx }, 0 }, 10679 10783 }, 10680 10784 { 10681 10785 /* VEX_W_0F69_P_2 */ 10682 { "vpunpckhwd", { XM, Vex, EXx } },10786 { "vpunpckhwd", { XM, Vex, EXx }, 0 }, 10683 10787 }, 10684 10788 { 10685 10789 /* VEX_W_0F6A_P_2 */ 10686 { "vpunpckhdq", { XM, Vex, EXx } },10790 { "vpunpckhdq", { XM, Vex, EXx }, 0 }, 10687 10791 }, 10688 10792 { 10689 10793 /* VEX_W_0F6B_P_2 */ 10690 { "vpackssdw", { XM, Vex, EXx } },10794 { "vpackssdw", { XM, Vex, EXx }, 0 }, 10691 10795 }, 10692 10796 { 10693 10797 /* VEX_W_0F6C_P_2 */ 10694 { "vpunpcklqdq", { XM, Vex, EXx } },10798 { "vpunpcklqdq", { XM, Vex, EXx }, 0 }, 10695 10799 }, 10696 10800 { 10697 10801 /* VEX_W_0F6D_P_2 */ 10698 { "vpunpckhqdq", { XM, Vex, EXx } },10802 { "vpunpckhqdq", { XM, Vex, EXx }, 0 }, 10699 10803 }, 10700 10804 { 10701 10805 /* VEX_W_0F6F_P_1 */ 10702 { "vmovdqu", { XM, EXx } },10806 { "vmovdqu", { XM, EXx }, 0 }, 10703 10807 }, 10704 10808 { 10705 10809 /* VEX_W_0F6F_P_2 */ 10706 { "vmovdqa", { XM, EXx } },10810 { "vmovdqa", { XM, EXx }, 0 }, 10707 10811 }, 10708 10812 { 10709 10813 /* VEX_W_0F70_P_1 */ 10710 { "vpshufhw", { XM, EXx, Ib } },10814 { "vpshufhw", { XM, EXx, Ib }, 0 }, 10711 10815 }, 10712 10816 { 10713 10817 /* VEX_W_0F70_P_2 */ 10714 { "vpshufd", { XM, EXx, Ib } },10818 { "vpshufd", { XM, EXx, Ib }, 0 }, 10715 10819 }, 10716 10820 { 10717 10821 /* VEX_W_0F70_P_3 */ 10718 { "vpshuflw", { XM, EXx, Ib } },10822 { "vpshuflw", { XM, EXx, Ib }, 0 }, 10719 10823 }, 10720 10824 { 10721 10825 /* VEX_W_0F71_R_2_P_2 */ 10722 { "vpsrlw", { Vex, XS, Ib } },10826 { "vpsrlw", { Vex, XS, Ib }, 0 }, 10723 10827 }, 10724 10828 { 10725 10829 /* VEX_W_0F71_R_4_P_2 */ 10726 { "vpsraw", { Vex, XS, Ib } },10830 { "vpsraw", { Vex, XS, Ib }, 0 }, 10727 10831 }, 10728 10832 { 10729 10833 /* VEX_W_0F71_R_6_P_2 */ 10730 { "vpsllw", { Vex, XS, Ib } },10834 { "vpsllw", { Vex, XS, Ib }, 0 }, 10731 10835 }, 10732 10836 { 10733 10837 /* VEX_W_0F72_R_2_P_2 */ 10734 { "vpsrld", { Vex, XS, Ib } },10838 { "vpsrld", { Vex, XS, Ib }, 0 }, 10735 10839 }, 10736 10840 { 10737 10841 /* VEX_W_0F72_R_4_P_2 */ 10738 { "vpsrad", { Vex, XS, Ib } },10842 { "vpsrad", { Vex, XS, Ib }, 0 }, 10739 10843 }, 10740 10844 { 10741 10845 /* VEX_W_0F72_R_6_P_2 */ 10742 { "vpslld", { Vex, XS, Ib } },10846 { "vpslld", { Vex, XS, Ib }, 0 }, 10743 10847 }, 10744 10848 { 10745 10849 /* VEX_W_0F73_R_2_P_2 */ 10746 { "vpsrlq", { Vex, XS, Ib } },10850 { "vpsrlq", { Vex, XS, Ib }, 0 }, 10747 10851 }, 10748 10852 { 10749 10853 /* VEX_W_0F73_R_3_P_2 */ 10750 { "vpsrldq", { Vex, XS, Ib } },10854 { "vpsrldq", { Vex, XS, Ib }, 0 }, 10751 10855 }, 10752 10856 { 10753 10857 /* VEX_W_0F73_R_6_P_2 */ 10754 { "vpsllq", { Vex, XS, Ib } },10858 { "vpsllq", { Vex, XS, Ib }, 0 }, 10755 10859 }, 10756 10860 { 10757 10861 /* VEX_W_0F73_R_7_P_2 */ 10758 { "vpslldq", { Vex, XS, Ib } },10862 { "vpslldq", { Vex, XS, Ib }, 0 }, 10759 10863 }, 10760 10864 { 10761 10865 /* VEX_W_0F74_P_2 */ 10762 { "vpcmpeqb", { XM, Vex, EXx } },10866 { "vpcmpeqb", { XM, Vex, EXx }, 0 }, 10763 10867 }, 10764 10868 { 10765 10869 /* VEX_W_0F75_P_2 */ 10766 { "vpcmpeqw", { XM, Vex, EXx } },10870 { "vpcmpeqw", { XM, Vex, EXx }, 0 }, 10767 10871 }, 10768 10872 { 10769 10873 /* VEX_W_0F76_P_2 */ 10770 { "vpcmpeqd", { XM, Vex, EXx } },10874 { "vpcmpeqd", { XM, Vex, EXx }, 0 }, 10771 10875 }, 10772 10876 { 10773 10877 /* VEX_W_0F77_P_0 */ 10774 { "", { VZERO } },10878 { "", { VZERO }, 0 }, 10775 10879 }, 10776 10880 { 10777 10881 /* VEX_W_0F7C_P_2 */ 10778 { "vhaddpd", { XM, Vex, EXx } },10882 { "vhaddpd", { XM, Vex, EXx }, 0 }, 10779 10883 }, 10780 10884 { 10781 10885 /* VEX_W_0F7C_P_3 */ 10782 { "vhaddps", { XM, Vex, EXx } },10886 { "vhaddps", { XM, Vex, EXx }, 0 }, 10783 10887 }, 10784 10888 { 10785 10889 /* VEX_W_0F7D_P_2 */ 10786 { "vhsubpd", { XM, Vex, EXx } },10890 { "vhsubpd", { XM, Vex, EXx }, 0 }, 10787 10891 }, 10788 10892 { 10789 10893 /* VEX_W_0F7D_P_3 */ 10790 { "vhsubps", { XM, Vex, EXx } },10894 { "vhsubps", { XM, Vex, EXx }, 0 }, 10791 10895 }, 10792 10896 { 10793 10897 /* VEX_W_0F7E_P_1 */ 10794 { "vmovq", { XMScalar, EXqScalar } },10898 { "vmovq", { XMScalar, EXqScalar }, 0 }, 10795 10899 }, 10796 10900 { 10797 10901 /* VEX_W_0F7F_P_1 */ 10798 { "vmovdqu", { EXxS, XM } },10902 { "vmovdqu", { EXxS, XM }, 0 }, 10799 10903 }, 10800 10904 { 10801 10905 /* VEX_W_0F7F_P_2 */ 10802 { "vmovdqa", { EXxS, XM } },10906 { "vmovdqa", { EXxS, XM }, 0 }, 10803 10907 }, 10804 10908 { 10805 10909 /* VEX_W_0F90_P_0_LEN_0 */ 10806 { "kmovw", { MaskG, MaskE } },10807 { "kmovq", { MaskG, MaskE } },10910 { "kmovw", { MaskG, MaskE }, 0 }, 10911 { "kmovq", { MaskG, MaskE }, 0 }, 10808 10912 }, 10809 10913 { 10810 10914 /* VEX_W_0F90_P_2_LEN_0 */ 10811 { "kmovb", { MaskG, MaskBDE } },10812 { "kmovd", { MaskG, MaskBDE } },10915 { "kmovb", { MaskG, MaskBDE }, 0 }, 10916 { "kmovd", { MaskG, MaskBDE }, 0 }, 10813 10917 }, 10814 10918 { 10815 10919 /* VEX_W_0F91_P_0_LEN_0 */ 10816 { "kmovw", { Ew, MaskG }},10817 { "kmovq", { Eq, MaskG }},10920 { MOD_TABLE (MOD_VEX_W_0_0F91_P_0_LEN_0) }, 10921 { MOD_TABLE (MOD_VEX_W_1_0F91_P_0_LEN_0) }, 10818 10922 }, 10819 10923 { 10820 10924 /* VEX_W_0F91_P_2_LEN_0 */ 10821 { "kmovb", { Eb, MaskG }},10822 { "kmovd", { Ed, MaskG }},10925 { MOD_TABLE (MOD_VEX_W_0_0F91_P_2_LEN_0) }, 10926 { MOD_TABLE (MOD_VEX_W_1_0F91_P_2_LEN_0) }, 10823 10927 }, 10824 10928 { 10825 10929 /* VEX_W_0F92_P_0_LEN_0 */ 10826 { "kmovw", { MaskG, Rdq }},10930 { MOD_TABLE (MOD_VEX_W_0_0F92_P_0_LEN_0) }, 10827 10931 }, 10828 10932 { 10829 10933 /* VEX_W_0F92_P_2_LEN_0 */ 10830 { "kmovb", { MaskG, Rdq }},10934 { MOD_TABLE (MOD_VEX_W_0_0F92_P_2_LEN_0) }, 10831 10935 }, 10832 10936 { 10833 10937 /* VEX_W_0F92_P_3_LEN_0 */ 10834 { "kmovd", { MaskG, Rdq }},10835 { "kmovq", { MaskG, Rdq }},10938 { MOD_TABLE (MOD_VEX_W_0_0F92_P_3_LEN_0) }, 10939 { MOD_TABLE (MOD_VEX_W_1_0F92_P_3_LEN_0) }, 10836 10940 }, 10837 10941 { 10838 10942 /* VEX_W_0F93_P_0_LEN_0 */ 10839 { "kmovw", { Gdq, MaskR }},10943 { MOD_TABLE (MOD_VEX_W_0_0F93_P_0_LEN_0) }, 10840 10944 }, 10841 10945 { 10842 10946 /* VEX_W_0F93_P_2_LEN_0 */ 10843 { "kmovb", { Gdq, MaskR }},10947 { MOD_TABLE (MOD_VEX_W_0_0F93_P_2_LEN_0) }, 10844 10948 }, 10845 10949 { 10846 10950 /* VEX_W_0F93_P_3_LEN_0 */ 10847 { "kmovd", { Gdq, MaskR }},10848 { "kmovq", { Gdq, MaskR }},10951 { MOD_TABLE (MOD_VEX_W_0_0F93_P_3_LEN_0) }, 10952 { MOD_TABLE (MOD_VEX_W_1_0F93_P_3_LEN_0) }, 10849 10953 }, 10850 10954 { 10851 10955 /* VEX_W_0F98_P_0_LEN_0 */ 10852 { "kortestw", { MaskG, MaskR }},10853 { "kortestq", { MaskG, MaskR }},10956 { MOD_TABLE (MOD_VEX_W_0_0F98_P_0_LEN_0) }, 10957 { MOD_TABLE (MOD_VEX_W_1_0F98_P_0_LEN_0) }, 10854 10958 }, 10855 10959 { 10856 10960 /* VEX_W_0F98_P_2_LEN_0 */ 10857 { "kortestb", { MaskG, MaskR }},10858 { "kortestd", { MaskG, MaskR }},10961 { MOD_TABLE (MOD_VEX_W_0_0F98_P_2_LEN_0) }, 10962 { MOD_TABLE (MOD_VEX_W_1_0F98_P_2_LEN_0) }, 10859 10963 }, 10860 10964 { 10861 10965 /* VEX_W_0F99_P_0_LEN_0 */ 10862 { "ktestw", { MaskG, MaskR }},10863 { "ktestq", { MaskG, MaskR }},10966 { MOD_TABLE (MOD_VEX_W_0_0F99_P_0_LEN_0) }, 10967 { MOD_TABLE (MOD_VEX_W_1_0F99_P_0_LEN_0) }, 10864 10968 }, 10865 10969 { 10866 10970 /* VEX_W_0F99_P_2_LEN_0 */ 10867 { "ktestb", { MaskG, MaskR }},10868 { "ktestd", { MaskG, MaskR }},10971 { MOD_TABLE (MOD_VEX_W_0_0F99_P_2_LEN_0) }, 10972 { MOD_TABLE (MOD_VEX_W_1_0F99_P_2_LEN_0) }, 10869 10973 }, 10870 10974 { 10871 10975 /* VEX_W_0FAE_R_2_M_0 */ 10872 { "vldmxcsr", { Md } },10976 { "vldmxcsr", { Md }, 0 }, 10873 10977 }, 10874 10978 { 10875 10979 /* VEX_W_0FAE_R_3_M_0 */ 10876 { "vstmxcsr", { Md } },10980 { "vstmxcsr", { Md }, 0 }, 10877 10981 }, 10878 10982 { 10879 10983 /* VEX_W_0FC2_P_0 */ 10880 { "vcmpps", { XM, Vex, EXx, VCMP } },10984 { "vcmpps", { XM, Vex, EXx, VCMP }, 0 }, 10881 10985 }, 10882 10986 { 10883 10987 /* VEX_W_0FC2_P_1 */ 10884 { "vcmpss", { XMScalar, VexScalar, EXdScalar, VCMP } },10988 { "vcmpss", { XMScalar, VexScalar, EXdScalar, VCMP }, 0 }, 10885 10989 }, 10886 10990 { 10887 10991 /* VEX_W_0FC2_P_2 */ 10888 { "vcmppd", { XM, Vex, EXx, VCMP } },10992 { "vcmppd", { XM, Vex, EXx, VCMP }, 0 }, 10889 10993 }, 10890 10994 { 10891 10995 /* VEX_W_0FC2_P_3 */ 10892 { "vcmpsd", { XMScalar, VexScalar, EXqScalar, VCMP } },10996 { "vcmpsd", { XMScalar, VexScalar, EXqScalar, VCMP }, 0 }, 10893 10997 }, 10894 10998 { 10895 10999 /* VEX_W_0FC4_P_2 */ 10896 { "vpinsrw", { XM, Vex128, Edqw, Ib } },11000 { "vpinsrw", { XM, Vex128, Edqw, Ib }, 0 }, 10897 11001 }, 10898 11002 { 10899 11003 /* VEX_W_0FC5_P_2 */ 10900 { "vpextrw", { Gdq, XS, Ib } },11004 { "vpextrw", { Gdq, XS, Ib }, 0 }, 10901 11005 }, 10902 11006 { 10903 11007 /* VEX_W_0FD0_P_2 */ 10904 { "vaddsubpd", { XM, Vex, EXx } },11008 { "vaddsubpd", { XM, Vex, EXx }, 0 }, 10905 11009 }, 10906 11010 { 10907 11011 /* VEX_W_0FD0_P_3 */ 10908 { "vaddsubps", { XM, Vex, EXx } },11012 { "vaddsubps", { XM, Vex, EXx }, 0 }, 10909 11013 }, 10910 11014 { 10911 11015 /* VEX_W_0FD1_P_2 */ 10912 { "vpsrlw", { XM, Vex, EXxmm } },11016 { "vpsrlw", { XM, Vex, EXxmm }, 0 }, 10913 11017 }, 10914 11018 { 10915 11019 /* VEX_W_0FD2_P_2 */ 10916 { "vpsrld", { XM, Vex, EXxmm } },11020 { "vpsrld", { XM, Vex, EXxmm }, 0 }, 10917 11021 }, 10918 11022 { 10919 11023 /* VEX_W_0FD3_P_2 */ 10920 { "vpsrlq", { XM, Vex, EXxmm } },11024 { "vpsrlq", { XM, Vex, EXxmm }, 0 }, 10921 11025 }, 10922 11026 { 10923 11027 /* VEX_W_0FD4_P_2 */ 10924 { "vpaddq", { XM, Vex, EXx } },11028 { "vpaddq", { XM, Vex, EXx }, 0 }, 10925 11029 }, 10926 11030 { 10927 11031 /* VEX_W_0FD5_P_2 */ 10928 { "vpmullw", { XM, Vex, EXx } },11032 { "vpmullw", { XM, Vex, EXx }, 0 }, 10929 11033 }, 10930 11034 { 10931 11035 /* VEX_W_0FD6_P_2 */ 10932 { "vmovq", { EXqScalarS, XMScalar } },11036 { "vmovq", { EXqScalarS, XMScalar }, 0 }, 10933 11037 }, 10934 11038 { 10935 11039 /* VEX_W_0FD7_P_2_M_1 */ 10936 { "vpmovmskb", { Gdq, XS } },11040 { "vpmovmskb", { Gdq, XS }, 0 }, 10937 11041 }, 10938 11042 { 10939 11043 /* VEX_W_0FD8_P_2 */ 10940 { "vpsubusb", { XM, Vex, EXx } },11044 { "vpsubusb", { XM, Vex, EXx }, 0 }, 10941 11045 }, 10942 11046 { 10943 11047 /* VEX_W_0FD9_P_2 */ 10944 { "vpsubusw", { XM, Vex, EXx } },11048 { "vpsubusw", { XM, Vex, EXx }, 0 }, 10945 11049 }, 10946 11050 { 10947 11051 /* VEX_W_0FDA_P_2 */ 10948 { "vpminub", { XM, Vex, EXx } },11052 { "vpminub", { XM, Vex, EXx }, 0 }, 10949 11053 }, 10950 11054 { 10951 11055 /* VEX_W_0FDB_P_2 */ 10952 { "vpand", { XM, Vex, EXx } },11056 { "vpand", { XM, Vex, EXx }, 0 }, 10953 11057 }, 10954 11058 { 10955 11059 /* VEX_W_0FDC_P_2 */ 10956 { "vpaddusb", { XM, Vex, EXx } },11060 { "vpaddusb", { XM, Vex, EXx }, 0 }, 10957 11061 }, 10958 11062 { 10959 11063 /* VEX_W_0FDD_P_2 */ 10960 { "vpaddusw", { XM, Vex, EXx } },11064 { "vpaddusw", { XM, Vex, EXx }, 0 }, 10961 11065 }, 10962 11066 { 10963 11067 /* VEX_W_0FDE_P_2 */ 10964 { "vpmaxub", { XM, Vex, EXx } },11068 { "vpmaxub", { XM, Vex, EXx }, 0 }, 10965 11069 }, 10966 11070 { 10967 11071 /* VEX_W_0FDF_P_2 */ 10968 { "vpandn", { XM, Vex, EXx } },11072 { "vpandn", { XM, Vex, EXx }, 0 }, 10969 11073 }, 10970 11074 { 10971 11075 /* VEX_W_0FE0_P_2 */ 10972 { "vpavgb", { XM, Vex, EXx } },11076 { "vpavgb", { XM, Vex, EXx }, 0 }, 10973 11077 }, 10974 11078 { 10975 11079 /* VEX_W_0FE1_P_2 */ 10976 { "vpsraw", { XM, Vex, EXxmm } },11080 { "vpsraw", { XM, Vex, EXxmm }, 0 }, 10977 11081 }, 10978 11082 { 10979 11083 /* VEX_W_0FE2_P_2 */ 10980 { "vpsrad", { XM, Vex, EXxmm } },11084 { "vpsrad", { XM, Vex, EXxmm }, 0 }, 10981 11085 }, 10982 11086 { 10983 11087 /* VEX_W_0FE3_P_2 */ 10984 { "vpavgw", { XM, Vex, EXx } },11088 { "vpavgw", { XM, Vex, EXx }, 0 }, 10985 11089 }, 10986 11090 { 10987 11091 /* VEX_W_0FE4_P_2 */ 10988 { "vpmulhuw", { XM, Vex, EXx } },11092 { "vpmulhuw", { XM, Vex, EXx }, 0 }, 10989 11093 }, 10990 11094 { 10991 11095 /* VEX_W_0FE5_P_2 */ 10992 { "vpmulhw", { XM, Vex, EXx } },11096 { "vpmulhw", { XM, Vex, EXx }, 0 }, 10993 11097 }, 10994 11098 { 10995 11099 /* VEX_W_0FE6_P_1 */ 10996 { "vcvtdq2pd", { XM, EXxmmq } },11100 { "vcvtdq2pd", { XM, EXxmmq }, 0 }, 10997 11101 }, 10998 11102 { 10999 11103 /* VEX_W_0FE6_P_2 */ 11000 { "vcvttpd2dq%XY", { XMM, EXx } },11104 { "vcvttpd2dq%XY", { XMM, EXx }, 0 }, 11001 11105 }, 11002 11106 { 11003 11107 /* VEX_W_0FE6_P_3 */ 11004 { "vcvtpd2dq%XY", { XMM, EXx } },11108 { "vcvtpd2dq%XY", { XMM, EXx }, 0 }, 11005 11109 }, 11006 11110 { 11007 11111 /* VEX_W_0FE7_P_2_M_0 */ 11008 { "vmovntdq", { Mx, XM } },11112 { "vmovntdq", { Mx, XM }, 0 }, 11009 11113 }, 11010 11114 { 11011 11115 /* VEX_W_0FE8_P_2 */ 11012 { "vpsubsb", { XM, Vex, EXx } },11116 { "vpsubsb", { XM, Vex, EXx }, 0 }, 11013 11117 }, 11014 11118 { 11015 11119 /* VEX_W_0FE9_P_2 */ 11016 { "vpsubsw", { XM, Vex, EXx } },11120 { "vpsubsw", { XM, Vex, EXx }, 0 }, 11017 11121 }, 11018 11122 { 11019 11123 /* VEX_W_0FEA_P_2 */ 11020 { "vpminsw", { XM, Vex, EXx } },11124 { "vpminsw", { XM, Vex, EXx }, 0 }, 11021 11125 }, 11022 11126 { 11023 11127 /* VEX_W_0FEB_P_2 */ 11024 { "vpor", { XM, Vex, EXx } },11128 { "vpor", { XM, Vex, EXx }, 0 }, 11025 11129 }, 11026 11130 { 11027 11131 /* VEX_W_0FEC_P_2 */ 11028 { "vpaddsb", { XM, Vex, EXx } },11132 { "vpaddsb", { XM, Vex, EXx }, 0 }, 11029 11133 }, 11030 11134 { 11031 11135 /* VEX_W_0FED_P_2 */ 11032 { "vpaddsw", { XM, Vex, EXx } },11136 { "vpaddsw", { XM, Vex, EXx }, 0 }, 11033 11137 }, 11034 11138 { 11035 11139 /* VEX_W_0FEE_P_2 */ 11036 { "vpmaxsw", { XM, Vex, EXx } },11140 { "vpmaxsw", { XM, Vex, EXx }, 0 }, 11037 11141 }, 11038 11142 { 11039 11143 /* VEX_W_0FEF_P_2 */ 11040 { "vpxor", { XM, Vex, EXx } },11144 { "vpxor", { XM, Vex, EXx }, 0 }, 11041 11145 }, 11042 11146 { 11043 11147 /* VEX_W_0FF0_P_3_M_0 */ 11044 { "vlddqu", { XM, M } },11148 { "vlddqu", { XM, M }, 0 }, 11045 11149 }, 11046 11150 { 11047 11151 /* VEX_W_0FF1_P_2 */ 11048 { "vpsllw", { XM, Vex, EXxmm } },11152 { "vpsllw", { XM, Vex, EXxmm }, 0 }, 11049 11153 }, 11050 11154 { 11051 11155 /* VEX_W_0FF2_P_2 */ 11052 { "vpslld", { XM, Vex, EXxmm } },11156 { "vpslld", { XM, Vex, EXxmm }, 0 }, 11053 11157 }, 11054 11158 { 11055 11159 /* VEX_W_0FF3_P_2 */ 11056 { "vpsllq", { XM, Vex, EXxmm } },11160 { "vpsllq", { XM, Vex, EXxmm }, 0 }, 11057 11161 }, 11058 11162 { 11059 11163 /* VEX_W_0FF4_P_2 */ 11060 { "vpmuludq", { XM, Vex, EXx } },11164 { "vpmuludq", { XM, Vex, EXx }, 0 }, 11061 11165 }, 11062 11166 { 11063 11167 /* VEX_W_0FF5_P_2 */ 11064 { "vpmaddwd", { XM, Vex, EXx } },11168 { "vpmaddwd", { XM, Vex, EXx }, 0 }, 11065 11169 }, 11066 11170 { 11067 11171 /* VEX_W_0FF6_P_2 */ 11068 { "vpsadbw", { XM, Vex, EXx } },11172 { "vpsadbw", { XM, Vex, EXx }, 0 }, 11069 11173 }, 11070 11174 { 11071 11175 /* VEX_W_0FF7_P_2 */ 11072 { "vmaskmovdqu", { XM, XS } },11176 { "vmaskmovdqu", { XM, XS }, 0 }, 11073 11177 }, 11074 11178 { 11075 11179 /* VEX_W_0FF8_P_2 */ 11076 { "vpsubb", { XM, Vex, EXx } },11180 { "vpsubb", { XM, Vex, EXx }, 0 }, 11077 11181 }, 11078 11182 { 11079 11183 /* VEX_W_0FF9_P_2 */ 11080 { "vpsubw", { XM, Vex, EXx } },11184 { "vpsubw", { XM, Vex, EXx }, 0 }, 11081 11185 }, 11082 11186 { 11083 11187 /* VEX_W_0FFA_P_2 */ 11084 { "vpsubd", { XM, Vex, EXx } },11188 { "vpsubd", { XM, Vex, EXx }, 0 }, 11085 11189 }, 11086 11190 { 11087 11191 /* VEX_W_0FFB_P_2 */ 11088 { "vpsubq", { XM, Vex, EXx } },11192 { "vpsubq", { XM, Vex, EXx }, 0 }, 11089 11193 }, 11090 11194 { 11091 11195 /* VEX_W_0FFC_P_2 */ 11092 { "vpaddb", { XM, Vex, EXx } },11196 { "vpaddb", { XM, Vex, EXx }, 0 }, 11093 11197 }, 11094 11198 { 11095 11199 /* VEX_W_0FFD_P_2 */ 11096 { "vpaddw", { XM, Vex, EXx } },11200 { "vpaddw", { XM, Vex, EXx }, 0 }, 11097 11201 }, 11098 11202 { 11099 11203 /* VEX_W_0FFE_P_2 */ 11100 { "vpaddd", { XM, Vex, EXx } },11204 { "vpaddd", { XM, Vex, EXx }, 0 }, 11101 11205 }, 11102 11206 { 11103 11207 /* VEX_W_0F3800_P_2 */ 11104 { "vpshufb", { XM, Vex, EXx } },11208 { "vpshufb", { XM, Vex, EXx }, 0 }, 11105 11209 }, 11106 11210 { 11107 11211 /* VEX_W_0F3801_P_2 */ 11108 { "vphaddw", { XM, Vex, EXx } },11212 { "vphaddw", { XM, Vex, EXx }, 0 }, 11109 11213 }, 11110 11214 { 11111 11215 /* VEX_W_0F3802_P_2 */ 11112 { "vphaddd", { XM, Vex, EXx } },11216 { "vphaddd", { XM, Vex, EXx }, 0 }, 11113 11217 }, 11114 11218 { 11115 11219 /* VEX_W_0F3803_P_2 */ 11116 { "vphaddsw", { XM, Vex, EXx } },11220 { "vphaddsw", { XM, Vex, EXx }, 0 }, 11117 11221 }, 11118 11222 { 11119 11223 /* VEX_W_0F3804_P_2 */ 11120 { "vpmaddubsw", { XM, Vex, EXx } },11224 { "vpmaddubsw", { XM, Vex, EXx }, 0 }, 11121 11225 }, 11122 11226 { 11123 11227 /* VEX_W_0F3805_P_2 */ 11124 { "vphsubw", { XM, Vex, EXx } },11228 { "vphsubw", { XM, Vex, EXx }, 0 }, 11125 11229 }, 11126 11230 { 11127 11231 /* VEX_W_0F3806_P_2 */ 11128 { "vphsubd", { XM, Vex, EXx } },11232 { "vphsubd", { XM, Vex, EXx }, 0 }, 11129 11233 }, 11130 11234 { 11131 11235 /* VEX_W_0F3807_P_2 */ 11132 { "vphsubsw", { XM, Vex, EXx } },11236 { "vphsubsw", { XM, Vex, EXx }, 0 }, 11133 11237 }, 11134 11238 { 11135 11239 /* VEX_W_0F3808_P_2 */ 11136 { "vpsignb", { XM, Vex, EXx } },11240 { "vpsignb", { XM, Vex, EXx }, 0 }, 11137 11241 }, 11138 11242 { 11139 11243 /* VEX_W_0F3809_P_2 */ 11140 { "vpsignw", { XM, Vex, EXx } },11244 { "vpsignw", { XM, Vex, EXx }, 0 }, 11141 11245 }, 11142 11246 { 11143 11247 /* VEX_W_0F380A_P_2 */ 11144 { "vpsignd", { XM, Vex, EXx } },11248 { "vpsignd", { XM, Vex, EXx }, 0 }, 11145 11249 }, 11146 11250 { 11147 11251 /* VEX_W_0F380B_P_2 */ 11148 { "vpmulhrsw", { XM, Vex, EXx } },11252 { "vpmulhrsw", { XM, Vex, EXx }, 0 }, 11149 11253 }, 11150 11254 { 11151 11255 /* VEX_W_0F380C_P_2 */ 11152 { "vpermilps", { XM, Vex, EXx } },11256 { "vpermilps", { XM, Vex, EXx }, 0 }, 11153 11257 }, 11154 11258 { 11155 11259 /* VEX_W_0F380D_P_2 */ 11156 { "vpermilpd", { XM, Vex, EXx } },11260 { "vpermilpd", { XM, Vex, EXx }, 0 }, 11157 11261 }, 11158 11262 { 11159 11263 /* VEX_W_0F380E_P_2 */ 11160 { "vtestps", { XM, EXx } },11264 { "vtestps", { XM, EXx }, 0 }, 11161 11265 }, 11162 11266 { 11163 11267 /* VEX_W_0F380F_P_2 */ 11164 { "vtestpd", { XM, EXx } },11268 { "vtestpd", { XM, EXx }, 0 }, 11165 11269 }, 11166 11270 { 11167 11271 /* VEX_W_0F3816_P_2 */ 11168 { "vpermps", { XM, Vex, EXx } },11272 { "vpermps", { XM, Vex, EXx }, 0 }, 11169 11273 }, 11170 11274 { 11171 11275 /* VEX_W_0F3817_P_2 */ 11172 { "vptest", { XM, EXx } },11276 { "vptest", { XM, EXx }, 0 }, 11173 11277 }, 11174 11278 { 11175 11279 /* VEX_W_0F3818_P_2 */ 11176 { "vbroadcastss", { XM, EXxmm_md } },11280 { "vbroadcastss", { XM, EXxmm_md }, 0 }, 11177 11281 }, 11178 11282 { 11179 11283 /* VEX_W_0F3819_P_2 */ 11180 { "vbroadcastsd", { XM, EXxmm_mq } },11284 { "vbroadcastsd", { XM, EXxmm_mq }, 0 }, 11181 11285 }, 11182 11286 { 11183 11287 /* VEX_W_0F381A_P_2_M_0 */ 11184 { "vbroadcastf128", { XM, Mxmm } },11288 { "vbroadcastf128", { XM, Mxmm }, 0 }, 11185 11289 }, 11186 11290 { 11187 11291 /* VEX_W_0F381C_P_2 */ 11188 { "vpabsb", { XM, EXx } },11292 { "vpabsb", { XM, EXx }, 0 }, 11189 11293 }, 11190 11294 { 11191 11295 /* VEX_W_0F381D_P_2 */ 11192 { "vpabsw", { XM, EXx } },11296 { "vpabsw", { XM, EXx }, 0 }, 11193 11297 }, 11194 11298 { 11195 11299 /* VEX_W_0F381E_P_2 */ 11196 { "vpabsd", { XM, EXx } },11300 { "vpabsd", { XM, EXx }, 0 }, 11197 11301 }, 11198 11302 { 11199 11303 /* VEX_W_0F3820_P_2 */ 11200 { "vpmovsxbw", { XM, EXxmmq } },11304 { "vpmovsxbw", { XM, EXxmmq }, 0 }, 11201 11305 }, 11202 11306 { 11203 11307 /* VEX_W_0F3821_P_2 */ 11204 { "vpmovsxbd", { XM, EXxmmqd } },11308 { "vpmovsxbd", { XM, EXxmmqd }, 0 }, 11205 11309 }, 11206 11310 { 11207 11311 /* VEX_W_0F3822_P_2 */ 11208 { "vpmovsxbq", { XM, EXxmmdw } },11312 { "vpmovsxbq", { XM, EXxmmdw }, 0 }, 11209 11313 }, 11210 11314 { 11211 11315 /* VEX_W_0F3823_P_2 */ 11212 { "vpmovsxwd", { XM, EXxmmq } },11316 { "vpmovsxwd", { XM, EXxmmq }, 0 }, 11213 11317 }, 11214 11318 { 11215 11319 /* VEX_W_0F3824_P_2 */ 11216 { "vpmovsxwq", { XM, EXxmmqd } },11320 { "vpmovsxwq", { XM, EXxmmqd }, 0 }, 11217 11321 }, 11218 11322 { 11219 11323 /* VEX_W_0F3825_P_2 */ 11220 { "vpmovsxdq", { XM, EXxmmq } },11324 { "vpmovsxdq", { XM, EXxmmq }, 0 }, 11221 11325 }, 11222 11326 { 11223 11327 /* VEX_W_0F3828_P_2 */ 11224 { "vpmuldq", { XM, Vex, EXx } },11328 { "vpmuldq", { XM, Vex, EXx }, 0 }, 11225 11329 }, 11226 11330 { 11227 11331 /* VEX_W_0F3829_P_2 */ 11228 { "vpcmpeqq", { XM, Vex, EXx } },11332 { "vpcmpeqq", { XM, Vex, EXx }, 0 }, 11229 11333 }, 11230 11334 { 11231 11335 /* VEX_W_0F382A_P_2_M_0 */ 11232 { "vmovntdqa", { XM, Mx } },11336 { "vmovntdqa", { XM, Mx }, 0 }, 11233 11337 }, 11234 11338 { 11235 11339 /* VEX_W_0F382B_P_2 */ 11236 { "vpackusdw", { XM, Vex, EXx } },11340 { "vpackusdw", { XM, Vex, EXx }, 0 }, 11237 11341 }, 11238 11342 { 11239 11343 /* VEX_W_0F382C_P_2_M_0 */ 11240 { "vmaskmovps", { XM, Vex, Mx } },11344 { "vmaskmovps", { XM, Vex, Mx }, 0 }, 11241 11345 }, 11242 11346 { 11243 11347 /* VEX_W_0F382D_P_2_M_0 */ 11244 { "vmaskmovpd", { XM, Vex, Mx } },11348 { "vmaskmovpd", { XM, Vex, Mx }, 0 }, 11245 11349 }, 11246 11350 { 11247 11351 /* VEX_W_0F382E_P_2_M_0 */ 11248 { "vmaskmovps", { Mx, Vex, XM } },11352 { "vmaskmovps", { Mx, Vex, XM }, 0 }, 11249 11353 }, 11250 11354 { 11251 11355 /* VEX_W_0F382F_P_2_M_0 */ 11252 { "vmaskmovpd", { Mx, Vex, XM } },11356 { "vmaskmovpd", { Mx, Vex, XM }, 0 }, 11253 11357 }, 11254 11358 { 11255 11359 /* VEX_W_0F3830_P_2 */ 11256 { "vpmovzxbw", { XM, EXxmmq } },11360 { "vpmovzxbw", { XM, EXxmmq }, 0 }, 11257 11361 }, 11258 11362 { 11259 11363 /* VEX_W_0F3831_P_2 */ 11260 { "vpmovzxbd", { XM, EXxmmqd } },11364 { "vpmovzxbd", { XM, EXxmmqd }, 0 }, 11261 11365 }, 11262 11366 { 11263 11367 /* VEX_W_0F3832_P_2 */ 11264 { "vpmovzxbq", { XM, EXxmmdw } },11368 { "vpmovzxbq", { XM, EXxmmdw }, 0 }, 11265 11369 }, 11266 11370 { 11267 11371 /* VEX_W_0F3833_P_2 */ 11268 { "vpmovzxwd", { XM, EXxmmq } },11372 { "vpmovzxwd", { XM, EXxmmq }, 0 }, 11269 11373 }, 11270 11374 { 11271 11375 /* VEX_W_0F3834_P_2 */ 11272 { "vpmovzxwq", { XM, EXxmmqd } },11376 { "vpmovzxwq", { XM, EXxmmqd }, 0 }, 11273 11377 }, 11274 11378 { 11275 11379 /* VEX_W_0F3835_P_2 */ 11276 { "vpmovzxdq", { XM, EXxmmq } },11380 { "vpmovzxdq", { XM, EXxmmq }, 0 }, 11277 11381 }, 11278 11382 { 11279 11383 /* VEX_W_0F3836_P_2 */ 11280 { "vpermd", { XM, Vex, EXx } },11384 { "vpermd", { XM, Vex, EXx }, 0 }, 11281 11385 }, 11282 11386 { 11283 11387 /* VEX_W_0F3837_P_2 */ 11284 { "vpcmpgtq", { XM, Vex, EXx } },11388 { "vpcmpgtq", { XM, Vex, EXx }, 0 }, 11285 11389 }, 11286 11390 { 11287 11391 /* VEX_W_0F3838_P_2 */ 11288 { "vpminsb", { XM, Vex, EXx } },11392 { "vpminsb", { XM, Vex, EXx }, 0 }, 11289 11393 }, 11290 11394 { 11291 11395 /* VEX_W_0F3839_P_2 */ 11292 { "vpminsd", { XM, Vex, EXx } },11396 { "vpminsd", { XM, Vex, EXx }, 0 }, 11293 11397 }, 11294 11398 { 11295 11399 /* VEX_W_0F383A_P_2 */ 11296 { "vpminuw", { XM, Vex, EXx } },11400 { "vpminuw", { XM, Vex, EXx }, 0 }, 11297 11401 }, 11298 11402 { 11299 11403 /* VEX_W_0F383B_P_2 */ 11300 { "vpminud", { XM, Vex, EXx } },11404 { "vpminud", { XM, Vex, EXx }, 0 }, 11301 11405 }, 11302 11406 { 11303 11407 /* VEX_W_0F383C_P_2 */ 11304 { "vpmaxsb", { XM, Vex, EXx } },11408 { "vpmaxsb", { XM, Vex, EXx }, 0 }, 11305 11409 }, 11306 11410 { 11307 11411 /* VEX_W_0F383D_P_2 */ 11308 { "vpmaxsd", { XM, Vex, EXx } },11412 { "vpmaxsd", { XM, Vex, EXx }, 0 }, 11309 11413 }, 11310 11414 { 11311 11415 /* VEX_W_0F383E_P_2 */ 11312 { "vpmaxuw", { XM, Vex, EXx } },11416 { "vpmaxuw", { XM, Vex, EXx }, 0 }, 11313 11417 }, 11314 11418 { 11315 11419 /* VEX_W_0F383F_P_2 */ 11316 { "vpmaxud", { XM, Vex, EXx } },11420 { "vpmaxud", { XM, Vex, EXx }, 0 }, 11317 11421 }, 11318 11422 { 11319 11423 /* VEX_W_0F3840_P_2 */ 11320 { "vpmulld", { XM, Vex, EXx } },11424 { "vpmulld", { XM, Vex, EXx }, 0 }, 11321 11425 }, 11322 11426 { 11323 11427 /* VEX_W_0F3841_P_2 */ 11324 { "vphminposuw", { XM, EXx } },11428 { "vphminposuw", { XM, EXx }, 0 }, 11325 11429 }, 11326 11430 { 11327 11431 /* VEX_W_0F3846_P_2 */ 11328 { "vpsravd", { XM, Vex, EXx } },11432 { "vpsravd", { XM, Vex, EXx }, 0 }, 11329 11433 }, 11330 11434 { 11331 11435 /* VEX_W_0F3858_P_2 */ 11332 { "vpbroadcastd", { XM, EXxmm_md } },11436 { "vpbroadcastd", { XM, EXxmm_md }, 0 }, 11333 11437 }, 11334 11438 { 11335 11439 /* VEX_W_0F3859_P_2 */ 11336 { "vpbroadcastq", { XM, EXxmm_mq } },11440 { "vpbroadcastq", { XM, EXxmm_mq }, 0 }, 11337 11441 }, 11338 11442 { 11339 11443 /* VEX_W_0F385A_P_2_M_0 */ 11340 { "vbroadcasti128", { XM, Mxmm } },11444 { "vbroadcasti128", { XM, Mxmm }, 0 }, 11341 11445 }, 11342 11446 { 11343 11447 /* VEX_W_0F3878_P_2 */ 11344 { "vpbroadcastb", { XM, EXxmm_mb } },11448 { "vpbroadcastb", { XM, EXxmm_mb }, 0 }, 11345 11449 }, 11346 11450 { 11347 11451 /* VEX_W_0F3879_P_2 */ 11348 { "vpbroadcastw", { XM, EXxmm_mw } },11452 { "vpbroadcastw", { XM, EXxmm_mw }, 0 }, 11349 11453 }, 11350 11454 { 11351 11455 /* VEX_W_0F38DB_P_2 */ 11352 { "vaesimc", { XM, EXx } },11456 { "vaesimc", { XM, EXx }, 0 }, 11353 11457 }, 11354 11458 { 11355 11459 /* VEX_W_0F38DC_P_2 */ 11356 { "vaesenc", { XM, Vex128, EXx } },11460 { "vaesenc", { XM, Vex128, EXx }, 0 }, 11357 11461 }, 11358 11462 { 11359 11463 /* VEX_W_0F38DD_P_2 */ 11360 { "vaesenclast", { XM, Vex128, EXx } },11464 { "vaesenclast", { XM, Vex128, EXx }, 0 }, 11361 11465 }, 11362 11466 { 11363 11467 /* VEX_W_0F38DE_P_2 */ 11364 { "vaesdec", { XM, Vex128, EXx } },11468 { "vaesdec", { XM, Vex128, EXx }, 0 }, 11365 11469 }, 11366 11470 { 11367 11471 /* VEX_W_0F38DF_P_2 */ 11368 { "vaesdeclast", { XM, Vex128, EXx } },11472 { "vaesdeclast", { XM, Vex128, EXx }, 0 }, 11369 11473 }, 11370 11474 { 11371 11475 /* VEX_W_0F3A00_P_2 */ 11372 11476 { Bad_Opcode }, 11373 { "vpermq", { XM, EXx, Ib } },11477 { "vpermq", { XM, EXx, Ib }, 0 }, 11374 11478 }, 11375 11479 { 11376 11480 /* VEX_W_0F3A01_P_2 */ 11377 11481 { Bad_Opcode }, 11378 { "vpermpd", { XM, EXx, Ib } },11482 { "vpermpd", { XM, EXx, Ib }, 0 }, 11379 11483 }, 11380 11484 { 11381 11485 /* VEX_W_0F3A02_P_2 */ 11382 { "vpblendd", { XM, Vex, EXx, Ib } },11486 { "vpblendd", { XM, Vex, EXx, Ib }, 0 }, 11383 11487 }, 11384 11488 { 11385 11489 /* VEX_W_0F3A04_P_2 */ 11386 { "vpermilps", { XM, EXx, Ib } },11490 { "vpermilps", { XM, EXx, Ib }, 0 }, 11387 11491 }, 11388 11492 { 11389 11493 /* VEX_W_0F3A05_P_2 */ 11390 { "vpermilpd", { XM, EXx, Ib } },11494 { "vpermilpd", { XM, EXx, Ib }, 0 }, 11391 11495 }, 11392 11496 { 11393 11497 /* VEX_W_0F3A06_P_2 */ 11394 { "vperm2f128", { XM, Vex256, EXx, Ib } },11498 { "vperm2f128", { XM, Vex256, EXx, Ib }, 0 }, 11395 11499 }, 11396 11500 { 11397 11501 /* VEX_W_0F3A08_P_2 */ 11398 { "vroundps", { XM, EXx, Ib } },11502 { "vroundps", { XM, EXx, Ib }, 0 }, 11399 11503 }, 11400 11504 { 11401 11505 /* VEX_W_0F3A09_P_2 */ 11402 { "vroundpd", { XM, EXx, Ib } },11506 { "vroundpd", { XM, EXx, Ib }, 0 }, 11403 11507 }, 11404 11508 { 11405 11509 /* VEX_W_0F3A0A_P_2 */ 11406 { "vroundss", { XMScalar, VexScalar, EXdScalar, Ib } },11510 { "vroundss", { XMScalar, VexScalar, EXdScalar, Ib }, 0 }, 11407 11511 }, 11408 11512 { 11409 11513 /* VEX_W_0F3A0B_P_2 */ 11410 { "vroundsd", { XMScalar, VexScalar, EXqScalar, Ib } },11514 { "vroundsd", { XMScalar, VexScalar, EXqScalar, Ib }, 0 }, 11411 11515 }, 11412 11516 { 11413 11517 /* VEX_W_0F3A0C_P_2 */ 11414 { "vblendps", { XM, Vex, EXx, Ib } },11518 { "vblendps", { XM, Vex, EXx, Ib }, 0 }, 11415 11519 }, 11416 11520 { 11417 11521 /* VEX_W_0F3A0D_P_2 */ 11418 { "vblendpd", { XM, Vex, EXx, Ib } },11522 { "vblendpd", { XM, Vex, EXx, Ib }, 0 }, 11419 11523 }, 11420 11524 { 11421 11525 /* VEX_W_0F3A0E_P_2 */ 11422 { "vpblendw", { XM, Vex, EXx, Ib } },11526 { "vpblendw", { XM, Vex, EXx, Ib }, 0 }, 11423 11527 }, 11424 11528 { 11425 11529 /* VEX_W_0F3A0F_P_2 */ 11426 { "vpalignr", { XM, Vex, EXx, Ib } },11530 { "vpalignr", { XM, Vex, EXx, Ib }, 0 }, 11427 11531 }, 11428 11532 { 11429 11533 /* VEX_W_0F3A14_P_2 */ 11430 { "vpextrb", { Edqb, XM, Ib } },11534 { "vpextrb", { Edqb, XM, Ib }, 0 }, 11431 11535 }, 11432 11536 { 11433 11537 /* VEX_W_0F3A15_P_2 */ 11434 { "vpextrw", { Edqw, XM, Ib } },11538 { "vpextrw", { Edqw, XM, Ib }, 0 }, 11435 11539 }, 11436 11540 { 11437 11541 /* VEX_W_0F3A18_P_2 */ 11438 { "vinsertf128", { XM, Vex256, EXxmm, Ib } },11542 { "vinsertf128", { XM, Vex256, EXxmm, Ib }, 0 }, 11439 11543 }, 11440 11544 { 11441 11545 /* VEX_W_0F3A19_P_2 */ 11442 { "vextractf128", { EXxmm, XM, Ib } },11546 { "vextractf128", { EXxmm, XM, Ib }, 0 }, 11443 11547 }, 11444 11548 { 11445 11549 /* VEX_W_0F3A20_P_2 */ 11446 { "vpinsrb", { XM, Vex128, Edqb, Ib } },11550 { "vpinsrb", { XM, Vex128, Edqb, Ib }, 0 }, 11447 11551 }, 11448 11552 { 11449 11553 /* VEX_W_0F3A21_P_2 */ 11450 { "vinsertps", { XM, Vex128, EXd, Ib } },11554 { "vinsertps", { XM, Vex128, EXd, Ib }, 0 }, 11451 11555 }, 11452 11556 { 11453 11557 /* VEX_W_0F3A30_P_2_LEN_0 */ 11454 { "kshiftrb", { MaskG, MaskR, Ib }},11455 { "kshiftrw", { MaskG, MaskR, Ib }},11558 { MOD_TABLE (MOD_VEX_W_0_0F3A30_P_2_LEN_0) }, 11559 { MOD_TABLE (MOD_VEX_W_1_0F3A30_P_2_LEN_0) }, 11456 11560 }, 11457 11561 { 11458 11562 /* VEX_W_0F3A31_P_2_LEN_0 */ 11459 { "kshiftrd", { MaskG, MaskR, Ib }},11460 { "kshiftrq", { MaskG, MaskR, Ib }},11563 { MOD_TABLE (MOD_VEX_W_0_0F3A31_P_2_LEN_0) }, 11564 { MOD_TABLE (MOD_VEX_W_1_0F3A31_P_2_LEN_0) }, 11461 11565 }, 11462 11566 { 11463 11567 /* VEX_W_0F3A32_P_2_LEN_0 */ 11464 { "kshiftlb", { MaskG, MaskR, Ib }},11465 { "kshiftlw", { MaskG, MaskR, Ib }},11568 { MOD_TABLE (MOD_VEX_W_0_0F3A32_P_2_LEN_0) }, 11569 { MOD_TABLE (MOD_VEX_W_1_0F3A32_P_2_LEN_0) }, 11466 11570 }, 11467 11571 { 11468 11572 /* VEX_W_0F3A33_P_2_LEN_0 */ 11469 { "kshiftld", { MaskG, MaskR, Ib }},11470 { "kshiftlq", { MaskG, MaskR, Ib }},11573 { MOD_TABLE (MOD_VEX_W_0_0F3A33_P_2_LEN_0) }, 11574 { MOD_TABLE (MOD_VEX_W_1_0F3A33_P_2_LEN_0) }, 11471 11575 }, 11472 11576 { 11473 11577 /* VEX_W_0F3A38_P_2 */ 11474 { "vinserti128", { XM, Vex256, EXxmm, Ib } },11578 { "vinserti128", { XM, Vex256, EXxmm, Ib }, 0 }, 11475 11579 }, 11476 11580 { 11477 11581 /* VEX_W_0F3A39_P_2 */ 11478 { "vextracti128", { EXxmm, XM, Ib } },11582 { "vextracti128", { EXxmm, XM, Ib }, 0 }, 11479 11583 }, 11480 11584 { 11481 11585 /* VEX_W_0F3A40_P_2 */ 11482 { "vdpps", { XM, Vex, EXx, Ib } },11586 { "vdpps", { XM, Vex, EXx, Ib }, 0 }, 11483 11587 }, 11484 11588 { 11485 11589 /* VEX_W_0F3A41_P_2 */ 11486 { "vdppd", { XM, Vex128, EXx, Ib } },11590 { "vdppd", { XM, Vex128, EXx, Ib }, 0 }, 11487 11591 }, 11488 11592 { 11489 11593 /* VEX_W_0F3A42_P_2 */ 11490 { "vmpsadbw", { XM, Vex, EXx, Ib } },11594 { "vmpsadbw", { XM, Vex, EXx, Ib }, 0 }, 11491 11595 }, 11492 11596 { 11493 11597 /* VEX_W_0F3A44_P_2 */ 11494 { "vpclmulqdq", { XM, Vex128, EXx, PCLMUL } },11598 { "vpclmulqdq", { XM, Vex128, EXx, PCLMUL }, 0 }, 11495 11599 }, 11496 11600 { 11497 11601 /* VEX_W_0F3A46_P_2 */ 11498 { "vperm2i128", { XM, Vex256, EXx, Ib } },11602 { "vperm2i128", { XM, Vex256, EXx, Ib }, 0 }, 11499 11603 }, 11500 11604 { 11501 11605 /* VEX_W_0F3A48_P_2 */ 11502 { "vpermil2ps", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },11503 { "vpermil2ps", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },11606 { "vpermil2ps", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW }, 0 }, 11607 { "vpermil2ps", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW }, 0 }, 11504 11608 }, 11505 11609 { 11506 11610 /* VEX_W_0F3A49_P_2 */ 11507 { "vpermil2pd", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },11508 { "vpermil2pd", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },11611 { "vpermil2pd", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW }, 0 }, 11612 { "vpermil2pd", { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW }, 0 }, 11509 11613 }, 11510 11614 { 11511 11615 /* VEX_W_0F3A4A_P_2 */ 11512 { "vblendvps", { XM, Vex, EXx, XMVexI4 } },11616 { "vblendvps", { XM, Vex, EXx, XMVexI4 }, 0 }, 11513 11617 }, 11514 11618 { 11515 11619 /* VEX_W_0F3A4B_P_2 */ 11516 { "vblendvpd", { XM, Vex, EXx, XMVexI4 } },11620 { "vblendvpd", { XM, Vex, EXx, XMVexI4 }, 0 }, 11517 11621 }, 11518 11622 { 11519 11623 /* VEX_W_0F3A4C_P_2 */ 11520 { "vpblendvb", { XM, Vex, EXx, XMVexI4 } },11624 { "vpblendvb", { XM, Vex, EXx, XMVexI4 }, 0 }, 11521 11625 }, 11522 11626 { 11523 11627 /* VEX_W_0F3A60_P_2 */ 11524 { "vpcmpestrm", { XM, EXx, Ib } },11628 { "vpcmpestrm", { XM, EXx, Ib }, 0 }, 11525 11629 }, 11526 11630 { 11527 11631 /* VEX_W_0F3A61_P_2 */ 11528 { "vpcmpestri", { XM, EXx, Ib } },11632 { "vpcmpestri", { XM, EXx, Ib }, 0 }, 11529 11633 }, 11530 11634 { 11531 11635 /* VEX_W_0F3A62_P_2 */ 11532 { "vpcmpistrm", { XM, EXx, Ib } },11636 { "vpcmpistrm", { XM, EXx, Ib }, 0 }, 11533 11637 }, 11534 11638 { 11535 11639 /* VEX_W_0F3A63_P_2 */ 11536 { "vpcmpistri", { XM, EXx, Ib } },11640 { "vpcmpistri", { XM, EXx, Ib }, 0 }, 11537 11641 }, 11538 11642 { 11539 11643 /* VEX_W_0F3ADF_P_2 */ 11540 { "vaeskeygenassist", { XM, EXx, Ib } },11644 { "vaeskeygenassist", { XM, EXx, Ib }, 0 }, 11541 11645 }, 11542 11646 #define NEED_VEX_W_TABLE … … 11548 11652 { 11549 11653 /* MOD_8D */ 11550 { "leaS", { Gv, M } },11654 { "leaS", { Gv, M }, 0 }, 11551 11655 }, 11552 11656 { … … 11562 11666 { 11563 11667 /* MOD_FF_REG_3 */ 11564 { "Jcall {T|}", { indirEp }},11668 { "Jcall^", { indirEp }, 0 }, 11565 11669 }, 11566 11670 { 11567 11671 /* MOD_FF_REG_5 */ 11568 { "Jjmp {T|}", { indirEp }},11672 { "Jjmp^", { indirEp }, 0 }, 11569 11673 }, 11570 11674 { … … 11589 11693 }, 11590 11694 { 11695 /* MOD_0F01_REG_5 */ 11696 { Bad_Opcode }, 11697 { RM_TABLE (RM_0F01_REG_5) }, 11698 }, 11699 { 11591 11700 /* MOD_0F01_REG_7 */ 11592 { "invlpg", { Mb } },11701 { "invlpg", { Mb }, 0 }, 11593 11702 { RM_TABLE (RM_0F01_REG_7) }, 11594 11703 }, 11595 11704 { 11596 11705 /* MOD_0F12_PREFIX_0 */ 11597 { "movlps", { XM, EXq } },11598 { "movhlps", { XM, EXq } },11706 { "movlps", { XM, EXq }, PREFIX_OPCODE }, 11707 { "movhlps", { XM, EXq }, PREFIX_OPCODE }, 11599 11708 }, 11600 11709 { 11601 11710 /* MOD_0F13 */ 11602 { "movlpX", { EXq, XM } },11711 { "movlpX", { EXq, XM }, PREFIX_OPCODE }, 11603 11712 }, 11604 11713 { 11605 11714 /* MOD_0F16_PREFIX_0 */ 11606 { "movhps", { XM, EXq } },11607 { "movlhps", { XM, EXq } },11715 { "movhps", { XM, EXq }, 0 }, 11716 { "movlhps", { XM, EXq }, 0 }, 11608 11717 }, 11609 11718 { 11610 11719 /* MOD_0F17 */ 11611 { "movhpX", { EXq, XM } },11720 { "movhpX", { EXq, XM }, PREFIX_OPCODE }, 11612 11721 }, 11613 11722 { 11614 11723 /* MOD_0F18_REG_0 */ 11615 { "prefetchnta", { Mb } },11724 { "prefetchnta", { Mb }, 0 }, 11616 11725 }, 11617 11726 { 11618 11727 /* MOD_0F18_REG_1 */ 11619 { "prefetcht0", { Mb } },11728 { "prefetcht0", { Mb }, 0 }, 11620 11729 }, 11621 11730 { 11622 11731 /* MOD_0F18_REG_2 */ 11623 { "prefetcht1", { Mb } },11732 { "prefetcht1", { Mb }, 0 }, 11624 11733 }, 11625 11734 { 11626 11735 /* MOD_0F18_REG_3 */ 11627 { "prefetcht2", { Mb } },11736 { "prefetcht2", { Mb }, 0 }, 11628 11737 }, 11629 11738 { 11630 11739 /* MOD_0F18_REG_4 */ 11631 { "nop/reserved", { Mb } },11740 { "nop/reserved", { Mb }, 0 }, 11632 11741 }, 11633 11742 { 11634 11743 /* MOD_0F18_REG_5 */ 11635 { "nop/reserved", { Mb } },11744 { "nop/reserved", { Mb }, 0 }, 11636 11745 }, 11637 11746 { 11638 11747 /* MOD_0F18_REG_6 */ 11639 { "nop/reserved", { Mb } },11748 { "nop/reserved", { Mb }, 0 }, 11640 11749 }, 11641 11750 { 11642 11751 /* MOD_0F18_REG_7 */ 11643 { "nop/reserved", { Mb } },11752 { "nop/reserved", { Mb }, 0 }, 11644 11753 }, 11645 11754 { 11646 11755 /* MOD_0F1A_PREFIX_0 */ 11647 { "bndldx", { Gbnd, Ev_bnd } },11648 { "nopQ", { Ev } },11756 { "bndldx", { Gbnd, Ev_bnd }, 0 }, 11757 { "nopQ", { Ev }, 0 }, 11649 11758 }, 11650 11759 { 11651 11760 /* MOD_0F1B_PREFIX_0 */ 11652 { "bndstx", { Ev_bnd, Gbnd } },11653 { "nopQ", { Ev } },11761 { "bndstx", { Ev_bnd, Gbnd }, 0 }, 11762 { "nopQ", { Ev }, 0 }, 11654 11763 }, 11655 11764 { 11656 11765 /* MOD_0F1B_PREFIX_1 */ 11657 { "bndmk", { Gbnd, Ev_bnd } },11658 { "nopQ", { Ev } },11766 { "bndmk", { Gbnd, Ev_bnd }, 0 }, 11767 { "nopQ", { Ev }, 0 }, 11659 11768 }, 11660 11769 { 11661 11770 /* MOD_0F24 */ 11662 11771 { Bad_Opcode }, 11663 { "movL", { Rd, Td } },11772 { "movL", { Rd, Td }, 0 }, 11664 11773 }, 11665 11774 { 11666 11775 /* MOD_0F26 */ 11667 11776 { Bad_Opcode }, 11668 { "movL", { Td, Rd } },11777 { "movL", { Td, Rd }, 0 }, 11669 11778 }, 11670 11779 { 11671 11780 /* MOD_0F2B_PREFIX_0 */ 11672 {"movntps", { Mx, XM } },11781 {"movntps", { Mx, XM }, PREFIX_OPCODE }, 11673 11782 }, 11674 11783 { 11675 11784 /* MOD_0F2B_PREFIX_1 */ 11676 {"movntss", { Md, XM } },11785 {"movntss", { Md, XM }, PREFIX_OPCODE }, 11677 11786 }, 11678 11787 { 11679 11788 /* MOD_0F2B_PREFIX_2 */ 11680 {"movntpd", { Mx, XM } },11789 {"movntpd", { Mx, XM }, PREFIX_OPCODE }, 11681 11790 }, 11682 11791 { 11683 11792 /* MOD_0F2B_PREFIX_3 */ 11684 {"movntsd", { Mq, XM } },11793 {"movntsd", { Mq, XM }, PREFIX_OPCODE }, 11685 11794 }, 11686 11795 { 11687 11796 /* MOD_0F51 */ 11688 11797 { Bad_Opcode }, 11689 { "movmskpX", { Gdq, XS } },11798 { "movmskpX", { Gdq, XS }, PREFIX_OPCODE }, 11690 11799 }, 11691 11800 { 11692 11801 /* MOD_0F71_REG_2 */ 11693 11802 { Bad_Opcode }, 11694 { "psrlw", { MS, Ib } },11803 { "psrlw", { MS, Ib }, 0 }, 11695 11804 }, 11696 11805 { 11697 11806 /* MOD_0F71_REG_4 */ 11698 11807 { Bad_Opcode }, 11699 { "psraw", { MS, Ib } },11808 { "psraw", { MS, Ib }, 0 }, 11700 11809 }, 11701 11810 { 11702 11811 /* MOD_0F71_REG_6 */ 11703 11812 { Bad_Opcode }, 11704 { "psllw", { MS, Ib } },11813 { "psllw", { MS, Ib }, 0 }, 11705 11814 }, 11706 11815 { 11707 11816 /* MOD_0F72_REG_2 */ 11708 11817 { Bad_Opcode }, 11709 { "psrld", { MS, Ib } },11818 { "psrld", { MS, Ib }, 0 }, 11710 11819 }, 11711 11820 { 11712 11821 /* MOD_0F72_REG_4 */ 11713 11822 { Bad_Opcode }, 11714 { "psrad", { MS, Ib } },11823 { "psrad", { MS, Ib }, 0 }, 11715 11824 }, 11716 11825 { 11717 11826 /* MOD_0F72_REG_6 */ 11718 11827 { Bad_Opcode }, 11719 { "pslld", { MS, Ib } },11828 { "pslld", { MS, Ib }, 0 }, 11720 11829 }, 11721 11830 { 11722 11831 /* MOD_0F73_REG_2 */ 11723 11832 { Bad_Opcode }, 11724 { "psrlq", { MS, Ib } },11833 { "psrlq", { MS, Ib }, 0 }, 11725 11834 }, 11726 11835 { … … 11732 11841 /* MOD_0F73_REG_6 */ 11733 11842 { Bad_Opcode }, 11734 { "psllq", { MS, Ib } },11843 { "psllq", { MS, Ib }, 0 }, 11735 11844 }, 11736 11845 { … … 11741 11850 { 11742 11851 /* MOD_0FAE_REG_0 */ 11743 { "fxsave", { FXSAVE } },11852 { "fxsave", { FXSAVE }, 0 }, 11744 11853 { PREFIX_TABLE (PREFIX_0FAE_REG_0) }, 11745 11854 }, 11746 11855 { 11747 11856 /* MOD_0FAE_REG_1 */ 11748 { "fxrstor", { FXSAVE } },11857 { "fxrstor", { FXSAVE }, 0 }, 11749 11858 { PREFIX_TABLE (PREFIX_0FAE_REG_1) }, 11750 11859 }, 11751 11860 { 11752 11861 /* MOD_0FAE_REG_2 */ 11753 { "ldmxcsr", { Md } },11862 { "ldmxcsr", { Md }, 0 }, 11754 11863 { PREFIX_TABLE (PREFIX_0FAE_REG_2) }, 11755 11864 }, 11756 11865 { 11757 11866 /* MOD_0FAE_REG_3 */ 11758 { "stmxcsr", { Md } },11867 { "stmxcsr", { Md }, 0 }, 11759 11868 { PREFIX_TABLE (PREFIX_0FAE_REG_3) }, 11760 11869 }, 11761 11870 { 11762 11871 /* MOD_0FAE_REG_4 */ 11763 { "xsave", { FXSAVE } },11872 { "xsave", { FXSAVE }, 0 }, 11764 11873 }, 11765 11874 { 11766 11875 /* MOD_0FAE_REG_5 */ 11767 { "xrstor", { FXSAVE } },11876 { "xrstor", { FXSAVE }, 0 }, 11768 11877 { RM_TABLE (RM_0FAE_REG_5) }, 11769 11878 }, … … 11780 11889 { 11781 11890 /* MOD_0FB2 */ 11782 { "lssS", { Gv, Mp } },11891 { "lssS", { Gv, Mp }, 0 }, 11783 11892 }, 11784 11893 { 11785 11894 /* MOD_0FB4 */ 11786 { "lfsS", { Gv, Mp } },11895 { "lfsS", { Gv, Mp }, 0 }, 11787 11896 }, 11788 11897 { 11789 11898 /* MOD_0FB5 */ 11790 { "lgsS", { Gv, Mp } }, 11899 { "lgsS", { Gv, Mp }, 0 }, 11900 }, 11901 { 11902 /* MOD_0FC3 */ 11903 { PREFIX_TABLE (PREFIX_MOD_0_0FC3) }, 11791 11904 }, 11792 11905 { 11793 11906 /* MOD_0FC7_REG_3 */ 11794 { "xrstors", { FXSAVE }},11907 { "xrstors", { FXSAVE }, 0 }, 11795 11908 }, 11796 11909 { 11797 11910 /* MOD_0FC7_REG_4 */ 11798 { "xsavec", { FXSAVE } },11911 { "xsavec", { FXSAVE }, 0 }, 11799 11912 }, 11800 11913 { 11801 11914 /* MOD_0FC7_REG_5 */ 11802 { "xsaves", { FXSAVE } },11915 { "xsaves", { FXSAVE }, 0 }, 11803 11916 }, 11804 11917 { 11805 11918 /* MOD_0FC7_REG_6 */ 11806 { PREFIX_TABLE (PREFIX_ 0FC7_REG_6) },11807 { "rdrand", { Ev } },11919 { PREFIX_TABLE (PREFIX_MOD_0_0FC7_REG_6) }, 11920 { PREFIX_TABLE (PREFIX_MOD_3_0FC7_REG_6) } 11808 11921 }, 11809 11922 { 11810 11923 /* MOD_0FC7_REG_7 */ 11811 { "vmptrst", { Mq } },11812 { "rdseed", { Ev } },11924 { "vmptrst", { Mq }, 0 }, 11925 { PREFIX_TABLE (PREFIX_MOD_3_0FC7_REG_7) } 11813 11926 }, 11814 11927 { 11815 11928 /* MOD_0FD7 */ 11816 11929 { Bad_Opcode }, 11817 { "pmovmskb", { Gdq, MS } },11930 { "pmovmskb", { Gdq, MS }, 0 }, 11818 11931 }, 11819 11932 { 11820 11933 /* MOD_0FE7_PREFIX_2 */ 11821 { "movntdq", { Mx, XM } },11934 { "movntdq", { Mx, XM }, 0 }, 11822 11935 }, 11823 11936 { 11824 11937 /* MOD_0FF0_PREFIX_3 */ 11825 { "lddqu", { XM, M } },11938 { "lddqu", { XM, M }, 0 }, 11826 11939 }, 11827 11940 { 11828 11941 /* MOD_0F382A_PREFIX_2 */ 11829 { "movntdqa", { XM, Mx } },11942 { "movntdqa", { XM, Mx }, 0 }, 11830 11943 }, 11831 11944 { 11832 11945 /* MOD_62_32BIT */ 11833 { "bound{S|}", { Gv, Ma } },11946 { "bound{S|}", { Gv, Ma }, 0 }, 11834 11947 { EVEX_TABLE (EVEX_0F) }, 11835 11948 }, 11836 11949 { 11837 11950 /* MOD_C4_32BIT */ 11838 { "lesS", { Gv, Mp } },11951 { "lesS", { Gv, Mp }, 0 }, 11839 11952 { VEX_C4_TABLE (VEX_0F) }, 11840 11953 }, 11841 11954 { 11842 11955 /* MOD_C5_32BIT */ 11843 { "ldsS", { Gv, Mp } },11956 { "ldsS", { Gv, Mp }, 0 }, 11844 11957 { VEX_C5_TABLE (VEX_0F) }, 11845 11958 }, … … 11867 11980 }, 11868 11981 { 11982 /* MOD_VEX_W_0_0F41_P_0_LEN_1 */ 11983 { Bad_Opcode }, 11984 { "kandw", { MaskG, MaskVex, MaskR }, 0 }, 11985 }, 11986 { 11987 /* MOD_VEX_W_1_0F41_P_0_LEN_1 */ 11988 { Bad_Opcode }, 11989 { "kandq", { MaskG, MaskVex, MaskR }, 0 }, 11990 }, 11991 { 11992 /* MOD_VEX_W_0_0F41_P_2_LEN_1 */ 11993 { Bad_Opcode }, 11994 { "kandb", { MaskG, MaskVex, MaskR }, 0 }, 11995 }, 11996 { 11997 /* MOD_VEX_W_1_0F41_P_2_LEN_1 */ 11998 { Bad_Opcode }, 11999 { "kandd", { MaskG, MaskVex, MaskR }, 0 }, 12000 }, 12001 { 12002 /* MOD_VEX_W_0_0F42_P_0_LEN_1 */ 12003 { Bad_Opcode }, 12004 { "kandnw", { MaskG, MaskVex, MaskR }, 0 }, 12005 }, 12006 { 12007 /* MOD_VEX_W_1_0F42_P_0_LEN_1 */ 12008 { Bad_Opcode }, 12009 { "kandnq", { MaskG, MaskVex, MaskR }, 0 }, 12010 }, 12011 { 12012 /* MOD_VEX_W_0_0F42_P_2_LEN_1 */ 12013 { Bad_Opcode }, 12014 { "kandnb", { MaskG, MaskVex, MaskR }, 0 }, 12015 }, 12016 { 12017 /* MOD_VEX_W_1_0F42_P_2_LEN_1 */ 12018 { Bad_Opcode }, 12019 { "kandnd", { MaskG, MaskVex, MaskR }, 0 }, 12020 }, 12021 { 12022 /* MOD_VEX_W_0_0F44_P_0_LEN_0 */ 12023 { Bad_Opcode }, 12024 { "knotw", { MaskG, MaskR }, 0 }, 12025 }, 12026 { 12027 /* MOD_VEX_W_1_0F44_P_0_LEN_0 */ 12028 { Bad_Opcode }, 12029 { "knotq", { MaskG, MaskR }, 0 }, 12030 }, 12031 { 12032 /* MOD_VEX_W_0_0F44_P_2_LEN_0 */ 12033 { Bad_Opcode }, 12034 { "knotb", { MaskG, MaskR }, 0 }, 12035 }, 12036 { 12037 /* MOD_VEX_W_1_0F44_P_2_LEN_0 */ 12038 { Bad_Opcode }, 12039 { "knotd", { MaskG, MaskR }, 0 }, 12040 }, 12041 { 12042 /* MOD_VEX_W_0_0F45_P_0_LEN_1 */ 12043 { Bad_Opcode }, 12044 { "korw", { MaskG, MaskVex, MaskR }, 0 }, 12045 }, 12046 { 12047 /* MOD_VEX_W_1_0F45_P_0_LEN_1 */ 12048 { Bad_Opcode }, 12049 { "korq", { MaskG, MaskVex, MaskR }, 0 }, 12050 }, 12051 { 12052 /* MOD_VEX_W_0_0F45_P_2_LEN_1 */ 12053 { Bad_Opcode }, 12054 { "korb", { MaskG, MaskVex, MaskR }, 0 }, 12055 }, 12056 { 12057 /* MOD_VEX_W_1_0F45_P_2_LEN_1 */ 12058 { Bad_Opcode }, 12059 { "kord", { MaskG, MaskVex, MaskR }, 0 }, 12060 }, 12061 { 12062 /* MOD_VEX_W_0_0F46_P_0_LEN_1 */ 12063 { Bad_Opcode }, 12064 { "kxnorw", { MaskG, MaskVex, MaskR }, 0 }, 12065 }, 12066 { 12067 /* MOD_VEX_W_1_0F46_P_0_LEN_1 */ 12068 { Bad_Opcode }, 12069 { "kxnorq", { MaskG, MaskVex, MaskR }, 0 }, 12070 }, 12071 { 12072 /* MOD_VEX_W_0_0F46_P_2_LEN_1 */ 12073 { Bad_Opcode }, 12074 { "kxnorb", { MaskG, MaskVex, MaskR }, 0 }, 12075 }, 12076 { 12077 /* MOD_VEX_W_1_0F46_P_2_LEN_1 */ 12078 { Bad_Opcode }, 12079 { "kxnord", { MaskG, MaskVex, MaskR }, 0 }, 12080 }, 12081 { 12082 /* MOD_VEX_W_0_0F47_P_0_LEN_1 */ 12083 { Bad_Opcode }, 12084 { "kxorw", { MaskG, MaskVex, MaskR }, 0 }, 12085 }, 12086 { 12087 /* MOD_VEX_W_1_0F47_P_0_LEN_1 */ 12088 { Bad_Opcode }, 12089 { "kxorq", { MaskG, MaskVex, MaskR }, 0 }, 12090 }, 12091 { 12092 /* MOD_VEX_W_0_0F47_P_2_LEN_1 */ 12093 { Bad_Opcode }, 12094 { "kxorb", { MaskG, MaskVex, MaskR }, 0 }, 12095 }, 12096 { 12097 /* MOD_VEX_W_1_0F47_P_2_LEN_1 */ 12098 { Bad_Opcode }, 12099 { "kxord", { MaskG, MaskVex, MaskR }, 0 }, 12100 }, 12101 { 12102 /* MOD_VEX_W_0_0F4A_P_0_LEN_1 */ 12103 { Bad_Opcode }, 12104 { "kaddw", { MaskG, MaskVex, MaskR }, 0 }, 12105 }, 12106 { 12107 /* MOD_VEX_W_1_0F4A_P_0_LEN_1 */ 12108 { Bad_Opcode }, 12109 { "kaddq", { MaskG, MaskVex, MaskR }, 0 }, 12110 }, 12111 { 12112 /* MOD_VEX_W_0_0F4A_P_2_LEN_1 */ 12113 { Bad_Opcode }, 12114 { "kaddb", { MaskG, MaskVex, MaskR }, 0 }, 12115 }, 12116 { 12117 /* MOD_VEX_W_1_0F4A_P_2_LEN_1 */ 12118 { Bad_Opcode }, 12119 { "kaddd", { MaskG, MaskVex, MaskR }, 0 }, 12120 }, 12121 { 12122 /* MOD_VEX_W_0_0F4B_P_0_LEN_1 */ 12123 { Bad_Opcode }, 12124 { "kunpckwd", { MaskG, MaskVex, MaskR }, 0 }, 12125 }, 12126 { 12127 /* MOD_VEX_W_1_0F4B_P_0_LEN_1 */ 12128 { Bad_Opcode }, 12129 { "kunpckdq", { MaskG, MaskVex, MaskR }, 0 }, 12130 }, 12131 { 12132 /* MOD_VEX_W_0_0F4B_P_2_LEN_1 */ 12133 { Bad_Opcode }, 12134 { "kunpckbw", { MaskG, MaskVex, MaskR }, 0 }, 12135 }, 12136 { 11869 12137 /* MOD_VEX_0F50 */ 11870 12138 { Bad_Opcode }, … … 11920 12188 { Bad_Opcode }, 11921 12189 { PREFIX_TABLE (PREFIX_VEX_0F73_REG_7) }, 12190 }, 12191 { 12192 /* MOD_VEX_W_0_0F91_P_0_LEN_0 */ 12193 { "kmovw", { Ew, MaskG }, 0 }, 12194 { Bad_Opcode }, 12195 }, 12196 { 12197 /* MOD_VEX_W_0_0F91_P_0_LEN_0 */ 12198 { "kmovq", { Eq, MaskG }, 0 }, 12199 { Bad_Opcode }, 12200 }, 12201 { 12202 /* MOD_VEX_W_0_0F91_P_2_LEN_0 */ 12203 { "kmovb", { Eb, MaskG }, 0 }, 12204 { Bad_Opcode }, 12205 }, 12206 { 12207 /* MOD_VEX_W_0_0F91_P_2_LEN_0 */ 12208 { "kmovd", { Ed, MaskG }, 0 }, 12209 { Bad_Opcode }, 12210 }, 12211 { 12212 /* MOD_VEX_W_0_0F92_P_0_LEN_0 */ 12213 { Bad_Opcode }, 12214 { "kmovw", { MaskG, Rdq }, 0 }, 12215 }, 12216 { 12217 /* MOD_VEX_W_0_0F92_P_2_LEN_0 */ 12218 { Bad_Opcode }, 12219 { "kmovb", { MaskG, Rdq }, 0 }, 12220 }, 12221 { 12222 /* MOD_VEX_W_0_0F92_P_3_LEN_0 */ 12223 { Bad_Opcode }, 12224 { "kmovd", { MaskG, Rdq }, 0 }, 12225 }, 12226 { 12227 /* MOD_VEX_W_1_0F92_P_3_LEN_0 */ 12228 { Bad_Opcode }, 12229 { "kmovq", { MaskG, Rdq }, 0 }, 12230 }, 12231 { 12232 /* MOD_VEX_W_0_0F93_P_0_LEN_0 */ 12233 { Bad_Opcode }, 12234 { "kmovw", { Gdq, MaskR }, 0 }, 12235 }, 12236 { 12237 /* MOD_VEX_W_0_0F93_P_2_LEN_0 */ 12238 { Bad_Opcode }, 12239 { "kmovb", { Gdq, MaskR }, 0 }, 12240 }, 12241 { 12242 /* MOD_VEX_W_0_0F93_P_3_LEN_0 */ 12243 { Bad_Opcode }, 12244 { "kmovd", { Gdq, MaskR }, 0 }, 12245 }, 12246 { 12247 /* MOD_VEX_W_1_0F93_P_3_LEN_0 */ 12248 { Bad_Opcode }, 12249 { "kmovq", { Gdq, MaskR }, 0 }, 12250 }, 12251 { 12252 /* MOD_VEX_W_0_0F98_P_0_LEN_0 */ 12253 { Bad_Opcode }, 12254 { "kortestw", { MaskG, MaskR }, 0 }, 12255 }, 12256 { 12257 /* MOD_VEX_W_1_0F98_P_0_LEN_0 */ 12258 { Bad_Opcode }, 12259 { "kortestq", { MaskG, MaskR }, 0 }, 12260 }, 12261 { 12262 /* MOD_VEX_W_0_0F98_P_2_LEN_0 */ 12263 { Bad_Opcode }, 12264 { "kortestb", { MaskG, MaskR }, 0 }, 12265 }, 12266 { 12267 /* MOD_VEX_W_1_0F98_P_2_LEN_0 */ 12268 { Bad_Opcode }, 12269 { "kortestd", { MaskG, MaskR }, 0 }, 12270 }, 12271 { 12272 /* MOD_VEX_W_0_0F99_P_0_LEN_0 */ 12273 { Bad_Opcode }, 12274 { "ktestw", { MaskG, MaskR }, 0 }, 12275 }, 12276 { 12277 /* MOD_VEX_W_1_0F99_P_0_LEN_0 */ 12278 { Bad_Opcode }, 12279 { "ktestq", { MaskG, MaskR }, 0 }, 12280 }, 12281 { 12282 /* MOD_VEX_W_0_0F99_P_2_LEN_0 */ 12283 { Bad_Opcode }, 12284 { "ktestb", { MaskG, MaskR }, 0 }, 12285 }, 12286 { 12287 /* MOD_VEX_W_1_0F99_P_2_LEN_0 */ 12288 { Bad_Opcode }, 12289 { "ktestd", { MaskG, MaskR }, 0 }, 11922 12290 }, 11923 12291 { … … 11972 12340 { 11973 12341 /* MOD_VEX_0F388C_PREFIX_2 */ 11974 { "vpmaskmov%LW", { XM, Vex, Mx } },12342 { "vpmaskmov%LW", { XM, Vex, Mx }, 0 }, 11975 12343 }, 11976 12344 { 11977 12345 /* MOD_VEX_0F388E_PREFIX_2 */ 11978 { "vpmaskmov%LW", { Mx, Vex, XM } }, 12346 { "vpmaskmov%LW", { Mx, Vex, XM }, 0 }, 12347 }, 12348 { 12349 /* MOD_VEX_W_0_0F3A30_P_2_LEN_0 */ 12350 { Bad_Opcode }, 12351 { "kshiftrb", { MaskG, MaskR, Ib }, 0 }, 12352 }, 12353 { 12354 /* MOD_VEX_W_1_0F3A30_P_2_LEN_0 */ 12355 { Bad_Opcode }, 12356 { "kshiftrw", { MaskG, MaskR, Ib }, 0 }, 12357 }, 12358 { 12359 /* MOD_VEX_W_0_0F3A31_P_2_LEN_0 */ 12360 { Bad_Opcode }, 12361 { "kshiftrd", { MaskG, MaskR, Ib }, 0 }, 12362 }, 12363 { 12364 /* MOD_VEX_W_1_0F3A31_P_2_LEN_0 */ 12365 { Bad_Opcode }, 12366 { "kshiftrq", { MaskG, MaskR, Ib }, 0 }, 12367 }, 12368 { 12369 /* MOD_VEX_W_0_0F3A32_P_2_LEN_0 */ 12370 { Bad_Opcode }, 12371 { "kshiftlb", { MaskG, MaskR, Ib }, 0 }, 12372 }, 12373 { 12374 /* MOD_VEX_W_1_0F3A32_P_2_LEN_0 */ 12375 { Bad_Opcode }, 12376 { "kshiftlw", { MaskG, MaskR, Ib }, 0 }, 12377 }, 12378 { 12379 /* MOD_VEX_W_0_0F3A33_P_2_LEN_0 */ 12380 { Bad_Opcode }, 12381 { "kshiftld", { MaskG, MaskR, Ib }, 0 }, 12382 }, 12383 { 12384 /* MOD_VEX_W_1_0F3A33_P_2_LEN_0 */ 12385 { Bad_Opcode }, 12386 { "kshiftlq", { MaskG, MaskR, Ib }, 0 }, 11979 12387 }, 11980 12388 #define NEED_MOD_TABLE … … 11986 12394 { 11987 12395 /* RM_C6_REG_7 */ 11988 { "xabort", { Skip_MODRM, Ib } },12396 { "xabort", { Skip_MODRM, Ib }, 0 }, 11989 12397 }, 11990 12398 { 11991 12399 /* RM_C7_REG_7 */ 11992 { "xbeginT", { Skip_MODRM, Jv } },12400 { "xbeginT", { Skip_MODRM, Jv }, 0 }, 11993 12401 }, 11994 12402 { 11995 12403 /* RM_0F01_REG_0 */ 11996 12404 { Bad_Opcode }, 11997 { "vmcall", { Skip_MODRM } },11998 { "vmlaunch", { Skip_MODRM } },11999 { "vmresume", { Skip_MODRM } },12000 { "vmxoff", { Skip_MODRM } },12405 { "vmcall", { Skip_MODRM }, 0 }, 12406 { "vmlaunch", { Skip_MODRM }, 0 }, 12407 { "vmresume", { Skip_MODRM }, 0 }, 12408 { "vmxoff", { Skip_MODRM }, 0 }, 12001 12409 }, 12002 12410 { 12003 12411 /* RM_0F01_REG_1 */ 12004 { "monitor", { { OP_Monitor, 0 } } },12005 { "mwait", { { OP_Mwait, 0 } } },12006 { "clac", { Skip_MODRM } },12007 { "stac", { Skip_MODRM } },12008 { Bad_Opcode }, 12009 { Bad_Opcode }, 12010 { Bad_Opcode }, 12011 { "encls", { Skip_MODRM } },12412 { "monitor", { { OP_Monitor, 0 } }, 0 }, 12413 { "mwait", { { OP_Mwait, 0 } }, 0 }, 12414 { "clac", { Skip_MODRM }, 0 }, 12415 { "stac", { Skip_MODRM }, 0 }, 12416 { Bad_Opcode }, 12417 { Bad_Opcode }, 12418 { Bad_Opcode }, 12419 { "encls", { Skip_MODRM }, 0 }, 12012 12420 }, 12013 12421 { 12014 12422 /* RM_0F01_REG_2 */ 12015 { "xgetbv", { Skip_MODRM } },12016 { "xsetbv", { Skip_MODRM } },12017 { Bad_Opcode }, 12018 { Bad_Opcode }, 12019 { "vmfunc", { Skip_MODRM } },12020 { "xend", { Skip_MODRM } },12021 { "xtest", { Skip_MODRM } },12022 { "enclu", { Skip_MODRM } },12423 { "xgetbv", { Skip_MODRM }, 0 }, 12424 { "xsetbv", { Skip_MODRM }, 0 }, 12425 { Bad_Opcode }, 12426 { Bad_Opcode }, 12427 { "vmfunc", { Skip_MODRM }, 0 }, 12428 { "xend", { Skip_MODRM }, 0 }, 12429 { "xtest", { Skip_MODRM }, 0 }, 12430 { "enclu", { Skip_MODRM }, 0 }, 12023 12431 }, 12024 12432 { 12025 12433 /* RM_0F01_REG_3 */ 12026 { "vmrun", { Skip_MODRM } }, 12027 { "vmmcall", { Skip_MODRM } }, 12028 { "vmload", { Skip_MODRM } }, 12029 { "vmsave", { Skip_MODRM } }, 12030 { "stgi", { Skip_MODRM } }, 12031 { "clgi", { Skip_MODRM } }, 12032 { "skinit", { Skip_MODRM } }, 12033 { "invlpga", { Skip_MODRM } }, 12434 { "vmrun", { Skip_MODRM }, 0 }, 12435 { "vmmcall", { Skip_MODRM }, 0 }, 12436 { "vmload", { Skip_MODRM }, 0 }, 12437 { "vmsave", { Skip_MODRM }, 0 }, 12438 { "stgi", { Skip_MODRM }, 0 }, 12439 { "clgi", { Skip_MODRM }, 0 }, 12440 { "skinit", { Skip_MODRM }, 0 }, 12441 { "invlpga", { Skip_MODRM }, 0 }, 12442 }, 12443 { 12444 /* RM_0F01_REG_5 */ 12445 { Bad_Opcode }, 12446 { Bad_Opcode }, 12447 { Bad_Opcode }, 12448 { Bad_Opcode }, 12449 { Bad_Opcode }, 12450 { Bad_Opcode }, 12451 { "rdpkru", { Skip_MODRM }, 0 }, 12452 { "wrpkru", { Skip_MODRM }, 0 }, 12034 12453 }, 12035 12454 { 12036 12455 /* RM_0F01_REG_7 */ 12037 { "swapgs", { Skip_MODRM } }, 12038 { "rdtscp", { Skip_MODRM } }, 12456 { "swapgs", { Skip_MODRM }, 0 }, 12457 { "rdtscp", { Skip_MODRM }, 0 }, 12458 { "monitorx", { { OP_Monitor, 0 } }, 0 }, 12459 { "mwaitx", { { OP_Mwaitx, 0 } }, 0 }, 12460 { "clzero", { Skip_MODRM }, 0 }, 12039 12461 }, 12040 12462 { 12041 12463 /* RM_0FAE_REG_5 */ 12042 { "lfence", { Skip_MODRM } },12464 { "lfence", { Skip_MODRM }, 0 }, 12043 12465 }, 12044 12466 { 12045 12467 /* RM_0FAE_REG_6 */ 12046 { "mfence", { Skip_MODRM } },12468 { "mfence", { Skip_MODRM }, 0 }, 12047 12469 }, 12048 12470 { … … 12306 12728 static char scale_char; 12307 12729 12730 enum x86_64_isa 12731 { 12732 amd64 = 0, 12733 intel64 12734 }; 12735 12736 static enum x86_64_isa isa64; 12737 12308 12738 /* Here for backwards compatibility. When gdb stops using 12309 12739 print_insn_i386_att and print_insn_i386_intel these functions can … … 12355 12785 fprintf (stream, _(" data16 Assume 16bit data size\n")); 12356 12786 fprintf (stream, _(" suffix Always display instruction suffix in AT&T syntax\n")); 12787 fprintf (stream, _(" amd64 Display instruction in AMD64 ISA\n")); 12788 fprintf (stream, _(" intel64 Display instruction in Intel64 ISA\n")); 12357 12789 } 12358 12790 12359 12791 /* Bad opcode. */ 12360 static const struct dis386 bad_opcode = { "(bad)", { XX } };12792 static const struct dis386 bad_opcode = { "(bad)", { XX }, 0 }; 12361 12793 12362 12794 /* Get a pointer to struct dis386 with a valid name. */ … … 12431 12863 } 12432 12864 12433 /* Ignore the invalid index if it isn't mandatory. */ 12434 if (!mandatory_prefix 12435 && (prefix_table[dp->op[1].bytemode][vindex].name 12436 == NULL) 12437 && (prefix_table[dp->op[1].bytemode][vindex].op[0].bytemode 12438 == 0)) 12865 /* Check if prefix should be ignored. */ 12866 if ((((prefix_table[dp->op[1].bytemode][vindex].prefix_requirement 12867 & PREFIX_IGNORED) >> PREFIX_IGNORED_SHIFT) 12868 & prefix) != 0) 12439 12869 vindex = 0; 12440 12870 } … … 12840 13270 for (p = info->disassembler_options; p != NULL; ) 12841 13271 { 12842 if (CONST_STRNEQ (p, "x86-64")) 13272 if (CONST_STRNEQ (p, "amd64")) 13273 isa64 = amd64; 13274 else if (CONST_STRNEQ (p, "intel64")) 13275 isa64 = intel64; 13276 else if (CONST_STRNEQ (p, "x86-64")) 12843 13277 { 12844 13278 address_mode = mode_64bit; … … 12899 13333 } 12900 13334 13335 if (address_mode == mode_64bit && sizeof (bfd_vma) < 8) 13336 { 13337 (*info->fprintf_func) (info->stream, 13338 _("64-bit address is disabled")); 13339 return -1; 13340 } 13341 12901 13342 if (intel_syntax) 12902 13343 { … … 13028 13469 { 13029 13470 unsigned char threebyte; 13030 FETCH_DATA (info, codep + 2); 13031 threebyte = *++codep; 13471 13472 codep++; 13473 FETCH_DATA (info, codep + 1); 13474 threebyte = *codep; 13032 13475 dp = &dis386_twobyte[threebyte]; 13033 13476 need_modrm = twobyte_has_modrm[*codep]; 13034 mandatory_prefix = twobyte_has_mandatory_prefix[*codep];13035 13477 codep++; 13036 13478 } … … 13039 13481 dp = &dis386[*codep]; 13040 13482 need_modrm = onebyte_has_modrm[*codep]; 13041 mandatory_prefix = 0;13042 13483 codep++; 13043 13484 } … … 13139 13580 PREFIX_REPZ/PREFIX_REPNZ fix, we check the PREFIX_DATA prefix 13140 13581 separately. */ 13141 if ( mandatory_prefix13582 if (dp->prefix_requirement == PREFIX_OPCODE 13142 13583 && dp != &bad_opcode 13143 13584 && (((prefixes … … 13175 13616 for (i = 0; i < MAX_OPERANDS; ++i) 13176 13617 op_txt[i] = op_out[i]; 13618 13619 if (intel_syntax && dp && dp->op[2].rtn == OP_Rounding 13620 && dp->op[3].rtn == OP_E && dp->op[4].rtn == NULL) 13621 { 13622 op_txt[2] = op_out[3]; 13623 op_txt[3] = op_out[2]; 13624 } 13177 13625 13178 13626 for (i = 0; i < (MAX_OPERANDS >> 1); ++i) … … 13209 13657 { 13210 13658 (*info->fprintf_func) (info->stream, " # "); 13211 (*info->print_address_func) ((bfd_vma) (start_pc + codep - start_codep13659 (*info->print_address_func) ((bfd_vma) (start_pc + (codep - start_codep) 13212 13660 + op_address[op_index[i]]), info); 13213 13661 break; … … 13369 13817 #define STi { OP_STi, 0 } 13370 13818 13371 #define FGRPd9_2 NULL, { { NULL, 0 } } 13372 #define FGRPd9_4 NULL, { { NULL, 1 } } 13373 #define FGRPd9_5 NULL, { { NULL, 2 } } 13374 #define FGRPd9_6 NULL, { { NULL, 3 } } 13375 #define FGRPd9_7 NULL, { { NULL, 4 } } 13376 #define FGRPda_5 NULL, { { NULL, 5 } } 13377 #define FGRPdb_4 NULL, { { NULL, 6 } } 13378 #define FGRPde_3 NULL, { { NULL, 7 } } 13379 #define FGRPdf_4 NULL, { { NULL, 8 } } 13819 #define FGRPd9_2 NULL, { { NULL, 0 } }, 0 13820 #define FGRPd9_4 NULL, { { NULL, 1 } }, 0 13821 #define FGRPd9_5 NULL, { { NULL, 2 } }, 0 13822 #define FGRPd9_6 NULL, { { NULL, 3 } }, 0 13823 #define FGRPd9_7 NULL, { { NULL, 4 } }, 0 13824 #define FGRPda_5 NULL, { { NULL, 5 } }, 0 13825 #define FGRPdb_4 NULL, { { NULL, 6 } }, 0 13826 #define FGRPde_3 NULL, { { NULL, 7 } }, 0 13827 #define FGRPdf_4 NULL, { { NULL, 8 } }, 0 13380 13828 13381 13829 static const struct dis386 float_reg[][8] = { 13382 13830 /* d8 */ 13383 13831 { 13384 { "fadd", { ST, STi } },13385 { "fmul", { ST, STi } },13386 { "fcom", { STi } },13387 { "fcomp", { STi } },13388 { "fsub", { ST, STi } },13389 { "fsubr", { ST, STi } },13390 { "fdiv", { ST, STi } },13391 { "fdivr", { ST, STi } },13832 { "fadd", { ST, STi }, 0 }, 13833 { "fmul", { ST, STi }, 0 }, 13834 { "fcom", { STi }, 0 }, 13835 { "fcomp", { STi }, 0 }, 13836 { "fsub", { ST, STi }, 0 }, 13837 { "fsubr", { ST, STi }, 0 }, 13838 { "fdiv", { ST, STi }, 0 }, 13839 { "fdivr", { ST, STi }, 0 }, 13392 13840 }, 13393 13841 /* d9 */ 13394 13842 { 13395 { "fld", { STi } },13396 { "fxch", { STi } },13843 { "fld", { STi }, 0 }, 13844 { "fxch", { STi }, 0 }, 13397 13845 { FGRPd9_2 }, 13398 13846 { Bad_Opcode }, … … 13404 13852 /* da */ 13405 13853 { 13406 { "fcmovb", { ST, STi } },13407 { "fcmove", { ST, STi } },13408 { "fcmovbe",{ ST, STi } },13409 { "fcmovu", { ST, STi } },13854 { "fcmovb", { ST, STi }, 0 }, 13855 { "fcmove", { ST, STi }, 0 }, 13856 { "fcmovbe",{ ST, STi }, 0 }, 13857 { "fcmovu", { ST, STi }, 0 }, 13410 13858 { Bad_Opcode }, 13411 13859 { FGRPda_5 }, … … 13415 13863 /* db */ 13416 13864 { 13417 { "fcmovnb",{ ST, STi } },13418 { "fcmovne",{ ST, STi } },13419 { "fcmovnbe",{ ST, STi } },13420 { "fcmovnu",{ ST, STi } },13865 { "fcmovnb",{ ST, STi }, 0 }, 13866 { "fcmovne",{ ST, STi }, 0 }, 13867 { "fcmovnbe",{ ST, STi }, 0 }, 13868 { "fcmovnu",{ ST, STi }, 0 }, 13421 13869 { FGRPdb_4 }, 13422 { "fucomi", { ST, STi } },13423 { "fcomi", { ST, STi } },13870 { "fucomi", { ST, STi }, 0 }, 13871 { "fcomi", { ST, STi }, 0 }, 13424 13872 { Bad_Opcode }, 13425 13873 }, 13426 13874 /* dc */ 13427 13875 { 13428 { "fadd", { STi, ST } },13429 { "fmul", { STi, ST } },13430 { Bad_Opcode }, 13431 { Bad_Opcode }, 13432 { "fsub!M", { STi, ST } },13433 { "fsubM", { STi, ST } },13434 { "fdiv!M", { STi, ST } },13435 { "fdivM", { STi, ST } },13876 { "fadd", { STi, ST }, 0 }, 13877 { "fmul", { STi, ST }, 0 }, 13878 { Bad_Opcode }, 13879 { Bad_Opcode }, 13880 { "fsub!M", { STi, ST }, 0 }, 13881 { "fsubM", { STi, ST }, 0 }, 13882 { "fdiv!M", { STi, ST }, 0 }, 13883 { "fdivM", { STi, ST }, 0 }, 13436 13884 }, 13437 13885 /* dd */ 13438 13886 { 13439 { "ffree", { STi } },13440 { Bad_Opcode }, 13441 { "fst", { STi } },13442 { "fstp", { STi } },13443 { "fucom", { STi } },13444 { "fucomp", { STi } },13887 { "ffree", { STi }, 0 }, 13888 { Bad_Opcode }, 13889 { "fst", { STi }, 0 }, 13890 { "fstp", { STi }, 0 }, 13891 { "fucom", { STi }, 0 }, 13892 { "fucomp", { STi }, 0 }, 13445 13893 { Bad_Opcode }, 13446 13894 { Bad_Opcode }, … … 13448 13896 /* de */ 13449 13897 { 13450 { "faddp", { STi, ST } },13451 { "fmulp", { STi, ST } },13898 { "faddp", { STi, ST }, 0 }, 13899 { "fmulp", { STi, ST }, 0 }, 13452 13900 { Bad_Opcode }, 13453 13901 { FGRPde_3 }, 13454 { "fsub!Mp", { STi, ST } },13455 { "fsubMp", { STi, ST } },13456 { "fdiv!Mp", { STi, ST } },13457 { "fdivMp", { STi, ST } },13902 { "fsub!Mp", { STi, ST }, 0 }, 13903 { "fsubMp", { STi, ST }, 0 }, 13904 { "fdiv!Mp", { STi, ST }, 0 }, 13905 { "fdivMp", { STi, ST }, 0 }, 13458 13906 }, 13459 13907 /* df */ 13460 13908 { 13461 { "ffreep", { STi } },13909 { "ffreep", { STi }, 0 }, 13462 13910 { Bad_Opcode }, 13463 13911 { Bad_Opcode }, 13464 13912 { Bad_Opcode }, 13465 13913 { FGRPdf_4 }, 13466 { "fucomip", { ST, STi } },13467 { "fcomip", { ST, STi } },13914 { "fucomip", { ST, STi }, 0 }, 13915 { "fcomip", { ST, STi }, 0 }, 13468 13916 { Bad_Opcode }, 13469 13917 }, … … 13784 14232 break; 13785 14233 case 'Z': 14234 if (l != 0 || len != 1) 14235 { 14236 if (l != 1 || len != 2 || last[0] != 'X') 14237 { 14238 SAVE_LAST (*p); 14239 break; 14240 } 14241 if (!need_vex || !vex.evex) 14242 abort (); 14243 if (intel_syntax 14244 || ((modrm.mod == 3 || vex.b) && !(sizeflag & SUFFIX_ALWAYS))) 14245 break; 14246 switch (vex.length) 14247 { 14248 case 128: 14249 *obufp++ = 'x'; 14250 break; 14251 case 256: 14252 *obufp++ = 'y'; 14253 break; 14254 case 512: 14255 *obufp++ = 'z'; 14256 break; 14257 default: 14258 abort (); 14259 } 14260 break; 14261 } 13786 14262 if (intel_syntax) 13787 14263 break; … … 13826 14302 used_prefixes |= (prefixes & PREFIX_DATA); 13827 14303 break; 14304 case '&': 14305 if (!intel_syntax 14306 && address_mode == mode_64bit 14307 && isa64 == intel64) 14308 { 14309 *obufp++ = 'q'; 14310 break; 14311 } 14312 /* Fall through. */ 13828 14313 case 'T': 13829 14314 if (!intel_syntax … … 14082 14567 abort (); 14083 14568 if (intel_syntax 14084 || ( modrm.mod == 3&& !(sizeflag & SUFFIX_ALWAYS)))14569 || ((modrm.mod == 3 || vex.b) && !(sizeflag & SUFFIX_ALWAYS))) 14085 14570 break; 14086 14571 switch (vex.length) … … 14092 14577 *obufp++ = 'y'; 14093 14578 break; 14579 case 512: 14580 if (!vex.evex) 14094 14581 default: 14095 abort ();14582 abort (); 14096 14583 } 14097 14584 } … … 14134 14621 } 14135 14622 break; 14623 case '^': 14624 if (intel_syntax) 14625 break; 14626 if ((prefixes & PREFIX_DATA) || (sizeflag & SUFFIX_ALWAYS)) 14627 { 14628 if (sizeflag & DFLAG) 14629 *obufp++ = 'l'; 14630 else 14631 *obufp++ = 'w'; 14632 used_prefixes |= (prefixes & PREFIX_DATA); 14633 } 14634 break; 14635 case '@': 14636 if (intel_syntax) 14637 break; 14638 if (address_mode == mode_64bit 14639 && (isa64 == intel64 14640 || ((sizeflag & DFLAG) || (rex & REX_W)))) 14641 *obufp++ = 'q'; 14642 else if ((prefixes & PREFIX_DATA)) 14643 { 14644 if (!(sizeflag & DFLAG)) 14645 *obufp++ = 'w'; 14646 used_prefixes |= (prefixes & PREFIX_DATA); 14647 } 14648 break; 14136 14649 } 14137 14650 alt = 0; … … 14318 14831 oappend ("WORD PTR "); 14319 14832 break; 14833 case indir_v_mode: 14834 if (address_mode == mode_64bit && isa64 == intel64) 14835 { 14836 oappend ("QWORD PTR "); 14837 break; 14838 } 14320 14839 case stack_v_mode: 14321 14840 if (address_mode == mode_64bit && ((sizeflag & DFLAG) || (rex & REX_W))) … … 14695 15214 names = names_bnd; 14696 15215 break; 15216 case indir_v_mode: 15217 if (address_mode == mode_64bit && isa64 == intel64) 15218 { 15219 names = names64; 15220 break; 15221 } 14697 15222 case stack_v_mode: 14698 15223 if (address_mode == mode_64bit && ((sizeflag & DFLAG) || (rex & REX_W))) … … 15275 15800 a |= (*codep++ & 0xff) << 8; 15276 15801 a |= (*codep++ & 0xff) << 16; 15277 a |= (*codep++ & 0xff ) << 24;15802 a |= (*codep++ & 0xffu) << 24; 15278 15803 b = *codep++ & 0xff; 15279 15804 b |= (*codep++ & 0xff) << 8; 15280 15805 b |= (*codep++ & 0xff) << 16; 15281 b |= (*codep++ & 0xff ) << 24;15806 b |= (*codep++ & 0xffu) << 24; 15282 15807 x = a + ((bfd_vma) b << 32); 15283 15808 #else … … 15650 16175 break; 15651 16176 case v_mode: 15652 USED_REX (REX_W); 15653 if ((sizeflag & DFLAG) || (rex & REX_W)) 16177 if (isa64 == amd64) 16178 USED_REX (REX_W); 16179 if ((sizeflag & DFLAG) 16180 || (address_mode == mode_64bit 16181 && (isa64 != amd64 || (rex & REX_W)))) 15654 16182 disp = get32s (); 15655 16183 else … … 15664 16192 mask = 0xffff; 15665 16193 if ((prefixes & PREFIX_DATA) == 0) 15666 segment = ((start_pc + codep - start_codep)16194 segment = ((start_pc + (codep - start_codep)) 15667 16195 & ~((bfd_vma) 0xffff)); 15668 16196 } 15669 if (!(rex & REX_W)) 16197 if (address_mode != mode_64bit 16198 || (isa64 == amd64 && !(rex & REX_W))) 15670 16199 used_prefixes |= (prefixes & PREFIX_DATA); 15671 16200 break; … … 16337 16866 16338 16867 static void 16868 OP_Mwaitx (int bytemode ATTRIBUTE_UNUSED, 16869 int sizeflag ATTRIBUTE_UNUSED) 16870 { 16871 /* mwaitx %eax,%ecx,%ebx */ 16872 if (!intel_syntax) 16873 { 16874 const char **names = (address_mode == mode_64bit 16875 ? names64 : names32); 16876 strcpy (op_out[0], names[0]); 16877 strcpy (op_out[1], names[1]); 16878 strcpy (op_out[2], names[3]); 16879 two_source_ops = 1; 16880 } 16881 /* Skip mod/rm byte. */ 16882 MODRM_CHECK; 16883 codep++; 16884 } 16885 16886 static void 16339 16887 OP_Mwait (int bytemode ATTRIBUTE_UNUSED, 16340 16888 int sizeflag ATTRIBUTE_UNUSED)
Note:
See TracChangeset
for help on using the changeset viewer.