///////////////////////////////////////////////////////////////////////// // $Id$ ///////////////////////////////////////////////////////////////////////// // // Copyright (c) 2011 Stanislav Shwartsman // Written by Stanislav Shwartsman [sshwarts at sourceforge net] // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // ///////////////////////////////////////////////////////////////////////// static BxDisasmOpcodeTable_t BxDisasmGroupXOP_G1[8] = { /* 0 */ { 0, &Ia_Invalid }, /* 1 */ { 0, &Ia_blcfill_By_Ey }, /* 2 */ { 0, &Ia_blsfill_By_Ey }, /* 3 */ { 0, &Ia_blcs_By_Ey }, /* 4 */ { 0, &Ia_tzmsk_By_Ey }, /* 5 */ { 0, &Ia_blcic_By_Ey }, /* 6 */ { 0, &Ia_blsic_By_Ey }, /* 7 */ { 0, &Ia_t1mskc_By_Ey } }; static BxDisasmOpcodeTable_t BxDisasmGroupXOP_G2[8] = { /* 0 */ { 0, &Ia_Invalid }, /* 1 */ { 0, &Ia_blcmsk_By_Ey }, /* 2 */ { 0, &Ia_Invalid }, /* 3 */ { 0, &Ia_Invalid }, /* 4 */ { 0, &Ia_Invalid }, /* 5 */ { 0, &Ia_Invalid }, /* 6 */ { 0, &Ia_blci_By_Ey }, /* 7 */ { 0, &Ia_Invalid } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop8_a2[2] = { /* 0 */ { 0, &Ia_vpcmov_Vdq_Hdq_Wdq_VIb }, /* 1 */ { 0, &Ia_vpcmov_Vdq_Hdq_VIb_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop8_a3[2] = { /* 0 */ { 0, &Ia_vpperm_Vdq_Hdq_Wdq_VIb }, /* 1 */ { 0, &Ia_vpperm_Vdq_Hdq_VIb_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_88[2] = { /* 0 */ { 0, &Ia_vpshab_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vpshab_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_89[2] = { /* 0 */ { 0, &Ia_vpshaw_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vpshaw_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_8a[2] = { /* 0 */ { 0, &Ia_vpshad_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vpshad_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_8b[2] = { /* 0 */ { 0, &Ia_vpshaq_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vpshaq_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_90[2] = { /* 0 */ { 0, &Ia_vprotb_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vprotb_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_91[2] = { /* 0 */ { 0, &Ia_vprotw_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vprotw_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_92[2] = { /* 0 */ { 0, &Ia_vprotd_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vprotd_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_93[2] = { /* 0 */ { 0, &Ia_vprotq_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vprotq_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_94[2] = { /* 0 */ { 0, &Ia_vpshlb_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vpshlb_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_95[2] = { /* 0 */ { 0, &Ia_vpshlw_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vpshlw_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_96[2] = { /* 0 */ { 0, &Ia_vpshld_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vpshld_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_97[2] = { /* 0 */ { 0, &Ia_vpshlq_Vdq_Wdq_Hdq }, /* 1 */ { 0, &Ia_vpshlq_Vdq_Hdq_Wdq } }; static BxDisasmOpcodeTable_t BxDisasmOpcodesXOP[256*3] = { // 256 entries for XOP map 0x8 opcodes /* 00 */ { 0, &Ia_Invalid }, /* 01 */ { GRPN(XOP_G1) }, /* 02 */ { GRPN(XOP_G2) }, /* 03 */ { 0, &Ia_Invalid }, /* 04 */ { 0, &Ia_Invalid }, /* 05 */ { 0, &Ia_Invalid }, /* 06 */ { 0, &Ia_Invalid }, /* 07 */ { 0, &Ia_Invalid }, /* 08 */ { 0, &Ia_Invalid }, /* 09 */ { 0, &Ia_Invalid }, /* 0A */ { 0, &Ia_Invalid }, /* 0B */ { 0, &Ia_Invalid }, /* 0C */ { 0, &Ia_Invalid }, /* 0D */ { 0, &Ia_Invalid }, /* 0E */ { 0, &Ia_Invalid }, /* 0F */ { 0, &Ia_Invalid }, /* 10 */ { 0, &Ia_Invalid }, /* 11 */ { 0, &Ia_Invalid }, /* 12 */ { 0, &Ia_Invalid }, /* 13 */ { 0, &Ia_Invalid }, /* 14 */ { 0, &Ia_Invalid }, /* 15 */ { 0, &Ia_Invalid }, /* 16 */ { 0, &Ia_Invalid }, /* 17 */ { 0, &Ia_Invalid }, /* 18 */ { 0, &Ia_Invalid }, /* 19 */ { 0, &Ia_Invalid }, /* 1A */ { 0, &Ia_Invalid }, /* 1B */ { 0, &Ia_Invalid }, /* 1C */ { 0, &Ia_Invalid }, /* 1D */ { 0, &Ia_Invalid }, /* 1E */ { 0, &Ia_Invalid }, /* 1F */ { 0, &Ia_Invalid }, /* 20 */ { 0, &Ia_Invalid }, /* 21 */ { 0, &Ia_Invalid }, /* 22 */ { 0, &Ia_Invalid }, /* 23 */ { 0, &Ia_Invalid }, /* 24 */ { 0, &Ia_Invalid }, /* 25 */ { 0, &Ia_Invalid }, /* 26 */ { 0, &Ia_Invalid }, /* 27 */ { 0, &Ia_Invalid }, /* 28 */ { 0, &Ia_Invalid }, /* 29 */ { 0, &Ia_Invalid }, /* 2A */ { 0, &Ia_Invalid }, /* 2B */ { 0, &Ia_Invalid }, /* 2C */ { 0, &Ia_Invalid }, /* 2D */ { 0, &Ia_Invalid }, /* 2E */ { 0, &Ia_Invalid }, /* 2F */ { 0, &Ia_Invalid }, /* 30 */ { 0, &Ia_Invalid }, /* 31 */ { 0, &Ia_Invalid }, /* 32 */ { 0, &Ia_Invalid }, /* 33 */ { 0, &Ia_Invalid }, /* 34 */ { 0, &Ia_Invalid }, /* 35 */ { 0, &Ia_Invalid }, /* 36 */ { 0, &Ia_Invalid }, /* 37 */ { 0, &Ia_Invalid }, /* 38 */ { 0, &Ia_Invalid }, /* 39 */ { 0, &Ia_Invalid }, /* 3A */ { 0, &Ia_Invalid }, /* 3B */ { 0, &Ia_Invalid }, /* 3C */ { 0, &Ia_Invalid }, /* 3D */ { 0, &Ia_Invalid }, /* 3E */ { 0, &Ia_Invalid }, /* 3F */ { 0, &Ia_Invalid }, /* 40 */ { 0, &Ia_Invalid }, /* 41 */ { 0, &Ia_Invalid }, /* 42 */ { 0, &Ia_Invalid }, /* 43 */ { 0, &Ia_Invalid }, /* 44 */ { 0, &Ia_Invalid }, /* 45 */ { 0, &Ia_Invalid }, /* 46 */ { 0, &Ia_Invalid }, /* 47 */ { 0, &Ia_Invalid }, /* 48 */ { 0, &Ia_Invalid }, /* 49 */ { 0, &Ia_Invalid }, /* 4A */ { 0, &Ia_Invalid }, /* 4B */ { 0, &Ia_Invalid }, /* 4C */ { 0, &Ia_Invalid }, /* 4D */ { 0, &Ia_Invalid }, /* 4E */ { 0, &Ia_Invalid }, /* 4F */ { 0, &Ia_Invalid }, /* 50 */ { 0, &Ia_Invalid }, /* 51 */ { 0, &Ia_Invalid }, /* 52 */ { 0, &Ia_Invalid }, /* 53 */ { 0, &Ia_Invalid }, /* 54 */ { 0, &Ia_Invalid }, /* 55 */ { 0, &Ia_Invalid }, /* 56 */ { 0, &Ia_Invalid }, /* 57 */ { 0, &Ia_Invalid }, /* 58 */ { 0, &Ia_Invalid }, /* 59 */ { 0, &Ia_Invalid }, /* 5A */ { 0, &Ia_Invalid }, /* 5B */ { 0, &Ia_Invalid }, /* 5C */ { 0, &Ia_Invalid }, /* 5D */ { 0, &Ia_Invalid }, /* 5E */ { 0, &Ia_Invalid }, /* 5F */ { 0, &Ia_Invalid }, /* 60 */ { 0, &Ia_Invalid }, /* 61 */ { 0, &Ia_Invalid }, /* 62 */ { 0, &Ia_Invalid }, /* 63 */ { 0, &Ia_Invalid }, /* 64 */ { 0, &Ia_Invalid }, /* 65 */ { 0, &Ia_Invalid }, /* 66 */ { 0, &Ia_Invalid }, /* 67 */ { 0, &Ia_Invalid }, /* 68 */ { 0, &Ia_Invalid }, /* 69 */ { 0, &Ia_Invalid }, /* 6A */ { 0, &Ia_Invalid }, /* 6B */ { 0, &Ia_Invalid }, /* 6C */ { 0, &Ia_Invalid }, /* 6D */ { 0, &Ia_Invalid }, /* 6E */ { 0, &Ia_Invalid }, /* 6F */ { 0, &Ia_Invalid }, /* 70 */ { 0, &Ia_Invalid }, /* 71 */ { 0, &Ia_Invalid }, /* 72 */ { 0, &Ia_Invalid }, /* 73 */ { 0, &Ia_Invalid }, /* 74 */ { 0, &Ia_Invalid }, /* 75 */ { 0, &Ia_Invalid }, /* 76 */ { 0, &Ia_Invalid }, /* 77 */ { 0, &Ia_Invalid }, /* 78 */ { 0, &Ia_Invalid }, /* 79 */ { 0, &Ia_Invalid }, /* 7A */ { 0, &Ia_Invalid }, /* 7B */ { 0, &Ia_Invalid }, /* 7C */ { 0, &Ia_Invalid }, /* 7D */ { 0, &Ia_Invalid }, /* 7E */ { 0, &Ia_Invalid }, /* 7F */ { 0, &Ia_Invalid }, /* 80 */ { 0, &Ia_Invalid }, /* 81 */ { 0, &Ia_Invalid }, /* 82 */ { 0, &Ia_Invalid }, /* 83 */ { 0, &Ia_Invalid }, /* 84 */ { 0, &Ia_Invalid }, /* 85 */ { 0, &Ia_vpmacssww_Vdq_Hdq_Wdq_VIb }, /* 86 */ { 0, &Ia_vpmacsswd_Vdq_Hdq_Wdq_VIb }, /* 87 */ { 0, &Ia_vpmacssdql_Vdq_Hdq_Wdq_VIb }, /* 88 */ { 0, &Ia_Invalid }, /* 89 */ { 0, &Ia_Invalid }, /* 8A */ { 0, &Ia_Invalid }, /* 8B */ { 0, &Ia_Invalid }, /* 8C */ { 0, &Ia_Invalid }, /* 8D */ { 0, &Ia_Invalid }, /* 8E */ { 0, &Ia_vpmacssdd_Vdq_Hdq_Wdq_VIb }, /* 8F */ { 0, &Ia_vpmacssdqh_Vdq_Hdq_Wdq_VIb }, /* 90 */ { 0, &Ia_Invalid }, /* 91 */ { 0, &Ia_Invalid }, /* 92 */ { 0, &Ia_Invalid }, /* 93 */ { 0, &Ia_Invalid }, /* 94 */ { 0, &Ia_Invalid }, /* 95 */ { 0, &Ia_vpmacsww_Vdq_Hdq_Wdq_VIb }, /* 96 */ { 0, &Ia_vpmacswd_Vdq_Hdq_Wdq_VIb }, /* 97 */ { 0, &Ia_vpmacsdql_Vdq_Hdq_Wdq_VIb }, /* 98 */ { 0, &Ia_Invalid }, /* 99 */ { 0, &Ia_Invalid }, /* 9A */ { 0, &Ia_Invalid }, /* 9B */ { 0, &Ia_Invalid }, /* 9C */ { 0, &Ia_Invalid }, /* 9D */ { 0, &Ia_Invalid }, /* 9E */ { 0, &Ia_vpmacsdd_Vdq_Hdq_Wdq_VIb }, /* 9F */ { 0, &Ia_vpmacsdqh_Vdq_Hdq_Wdq_VIb }, /* A0 */ { 0, &Ia_Invalid }, /* A1 */ { 0, &Ia_Invalid }, /* A2 */ { GRPVEXW(xop8_a2) }, /* A3 */ { GRPVEXW(xop8_a3) }, /* A4 */ { 0, &Ia_Invalid }, /* A5 */ { 0, &Ia_Invalid }, /* A6 */ { 0, &Ia_vpmadcsswd_Vdq_Hdq_Wdq_VIb }, /* A7 */ { 0, &Ia_Invalid }, /* A8 */ { 0, &Ia_Invalid }, /* A9 */ { 0, &Ia_Invalid }, /* AA */ { 0, &Ia_Invalid }, /* AB */ { 0, &Ia_Invalid }, /* AC */ { 0, &Ia_Invalid }, /* AD */ { 0, &Ia_Invalid }, /* AE */ { 0, &Ia_Invalid }, /* AF */ { 0, &Ia_Invalid }, /* B0 */ { 0, &Ia_Invalid }, /* B1 */ { 0, &Ia_Invalid }, /* B2 */ { 0, &Ia_Invalid }, /* B3 */ { 0, &Ia_Invalid }, /* B4 */ { 0, &Ia_Invalid }, /* B5 */ { 0, &Ia_Invalid }, /* B6 */ { 0, &Ia_vpmadcswd_Vdq_Hdq_Wdq_VIb }, /* B7 */ { 0, &Ia_Invalid }, /* B8 */ { 0, &Ia_Invalid }, /* B9 */ { 0, &Ia_Invalid }, /* BA */ { 0, &Ia_Invalid }, /* BB */ { 0, &Ia_Invalid }, /* BC */ { 0, &Ia_Invalid }, /* BD */ { 0, &Ia_Invalid }, /* BE */ { 0, &Ia_Invalid }, /* BF */ { 0, &Ia_Invalid }, /* C0 */ { 0, &Ia_vprotb_Vdq_Wdq_Ib }, /* C1 */ { 0, &Ia_vprotw_Vdq_Wdq_Ib }, /* C2 */ { 0, &Ia_vprotd_Vdq_Wdq_Ib }, /* C3 */ { 0, &Ia_vprotq_Vdq_Wdq_Ib }, /* C4 */ { 0, &Ia_Invalid }, /* C5 */ { 0, &Ia_Invalid }, /* C6 */ { 0, &Ia_Invalid }, /* C7 */ { 0, &Ia_Invalid }, /* C8 */ { 0, &Ia_Invalid }, /* C9 */ { 0, &Ia_Invalid }, /* CA */ { 0, &Ia_Invalid }, /* CB */ { 0, &Ia_Invalid }, /* CC */ { 0, &Ia_vpcomb_Vdq_Hdq_Wdq_Ib }, /* CD */ { 0, &Ia_vpcomw_Vdq_Hdq_Wdq_Ib }, /* CE */ { 0, &Ia_vpcomd_Vdq_Hdq_Wdq_Ib }, /* CF */ { 0, &Ia_vpcomq_Vdq_Hdq_Wdq_Ib }, /* D0 */ { 0, &Ia_Invalid }, /* D1 */ { 0, &Ia_Invalid }, /* D2 */ { 0, &Ia_Invalid }, /* D3 */ { 0, &Ia_Invalid }, /* D4 */ { 0, &Ia_Invalid }, /* D5 */ { 0, &Ia_Invalid }, /* D6 */ { 0, &Ia_Invalid }, /* D7 */ { 0, &Ia_Invalid }, /* D8 */ { 0, &Ia_Invalid }, /* D9 */ { 0, &Ia_Invalid }, /* DA */ { 0, &Ia_Invalid }, /* DB */ { 0, &Ia_Invalid }, /* DC */ { 0, &Ia_Invalid }, /* DD */ { 0, &Ia_Invalid }, /* DE */ { 0, &Ia_Invalid }, /* DF */ { 0, &Ia_Invalid }, /* E0 */ { 0, &Ia_Invalid }, /* E1 */ { 0, &Ia_Invalid }, /* E2 */ { 0, &Ia_Invalid }, /* E3 */ { 0, &Ia_Invalid }, /* E4 */ { 0, &Ia_Invalid }, /* E5 */ { 0, &Ia_Invalid }, /* E6 */ { 0, &Ia_Invalid }, /* E7 */ { 0, &Ia_Invalid }, /* E8 */ { 0, &Ia_Invalid }, /* E9 */ { 0, &Ia_Invalid }, /* EA */ { 0, &Ia_Invalid }, /* EB */ { 0, &Ia_Invalid }, /* EC */ { 0, &Ia_vpcomub_Vdq_Hdq_Wdq_Ib }, /* ED */ { 0, &Ia_vpcomuw_Vdq_Hdq_Wdq_Ib }, /* EE */ { 0, &Ia_vpcomud_Vdq_Hdq_Wdq_Ib }, /* EF */ { 0, &Ia_vpcomuq_Vdq_Hdq_Wdq_Ib }, /* F0 */ { 0, &Ia_Invalid }, /* F1 */ { 0, &Ia_Invalid }, /* F2 */ { 0, &Ia_Invalid }, /* F3 */ { 0, &Ia_Invalid }, /* F4 */ { 0, &Ia_Invalid }, /* F5 */ { 0, &Ia_Invalid }, /* F6 */ { 0, &Ia_Invalid }, /* F7 */ { 0, &Ia_Invalid }, /* F8 */ { 0, &Ia_Invalid }, /* F9 */ { 0, &Ia_Invalid }, /* FA */ { 0, &Ia_Invalid }, /* FB */ { 0, &Ia_Invalid }, /* FC */ { 0, &Ia_Invalid }, /* FD */ { 0, &Ia_Invalid }, /* FE */ { 0, &Ia_Invalid }, /* FF */ { 0, &Ia_Invalid }, // 256 entries for XOP map 0x9 opcodes /* 00 */ { 0, &Ia_Invalid }, /* 01 */ { 0, &Ia_Invalid }, /* 02 */ { 0, &Ia_Invalid }, /* 03 */ { 0, &Ia_Invalid }, /* 04 */ { 0, &Ia_Invalid }, /* 05 */ { 0, &Ia_Invalid }, /* 06 */ { 0, &Ia_Invalid }, /* 07 */ { 0, &Ia_Invalid }, /* 08 */ { 0, &Ia_Invalid }, /* 09 */ { 0, &Ia_Invalid }, /* 0A */ { 0, &Ia_Invalid }, /* 0B */ { 0, &Ia_Invalid }, /* 0C */ { 0, &Ia_Invalid }, /* 0D */ { 0, &Ia_Invalid }, /* 0E */ { 0, &Ia_Invalid }, /* 0F */ { 0, &Ia_Invalid }, /* 10 */ { 0, &Ia_Invalid }, /* 11 */ { 0, &Ia_Invalid }, /* 12 */ { 0, &Ia_Invalid }, /* 13 */ { 0, &Ia_Invalid }, /* 14 */ { 0, &Ia_Invalid }, /* 15 */ { 0, &Ia_Invalid }, /* 16 */ { 0, &Ia_Invalid }, /* 17 */ { 0, &Ia_Invalid }, /* 18 */ { 0, &Ia_Invalid }, /* 19 */ { 0, &Ia_Invalid }, /* 1A */ { 0, &Ia_Invalid }, /* 1B */ { 0, &Ia_Invalid }, /* 1C */ { 0, &Ia_Invalid }, /* 1D */ { 0, &Ia_Invalid }, /* 1E */ { 0, &Ia_Invalid }, /* 1F */ { 0, &Ia_Invalid }, /* 20 */ { 0, &Ia_Invalid }, /* 21 */ { 0, &Ia_Invalid }, /* 22 */ { 0, &Ia_Invalid }, /* 23 */ { 0, &Ia_Invalid }, /* 24 */ { 0, &Ia_Invalid }, /* 25 */ { 0, &Ia_Invalid }, /* 26 */ { 0, &Ia_Invalid }, /* 27 */ { 0, &Ia_Invalid }, /* 28 */ { 0, &Ia_Invalid }, /* 29 */ { 0, &Ia_Invalid }, /* 2A */ { 0, &Ia_Invalid }, /* 2B */ { 0, &Ia_Invalid }, /* 2C */ { 0, &Ia_Invalid }, /* 2D */ { 0, &Ia_Invalid }, /* 2E */ { 0, &Ia_Invalid }, /* 2F */ { 0, &Ia_Invalid }, /* 30 */ { 0, &Ia_Invalid }, /* 31 */ { 0, &Ia_Invalid }, /* 32 */ { 0, &Ia_Invalid }, /* 33 */ { 0, &Ia_Invalid }, /* 34 */ { 0, &Ia_Invalid }, /* 35 */ { 0, &Ia_Invalid }, /* 36 */ { 0, &Ia_Invalid }, /* 37 */ { 0, &Ia_Invalid }, /* 38 */ { 0, &Ia_Invalid }, /* 39 */ { 0, &Ia_Invalid }, /* 3A */ { 0, &Ia_Invalid }, /* 3B */ { 0, &Ia_Invalid }, /* 3C */ { 0, &Ia_Invalid }, /* 3D */ { 0, &Ia_Invalid }, /* 3E */ { 0, &Ia_Invalid }, /* 3F */ { 0, &Ia_Invalid }, /* 40 */ { 0, &Ia_Invalid }, /* 41 */ { 0, &Ia_Invalid }, /* 42 */ { 0, &Ia_Invalid }, /* 43 */ { 0, &Ia_Invalid }, /* 44 */ { 0, &Ia_Invalid }, /* 45 */ { 0, &Ia_Invalid }, /* 46 */ { 0, &Ia_Invalid }, /* 47 */ { 0, &Ia_Invalid }, /* 48 */ { 0, &Ia_Invalid }, /* 49 */ { 0, &Ia_Invalid }, /* 4A */ { 0, &Ia_Invalid }, /* 4B */ { 0, &Ia_Invalid }, /* 4C */ { 0, &Ia_Invalid }, /* 4D */ { 0, &Ia_Invalid }, /* 4E */ { 0, &Ia_Invalid }, /* 4F */ { 0, &Ia_Invalid }, /* 50 */ { 0, &Ia_Invalid }, /* 51 */ { 0, &Ia_Invalid }, /* 52 */ { 0, &Ia_Invalid }, /* 53 */ { 0, &Ia_Invalid }, /* 54 */ { 0, &Ia_Invalid }, /* 55 */ { 0, &Ia_Invalid }, /* 56 */ { 0, &Ia_Invalid }, /* 57 */ { 0, &Ia_Invalid }, /* 58 */ { 0, &Ia_Invalid }, /* 59 */ { 0, &Ia_Invalid }, /* 5A */ { 0, &Ia_Invalid }, /* 5B */ { 0, &Ia_Invalid }, /* 5C */ { 0, &Ia_Invalid }, /* 5D */ { 0, &Ia_Invalid }, /* 5E */ { 0, &Ia_Invalid }, /* 5F */ { 0, &Ia_Invalid }, /* 60 */ { 0, &Ia_Invalid }, /* 61 */ { 0, &Ia_Invalid }, /* 62 */ { 0, &Ia_Invalid }, /* 63 */ { 0, &Ia_Invalid }, /* 64 */ { 0, &Ia_Invalid }, /* 65 */ { 0, &Ia_Invalid }, /* 66 */ { 0, &Ia_Invalid }, /* 67 */ { 0, &Ia_Invalid }, /* 68 */ { 0, &Ia_Invalid }, /* 69 */ { 0, &Ia_Invalid }, /* 6A */ { 0, &Ia_Invalid }, /* 6B */ { 0, &Ia_Invalid }, /* 6C */ { 0, &Ia_Invalid }, /* 6D */ { 0, &Ia_Invalid }, /* 6E */ { 0, &Ia_Invalid }, /* 6F */ { 0, &Ia_Invalid }, /* 70 */ { 0, &Ia_Invalid }, /* 71 */ { 0, &Ia_Invalid }, /* 72 */ { 0, &Ia_Invalid }, /* 73 */ { 0, &Ia_Invalid }, /* 74 */ { 0, &Ia_Invalid }, /* 75 */ { 0, &Ia_Invalid }, /* 76 */ { 0, &Ia_Invalid }, /* 77 */ { 0, &Ia_Invalid }, /* 78 */ { 0, &Ia_Invalid }, /* 79 */ { 0, &Ia_Invalid }, /* 7A */ { 0, &Ia_Invalid }, /* 7B */ { 0, &Ia_Invalid }, /* 7C */ { 0, &Ia_Invalid }, /* 7D */ { 0, &Ia_Invalid }, /* 7E */ { 0, &Ia_Invalid }, /* 7F */ { 0, &Ia_Invalid }, /* 80 */ { 0, &Ia_frczps_Vps_Wps }, /* 81 */ { 0, &Ia_frczpd_Vpd_Wpd }, /* 82 */ { 0, &Ia_frczss_Vss_Wss }, /* 83 */ { 0, &Ia_frczsd_Vsd_Wsd }, /* 84 */ { 0, &Ia_Invalid }, /* 85 */ { 0, &Ia_Invalid }, /* 86 */ { 0, &Ia_Invalid }, /* 87 */ { 0, &Ia_Invalid }, /* 88 */ { GRPVEXW(xop9_88) }, /* 89 */ { GRPVEXW(xop9_89) }, /* 8A */ { GRPVEXW(xop9_8a) }, /* 8B */ { GRPVEXW(xop9_8b) }, /* 8C */ { 0, &Ia_Invalid }, /* 8D */ { 0, &Ia_Invalid }, /* 8E */ { 0, &Ia_Invalid }, /* 8F */ { 0, &Ia_Invalid }, /* 90 */ { GRPVEXW(xop9_90) }, /* 91 */ { GRPVEXW(xop9_91) }, /* 92 */ { GRPVEXW(xop9_92) }, /* 93 */ { GRPVEXW(xop9_93) }, /* 94 */ { GRPVEXW(xop9_94) }, /* 95 */ { GRPVEXW(xop9_95) }, /* 96 */ { GRPVEXW(xop9_96) }, /* 97 */ { GRPVEXW(xop9_97) }, /* 98 */ { 0, &Ia_Invalid }, /* 99 */ { 0, &Ia_Invalid }, /* 9A */ { 0, &Ia_Invalid }, /* 9B */ { 0, &Ia_Invalid }, /* 9C */ { 0, &Ia_Invalid }, /* 9D */ { 0, &Ia_Invalid }, /* 9E */ { 0, &Ia_Invalid }, /* 9F */ { 0, &Ia_Invalid }, /* A0 */ { 0, &Ia_Invalid }, /* A1 */ { 0, &Ia_Invalid }, /* A2 */ { 0, &Ia_Invalid }, /* A3 */ { 0, &Ia_Invalid }, /* A4 */ { 0, &Ia_Invalid }, /* A5 */ { 0, &Ia_Invalid }, /* A6 */ { 0, &Ia_Invalid }, /* A7 */ { 0, &Ia_Invalid }, /* A8 */ { 0, &Ia_Invalid }, /* A9 */ { 0, &Ia_Invalid }, /* AA */ { 0, &Ia_Invalid }, /* AB */ { 0, &Ia_Invalid }, /* AC */ { 0, &Ia_Invalid }, /* AD */ { 0, &Ia_Invalid }, /* AE */ { 0, &Ia_Invalid }, /* AF */ { 0, &Ia_Invalid }, /* B0 */ { 0, &Ia_Invalid }, /* B1 */ { 0, &Ia_Invalid }, /* B2 */ { 0, &Ia_Invalid }, /* B3 */ { 0, &Ia_Invalid }, /* B4 */ { 0, &Ia_Invalid }, /* B5 */ { 0, &Ia_Invalid }, /* B6 */ { 0, &Ia_Invalid }, /* B7 */ { 0, &Ia_Invalid }, /* B8 */ { 0, &Ia_Invalid }, /* B9 */ { 0, &Ia_Invalid }, /* BA */ { 0, &Ia_Invalid }, /* BB */ { 0, &Ia_Invalid }, /* BC */ { 0, &Ia_Invalid }, /* BD */ { 0, &Ia_Invalid }, /* BE */ { 0, &Ia_Invalid }, /* BF */ { 0, &Ia_Invalid }, /* C0 */ { 0, &Ia_Invalid }, /* C1 */ { 0, &Ia_vphaddbw_Vdq_Wdq }, /* C2 */ { 0, &Ia_vphaddbd_Vdq_Wdq }, /* C3 */ { 0, &Ia_vphaddbq_Vdq_Wdq }, /* C4 */ { 0, &Ia_Invalid }, /* C5 */ { 0, &Ia_Invalid }, /* C6 */ { 0, &Ia_vphaddwd_Vdq_Wdq }, /* C7 */ { 0, &Ia_vphaddwq_Vdq_Wdq }, /* C8 */ { 0, &Ia_Invalid }, /* C9 */ { 0, &Ia_Invalid }, /* CA */ { 0, &Ia_Invalid }, /* CB */ { 0, &Ia_vphadddq_Vdq_Wdq }, /* CC */ { 0, &Ia_Invalid }, /* CD */ { 0, &Ia_Invalid }, /* CE */ { 0, &Ia_Invalid }, /* CF */ { 0, &Ia_Invalid }, /* D0 */ { 0, &Ia_Invalid }, /* D1 */ { 0, &Ia_vphaddubw_Vdq_Wdq }, /* D2 */ { 0, &Ia_vphaddubd_Vdq_Wdq }, /* D3 */ { 0, &Ia_vphaddubq_Vdq_Wdq }, /* D4 */ { 0, &Ia_Invalid }, /* D5 */ { 0, &Ia_Invalid }, /* D6 */ { 0, &Ia_vphadduwd_Vdq_Wdq }, /* D7 */ { 0, &Ia_vphadduwq_Vdq_Wdq }, /* D8 */ { 0, &Ia_Invalid }, /* D9 */ { 0, &Ia_Invalid }, /* DA */ { 0, &Ia_Invalid }, /* DB */ { 0, &Ia_vphaddudq_Vdq_Wdq }, /* DC */ { 0, &Ia_Invalid }, /* DD */ { 0, &Ia_Invalid }, /* DE */ { 0, &Ia_Invalid }, /* DF */ { 0, &Ia_Invalid }, /* E0 */ { 0, &Ia_Invalid }, /* E1 */ { 0, &Ia_vphsubbw_Vdq_Wdq }, /* E2 */ { 0, &Ia_vphsubwd_Vdq_Wdq }, /* E3 */ { 0, &Ia_vphsubdq_Vdq_Wdq }, /* E4 */ { 0, &Ia_Invalid }, /* E5 */ { 0, &Ia_Invalid }, /* E6 */ { 0, &Ia_Invalid }, /* E7 */ { 0, &Ia_Invalid }, /* E8 */ { 0, &Ia_Invalid }, /* E9 */ { 0, &Ia_Invalid }, /* EA */ { 0, &Ia_Invalid }, /* EB */ { 0, &Ia_Invalid }, /* EC */ { 0, &Ia_Invalid }, /* ED */ { 0, &Ia_Invalid }, /* EE */ { 0, &Ia_Invalid }, /* EF */ { 0, &Ia_Invalid }, /* F0 */ { 0, &Ia_Invalid }, /* F1 */ { 0, &Ia_Invalid }, /* F2 */ { 0, &Ia_Invalid }, /* F3 */ { 0, &Ia_Invalid }, /* F4 */ { 0, &Ia_Invalid }, /* F5 */ { 0, &Ia_Invalid }, /* F6 */ { 0, &Ia_Invalid }, /* F7 */ { 0, &Ia_Invalid }, /* F8 */ { 0, &Ia_Invalid }, /* F9 */ { 0, &Ia_Invalid }, /* FA */ { 0, &Ia_Invalid }, /* FB */ { 0, &Ia_Invalid }, /* FC */ { 0, &Ia_Invalid }, /* FD */ { 0, &Ia_Invalid }, /* FE */ { 0, &Ia_Invalid }, /* FF */ { 0, &Ia_Invalid }, // 256 entries for XOP map 0xA opcodes /* 00 */ { 0, &Ia_Invalid }, /* 01 */ { 0, &Ia_Invalid }, /* 02 */ { 0, &Ia_Invalid }, /* 03 */ { 0, &Ia_Invalid }, /* 04 */ { 0, &Ia_Invalid }, /* 05 */ { 0, &Ia_Invalid }, /* 06 */ { 0, &Ia_Invalid }, /* 07 */ { 0, &Ia_Invalid }, /* 08 */ { 0, &Ia_Invalid }, /* 09 */ { 0, &Ia_Invalid }, /* 0A */ { 0, &Ia_Invalid }, /* 0B */ { 0, &Ia_Invalid }, /* 0C */ { 0, &Ia_Invalid }, /* 0D */ { 0, &Ia_Invalid }, /* 0E */ { 0, &Ia_Invalid }, /* 0F */ { 0, &Ia_Invalid }, /* 10 */ { 0, &Ia_bextr_Gy_Ey_Id }, /* 11 */ { 0, &Ia_Invalid }, /* 12 */ { 0, &Ia_Invalid }, /* 13 */ { 0, &Ia_Invalid }, /* 14 */ { 0, &Ia_Invalid }, /* 15 */ { 0, &Ia_Invalid }, /* 16 */ { 0, &Ia_Invalid }, /* 17 */ { 0, &Ia_Invalid }, /* 18 */ { 0, &Ia_Invalid }, /* 19 */ { 0, &Ia_Invalid }, /* 1A */ { 0, &Ia_Invalid }, /* 1B */ { 0, &Ia_Invalid }, /* 1C */ { 0, &Ia_Invalid }, /* 1D */ { 0, &Ia_Invalid }, /* 1E */ { 0, &Ia_Invalid }, /* 1F */ { 0, &Ia_Invalid }, /* 20 */ { 0, &Ia_Invalid }, /* 21 */ { 0, &Ia_Invalid }, /* 22 */ { 0, &Ia_Invalid }, /* 23 */ { 0, &Ia_Invalid }, /* 24 */ { 0, &Ia_Invalid }, /* 25 */ { 0, &Ia_Invalid }, /* 26 */ { 0, &Ia_Invalid }, /* 27 */ { 0, &Ia_Invalid }, /* 28 */ { 0, &Ia_Invalid }, /* 29 */ { 0, &Ia_Invalid }, /* 2A */ { 0, &Ia_Invalid }, /* 2B */ { 0, &Ia_Invalid }, /* 2C */ { 0, &Ia_Invalid }, /* 2D */ { 0, &Ia_Invalid }, /* 2E */ { 0, &Ia_Invalid }, /* 2F */ { 0, &Ia_Invalid }, /* 30 */ { 0, &Ia_Invalid }, /* 31 */ { 0, &Ia_Invalid }, /* 32 */ { 0, &Ia_Invalid }, /* 33 */ { 0, &Ia_Invalid }, /* 34 */ { 0, &Ia_Invalid }, /* 35 */ { 0, &Ia_Invalid }, /* 36 */ { 0, &Ia_Invalid }, /* 37 */ { 0, &Ia_Invalid }, /* 38 */ { 0, &Ia_Invalid }, /* 39 */ { 0, &Ia_Invalid }, /* 3A */ { 0, &Ia_Invalid }, /* 3B */ { 0, &Ia_Invalid }, /* 3C */ { 0, &Ia_Invalid }, /* 3D */ { 0, &Ia_Invalid }, /* 3E */ { 0, &Ia_Invalid }, /* 3F */ { 0, &Ia_Invalid }, /* 40 */ { 0, &Ia_Invalid }, /* 41 */ { 0, &Ia_Invalid }, /* 42 */ { 0, &Ia_Invalid }, /* 43 */ { 0, &Ia_Invalid }, /* 44 */ { 0, &Ia_Invalid }, /* 45 */ { 0, &Ia_Invalid }, /* 46 */ { 0, &Ia_Invalid }, /* 47 */ { 0, &Ia_Invalid }, /* 48 */ { 0, &Ia_Invalid }, /* 49 */ { 0, &Ia_Invalid }, /* 4A */ { 0, &Ia_Invalid }, /* 4B */ { 0, &Ia_Invalid }, /* 4C */ { 0, &Ia_Invalid }, /* 4D */ { 0, &Ia_Invalid }, /* 4E */ { 0, &Ia_Invalid }, /* 4F */ { 0, &Ia_Invalid }, /* 50 */ { 0, &Ia_Invalid }, /* 51 */ { 0, &Ia_Invalid }, /* 52 */ { 0, &Ia_Invalid }, /* 53 */ { 0, &Ia_Invalid }, /* 54 */ { 0, &Ia_Invalid }, /* 55 */ { 0, &Ia_Invalid }, /* 56 */ { 0, &Ia_Invalid }, /* 57 */ { 0, &Ia_Invalid }, /* 58 */ { 0, &Ia_Invalid }, /* 59 */ { 0, &Ia_Invalid }, /* 5A */ { 0, &Ia_Invalid }, /* 5B */ { 0, &Ia_Invalid }, /* 5C */ { 0, &Ia_Invalid }, /* 5D */ { 0, &Ia_Invalid }, /* 5E */ { 0, &Ia_Invalid }, /* 5F */ { 0, &Ia_Invalid }, /* 60 */ { 0, &Ia_Invalid }, /* 61 */ { 0, &Ia_Invalid }, /* 62 */ { 0, &Ia_Invalid }, /* 63 */ { 0, &Ia_Invalid }, /* 64 */ { 0, &Ia_Invalid }, /* 65 */ { 0, &Ia_Invalid }, /* 66 */ { 0, &Ia_Invalid }, /* 67 */ { 0, &Ia_Invalid }, /* 68 */ { 0, &Ia_Invalid }, /* 69 */ { 0, &Ia_Invalid }, /* 6A */ { 0, &Ia_Invalid }, /* 6B */ { 0, &Ia_Invalid }, /* 6C */ { 0, &Ia_Invalid }, /* 6D */ { 0, &Ia_Invalid }, /* 6E */ { 0, &Ia_Invalid }, /* 6F */ { 0, &Ia_Invalid }, /* 70 */ { 0, &Ia_Invalid }, /* 71 */ { 0, &Ia_Invalid }, /* 72 */ { 0, &Ia_Invalid }, /* 73 */ { 0, &Ia_Invalid }, /* 74 */ { 0, &Ia_Invalid }, /* 75 */ { 0, &Ia_Invalid }, /* 76 */ { 0, &Ia_Invalid }, /* 77 */ { 0, &Ia_Invalid }, /* 78 */ { 0, &Ia_Invalid }, /* 79 */ { 0, &Ia_Invalid }, /* 7A */ { 0, &Ia_Invalid }, /* 7B */ { 0, &Ia_Invalid }, /* 7C */ { 0, &Ia_Invalid }, /* 7D */ { 0, &Ia_Invalid }, /* 7E */ { 0, &Ia_Invalid }, /* 7F */ { 0, &Ia_Invalid }, /* 80 */ { 0, &Ia_Invalid }, /* 81 */ { 0, &Ia_Invalid }, /* 82 */ { 0, &Ia_Invalid }, /* 83 */ { 0, &Ia_Invalid }, /* 84 */ { 0, &Ia_Invalid }, /* 85 */ { 0, &Ia_Invalid }, /* 86 */ { 0, &Ia_Invalid }, /* 87 */ { 0, &Ia_Invalid }, /* 88 */ { 0, &Ia_Invalid }, /* 89 */ { 0, &Ia_Invalid }, /* 8A */ { 0, &Ia_Invalid }, /* 8B */ { 0, &Ia_Invalid }, /* 8C */ { 0, &Ia_Invalid }, /* 8D */ { 0, &Ia_Invalid }, /* 8E */ { 0, &Ia_Invalid }, /* 8F */ { 0, &Ia_Invalid }, /* 90 */ { 0, &Ia_Invalid }, /* 91 */ { 0, &Ia_Invalid }, /* 92 */ { 0, &Ia_Invalid }, /* 93 */ { 0, &Ia_Invalid }, /* 94 */ { 0, &Ia_Invalid }, /* 95 */ { 0, &Ia_Invalid }, /* 96 */ { 0, &Ia_Invalid }, /* 97 */ { 0, &Ia_Invalid }, /* 98 */ { 0, &Ia_Invalid }, /* 99 */ { 0, &Ia_Invalid }, /* 9A */ { 0, &Ia_Invalid }, /* 9B */ { 0, &Ia_Invalid }, /* 9C */ { 0, &Ia_Invalid }, /* 9D */ { 0, &Ia_Invalid }, /* 9E */ { 0, &Ia_Invalid }, /* 9F */ { 0, &Ia_Invalid }, /* A0 */ { 0, &Ia_Invalid }, /* A1 */ { 0, &Ia_Invalid }, /* A2 */ { 0, &Ia_Invalid }, /* A3 */ { 0, &Ia_Invalid }, /* A4 */ { 0, &Ia_Invalid }, /* A5 */ { 0, &Ia_Invalid }, /* A6 */ { 0, &Ia_Invalid }, /* A7 */ { 0, &Ia_Invalid }, /* A8 */ { 0, &Ia_Invalid }, /* A9 */ { 0, &Ia_Invalid }, /* AA */ { 0, &Ia_Invalid }, /* AB */ { 0, &Ia_Invalid }, /* AC */ { 0, &Ia_Invalid }, /* AD */ { 0, &Ia_Invalid }, /* AE */ { 0, &Ia_Invalid }, /* AF */ { 0, &Ia_Invalid }, /* B0 */ { 0, &Ia_Invalid }, /* B1 */ { 0, &Ia_Invalid }, /* B2 */ { 0, &Ia_Invalid }, /* B3 */ { 0, &Ia_Invalid }, /* B4 */ { 0, &Ia_Invalid }, /* B5 */ { 0, &Ia_Invalid }, /* B6 */ { 0, &Ia_Invalid }, /* B7 */ { 0, &Ia_Invalid }, /* B8 */ { 0, &Ia_Invalid }, /* B9 */ { 0, &Ia_Invalid }, /* BA */ { 0, &Ia_Invalid }, /* BB */ { 0, &Ia_Invalid }, /* BC */ { 0, &Ia_Invalid }, /* BD */ { 0, &Ia_Invalid }, /* BE */ { 0, &Ia_Invalid }, /* BF */ { 0, &Ia_Invalid }, /* C0 */ { 0, &Ia_Invalid }, /* C1 */ { 0, &Ia_Invalid }, /* C2 */ { 0, &Ia_Invalid }, /* C3 */ { 0, &Ia_Invalid }, /* C4 */ { 0, &Ia_Invalid }, /* C5 */ { 0, &Ia_Invalid }, /* C6 */ { 0, &Ia_Invalid }, /* C7 */ { 0, &Ia_Invalid }, /* C8 */ { 0, &Ia_Invalid }, /* C9 */ { 0, &Ia_Invalid }, /* CA */ { 0, &Ia_Invalid }, /* CB */ { 0, &Ia_Invalid }, /* CC */ { 0, &Ia_Invalid }, /* CD */ { 0, &Ia_Invalid }, /* CE */ { 0, &Ia_Invalid }, /* CF */ { 0, &Ia_Invalid }, /* D0 */ { 0, &Ia_Invalid }, /* D1 */ { 0, &Ia_Invalid }, /* D2 */ { 0, &Ia_Invalid }, /* D3 */ { 0, &Ia_Invalid }, /* D4 */ { 0, &Ia_Invalid }, /* D5 */ { 0, &Ia_Invalid }, /* D6 */ { 0, &Ia_Invalid }, /* D7 */ { 0, &Ia_Invalid }, /* D8 */ { 0, &Ia_Invalid }, /* D9 */ { 0, &Ia_Invalid }, /* DA */ { 0, &Ia_Invalid }, /* DB */ { 0, &Ia_Invalid }, /* DC */ { 0, &Ia_Invalid }, /* DD */ { 0, &Ia_Invalid }, /* DE */ { 0, &Ia_Invalid }, /* DF */ { 0, &Ia_Invalid }, /* E0 */ { 0, &Ia_Invalid }, /* E1 */ { 0, &Ia_Invalid }, /* E2 */ { 0, &Ia_Invalid }, /* E3 */ { 0, &Ia_Invalid }, /* E4 */ { 0, &Ia_Invalid }, /* E5 */ { 0, &Ia_Invalid }, /* E6 */ { 0, &Ia_Invalid }, /* E7 */ { 0, &Ia_Invalid }, /* E8 */ { 0, &Ia_Invalid }, /* E9 */ { 0, &Ia_Invalid }, /* EA */ { 0, &Ia_Invalid }, /* EB */ { 0, &Ia_Invalid }, /* EC */ { 0, &Ia_Invalid }, /* ED */ { 0, &Ia_Invalid }, /* EE */ { 0, &Ia_Invalid }, /* EF */ { 0, &Ia_Invalid }, /* F0 */ { 0, &Ia_Invalid }, /* F1 */ { 0, &Ia_Invalid }, /* F2 */ { 0, &Ia_Invalid }, /* F3 */ { 0, &Ia_Invalid }, /* F4 */ { 0, &Ia_Invalid }, /* F5 */ { 0, &Ia_Invalid }, /* F6 */ { 0, &Ia_Invalid }, /* F7 */ { 0, &Ia_Invalid }, /* F8 */ { 0, &Ia_Invalid }, /* F9 */ { 0, &Ia_Invalid }, /* FA */ { 0, &Ia_Invalid }, /* FB */ { 0, &Ia_Invalid }, /* FC */ { 0, &Ia_Invalid }, /* FD */ { 0, &Ia_Invalid }, /* FE */ { 0, &Ia_Invalid }, /* FF */ { 0, &Ia_Invalid } };