///////////////////////////////////////////////////////////////////////// // $Id$ ///////////////////////////////////////////////////////////////////////// // // Copyright (c) 2017 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 B 02110-1301 USA // ///////////////////////////////////////////////////////////////////////// #ifndef BX_FETCHDECODE_OPMAP_H #define BX_FETCHDECODE_OPMAP_H // opcode 00 static const BxOpcodeInfo_t BxOpcodeTable00[] = { /* 00 /w */ { 0, BX_IA_ADD_EbGb }, /* 00 /d */ { 0, BX_IA_ADD_EbGb }, #if BX_SUPPORT_X86_64 /* 00 /q */ { 0, BX_IA_ADD_EbGb }, #endif }; // opcode 01 static const BxOpcodeInfo_t BxOpcodeTable01[] = { /* 01 /w */ { 0, BX_IA_ADD_EwGw }, /* 01 /d */ { 0, BX_IA_ADD_EdGd }, #if BX_SUPPORT_X86_64 /* 01 /q */ { 0, BX_IA_ADD_EqGq }, #endif }; // opcode 02 static const BxOpcodeInfo_t BxOpcodeTable02[] = { /* 02 /w */ { 0, BX_IA_ADD_GbEb }, /* 02 /d */ { 0, BX_IA_ADD_GbEb }, #if BX_SUPPORT_X86_64 /* 02 /q */ { 0, BX_IA_ADD_GbEb }, #endif }; // opcode 03 static const BxOpcodeInfo_t BxOpcodeTable03[] = { /* 03 /w */ { 0, BX_IA_ADD_GwEw }, /* 03 /d */ { 0, BX_IA_ADD_GdEd }, #if BX_SUPPORT_X86_64 /* 03 /q */ { 0, BX_IA_ADD_GqEq }, #endif }; // opcode 04 static const BxOpcodeInfo_t BxOpcodeTable04[] = { /* 04 /w */ { BxImmediate_Ib, BX_IA_ADD_ALIb }, /* 04 /d */ { BxImmediate_Ib, BX_IA_ADD_ALIb }, #if BX_SUPPORT_X86_64 /* 04 /q */ { BxImmediate_Ib, BX_IA_ADD_ALIb }, #endif }; // opcode 05 static const BxOpcodeInfo_t BxOpcodeTable05[] = { /* 05 /w */ { BxImmediate_Iw, BX_IA_ADD_AXIw }, /* 05 /d */ { BxImmediate_Id, BX_IA_ADD_EAXId }, #if BX_SUPPORT_X86_64 /* 05 /q */ { BxImmediate_Id, BX_IA_ADD_RAXId }, #endif }; // opcode 06 static const BxOpcodeInfo_t BxOpcodeTable06_32[] = { /* 06 /w */ { 0, BX_IA_PUSH_Op16_Sw }, /* 06 /d */ { 0, BX_IA_PUSH_Op32_Sw }, }; // opcode 07 static const BxOpcodeInfo_t BxOpcodeTable07_32[] = { /* 07 /w */ { 0, BX_IA_POP_Op16_Sw }, /* 07 /d */ { 0, BX_IA_POP_Op32_Sw }, }; // opcode 08 static const BxOpcodeInfo_t BxOpcodeTable08[] = { /* 08 /w */ { 0, BX_IA_OR_EbGb }, /* 08 /d */ { 0, BX_IA_OR_EbGb }, #if BX_SUPPORT_X86_64 /* 08 /q */ { 0, BX_IA_OR_EbGb }, #endif }; // opcode 09 static const BxOpcodeInfo_t BxOpcodeTable09[] = { /* 09 /w */ { 0, BX_IA_OR_EwGw }, /* 09 /d */ { 0, BX_IA_OR_EdGd }, #if BX_SUPPORT_X86_64 /* 09 /q */ { 0, BX_IA_OR_EqGq }, #endif }; // opcode 0A static const BxOpcodeInfo_t BxOpcodeTable0A[] = { /* 0A /w */ { 0, BX_IA_OR_GbEb }, /* 0A /d */ { 0, BX_IA_OR_GbEb }, #if BX_SUPPORT_X86_64 /* 0A /q */ { 0, BX_IA_OR_GbEb }, #endif }; // opcode 0B static const BxOpcodeInfo_t BxOpcodeTable0B[] = { /* 0B /w */ { 0, BX_IA_OR_GwEw }, /* 0B /d */ { 0, BX_IA_OR_GdEd }, #if BX_SUPPORT_X86_64 /* 0B /q */ { 0, BX_IA_OR_GqEq }, #endif }; // opcode 0C static const BxOpcodeInfo_t BxOpcodeTable0C[] = { /* 0C /w */ { BxImmediate_Ib, BX_IA_OR_ALIb }, /* 0C /d */ { BxImmediate_Ib, BX_IA_OR_ALIb }, #if BX_SUPPORT_X86_64 /* 0C /q */ { BxImmediate_Ib, BX_IA_OR_ALIb }, #endif }; // opcode 0D static const BxOpcodeInfo_t BxOpcodeTable0D[] = { /* 0D /w */ { BxImmediate_Iw, BX_IA_OR_AXIw }, /* 0D /d */ { BxImmediate_Id, BX_IA_OR_EAXId }, #if BX_SUPPORT_X86_64 /* 0D /q */ { BxImmediate_Id, BX_IA_OR_RAXId }, #endif }; // opcode 0E static const BxOpcodeInfo_t BxOpcodeTable0E_32[] = { /* 0E /w */ { 0, BX_IA_PUSH_Op16_Sw }, /* 0E /d */ { 0, BX_IA_PUSH_Op32_Sw }, }; // opcode 10 static const BxOpcodeInfo_t BxOpcodeTable10[] = { /* 10 /w */ { 0, BX_IA_ADC_EbGb }, /* 10 /d */ { 0, BX_IA_ADC_EbGb }, #if BX_SUPPORT_X86_64 /* 10 /q */ { 0, BX_IA_ADC_EbGb }, #endif }; // opcode 11 static const BxOpcodeInfo_t BxOpcodeTable11[] = { /* 11 /w */ { 0, BX_IA_ADC_EwGw }, /* 11 /d */ { 0, BX_IA_ADC_EdGd }, #if BX_SUPPORT_X86_64 /* 11 /q */ { 0, BX_IA_ADC_EqGq }, #endif }; // opcode 12 static const BxOpcodeInfo_t BxOpcodeTable12[] = { /* 12 /w */ { 0, BX_IA_ADC_GbEb }, /* 12 /d */ { 0, BX_IA_ADC_GbEb }, #if BX_SUPPORT_X86_64 /* 12 /q */ { 0, BX_IA_ADC_GbEb }, #endif }; // opcode 13 static const BxOpcodeInfo_t BxOpcodeTable13[] = { /* 13 /w */ { 0, BX_IA_ADC_GwEw }, /* 13 /d */ { 0, BX_IA_ADC_GdEd }, #if BX_SUPPORT_X86_64 /* 13 /q */ { 0, BX_IA_ADC_GqEq }, #endif }; // opcode 14 static const BxOpcodeInfo_t BxOpcodeTable14[] = { /* 14 /w */ { BxImmediate_Ib, BX_IA_ADC_ALIb }, /* 14 /d */ { BxImmediate_Ib, BX_IA_ADC_ALIb }, #if BX_SUPPORT_X86_64 /* 14 /q */ { BxImmediate_Ib, BX_IA_ADC_ALIb }, #endif }; // opcode 15 static const BxOpcodeInfo_t BxOpcodeTable15[] = { /* 15 /w */ { BxImmediate_Iw, BX_IA_ADC_AXIw }, /* 15 /d */ { BxImmediate_Id, BX_IA_ADC_EAXId }, #if BX_SUPPORT_X86_64 /* 15 /q */ { BxImmediate_Id, BX_IA_ADC_RAXId }, #endif }; // opcode 16 static const BxOpcodeInfo_t BxOpcodeTable16_32[] = { /* 16 /w */ { 0, BX_IA_PUSH_Op16_Sw }, /* 16 /d */ { 0, BX_IA_PUSH_Op32_Sw }, }; // opcode 17 static const BxOpcodeInfo_t BxOpcodeTable17_32[] = { /* 17 /w */ { 0, BX_IA_POP_Op16_Sw }, /* 17 /d */ { 0, BX_IA_POP_Op32_Sw }, }; // opcode 18 static const BxOpcodeInfo_t BxOpcodeTable18[] = { /* 18 /w */ { 0, BX_IA_SBB_EbGb }, /* 18 /d */ { 0, BX_IA_SBB_EbGb }, #if BX_SUPPORT_X86_64 /* 18 /q */ { 0, BX_IA_SBB_EbGb }, #endif }; // opcode 19 static const BxOpcodeInfo_t BxOpcodeTable19[] = { /* 19 /w */ { 0, BX_IA_SBB_EwGw }, /* 19 /d */ { 0, BX_IA_SBB_EdGd }, #if BX_SUPPORT_X86_64 /* 19 /q */ { 0, BX_IA_SBB_EqGq }, #endif }; // opcode 1A static const BxOpcodeInfo_t BxOpcodeTable1A[] = { /* 1A /w */ { 0, BX_IA_SBB_GbEb }, /* 1A /d */ { 0, BX_IA_SBB_GbEb }, #if BX_SUPPORT_X86_64 /* 1A /q */ { 0, BX_IA_SBB_GbEb }, #endif }; // opcode 1B static const BxOpcodeInfo_t BxOpcodeTable1B[] = { /* 1B /w */ { 0, BX_IA_SBB_GwEw }, /* 1B /d */ { 0, BX_IA_SBB_GdEd }, #if BX_SUPPORT_X86_64 /* 1B /q */ { 0, BX_IA_SBB_GqEq }, #endif }; // opcode 1C static const BxOpcodeInfo_t BxOpcodeTable1C[] = { /* 1C /w */ { BxImmediate_Ib, BX_IA_SBB_ALIb }, /* 1C /d */ { BxImmediate_Ib, BX_IA_SBB_ALIb }, #if BX_SUPPORT_X86_64 /* 1C /q */ { BxImmediate_Ib, BX_IA_SBB_ALIb }, #endif }; // opcode 1D static const BxOpcodeInfo_t BxOpcodeTable1D[] = { /* 1D /w */ { BxImmediate_Iw, BX_IA_SBB_AXIw }, /* 1D /d */ { BxImmediate_Id, BX_IA_SBB_EAXId }, #if BX_SUPPORT_X86_64 /* 1D /q */ { BxImmediate_Id, BX_IA_SBB_RAXId }, #endif }; // opcode 1E static const BxOpcodeInfo_t BxOpcodeTable1E_32[] = { /* 1E /w */ { 0, BX_IA_PUSH_Op16_Sw }, /* 1E /d */ { 0, BX_IA_PUSH_Op32_Sw }, }; // opcode 1F static const BxOpcodeInfo_t BxOpcodeTable1F_32[] = { /* 1F /w */ { 0, BX_IA_POP_Op16_Sw }, /* 1F /d */ { 0, BX_IA_POP_Op32_Sw }, }; // opcode 20 static const BxOpcodeInfo_t BxOpcodeTable20[] = { /* 20 /w */ { 0, BX_IA_AND_EbGb }, /* 20 /d */ { 0, BX_IA_AND_EbGb }, #if BX_SUPPORT_X86_64 /* 20 /q */ { 0, BX_IA_AND_EbGb }, #endif }; // opcode 21 static const BxOpcodeInfo_t BxOpcodeTable21[] = { /* 21 /w */ { 0, BX_IA_AND_EwGw }, /* 21 /d */ { 0, BX_IA_AND_EdGd }, #if BX_SUPPORT_X86_64 /* 21 /q */ { 0, BX_IA_AND_EqGq }, #endif }; // opcode 22 static const BxOpcodeInfo_t BxOpcodeTable22[] = { /* 22 /w */ { 0, BX_IA_AND_GbEb }, /* 22 /d */ { 0, BX_IA_AND_GbEb }, #if BX_SUPPORT_X86_64 /* 22 /q */ { 0, BX_IA_AND_GbEb }, #endif }; // opcode 23 static const BxOpcodeInfo_t BxOpcodeTable23[] = { /* 23 /w */ { 0, BX_IA_AND_GwEw }, /* 23 /d */ { 0, BX_IA_AND_GdEd }, #if BX_SUPPORT_X86_64 /* 23 /q */ { 0, BX_IA_AND_GqEq }, #endif }; // opcode 24 static const BxOpcodeInfo_t BxOpcodeTable24[] = { /* 24 /w */ { BxImmediate_Ib, BX_IA_AND_ALIb }, /* 24 /d */ { BxImmediate_Ib, BX_IA_AND_ALIb }, #if BX_SUPPORT_X86_64 /* 24 /q */ { BxImmediate_Ib, BX_IA_AND_ALIb }, #endif }; // opcode 25 static const BxOpcodeInfo_t BxOpcodeTable25[] = { /* 25 /w */ { BxImmediate_Iw, BX_IA_AND_AXIw }, /* 25 /d */ { BxImmediate_Id, BX_IA_AND_EAXId }, #if BX_SUPPORT_X86_64 /* 25 /q */ { BxImmediate_Id, BX_IA_AND_RAXId }, #endif }; // opcode 27 static const BxOpcodeInfo_t BxOpcodeTable27_32[] = { /* 27 */ { 0, BX_IA_DAA }, }; // opcode 28 static const BxOpcodeInfo_t BxOpcodeTable28[] = { /* 28 /w */ { 0, BX_IA_SUB_EbGb }, /* 28 /d */ { 0, BX_IA_SUB_EbGb }, #if BX_SUPPORT_X86_64 /* 28 /q */ { 0, BX_IA_SUB_EbGb }, #endif }; // opcode 29 static const BxOpcodeInfo_t BxOpcodeTable29[] = { /* 29 /w */ { 0, BX_IA_SUB_EwGw }, /* 29 /d */ { 0, BX_IA_SUB_EdGd }, #if BX_SUPPORT_X86_64 /* 29 /q */ { 0, BX_IA_SUB_EqGq }, #endif }; // opcode 2A static const BxOpcodeInfo_t BxOpcodeTable2A[] = { /* 2A /w */ { 0, BX_IA_SUB_GbEb }, /* 2A /d */ { 0, BX_IA_SUB_GbEb }, #if BX_SUPPORT_X86_64 /* 2A /q */ { 0, BX_IA_SUB_GbEb }, #endif }; // opcode 2B static const BxOpcodeInfo_t BxOpcodeTable2B[] = { /* 2B /w */ { 0, BX_IA_SUB_GwEw }, /* 2B /d */ { 0, BX_IA_SUB_GdEd }, #if BX_SUPPORT_X86_64 /* 2B /q */ { 0, BX_IA_SUB_GqEq }, #endif }; // opcode 2C static const BxOpcodeInfo_t BxOpcodeTable2C[] = { /* 2C /w */ { BxImmediate_Ib, BX_IA_SUB_ALIb }, /* 2C /d */ { BxImmediate_Ib, BX_IA_SUB_ALIb }, #if BX_SUPPORT_X86_64 /* 2C /q */ { BxImmediate_Ib, BX_IA_SUB_ALIb }, #endif }; // opcode 2D static const BxOpcodeInfo_t BxOpcodeTable2D[] = { /* 2D /w */ { BxImmediate_Iw, BX_IA_SUB_AXIw }, /* 2D /d */ { BxImmediate_Id, BX_IA_SUB_EAXId }, #if BX_SUPPORT_X86_64 /* 2D /q */ { BxImmediate_Id, BX_IA_SUB_RAXId }, #endif }; // opcode 2F static const BxOpcodeInfo_t BxOpcodeTable2F_32[] = { /* 2F */ { 0, BX_IA_DAS }, }; // opcode 30 static const BxOpcodeInfo_t BxOpcodeTable30[] = { /* 30 /w */ { 0, BX_IA_XOR_EbGb }, /* 30 /d */ { 0, BX_IA_XOR_EbGb }, #if BX_SUPPORT_X86_64 /* 30 /q */ { 0, BX_IA_XOR_EbGb }, #endif }; // opcode 31 static const BxOpcodeInfo_t BxOpcodeTable31[] = { /* 31 /w */ { 0, BX_IA_XOR_EwGw }, /* 31 /d */ { 0, BX_IA_XOR_EdGd }, #if BX_SUPPORT_X86_64 /* 31 /q */ { 0, BX_IA_XOR_EqGq }, #endif }; // opcode 32 static const BxOpcodeInfo_t BxOpcodeTable32[] = { /* 32 /w */ { 0, BX_IA_XOR_GbEb }, /* 32 /d */ { 0, BX_IA_XOR_GbEb }, #if BX_SUPPORT_X86_64 /* 32 /q */ { 0, BX_IA_XOR_GbEb }, #endif }; // opcode 33 static const BxOpcodeInfo_t BxOpcodeTable33[] = { /* 33 /w */ { 0, BX_IA_XOR_GwEw }, /* 33 /d */ { 0, BX_IA_XOR_GdEd }, #if BX_SUPPORT_X86_64 /* 33 /q */ { 0, BX_IA_XOR_GqEq }, #endif }; // opcode 34 static const BxOpcodeInfo_t BxOpcodeTable34[] = { /* 34 /w */ { BxImmediate_Ib, BX_IA_XOR_ALIb }, /* 34 /d */ { BxImmediate_Ib, BX_IA_XOR_ALIb }, #if BX_SUPPORT_X86_64 /* 34 /q */ { BxImmediate_Ib, BX_IA_XOR_ALIb }, #endif }; // opcode 35 static const BxOpcodeInfo_t BxOpcodeTable35[] = { /* 35 /w */ { BxImmediate_Iw, BX_IA_XOR_AXIw }, /* 35 /d */ { BxImmediate_Id, BX_IA_XOR_EAXId }, #if BX_SUPPORT_X86_64 /* 35 /q */ { BxImmediate_Id, BX_IA_XOR_RAXId }, #endif }; // opcode 37 static const BxOpcodeInfo_t BxOpcodeTable37_32[] = { /* 37 */ { 0, BX_IA_AAA }, }; // opcode 38 static const BxOpcodeInfo_t BxOpcodeTable38[] = { /* 38 /w */ { 0, BX_IA_CMP_EbGb }, /* 38 /d */ { 0, BX_IA_CMP_EbGb }, #if BX_SUPPORT_X86_64 /* 38 /q */ { 0, BX_IA_CMP_EbGb }, #endif }; // opcode 39 static const BxOpcodeInfo_t BxOpcodeTable39[] = { /* 39 /w */ { 0, BX_IA_CMP_EwGw }, /* 39 /d */ { 0, BX_IA_CMP_EdGd }, #if BX_SUPPORT_X86_64 /* 39 /q */ { 0, BX_IA_CMP_EqGq }, #endif }; // opcode 3A static const BxOpcodeInfo_t BxOpcodeTable3A[] = { /* 3A /w */ { 0, BX_IA_CMP_GbEb }, /* 3A /d */ { 0, BX_IA_CMP_GbEb }, #if BX_SUPPORT_X86_64 /* 3A /q */ { 0, BX_IA_CMP_GbEb }, #endif }; // opcode 3B static const BxOpcodeInfo_t BxOpcodeTable3B[] = { /* 3B /w */ { 0, BX_IA_CMP_GwEw }, /* 3B /d */ { 0, BX_IA_CMP_GdEd }, #if BX_SUPPORT_X86_64 /* 3B /q */ { 0, BX_IA_CMP_GqEq }, #endif }; // opcode 3C static const BxOpcodeInfo_t BxOpcodeTable3C[] = { /* 3C /w */ { BxImmediate_Ib, BX_IA_CMP_ALIb }, /* 3C /d */ { BxImmediate_Ib, BX_IA_CMP_ALIb }, #if BX_SUPPORT_X86_64 /* 3C /q */ { BxImmediate_Ib, BX_IA_CMP_ALIb }, #endif }; // opcode 3D static const BxOpcodeInfo_t BxOpcodeTable3D[] = { /* 3D /w */ { BxImmediate_Iw, BX_IA_CMP_AXIw }, /* 3D /d */ { BxImmediate_Id, BX_IA_CMP_EAXId }, #if BX_SUPPORT_X86_64 /* 3D /q */ { BxImmediate_Id, BX_IA_CMP_RAXId }, #endif }; // opcode 3F static const BxOpcodeInfo_t BxOpcodeTable3F_32[] = { /* 3F */ { 0, BX_IA_AAS }, }; // opcode 40 - 47 static const BxOpcodeInfo_t BxOpcodeTable40x47_32[] = { /* 40 /w */ { 0, BX_IA_INC_Ew }, /* 40 /d */ { 0, BX_IA_INC_Ed }, }; // opcode 48 - 4F static const BxOpcodeInfo_t BxOpcodeTable48x4F_32[] = { /* 49 /w */ { 0, BX_IA_DEC_Ew }, /* 49 /d */ { 0, BX_IA_DEC_Ed }, }; // opcode 50 - 57 static const BxOpcodeInfo_t BxOpcodeTable50x57_32[] = { /* 50 /w */ { 0, BX_IA_PUSH_Ew }, /* 50 /d */ { 0, BX_IA_PUSH_Ed }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable50x57_64[] = { /* 50 /w */ { 0, BX_IA_PUSH_Ew }, /* 50 /d */ { 0, BX_IA_PUSH_Eq }, /* 50 /q */ { 0, BX_IA_PUSH_Eq }, }; #endif // opcode 58 - 5F static const BxOpcodeInfo_t BxOpcodeTable58x5F_32[] = { /* 58 /w */ { 0, BX_IA_POP_Ew }, /* 58 /d */ { 0, BX_IA_POP_Ed }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable58x5F_64[] = { /* 58 /w */ { 0, BX_IA_POP_Ew }, /* 58 /d */ { 0, BX_IA_POP_Eq }, /* 58 /q */ { 0, BX_IA_POP_Eq }, }; #endif // opcode 60 static const BxOpcodeInfo_t BxOpcodeTable60_32[] = { /* 60 /w */ { 0, BX_IA_PUSHA_Op16 }, /* 60 /d */ { 0, BX_IA_PUSHA_Op32 }, }; // opcode 61 static const BxOpcodeInfo_t BxOpcodeTable61_32[] = { /* 61 /w */ { 0, BX_IA_POPA_Op16 }, /* 61 /d */ { 0, BX_IA_POPA_Op32 }, }; // opcode 62 static const BxOpcodeInfo_t BxOpcodeTable62_32[] = { /* 62 /w */ { 0, BX_IA_BOUND_GwMa }, /* 62 /d */ { 0, BX_IA_BOUND_GdMa }, }; // opcode 63 static const BxOpcodeInfo_t BxOpcodeTable63_32[] = { /* 63 /w */ { 0, BX_IA_ARPL_EwGw }, /* 63 /d */ { 0, BX_IA_ARPL_EwGw }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable63_64[] = { /* 63 /w */ { 0, BX_IA_MOV_GwEw }, // MOVSX_GwEw /* 63 /d */ { 0, BX_IA_MOV_Op64_GdEd }, // MOVSX_GdEd /* 63 /q */ { 0, BX_IA_MOVSXD_GqEd }, }; #endif // opcode 68 static const BxOpcodeInfo_t BxOpcodeTable68_32[] = { /* 68 /w */ { BxImmediate_Iw, BX_IA_PUSH_Iw }, /* 68 /d */ { BxImmediate_Id, BX_IA_PUSH_Id }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable68_64[] = { /* 68 /w */ { BxImmediate_Iw, BX_IA_PUSH_Iw }, /* 68 /d */ { BxImmediate_Id, BX_IA_PUSH_Op64_Id }, /* 68 /q */ { BxImmediate_Id, BX_IA_PUSH_Op64_Id }, }; #endif // opcode 69 static const BxOpcodeInfo_t BxOpcodeTable69[] = { /* 69 /w */ { BxImmediate_Iw, BX_IA_IMUL_GwEwIw }, /* 69 /d */ { BxImmediate_Id, BX_IA_IMUL_GdEdId }, #if BX_SUPPORT_X86_64 /* 69 /q */ { BxImmediate_Id, BX_IA_IMUL_GqEqId }, #endif }; // opcode 6A static const BxOpcodeInfo_t BxOpcodeTable6A_32[] = { /* 6A /w */ { BxImmediate_Ib_SE, BX_IA_PUSH_Iw }, /* 6A /d */ { BxImmediate_Ib_SE, BX_IA_PUSH_Id }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable6A_64[] = { /* 6A /w */ { BxImmediate_Ib_SE, BX_IA_PUSH_Iw }, /* 6A /d */ { BxImmediate_Ib_SE, BX_IA_PUSH_Op64_Id }, /* 6A /q */ { BxImmediate_Ib_SE, BX_IA_PUSH_Op64_Id }, }; #endif // opcode 6B static const BxOpcodeInfo_t BxOpcodeTable6B[] = { /* 6B /w */ { BxImmediate_Ib_SE, BX_IA_IMUL_GwEwIw }, /* 6B /d */ { BxImmediate_Ib_SE, BX_IA_IMUL_GdEdId }, #if BX_SUPPORT_X86_64 /* 6B /q */ { BxImmediate_Ib_SE, BX_IA_IMUL_GqEqId }, #endif }; // opcode 6C static const BxOpcodeInfo_t BxOpcodeTable6C[] = { /* 6C /w */ { 0, BX_IA_REP_INSB_YbDX }, /* 6C /d */ { 0, BX_IA_REP_INSB_YbDX }, #if BX_SUPPORT_X86_64 /* 6C /q */ { 0, BX_IA_REP_INSB_YbDX }, #endif }; // opcode 6D static const BxOpcodeInfo_t BxOpcodeTable6D[] = { /* 6D /w */ { 0, BX_IA_REP_INSW_YwDX }, /* 6D /d */ { 0, BX_IA_REP_INSD_YdDX }, #if BX_SUPPORT_X86_64 /* 6D /q */ { 0, BX_IA_REP_INSD_YdDX }, #endif }; // opcode 6E static const BxOpcodeInfo_t BxOpcodeTable6E[] = { /* 6E /w */ { 0, BX_IA_REP_OUTSB_DXXb }, /* 6E /d */ { 0, BX_IA_REP_OUTSB_DXXb }, #if BX_SUPPORT_X86_64 /* 6E /q */ { 0, BX_IA_REP_OUTSB_DXXb }, #endif }; // opcode 6F static const BxOpcodeInfo_t BxOpcodeTable6F[] = { /* 6F /w */ { 0, BX_IA_REP_OUTSW_DXXw }, /* 6F /d */ { 0, BX_IA_REP_OUTSD_DXXd }, #if BX_SUPPORT_X86_64 /* 6F /q */ { 0, BX_IA_REP_OUTSD_DXXd }, #endif }; // opcode 70 static const BxOpcodeInfo_t BxOpcodeTable70_32[] = { /* 70 /w */ { BxImmediate_BrOff8, BX_IA_JO_Jw }, /* 70 /d */ { BxImmediate_BrOff8, BX_IA_JO_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable70_64[] = { /* 70 /w */ { BxImmediate_BrOff8, BX_IA_JO_Jq }, /* 70 /d */ { BxImmediate_BrOff8, BX_IA_JO_Jq }, /* 70 /q */ { BxImmediate_BrOff8, BX_IA_JO_Jq }, }; #endif // opcode 71 static const BxOpcodeInfo_t BxOpcodeTable71_32[] = { /* 71 /w */ { BxImmediate_BrOff8, BX_IA_JNO_Jw }, /* 71 /d */ { BxImmediate_BrOff8, BX_IA_JNO_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable71_64[] = { /* 71 /w */ { BxImmediate_BrOff8, BX_IA_JNO_Jq }, /* 71 /d */ { BxImmediate_BrOff8, BX_IA_JNO_Jq }, /* 71 /q */ { BxImmediate_BrOff8, BX_IA_JNO_Jq }, }; #endif // opcode 72 static const BxOpcodeInfo_t BxOpcodeTable72_32[] = { /* 72 /w */ { BxImmediate_BrOff8, BX_IA_JB_Jw }, /* 72 /d */ { BxImmediate_BrOff8, BX_IA_JB_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable72_64[] = { /* 72 /w */ { BxImmediate_BrOff8, BX_IA_JB_Jq }, /* 72 /d */ { BxImmediate_BrOff8, BX_IA_JB_Jq }, /* 72 /q */ { BxImmediate_BrOff8, BX_IA_JB_Jq }, }; #endif // opcode 73 static const BxOpcodeInfo_t BxOpcodeTable73_32[] = { /* 73 /w */ { BxImmediate_BrOff8, BX_IA_JNB_Jw }, /* 73 /d */ { BxImmediate_BrOff8, BX_IA_JNB_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable73_64[] = { /* 73 /w */ { BxImmediate_BrOff8, BX_IA_JNB_Jq }, /* 73 /d */ { BxImmediate_BrOff8, BX_IA_JNB_Jq }, /* 73 /q */ { BxImmediate_BrOff8, BX_IA_JNB_Jq }, }; #endif // opcode 74 static const BxOpcodeInfo_t BxOpcodeTable74_32[] = { /* 74 /w */ { BxImmediate_BrOff8, BX_IA_JZ_Jw }, /* 74 /d */ { BxImmediate_BrOff8, BX_IA_JZ_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable74_64[] = { /* 74 /w */ { BxImmediate_BrOff8, BX_IA_JZ_Jq }, /* 74 /d */ { BxImmediate_BrOff8, BX_IA_JZ_Jq }, /* 74 /q */ { BxImmediate_BrOff8, BX_IA_JZ_Jq }, }; #endif // opcode 75 static const BxOpcodeInfo_t BxOpcodeTable75_32[] = { /* 75 /w */ { BxImmediate_BrOff8, BX_IA_JNZ_Jw }, /* 75 /d */ { BxImmediate_BrOff8, BX_IA_JNZ_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable75_64[] = { /* 75 /w */ { BxImmediate_BrOff8, BX_IA_JNZ_Jq }, /* 75 /d */ { BxImmediate_BrOff8, BX_IA_JNZ_Jq }, /* 75 /q */ { BxImmediate_BrOff8, BX_IA_JNZ_Jq }, }; #endif // opcode 76 static const BxOpcodeInfo_t BxOpcodeTable76_32[] = { /* 76 /w */ { BxImmediate_BrOff8, BX_IA_JBE_Jw }, /* 76 /d */ { BxImmediate_BrOff8, BX_IA_JBE_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable76_64[] = { /* 76 /w */ { BxImmediate_BrOff8, BX_IA_JBE_Jq }, /* 76 /d */ { BxImmediate_BrOff8, BX_IA_JBE_Jq }, /* 76 /q */ { BxImmediate_BrOff8, BX_IA_JBE_Jq }, }; #endif // opcode 77 static const BxOpcodeInfo_t BxOpcodeTable77_32[] = { /* 77 /w */ { BxImmediate_BrOff8, BX_IA_JNBE_Jw }, /* 77 /d */ { BxImmediate_BrOff8, BX_IA_JNBE_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable77_64[] = { /* 77 /w */ { BxImmediate_BrOff8, BX_IA_JNBE_Jq }, /* 77 /d */ { BxImmediate_BrOff8, BX_IA_JNBE_Jq }, /* 77 /q */ { BxImmediate_BrOff8, BX_IA_JNBE_Jq }, }; #endif // opcode 78 static const BxOpcodeInfo_t BxOpcodeTable78_32[] = { /* 78 /w */ { BxImmediate_BrOff8, BX_IA_JS_Jw }, /* 78 /d */ { BxImmediate_BrOff8, BX_IA_JS_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable78_64[] = { /* 78 /w */ { BxImmediate_BrOff8, BX_IA_JS_Jq }, /* 78 /d */ { BxImmediate_BrOff8, BX_IA_JS_Jq }, /* 78 /q */ { BxImmediate_BrOff8, BX_IA_JS_Jq }, }; #endif // opcode 79 static const BxOpcodeInfo_t BxOpcodeTable79_32[] = { /* 79 /w */ { BxImmediate_BrOff8, BX_IA_JNS_Jw }, /* 79 /d */ { BxImmediate_BrOff8, BX_IA_JNS_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable79_64[] = { /* 79 /w */ { BxImmediate_BrOff8, BX_IA_JNS_Jq }, /* 79 /d */ { BxImmediate_BrOff8, BX_IA_JNS_Jq }, /* 79 /q */ { BxImmediate_BrOff8, BX_IA_JNS_Jq }, }; #endif // opcode 7A static const BxOpcodeInfo_t BxOpcodeTable7A_32[] = { /* 7A /w */ { BxImmediate_BrOff8, BX_IA_JP_Jw }, /* 7A /d */ { BxImmediate_BrOff8, BX_IA_JP_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable7A_64[] = { /* 7A /w */ { BxImmediate_BrOff8, BX_IA_JP_Jq }, /* 7A /d */ { BxImmediate_BrOff8, BX_IA_JP_Jq }, /* 7A /q */ { BxImmediate_BrOff8, BX_IA_JP_Jq }, }; #endif // opcode 7B static const BxOpcodeInfo_t BxOpcodeTable7B_32[] = { /* 7B /w */ { BxImmediate_BrOff8, BX_IA_JNP_Jw }, /* 7B /d */ { BxImmediate_BrOff8, BX_IA_JNP_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable7B_64[] = { /* 7B /w */ { BxImmediate_BrOff8, BX_IA_JNP_Jq }, /* 7B /d */ { BxImmediate_BrOff8, BX_IA_JNP_Jq }, /* 7B /q */ { BxImmediate_BrOff8, BX_IA_JNP_Jq }, }; #endif // opcode 7C static const BxOpcodeInfo_t BxOpcodeTable7C_32[] = { /* 7C /w */ { BxImmediate_BrOff8, BX_IA_JL_Jw }, /* 7C /d */ { BxImmediate_BrOff8, BX_IA_JL_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable7C_64[] = { /* 7C /w */ { BxImmediate_BrOff8, BX_IA_JL_Jq }, /* 7C /d */ { BxImmediate_BrOff8, BX_IA_JL_Jq }, /* 7C /q */ { BxImmediate_BrOff8, BX_IA_JL_Jq }, }; #endif // opcode 7D static const BxOpcodeInfo_t BxOpcodeTable7D_32[] = { /* 7D /w */ { BxImmediate_BrOff8, BX_IA_JNL_Jw }, /* 7D /d */ { BxImmediate_BrOff8, BX_IA_JNL_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable7D_64[] = { /* 7D /w */ { BxImmediate_BrOff8, BX_IA_JNL_Jq }, /* 7D /d */ { BxImmediate_BrOff8, BX_IA_JNL_Jq }, /* 7D /q */ { BxImmediate_BrOff8, BX_IA_JNL_Jq }, }; #endif // opcode 7E static const BxOpcodeInfo_t BxOpcodeTable7E_32[] = { /* 7E /w */ { BxImmediate_BrOff8, BX_IA_JLE_Jw }, /* 7E /d */ { BxImmediate_BrOff8, BX_IA_JLE_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable7E_64[] = { /* 7E /w */ { BxImmediate_BrOff8, BX_IA_JLE_Jq }, /* 7E /d */ { BxImmediate_BrOff8, BX_IA_JLE_Jq }, /* 7E /q */ { BxImmediate_BrOff8, BX_IA_JLE_Jq }, }; #endif // opcode 7F static const BxOpcodeInfo_t BxOpcodeTable7F_32[] = { /* 7F /w */ { BxImmediate_BrOff8, BX_IA_JNLE_Jw }, /* 7F /d */ { BxImmediate_BrOff8, BX_IA_JNLE_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable7F_64[] = { /* 7F /w */ { BxImmediate_BrOff8, BX_IA_JNLE_Jq }, /* 7F /d */ { BxImmediate_BrOff8, BX_IA_JNLE_Jq }, /* 7F /q */ { BxImmediate_BrOff8, BX_IA_JNLE_Jq }, }; #endif // opcode 80 static const BxOpcodeInfo_t BxOpcodeTable80_G1Eb[8] = { /* /0 */ { BxImmediate_Ib, BX_IA_ADD_EbIb }, /* /1 */ { BxImmediate_Ib, BX_IA_OR_EbIb }, /* /2 */ { BxImmediate_Ib, BX_IA_ADC_EbIb }, /* /3 */ { BxImmediate_Ib, BX_IA_SBB_EbIb }, /* /4 */ { BxImmediate_Ib, BX_IA_AND_EbIb }, /* /5 */ { BxImmediate_Ib, BX_IA_SUB_EbIb }, /* /6 */ { BxImmediate_Ib, BX_IA_XOR_EbIb }, /* /7 */ { BxImmediate_Ib, BX_IA_CMP_EbIb } }; // opcode 81 static const BxOpcodeInfo_t BxOpcodeTable81_G1Ev[] = { // osize = 16 bit /* /0 /w */ { BxImmediate_Iw, BX_IA_ADD_EwIw }, /* /1 /w */ { BxImmediate_Iw, BX_IA_OR_EwIw }, /* /2 /w */ { BxImmediate_Iw, BX_IA_ADC_EwIw }, /* /3 /w */ { BxImmediate_Iw, BX_IA_SBB_EwIw }, /* /4 /w */ { BxImmediate_Iw, BX_IA_AND_EwIw }, /* /5 /w */ { BxImmediate_Iw, BX_IA_SUB_EwIw }, /* /6 /w */ { BxImmediate_Iw, BX_IA_XOR_EwIw }, /* /7 /w */ { BxImmediate_Iw, BX_IA_CMP_EwIw }, // osize = 32 bit /* /0 /d */ { BxImmediate_Id, BX_IA_ADD_EdId }, /* /1 /d */ { BxImmediate_Id, BX_IA_OR_EdId }, /* /2 /d */ { BxImmediate_Id, BX_IA_ADC_EdId }, /* /3 /d */ { BxImmediate_Id, BX_IA_SBB_EdId }, /* /4 /d */ { BxImmediate_Id, BX_IA_AND_EdId }, /* /5 /d */ { BxImmediate_Id, BX_IA_SUB_EdId }, /* /6 /d */ { BxImmediate_Id, BX_IA_XOR_EdId }, /* /7 /d */ { BxImmediate_Id, BX_IA_CMP_EdId }, #if BX_SUPPORT_X86_64 /* /0 /q */ { BxImmediate_Id, BX_IA_ADD_EqId }, /* /1 /q */ { BxImmediate_Id, BX_IA_OR_EqId }, /* /2 /q */ { BxImmediate_Id, BX_IA_ADC_EqId }, /* /3 /q */ { BxImmediate_Id, BX_IA_SBB_EqId }, /* /4 /q */ { BxImmediate_Id, BX_IA_AND_EqId }, /* /5 /q */ { BxImmediate_Id, BX_IA_SUB_EqId }, /* /6 /q */ { BxImmediate_Id, BX_IA_XOR_EqId }, /* /7 /q */ { BxImmediate_Id, BX_IA_CMP_EqId }, #endif }; // opcode 83 static const BxOpcodeInfo_t BxOpcodeTable83_G1Ev[] = { // osize = 16 bit /* /0 /w */ { BxImmediate_Ib_SE, BX_IA_ADD_EwIw }, /* /1 /w */ { BxImmediate_Ib_SE, BX_IA_OR_EwIw }, /* /2 /w */ { BxImmediate_Ib_SE, BX_IA_ADC_EwIw }, /* /3 /w */ { BxImmediate_Ib_SE, BX_IA_SBB_EwIw }, /* /4 /w */ { BxImmediate_Ib_SE, BX_IA_AND_EwIw }, /* /5 /w */ { BxImmediate_Ib_SE, BX_IA_SUB_EwIw }, /* /6 /w */ { BxImmediate_Ib_SE, BX_IA_XOR_EwIw }, /* /7 /w */ { BxImmediate_Ib_SE, BX_IA_CMP_EwIw }, // osize = 32 bit /* /0 /d */ { BxImmediate_Ib_SE, BX_IA_ADD_EdId }, /* /1 /d */ { BxImmediate_Ib_SE, BX_IA_OR_EdId }, /* /2 /d */ { BxImmediate_Ib_SE, BX_IA_ADC_EdId }, /* /3 /d */ { BxImmediate_Ib_SE, BX_IA_SBB_EdId }, /* /4 /d */ { BxImmediate_Ib_SE, BX_IA_AND_EdId }, /* /5 /d */ { BxImmediate_Ib_SE, BX_IA_SUB_EdId }, /* /6 /d */ { BxImmediate_Ib_SE, BX_IA_XOR_EdId }, /* /7 /d */ { BxImmediate_Ib_SE, BX_IA_CMP_EdId }, #if BX_SUPPORT_X86_64 // osize = 64 bit /* /0 /q */ { BxImmediate_Ib_SE, BX_IA_ADD_EqId }, /* /1 /q */ { BxImmediate_Ib_SE, BX_IA_OR_EqId }, /* /2 /q */ { BxImmediate_Ib_SE, BX_IA_ADC_EqId }, /* /3 /q */ { BxImmediate_Ib_SE, BX_IA_SBB_EqId }, /* /4 /q */ { BxImmediate_Ib_SE, BX_IA_AND_EqId }, /* /5 /q */ { BxImmediate_Ib_SE, BX_IA_SUB_EqId }, /* /6 /q */ { BxImmediate_Ib_SE, BX_IA_XOR_EqId }, /* /7 /q */ { BxImmediate_Ib_SE, BX_IA_CMP_EqId }, #endif }; // opcode 84 static const BxOpcodeInfo_t BxOpcodeTable84[] = { /* 84 /w */ { 0, BX_IA_TEST_EbGb }, /* 84 /d */ { 0, BX_IA_TEST_EbGb }, #if BX_SUPPORT_X86_64 /* 84 /q */ { 0, BX_IA_TEST_EbGb }, #endif }; // opcode 85 static const BxOpcodeInfo_t BxOpcodeTable85[] = { /* 85 /w */ { 0, BX_IA_TEST_EwGw }, /* 85 /d */ { 0, BX_IA_TEST_EdGd }, #if BX_SUPPORT_X86_64 /* 85 /q */ { 0, BX_IA_TEST_EqGq }, #endif }; // opcode 86 static const BxOpcodeInfo_t BxOpcodeTable86[] = { /* 86 /w */ { 0, BX_IA_XCHG_EbGb }, /* 86 /d */ { 0, BX_IA_XCHG_EbGb }, #if BX_SUPPORT_X86_64 /* 86 /q */ { 0, BX_IA_XCHG_EbGb }, #endif }; // opcode 87 static const BxOpcodeInfo_t BxOpcodeTable87[] = { /* 87 /w */ { 0, BX_IA_XCHG_EwGw }, /* 87 /d */ { 0, BX_IA_XCHG_EdGd }, #if BX_SUPPORT_X86_64 /* 87 /q */ { 0, BX_IA_XCHG_EqGq }, #endif }; // opcode 88 static const BxOpcodeInfo_t BxOpcodeTable88[] = { /* 88 /w */ { 0, BX_IA_MOV_EbGb }, /* 88 /d */ { 0, BX_IA_MOV_EbGb }, #if BX_SUPPORT_X86_64 /* 88 /q */ { 0, BX_IA_MOV_EbGb }, #endif }; // opcode 89 - split for better emulation performance static const BxOpcodeInfo_t BxOpcodeTable89_32[] = { /* 89 /w */ { 0, BX_IA_MOV_EwGw }, /* 89 /d */ { 0, BX_IA_MOV_Op32_EdGd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable89_64[] = { /* 89 /w */ { 0, BX_IA_MOV_EwGw }, /* 89 /d */ { 0, BX_IA_MOV_Op64_EdGd }, /* 89 /q */ { 0, BX_IA_MOV_EqGq }, }; #endif // opcode 8A static const BxOpcodeInfo_t BxOpcodeTable8A[] = { /* 8A /w */ { 0, BX_IA_MOV_GbEb }, /* 8A /d */ { 0, BX_IA_MOV_GbEb }, #if BX_SUPPORT_X86_64 /* 8A /q */ { 0, BX_IA_MOV_GbEb }, #endif }; // opcode 8B - split for better emulation performance static const BxOpcodeInfo_t BxOpcodeTable8B_32[] = { /* 8B /w */ { 0, BX_IA_MOV_GwEw }, /* 8B /d */ { 0, BX_IA_MOV_Op32_GdEd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable8B_64[] = { /* 8B /w */ { 0, BX_IA_MOV_GwEw }, /* 8B /d */ { 0, BX_IA_MOV_Op64_GdEd }, /* 8B /q */ { 0, BX_IA_MOV_GqEq }, }; #endif // opcode 8C static const BxOpcodeInfo_t BxOpcodeTable8C[] = { /* 8C /w */ { 0, BX_IA_MOV_EwSw }, /* 8C /d */ { 0, BX_IA_MOV_EwSw }, #if BX_SUPPORT_X86_64 /* 8C /q */ { 0, BX_IA_MOV_EwSw }, #endif }; // opcode 8D static const BxOpcodeInfo_t BxOpcodeTable8D[] = { /* 8D /w */ { 0, BX_IA_LEA_GwM }, /* 8D /d */ { 0, BX_IA_LEA_GdM }, #if BX_SUPPORT_X86_64 /* 8D /q */ { 0, BX_IA_LEA_GqM }, #endif }; // opcode 8E static const BxOpcodeInfo_t BxOpcodeTable8E[] = { /* 8E /w */ { 0, BX_IA_MOV_SwEw }, /* 8E /d */ { 0, BX_IA_MOV_SwEw }, #if BX_SUPPORT_X86_64 /* 8E /q */ { 0, BX_IA_MOV_SwEw }, #endif }; // opcode 8F - GroupN / XOP prefix static const BxOpcodeInfo_t BxOpcodeTable8F[] = { /* 8F /w */ { 0, BX_IA_POP_Ew }, /* 8F /d */ { 0, BX_IA_POP_Ed }, #if BX_SUPPORT_X86_64 /* 8F /q */ { 0, BX_IA_POP_Eq }, #endif }; // opcode 90 - 97 static const BxOpcodeInfo_t BxOpcodeTable90x97[] = { /* 91 /w */ { 0, BX_IA_XCHG_RXAX }, // handles also XCHG R8w, AX /* 91 /d */ { 0, BX_IA_XCHG_ERXEAX }, // handles also XCHG R8d, EAX #if BX_SUPPORT_X86_64 /* 91 /q */ { 0, BX_IA_XCHG_RRXRAX }, // handles also XCHG R8, RAX #endif }; // opcode 98 static const BxOpcodeInfo_t BxOpcodeTable98[] = { /* 98 /w */ { 0, BX_IA_CBW }, /* 98 /d */ { 0, BX_IA_CWDE }, #if BX_SUPPORT_X86_64 /* 98 /q */ { 0, BX_IA_CDQE }, #endif }; // opcode 99 static const BxOpcodeInfo_t BxOpcodeTable99[] = { /* 99 /w */ { 0, BX_IA_CWD }, /* 99 /d */ { 0, BX_IA_CDQ }, #if BX_SUPPORT_X86_64 /* 99 /q */ { 0, BX_IA_CQO }, #endif }; // opcode 9A static const BxOpcodeInfo_t BxOpcodeTable9A_32[] = { /* 9A /w */ { BxImmediate_Iw | BxImmediate_Iw2, BX_IA_CALLF_Op16_Ap }, /* 9A /d */ { BxImmediate_Id | BxImmediate_Iw2, BX_IA_CALLF_Op32_Ap }, }; // opcode 9B static const BxOpcodeInfo_t BxOpcodeTable9B[] = { /* 9B */ { 0, BX_IA_FWAIT }, }; // opcode 9C static const BxOpcodeInfo_t BxOpcodeTable9C_32[] = { /* 9C /w */ { 0, BX_IA_PUSHF_Fw }, /* 9C /d */ { 0, BX_IA_PUSHF_Fd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable9C_64[] = { /* 9C /w */ { 0, BX_IA_PUSHF_Fw }, /* 9C /d */ { 0, BX_IA_PUSHF_Fq }, /* 9C /q */ { 0, BX_IA_PUSHF_Fq }, }; #endif // opcode 9D static const BxOpcodeInfo_t BxOpcodeTable9D_32[] = { /* 9D /w */ { 0, BX_IA_POPF_Fw }, /* 9D /d */ { 0, BX_IA_POPF_Fd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable9D_64[] = { /* 9D /w */ { 0, BX_IA_POPF_Fw }, /* 9D /d */ { 0, BX_IA_POPF_Fq }, /* 9D /q */ { 0, BX_IA_POPF_Fq }, }; #endif // opcode 9E static const BxOpcodeInfo_t BxOpcodeTable9E_32[] = { /* 9E */ { 0, BX_IA_SAHF }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable9E_64[] = { /* 9E */ { 0, BX_IA_SAHF_LM }, }; #endif // opcode 9F static const BxOpcodeInfo_t BxOpcodeTable9F_32[] = { /* 9F */ { 0, BX_IA_LAHF }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable9F_64[] = { /* 9F */ { 0, BX_IA_LAHF_LM }, }; #endif // opcode A0 static const BxOpcodeInfo_t BxOpcodeTableA0_32[] = { /* A0 /w */ { BxImmediate_O, BX_IA_MOV_ALOd }, /* A0 /d */ { BxImmediate_O, BX_IA_MOV_ALOd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableA0_64[] = { /* A0 /w */ { BxImmediate_O, BX_IA_MOV_ALOq }, /* A0 /d */ { BxImmediate_O, BX_IA_MOV_ALOq }, /* A0 /q */ { BxImmediate_O, BX_IA_MOV_ALOq }, }; #endif // opcode A1 static const BxOpcodeInfo_t BxOpcodeTableA1_32[] = { /* A1 /w */ { BxImmediate_O, BX_IA_MOV_AXOd }, /* A1 /d */ { BxImmediate_O, BX_IA_MOV_EAXOd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableA1_64[] = { /* A1 /w */ { BxImmediate_O, BX_IA_MOV_AXOq }, /* A1 /d */ { BxImmediate_O, BX_IA_MOV_EAXOq }, /* A1 /q */ { BxImmediate_O, BX_IA_MOV_RAXOq }, }; #endif // opcode A2 static const BxOpcodeInfo_t BxOpcodeTableA2_32[] = { /* A2 /w */ { BxImmediate_O, BX_IA_MOV_OdAL }, /* A2 /d */ { BxImmediate_O, BX_IA_MOV_OdAL }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableA2_64[] = { /* A2 /w */ { BxImmediate_O, BX_IA_MOV_OqAL }, /* A2 /d */ { BxImmediate_O, BX_IA_MOV_OqAL }, /* A2 /q */ { BxImmediate_O, BX_IA_MOV_OqAL }, }; #endif // opcode A3 static const BxOpcodeInfo_t BxOpcodeTableA3_32[] = { /* A3 /w */ { BxImmediate_O, BX_IA_MOV_OdAX }, /* A3 /d */ { BxImmediate_O, BX_IA_MOV_OdEAX }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableA3_64[] = { /* A3 /w */ { BxImmediate_O, BX_IA_MOV_OqAX }, /* A3 /d */ { BxImmediate_O, BX_IA_MOV_OqEAX }, /* A3 /q */ { BxImmediate_O, BX_IA_MOV_OqRAX }, }; #endif // opcode A4 static const BxOpcodeInfo_t BxOpcodeTableA4[] = { /* A4 /w */ { 0, BX_IA_REP_MOVSB_YbXb }, /* A4 /d */ { 0, BX_IA_REP_MOVSB_YbXb }, #if BX_SUPPORT_X86_64 /* A4 /q */ { 0, BX_IA_REP_MOVSB_YbXb }, #endif }; // opcode A5 static const BxOpcodeInfo_t BxOpcodeTableA5[] = { /* A5 /w */ { 0, BX_IA_REP_MOVSW_YwXw }, /* A5 /d */ { 0, BX_IA_REP_MOVSD_YdXd }, #if BX_SUPPORT_X86_64 /* A5 /q */ { 0, BX_IA_REP_MOVSQ_YqXq }, #endif }; // opcode A6 static const BxOpcodeInfo_t BxOpcodeTableA6[] = { /* A6 /w */ { 0, BX_IA_REP_CMPSB_XbYb }, /* A6 /d */ { 0, BX_IA_REP_CMPSB_XbYb }, #if BX_SUPPORT_X86_64 /* A6 /q */ { 0, BX_IA_REP_CMPSB_XbYb }, #endif }; // opcode A7 static const BxOpcodeInfo_t BxOpcodeTableA7[] = { /* A7 /w */ { 0, BX_IA_REP_CMPSW_XwYw }, /* A7 /d */ { 0, BX_IA_REP_CMPSD_XdYd }, #if BX_SUPPORT_X86_64 /* A7 /q */ { 0, BX_IA_REP_CMPSQ_XqYq }, #endif }; // opcode A8 static const BxOpcodeInfo_t BxOpcodeTableA8[] = { /* A8 /w */ { BxImmediate_Ib, BX_IA_TEST_ALIb }, /* A8 /d */ { BxImmediate_Ib, BX_IA_TEST_ALIb }, #if BX_SUPPORT_X86_64 /* A8 /q */ { BxImmediate_Ib, BX_IA_TEST_ALIb }, #endif }; // opcode A9 static const BxOpcodeInfo_t BxOpcodeTableA9[] = { /* A9 /w */ { BxImmediate_Iw, BX_IA_TEST_AXIw }, /* A9 /d */ { BxImmediate_Id, BX_IA_TEST_EAXId }, #if BX_SUPPORT_X86_64 /* A9 /q */ { BxImmediate_Id, BX_IA_TEST_RAXId }, #endif }; // opcode AA static const BxOpcodeInfo_t BxOpcodeTableAA[] = { /* AA /w */ { 0, BX_IA_REP_STOSB_YbAL }, /* AA /d */ { 0, BX_IA_REP_STOSB_YbAL }, #if BX_SUPPORT_X86_64 /* AA /q */ { 0, BX_IA_REP_STOSB_YbAL }, #endif }; // opcode AB static const BxOpcodeInfo_t BxOpcodeTableAB[] = { /* AB /w */ { 0, BX_IA_REP_STOSW_YwAX }, /* AB /d */ { 0, BX_IA_REP_STOSD_YdEAX }, #if BX_SUPPORT_X86_64 /* AB /q */ { 0, BX_IA_REP_STOSQ_YqRAX }, #endif }; // opcode AC static const BxOpcodeInfo_t BxOpcodeTableAC[] = { /* AC /w */ { 0, BX_IA_REP_LODSB_ALXb }, /* AC /d */ { 0, BX_IA_REP_LODSB_ALXb }, #if BX_SUPPORT_X86_64 /* AC /q */ { 0, BX_IA_REP_LODSB_ALXb }, #endif }; // opcode AD static const BxOpcodeInfo_t BxOpcodeTableAD[] = { /* AD /w */ { 0, BX_IA_REP_LODSW_AXXw }, /* AD /d */ { 0, BX_IA_REP_LODSD_EAXXd }, #if BX_SUPPORT_X86_64 /* AD /q */ { 0, BX_IA_REP_LODSQ_RAXXq }, #endif }; // opcode AE static const BxOpcodeInfo_t BxOpcodeTableAE[] = { /* AE /w */ { 0, BX_IA_REP_SCASB_ALYb }, /* AE /d */ { 0, BX_IA_REP_SCASB_ALYb }, #if BX_SUPPORT_X86_64 /* AE /q */ { 0, BX_IA_REP_SCASB_ALYb }, #endif }; // opcode AF static const BxOpcodeInfo_t BxOpcodeTableAF[] = { /* AF /w */ { 0, BX_IA_REP_SCASW_AXYw }, /* AF /d */ { 0, BX_IA_REP_SCASD_EAXYd }, #if BX_SUPPORT_X86_64 /* AF /q */ { 0, BX_IA_REP_SCASQ_RAXYq }, #endif }; // opcode B0 - B7 static const BxOpcodeInfo_t BxOpcodeTableB0xB7[] = { /* B0 /w */ { BxImmediate_Ib, BX_IA_MOV_EbIb }, /* B0 /d */ { BxImmediate_Ib, BX_IA_MOV_EbIb }, #if BX_SUPPORT_X86_64 /* B0 /q */ { BxImmediate_Ib, BX_IA_MOV_EbIb }, #endif }; // opcode B8 - BF static const BxOpcodeInfo_t BxOpcodeTableB8xBF[] = { /* B8 /w */ { BxImmediate_Iw, BX_IA_MOV_EwIw }, /* B8 /d */ { BxImmediate_Id, BX_IA_MOV_EdId }, #if BX_SUPPORT_X86_64 /* B8 /q */ { BxImmediate_Iq, BX_IA_MOV_RRXIq }, #endif }; // opcode C0 static const BxOpcodeInfo_t BxOpcodeTableC0_G2EbIb[8] = { /* /0 */ { BxImmediate_Ib, BX_IA_ROL_EbIb }, /* /1 */ { BxImmediate_Ib, BX_IA_ROR_EbIb }, /* /2 */ { BxImmediate_Ib, BX_IA_RCL_EbIb }, /* /3 */ { BxImmediate_Ib, BX_IA_RCR_EbIb }, /* /4 */ { BxImmediate_Ib, BX_IA_SHL_EbIb }, /* /5 */ { BxImmediate_Ib, BX_IA_SHR_EbIb }, /* /6 */ { BxImmediate_Ib, BX_IA_SHL_EbIb }, /* /7 */ { BxImmediate_Ib, BX_IA_SAR_EbIb } }; // opcode C1 static const BxOpcodeInfo_t BxOpcodeTableC1_G2EvIb[] = { // osize = 16 bit /* /0 /w */ { BxImmediate_Ib, BX_IA_ROL_EwIb }, /* /1 /w */ { BxImmediate_Ib, BX_IA_ROR_EwIb }, /* /2 /w */ { BxImmediate_Ib, BX_IA_RCL_EwIb }, /* /3 /w */ { BxImmediate_Ib, BX_IA_RCR_EwIb }, /* /4 /w */ { BxImmediate_Ib, BX_IA_SHL_EwIb }, /* /5 /w */ { BxImmediate_Ib, BX_IA_SHR_EwIb }, /* /6 /w */ { BxImmediate_Ib, BX_IA_SHL_EwIb }, /* /7 /w */ { BxImmediate_Ib, BX_IA_SAR_EwIb }, // osize = 32 bit /* /0 /d */ { BxImmediate_Ib, BX_IA_ROL_EdIb }, /* /1 /d */ { BxImmediate_Ib, BX_IA_ROR_EdIb }, /* /2 /d */ { BxImmediate_Ib, BX_IA_RCL_EdIb }, /* /3 /d */ { BxImmediate_Ib, BX_IA_RCR_EdIb }, /* /4 /d */ { BxImmediate_Ib, BX_IA_SHL_EdIb }, /* /5 /d */ { BxImmediate_Ib, BX_IA_SHR_EdIb }, /* /6 /d */ { BxImmediate_Ib, BX_IA_SHL_EdIb }, /* /7 /d */ { BxImmediate_Ib, BX_IA_SAR_EdIb }, #if BX_SUPPORT_X86_64 // osize = 64 bit /* /0 /q */ { BxImmediate_Ib, BX_IA_ROL_EqIb }, /* /1 /q */ { BxImmediate_Ib, BX_IA_ROR_EqIb }, /* /2 /q */ { BxImmediate_Ib, BX_IA_RCL_EqIb }, /* /3 /q */ { BxImmediate_Ib, BX_IA_RCR_EqIb }, /* /4 /q */ { BxImmediate_Ib, BX_IA_SHL_EqIb }, /* /5 /q */ { BxImmediate_Ib, BX_IA_SHR_EqIb }, /* /6 /q */ { BxImmediate_Ib, BX_IA_SHL_EqIb }, /* /7 /q */ { BxImmediate_Ib, BX_IA_SAR_EqIb }, #endif }; // opcode C2 static const BxOpcodeInfo_t BxOpcodeTableC2_32[] = { /* C2 /w */ { BxImmediate_Iw, BX_IA_RET_Op16_Iw }, /* C2 /d */ { BxImmediate_Iw, BX_IA_RET_Op32_Iw }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableC2_64[] = { /* C2 /w */ { BxImmediate_Iw, BX_IA_RET_Op64_Iw }, /* C2 /d */ { BxImmediate_Iw, BX_IA_RET_Op64_Iw }, /* C2 /q */ { BxImmediate_Iw, BX_IA_RET_Op64_Iw }, }; #endif // opcode C3 static const BxOpcodeInfo_t BxOpcodeTableC3_32[] = { /* C3 /w */ { 0, BX_IA_RET_Op16 }, /* C3 /d */ { 0, BX_IA_RET_Op32 }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableC3_64[] = { /* C3 /w */ { 0, BX_IA_RET_Op64 }, /* C3 /d */ { 0, BX_IA_RET_Op64 }, /* C3 /q */ { 0, BX_IA_RET_Op64 }, }; #endif // opcode C4 static const BxOpcodeInfo_t BxOpcodeTableC4_32[] = { /* C4 /w */ { 0, BX_IA_LES_GwMp }, /* C4 /d */ { 0, BX_IA_LES_GdMp }, }; // opcode C5 static const BxOpcodeInfo_t BxOpcodeTableC5_32[] = { /* C5 /w */ { 0, BX_IA_LDS_GwMp }, /* C5 /d */ { 0, BX_IA_LDS_GdMp }, }; // opcode C6 static const BxOpcodeInfo_t BxOpcodeTableC6_G11EbIb[8] = { /* /0 */ { BxImmediate_Ib, BX_IA_MOV_EbIb }, /* /1 */ { 0, BX_IA_ERROR }, /* /2 */ { 0, BX_IA_ERROR }, /* /3 */ { 0, BX_IA_ERROR }, /* /4 */ { 0, BX_IA_ERROR }, /* /5 */ { 0, BX_IA_ERROR }, /* /6 */ { 0, BX_IA_ERROR }, /* /7 */ { 0, BX_IA_ERROR } }; // opcode C7 static const BxOpcodeInfo_t BxOpcodeTableC7_G11EvIv[] = { // osize = 16 bit /* /0 /w */ { BxImmediate_Iw, BX_IA_MOV_EwIw }, /* /1 /w */ { 0, BX_IA_ERROR }, /* /2 /w */ { 0, BX_IA_ERROR }, /* /3 /w */ { 0, BX_IA_ERROR }, /* /4 /w */ { 0, BX_IA_ERROR }, /* /5 /w */ { 0, BX_IA_ERROR }, /* /6 /w */ { 0, BX_IA_ERROR }, /* /7 /w */ { 0, BX_IA_ERROR }, // osize = 32 bit /* /0 /d */ { BxImmediate_Id, BX_IA_MOV_EdId }, /* /1 /d */ { 0, BX_IA_ERROR }, /* /2 /d */ { 0, BX_IA_ERROR }, /* /3 /d */ { 0, BX_IA_ERROR }, /* /4 /d */ { 0, BX_IA_ERROR }, /* /5 /d */ { 0, BX_IA_ERROR }, /* /6 /d */ { 0, BX_IA_ERROR }, /* /7 /d */ { 0, BX_IA_ERROR }, #if BX_SUPPORT_X86_64 // osize = 64 bit /* /0 /q */ { BxImmediate_Id, BX_IA_MOV_EqId }, /* /1 /q */ { 0, BX_IA_ERROR }, /* /2 /q */ { 0, BX_IA_ERROR }, /* /3 /q */ { 0, BX_IA_ERROR }, /* /4 /q */ { 0, BX_IA_ERROR }, /* /5 /q */ { 0, BX_IA_ERROR }, /* /6 /q */ { 0, BX_IA_ERROR }, /* /7 /q */ { 0, BX_IA_ERROR }, #endif }; // opcode C8 static const BxOpcodeInfo_t BxOpcodeTableC8_32[] = { /* C8 /w */ { BxImmediate_Iw | BxImmediate_Ib2, BX_IA_ENTER_Op16_IwIb }, /* C8 /d */ { BxImmediate_Iw | BxImmediate_Ib2, BX_IA_ENTER_Op32_IwIb }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableC8_64[] = { /* C8 /w */ { BxImmediate_Iw | BxImmediate_Ib2, BX_IA_ENTER_Op64_IwIb }, /* C8 /d */ { BxImmediate_Iw | BxImmediate_Ib2, BX_IA_ENTER_Op64_IwIb }, /* C8 /q */ { BxImmediate_Iw | BxImmediate_Ib2, BX_IA_ENTER_Op64_IwIb }, }; #endif // opcode C9 static const BxOpcodeInfo_t BxOpcodeTableC9_32[] = { /* C9 /w */ { 0, BX_IA_LEAVE_Op16 }, /* C9 /d */ { 0, BX_IA_LEAVE_Op32 }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableC9_64[] = { /* C9 /w */ { 0, BX_IA_LEAVE_Op64 }, /* C9 /d */ { 0, BX_IA_LEAVE_Op64 }, /* C9 /q */ { 0, BX_IA_LEAVE_Op64 }, }; #endif // opcode CA static const BxOpcodeInfo_t BxOpcodeTableCA[] = { /* CA /w */ { BxImmediate_Iw, BX_IA_RETF_Op16_Iw }, /* CA /d */ { BxImmediate_Iw, BX_IA_RETF_Op32_Iw }, #if BX_SUPPORT_X86_64 /* CA /q */ { BxImmediate_Iw, BX_IA_RETF_Op64_Iw }, #endif }; // opcode CB static const BxOpcodeInfo_t BxOpcodeTableCB[] = { /* CB /w */ { 0, BX_IA_RETF_Op16 }, /* CB /d */ { 0, BX_IA_RETF_Op32 }, #if BX_SUPPORT_X86_64 /* CB /q */ { 0, BX_IA_RETF_Op64 }, #endif }; // opcode CC static const BxOpcodeInfo_t BxOpcodeTableCC[] = { /* CC */ { 0, BX_IA_INT3 }, }; // opcode CD static const BxOpcodeInfo_t BxOpcodeTableCD[] = { /* CD /w */ { BxImmediate_Ib, BX_IA_INT_Ib }, /* CD /d */ { BxImmediate_Ib, BX_IA_INT_Ib }, #if BX_SUPPORT_X86_64 /* CD /q */ { BxImmediate_Ib, BX_IA_INT_Ib }, #endif }; // opcode CE static const BxOpcodeInfo_t BxOpcodeTableCE_32[] = { /* CE */ { 0, BX_IA_INTO }, }; // opcode CF static const BxOpcodeInfo_t BxOpcodeTableCF_32[] = { /* CF /w */ { 0, BX_IA_IRET_Op16 }, /* CF /d */ { 0, BX_IA_IRET_Op32 }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableCF_64[] = { /* CF /w */ { 0, BX_IA_IRET_Op64 }, /* CF /d */ { 0, BX_IA_IRET_Op64 }, /* CF /q */ { 0, BX_IA_IRET_Op64 }, }; #endif // opcode D0 static const BxOpcodeInfo_t BxOpcodeTableD0_G2EbI1[8] = { /* /0 */ { BxImmediate_I1, BX_IA_ROL_EbIb }, /* /1 */ { BxImmediate_I1, BX_IA_ROR_EbIb }, /* /2 */ { BxImmediate_I1, BX_IA_RCL_EbIb }, /* /3 */ { BxImmediate_I1, BX_IA_RCR_EbIb }, /* /4 */ { BxImmediate_I1, BX_IA_SHL_EbIb }, /* /5 */ { BxImmediate_I1, BX_IA_SHR_EbIb }, /* /6 */ { BxImmediate_I1, BX_IA_SHL_EbIb }, /* /7 */ { BxImmediate_I1, BX_IA_SAR_EbIb } }; // opcode D1 static const BxOpcodeInfo_t BxOpcodeTableD1_G2EvI1[] = { // osize = 16 bit /* /0 /w */ { BxImmediate_I1, BX_IA_ROL_EwIb }, /* /1 /w */ { BxImmediate_I1, BX_IA_ROR_EwIb }, /* /2 /w */ { BxImmediate_I1, BX_IA_RCL_EwIb }, /* /3 /w */ { BxImmediate_I1, BX_IA_RCR_EwIb }, /* /4 /w */ { BxImmediate_I1, BX_IA_SHL_EwIb }, /* /5 /w */ { BxImmediate_I1, BX_IA_SHR_EwIb }, /* /6 /w */ { BxImmediate_I1, BX_IA_SHL_EwIb }, /* /7 /w */ { BxImmediate_I1, BX_IA_SAR_EwIb }, // osize = 32 bit /* /0 /d */ { BxImmediate_I1, BX_IA_ROL_EdIb }, /* /1 /d */ { BxImmediate_I1, BX_IA_ROR_EdIb }, /* /2 /d */ { BxImmediate_I1, BX_IA_RCL_EdIb }, /* /3 /d */ { BxImmediate_I1, BX_IA_RCR_EdIb }, /* /4 /d */ { BxImmediate_I1, BX_IA_SHL_EdIb }, /* /5 /d */ { BxImmediate_I1, BX_IA_SHR_EdIb }, /* /6 /d */ { BxImmediate_I1, BX_IA_SHL_EdIb }, /* /7 /d */ { BxImmediate_I1, BX_IA_SAR_EdIb }, #if BX_SUPPORT_X86_64 // osize = 64 bit /* /0 /q */ { BxImmediate_I1, BX_IA_ROL_EqIb }, /* /1 /q */ { BxImmediate_I1, BX_IA_ROR_EqIb }, /* /2 /q */ { BxImmediate_I1, BX_IA_RCL_EqIb }, /* /3 /q */ { BxImmediate_I1, BX_IA_RCR_EqIb }, /* /4 /q */ { BxImmediate_I1, BX_IA_SHL_EqIb }, /* /5 /q */ { BxImmediate_I1, BX_IA_SHR_EqIb }, /* /6 /q */ { BxImmediate_I1, BX_IA_SHL_EqIb }, /* /7 /q */ { BxImmediate_I1, BX_IA_SAR_EqIb }, #endif }; // opcode D2 static const BxOpcodeInfo_t BxOpcodeTableD2_G2Eb[8] = { /* /0 */ { 0, BX_IA_ROL_Eb }, /* /1 */ { 0, BX_IA_ROR_Eb }, /* /2 */ { 0, BX_IA_RCL_Eb }, /* /3 */ { 0, BX_IA_RCR_Eb }, /* /4 */ { 0, BX_IA_SHL_Eb }, /* /5 */ { 0, BX_IA_SHR_Eb }, /* /6 */ { 0, BX_IA_SHL_Eb }, /* /7 */ { 0, BX_IA_SAR_Eb } }; // opcode D3 static const BxOpcodeInfo_t BxOpcodeTableD3_G2Ev[] = { // osize = 16 bit /* /0 /w */ { 0, BX_IA_ROL_Ew }, /* /1 /w */ { 0, BX_IA_ROR_Ew }, /* /2 /w */ { 0, BX_IA_RCL_Ew }, /* /3 /w */ { 0, BX_IA_RCR_Ew }, /* /4 /w */ { 0, BX_IA_SHL_Ew }, /* /5 /w */ { 0, BX_IA_SHR_Ew }, /* /6 /w */ { 0, BX_IA_SHL_Ew }, /* /7 /w */ { 0, BX_IA_SAR_Ew }, // osize = 32 bit /* /0 /d */ { 0, BX_IA_ROL_Ed }, /* /1 /d */ { 0, BX_IA_ROR_Ed }, /* /2 /d */ { 0, BX_IA_RCL_Ed }, /* /3 /d */ { 0, BX_IA_RCR_Ed }, /* /4 /d */ { 0, BX_IA_SHL_Ed }, /* /5 /d */ { 0, BX_IA_SHR_Ed }, /* /6 /d */ { 0, BX_IA_SHL_Ed }, /* /7 /d */ { 0, BX_IA_SAR_Ed }, #if BX_SUPPORT_X86_64 // osize = 64 bit /* /0 /q */ { 0, BX_IA_ROL_Eq }, /* /1 /q */ { 0, BX_IA_ROR_Eq }, /* /2 /q */ { 0, BX_IA_RCL_Eq }, /* /3 /q */ { 0, BX_IA_RCR_Eq }, /* /4 /q */ { 0, BX_IA_SHL_Eq }, /* /5 /q */ { 0, BX_IA_SHR_Eq }, /* /6 /q */ { 0, BX_IA_SHL_Eq }, /* /7 /q */ { 0, BX_IA_SAR_Eq }, #endif }; // opcode D4 static const BxOpcodeInfo_t BxOpcodeTableD4_32[] = { /* D4 /w */ { BxImmediate_Ib, BX_IA_AAM }, /* D4 /d */ { BxImmediate_Ib, BX_IA_AAM }, }; // opcode D5 static const BxOpcodeInfo_t BxOpcodeTableD5_32[] = { /* D5 /w */ { BxImmediate_Ib, BX_IA_AAD }, /* D5 /d */ { BxImmediate_Ib, BX_IA_AAD }, }; // opcode D6 static const BxOpcodeInfo_t BxOpcodeTableD6_32[] = { /* D6 */ { 0, BX_IA_SALC }, }; // opcode D7 static const BxOpcodeInfo_t BxOpcodeTableD7[] = { /* D7 */ { 0, BX_IA_XLAT }, }; // opcode E0 static const BxOpcodeInfo_t BxOpcodeTableE0_32[] = { /* E0 /w */ { BxImmediate_BrOff8, BX_IA_LOOPNE_Op16_Jb }, /* E0 /d */ { BxImmediate_BrOff8, BX_IA_LOOPNE_Op32_Jb }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableE0_64[] = { /* E0 /w */ { BxImmediate_BrOff8, BX_IA_LOOPNE_Op64_Jb }, /* E0 /d */ { BxImmediate_BrOff8, BX_IA_LOOPNE_Op64_Jb }, /* E0 /q */ { BxImmediate_BrOff8, BX_IA_LOOPNE_Op64_Jb }, }; #endif // opcode E1 static const BxOpcodeInfo_t BxOpcodeTableE1_32[] = { /* E1 /w */ { BxImmediate_BrOff8, BX_IA_LOOPE_Op16_Jb }, /* E1 /d */ { BxImmediate_BrOff8, BX_IA_LOOPE_Op32_Jb }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableE1_64[] = { /* E1 /w */ { BxImmediate_BrOff8, BX_IA_LOOPE_Op64_Jb }, /* E1 /d */ { BxImmediate_BrOff8, BX_IA_LOOPE_Op64_Jb }, /* E1 /q */ { BxImmediate_BrOff8, BX_IA_LOOPE_Op64_Jb }, }; #endif // opcode E2 static const BxOpcodeInfo_t BxOpcodeTableE2_32[] = { /* E2 /w */ { BxImmediate_BrOff8, BX_IA_LOOP_Op16_Jb }, /* E2 /d */ { BxImmediate_BrOff8, BX_IA_LOOP_Op32_Jb }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableE2_64[] = { /* E2 /w */ { BxImmediate_BrOff8, BX_IA_LOOP_Op64_Jb }, /* E2 /d */ { BxImmediate_BrOff8, BX_IA_LOOP_Op64_Jb }, /* E2 /q */ { BxImmediate_BrOff8, BX_IA_LOOP_Op64_Jb }, }; #endif // opcode E3 static const BxOpcodeInfo_t BxOpcodeTableE3_32[] = { /* E3 /w */ { BxImmediate_BrOff8, BX_IA_JCXZ_Jb }, /* E3 /d */ { BxImmediate_BrOff8, BX_IA_JECXZ_Jb }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableE3_64[] = { /* E3 /w */ { BxImmediate_BrOff8, BX_IA_JRCXZ_Jb }, /* E3 /d */ { BxImmediate_BrOff8, BX_IA_JRCXZ_Jb }, /* E3 /q */ { BxImmediate_BrOff8, BX_IA_JRCXZ_Jb }, }; #endif // opcode E4 static const BxOpcodeInfo_t BxOpcodeTableE4[] = { /* E4 /w */ { BxImmediate_Ib, BX_IA_IN_ALIb }, /* E4 /d */ { BxImmediate_Ib, BX_IA_IN_ALIb }, #if BX_SUPPORT_X86_64 /* E4 /q */ { BxImmediate_Ib, BX_IA_IN_ALIb }, #endif }; // opcode E5 static const BxOpcodeInfo_t BxOpcodeTableE5[] = { /* E5 /w */ { BxImmediate_Ib, BX_IA_IN_AXIb }, /* E5 /d */ { BxImmediate_Ib, BX_IA_IN_EAXIb }, #if BX_SUPPORT_X86_64 /* E5 /q */ { BxImmediate_Ib, BX_IA_IN_EAXIb }, #endif }; // opcode E6 static const BxOpcodeInfo_t BxOpcodeTableE6[] = { /* E6 /w */ { BxImmediate_Ib, BX_IA_OUT_IbAL }, /* E6 /d */ { BxImmediate_Ib, BX_IA_OUT_IbAL }, #if BX_SUPPORT_X86_64 /* E6 /q */ { BxImmediate_Ib, BX_IA_OUT_IbAL }, #endif }; // opcode E7 static const BxOpcodeInfo_t BxOpcodeTableE7[] = { /* E7 /w */ { BxImmediate_Ib, BX_IA_OUT_IbAX }, /* E7 /d */ { BxImmediate_Ib, BX_IA_OUT_IbEAX }, #if BX_SUPPORT_X86_64 /* E7 /q */ { BxImmediate_Ib, BX_IA_OUT_IbEAX }, #endif }; // opcode E8 static const BxOpcodeInfo_t BxOpcodeTableE8_32[] = { /* E8 /w */ { BxImmediate_BrOff16, BX_IA_CALL_Jw }, /* E8 /d */ { BxImmediate_BrOff32, BX_IA_CALL_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableE8_64[] = { /* E8 /w */ { BxImmediate_BrOff32, BX_IA_CALL_Jq }, /* E8 /d */ { BxImmediate_BrOff32, BX_IA_CALL_Jq }, /* E8 /q */ { BxImmediate_BrOff32, BX_IA_CALL_Jq }, }; #endif // opcode E9 static const BxOpcodeInfo_t BxOpcodeTableE9_32[] = { /* E9 /w */ { BxImmediate_BrOff16, BX_IA_JMP_Jw }, /* E9 /d */ { BxImmediate_BrOff32, BX_IA_JMP_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableE9_64[] = { /* E9 /w */ { BxImmediate_BrOff32, BX_IA_JMP_Jq }, /* E9 /d */ { BxImmediate_BrOff32, BX_IA_JMP_Jq }, /* E9 /q */ { BxImmediate_BrOff32, BX_IA_JMP_Jq }, }; #endif // opcode EA static const BxOpcodeInfo_t BxOpcodeTableEA_32[] = { /* EA /w */ { BxImmediate_Iw | BxImmediate_Iw2, BX_IA_JMPF_Ap }, /* EA /d */ { BxImmediate_Id | BxImmediate_Iw2, BX_IA_JMPF_Ap }, }; // opcode EB static const BxOpcodeInfo_t BxOpcodeTableEB_32[] = { /* EB /w */ { BxImmediate_BrOff8, BX_IA_JMP_Jw }, /* EB /d */ { BxImmediate_BrOff8, BX_IA_JMP_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableEB_64[] = { /* EB /w */ { BxImmediate_BrOff8, BX_IA_JMP_Jq }, /* EB /d */ { BxImmediate_BrOff8, BX_IA_JMP_Jq }, /* EB /q */ { BxImmediate_BrOff8, BX_IA_JMP_Jq }, }; #endif // opcode EC static const BxOpcodeInfo_t BxOpcodeTableEC[] = { /* EC /w */ { 0, BX_IA_IN_ALDX }, /* EC /d */ { 0, BX_IA_IN_ALDX }, #if BX_SUPPORT_X86_64 /* EC /q */ { 0, BX_IA_IN_ALDX }, #endif }; // opcode ED static const BxOpcodeInfo_t BxOpcodeTableED[] = { /* ED /w */ { 0, BX_IA_IN_AXDX }, /* ED /d */ { 0, BX_IA_IN_EAXDX }, #if BX_SUPPORT_X86_64 /* ED /q */ { 0, BX_IA_IN_EAXDX }, #endif }; // opcode EE static const BxOpcodeInfo_t BxOpcodeTableEE[] = { /* EE /w */ { 0, BX_IA_OUT_DXAL }, /* EE /d */ { 0, BX_IA_OUT_DXAL }, #if BX_SUPPORT_X86_64 /* EE /q */ { 0, BX_IA_OUT_DXAL }, #endif }; // opcode EF static const BxOpcodeInfo_t BxOpcodeTableEF[] = { /* EF /w */ { 0, BX_IA_OUT_DXAX }, /* EF /d */ { 0, BX_IA_OUT_DXEAX }, #if BX_SUPPORT_X86_64 /* EF /q */ { 0, BX_IA_OUT_DXEAX }, #endif }; // opcode F1 static const BxOpcodeInfo_t BxOpcodeTableF1[] = { /* F1 */ { 0, BX_IA_INT1 }, }; // opcode F4 static const BxOpcodeInfo_t BxOpcodeTableF4[] = { /* F4 */ { 0, BX_IA_HLT }, }; // opcode F5 static const BxOpcodeInfo_t BxOpcodeTableF5[] = { /* F5 */ { 0, BX_IA_CMC }, }; // opcode F6 static const BxOpcodeInfo_t BxOpcodeTableF6_G3Eb[8] = { /* /0 */ { BxImmediate_Ib, BX_IA_TEST_EbIb }, /* /1 */ { BxImmediate_Ib, BX_IA_TEST_EbIb }, /* /2 */ { 0, BX_IA_NOT_Eb }, /* /3 */ { 0, BX_IA_NEG_Eb }, /* /4 */ { 0, BX_IA_MUL_ALEb }, /* /5 */ { 0, BX_IA_IMUL_ALEb }, /* /6 */ { 0, BX_IA_DIV_ALEb }, /* /7 */ { 0, BX_IA_IDIV_ALEb } }; // opcode F7 static const BxOpcodeInfo_t BxOpcodeTableF7_G3Ev[] = { // osize = 16 bit /* /0 /w */ { BxImmediate_Iw, BX_IA_TEST_EwIw }, /* /1 /w */ { BxImmediate_Iw, BX_IA_TEST_EwIw }, /* /2 /w */ { 0, BX_IA_NOT_Ew }, /* /3 /w */ { 0, BX_IA_NEG_Ew }, /* /4 /w */ { 0, BX_IA_MUL_AXEw }, /* /5 /w */ { 0, BX_IA_IMUL_AXEw }, /* /6 /w */ { 0, BX_IA_DIV_AXEw }, /* /7 /w */ { 0, BX_IA_IDIV_AXEw }, // osize = 32 bit /* /0 /d */ { BxImmediate_Id, BX_IA_TEST_EdId }, /* /1 /d */ { BxImmediate_Id, BX_IA_TEST_EdId }, /* /2 /d */ { 0, BX_IA_NOT_Ed }, /* /3 /d */ { 0, BX_IA_NEG_Ed }, /* /4 /d */ { 0, BX_IA_MUL_EAXEd }, /* /5 /d */ { 0, BX_IA_IMUL_EAXEd }, /* /6 /d */ { 0, BX_IA_DIV_EAXEd }, /* /7 /d */ { 0, BX_IA_IDIV_EAXEd }, #if BX_SUPPORT_X86_64 // osize = 64 bit /* /0 /q */ { BxImmediate_Id, BX_IA_TEST_EqId }, /* /1 /q */ { BxImmediate_Id, BX_IA_TEST_EqId }, /* /2 /q */ { 0, BX_IA_NOT_Eq }, /* /3 /q */ { 0, BX_IA_NEG_Eq }, /* /4 /q */ { 0, BX_IA_MUL_RAXEq }, /* /5 /q */ { 0, BX_IA_IMUL_RAXEq }, /* /6 /q */ { 0, BX_IA_DIV_RAXEq }, /* /7 /q */ { 0, BX_IA_IDIV_RAXEq }, #endif }; // opcode F8 static const BxOpcodeInfo_t BxOpcodeTableF8[] = { /* F8 */ { 0, BX_IA_CLC }, }; // opcode F9 static const BxOpcodeInfo_t BxOpcodeTableF9[] = { /* F9 */ { 0, BX_IA_STC }, }; // opcode FA static const BxOpcodeInfo_t BxOpcodeTableFA[] = { /* FA */ { 0, BX_IA_CLI }, }; // opcode FB static const BxOpcodeInfo_t BxOpcodeTableFB[] = { /* FB */ { 0, BX_IA_STI }, }; // opcode FC static const BxOpcodeInfo_t BxOpcodeTableFC[] = { /* FC */ { 0, BX_IA_CLD }, }; // opcode FD static const BxOpcodeInfo_t BxOpcodeTableFD[] = { /* FD */ { 0, BX_IA_STD }, }; // opcode FE static const BxOpcodeInfo_t BxOpcodeTableG4[8] = { /* /0 */ { 0, BX_IA_INC_Eb }, /* /1 */ { 0, BX_IA_DEC_Eb }, /* /2 */ { 0, BX_IA_ERROR }, /* /3 */ { 0, BX_IA_ERROR }, /* /4 */ { 0, BX_IA_ERROR }, /* /5 */ { 0, BX_IA_ERROR }, /* /6 */ { 0, BX_IA_ERROR }, /* /7 */ { 0, BX_IA_ERROR } }; // opcode FF static const BxOpcodeInfo_t BxOpcodeTableFF_32G5v[8*2] = { // osize = 16 bit /* /0 /w */ { 0, BX_IA_INC_Ew }, /* /1 /w */ { 0, BX_IA_DEC_Ew }, /* /2 /w */ { 0, BX_IA_CALL_Ew }, /* /3 /w */ { 0, BX_IA_CALLF_Op16_Ep }, /* /4 /w */ { 0, BX_IA_JMP_Ew }, /* /5 /w */ { 0, BX_IA_JMPF_Op16_Ep }, /* /6 /w */ { 0, BX_IA_PUSH_Ew }, /* /7 /w */ { 0, BX_IA_ERROR }, // osize = 32 bit /* /0 /d */ { 0, BX_IA_INC_Ed }, /* /1 /d */ { 0, BX_IA_DEC_Ed }, /* /2 /d */ { 0, BX_IA_CALL_Ed }, /* /3 /d */ { 0, BX_IA_CALLF_Op32_Ep }, /* /4 /d */ { 0, BX_IA_JMP_Ed }, /* /5 /d */ { 0, BX_IA_JMPF_Op32_Ep }, /* /6 /d */ { 0, BX_IA_PUSH_Ed }, /* /7 /d */ { 0, BX_IA_ERROR }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableFF_64G5v[8*3] = { // osize = 16 bit /* /0 */ { 0, BX_IA_INC_Ew }, /* /1 */ { 0, BX_IA_DEC_Ew }, /* /2 */ { 0, BX_IA_CALL_Eq }, /* /3 */ { 0, BX_IA_CALLF_Op16_Ep }, /* /4 */ { 0, BX_IA_JMP_Eq }, /* /5 */ { 0, BX_IA_JMPF_Op16_Ep }, /* /6 */ { 0, BX_IA_PUSH_Ew }, /* /7 */ { 0, BX_IA_ERROR }, // osize = 32 bit /* /0 */ { 0, BX_IA_INC_Ed }, /* /1 */ { 0, BX_IA_DEC_Ed }, /* /2 */ { 0, BX_IA_CALL_Eq }, /* /3 */ { 0, BX_IA_CALLF_Op32_Ep }, /* /4 */ { 0, BX_IA_JMP_Eq }, /* /5 */ { 0, BX_IA_JMPF_Op32_Ep }, /* /6 */ { 0, BX_IA_PUSH_Eq }, /* /7 */ { 0, BX_IA_ERROR }, // osize = 64 bit /* /0 */ { 0, BX_IA_INC_Eq }, /* /1 */ { 0, BX_IA_DEC_Eq }, /* /2 */ { 0, BX_IA_CALL_Eq }, /* /3 */ { 0, BX_IA_CALLF_Op64_Ep }, // TODO: 64-bit offset for Intel /* /4 */ { 0, BX_IA_JMP_Eq }, /* /5 */ { 0, BX_IA_JMPF_Op64_Ep }, // TODO: 64-bit offset for Intel /* /6 */ { 0, BX_IA_PUSH_Eq }, /* /7 */ { 0, BX_IA_ERROR }, }; #endif // opcode 0F 00 static const BxOpcodeInfo_t BxOpcodeTableG6[8] = { /* /0 */ { 0, BX_IA_SLDT_Ew }, /* /1 */ { 0, BX_IA_STR_Ew }, /* /2 */ { 0, BX_IA_LLDT_Ew }, /* /3 */ { 0, BX_IA_LTR_Ew }, /* /4 */ { 0, BX_IA_VERR_Ew }, /* /5 */ { 0, BX_IA_VERW_Ew }, /* /6 */ { 0, BX_IA_ERROR }, /* /7 */ { 0, BX_IA_ERROR } }; // opcode 0F 01 static const BxOpcodeInfo_t BxOpcodeTable0F01_32[] = { /* /0 */ { 0, BX_IA_SGDT_Ms }, /* /1 */ { 0, BX_IA_SIDT_Ms }, /* /2 */ { 0, BX_IA_LGDT_Ms }, /* /3 */ { 0, BX_IA_LIDT_Ms }, /* /4 */ { 0, BX_IA_SMSW_Ew }, /* /5 */ { 0, BX_IA_ERROR }, /* /6 */ { 0, BX_IA_LMSW_Ew }, /* /7 */ { 0, BX_IA_INVLPG }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F01_64[] = { /* /0 */ { 0, BX_IA_SGDT_Op64_Ms }, /* /1 */ { 0, BX_IA_SIDT_Op64_Ms }, /* /2 */ { 0, BX_IA_LGDT_Op64_Ms }, /* /3 */ { 0, BX_IA_LIDT_Op64_Ms }, /* /4 */ { 0, BX_IA_SMSW_Ew }, /* /5 */ { 0, BX_IA_ERROR }, /* /6 */ { 0, BX_IA_LMSW_Ew }, /* /7 */ { 0, BX_IA_INVLPG }, }; #endif static const BxOpcodeInfo_t BxOpcodeTable0F01[64] = { /* 0F 01 C0 */ { 0, BX_IA_ERROR }, /* 0F 01 C1 */ { BxNoPrefixSSE, BX_IA_VMCALL }, /* 0F 01 C2 */ { BxNoPrefixSSE, BX_IA_VMLAUNCH }, /* 0F 01 C3 */ { BxNoPrefixSSE, BX_IA_VMRESUME }, /* 0F 01 C4 */ { BxNoPrefixSSE, BX_IA_VMXOFF }, /* 0F 01 C5 */ { 0, BX_IA_ERROR }, /* 0F 01 C6 */ { 0, BX_IA_ERROR }, /* 0F 01 C7 */ { 0, BX_IA_ERROR }, /* 0F 01 C8 */ { BxNoPrefixSSE, BX_IA_MONITOR }, /* 0F 01 C9 */ { BxNoPrefixSSE, BX_IA_MWAIT }, /* 0F 01 CA */ { BxNoPrefixSSE, BX_IA_CLAC }, /* 0F 01 CB */ { BxNoPrefixSSE, BX_IA_STAC }, /* 0F 01 CC */ { 0, BX_IA_ERROR }, /* 0F 01 CD */ { 0, BX_IA_ERROR }, /* 0F 01 CE */ { 0, BX_IA_ERROR }, /* 0F 01 CF */ { 0, BX_IA_ERROR }, /* 0F 01 D0 */ { BxNoPrefixSSE, BX_IA_XGETBV }, /* 0F 01 D1 */ { BxNoPrefixSSE, BX_IA_XSETBV }, /* 0F 01 D2 */ { 0, BX_IA_ERROR }, /* 0F 01 D3 */ { 0, BX_IA_ERROR }, /* 0F 01 D4 */ { BxNoPrefixSSE, BX_IA_VMFUNC }, /* 0F 01 D5 */ { 0, BX_IA_ERROR }, /* 0F 01 D6 */ { 0, BX_IA_ERROR }, /* 0F 01 D7 */ { 0, BX_IA_ERROR }, /* 0F 01 D8 */ { 0, BX_IA_VMRUN }, /* 0F 01 D9 */ { 0, BX_IA_VMMCALL }, /* 0F 01 DA */ { 0, BX_IA_VMLOAD }, /* 0F 01 DB */ { 0, BX_IA_VMSAVE }, /* 0F 01 DC */ { 0, BX_IA_STGI }, /* 0F 01 DD */ { 0, BX_IA_CLGI }, /* 0F 01 DE */ { 0, BX_IA_SKINIT }, /* 0F 01 DF */ { 0, BX_IA_INVLPGA }, /* 0F 01 E0 */ { 0, BX_IA_SMSW_Ew }, /* 0F 01 E1 */ { 0, BX_IA_SMSW_Ew }, /* 0F 01 E2 */ { 0, BX_IA_SMSW_Ew }, /* 0F 01 E3 */ { 0, BX_IA_SMSW_Ew }, /* 0F 01 E4 */ { 0, BX_IA_SMSW_Ew }, /* 0F 01 E5 */ { 0, BX_IA_SMSW_Ew }, /* 0F 01 E6 */ { 0, BX_IA_SMSW_Ew }, /* 0F 01 E7 */ { 0, BX_IA_SMSW_Ew }, /* 0F 01 E8 */ { 0, BX_IA_ERROR }, /* 0F 01 E9 */ { 0, BX_IA_ERROR }, /* 0F 01 EA */ { 0, BX_IA_ERROR }, /* 0F 01 EB */ { 0, BX_IA_ERROR }, /* 0F 01 EC */ { 0, BX_IA_ERROR }, /* 0F 01 ED */ { 0, BX_IA_ERROR }, #if BX_SUPPORT_PKEYS /* 0F 01 EE */ { BxNoPrefixSSE, BX_IA_RDPKRU }, /* 0F 01 EF */ { BxNoPrefixSSE, BX_IA_WRPKRU }, #else /* 0F 01 EE */ { 0, BX_IA_ERROR }, /* 0F 01 EF */ { 0, BX_IA_ERROR }, #endif /* 0F 01 F0 */ { 0, BX_IA_LMSW_Ew }, /* 0F 01 F1 */ { 0, BX_IA_LMSW_Ew }, /* 0F 01 F2 */ { 0, BX_IA_LMSW_Ew }, /* 0F 01 F3 */ { 0, BX_IA_LMSW_Ew }, /* 0F 01 F4 */ { 0, BX_IA_LMSW_Ew }, /* 0F 01 F5 */ { 0, BX_IA_LMSW_Ew }, /* 0F 01 F6 */ { 0, BX_IA_LMSW_Ew }, /* 0F 01 F7 */ { 0, BX_IA_LMSW_Ew }, #if BX_SUPPORT_X86_64 /* 0F 01 F8 */ { 0, BX_IA_SWAPGS }, #else /* 0F 01 F8 */ { 0, BX_IA_ERROR }, #endif /* 0F 01 F9 */ { 0, BX_IA_RDTSCP }, // end trace to avoid multiple TSC samples in one cycle /* 0F 01 FA */ { 0, BX_IA_MONITORX }, /* 0F 01 FB */ { 0, BX_IA_MWAITX }, /* 0F 01 FC */ { 0, BX_IA_CLZERO }, /* 0F 01 FD */ { 0, BX_IA_ERROR }, /* 0F 01 FE */ { 0, BX_IA_ERROR }, /* 0F 01 FF */ { 0, BX_IA_ERROR }, }; // opcode 0F 02 static const BxOpcodeInfo_t BxOpcodeTable0F02[] = { /* 0F 02 /w */ { 0, BX_IA_LAR_GwEw }, /* 0F 02 /d */ { 0, BX_IA_LAR_GdEw }, #if BX_SUPPORT_X86_64 /* 0F 02 /q */ { 0, BX_IA_LAR_GdEw }, #endif }; // opcode 0F 03 static const BxOpcodeInfo_t BxOpcodeTable0F03[] = { /* 0F 03 /w */ { 0, BX_IA_LSL_GwEw }, /* 0F 03 /d */ { 0, BX_IA_LSL_GdEw }, #if BX_SUPPORT_X86_64 /* 0F 03 /q */ { 0, BX_IA_LSL_GdEw }, #endif }; // opcode 0F 05 static const BxOpcodeInfo_t BxOpcodeTable0F05_32[] = { /* 0F 05 */ { 0, BX_IA_SYSCALL_LEGACY }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F05_64[] = { /* 0F 05 */ { 0, BX_IA_SYSCALL }, }; #endif // opcode 0F 06 static const BxOpcodeInfo_t BxOpcodeTable0F06[] = { /* 0F 06 */ { 0, BX_IA_CLTS }, }; // opcode 0F 07 static const BxOpcodeInfo_t BxOpcodeTable0F07_32[] = { /* 0F 07 */ { 0, BX_IA_SYSRET_LEGACY }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F07_64[] = { /* 0F 07 */ { 0, BX_IA_SYSRET }, }; #endif // opcode 0F 08 static const BxOpcodeInfo_t BxOpcodeTable0F08[] = { /* 0F 08 */ { 0, BX_IA_INVD }, }; // opcode 0F 09 static const BxOpcodeInfo_t BxOpcodeTable0F09[] = { /* 0F 09 */ { 0, BX_IA_WBINVD }, }; // opcode 0F 0B static const BxOpcodeInfo_t BxOpcodeTable0F0B[] = { /* 0F 0B */ { 0, BX_IA_UD2 }, }; // opcode 0F 0D - 3DNow! PREFETCHW on AMD, NOP on older Intel CPUs static const BxOpcodeInfo_t BxOpcodeTable0F0D[] = { /* 0F 0D /w */ { 0, BX_IA_PREFETCHW_Mb }, /* 0F 0D /d */ { 0, BX_IA_PREFETCHW_Mb }, #if BX_SUPPORT_X86_64 /* 0F 0D /q */ { 0, BX_IA_PREFETCHW_Mb }, #endif }; // opcode 0F 0E - 3DNow! FEMMS static const BxOpcodeInfo_t BxOpcodeTable0F0E[] = { /* 0F 0E */ { 0, BX_IA_FEMMS }, }; // opcode 0F 0F - 3DNow! Opcode Table static const BxOpcodeInfo_t BxOpcodeTable0F0F[] = { /* 0F 0F /w */ { BxImmediate_Ib, BX_IA_ERROR }, /* 0F 0F /d */ { BxImmediate_Ib, BX_IA_ERROR }, #if BX_SUPPORT_X86_64 /* 0F 0F /q */ { BxImmediate_Ib, BX_IA_ERROR }, #endif }; // opcode 0F 10 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F10[4] = { /* -- */ { 0, BX_IA_MOVUPS_VpsWps }, /* 66 */ { 0, BX_IA_MOVUPD_VpdWpd }, /* F3 */ { 0, BX_IA_MOVSS_VssWss }, /* F2 */ { 0, BX_IA_MOVSD_VsdWsd }, }; // opcode 0F 11 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F11[4] = { /* -- */ { 0, BX_IA_MOVUPS_WpsVps }, /* 66 */ { 0, BX_IA_MOVUPD_WpdVpd }, /* F3 */ { 0, BX_IA_MOVSS_WssVss }, /* F2 */ { 0, BX_IA_MOVSD_WsdVsd }, }; // opcode 0F 12 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F12[4] = { /* -- */ { 0, BX_IA_MOVLPS_VpsMq }, /* 66 */ { 0, BX_IA_MOVLPD_VsdMq }, /* F3 */ { 0, BX_IA_MOVSLDUP_VpsWps }, /* F2 */ { 0, BX_IA_MOVDDUP_VpdWq }, }; // opcode 0F 13 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F13[4] = { /* -- */ { 0, BX_IA_MOVLPS_MqVps }, /* 66 */ { 0, BX_IA_MOVLPD_MqVsd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 14 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F14[4] = { /* -- */ { 0, BX_IA_UNPCKLPS_VpsWdq }, /* 66 */ { 0, BX_IA_UNPCKLPD_VpdWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 15 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F15[4] = { /* -- */ { 0, BX_IA_UNPCKHPS_VpsWdq }, /* 66 */ { 0, BX_IA_UNPCKHPD_VpdWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 16 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F16[4] = { /* -- */ { 0, BX_IA_MOVHPS_VpsMq }, /* 66 */ { 0, BX_IA_MOVHPD_VsdMq }, /* F3 */ { 0, BX_IA_MOVSHDUP_VpsWps }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 17 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F17[4] = { /* -- */ { 0, BX_IA_MOVHPS_MqVps }, /* 66 */ { 0, BX_IA_MOVHPD_MqVsd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 18 - opcode group G16, PREFETCH hints #if BX_CPU_LEVEL >= 6 static const BxOpcodeInfo_t BxOpcodeTable0F18_G16[8] = { /* /0 */ { 0, BX_IA_PREFETCHNTA_Mb }, /* /1 */ { 0, BX_IA_PREFETCHT0_Mb }, /* /2 */ { 0, BX_IA_PREFETCHT1_Mb }, /* /3 */ { 0, BX_IA_PREFETCHT2_Mb }, /* /4 */ { 0, BX_IA_PREFETCH_Mb }, /* /5 */ { 0, BX_IA_PREFETCH_Mb }, /* /6 */ { 0, BX_IA_PREFETCH_Mb }, /* /7 */ { 0, BX_IA_PREFETCH_Mb} }; #endif // opcode 0F 19 - 0F 1F static const BxOpcodeInfo_t BxOpcodeTableMultiByteNOP[] = { /* 0F 19 /w */ { 0, BX_IA_NOP }, // multi-byte NOP /* 0F 19 /d */ { 0, BX_IA_NOP }, // multi-byte NOP #if BX_SUPPORT_X86_64 /* 0F 19 /q */ { 0, BX_IA_NOP }, // multi-byte NOP #endif }; // opcode 0F 20 static const BxOpcodeInfo_t BxOpcodeTableMOV_RdCd[8] = { /* /0 */ { 0, BX_IA_MOV_RdCR0 }, /* /1 */ { 0, BX_IA_ERROR }, /* /2 */ { 0, BX_IA_MOV_RdCR2 }, /* /3 */ { 0, BX_IA_MOV_RdCR3 }, /* /4 */ { 0, BX_IA_MOV_RdCR4 }, /* /5 */ { 0, BX_IA_ERROR }, /* /6 */ { 0, BX_IA_ERROR }, /* /7 */ { 0, BX_IA_ERROR }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableMOV_RqCq[8] = { /* /0 */ { 0, BX_IA_MOV_RqCR0 }, /* /1 */ { 0, BX_IA_ERROR }, /* /2 */ { 0, BX_IA_MOV_RqCR2 }, /* /3 */ { 0, BX_IA_MOV_RqCR3 }, /* /4 */ { 0, BX_IA_MOV_RqCR4 }, /* /5 */ { 0, BX_IA_ERROR }, /* /6 */ { 0, BX_IA_ERROR }, /* /7 */ { 0, BX_IA_ERROR }, }; #endif // opcode 0F 21 static const BxOpcodeInfo_t BxOpcodeTable0F21_32[] = { /* 0F 21 */ { 0, BX_IA_MOV_RdDd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F21_64[] = { /* 0F 21 */ { 0, BX_IA_MOV_RqDq }, }; #endif // opcode 0F 22 static const BxOpcodeInfo_t BxOpcodeTableMOV_CdRd[8] = { /* /0 */ { 0, BX_IA_MOV_CR0Rd }, /* /1 */ { 0, BX_IA_ERROR }, /* /2 */ { 0, BX_IA_MOV_CR2Rd }, /* /3 */ { 0, BX_IA_MOV_CR3Rd }, /* /4 */ { 0, BX_IA_MOV_CR4Rd }, /* /5 */ { 0, BX_IA_ERROR }, /* /6 */ { 0, BX_IA_ERROR }, /* /7 */ { 0, BX_IA_ERROR }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTableMOV_CqRq[8] = { /* /0 */ { 0, BX_IA_MOV_CR0Rq }, /* /1 */ { 0, BX_IA_ERROR }, /* /2 */ { 0, BX_IA_MOV_CR2Rq }, /* /3 */ { 0, BX_IA_MOV_CR3Rq }, /* /4 */ { 0, BX_IA_MOV_CR4Rq }, /* /5 */ { 0, BX_IA_ERROR }, /* /6 */ { 0, BX_IA_ERROR }, /* /7 */ { 0, BX_IA_ERROR }, }; #endif // opcode 0F 23 static const BxOpcodeInfo_t BxOpcodeTable0F23_32[] = { /* 0F 23 */ { 0, BX_IA_MOV_DdRd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F23_64[] = { /* 0F 23 */ { 0, BX_IA_MOV_DqRq }, }; #endif // opcode 0F 24 static const BxOpcodeInfo_t BxOpcodeTable0F24_32[] = { /* 0F 24 */ { 0, BX_IA_ERROR }, // BX_IA_MOV_RdTd not implemented }; // opcode 0F 26 static const BxOpcodeInfo_t BxOpcodeTable0F26_32[] = { /* 0F 26 */ { 0, BX_IA_ERROR }, // BX_IA_MOV_TdRd not implemented }; // opcode 0F 28 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F28[4] = { /* -- */ { 0, BX_IA_MOVAPS_VpsWps }, /* 66 */ { 0, BX_IA_MOVAPD_VpdWpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 29 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F29[4] = { /* -- */ { 0, BX_IA_MOVAPS_WpsVps }, /* 66 */ { 0, BX_IA_MOVAPD_WpdVpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 2A static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F2A[] = { /* -- */ { 0, BX_IA_CVTPI2PS_VpsQq }, /* 66 */ { 0, BX_IA_CVTPI2PD_VpdQq }, /* F3 */ { 0, BX_IA_CVTSI2SS_VssEd }, /* F2 */ { 0, BX_IA_CVTSI2SD_VsdEd }, #if BX_SUPPORT_X86_64 /* -- /q */ { 0, BX_IA_CVTPI2PS_VpsQq }, /* 66 /q */ { 0, BX_IA_CVTPI2PD_VpdQq }, /* F3 /q */ { 0, BX_IA_CVTSI2SS_VssEq }, /* F2 /q */ { 0, BX_IA_CVTSI2SD_VsdEq }, #endif }; // opcode 0F 2B static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F2B[4] = { /* -- */ { 0, BX_IA_MOVNTPS_MpsVps }, /* 66 */ { 0, BX_IA_MOVNTPD_MpdVpd }, /* F3 */ { 0, BX_IA_MOVNTSS_MssVss }, /* F2 */ { 0, BX_IA_MOVNTSD_MsdVsd }, }; // opcode 0F 2C static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F2C[] = { /* -- */ { 0, BX_IA_CVTTPS2PI_PqWps }, /* 66 */ { 0, BX_IA_CVTTPD2PI_PqWpd }, /* F3 */ { 0, BX_IA_CVTTSS2SI_GdWss }, /* F2 */ { 0, BX_IA_CVTTSD2SI_GdWsd }, #if BX_SUPPORT_X86_64 /* -- /q */ { 0, BX_IA_CVTTPS2PI_PqWps }, /* 66 /q */ { 0, BX_IA_CVTTPD2PI_PqWpd }, /* F3 /q */ { 0, BX_IA_CVTTSS2SI_GqWss }, /* F2 /q */ { 0, BX_IA_CVTTSD2SI_GqWsd }, #endif }; // opcode 0F 2D static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F2D[] = { /* -- */ { 0, BX_IA_CVTPS2PI_PqWps }, /* 66 */ { 0, BX_IA_CVTPD2PI_PqWpd }, /* F3 */ { 0, BX_IA_CVTSS2SI_GdWss }, /* F2 */ { 0, BX_IA_CVTSD2SI_GdWsd }, #if BX_SUPPORT_X86_64 /* -- /q */ { 0, BX_IA_CVTPS2PI_PqWps }, /* 66 /q */ { 0, BX_IA_CVTPD2PI_PqWpd }, /* F3 /q */ { 0, BX_IA_CVTSS2SI_GqWss }, /* F2 /q */ { 0, BX_IA_CVTSD2SI_GqWsd }, #endif }; // opcode 0F 2E static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F2E[4] = { /* -- */ { 0, BX_IA_UCOMISS_VssWss }, /* 66 */ { 0, BX_IA_UCOMISD_VsdWsd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 2F static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F2F[4] = { /* -- */ { 0, BX_IA_COMISS_VssWss }, /* 66 */ { 0, BX_IA_COMISD_VsdWsd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 30 static const BxOpcodeInfo_t BxOpcodeTable0F30[] = { /* 0F 30 */ { 0, BX_IA_WRMSR }, }; // opcode 0F 31 static const BxOpcodeInfo_t BxOpcodeTable0F31[] = { // end trace to avoid multiple TSC samples in one cycle /* 0F 31 */ { 0, BX_IA_RDTSC }, }; // opcode 0F 32 static const BxOpcodeInfo_t BxOpcodeTable0F32[] = { // end trace to avoid multiple TSC samples in one cycle /* 0F 32 */ { 0, BX_IA_RDMSR }, }; // opcode 0F 33 static const BxOpcodeInfo_t BxOpcodeTable0F33[] = { /* 0F 33 */ { 0, BX_IA_RDPMC }, }; // opcode 0F 34 static const BxOpcodeInfo_t BxOpcodeTable0F34[] = { /* 0F 34 */ { 0, BX_IA_SYSENTER }, }; // opcode 0F 35 static const BxOpcodeInfo_t BxOpcodeTable0F35[] = { /* 0F 35 */ { 0, BX_IA_SYSEXIT }, }; // opcode 0F 37 static const BxOpcodeInfo_t BxOpcodeTable0F37[] = { /* 0F 37 */ { 0, BX_IA_GETSEC }, }; // opcode 0F 40 static const BxOpcodeInfo_t BxOpcodeTable0F40[] = { /* 0F 40 /w */ { 0, BX_IA_CMOVO_GwEw }, /* 0F 40 /d */ { 0, BX_IA_CMOVO_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 40 /q */ { 0, BX_IA_CMOVO_GqEq }, #endif }; // opcode 0F 41 static const BxOpcodeInfo_t BxOpcodeTable0F41[] = { /* 0F 41 /w */ { 0, BX_IA_CMOVNO_GwEw }, /* 0F 41 /d */ { 0, BX_IA_CMOVNO_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 41 /q */ { 0, BX_IA_CMOVNO_GqEq }, #endif }; // opcode 0F 42 static const BxOpcodeInfo_t BxOpcodeTable0F42[] = { /* 0F 42 /w */ { 0, BX_IA_CMOVB_GwEw }, /* 0F 42 /d */ { 0, BX_IA_CMOVB_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 42 /q */ { 0, BX_IA_CMOVB_GqEq }, #endif }; // opcode 0F 43 static const BxOpcodeInfo_t BxOpcodeTable0F43[] = { /* 0F 43 /w */ { 0, BX_IA_CMOVNB_GwEw }, /* 0F 43 /d */ { 0, BX_IA_CMOVNB_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 43 /q */ { 0, BX_IA_CMOVNB_GqEq }, #endif }; // opcode 0F 44 static const BxOpcodeInfo_t BxOpcodeTable0F44[] = { /* 0F 44 /w */ { 0, BX_IA_CMOVZ_GwEw }, /* 0F 44 /d */ { 0, BX_IA_CMOVZ_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 44 /q */ { 0, BX_IA_CMOVZ_GqEq }, #endif }; // opcode 0F 45 static const BxOpcodeInfo_t BxOpcodeTable0F45[] = { /* 0F 45 /w */ { 0, BX_IA_CMOVNZ_GwEw }, /* 0F 45 /d */ { 0, BX_IA_CMOVNZ_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 45 /q */ { 0, BX_IA_CMOVNZ_GqEq }, #endif }; // opcode 0F 46 static const BxOpcodeInfo_t BxOpcodeTable0F46[] = { /* 0F 46 /w */ { 0, BX_IA_CMOVBE_GwEw }, /* 0F 46 /d */ { 0, BX_IA_CMOVBE_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 46 /q */ { 0, BX_IA_CMOVBE_GqEq }, #endif }; // opcode 0F 47 static const BxOpcodeInfo_t BxOpcodeTable0F47[] = { /* 0F 47 /w */ { 0, BX_IA_CMOVNBE_GwEw }, /* 0F 47 /d */ { 0, BX_IA_CMOVNBE_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 47 /q */ { 0, BX_IA_CMOVNBE_GqEq }, #endif }; // opcode 0F 48 static const BxOpcodeInfo_t BxOpcodeTable0F48[] = { /* 0F 48 /w */ { 0, BX_IA_CMOVS_GwEw }, /* 0F 48 /d */ { 0, BX_IA_CMOVS_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 48 /q */ { 0, BX_IA_CMOVS_GqEq }, #endif }; // opcode 0F 49 static const BxOpcodeInfo_t BxOpcodeTable0F49[] = { /* 0F 49 /w */ { 0, BX_IA_CMOVNS_GwEw }, /* 0F 49 /d */ { 0, BX_IA_CMOVNS_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 49 /q */ { 0, BX_IA_CMOVNS_GqEq }, #endif }; // opcode 0F 4A static const BxOpcodeInfo_t BxOpcodeTable0F4A[] = { /* 0F 4A /w */ { 0, BX_IA_CMOVP_GwEw }, /* 0F 4A /d */ { 0, BX_IA_CMOVP_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 4A /q */ { 0, BX_IA_CMOVP_GqEq }, #endif }; // opcode 0F 4B static const BxOpcodeInfo_t BxOpcodeTable0F4B[] = { /* 0F 4B /w */ { 0, BX_IA_CMOVNP_GwEw }, /* 0F 4B /d */ { 0, BX_IA_CMOVNP_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 4B /q */ { 0, BX_IA_CMOVNP_GqEq }, #endif }; // opcode 0F 4C static const BxOpcodeInfo_t BxOpcodeTable0F4C[] = { /* 0F 4C /w */ { 0, BX_IA_CMOVL_GwEw }, /* 0F 4C /d */ { 0, BX_IA_CMOVL_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 4C /q */ { 0, BX_IA_CMOVL_GqEq }, #endif }; // opcode 0F 4D static const BxOpcodeInfo_t BxOpcodeTable0F4D[] = { /* 0F 4D /w */ { 0, BX_IA_CMOVNL_GwEw }, /* 0F 4D /d */ { 0, BX_IA_CMOVNL_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 4D /q */ { 0, BX_IA_CMOVNL_GqEq }, #endif }; // opcode 0F 4E static const BxOpcodeInfo_t BxOpcodeTable0F4E[] = { /* 0F 4E /w */ { 0, BX_IA_CMOVLE_GwEw }, /* 0F 4E /d */ { 0, BX_IA_CMOVLE_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 4E /q */ { 0, BX_IA_CMOVLE_GqEq }, #endif }; // opcode 0F 4F static const BxOpcodeInfo_t BxOpcodeTable0F4F[] = { /* 0F 4F /w */ { 0, BX_IA_CMOVNLE_GwEw }, /* 0F 4F /d */ { 0, BX_IA_CMOVNLE_GdEd }, #if BX_SUPPORT_X86_64 /* 0F 4F /q */ { 0, BX_IA_CMOVNLE_GqEq }, #endif }; // opcode 0F 50 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F50[4] = { /* -- */ { 0, BX_IA_MOVMSKPS_GdUps }, /* 66 */ { 0, BX_IA_MOVMSKPD_GdUpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 51 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F51[4] = { /* -- */ { 0, BX_IA_SQRTPS_VpsWps }, /* 66 */ { 0, BX_IA_SQRTPD_VpdWpd }, /* F3 */ { 0, BX_IA_SQRTSS_VssWss }, /* F2 */ { 0, BX_IA_SQRTSD_VsdWsd }, }; // opcode 0F 52 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F52[4] = { /* -- */ { 0, BX_IA_RSQRTPS_VpsWps }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_RSQRTSS_VssWss }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 53 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F53[4] = { /* -- */ { 0, BX_IA_RCPPS_VpsWps }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_RCPSS_VssWss }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 54 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F54[4] = { /* -- */ { 0, BX_IA_ANDPS_VpsWps }, /* 66 */ { 0, BX_IA_ANDPD_VpdWpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 55 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F55[4] = { /* -- */ { 0, BX_IA_ANDNPS_VpsWps }, /* 66 */ { 0, BX_IA_ANDNPD_VpdWpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 56 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F56[4] = { /* -- */ { 0, BX_IA_ORPS_VpsWps }, /* 66 */ { 0, BX_IA_ORPD_VpdWpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 57 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F57[4] = { /* -- */ { 0, BX_IA_XORPS_VpsWps }, /* 66 */ { 0, BX_IA_XORPD_VpdWpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 58 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F58[] = { /* -- */ { 0, BX_IA_ADDPS_VpsWps }, /* 66 */ { 0, BX_IA_ADDPD_VpdWpd }, /* F3 */ { 0, BX_IA_ADDSS_VssWss }, /* F2 */ { 0, BX_IA_ADDSD_VsdWsd }, }; // opcode 0F 59 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F59[] = { /* -- */ { 0, BX_IA_MULPS_VpsWps }, /* 66 */ { 0, BX_IA_MULPD_VpdWpd }, /* F3 */ { 0, BX_IA_MULSS_VssWss }, /* F2 */ { 0, BX_IA_MULSD_VsdWsd }, }; // opcode 0F 5A static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F5A[] = { /* -- */ { 0, BX_IA_CVTPS2PD_VpdWps }, /* 66 */ { 0, BX_IA_CVTPD2PS_VpsWpd }, /* F3 */ { 0, BX_IA_CVTSS2SD_VsdWss }, /* F2 */ { 0, BX_IA_CVTSD2SS_VssWsd }, }; // opcode 0F 5B static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F5B[4] = { /* -- */ { 0, BX_IA_CVTDQ2PS_VpsWdq }, /* 66 */ { 0, BX_IA_CVTPS2DQ_VdqWps }, /* F3 */ { 0, BX_IA_CVTTPS2DQ_VdqWps }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 5C static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F5C[4] = { /* -- */ { 0, BX_IA_SUBPS_VpsWps }, /* 66 */ { 0, BX_IA_SUBPD_VpdWpd }, /* F3 */ { 0, BX_IA_SUBSS_VssWss }, /* F2 */ { 0, BX_IA_SUBSD_VsdWsd }, }; // opcode 0F 5D static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F5D[4] = { /* -- */ { 0, BX_IA_MINPS_VpsWps }, /* 66 */ { 0, BX_IA_MINPD_VpdWpd }, /* F3 */ { 0, BX_IA_MINSS_VssWss }, /* F2 */ { 0, BX_IA_MINSD_VsdWsd }, }; // opcode 0F 5E static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F5E[4] = { /* -- */ { 0, BX_IA_DIVPS_VpsWps }, /* 66 */ { 0, BX_IA_DIVPD_VpdWpd }, /* F3 */ { 0, BX_IA_DIVSS_VssWss }, /* F2 */ { 0, BX_IA_DIVSD_VsdWsd }, }; // opcode 0F 5F static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F5F[4] = { /* -- */ { 0, BX_IA_MAXPS_VpsWps }, /* 66 */ { 0, BX_IA_MAXPD_VpdWpd }, /* F3 */ { 0, BX_IA_MAXSS_VssWss }, /* F2 */ { 0, BX_IA_MAXSD_VsdWsd }, }; // opcode 0F 60 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F60[4] = { /* -- */ { 0, BX_IA_PUNPCKLBW_PqQd }, /* 66 */ { 0, BX_IA_PUNPCKLBW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 61 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F61[4] = { /* -- */ { 0, BX_IA_PUNPCKLWD_PqQd }, /* 66 */ { 0, BX_IA_PUNPCKLWD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 62 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F62[4] = { /* -- */ { 0, BX_IA_PUNPCKLDQ_PqQd }, /* 66 */ { 0, BX_IA_PUNPCKLDQ_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 63 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F63[4] = { /* -- */ { 0, BX_IA_PACKSSWB_PqQq }, /* 66 */ { 0, BX_IA_PACKSSWB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 64 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F64[4] = { /* -- */ { 0, BX_IA_PCMPGTB_PqQq }, /* 66 */ { 0, BX_IA_PCMPGTB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 65 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F65[4] = { /* -- */ { 0, BX_IA_PCMPGTW_PqQq }, /* 66 */ { 0, BX_IA_PCMPGTW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 66 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F66[4] = { /* -- */ { 0, BX_IA_PCMPGTD_PqQq }, /* 66 */ { 0, BX_IA_PCMPGTD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 67 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F67[4] = { /* -- */ { 0, BX_IA_PACKUSWB_PqQq }, /* 66 */ { 0, BX_IA_PACKUSWB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 68 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F68[4] = { /* -- */ { 0, BX_IA_PUNPCKHBW_PqQq }, /* 66 */ { 0, BX_IA_PUNPCKHBW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 69 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F69[4] = { /* -- */ { 0, BX_IA_PUNPCKHWD_PqQq }, /* 66 */ { 0, BX_IA_PUNPCKHWD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 6A static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F6A[4] = { /* -- */ { 0, BX_IA_PUNPCKHDQ_PqQq }, /* 66 */ { 0, BX_IA_PUNPCKHDQ_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 6B static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F6B[4] = { /* -- */ { 0, BX_IA_PACKSSDW_PqQq }, /* 66 */ { 0, BX_IA_PACKSSDW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 6C static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F6C[4] = { /* -- */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_PUNPCKLQDQ_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 6D static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F6D[4] = { /* -- */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_PUNPCKHQDQ_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 6E static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F6E[] = { /* -- */ { 0, BX_IA_MOVD_PqEd }, /* 66 */ { 0, BX_IA_MOVD_VdqEd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, #if BX_SUPPORT_X86_64 /* -- /q */ { 0, BX_IA_MOVQ_PqEq }, /* 66 /q */ { 0, BX_IA_MOVQ_VdqEq }, /* F3 /q */ { 0, BX_IA_ERROR }, /* F2 /q */ { 0, BX_IA_ERROR }, #endif }; // opcode 0F 6F static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F6F[4] = { /* -- */ { 0, BX_IA_MOVQ_PqQq }, /* 66 */ { 0, BX_IA_MOVDQA_VdqWdq }, /* F3 */ { 0, BX_IA_MOVDQU_VdqWdq }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 70 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F70[4] = { /* -- */ { BxImmediate_Ib, BX_IA_PSHUFW_PqQqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PSHUFD_VdqWdqIb }, /* F3 */ { BxImmediate_Ib, BX_IA_PSHUFHW_VdqWdqIb }, /* F2 */ { BxImmediate_Ib, BX_IA_PSHUFLW_VdqWdqIb }, }; // opcode 0F 71 static const BxOpcodeInfo_t BxOpcodeTable0F71_G12[] = { /* -- /0 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /1 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /2 */ { BxImmediate_Ib, BX_IA_PSRLW_NqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PSRLW_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /3 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /4 */ { BxImmediate_Ib, BX_IA_PSRAW_NqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PSRAW_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /5 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /6 */ { BxImmediate_Ib, BX_IA_PSLLW_NqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PSLLW_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /7 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 72 static const BxOpcodeInfo_t BxOpcodeTable0F72_G13[] = { /* -- /0 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /1 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /2 */ { BxImmediate_Ib, BX_IA_PSRLD_NqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PSRLD_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /3 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /4 */ { BxImmediate_Ib, BX_IA_PSRAD_NqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PSRAD_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /5 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /6 */ { BxImmediate_Ib, BX_IA_PSLLD_NqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PSLLD_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /7 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 73 static const BxOpcodeInfo_t BxOpcodeTable0F73_G14[] = { /* -- /0 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /1 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /2 */ { BxImmediate_Ib, BX_IA_PSRLQ_NqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PSRLQ_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /3 */ { 0, BX_IA_ERROR }, /* 66 */ { BxImmediate_Ib, BX_IA_PSRLDQ_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /4 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /5 */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /6 */ { BxImmediate_Ib, BX_IA_PSLLQ_NqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PSLLQ_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /7 */ { 0, BX_IA_ERROR }, /* 66 */ { BxImmediate_Ib, BX_IA_PSLLDQ_UdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 74 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F74[4] = { /* -- */ { 0, BX_IA_PCMPEQB_PqQq }, /* 66 */ { 0, BX_IA_PCMPEQB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 75 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F75[4] = { /* -- */ { 0, BX_IA_PCMPEQW_PqQq }, /* 66 */ { 0, BX_IA_PCMPEQW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 76 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F76[4] = { /* -- */ { 0, BX_IA_PCMPEQD_PqQq }, /* 66 */ { 0, BX_IA_PCMPEQD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 77 static const BxOpcodeInfo_t BxOpcodeTable0F77[] = { /* 0F 77 /w */ { BxNoPrefixSSE, BX_IA_EMMS }, /* 0F 77 /d */ { BxNoPrefixSSE, BX_IA_EMMS }, #if BX_SUPPORT_X86_64 /* 0F 77 /q */ { BxNoPrefixSSE, BX_IA_EMMS }, #endif }; // opcode 0F 78 static const BxOpcodeInfo_t BxOpcodeTable0F78[] = { /* 0F 78 /32 */ { 0, BX_IA_VMREAD_EdGd }, // SSE prefix handled inside decode method #if BX_SUPPORT_X86_64 /* 0F 78 /64 */ { 0, BX_IA_VMREAD_EqGq }, // SSE prefix handled inside decode method #endif }; // opcode 0F 79 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F79_32[4] = { /* -- */ { 0, BX_IA_VMWRITE_GdEd }, /* 66 */ { 0, BX_IA_EXTRQ_VdqUq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_INSERTQ_VdqUdq }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F79_64[4] = { /* -- */ { 0, BX_IA_VMWRITE_GqEq }, /* 66 */ { 0, BX_IA_EXTRQ_VdqUq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_INSERTQ_VdqUdq }, }; #endif // opcode 0F 7C static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F7C[4] = { /* -- */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_HADDPD_VpdWpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_HADDPS_VpsWps }, }; // opcode 0F 7D static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F7D[4] = { /* -- */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_HSUBPD_VpdWpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_HSUBPS_VpsWps }, }; // opcode 0F 7E static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F7E[] = { /* -- */ { 0, BX_IA_MOVD_EdPq }, /* 66 */ { 0, BX_IA_MOVD_EdVd }, /* F3 */ { 0, BX_IA_MOVQ_VqWq }, /* F2 */ { 0, BX_IA_ERROR }, #if BX_SUPPORT_X86_64 /* -- /q */ { 0, BX_IA_MOVQ_EqPq }, /* 66 /q */ { 0, BX_IA_MOVQ_EqVq }, /* F3 /q */ { 0, BX_IA_MOVQ_VqWq }, /* F2 /q */ { 0, BX_IA_ERROR }, #endif }; // opcode 0F 7F static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F7F[4] = { /* -- */ { 0, BX_IA_MOVQ_QqPq }, /* 66 */ { 0, BX_IA_MOVDQA_WdqVdq }, /* F3 */ { 0, BX_IA_MOVDQU_WdqVdq }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F 80 static const BxOpcodeInfo_t BxOpcodeTable0F80_32[] = { /* 0F 80 /w */ { BxImmediate_BrOff16, BX_IA_JO_Jw }, /* 0F 80 /d */ { BxImmediate_BrOff32, BX_IA_JO_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F80_64[] = { /* 0F 80 /w */ { BxImmediate_BrOff32, BX_IA_JO_Jq }, /* 0F 80 /d */ { BxImmediate_BrOff32, BX_IA_JO_Jq }, /* 0F 80 /q */ { BxImmediate_BrOff32, BX_IA_JO_Jq }, }; #endif // opcode 0F 81 static const BxOpcodeInfo_t BxOpcodeTable0F81_32[] = { /* 0F 81 /w */ { BxImmediate_BrOff16, BX_IA_JNO_Jw }, /* 0F 81 /d */ { BxImmediate_BrOff32, BX_IA_JNO_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F81_64[] = { /* 0F 81 /w */ { BxImmediate_BrOff32, BX_IA_JNO_Jq }, /* 0F 81 /d */ { BxImmediate_BrOff32, BX_IA_JNO_Jq }, /* 0F 81 /q */ { BxImmediate_BrOff32, BX_IA_JNO_Jq }, }; #endif // opcode 0F 82 static const BxOpcodeInfo_t BxOpcodeTable0F82_32[] = { /* 0F 82 /w */ { BxImmediate_BrOff16, BX_IA_JB_Jw }, /* 0F 82 /d */ { BxImmediate_BrOff32, BX_IA_JB_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F82_64[] = { /* 0F 82 /w */ { BxImmediate_BrOff32, BX_IA_JB_Jq }, /* 0F 82 /d */ { BxImmediate_BrOff32, BX_IA_JB_Jq }, /* 0F 82 /q */ { BxImmediate_BrOff32, BX_IA_JB_Jq }, }; #endif // opcode 0F 83 static const BxOpcodeInfo_t BxOpcodeTable0F83_32[] = { /* 0F 83 /w */ { BxImmediate_BrOff16, BX_IA_JNB_Jw }, /* 0F 83 /d */ { BxImmediate_BrOff32, BX_IA_JNB_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F83_64[] = { /* 0F 83 /w */ { BxImmediate_BrOff32, BX_IA_JNB_Jq }, /* 0F 83 /d */ { BxImmediate_BrOff32, BX_IA_JNB_Jq }, /* 0F 83 /q */ { BxImmediate_BrOff32, BX_IA_JNB_Jq }, }; #endif // opcode 0F 84 static const BxOpcodeInfo_t BxOpcodeTable0F84_32[] = { /* 0F 84 /w */ { BxImmediate_BrOff16, BX_IA_JZ_Jw }, /* 0F 84 /d */ { BxImmediate_BrOff32, BX_IA_JZ_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F84_64[] = { /* 0F 84 /w */ { BxImmediate_BrOff32, BX_IA_JZ_Jq }, /* 0F 84 /d */ { BxImmediate_BrOff32, BX_IA_JZ_Jq }, /* 0F 84 /q */ { BxImmediate_BrOff32, BX_IA_JZ_Jq }, }; #endif // opcode 0F 85 static const BxOpcodeInfo_t BxOpcodeTable0F85_32[] = { /* 0F 85 /w */ { BxImmediate_BrOff16, BX_IA_JNZ_Jw }, /* 0F 85 /d */ { BxImmediate_BrOff32, BX_IA_JNZ_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F85_64[] = { /* 0F 85 /w */ { BxImmediate_BrOff32, BX_IA_JNZ_Jq }, /* 0F 85 /d */ { BxImmediate_BrOff32, BX_IA_JNZ_Jq }, /* 0F 85 /q */ { BxImmediate_BrOff32, BX_IA_JNZ_Jq }, }; #endif // opcode 0F 86 static const BxOpcodeInfo_t BxOpcodeTable0F86_32[] = { /* 0F 86 /w */ { BxImmediate_BrOff16, BX_IA_JBE_Jw }, /* 0F 86 /d */ { BxImmediate_BrOff32, BX_IA_JBE_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F86_64[] = { /* 0F 86 /w */ { BxImmediate_BrOff32, BX_IA_JBE_Jq }, /* 0F 86 /d */ { BxImmediate_BrOff32, BX_IA_JBE_Jq }, /* 0F 86 /q */ { BxImmediate_BrOff32, BX_IA_JBE_Jq }, }; #endif // opcode 0F 87 static const BxOpcodeInfo_t BxOpcodeTable0F87_32[] = { /* 0F 87 /w */ { BxImmediate_BrOff16, BX_IA_JNBE_Jw }, /* 0F 87 /d */ { BxImmediate_BrOff32, BX_IA_JNBE_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F87_64[] = { /* 0F 87 /w */ { BxImmediate_BrOff32, BX_IA_JNBE_Jq }, /* 0F 87 /d */ { BxImmediate_BrOff32, BX_IA_JNBE_Jq }, /* 0F 87 /q */ { BxImmediate_BrOff32, BX_IA_JNBE_Jq }, }; #endif // opcode 0F 88 static const BxOpcodeInfo_t BxOpcodeTable0F88_32[] = { /* 0F 88 /w */ { BxImmediate_BrOff16, BX_IA_JS_Jw }, /* 0F 88 /d */ { BxImmediate_BrOff32, BX_IA_JS_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F88_64[] = { /* 0F 88 /w */ { BxImmediate_BrOff32, BX_IA_JS_Jq }, /* 0F 88 /d */ { BxImmediate_BrOff32, BX_IA_JS_Jq }, /* 0F 88 /q */ { BxImmediate_BrOff32, BX_IA_JS_Jq }, }; #endif // opcode 0F 89 static const BxOpcodeInfo_t BxOpcodeTable0F89_32[] = { /* 0F 89 /w */ { BxImmediate_BrOff16, BX_IA_JNS_Jw }, /* 0F 89 /d */ { BxImmediate_BrOff32, BX_IA_JNS_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F89_64[] = { /* 0F 89 /w */ { BxImmediate_BrOff32, BX_IA_JNS_Jq }, /* 0F 89 /d */ { BxImmediate_BrOff32, BX_IA_JNS_Jq }, /* 0F 89 /q */ { BxImmediate_BrOff32, BX_IA_JNS_Jq }, }; #endif // opcode 0F 8A static const BxOpcodeInfo_t BxOpcodeTable0F8A_32[] = { /* 0F 8A /w */ { BxImmediate_BrOff16, BX_IA_JP_Jw }, /* 0F 8A /d */ { BxImmediate_BrOff32, BX_IA_JP_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F8A_64[] = { /* 0F 8A /w */ { BxImmediate_BrOff32, BX_IA_JP_Jq }, /* 0F 8A /d */ { BxImmediate_BrOff32, BX_IA_JP_Jq }, /* 0F 8A /q */ { BxImmediate_BrOff32, BX_IA_JP_Jq }, }; #endif // opcode 0F 8B static const BxOpcodeInfo_t BxOpcodeTable0F8B_32[] = { /* 0F 8B /w */ { BxImmediate_BrOff16, BX_IA_JNP_Jw }, /* 0F 8B /d */ { BxImmediate_BrOff32, BX_IA_JNP_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F8B_64[] = { /* 0F 8B /w */ { BxImmediate_BrOff32, BX_IA_JNP_Jq }, /* 0F 8B /d */ { BxImmediate_BrOff32, BX_IA_JNP_Jq }, /* 0F 8B /q */ { BxImmediate_BrOff32, BX_IA_JNP_Jq }, }; #endif // opcode 0F 8C static const BxOpcodeInfo_t BxOpcodeTable0F8C_32[] = { /* 0F 8C /w */ { BxImmediate_BrOff16, BX_IA_JL_Jw }, /* 0F 8C /d */ { BxImmediate_BrOff32, BX_IA_JL_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F8C_64[] = { /* 0F 8C /w */ { BxImmediate_BrOff32, BX_IA_JL_Jq }, /* 0F 8C /d */ { BxImmediate_BrOff32, BX_IA_JL_Jq }, /* 0F 8C /q */ { BxImmediate_BrOff32, BX_IA_JL_Jq }, }; #endif // opcode 0F 8D static const BxOpcodeInfo_t BxOpcodeTable0F8D_32[] = { /* 0F 8D /w */ { BxImmediate_BrOff16, BX_IA_JNL_Jw }, /* 0F 8D /d */ { BxImmediate_BrOff32, BX_IA_JNL_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F8D_64[] = { /* 0F 8D /w */ { BxImmediate_BrOff32, BX_IA_JNL_Jq }, /* 0F 8D /d */ { BxImmediate_BrOff32, BX_IA_JNL_Jq }, /* 0F 8D /q */ { BxImmediate_BrOff32, BX_IA_JNL_Jq }, }; #endif // opcode 0F 8E static const BxOpcodeInfo_t BxOpcodeTable0F8E_32[] = { /* 0F 8E /w */ { BxImmediate_BrOff16, BX_IA_JLE_Jw }, /* 0F 8E /d */ { BxImmediate_BrOff32, BX_IA_JLE_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F8E_64[] = { /* 0F 8E /w */ { BxImmediate_BrOff32, BX_IA_JLE_Jq }, /* 0F 8E /d */ { BxImmediate_BrOff32, BX_IA_JLE_Jq }, /* 0F 8E /q */ { BxImmediate_BrOff32, BX_IA_JLE_Jq }, }; #endif // opcode 0F 8F static const BxOpcodeInfo_t BxOpcodeTable0F8F_32[] = { /* 0F 8F /w */ { BxImmediate_BrOff16, BX_IA_JNLE_Jw }, /* 0F 8F /d */ { BxImmediate_BrOff32, BX_IA_JNLE_Jd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0F8F_64[] = { /* 0F 8F /w */ { BxImmediate_BrOff32, BX_IA_JNLE_Jq }, /* 0F 8F /d */ { BxImmediate_BrOff32, BX_IA_JNLE_Jq }, /* 0F 8F /q */ { BxImmediate_BrOff32, BX_IA_JNLE_Jq }, }; #endif // opcode 0F 90 static const BxOpcodeInfo_t BxOpcodeTable0F90[] = { /* 0F 90 /w */ { 0, BX_IA_SETO_Eb }, /* 0F 90 /d */ { 0, BX_IA_SETO_Eb }, #if BX_SUPPORT_X86_64 /* 0F 90 /q */ { 0, BX_IA_SETO_Eb }, #endif }; // opcode 0F 91 static const BxOpcodeInfo_t BxOpcodeTable0F91[] = { /* 0F 91 /w */ { 0, BX_IA_SETNO_Eb }, /* 0F 91 /d */ { 0, BX_IA_SETNO_Eb }, #if BX_SUPPORT_X86_64 /* 0F 91 /q */ { 0, BX_IA_SETNO_Eb }, #endif }; // opcode 0F 92 static const BxOpcodeInfo_t BxOpcodeTable0F92[] = { /* 0F 92 /w */ { 0, BX_IA_SETB_Eb }, /* 0F 92 /d */ { 0, BX_IA_SETB_Eb }, #if BX_SUPPORT_X86_64 /* 0F 92 /q */ { 0, BX_IA_SETB_Eb }, #endif }; // opcode 0F 93 static const BxOpcodeInfo_t BxOpcodeTable0F93[] = { /* 0F 93 /w */ { 0, BX_IA_SETNB_Eb }, /* 0F 93 /d */ { 0, BX_IA_SETNB_Eb }, #if BX_SUPPORT_X86_64 /* 0F 93 /q */ { 0, BX_IA_SETNB_Eb }, #endif }; // opcode 0F 94 static const BxOpcodeInfo_t BxOpcodeTable0F94[] = { /* 0F 94 /w */ { 0, BX_IA_SETZ_Eb }, /* 0F 94 /d */ { 0, BX_IA_SETZ_Eb }, #if BX_SUPPORT_X86_64 /* 0F 94 /q */ { 0, BX_IA_SETZ_Eb }, #endif }; // opcode 0F 95 static const BxOpcodeInfo_t BxOpcodeTable0F95[] = { /* 0F 95 /w */ { 0, BX_IA_SETNZ_Eb }, /* 0F 95 /d */ { 0, BX_IA_SETNZ_Eb }, #if BX_SUPPORT_X86_64 /* 0F 95 /q */ { 0, BX_IA_SETNZ_Eb }, #endif }; // opcode 0F 96 static const BxOpcodeInfo_t BxOpcodeTable0F96[] = { /* 0F 96 /w */ { 0, BX_IA_SETBE_Eb }, /* 0F 96 /d */ { 0, BX_IA_SETBE_Eb }, #if BX_SUPPORT_X86_64 /* 0F 96 /q */ { 0, BX_IA_SETBE_Eb }, #endif }; // opcode 0F 97 static const BxOpcodeInfo_t BxOpcodeTable0F97[] = { /* 0F 97 /w */ { 0, BX_IA_SETNBE_Eb }, /* 0F 97 /d */ { 0, BX_IA_SETNBE_Eb }, #if BX_SUPPORT_X86_64 /* 0F 97 /q */ { 0, BX_IA_SETNBE_Eb }, #endif }; // opcode 0F 98 static const BxOpcodeInfo_t BxOpcodeTable0F98[] = { /* 0F 98 /w */ { 0, BX_IA_SETS_Eb }, /* 0F 98 /d */ { 0, BX_IA_SETS_Eb }, #if BX_SUPPORT_X86_64 /* 0F 98 /q */ { 0, BX_IA_SETS_Eb }, #endif }; // opcode 0F 99 static const BxOpcodeInfo_t BxOpcodeTable0F99[] = { /* 0F 99 /w */ { 0, BX_IA_SETNS_Eb }, /* 0F 99 /d */ { 0, BX_IA_SETNS_Eb }, #if BX_SUPPORT_X86_64 /* 0F 99 /q */ { 0, BX_IA_SETNS_Eb }, #endif }; // opcode 0F 9A static const BxOpcodeInfo_t BxOpcodeTable0F9A[] = { /* 0F 9A /w */ { 0, BX_IA_SETP_Eb }, /* 0F 9A /d */ { 0, BX_IA_SETP_Eb }, #if BX_SUPPORT_X86_64 /* 0F 9A /q */ { 0, BX_IA_SETP_Eb }, #endif }; // opcode 0F 9B static const BxOpcodeInfo_t BxOpcodeTable0F9B[] = { /* 0F 9B /w */ { 0, BX_IA_SETNP_Eb }, /* 0F 9B /d */ { 0, BX_IA_SETNP_Eb }, #if BX_SUPPORT_X86_64 /* 0F 9B /q */ { 0, BX_IA_SETNP_Eb }, #endif }; // opcode 0F 9C static const BxOpcodeInfo_t BxOpcodeTable0F9C[] = { /* 0F 9C /w */ { 0, BX_IA_SETL_Eb }, /* 0F 9C /d */ { 0, BX_IA_SETL_Eb }, #if BX_SUPPORT_X86_64 /* 0F 9C /q */ { 0, BX_IA_SETL_Eb }, #endif }; // opcode 0F 9D static const BxOpcodeInfo_t BxOpcodeTable0F9D[] = { /* 0F 9D /w */ { 0, BX_IA_SETNL_Eb }, /* 0F 9D /d */ { 0, BX_IA_SETNL_Eb }, #if BX_SUPPORT_X86_64 /* 0F 9D /q */ { 0, BX_IA_SETNL_Eb }, #endif }; // opcode 0F 9E static const BxOpcodeInfo_t BxOpcodeTable0F9E[] = { /* 0F 9E /w */ { 0, BX_IA_SETLE_Eb }, /* 0F 9E /d */ { 0, BX_IA_SETLE_Eb }, #if BX_SUPPORT_X86_64 /* 0F 9E /q */ { 0, BX_IA_SETLE_Eb }, #endif }; // opcode 0F 9F static const BxOpcodeInfo_t BxOpcodeTable0F9F[] = { /* 0F 9F /w */ { 0, BX_IA_SETNLE_Eb }, /* 0F 9F /d */ { 0, BX_IA_SETNLE_Eb }, #if BX_SUPPORT_X86_64 /* 0F 9F /q */ { 0, BX_IA_SETNLE_Eb }, #endif }; // opcode 0F A0 static const BxOpcodeInfo_t BxOpcodeTable0FA0_32[] = { /* 0F A0 /w */ { 0, BX_IA_PUSH_Op16_Sw }, /* 0F A0 /d */ { 0, BX_IA_PUSH_Op32_Sw }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0FA0_64[] = { /* 0F A0 /w */ { 0, BX_IA_PUSH_Op16_Sw }, /* 0F A0 /d */ { 0, BX_IA_PUSH_Op64_Sw }, /* 0F A0 /q */ { 0, BX_IA_PUSH_Op64_Sw }, }; #endif // opcode 0F A1 static const BxOpcodeInfo_t BxOpcodeTable0FA1_32[] = { /* 0F A1 /w */ { 0, BX_IA_POP_Op16_Sw }, /* 0F A1 /d */ { 0, BX_IA_POP_Op32_Sw }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0FA1_64[] = { /* 0F A1 /w */ { 0, BX_IA_POP_Op16_Sw }, /* 0F A1 /d */ { 0, BX_IA_POP_Op64_Sw }, /* 0F A1 /q */ { 0, BX_IA_POP_Op64_Sw }, }; #endif // opcode 0F A2 static const BxOpcodeInfo_t BxOpcodeTable0FA2[] = { /* 0F A2 */ { 0, BX_IA_CPUID }, }; // opcode 0F A3 static const BxOpcodeInfo_t BxOpcodeTable0FA3[] = { /* 0F A3 /w */ { 0, BX_IA_BT_EwGw }, /* 0F A3 /d */ { 0, BX_IA_BT_EdGd }, #if BX_SUPPORT_X86_64 /* 0F A3 /q */ { 0, BX_IA_BT_EqGq }, #endif }; // opcode 0F A4 static const BxOpcodeInfo_t BxOpcodeTable0FA4[] = { /* 0F A4 /w */ { BxImmediate_Ib, BX_IA_SHLD_EwGwIb }, /* 0F A4 /d */ { BxImmediate_Ib, BX_IA_SHLD_EdGdIb }, #if BX_SUPPORT_X86_64 /* 0F A4 /q */ { BxImmediate_Ib, BX_IA_SHLD_EqGqIb }, #endif }; // opcode 0F A5 static const BxOpcodeInfo_t BxOpcodeTable0FA5[] = { /* 0F A5 /w */ { 0, BX_IA_SHLD_EwGw }, /* 0F A5 /d */ { 0, BX_IA_SHLD_EdGd }, #if BX_SUPPORT_X86_64 /* 0F A5 /q */ { 0, BX_IA_SHLD_EqGq }, #endif }; // opcode 0F A8 static const BxOpcodeInfo_t BxOpcodeTable0FA8_32[] = { /* 0F A8 /w */ { 0, BX_IA_PUSH_Op16_Sw }, /* 0F A8 /d */ { 0, BX_IA_PUSH_Op32_Sw }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0FA8_64[] = { /* 0F A8 /w */ { 0, BX_IA_PUSH_Op16_Sw }, /* 0F A8 /d */ { 0, BX_IA_PUSH_Op64_Sw }, /* 0F A8 /q */ { 0, BX_IA_PUSH_Op64_Sw }, }; #endif // opcode 0F A9 static const BxOpcodeInfo_t BxOpcodeTable0FA9_32[] = { /* 0F A9 /w */ { 0, BX_IA_POP_Op16_Sw }, /* 0F A9 /d */ { 0, BX_IA_POP_Op32_Sw }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0FA9_64[] = { /* 0F A9 /w */ { 0, BX_IA_POP_Op16_Sw }, /* 0F A9 /d */ { 0, BX_IA_POP_Op64_Sw }, /* 0F A9 /q */ { 0, BX_IA_POP_Op64_Sw }, }; #endif // opcode 0F AA static const BxOpcodeInfo_t BxOpcodeTable0FAA[] = { /* 0F AA */ { 0, BX_IA_RSM }, }; // opcode 0F AB static const BxOpcodeInfo_t BxOpcodeTable0FAB[] = { /* 0F AB /w */ { 0, BX_IA_BTS_EwGw }, /* 0F AB /d */ { 0, BX_IA_BTS_EdGd }, #if BX_SUPPORT_X86_64 /* 0F AB /q */ { 0, BX_IA_BTS_EqGq }, #endif }; // opcode 0F AC static const BxOpcodeInfo_t BxOpcodeTable0FAC[] = { /* 0F AC /w */ { BxImmediate_Ib, BX_IA_SHRD_EwGwIb }, /* 0F AC /d */ { BxImmediate_Ib, BX_IA_SHRD_EdGdIb }, #if BX_SUPPORT_X86_64 /* 0F AC /q */ { BxImmediate_Ib, BX_IA_SHRD_EqGqIb }, #endif }; // opcode 0F AD static const BxOpcodeInfo_t BxOpcodeTable0FAD[] = { /* 0F AD /w */ { 0, BX_IA_SHRD_EwGw }, /* 0F AD /d */ { 0, BX_IA_SHRD_EdGd }, #if BX_SUPPORT_X86_64 /* 0F AD /q */ { 0, BX_IA_SHRD_EqGq }, #endif }; // opcode 0F AE static const BxOpcodeInfo_t BxOpcodeTable0FAE_G15_R32[] = { /* /r form */ /* /0 */ { 0, BX_IA_ERROR }, /* /1 */ { 0, BX_IA_ERROR }, /* /2 */ { 0, BX_IA_ERROR }, /* /3 */ { 0, BX_IA_ERROR }, /* /4 */ { 0, BX_IA_ERROR }, /* /5 */ { BxNoPrefixSSE, BX_IA_LFENCE }, /* /6 */ { BxNoPrefixSSE, BX_IA_MFENCE }, /* /7 */ { BxNoPrefixSSE, BX_IA_SFENCE }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0FAE_G15d_R64[8] = { /* /r form */ /* /0 */ { BxPrefixSSEF3, BX_IA_RDFSBASE_Ed }, /* /1 */ { BxPrefixSSEF3, BX_IA_RDGSBASE_Ed }, /* /2 */ { BxPrefixSSEF3, BX_IA_WRFSBASE_Ed }, /* /3 */ { BxPrefixSSEF3, BX_IA_WRGSBASE_Ed }, /* /4 */ { 0, BX_IA_ERROR }, /* /5 */ { BxNoPrefixSSE, BX_IA_LFENCE }, /* /6 */ { BxNoPrefixSSE, BX_IA_MFENCE }, /* /7 */ { BxNoPrefixSSE, BX_IA_SFENCE }, }; static const BxOpcodeInfo_t BxOpcodeTable0FAE_G15q_R64[8] = { /* /r form */ /* /0 */ { BxPrefixSSEF3, BX_IA_RDFSBASE_Eq }, /* /1 */ { BxPrefixSSEF3, BX_IA_RDGSBASE_Eq }, /* /2 */ { BxPrefixSSEF3, BX_IA_WRFSBASE_Eq }, /* /3 */ { BxPrefixSSEF3, BX_IA_WRGSBASE_Eq }, /* /4 */ { 0, BX_IA_ERROR }, /* /5 */ { BxNoPrefixSSE, BX_IA_LFENCE }, /* /6 */ { BxNoPrefixSSE, BX_IA_MFENCE }, /* /7 */ { BxNoPrefixSSE, BX_IA_SFENCE }, }; #endif static const BxOpcodeInfo_t BxOpcodeTable0FAE_G15M[] = { /* /m form */ /* -- /0 */ { 0, BX_IA_FXSAVE }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /1 */ { 0, BX_IA_FXRSTOR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /2 */ { 0, BX_IA_LDMXCSR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /3 */ { 0, BX_IA_STMXCSR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /4 */ { 0, BX_IA_XSAVE }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /5 */ { 0, BX_IA_XRSTOR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /6 */ { 0, BX_IA_XSAVEOPT }, /* 66 */ { 0, BX_IA_CLWB }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, /* -- /7 */ { 0, BX_IA_CLFLUSH }, /* 66 */ { 0, BX_IA_CLFLUSHOPT }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F AF static const BxOpcodeInfo_t BxOpcodeTable0FAF[] = { /* 0F AF /w */ { 0, BX_IA_IMUL_GwEw }, /* 0F AF /d */ { 0, BX_IA_IMUL_GdEd }, #if BX_SUPPORT_X86_64 /* 0F AF /q */ { 0, BX_IA_IMUL_GqEq }, #endif }; // opcode 0F B0 static const BxOpcodeInfo_t BxOpcodeTable0FB0[] = { /* 0F B0 /w */ { 0, BX_IA_CMPXCHG_EbGb }, /* 0F B0 /d */ { 0, BX_IA_CMPXCHG_EbGb }, #if BX_SUPPORT_X86_64 /* 0F B0 /q */ { 0, BX_IA_CMPXCHG_EbGb }, #endif }; // opcode 0F B1 static const BxOpcodeInfo_t BxOpcodeTable0FB1[] = { /* 0F B1 /w */ { 0, BX_IA_CMPXCHG_EwGw }, /* 0F B1 /d */ { 0, BX_IA_CMPXCHG_EdGd }, #if BX_SUPPORT_X86_64 /* 0F B1 /q */ { 0, BX_IA_CMPXCHG_EqGq }, #endif }; // opcode 0F B2 static const BxOpcodeInfo_t BxOpcodeTable0FB2[] = { /* 0F B2 /w */ { 0, BX_IA_LSS_GwMp }, /* 0F B2 /d */ { 0, BX_IA_LSS_GdMp }, #if BX_SUPPORT_X86_64 /* 0F B2 /q */ { 0, BX_IA_LSS_GqMp }, // TODO: LSS_GdMp for AMD CPU #endif }; // opcode 0F B3 static const BxOpcodeInfo_t BxOpcodeTable0FB3[] = { /* 0F B3 /w */ { 0, BX_IA_BTR_EwGw }, /* 0F B3 /d */ { 0, BX_IA_BTR_EdGd }, #if BX_SUPPORT_X86_64 /* 0F B3 /q */ { 0, BX_IA_BTR_EqGq }, #endif }; // opcode 0F B4 static const BxOpcodeInfo_t BxOpcodeTable0FB4[] = { /* 0F B4 /w */ { 0, BX_IA_LFS_GwMp }, /* 0F B4 /d */ { 0, BX_IA_LFS_GdMp }, #if BX_SUPPORT_X86_64 /* 0F B4 /q */ { 0, BX_IA_LFS_GqMp }, // TODO: LFS_GdMp for AMD CPU #endif }; // opcode 0F B5 static const BxOpcodeInfo_t BxOpcodeTable0FB5[] = { /* 0F B5 /w */ { 0, BX_IA_LGS_GwMp }, /* 0F B5 /d */ { 0, BX_IA_LGS_GdMp }, #if BX_SUPPORT_X86_64 /* 0F B5 /q */ { 0, BX_IA_LGS_GqMp }, // TODO: LGS_GdMp for AMD CPU #endif }; // opcode 0F B6 static const BxOpcodeInfo_t BxOpcodeTable0FB6[] = { /* 0F B6 /w */ { 0, BX_IA_MOVZX_GwEb }, /* 0F B6 /d */ { 0, BX_IA_MOVZX_GdEb }, #if BX_SUPPORT_X86_64 /* 0F B6 /q */ { 0, BX_IA_MOVZX_GqEb }, #endif }; // opcode 0F B7 static const BxOpcodeInfo_t BxOpcodeTable0FB7[] = { /* 0F B7 /w */ { 0, BX_IA_MOV_GwEw }, // MOVZX_GwEw /* 0F B7 /d */ { 0, BX_IA_MOVZX_GdEw }, #if BX_SUPPORT_X86_64 /* 0F B7 /q */ { 0, BX_IA_MOVZX_GqEw }, #endif }; // opcode 0F B8 static const BxOpcodeInfo_t BxOpcodeTable0FB8[] = { /* 0F B8 /w */ { BxPrefixSSEF3, BX_IA_POPCNT_GwEw }, /* 0F B8 /d */ { BxPrefixSSEF3, BX_IA_POPCNT_GdEd }, #if BX_SUPPORT_X86_64 /* 0F B8 /q */ { BxPrefixSSEF3, BX_IA_POPCNT_GqEq }, #endif }; // opcode 0F B9 static const BxOpcodeInfo_t BxOpcodeTable0FB9[] = { /* 0F B9 /w */ { 0, BX_IA_UD1 }, /* 0F B9 /d */ { 0, BX_IA_UD1 }, #if BX_SUPPORT_X86_64 /* 0F B9 /q */ { 0, BX_IA_UD1 }, #endif }; // opcode 0F BA static const BxOpcodeInfo_t BxOpcodeTable0FBA_G8EvIv[] = { // osize = 16 bit /* /0 /w */ { 0, BX_IA_ERROR }, /* /1 /w */ { 0, BX_IA_ERROR }, /* /2 /w */ { 0, BX_IA_ERROR }, /* /3 /w */ { 0, BX_IA_ERROR }, /* /4 /w */ { BxImmediate_Ib, BX_IA_BT_EwIb }, /* /5 /w */ { BxImmediate_Ib, BX_IA_BTS_EwIb }, /* /6 /w */ { BxImmediate_Ib, BX_IA_BTR_EwIb }, /* /7 /w */ { BxImmediate_Ib, BX_IA_BTC_EwIb }, // osize = 32 bit /* /0 /d */ { 0, BX_IA_ERROR }, /* /1 /d */ { 0, BX_IA_ERROR }, /* /2 /d */ { 0, BX_IA_ERROR }, /* /3 /d */ { 0, BX_IA_ERROR }, /* /4 /d */ { BxImmediate_Ib, BX_IA_BT_EdIb }, /* /5 /d */ { BxImmediate_Ib, BX_IA_BTS_EdIb }, /* /6 /d */ { BxImmediate_Ib, BX_IA_BTR_EdIb }, /* /7 /d */ { BxImmediate_Ib, BX_IA_BTC_EdIb }, #if BX_SUPPORT_X86_64 // osize = 64 bit /* /0 /q */ { 0, BX_IA_ERROR }, /* /1 /q */ { 0, BX_IA_ERROR }, /* /2 /q */ { 0, BX_IA_ERROR }, /* /3 /q */ { 0, BX_IA_ERROR }, /* /4 /q */ { BxImmediate_Ib, BX_IA_BT_EqIb }, /* /5 /q */ { BxImmediate_Ib, BX_IA_BTS_EqIb }, /* /6 /q */ { BxImmediate_Ib, BX_IA_BTR_EqIb }, /* /7 /q */ { BxImmediate_Ib, BX_IA_BTC_EqIb }, #endif }; // opcode 0F BB static const BxOpcodeInfo_t BxOpcodeTable0FBB[] = { /* 0F BB /w */ { 0, BX_IA_BTC_EwGw }, /* 0F BB /d */ { 0, BX_IA_BTC_EdGd }, #if BX_SUPPORT_X86_64 /* 0F BB /q */ { 0, BX_IA_BTC_EqGq }, #endif }; // opcode 0F BC static const BxOpcodeInfo_t BxOpcodeTable0FBC[] = { /* 0F BC /w */ { 0, BX_IA_BSF_GwEw }, /* 0F BC /d */ { 0, BX_IA_BSF_GdEd }, #if BX_SUPPORT_X86_64 /* 0F BC /q */ { 0, BX_IA_BSF_GqEq }, #endif }; static const BxOpcodeInfo_t BxOpcodeTable0FBC_TZCNT[] = { /* F3 0F BC /w */ { 0, BX_IA_TZCNT_GwEw }, /* F3 0F BC /d */ { 0, BX_IA_TZCNT_GdEd }, #if BX_SUPPORT_X86_64 /* F3 0F BC /q */ { 0, BX_IA_TZCNT_GqEq }, #endif }; // opcode 0F BD static const BxOpcodeInfo_t BxOpcodeTable0FBD[] = { /* 0F BD /w */ { 0, BX_IA_BSR_GwEw }, /* 0F BD /d */ { 0, BX_IA_BSR_GdEd }, #if BX_SUPPORT_X86_64 /* 0F BD /q */ { 0, BX_IA_BSR_GqEq }, #endif }; static const BxOpcodeInfo_t BxOpcodeTable0FBD_LZCNT[] = { /* F3 0F BD /w */ { 0, BX_IA_LZCNT_GwEw }, /* F3 0F BD /d */ { 0, BX_IA_LZCNT_GdEd }, #if BX_SUPPORT_X86_64 /* F3 0F BD /q */ { 0, BX_IA_LZCNT_GqEq }, #endif }; // opcode 0F BE static const BxOpcodeInfo_t BxOpcodeTable0FBE[] = { /* 0F BE /w */ { 0, BX_IA_MOVSX_GwEb }, /* 0F BE /d */ { 0, BX_IA_MOVSX_GdEb }, #if BX_SUPPORT_X86_64 /* 0F BE /q */ { 0, BX_IA_MOVSX_GqEb }, #endif }; // opcode 0F BF static const BxOpcodeInfo_t BxOpcodeTable0FBF[] = { /* 0F BF /w */ { 0, BX_IA_MOV_GwEw }, // MOVSX_GwEw /* 0F BF /d */ { 0, BX_IA_MOVSX_GdEw }, #if BX_SUPPORT_X86_64 /* 0F BF /q */ { 0, BX_IA_MOVSX_GqEw }, #endif }; // opcode 0F C0 static const BxOpcodeInfo_t BxOpcodeTable0FC0[] = { /* 0F C0 /w */ { 0, BX_IA_XADD_EbGb }, /* 0F C0 /d */ { 0, BX_IA_XADD_EbGb }, #if BX_SUPPORT_X86_64 /* 0F C0 /q */ { 0, BX_IA_XADD_EbGb }, #endif }; // opcode 0F C1 static const BxOpcodeInfo_t BxOpcodeTable0FC1[] = { /* 0F C1 /w */ { 0, BX_IA_XADD_EwGw }, /* 0F C1 /d */ { 0, BX_IA_XADD_EdGd }, #if BX_SUPPORT_X86_64 /* 0F C1 /q */ { 0, BX_IA_XADD_EqGq }, #endif }; // opcode 0F C2 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FC2[4] = { /* -- */ { BxImmediate_Ib, BX_IA_CMPPS_VpsWpsIb }, /* 66 */ { BxImmediate_Ib, BX_IA_CMPPD_VpdWpdIb }, /* F3 */ { BxImmediate_Ib, BX_IA_CMPSS_VssWssIb }, /* F2 */ { BxImmediate_Ib, BX_IA_CMPSD_VsdWsdIb }, }; // opcode 0F C3 static const BxOpcodeInfo_t BxOpcodeTable0FC3_32[] = { /* 0F C3 /w */ { BxNoPrefixSSE, BX_IA_MOVNTI_Op32_MdGd }, /* 0F C3 /d */ { BxNoPrefixSSE, BX_IA_MOVNTI_Op32_MdGd }, }; #if BX_SUPPORT_X86_64 static const BxOpcodeInfo_t BxOpcodeTable0FC3_64[] = { /* 0F C3 /w */ { BxNoPrefixSSE, BX_IA_MOVNTI_Op64_MdGd }, /* 0F C3 /d */ { BxNoPrefixSSE, BX_IA_MOVNTI_Op64_MdGd }, /* 0F C3 /q */ { BxNoPrefixSSE, BX_IA_MOVNTI_MqGq }, }; #endif // opcode 0F C4 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FC4[4] = { /* -- */ { BxImmediate_Ib, BX_IA_PINSRW_PqEwIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PINSRW_VdqEwIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F C5 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FC5[4] = { /* -- */ { BxImmediate_Ib, BX_IA_PEXTRW_GdNqIb }, /* 66 */ { BxImmediate_Ib, BX_IA_PEXTRW_GdUdqIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F C6 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FC6[4] = { /* -- */ { BxImmediate_Ib, BX_IA_SHUFPS_VpsWpsIb }, /* 66 */ { BxImmediate_Ib, BX_IA_SHUFPD_VpdWpdIb }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F C7 - handled through separate decode method // opcode 0F C8 - 0F CF static const BxOpcodeInfo_t BxOpcodeTable0FC8x0FCF[] = { /* 0F C8 /w */ { 0, BX_IA_BSWAP_RX }, /* 0F C8 /d */ { 0, BX_IA_BSWAP_ERX }, #if BX_SUPPORT_X86_64 /* 0F C8 /q */ { 0, BX_IA_BSWAP_RRX }, #endif }; // opcode 0F D0 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD0[4] = { /* -- */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ADDSUBPD_VpdWpd }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ADDSUBPS_VpsWps }, }; // opcode 0F D1 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD1[4] = { /* -- */ { 0, BX_IA_PSRLW_PqQq }, /* 66 */ { 0, BX_IA_PSRLW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F D2 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD2[4] = { /* -- */ { 0, BX_IA_PSRLD_PqQq }, /* 66 */ { 0, BX_IA_PSRLD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F D3 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD3[4] = { /* -- */ { 0, BX_IA_PSRLQ_PqQq }, /* 66 */ { 0, BX_IA_PSRLQ_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F D4 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD4[4] = { /* -- */ { 0, BX_IA_PADDQ_PqQq }, /* 66 */ { 0, BX_IA_PADDQ_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F D5 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD5[4] = { /* -- */ { 0, BX_IA_PMULLW_PqQq }, /* 66 */ { 0, BX_IA_PMULLW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F D6 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD6[4] = { /* -- */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_MOVQ_WqVq }, /* F3 */ { 0, BX_IA_MOVQ2DQ_VdqQq }, /* F2 */ { 0, BX_IA_MOVDQ2Q_PqUdq }, }; // opcode 0F D7 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD7[4] = { /* -- */ { 0, BX_IA_PMOVMSKB_GdNq }, /* 66 */ { 0, BX_IA_PMOVMSKB_GdUdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F D8 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD8[4] = { /* -- */ { 0, BX_IA_PSUBUSB_PqQq }, /* 66 */ { 0, BX_IA_PSUBUSB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F D9 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FD9[4] = { /* -- */ { 0, BX_IA_PSUBUSW_PqQq }, /* 66 */ { 0, BX_IA_PSUBUSW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F DA static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FDA[4] = { /* -- */ { 0, BX_IA_PMINUB_PqQq }, /* 66 */ { 0, BX_IA_PMINUB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F DB static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FDB[4] = { /* -- */ { 0, BX_IA_PAND_PqQq }, /* 66 */ { 0, BX_IA_PAND_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F DC static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FDC[4] = { /* -- */ { 0, BX_IA_PADDUSB_PqQq }, /* 66 */ { 0, BX_IA_PADDUSB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F DD static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FDD[4] = { /* -- */ { 0, BX_IA_PADDUSW_PqQq }, /* 66 */ { 0, BX_IA_PADDUSW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F DE static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FDE[4] = { /* -- */ { 0, BX_IA_PMAXUB_PqQq }, /* 66 */ { 0, BX_IA_PMAXUB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F DF static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FDF[4] = { /* -- */ { 0, BX_IA_PANDN_PqQq }, /* 66 */ { 0, BX_IA_PANDN_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F E0 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE0[4] = { /* -- */ { 0, BX_IA_PAVGB_PqQq }, /* 66 */ { 0, BX_IA_PAVGB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F E1 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE1[4] = { /* -- */ { 0, BX_IA_PSRAW_PqQq }, /* 66 */ { 0, BX_IA_PSRAW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F E2 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE2[4] = { /* -- */ { 0, BX_IA_PSRAD_PqQq }, /* 66 */ { 0, BX_IA_PSRAD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F E3 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE3[4] = { /* -- */ { 0, BX_IA_PAVGW_PqQq }, /* 66 */ { 0, BX_IA_PAVGW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F E4 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE4[4] = { /* -- */ { 0, BX_IA_PMULHUW_PqQq }, /* 66 */ { 0, BX_IA_PMULHUW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F E5 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE5[4] = { /* -- */ { 0, BX_IA_PMULHW_PqQq }, /* 66 */ { 0, BX_IA_PMULHW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F E6 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE6[4] = { /* -- */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_CVTTPD2DQ_VqWpd }, /* F3 */ { 0, BX_IA_CVTDQ2PD_VpdWq }, /* F2 */ { 0, BX_IA_CVTPD2DQ_VqWpd }, }; // opcode 0F E7 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE7[4] = { /* -- */ { 0, BX_IA_MOVNTQ_MqPq }, /* 66 */ { 0, BX_IA_MOVNTDQ_MdqVdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F E8 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE8[4] = { /* -- */ { 0, BX_IA_PSUBSB_PqQq }, /* 66 */ { 0, BX_IA_PSUBSB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F E9 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FE9[4] = { /* -- */ { 0, BX_IA_PSUBSW_PqQq }, /* 66 */ { 0, BX_IA_PSUBSW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F EA static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FEA[4] = { /* -- */ { 0, BX_IA_PMINSW_PqQq }, /* 66 */ { 0, BX_IA_PMINSW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F EB static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FEB[4] = { /* -- */ { 0, BX_IA_POR_PqQq }, /* 66 */ { 0, BX_IA_POR_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F EC static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FEC[4] = { /* -- */ { 0, BX_IA_PADDSB_PqQq }, /* 66 */ { 0, BX_IA_PADDSB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F ED static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FED[4] = { /* -- */ { 0, BX_IA_PADDSW_PqQq }, /* 66 */ { 0, BX_IA_PADDSW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F EE static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FEE[4] = { /* -- */ { 0, BX_IA_PMAXSW_PqQq }, /* 66 */ { 0, BX_IA_PMAXSW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F EF static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FEF[4] = { /* -- */ { 0, BX_IA_PXOR_PqQq }, /* 66 */ { 0, BX_IA_PXOR_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F F0 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF0[4] = { /* -- */ { 0, BX_IA_ERROR }, /* 66 */ { 0, BX_IA_ERROR }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_LDDQU_VdqMdq }, }; // opcode 0F F1 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF1[4] = { /* -- */ { 0, BX_IA_PSLLW_PqQq }, /* 66 */ { 0, BX_IA_PSLLW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F F2 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF2[4] = { /* -- */ { 0, BX_IA_PSLLD_PqQq }, /* 66 */ { 0, BX_IA_PSLLD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F F3 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF3[4] = { /* -- */ { 0, BX_IA_PSLLQ_PqQq }, /* 66 */ { 0, BX_IA_PSLLQ_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F F4 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF4[4] = { /* -- */ { 0, BX_IA_PMULUDQ_PqQq }, /* 66 */ { 0, BX_IA_PMULUDQ_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F F5 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF5[4] = { /* -- */ { 0, BX_IA_PMADDWD_PqQq }, /* 66 */ { 0, BX_IA_PMADDWD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F F6 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF6[4] = { /* -- */ { 0, BX_IA_PSADBW_PqQq }, /* 66 */ { 0, BX_IA_PSADBW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F F7 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF7[4] = { /* -- */ { 0, BX_IA_MASKMOVQ_PqNq }, /* 66 */ { 0, BX_IA_MASKMOVDQU_VdqUdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F F8 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF8[4] = { /* -- */ { 0, BX_IA_PSUBB_PqQq }, /* 66 */ { 0, BX_IA_PSUBB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F F9 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FF9[4] = { /* -- */ { 0, BX_IA_PSUBW_PqQq }, /* 66 */ { 0, BX_IA_PSUBW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F FA static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FFA[4] = { /* -- */ { 0, BX_IA_PSUBD_PqQq }, /* 66 */ { 0, BX_IA_PSUBD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F FB static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FFB[4] = { /* -- */ { 0, BX_IA_PSUBQ_PqQq }, /* 66 */ { 0, BX_IA_PSUBQ_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F FC static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FFC[4] = { /* -- */ { 0, BX_IA_PADDB_PqQq }, /* 66 */ { 0, BX_IA_PADDB_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F FD static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FFD[4] = { /* -- */ { 0, BX_IA_PADDW_PqQq }, /* 66 */ { 0, BX_IA_PADDW_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F FE static const BxOpcodeInfo_t BxOpcodeGroupSSE_0FFE[4] = { /* -- */ { 0, BX_IA_PADDD_PqQq }, /* 66 */ { 0, BX_IA_PADDD_VdqWdq }, /* F3 */ { 0, BX_IA_ERROR }, /* F2 */ { 0, BX_IA_ERROR }, }; // opcode 0F FF static const BxOpcodeInfo_t BxOpcodeTable0FFF[] = { /* 0F FF */ { 0, BX_IA_UD0 }, }; #endif // BX_FETCHDECODE_OPMAP_H